contracts, core, node: Use entropyToKeyPair in Generators instead of manually creating keys

This commit is contained in:
Andras Slemmer 2016-08-31 13:59:48 +01:00
parent f11a587382
commit 491b1abd4a
3 changed files with 13 additions and 19 deletions

View File

@ -7,6 +7,7 @@ import com.pholser.junit.quickcheck.random.SourceOfRandomness
import com.r3corda.contracts.asset.Cash
import com.r3corda.core.contracts.*
import com.r3corda.core.crypto.DigitalSignature
import com.r3corda.core.crypto.NullSignature
import com.r3corda.core.crypto.SecureHash
import com.r3corda.core.testing.*
import java.util.*
@ -81,7 +82,7 @@ class SignedTransactionGenerator: Generator<SignedTransaction>(SignedTransaction
val wireTransaction = WiredTransactionGenerator().generate(random, status)
return SignedTransaction(
txBits = wireTransaction.serialized,
sigs = wireTransaction.signers.map { DigitalSignature.WithKey(it, random.nextBytes(16)) }
sigs = listOf(NullSignature)
)
}
}

View File

@ -6,15 +6,10 @@ import com.pholser.junit.quickcheck.generator.java.lang.StringGenerator
import com.pholser.junit.quickcheck.generator.java.util.ArrayListGenerator
import com.pholser.junit.quickcheck.random.SourceOfRandomness
import com.r3corda.core.contracts.*
import com.r3corda.core.crypto.DigitalSignature
import com.r3corda.core.crypto.Party
import com.r3corda.core.crypto.SecureHash
import com.r3corda.core.crypto.ed25519Curve
import com.r3corda.core.crypto.*
import com.r3corda.core.serialization.OpaqueBytes
import net.i2p.crypto.eddsa.EdDSAPrivateKey
import net.i2p.crypto.eddsa.EdDSAPublicKey
import net.i2p.crypto.eddsa.spec.EdDSAPrivateKeySpec
import net.i2p.crypto.eddsa.spec.EdDSAPublicKeySpec
import java.security.PrivateKey
import java.security.PublicKey
import java.time.Duration
import java.time.Instant
import java.util.*
@ -32,18 +27,15 @@ fun <A> Generator<A>.generateList(random: SourceOfRandomness, status: Generation
return arrayGenerator.generate(random, status) as List<A>
}
class PrivateKeyGenerator: Generator<EdDSAPrivateKey>(EdDSAPrivateKey::class.java) {
override fun generate(random: SourceOfRandomness, status: GenerationStatus): EdDSAPrivateKey {
val seed = random.nextBytes(32)
val privateKeySpec = EdDSAPrivateKeySpec(seed, ed25519Curve)
return EdDSAPrivateKey(privateKeySpec)
class PrivateKeyGenerator: Generator<PrivateKey>(PrivateKey::class.java) {
override fun generate(random: SourceOfRandomness, status: GenerationStatus): PrivateKey {
return entropyToKeyPair(random.nextBigInteger(32)).private
}
}
class PublicKeyGenerator: Generator<EdDSAPublicKey>(EdDSAPublicKey::class.java) {
override fun generate(random: SourceOfRandomness, status: GenerationStatus): EdDSAPublicKey {
val privateKey = PrivateKeyGenerator().generate(random, status)
return EdDSAPublicKey(EdDSAPublicKeySpec(privateKey.a, ed25519Curve))
class PublicKeyGenerator: Generator<PublicKey>(PublicKey::class.java) {
override fun generate(random: SourceOfRandomness, status: GenerationStatus): PublicKey {
return entropyToKeyPair(random.nextBigInteger(32)).public
}
}

View File

@ -5,6 +5,7 @@ import com.r3corda.core.testing.PublicKeyGenerator
import com.r3corda.node.utilities.JsonSupport
import net.i2p.crypto.eddsa.EdDSAPublicKey
import org.junit.runner.RunWith
import java.security.PublicKey
import kotlin.test.assertEquals
@RunWith(com.pholser.junit.quickcheck.runner.JUnitQuickcheck::class)
@ -15,7 +16,7 @@ class JsonSupportTest {
}
@com.pholser.junit.quickcheck.Property
fun publicKeySerializingWorks(@com.pholser.junit.quickcheck.From(PublicKeyGenerator::class) publicKey: EdDSAPublicKey) {
fun publicKeySerializingWorks(@com.pholser.junit.quickcheck.From(PublicKeyGenerator::class) publicKey: PublicKey) {
val serialized = mapper.writeValueAsString(publicKey)
val parsedKey = mapper.readValue(serialized, EdDSAPublicKey::class.java)
assertEquals(publicKey, parsedKey)