mirror of
https://github.com/corda/corda.git
synced 2025-06-22 17:09:00 +00:00
contracts, core, node: Use entropyToKeyPair in Generators instead of manually creating keys
This commit is contained in:
@ -7,6 +7,7 @@ import com.pholser.junit.quickcheck.random.SourceOfRandomness
|
|||||||
import com.r3corda.contracts.asset.Cash
|
import com.r3corda.contracts.asset.Cash
|
||||||
import com.r3corda.core.contracts.*
|
import com.r3corda.core.contracts.*
|
||||||
import com.r3corda.core.crypto.DigitalSignature
|
import com.r3corda.core.crypto.DigitalSignature
|
||||||
|
import com.r3corda.core.crypto.NullSignature
|
||||||
import com.r3corda.core.crypto.SecureHash
|
import com.r3corda.core.crypto.SecureHash
|
||||||
import com.r3corda.core.testing.*
|
import com.r3corda.core.testing.*
|
||||||
import java.util.*
|
import java.util.*
|
||||||
@ -81,7 +82,7 @@ class SignedTransactionGenerator: Generator<SignedTransaction>(SignedTransaction
|
|||||||
val wireTransaction = WiredTransactionGenerator().generate(random, status)
|
val wireTransaction = WiredTransactionGenerator().generate(random, status)
|
||||||
return SignedTransaction(
|
return SignedTransaction(
|
||||||
txBits = wireTransaction.serialized,
|
txBits = wireTransaction.serialized,
|
||||||
sigs = wireTransaction.signers.map { DigitalSignature.WithKey(it, random.nextBytes(16)) }
|
sigs = listOf(NullSignature)
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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.generator.java.util.ArrayListGenerator
|
||||||
import com.pholser.junit.quickcheck.random.SourceOfRandomness
|
import com.pholser.junit.quickcheck.random.SourceOfRandomness
|
||||||
import com.r3corda.core.contracts.*
|
import com.r3corda.core.contracts.*
|
||||||
import com.r3corda.core.crypto.DigitalSignature
|
import com.r3corda.core.crypto.*
|
||||||
import com.r3corda.core.crypto.Party
|
|
||||||
import com.r3corda.core.crypto.SecureHash
|
|
||||||
import com.r3corda.core.crypto.ed25519Curve
|
|
||||||
import com.r3corda.core.serialization.OpaqueBytes
|
import com.r3corda.core.serialization.OpaqueBytes
|
||||||
import net.i2p.crypto.eddsa.EdDSAPrivateKey
|
import java.security.PrivateKey
|
||||||
import net.i2p.crypto.eddsa.EdDSAPublicKey
|
import java.security.PublicKey
|
||||||
import net.i2p.crypto.eddsa.spec.EdDSAPrivateKeySpec
|
|
||||||
import net.i2p.crypto.eddsa.spec.EdDSAPublicKeySpec
|
|
||||||
import java.time.Duration
|
import java.time.Duration
|
||||||
import java.time.Instant
|
import java.time.Instant
|
||||||
import java.util.*
|
import java.util.*
|
||||||
@ -32,18 +27,15 @@ fun <A> Generator<A>.generateList(random: SourceOfRandomness, status: Generation
|
|||||||
return arrayGenerator.generate(random, status) as List<A>
|
return arrayGenerator.generate(random, status) as List<A>
|
||||||
}
|
}
|
||||||
|
|
||||||
class PrivateKeyGenerator: Generator<EdDSAPrivateKey>(EdDSAPrivateKey::class.java) {
|
class PrivateKeyGenerator: Generator<PrivateKey>(PrivateKey::class.java) {
|
||||||
override fun generate(random: SourceOfRandomness, status: GenerationStatus): EdDSAPrivateKey {
|
override fun generate(random: SourceOfRandomness, status: GenerationStatus): PrivateKey {
|
||||||
val seed = random.nextBytes(32)
|
return entropyToKeyPair(random.nextBigInteger(32)).private
|
||||||
val privateKeySpec = EdDSAPrivateKeySpec(seed, ed25519Curve)
|
|
||||||
return EdDSAPrivateKey(privateKeySpec)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class PublicKeyGenerator: Generator<EdDSAPublicKey>(EdDSAPublicKey::class.java) {
|
class PublicKeyGenerator: Generator<PublicKey>(PublicKey::class.java) {
|
||||||
override fun generate(random: SourceOfRandomness, status: GenerationStatus): EdDSAPublicKey {
|
override fun generate(random: SourceOfRandomness, status: GenerationStatus): PublicKey {
|
||||||
val privateKey = PrivateKeyGenerator().generate(random, status)
|
return entropyToKeyPair(random.nextBigInteger(32)).public
|
||||||
return EdDSAPublicKey(EdDSAPublicKeySpec(privateKey.a, ed25519Curve))
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -5,6 +5,7 @@ import com.r3corda.core.testing.PublicKeyGenerator
|
|||||||
import com.r3corda.node.utilities.JsonSupport
|
import com.r3corda.node.utilities.JsonSupport
|
||||||
import net.i2p.crypto.eddsa.EdDSAPublicKey
|
import net.i2p.crypto.eddsa.EdDSAPublicKey
|
||||||
import org.junit.runner.RunWith
|
import org.junit.runner.RunWith
|
||||||
|
import java.security.PublicKey
|
||||||
import kotlin.test.assertEquals
|
import kotlin.test.assertEquals
|
||||||
|
|
||||||
@RunWith(com.pholser.junit.quickcheck.runner.JUnitQuickcheck::class)
|
@RunWith(com.pholser.junit.quickcheck.runner.JUnitQuickcheck::class)
|
||||||
@ -15,7 +16,7 @@ class JsonSupportTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@com.pholser.junit.quickcheck.Property
|
@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 serialized = mapper.writeValueAsString(publicKey)
|
||||||
val parsedKey = mapper.readValue(serialized, EdDSAPublicKey::class.java)
|
val parsedKey = mapper.readValue(serialized, EdDSAPublicKey::class.java)
|
||||||
assertEquals(publicKey, parsedKey)
|
assertEquals(publicKey, parsedKey)
|
||||||
|
Reference in New Issue
Block a user