mirror of
https://github.com/corda/corda.git
synced 2025-06-22 17:09:00 +00:00
Merged in pubkey-base58-serialisation (pull request #257)
Pubkey base58 serialisation
This commit is contained in:
@ -146,6 +146,11 @@ fun PrivateKey.signWithECDSA(bitsToSign: ByteArray, publicKey: PublicKey): Digit
|
|||||||
return DigitalSignature.WithKey(publicKey, signWithECDSA(bitsToSign).bits)
|
return DigitalSignature.WithKey(publicKey, signWithECDSA(bitsToSign).bits)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
val ed25519Curve = EdDSANamedCurveTable.getByName(EdDSANamedCurveTable.CURVE_ED25519_SHA512)
|
||||||
|
|
||||||
|
fun parsePublicKeyBase58(base58String: String) = EdDSAPublicKey(EdDSAPublicKeySpec(Base58.decode(base58String), ed25519Curve))
|
||||||
|
fun PublicKey.toBase58String() = Base58.encode((this as EdDSAPublicKey).abyte)
|
||||||
|
|
||||||
fun KeyPair.signWithECDSA(bitsToSign: ByteArray) = private.signWithECDSA(bitsToSign, public)
|
fun KeyPair.signWithECDSA(bitsToSign: ByteArray) = private.signWithECDSA(bitsToSign, public)
|
||||||
fun KeyPair.signWithECDSA(bitsToSign: OpaqueBytes) = private.signWithECDSA(bitsToSign.bits, public)
|
fun KeyPair.signWithECDSA(bitsToSign: OpaqueBytes) = private.signWithECDSA(bitsToSign.bits, public)
|
||||||
fun KeyPair.signWithECDSA(bitsToSign: OpaqueBytes, party: Party) = signWithECDSA(bitsToSign.bits, party)
|
fun KeyPair.signWithECDSA(bitsToSign: OpaqueBytes, party: Party) = signWithECDSA(bitsToSign.bits, party)
|
||||||
|
@ -10,10 +10,7 @@ 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 com.r3corda.core.contracts.*
|
import com.r3corda.core.contracts.*
|
||||||
import com.r3corda.core.crypto.Party
|
import com.r3corda.core.crypto.*
|
||||||
import com.r3corda.core.crypto.SecureHash
|
|
||||||
import com.r3corda.core.crypto.generateKeyPair
|
|
||||||
import com.r3corda.core.crypto.sha256
|
|
||||||
import com.r3corda.core.node.AttachmentsClassLoader
|
import com.r3corda.core.node.AttachmentsClassLoader
|
||||||
import com.r3corda.core.node.services.AttachmentStorage
|
import com.r3corda.core.node.services.AttachmentStorage
|
||||||
import com.r3corda.core.utilities.NonEmptySet
|
import com.r3corda.core.utilities.NonEmptySet
|
||||||
@ -275,8 +272,6 @@ object WireTransactionSerializer : Serializer<WireTransaction>() {
|
|||||||
/** For serialising an ed25519 private key */
|
/** For serialising an ed25519 private key */
|
||||||
@ThreadSafe
|
@ThreadSafe
|
||||||
object Ed25519PrivateKeySerializer : Serializer<EdDSAPrivateKey>() {
|
object Ed25519PrivateKeySerializer : Serializer<EdDSAPrivateKey>() {
|
||||||
val ed25519Curve = EdDSANamedCurveTable.getByName(EdDSANamedCurveTable.CURVE_ED25519_SHA512)
|
|
||||||
|
|
||||||
override fun write(kryo: Kryo, output: Output, obj: EdDSAPrivateKey) {
|
override fun write(kryo: Kryo, output: Output, obj: EdDSAPrivateKey) {
|
||||||
check(obj.params == ed25519Curve)
|
check(obj.params == ed25519Curve)
|
||||||
output.writeBytesWithLength(obj.seed)
|
output.writeBytesWithLength(obj.seed)
|
||||||
@ -291,8 +286,6 @@ object Ed25519PrivateKeySerializer : Serializer<EdDSAPrivateKey>() {
|
|||||||
/** For serialising an ed25519 public key */
|
/** For serialising an ed25519 public key */
|
||||||
@ThreadSafe
|
@ThreadSafe
|
||||||
object Ed25519PublicKeySerializer : Serializer<EdDSAPublicKey>() {
|
object Ed25519PublicKeySerializer : Serializer<EdDSAPublicKey>() {
|
||||||
val ed25519Curve = EdDSANamedCurveTable.getByName(EdDSANamedCurveTable.CURVE_ED25519_SHA512)
|
|
||||||
|
|
||||||
override fun write(kryo: Kryo, output: Output, obj: EdDSAPublicKey) {
|
override fun write(kryo: Kryo, output: Output, obj: EdDSAPublicKey) {
|
||||||
check(obj.params == ed25519Curve)
|
check(obj.params == ed25519Curve)
|
||||||
output.writeBytesWithLength(obj.abyte)
|
output.writeBytesWithLength(obj.abyte)
|
||||||
|
@ -10,9 +10,7 @@ import com.fasterxml.jackson.databind.deser.std.StringArrayDeserializer
|
|||||||
import com.fasterxml.jackson.databind.module.SimpleModule
|
import com.fasterxml.jackson.databind.module.SimpleModule
|
||||||
import com.fasterxml.jackson.module.kotlin.KotlinModule
|
import com.fasterxml.jackson.module.kotlin.KotlinModule
|
||||||
import com.r3corda.core.contracts.BusinessCalendar
|
import com.r3corda.core.contracts.BusinessCalendar
|
||||||
import com.r3corda.core.crypto.Base58
|
import com.r3corda.core.crypto.*
|
||||||
import com.r3corda.core.crypto.Party
|
|
||||||
import com.r3corda.core.crypto.SecureHash
|
|
||||||
import com.r3corda.core.node.services.IdentityService
|
import com.r3corda.core.node.services.IdentityService
|
||||||
import net.i2p.crypto.eddsa.EdDSAPublicKey
|
import net.i2p.crypto.eddsa.EdDSAPublicKey
|
||||||
import net.i2p.crypto.eddsa.spec.EdDSANamedCurveTable
|
import net.i2p.crypto.eddsa.spec.EdDSANamedCurveTable
|
||||||
@ -136,20 +134,17 @@ object JsonSupport {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private val ed25519Curve = EdDSANamedCurveTable.getByName(EdDSANamedCurveTable.CURVE_ED25519_SHA512)
|
|
||||||
|
|
||||||
object PublicKeySerializer : JsonSerializer<EdDSAPublicKey>() {
|
object PublicKeySerializer : JsonSerializer<EdDSAPublicKey>() {
|
||||||
override fun serialize(obj: EdDSAPublicKey, generator: JsonGenerator, provider: SerializerProvider) {
|
override fun serialize(obj: EdDSAPublicKey, generator: JsonGenerator, provider: SerializerProvider) {
|
||||||
check(obj.params == ed25519Curve)
|
check(obj.params == ed25519Curve)
|
||||||
generator.writeString(Base58.encode(obj.abyte))
|
generator.writeString(obj.toBase58String())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
object PublicKeyDeserializer : JsonDeserializer<EdDSAPublicKey>() {
|
object PublicKeyDeserializer : JsonDeserializer<EdDSAPublicKey>() {
|
||||||
override fun deserialize(parser: JsonParser, context: DeserializationContext): EdDSAPublicKey {
|
override fun deserialize(parser: JsonParser, context: DeserializationContext): EdDSAPublicKey {
|
||||||
return try {
|
return try {
|
||||||
val A = Base58.decode(parser.text)
|
parsePublicKeyBase58(parser.text)
|
||||||
EdDSAPublicKey(EdDSAPublicKeySpec(A, ed25519Curve))
|
|
||||||
} catch (e: Exception) {
|
} catch (e: Exception) {
|
||||||
throw JsonParseException(parser, "Invalid public key ${parser.text}: ${e.message}")
|
throw JsonParseException(parser, "Invalid public key ${parser.text}: ${e.message}")
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user