Skip to content

Commit

Permalink
utxo stx verification service split for c5 and dlt
Browse files Browse the repository at this point in the history
  • Loading branch information
jennyang-r3 committed Nov 15, 2024
1 parent 9c1a128 commit 00ba2fa
Show file tree
Hide file tree
Showing 7 changed files with 56 additions and 17 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import net.corda.ledger.common.data.transaction.WireTransaction
import net.corda.ledger.common.flow.transaction.TransactionSignatureServiceInternal
import net.corda.ledger.lib.utxo.flow.impl.transaction.UtxoSignedTransactionImpl
import net.corda.ledger.lib.utxo.flow.impl.transaction.UtxoSignedTransactionInternal
import net.corda.ledger.lib.utxo.flow.impl.transaction.UtxoSignedTransactionSignatureVerificationServiceImpl
import net.corda.ledger.lib.utxo.flow.impl.transaction.factory.UtxoLedgerTransactionFactory
import net.corda.ledger.lib.utxo.flow.impl.transaction.verifier.NotarySignatureVerificationServiceInternal
import net.corda.sandbox.type.SandboxConstants.CORDA_UNINJECTABLE_SERVICE
Expand Down Expand Up @@ -31,8 +32,8 @@ class UtxoSignedTransactionSerializer @Activate constructor(
@Reference(service = UtxoLedgerTransactionFactory::class)
private val utxoLedgerTransactionFactory: UtxoLedgerTransactionFactory,
@Reference(service = NotarySignatureVerificationServiceInternal::class)
private val notarySignatureVerificationService: NotarySignatureVerificationServiceInternal
) : BaseProxySerializer<UtxoSignedTransactionInternal, UtxoSignedTransactionProxy>(), UsedByFlow {
private val notarySignatureVerificationService: NotarySignatureVerificationServiceInternal,
) : BaseProxySerializer<UtxoSignedTransactionInternal, UtxoSignedTransactionProxy>(), UsedByFlow {
private companion object {
private const val VERSION_1 = 1
}
Expand Down Expand Up @@ -64,7 +65,11 @@ class UtxoSignedTransactionSerializer @Activate constructor(
notarySignatureVerificationService,
utxoLedgerTransactionFactory,
proxy.wireTransaction,
proxy.signatures.toSet()
proxy.signatures.toSet(),
UtxoSignedTransactionSignatureVerificationServiceImpl(
notarySignatureVerificationService,
transactionSignatureService
)
)
else ->
throw CordaRuntimeException("Unable to create UtxoSignedTransaction with Version='${proxy.version}'")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import net.corda.ledger.common.data.transaction.WireTransaction
import net.corda.ledger.common.flow.transaction.TransactionSignatureServiceInternal
import net.corda.ledger.lib.utxo.flow.impl.transaction.UtxoSignedTransactionImpl
import net.corda.ledger.lib.utxo.flow.impl.transaction.UtxoSignedTransactionInternal
import net.corda.ledger.lib.utxo.flow.impl.transaction.UtxoSignedTransactionSignatureVerificationServiceImpl
import net.corda.ledger.lib.utxo.flow.impl.transaction.factory.UtxoLedgerTransactionFactory
import net.corda.ledger.lib.utxo.flow.impl.transaction.verifier.NotarySignatureVerificationServiceInternal
import net.corda.sandbox.type.SandboxConstants.CORDA_UNINJECTABLE_SERVICE
Expand Down Expand Up @@ -51,7 +52,11 @@ class UtxoSignedTransactionKryoSerializer @Activate constructor(
notarySignatureVerificationService,
utxoLedgerTransactionFactory,
wireTransaction,
signatures.toSet()
signatures.toSet(),
UtxoSignedTransactionSignatureVerificationServiceImpl(
notarySignatureVerificationService,
transactionSignatureService
)
)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ import net.corda.ledger.common.data.transaction.filtered.FilteredTransaction
import net.corda.ledger.common.flow.transaction.TransactionSignatureServiceInternal
import net.corda.ledger.lib.utxo.flow.impl.transaction.UtxoSignedTransactionImpl
import net.corda.ledger.lib.utxo.flow.impl.transaction.UtxoSignedTransactionInternal
import net.corda.ledger.lib.utxo.flow.impl.transaction.UtxoSignedTransactionSignatureVerificationService
import net.corda.ledger.lib.utxo.flow.impl.transaction.factory.UtxoLedgerTransactionFactory
import net.corda.ledger.lib.utxo.flow.impl.transaction.factory.UtxoSignedTransactionFactory
import net.corda.ledger.lib.utxo.flow.impl.transaction.verifier.NotarySignatureVerificationServiceInternal
Expand Down Expand Up @@ -103,6 +104,8 @@ class UtxoLedgerPersistenceServiceImplTest {
private val stateAndRefCache = mock<StateAndRefCache>()
private val flowCheckpointService = mock<FlowCheckpointService>()
private val flowCheckpoint = mock<FlowCheckpoint>()
private val signedTransactionSignatureVerificationServiceImpl =
mock<UtxoSignedTransactionSignatureVerificationService>()

private val notaryServiceKey = mock<CompositeKey>()
private val publicKeyNotaryVNode1 = mock<PublicKey>().also { whenever(it.encoded).thenReturn(byteArrayOf(0x01)) }
Expand Down Expand Up @@ -259,7 +262,8 @@ class UtxoLedgerPersistenceServiceImplTest {
notarySignatureVerificationService,
mock<UtxoLedgerTransactionFactory>(),
wireTransaction,
signatures
signatures,
signedTransactionSignatureVerificationServiceImpl
)
val testId = parseSecureHash("SHA256:1234567890123456")

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,13 +28,14 @@ data class UtxoSignedTransactionImpl(
private val notarySignatureVerificationService: NotarySignatureVerificationServiceInternal,
private val utxoLedgerTransactionFactory: UtxoLedgerTransactionFactory,
override val wireTransaction: WireTransaction,
private val signatures: Set<DigitalSignatureAndMetadata>
private val signatures: Set<DigitalSignatureAndMetadata>,
private val utxoSignedTxSignatureVerificationService: UtxoSignedTransactionSignatureVerificationService
) : UtxoSignedTransactionInternal {

private val utxoSignedTxSignatureVerificationService = UtxoSignedTransactionSignatureVerificationServiceImpl(
notarySignatureVerificationService,
transactionSignatureServiceInternal
)
// private val utxoSignedTxSignatureVerificationService = UtxoSignedTransactionSignatureVerificationServiceImpl(
// notarySignatureVerificationService,
// transactionSignatureServiceInternal
// )

init {
require(signatures.isNotEmpty()) { "Tried to instantiate a ${javaClass.simpleName} without any signatures." }
Expand Down Expand Up @@ -94,7 +95,11 @@ data class UtxoSignedTransactionImpl(
notarySignatureVerificationService,
utxoLedgerTransactionFactory,
wireTransaction,
signatures + signature
signatures + signature,
UtxoSignedTransactionSignatureVerificationServiceImpl(
notarySignatureVerificationService,
transactionSignatureServiceInternal
)
)

@Suspendable
Expand All @@ -111,7 +116,11 @@ data class UtxoSignedTransactionImpl(
notarySignatureVerificationService,
utxoLedgerTransactionFactory,
wireTransaction,
signatures + newSignatures
signatures + newSignatures,
UtxoSignedTransactionSignatureVerificationServiceImpl(
notarySignatureVerificationService,
transactionSignatureServiceInternal
)
),
newSignatures
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import net.corda.ledger.common.flow.transaction.TransactionSignatureServiceInter
import net.corda.ledger.common.flow.transaction.factory.TransactionMetadataFactory
import net.corda.ledger.lib.utxo.flow.impl.transaction.UtxoSignedTransactionImpl
import net.corda.ledger.lib.utxo.flow.impl.transaction.UtxoSignedTransactionInternal
import net.corda.ledger.lib.utxo.flow.impl.transaction.UtxoSignedTransactionSignatureVerificationServiceImpl
import net.corda.ledger.lib.utxo.flow.impl.transaction.UtxoTransactionBuilderInternal
import net.corda.ledger.lib.utxo.flow.impl.transaction.factory.UtxoLedgerTransactionFactory
import net.corda.ledger.lib.utxo.flow.impl.transaction.factory.UtxoSignedTransactionFactory
Expand Down Expand Up @@ -42,9 +43,15 @@ class UtxoSignedTransactionFactoryImpl(
private val notarySignatureVerificationService: NotarySignatureVerificationServiceInternal,
private val privacySaltProviderService: PrivacySaltProviderService,
private val getEvolvableTag: (klass: Class<*>) -> String,
private val getExtraMetadata: () -> Map<String, Any>
private val getExtraMetadata: () -> Map<String, Any>,
) : UtxoSignedTransactionFactory {

// private val utxoSignedTransactionSignatureVerificationServiceFactory =
// UtxoSignedTransactionSignatureVerificationServiceImpl(
// notarySignatureVerificationService,
// digitalSignatureVerificationService
// )

@Suspendable
override fun create(
utxoTransactionBuilder: UtxoTransactionBuilderInternal,
Expand Down Expand Up @@ -74,7 +81,8 @@ class UtxoSignedTransactionFactoryImpl(
notarySignatureVerificationService,
utxoLedgerTransactionFactory,
wireTransaction,
signaturesWithMetadata.toSet()
signaturesWithMetadata.toSet(),
UtxoSignedTransactionSignatureVerificationServiceImpl(notarySignatureVerificationService, transactionSignatureService)
)
}

Expand All @@ -87,7 +95,8 @@ class UtxoSignedTransactionFactoryImpl(
notarySignatureVerificationService,
utxoLedgerTransactionFactory,
wireTransaction,
signaturesWithMetaData.toSet()
signaturesWithMetaData.toSet(),
UtxoSignedTransactionSignatureVerificationServiceImpl(notarySignatureVerificationService, transactionSignatureService)
)

@Suspendable
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import net.corda.ledger.common.testkit.anotherPublicKeyExample
import net.corda.ledger.common.testkit.publicKeyExample
import net.corda.ledger.utxo.flow.impl.groupparameters.verifier.SignedGroupParametersVerifier
import net.corda.ledger.lib.utxo.flow.impl.persistence.UtxoLedgerStateQueryService
import net.corda.ledger.lib.utxo.flow.impl.transaction.UtxoSignedTransactionSignatureVerificationService
import net.corda.ledger.lib.utxo.flow.impl.transaction.verifier.NotarySignatureVerificationServiceInternal
import net.corda.ledger.lib.utxo.flow.impl.transaction.verifier.UtxoLedgerTransactionVerificationService
import net.corda.ledger.utxo.flow.impl.UtxoLedgerServiceImpl
Expand Down Expand Up @@ -38,6 +39,8 @@ abstract class UtxoLedgerTest : CommonLedgerTest() {
private val mockGroupParametersLookup = mockGroupParametersLookup()
private val mockSignedGroupParametersVerifier = mock<SignedGroupParametersVerifier>()
private val mockNotarySignatureVerificationService = mock<NotarySignatureVerificationServiceInternal>()
private val mockSignedTransactionSignatureVerificationService =
mock<UtxoSignedTransactionSignatureVerificationService>()

val mockUtxoLedgerStateQueryService = mock<UtxoLedgerStateQueryService>()
val mockCurrentSandboxGroupContext = mock<CurrentSandboxGroupContext>()
Expand Down Expand Up @@ -128,7 +131,8 @@ abstract class UtxoLedgerTest : CommonLedgerTest() {
jsonValidator,
transactionSignatureService,
mockNotarySignatureVerificationService,
utxoLedgerTransactionFactory
utxoLedgerTransactionFactory,
mockSignedTransactionSignatureVerificationService
)

// This is the only not stateless.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import net.corda.ledger.common.testkit.getSignatureWithMetadataExample
import net.corda.ledger.common.testkit.getWireTransactionExample
import net.corda.ledger.lib.utxo.flow.impl.transaction.UtxoSignedTransactionImpl
import net.corda.ledger.lib.utxo.flow.impl.transaction.UtxoSignedTransactionInternal
import net.corda.ledger.lib.utxo.flow.impl.transaction.UtxoSignedTransactionSignatureVerificationService
import net.corda.ledger.lib.utxo.flow.impl.transaction.factory.UtxoLedgerTransactionFactory
import net.corda.ledger.lib.utxo.flow.impl.transaction.factory.UtxoSignedTransactionFactory
import net.corda.ledger.lib.utxo.flow.impl.transaction.verifier.NotarySignatureVerificationServiceInternal
Expand Down Expand Up @@ -48,6 +49,7 @@ fun getUtxoSignedTransactionExample(
transactionSignatureService: TransactionSignatureServiceInternal,
notarySignatureVerificationService: NotarySignatureVerificationServiceInternal,
utxoLedgerTransactionFactory: UtxoLedgerTransactionFactory,
utxoSignedTransactionSignatureVerificationService: UtxoSignedTransactionSignatureVerificationService,
cpkPackageSeed: String? = null
): UtxoSignedTransaction {
val wireTransaction = getWireTransactionExample(
Expand All @@ -63,6 +65,7 @@ fun getUtxoSignedTransactionExample(
notarySignatureVerificationService,
utxoLedgerTransactionFactory,
wireTransaction,
setOf(getSignatureWithMetadataExample())
setOf(getSignatureWithMetadataExample()),
utxoSignedTransactionSignatureVerificationService
)
}

0 comments on commit 00ba2fa

Please sign in to comment.