mirror of
https://github.com/corda/corda.git
synced 2025-06-19 07:38:22 +00:00
Stop using "legally-Identifiable" signatures for the notary protocol
This commit is contained in:
@ -105,7 +105,7 @@ abstract class AbstractStateReplacementProtocol<T> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Suspendable
|
@Suspendable
|
||||||
private fun getNotarySignature(stx: SignedTransaction): DigitalSignature.LegallyIdentifiable {
|
private fun getNotarySignature(stx: SignedTransaction): DigitalSignature.WithKey {
|
||||||
progressTracker.currentStep = NOTARY
|
progressTracker.currentStep = NOTARY
|
||||||
return subProtocol(NotaryProtocol.Client(stx))
|
return subProtocol(NotaryProtocol.Client(stx))
|
||||||
}
|
}
|
||||||
|
@ -22,7 +22,7 @@ object NotaryProtocol {
|
|||||||
* by another transaction or the timestamp is invalid.
|
* by another transaction or the timestamp is invalid.
|
||||||
*/
|
*/
|
||||||
open class Client(private val stx: SignedTransaction,
|
open class Client(private val stx: SignedTransaction,
|
||||||
override val progressTracker: ProgressTracker = Client.tracker()) : ProtocolLogic<DigitalSignature.LegallyIdentifiable>() {
|
override val progressTracker: ProgressTracker = Client.tracker()) : ProtocolLogic<DigitalSignature.WithKey>() {
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
|
|
||||||
@ -36,7 +36,7 @@ object NotaryProtocol {
|
|||||||
lateinit var notaryParty: Party
|
lateinit var notaryParty: Party
|
||||||
|
|
||||||
@Suspendable
|
@Suspendable
|
||||||
override fun call(): DigitalSignature.LegallyIdentifiable {
|
override fun call(): DigitalSignature.WithKey {
|
||||||
progressTracker.currentStep = REQUESTING
|
progressTracker.currentStep = REQUESTING
|
||||||
val wtx = stx.tx
|
val wtx = stx.tx
|
||||||
notaryParty = wtx.notary ?: throw IllegalStateException("Transaction does not specify a Notary")
|
notaryParty = wtx.notary ?: throw IllegalStateException("Transaction does not specify a Notary")
|
||||||
@ -56,7 +56,7 @@ object NotaryProtocol {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Throws(NotaryException::class, IllegalStateException::class)
|
@Throws(NotaryException::class, IllegalStateException::class)
|
||||||
private fun validateResponse(response: UntrustworthyData<Result>): DigitalSignature.LegallyIdentifiable {
|
private fun validateResponse(response: UntrustworthyData<Result>): DigitalSignature.WithKey {
|
||||||
return response.unwrap { notaryResult ->
|
return response.unwrap { notaryResult ->
|
||||||
progressTracker.currentStep = VALIDATING
|
progressTracker.currentStep = VALIDATING
|
||||||
when (notaryResult) {
|
when (notaryResult) {
|
||||||
@ -74,8 +74,8 @@ object NotaryProtocol {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun validateSignature(sig: DigitalSignature.LegallyIdentifiable, data: ByteArray) {
|
private fun validateSignature(sig: DigitalSignature.WithKey, data: ByteArray) {
|
||||||
check(sig.signer == notaryParty) { "Notary result not signed by the correct service" }
|
check(sig.by in notaryParty.owningKey.keys) { "Invalid signer for the notary result" }
|
||||||
sig.verifyWithECDSA(data)
|
sig.verifyWithECDSA(data)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -140,11 +140,9 @@ object NotaryProtocol {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun sign(bits: ByteArray): DigitalSignature.LegallyIdentifiable {
|
private fun sign(bits: ByteArray): DigitalSignature.WithKey {
|
||||||
val myNodeInfo = serviceHub.myInfo
|
|
||||||
val myIdentity = myNodeInfo.notaryIdentity
|
|
||||||
val mySigningKey = serviceHub.notaryIdentityKey
|
val mySigningKey = serviceHub.notaryIdentityKey
|
||||||
return mySigningKey.signWithECDSA(bits, myIdentity)
|
return mySigningKey.signWithECDSA(bits)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -153,7 +151,7 @@ object NotaryProtocol {
|
|||||||
|
|
||||||
sealed class Result {
|
sealed class Result {
|
||||||
class Error(val error: NotaryError): Result()
|
class Error(val error: NotaryError): Result()
|
||||||
class Success(val sig: DigitalSignature.LegallyIdentifiable) : Result()
|
class Success(val sig: DigitalSignature.WithKey) : Result()
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -41,7 +41,7 @@ object TwoPartyDealProtocol {
|
|||||||
// This object is serialised to the network and is the first protocol message the seller sends to the buyer.
|
// This object is serialised to the network and is the first protocol message the seller sends to the buyer.
|
||||||
data class Handshake<out T>(val payload: T, val publicKey: PublicKeyTree)
|
data class Handshake<out T>(val payload: T, val publicKey: PublicKeyTree)
|
||||||
|
|
||||||
class SignaturesFromPrimary(val sellerSig: DigitalSignature.WithKey, val notarySig: DigitalSignature.LegallyIdentifiable)
|
class SignaturesFromPrimary(val sellerSig: DigitalSignature.WithKey, val notarySig: DigitalSignature.WithKey)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* [Primary] at the end sends the signed tx to all the regulator parties. This a seperate workflow which needs a
|
* [Primary] at the end sends the signed tx to all the regulator parties. This a seperate workflow which needs a
|
||||||
@ -160,7 +160,7 @@ object TwoPartyDealProtocol {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Suspendable
|
@Suspendable
|
||||||
private fun getNotarySignature(stx: SignedTransaction): DigitalSignature.LegallyIdentifiable {
|
private fun getNotarySignature(stx: SignedTransaction): DigitalSignature.WithKey {
|
||||||
progressTracker.currentStep = NOTARY
|
progressTracker.currentStep = NOTARY
|
||||||
return subProtocol(NotaryProtocol.Client(stx))
|
return subProtocol(NotaryProtocol.Client(stx))
|
||||||
}
|
}
|
||||||
@ -172,7 +172,7 @@ object TwoPartyDealProtocol {
|
|||||||
|
|
||||||
@Suspendable
|
@Suspendable
|
||||||
private fun sendSignatures(allPartySignedTx: SignedTransaction, ourSignature: DigitalSignature.WithKey,
|
private fun sendSignatures(allPartySignedTx: SignedTransaction, ourSignature: DigitalSignature.WithKey,
|
||||||
notarySignature: DigitalSignature.LegallyIdentifiable): SignedTransaction {
|
notarySignature: DigitalSignature.WithKey): SignedTransaction {
|
||||||
progressTracker.currentStep = SENDING_SIGS
|
progressTracker.currentStep = SENDING_SIGS
|
||||||
val fullySigned = allPartySignedTx + notarySignature
|
val fullySigned = allPartySignedTx + notarySignature
|
||||||
|
|
||||||
|
@ -55,7 +55,7 @@ object TwoPartyTradeProtocol {
|
|||||||
)
|
)
|
||||||
|
|
||||||
data class SignaturesFromSeller(val sellerSig: DigitalSignature.WithKey,
|
data class SignaturesFromSeller(val sellerSig: DigitalSignature.WithKey,
|
||||||
val notarySig: DigitalSignature.LegallyIdentifiable)
|
val notarySig: DigitalSignature.WithKey)
|
||||||
|
|
||||||
open class Seller(val otherParty: Party,
|
open class Seller(val otherParty: Party,
|
||||||
val notaryNode: NodeInfo,
|
val notaryNode: NodeInfo,
|
||||||
@ -90,7 +90,7 @@ object TwoPartyTradeProtocol {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Suspendable
|
@Suspendable
|
||||||
private fun getNotarySignature(stx: SignedTransaction): DigitalSignature.LegallyIdentifiable {
|
private fun getNotarySignature(stx: SignedTransaction): DigitalSignature.WithKey {
|
||||||
progressTracker.currentStep = NOTARY
|
progressTracker.currentStep = NOTARY
|
||||||
return subProtocol(NotaryProtocol.Client(stx))
|
return subProtocol(NotaryProtocol.Client(stx))
|
||||||
}
|
}
|
||||||
@ -142,7 +142,7 @@ object TwoPartyTradeProtocol {
|
|||||||
|
|
||||||
@Suspendable
|
@Suspendable
|
||||||
private fun sendSignatures(allPartySignedTx: SignedTransaction, ourSignature: DigitalSignature.WithKey,
|
private fun sendSignatures(allPartySignedTx: SignedTransaction, ourSignature: DigitalSignature.WithKey,
|
||||||
notarySignature: DigitalSignature.LegallyIdentifiable): SignedTransaction {
|
notarySignature: DigitalSignature.WithKey): SignedTransaction {
|
||||||
progressTracker.currentStep = SENDING_SIGS
|
progressTracker.currentStep = SENDING_SIGS
|
||||||
val fullySigned = allPartySignedTx + notarySignature
|
val fullySigned = allPartySignedTx + notarySignature
|
||||||
|
|
||||||
|
@ -5,8 +5,8 @@ import net.corda.core.contracts.DummyContract
|
|||||||
import net.corda.core.contracts.StateAndRef
|
import net.corda.core.contracts.StateAndRef
|
||||||
import net.corda.core.contracts.StateRef
|
import net.corda.core.contracts.StateRef
|
||||||
import net.corda.core.contracts.TransactionType
|
import net.corda.core.contracts.TransactionType
|
||||||
import net.corda.core.node.services.ServiceInfo
|
|
||||||
import net.corda.core.crypto.DigitalSignature
|
import net.corda.core.crypto.DigitalSignature
|
||||||
|
import net.corda.core.node.services.ServiceInfo
|
||||||
import net.corda.core.seconds
|
import net.corda.core.seconds
|
||||||
import net.corda.core.transactions.SignedTransaction
|
import net.corda.core.transactions.SignedTransaction
|
||||||
import net.corda.core.utilities.DUMMY_NOTARY
|
import net.corda.core.utilities.DUMMY_NOTARY
|
||||||
@ -108,7 +108,7 @@ class NotaryServiceTests {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private fun runNotaryClient(stx: SignedTransaction): ListenableFuture<DigitalSignature.LegallyIdentifiable> {
|
private fun runNotaryClient(stx: SignedTransaction): ListenableFuture<DigitalSignature.WithKey> {
|
||||||
val protocol = NotaryProtocol.Client(stx)
|
val protocol = NotaryProtocol.Client(stx)
|
||||||
val future = clientNode.services.startProtocol(protocol)
|
val future = clientNode.services.startProtocol(protocol)
|
||||||
net.runNetwork()
|
net.runNetwork()
|
||||||
|
@ -78,7 +78,7 @@ class ValidatingNotaryServiceTests {
|
|||||||
assertEquals(setOf(expectedMissingKey), missingKeys)
|
assertEquals(setOf(expectedMissingKey), missingKeys)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun runClient(stx: SignedTransaction): ListenableFuture<DigitalSignature.LegallyIdentifiable> {
|
private fun runClient(stx: SignedTransaction): ListenableFuture<DigitalSignature.WithKey> {
|
||||||
val protocol = NotaryProtocol.Client(stx)
|
val protocol = NotaryProtocol.Client(stx)
|
||||||
val future = clientNode.services.startProtocol(protocol)
|
val future = clientNode.services.startProtocol(protocol)
|
||||||
net.runNetwork()
|
net.runNetwork()
|
||||||
|
Reference in New Issue
Block a user