mirror of
https://github.com/corda/corda.git
synced 2025-02-06 11:09:18 +00:00
Minor: introduce a generateKeyPair() function that wraps the Java API, so we can switch algorithm more easily later.
This commit is contained in:
parent
8d1b318370
commit
0665492645
@ -123,4 +123,7 @@ fun PublicKey.toStringShort(): String {
|
|||||||
|
|
||||||
// Allow Kotlin destructuring: val (private, public) = keypair
|
// Allow Kotlin destructuring: val (private, public) = keypair
|
||||||
operator fun KeyPair.component1() = this.private
|
operator fun KeyPair.component1() = this.private
|
||||||
operator fun KeyPair.component2() = this.public
|
operator fun KeyPair.component2() = this.public
|
||||||
|
|
||||||
|
/** A simple wrapper that will make it easier to swap out the EC algorithm we use in future */
|
||||||
|
fun generateKeyPair() = KeyPairGenerator.getInstance("EC").genKeyPair()
|
@ -10,11 +10,11 @@ package core
|
|||||||
|
|
||||||
import co.paralleluniverse.fibers.Suspendable
|
import co.paralleluniverse.fibers.Suspendable
|
||||||
import core.crypto.DigitalSignature
|
import core.crypto.DigitalSignature
|
||||||
|
import core.crypto.generateKeyPair
|
||||||
import core.messaging.MessagingService
|
import core.messaging.MessagingService
|
||||||
import core.messaging.NetworkMap
|
import core.messaging.NetworkMap
|
||||||
import core.serialization.SerializedBytes
|
import core.serialization.SerializedBytes
|
||||||
import java.security.KeyPair
|
import java.security.KeyPair
|
||||||
import java.security.KeyPairGenerator
|
|
||||||
import java.security.PrivateKey
|
import java.security.PrivateKey
|
||||||
import java.security.PublicKey
|
import java.security.PublicKey
|
||||||
|
|
||||||
@ -92,7 +92,7 @@ interface TimestamperService {
|
|||||||
// We define a dummy authority here to allow to us to develop prototype contracts in the absence of a real authority.
|
// We define a dummy authority here to allow to us to develop prototype contracts in the absence of a real authority.
|
||||||
// The timestamper itself is implemented in the unit test part of the code (in TestUtils.kt).
|
// The timestamper itself is implemented in the unit test part of the code (in TestUtils.kt).
|
||||||
object DummyTimestampingAuthority {
|
object DummyTimestampingAuthority {
|
||||||
val key = KeyPairGenerator.getInstance("EC").genKeyPair()
|
val key = generateKeyPair()
|
||||||
val identity = Party("The dummy timestamper", key.public)
|
val identity = Party("The dummy timestamper", key.public)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -12,10 +12,10 @@ import com.google.common.util.concurrent.Futures
|
|||||||
import com.google.common.util.concurrent.ListenableFuture
|
import com.google.common.util.concurrent.ListenableFuture
|
||||||
import com.google.common.util.concurrent.MoreExecutors
|
import com.google.common.util.concurrent.MoreExecutors
|
||||||
import core.Party
|
import core.Party
|
||||||
|
import core.crypto.generateKeyPair
|
||||||
import core.crypto.sha256
|
import core.crypto.sha256
|
||||||
import core.node.TimestamperNodeService
|
import core.node.TimestamperNodeService
|
||||||
import core.utilities.loggerFor
|
import core.utilities.loggerFor
|
||||||
import java.security.KeyPairGenerator
|
|
||||||
import java.time.Instant
|
import java.time.Instant
|
||||||
import java.util.*
|
import java.util.*
|
||||||
import java.util.concurrent.Executor
|
import java.util.concurrent.Executor
|
||||||
@ -126,7 +126,7 @@ public class InMemoryNetwork {
|
|||||||
check(timestampingAdvert == null)
|
check(timestampingAdvert == null)
|
||||||
val (handle, builder) = createNode(manuallyPumped)
|
val (handle, builder) = createNode(manuallyPumped)
|
||||||
val node = builder.start().get()
|
val node = builder.start().get()
|
||||||
val key = KeyPairGenerator.getInstance("EC").genKeyPair()
|
val key = generateKeyPair()
|
||||||
val identity = Party("Unit test timestamping authority", key.public)
|
val identity = Party("Unit test timestamping authority", key.public)
|
||||||
TimestamperNodeService(node, identity, key)
|
TimestamperNodeService(node, identity, key)
|
||||||
timestampingAdvert = LegallyIdentifiableNode(handle, identity)
|
timestampingAdvert = LegallyIdentifiableNode(handle, identity)
|
||||||
|
@ -10,8 +10,8 @@ package core.node
|
|||||||
|
|
||||||
import core.KeyManagementService
|
import core.KeyManagementService
|
||||||
import core.ThreadBox
|
import core.ThreadBox
|
||||||
|
import core.crypto.generateKeyPair
|
||||||
import java.security.KeyPair
|
import java.security.KeyPair
|
||||||
import java.security.KeyPairGenerator
|
|
||||||
import java.security.PrivateKey
|
import java.security.PrivateKey
|
||||||
import java.security.PublicKey
|
import java.security.PublicKey
|
||||||
import java.util.*
|
import java.util.*
|
||||||
@ -39,7 +39,7 @@ class E2ETestKeyManagementService : KeyManagementService {
|
|||||||
override val keys: Map<PublicKey, PrivateKey> get() = mutex.locked { HashMap(keys) }
|
override val keys: Map<PublicKey, PrivateKey> get() = mutex.locked { HashMap(keys) }
|
||||||
|
|
||||||
override fun freshKey(): KeyPair {
|
override fun freshKey(): KeyPair {
|
||||||
val keypair = KeyPairGenerator.getInstance("EC").genKeyPair()
|
val keypair = generateKeyPair()
|
||||||
mutex.locked {
|
mutex.locked {
|
||||||
keys[keypair.public] = keypair.private
|
keys[keypair.public] = keypair.private
|
||||||
}
|
}
|
||||||
|
@ -10,6 +10,7 @@ package core.node
|
|||||||
|
|
||||||
import com.google.common.net.HostAndPort
|
import com.google.common.net.HostAndPort
|
||||||
import core.*
|
import core.*
|
||||||
|
import core.crypto.generateKeyPair
|
||||||
import core.messaging.*
|
import core.messaging.*
|
||||||
import core.serialization.deserialize
|
import core.serialization.deserialize
|
||||||
import core.serialization.serialize
|
import core.serialization.serialize
|
||||||
@ -21,7 +22,6 @@ import java.nio.file.Files
|
|||||||
import java.nio.file.Path
|
import java.nio.file.Path
|
||||||
import java.nio.file.StandardOpenOption
|
import java.nio.file.StandardOpenOption
|
||||||
import java.security.KeyPair
|
import java.security.KeyPair
|
||||||
import java.security.KeyPairGenerator
|
|
||||||
import java.util.*
|
import java.util.*
|
||||||
import java.util.concurrent.Executors
|
import java.util.concurrent.Executors
|
||||||
|
|
||||||
@ -127,7 +127,7 @@ class Node(val dir: Path, val myNetAddr: HostAndPort, val configuration: NodeCon
|
|||||||
|
|
||||||
val (identity, keypair) = if (!Files.exists(privKeyFile)) {
|
val (identity, keypair) = if (!Files.exists(privKeyFile)) {
|
||||||
log.info("Identity key not found, generating fresh key!")
|
log.info("Identity key not found, generating fresh key!")
|
||||||
val keypair: KeyPair = KeyPairGenerator.getInstance("EC").genKeyPair()
|
val keypair: KeyPair = generateKeyPair()
|
||||||
keypair.serialize().writeToFile(privKeyFile)
|
keypair.serialize().writeToFile(privKeyFile)
|
||||||
val myIdentity = Party(configuration.myLegalName, keypair.public)
|
val myIdentity = Party(configuration.myLegalName, keypair.public)
|
||||||
// We include the Party class with the file here to help catch mixups when admins provide files of the
|
// We include the Party class with the file here to help catch mixups when admins provide files of the
|
||||||
|
@ -13,6 +13,7 @@ import contracts.CommercialPaper
|
|||||||
import contracts.protocols.TwoPartyTradeProtocol
|
import contracts.protocols.TwoPartyTradeProtocol
|
||||||
import core.*
|
import core.*
|
||||||
import core.crypto.SecureHash
|
import core.crypto.SecureHash
|
||||||
|
import core.crypto.generateKeyPair
|
||||||
import core.messaging.LegallyIdentifiableNode
|
import core.messaging.LegallyIdentifiableNode
|
||||||
import core.messaging.SingleMessageRecipient
|
import core.messaging.SingleMessageRecipient
|
||||||
import core.messaging.runOnNextMessage
|
import core.messaging.runOnNextMessage
|
||||||
@ -24,7 +25,6 @@ import joptsimple.OptionParser
|
|||||||
import java.nio.file.Files
|
import java.nio.file.Files
|
||||||
import java.nio.file.Path
|
import java.nio.file.Path
|
||||||
import java.nio.file.Paths
|
import java.nio.file.Paths
|
||||||
import java.security.KeyPairGenerator
|
|
||||||
import java.security.PublicKey
|
import java.security.PublicKey
|
||||||
import java.time.Instant
|
import java.time.Instant
|
||||||
import java.util.*
|
import java.util.*
|
||||||
@ -176,7 +176,7 @@ fun main(args: Array<String>) {
|
|||||||
|
|
||||||
fun makeFakeCommercialPaper(ownedBy: PublicKey): StateAndRef<CommercialPaper.State> {
|
fun makeFakeCommercialPaper(ownedBy: PublicKey): StateAndRef<CommercialPaper.State> {
|
||||||
// Make a fake company that's issued its own paper.
|
// Make a fake company that's issued its own paper.
|
||||||
val party = Party("MegaCorp, Inc", KeyPairGenerator.getInstance("EC").genKeyPair().public)
|
val party = Party("MegaCorp, Inc", generateKeyPair().public)
|
||||||
// ownedBy here is the random key that gives us control over it.
|
// ownedBy here is the random key that gives us control over it.
|
||||||
val paper = CommercialPaper.State(party.ref(1,2,3), ownedBy, 1100.DOLLARS, Instant.now() + 10.days)
|
val paper = CommercialPaper.State(party.ref(1,2,3), ownedBy, 1100.DOLLARS, Instant.now() + 10.days)
|
||||||
val randomRef = StateRef(SecureHash.randomSHA256(), 0)
|
val randomRef = StateRef(SecureHash.randomSHA256(), 0)
|
||||||
|
@ -16,8 +16,9 @@ import com.esotericsoftware.kryo.Serializer
|
|||||||
import com.esotericsoftware.kryo.io.Input
|
import com.esotericsoftware.kryo.io.Input
|
||||||
import com.esotericsoftware.kryo.io.Output
|
import com.esotericsoftware.kryo.io.Output
|
||||||
import com.esotericsoftware.kryo.serializers.JavaSerializer
|
import com.esotericsoftware.kryo.serializers.JavaSerializer
|
||||||
import core.crypto.SecureHash
|
|
||||||
import core.SignedWireTransaction
|
import core.SignedWireTransaction
|
||||||
|
import core.crypto.SecureHash
|
||||||
|
import core.crypto.generateKeyPair
|
||||||
import core.crypto.sha256
|
import core.crypto.sha256
|
||||||
import de.javakaffee.kryoserializers.ArraysAsListSerializer
|
import de.javakaffee.kryoserializers.ArraysAsListSerializer
|
||||||
import org.objenesis.strategy.StdInstantiatorStrategy
|
import org.objenesis.strategy.StdInstantiatorStrategy
|
||||||
@ -25,7 +26,6 @@ import java.io.ByteArrayOutputStream
|
|||||||
import java.lang.reflect.InvocationTargetException
|
import java.lang.reflect.InvocationTargetException
|
||||||
import java.nio.file.Files
|
import java.nio.file.Files
|
||||||
import java.nio.file.Path
|
import java.nio.file.Path
|
||||||
import java.security.KeyPairGenerator
|
|
||||||
import java.time.Instant
|
import java.time.Instant
|
||||||
import java.util.*
|
import java.util.*
|
||||||
import kotlin.reflect.*
|
import kotlin.reflect.*
|
||||||
@ -198,7 +198,7 @@ fun createKryo(k: Kryo = Kryo()): Kryo {
|
|||||||
|
|
||||||
// Some things where the JRE provides an efficient custom serialisation.
|
// Some things where the JRE provides an efficient custom serialisation.
|
||||||
val ser = JavaSerializer()
|
val ser = JavaSerializer()
|
||||||
val keyPair = KeyPairGenerator.getInstance("EC").genKeyPair()
|
val keyPair = generateKeyPair()
|
||||||
register(keyPair.public.javaClass, ser)
|
register(keyPair.public.javaClass, ser)
|
||||||
register(keyPair.private.javaClass, ser)
|
register(keyPair.private.javaClass, ser)
|
||||||
register(Instant::class.java, ser)
|
register(Instant::class.java, ser)
|
||||||
|
@ -9,6 +9,7 @@
|
|||||||
package core
|
package core
|
||||||
|
|
||||||
import core.crypto.DigitalSignature
|
import core.crypto.DigitalSignature
|
||||||
|
import core.crypto.generateKeyPair
|
||||||
import core.crypto.signWithECDSA
|
import core.crypto.signWithECDSA
|
||||||
import core.messaging.MessagingService
|
import core.messaging.MessagingService
|
||||||
import core.messaging.MockNetworkMap
|
import core.messaging.MockNetworkMap
|
||||||
@ -19,7 +20,6 @@ import core.serialization.deserialize
|
|||||||
import core.testutils.TEST_KEYS_TO_CORP_MAP
|
import core.testutils.TEST_KEYS_TO_CORP_MAP
|
||||||
import core.testutils.TEST_TX_TIME
|
import core.testutils.TEST_TX_TIME
|
||||||
import java.security.KeyPair
|
import java.security.KeyPair
|
||||||
import java.security.KeyPairGenerator
|
|
||||||
import java.security.PrivateKey
|
import java.security.PrivateKey
|
||||||
import java.security.PublicKey
|
import java.security.PublicKey
|
||||||
import java.time.Clock
|
import java.time.Clock
|
||||||
@ -53,7 +53,7 @@ object MockIdentityService : IdentityService {
|
|||||||
|
|
||||||
class MockKeyManagementService(
|
class MockKeyManagementService(
|
||||||
override val keys: Map<PublicKey, PrivateKey>,
|
override val keys: Map<PublicKey, PrivateKey>,
|
||||||
val nextKeys: MutableList<KeyPair> = arrayListOf(KeyPairGenerator.getInstance("EC").genKeyPair())
|
val nextKeys: MutableList<KeyPair> = arrayListOf(generateKeyPair())
|
||||||
) : KeyManagementService {
|
) : KeyManagementService {
|
||||||
override fun freshKey() = nextKeys.removeAt(nextKeys.lastIndex)
|
override fun freshKey() = nextKeys.removeAt(nextKeys.lastIndex)
|
||||||
}
|
}
|
||||||
@ -64,7 +64,7 @@ class MockWalletService(val states: List<StateAndRef<OwnableState>>) : WalletSer
|
|||||||
|
|
||||||
@ThreadSafe
|
@ThreadSafe
|
||||||
class MockStorageService : StorageService {
|
class MockStorageService : StorageService {
|
||||||
override val myLegalIdentityKey: KeyPair = KeyPairGenerator.getInstance("EC").genKeyPair()
|
override val myLegalIdentityKey: KeyPair = generateKeyPair()
|
||||||
override val myLegalIdentity: Party = Party("Unit test party", myLegalIdentityKey.public)
|
override val myLegalIdentity: Party = Party("Unit test party", myLegalIdentityKey.public)
|
||||||
|
|
||||||
private val tables = HashMap<String, MutableMap<Any, Any>>()
|
private val tables = HashMap<String, MutableMap<Any, Any>>()
|
||||||
|
@ -15,8 +15,8 @@ import core.*
|
|||||||
import core.crypto.DummyPublicKey
|
import core.crypto.DummyPublicKey
|
||||||
import core.crypto.NullPublicKey
|
import core.crypto.NullPublicKey
|
||||||
import core.crypto.SecureHash
|
import core.crypto.SecureHash
|
||||||
|
import core.crypto.generateKeyPair
|
||||||
import core.visualiser.GraphVisualiser
|
import core.visualiser.GraphVisualiser
|
||||||
import java.security.KeyPairGenerator
|
|
||||||
import java.security.PublicKey
|
import java.security.PublicKey
|
||||||
import java.time.Instant
|
import java.time.Instant
|
||||||
import java.util.*
|
import java.util.*
|
||||||
@ -25,8 +25,8 @@ import kotlin.test.assertFailsWith
|
|||||||
import kotlin.test.fail
|
import kotlin.test.fail
|
||||||
|
|
||||||
object TestUtils {
|
object TestUtils {
|
||||||
val keypair = KeyPairGenerator.getInstance("EC").genKeyPair()
|
val keypair = generateKeyPair()
|
||||||
val keypair2 = KeyPairGenerator.getInstance("EC").genKeyPair()
|
val keypair2 = generateKeyPair()
|
||||||
}
|
}
|
||||||
|
|
||||||
// A few dummy values for testing.
|
// A few dummy values for testing.
|
||||||
@ -36,9 +36,9 @@ val MINI_CORP_KEY = TestUtils.keypair2
|
|||||||
val MINI_CORP_PUBKEY = MINI_CORP_KEY.public
|
val MINI_CORP_PUBKEY = MINI_CORP_KEY.public
|
||||||
val DUMMY_PUBKEY_1 = DummyPublicKey("x1")
|
val DUMMY_PUBKEY_1 = DummyPublicKey("x1")
|
||||||
val DUMMY_PUBKEY_2 = DummyPublicKey("x2")
|
val DUMMY_PUBKEY_2 = DummyPublicKey("x2")
|
||||||
val ALICE_KEY = KeyPairGenerator.getInstance("EC").genKeyPair()
|
val ALICE_KEY = generateKeyPair()
|
||||||
val ALICE = ALICE_KEY.public
|
val ALICE = ALICE_KEY.public
|
||||||
val BOB_KEY = KeyPairGenerator.getInstance("EC").genKeyPair()
|
val BOB_KEY = generateKeyPair()
|
||||||
val BOB = BOB_KEY.public
|
val BOB = BOB_KEY.public
|
||||||
val MEGA_CORP = Party("MegaCorp", MEGA_CORP_PUBKEY)
|
val MEGA_CORP = Party("MegaCorp", MEGA_CORP_PUBKEY)
|
||||||
val MINI_CORP = Party("MiniCorp", MINI_CORP_PUBKEY)
|
val MINI_CORP = Party("MiniCorp", MINI_CORP_PUBKEY)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user