From 9e7551221f97fb8b4758e2c104ecf5b492e21c8d Mon Sep 17 00:00:00 2001 From: Jun Nemoto <35618893+jnmt@users.noreply.github.com> Date: Wed, 3 Dec 2025 09:56:06 +0900 Subject: [PATCH] Refactor AssetProofComposer (#333) Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> --- .../scalar/dl/ledger/service/Constants.java | 45 ---------------- .../service/LedgerServiceEndToEndTest.java | 8 +-- .../service/LedgerServiceIntegrationTest.java | 8 +-- .../{scalardb => }/AssetProofComposer.java | 27 +--------- .../ScalarTamperEvidentAssetLedger.java | 12 ++++- .../scalardb/ScalarTransactionManager.java | 1 + .../service/LedgerValidationService.java | 2 +- .../dl/ledger/service/ValidationService.java | 2 +- .../ledger/contract/ContractManagerTest.java | 42 ++------------- .../ScalarTamperEvidentAssetLedgerTest.java | 1 + .../ScalarTransactionManagerTest.java | 1 + .../service/LedgerValidationServiceTest.java | 33 ++---------- .../scalar/dl/ledger/test/TestConstants.java | 52 +++++++++++++++++++ .../validation/ContractValidatorTest.java | 49 ++--------------- 14 files changed, 88 insertions(+), 195 deletions(-) rename ledger/src/main/java/com/scalar/dl/ledger/database/{scalardb => }/AssetProofComposer.java (58%) create mode 100644 ledger/src/test/java/com/scalar/dl/ledger/test/TestConstants.java diff --git a/ledger/src/integration-test/java/com/scalar/dl/ledger/service/Constants.java b/ledger/src/integration-test/java/com/scalar/dl/ledger/service/Constants.java index 4a3c804b..b9ce044e 100644 --- a/ledger/src/integration-test/java/com/scalar/dl/ledger/service/Constants.java +++ b/ledger/src/integration-test/java/com/scalar/dl/ledger/service/Constants.java @@ -50,51 +50,6 @@ public class Constants { public static final String ASSET_AGE_COLUMN_NAME = "age"; public static final String ASSET_OUTPUT_COLUMN_NAME = "output"; - public static final String PRIVATE_KEY_A = - "-----BEGIN EC PRIVATE KEY-----\n" - + "MHcCAQEEIF4SjQxTArRcZaROSFjlBP2rR8fAKtL8y+kmGiSlM5hEoAoGCCqGSM49\n" - + "AwEHoUQDQgAEY0i/iAFxIBS3etbjoSC1/aUKQV66+wiawL4bZqklu86ObIc7wrif\n" - + "HExPmVhKFSklOyZqGoOiVZA0zf0LZeFaPA==\n" - + "-----END EC PRIVATE KEY-----"; - public static final String PRIVATE_KEY_B = - "-----BEGIN EC PRIVATE KEY-----\n" - + "MHcCAQEEIAHSsi6IZaB4aO7qbvkf4uv4HIAHNdMH2l6YDGyyYzY+oAoGCCqGSM49\n" - + "AwEHoUQDQgAEDhDSlG3KmPN2zK16AFB68vSa4M5MLuEtNSL7c1/ul8b6HKrq9Ivo\n" - + "xmxDUidA3pmIotkcjPtMSAxoDC98NjV2Aw==\n" - + "-----END EC PRIVATE KEY-----"; - public static final String CERTIFICATE_A = - "-----BEGIN CERTIFICATE-----\n" - + "MIICQTCCAeagAwIBAgIUEKARigcZQ3sLEXdlEtjYissVx0cwCgYIKoZIzj0EAwIw\n" - + "QTELMAkGA1UEBhMCSlAxDjAMBgNVBAgTBVRva3lvMQ4wDAYDVQQHEwVUb2t5bzES\n" - + "MBAGA1UEChMJU2FtcGxlIENBMB4XDTE4MDYyMTAyMTUwMFoXDTE5MDYyMTAyMTUw\n" - + "MFowRTELMAkGA1UEBhMCSlAxDjAMBgNVBAgTBVRva3lvMQ4wDAYDVQQHEwVUb2t5\n" - + "bzEWMBQGA1UEChMNU2FtcGxlIENsaWVudDBZMBMGByqGSM49AgEGCCqGSM49AwEH\n" - + "A0IABGNIv4gBcSAUt3rW46Egtf2lCkFeuvsImsC+G2apJbvOjmyHO8K4nxxMT5lY\n" - + "ShUpJTsmahqDolWQNM39C2XhWjyjgbcwgbQwDgYDVR0PAQH/BAQDAgWgMB0GA1Ud\n" - + "JQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAMBgNVHRMBAf8EAjAAMB0GA1UdDgQW\n" - + "BBTpBQl/JxB7yr77uMVT9mMicPeVJTAfBgNVHSMEGDAWgBQrJo3N3/0j3oPS6F6m\n" - + "wunHe8xLpzA1BgNVHREELjAsghJjbGllbnQuZXhhbXBsZS5jb22CFnd3dy5jbGll\n" - + "bnQuZXhhbXBsZS5jb20wCgYIKoZIzj0EAwIDSQAwRgIhAJPtXSzuncDJXnM+7us8\n" - + "46MEVjGHJy70bRY1My23RkxbAiEA5oFgTKMvls8e4UpnmUgFNP+FH8a5bF4tUPaV\n" - + "BQiBbgk=\n" - + "-----END CERTIFICATE-----"; - public static final String CERTIFICATE_B = - "-----BEGIN CERTIFICATE-----\n" - + "MIICjDCCAjKgAwIBAgIUTnLDk2Y+84DRD8bbQuZE1xlxidkwCgYIKoZIzj0EAwIw\n" - + "bzELMAkGA1UEBhMCSlAxDjAMBgNVBAgTBVRva3lvMQ4wDAYDVQQHEwVUb2t5bzEf\n" - + "MB0GA1UEChMWU2FtcGxlIEludGVybWVkaWF0ZSBDQTEfMB0GA1UEAxMWU2FtcGxl\n" - + "IEludGVybWVkaWF0ZSBDQTAeFw0xODA4MDkwNzAwMDBaFw0yMTA4MDgwNzAwMDBa\n" - + "MEUxCzAJBgNVBAYTAkFVMRMwEQYDVQQIEwpTb21lLVN0YXRlMSEwHwYDVQQKExhJ\n" - + "bnRlcm5ldCBXaWRnaXRzIFB0eSBMdGQwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNC\n" - + "AAQOENKUbcqY83bMrXoAUHry9Jrgzkwu4S01IvtzX+6Xxvocqur0i+jGbENSJ0De\n" - + "mYii2RyM+0xIDGgML3w2NXYDo4HVMIHSMA4GA1UdDwEB/wQEAwIFoDATBgNVHSUE\n" - + "DDAKBggrBgEFBQcDAjAMBgNVHRMBAf8EAjAAMB0GA1UdDgQWBBSsklJebvmvOepv\n" - + "QhvsCVFO4h+z+jAfBgNVHSMEGDAWgBT0HscZ7eRWv8QlQgfbtaT7BDNQEzAxBggr\n" - + "BgEFBQcBAQQlMCMwIQYIKwYBBQUHMAGGFWh0dHA6Ly9sb2NhbGhvc3Q6ODg4OTAq\n" - + "BgNVHR8EIzAhMB+gHaAbhhlodHRwOi8vbG9jYWxob3N0Ojg4ODgvY3JsMAoGCCqG\n" - + "SM49BAMCA0gAMEUCIAJavUnxqZm/a/szytCNdmESZdL++H71+YHHuTkxud8DAiEA\n" - + "6GUKwnt7oDqLgoavBNhBVmbmxMJjo+D3YEwTOJ/X4bs=\n" - + "-----END CERTIFICATE-----"; public static final String SECRET_KEY_A = "secret_key_A"; public static final String SECRET_KEY_B = "secret_key_B"; public static final String SOME_CIPHER_KEY = "cipher_key"; diff --git a/ledger/src/integration-test/java/com/scalar/dl/ledger/service/LedgerServiceEndToEndTest.java b/ledger/src/integration-test/java/com/scalar/dl/ledger/service/LedgerServiceEndToEndTest.java index b2aab831..ddc98fde 100644 --- a/ledger/src/integration-test/java/com/scalar/dl/ledger/service/LedgerServiceEndToEndTest.java +++ b/ledger/src/integration-test/java/com/scalar/dl/ledger/service/LedgerServiceEndToEndTest.java @@ -8,8 +8,6 @@ import static com.scalar.dl.ledger.service.Constants.ASSET_OUTPUT_COLUMN_NAME; import static com.scalar.dl.ledger.service.Constants.AUDITOR_ENTITY_ID; import static com.scalar.dl.ledger.service.Constants.BALANCE_ATTRIBUTE_NAME; -import static com.scalar.dl.ledger.service.Constants.CERTIFICATE_A; -import static com.scalar.dl.ledger.service.Constants.CERTIFICATE_B; import static com.scalar.dl.ledger.service.Constants.CONTRACT_ID_ATTRIBUTE_NAME; import static com.scalar.dl.ledger.service.Constants.CREATE_CONTRACT_ID1; import static com.scalar.dl.ledger.service.Constants.CREATE_CONTRACT_ID2; @@ -38,8 +36,6 @@ import static com.scalar.dl.ledger.service.Constants.PAYMENT_CONTRACT_ID2; import static com.scalar.dl.ledger.service.Constants.PAYMENT_CONTRACT_ID3; import static com.scalar.dl.ledger.service.Constants.PAYMENT_CONTRACT_ID4; -import static com.scalar.dl.ledger.service.Constants.PRIVATE_KEY_A; -import static com.scalar.dl.ledger.service.Constants.PRIVATE_KEY_B; import static com.scalar.dl.ledger.service.Constants.SECRET_KEY_A; import static com.scalar.dl.ledger.service.Constants.SECRET_KEY_B; import static com.scalar.dl.ledger.service.Constants.SOME_AMOUNT_1; @@ -49,6 +45,10 @@ import static com.scalar.dl.ledger.service.Constants.SOME_ASSET_ID_2; import static com.scalar.dl.ledger.service.Constants.SOME_CIPHER_KEY; import static com.scalar.dl.ledger.service.Constants.SOME_ID; +import static com.scalar.dl.ledger.test.TestConstants.CERTIFICATE_A; +import static com.scalar.dl.ledger.test.TestConstants.CERTIFICATE_B; +import static com.scalar.dl.ledger.test.TestConstants.PRIVATE_KEY_A; +import static com.scalar.dl.ledger.test.TestConstants.PRIVATE_KEY_B; import static org.assertj.core.api.AssertionsForClassTypes.assertThat; import static org.assertj.core.api.AssertionsForClassTypes.assertThatThrownBy; import static org.assertj.core.api.AssertionsForClassTypes.catchThrowable; diff --git a/ledger/src/integration-test/java/com/scalar/dl/ledger/service/LedgerServiceIntegrationTest.java b/ledger/src/integration-test/java/com/scalar/dl/ledger/service/LedgerServiceIntegrationTest.java index 2c228a77..9ca9daa3 100644 --- a/ledger/src/integration-test/java/com/scalar/dl/ledger/service/LedgerServiceIntegrationTest.java +++ b/ledger/src/integration-test/java/com/scalar/dl/ledger/service/LedgerServiceIntegrationTest.java @@ -4,8 +4,6 @@ import static com.scalar.dl.ledger.service.Constants.ASSETS_ATTRIBUTE_NAME; import static com.scalar.dl.ledger.service.Constants.ASSET_ATTRIBUTE_NAME; import static com.scalar.dl.ledger.service.Constants.BALANCE_ATTRIBUTE_NAME; -import static com.scalar.dl.ledger.service.Constants.CERTIFICATE_A; -import static com.scalar.dl.ledger.service.Constants.CERTIFICATE_B; import static com.scalar.dl.ledger.service.Constants.CONTRACT_ID_ATTRIBUTE_NAME; import static com.scalar.dl.ledger.service.Constants.CREATE_CONTRACT_ID1; import static com.scalar.dl.ledger.service.Constants.CREATE_CONTRACT_ID2; @@ -23,8 +21,6 @@ import static com.scalar.dl.ledger.service.Constants.ID_ATTRIBUTE_NAME; import static com.scalar.dl.ledger.service.Constants.KEY_VERSION; import static com.scalar.dl.ledger.service.Constants.PAYMENT_CONTRACT_ID1; -import static com.scalar.dl.ledger.service.Constants.PRIVATE_KEY_A; -import static com.scalar.dl.ledger.service.Constants.PRIVATE_KEY_B; import static com.scalar.dl.ledger.service.Constants.SECRET_KEY_A; import static com.scalar.dl.ledger.service.Constants.SECRET_KEY_B; import static com.scalar.dl.ledger.service.Constants.SOME_AMOUNT_1; @@ -35,6 +31,10 @@ import static com.scalar.dl.ledger.service.Constants.SOME_BALANCE; import static com.scalar.dl.ledger.service.Constants.SOME_ID; import static com.scalar.dl.ledger.service.Constants.SOME_NONCE; +import static com.scalar.dl.ledger.test.TestConstants.CERTIFICATE_A; +import static com.scalar.dl.ledger.test.TestConstants.CERTIFICATE_B; +import static com.scalar.dl.ledger.test.TestConstants.PRIVATE_KEY_A; +import static com.scalar.dl.ledger.test.TestConstants.PRIVATE_KEY_B; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatCode; import static org.assertj.core.api.Assertions.assertThatThrownBy; diff --git a/ledger/src/main/java/com/scalar/dl/ledger/database/scalardb/AssetProofComposer.java b/ledger/src/main/java/com/scalar/dl/ledger/database/AssetProofComposer.java similarity index 58% rename from ledger/src/main/java/com/scalar/dl/ledger/database/scalardb/AssetProofComposer.java rename to ledger/src/main/java/com/scalar/dl/ledger/database/AssetProofComposer.java index 574de8d0..d66fdc73 100644 --- a/ledger/src/main/java/com/scalar/dl/ledger/database/scalardb/AssetProofComposer.java +++ b/ledger/src/main/java/com/scalar/dl/ledger/database/AssetProofComposer.java @@ -1,7 +1,6 @@ -package com.scalar.dl.ledger.database.scalardb; +package com.scalar.dl.ledger.database; import com.google.inject.Inject; -import com.scalar.db.api.Put; import com.scalar.dl.ledger.crypto.SignatureSigner; import com.scalar.dl.ledger.proof.AssetProof; import com.scalar.dl.ledger.statemachine.InternalAsset; @@ -18,30 +17,6 @@ public AssetProofComposer(@Nullable SignatureSigner signer) { this.signer = signer; } - // TODO: remove this to make it not dependent on ScalarDB - public AssetProof create(Put p, String nonce) { - if (signer == null) { - return null; - } - String id = p.getPartitionKey().get().get(0).getAsString().get(); - int age = p.getClusteringKey().get().get().get(0).getAsInt(); - String input = p.getValues().get(AssetAttribute.INPUT).getAsString().get(); - byte[] hash = p.getValues().get(AssetAttribute.HASH).getAsBytes().get(); - byte[] prevHash = p.getValues().get(AssetAttribute.PREV_HASH).getAsBytes().orElse(null); - byte[] signature = signer.sign(AssetProof.serialize(id, age, nonce, input, hash, prevHash)); - - // TODO: add other fields - return AssetProof.newBuilder() - .id(id) - .age(age) - .nonce(nonce) - .input(input) - .hash(hash) - .prevHash(prevHash) - .signature(signature) - .build(); - } - public AssetProof create(InternalAsset asset) { return create(asset, null); } diff --git a/ledger/src/main/java/com/scalar/dl/ledger/database/scalardb/ScalarTamperEvidentAssetLedger.java b/ledger/src/main/java/com/scalar/dl/ledger/database/scalardb/ScalarTamperEvidentAssetLedger.java index 9aeb0676..0db90a2a 100644 --- a/ledger/src/main/java/com/scalar/dl/ledger/database/scalardb/ScalarTamperEvidentAssetLedger.java +++ b/ledger/src/main/java/com/scalar/dl/ledger/database/scalardb/ScalarTamperEvidentAssetLedger.java @@ -18,6 +18,7 @@ import com.scalar.db.io.TextValue; import com.scalar.dl.ledger.config.LedgerConfig; import com.scalar.dl.ledger.database.AssetFilter; +import com.scalar.dl.ledger.database.AssetProofComposer; import com.scalar.dl.ledger.database.AssetRecord; import com.scalar.dl.ledger.database.Snapshot; import com.scalar.dl.ledger.database.TamperEvidentAssetLedger; @@ -264,7 +265,7 @@ private List createProofs( .filter(p -> p.forTable().get().equals(ScalarTamperEvidentAssetLedger.TABLE)) .forEach( p -> { - AssetProof proof = proofComposer.create(p, nonce); + AssetProof proof = createProofFrom(p, nonce); proofs.putIfAbsent(proof.getId(), proof); }); @@ -274,6 +275,15 @@ private List createProofs( return new ArrayList<>(proofs.values()); } + private AssetProof createProofFrom(Put p, String nonce) { + String id = p.getPartitionKey().getColumns().get(0).getTextValue(); + int age = p.getClusteringKey().get().getColumns().get(0).getIntValue(); + String input = p.getTextValue(AssetAttribute.INPUT); + byte[] hash = p.getBlobValueAsBytes(AssetAttribute.HASH); + byte[] prevHash = p.getBlobValueAsBytes(AssetAttribute.PREV_HASH); + return proofComposer.create(id, age, nonce, input, hash, prevHash); + } + static class Metadata { private static final String TABLE = "asset_metadata"; private final DistributedTransaction transaction; diff --git a/ledger/src/main/java/com/scalar/dl/ledger/database/scalardb/ScalarTransactionManager.java b/ledger/src/main/java/com/scalar/dl/ledger/database/scalardb/ScalarTransactionManager.java index 2e231b16..eeded44e 100644 --- a/ledger/src/main/java/com/scalar/dl/ledger/database/scalardb/ScalarTransactionManager.java +++ b/ledger/src/main/java/com/scalar/dl/ledger/database/scalardb/ScalarTransactionManager.java @@ -12,6 +12,7 @@ import com.scalar.db.transaction.consensuscommit.ConsensusCommitManager; import com.scalar.dl.ledger.config.LedgerConfig; import com.scalar.dl.ledger.database.AssetFilter; +import com.scalar.dl.ledger.database.AssetProofComposer; import com.scalar.dl.ledger.database.MutableDatabase; import com.scalar.dl.ledger.database.Snapshot; import com.scalar.dl.ledger.database.TamperEvidentAssetLedger; diff --git a/ledger/src/main/java/com/scalar/dl/ledger/service/LedgerValidationService.java b/ledger/src/main/java/com/scalar/dl/ledger/service/LedgerValidationService.java index 7c10de0a..8ef90800 100644 --- a/ledger/src/main/java/com/scalar/dl/ledger/service/LedgerValidationService.java +++ b/ledger/src/main/java/com/scalar/dl/ledger/service/LedgerValidationService.java @@ -7,9 +7,9 @@ import com.scalar.dl.ledger.crypto.ClientKeyValidator; import com.scalar.dl.ledger.crypto.SignatureValidator; import com.scalar.dl.ledger.database.AssetFilter; +import com.scalar.dl.ledger.database.AssetProofComposer; import com.scalar.dl.ledger.database.Transaction; import com.scalar.dl.ledger.database.TransactionManager; -import com.scalar.dl.ledger.database.scalardb.AssetProofComposer; import com.scalar.dl.ledger.error.LedgerError; import com.scalar.dl.ledger.exception.LedgerException; import com.scalar.dl.ledger.exception.ValidationException; diff --git a/ledger/src/main/java/com/scalar/dl/ledger/service/ValidationService.java b/ledger/src/main/java/com/scalar/dl/ledger/service/ValidationService.java index 9d4b2d26..8c0be7a0 100644 --- a/ledger/src/main/java/com/scalar/dl/ledger/service/ValidationService.java +++ b/ledger/src/main/java/com/scalar/dl/ledger/service/ValidationService.java @@ -5,8 +5,8 @@ import com.scalar.dl.ledger.contract.ContractMachine; import com.scalar.dl.ledger.contract.ContractManager; import com.scalar.dl.ledger.crypto.ClientKeyValidator; +import com.scalar.dl.ledger.database.AssetProofComposer; import com.scalar.dl.ledger.database.TransactionManager; -import com.scalar.dl.ledger.database.scalardb.AssetProofComposer; import com.scalar.dl.ledger.model.LedgerValidationRequest; import com.scalar.dl.ledger.model.LedgerValidationResult; import com.scalar.dl.ledger.statemachine.DeserializationType; diff --git a/ledger/src/test/java/com/scalar/dl/ledger/contract/ContractManagerTest.java b/ledger/src/test/java/com/scalar/dl/ledger/contract/ContractManagerTest.java index 49269329..a9530550 100644 --- a/ledger/src/test/java/com/scalar/dl/ledger/contract/ContractManagerTest.java +++ b/ledger/src/test/java/com/scalar/dl/ledger/contract/ContractManagerTest.java @@ -1,5 +1,8 @@ package com.scalar.dl.ledger.contract; +import static com.scalar.dl.ledger.test.TestConstants.CERTIFICATE_A; +import static com.scalar.dl.ledger.test.TestConstants.CERTIFICATE_B; +import static com.scalar.dl.ledger.test.TestConstants.PRIVATE_KEY_A; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatThrownBy; import static org.assertj.core.api.Assertions.catchThrowable; @@ -36,45 +39,6 @@ import org.mockito.MockitoAnnotations; public class ContractManagerTest { - private static final String PRIVATE_KEY_A = - "-----BEGIN EC PRIVATE KEY-----\n" - + "MHcCAQEEIF4SjQxTArRcZaROSFjlBP2rR8fAKtL8y+kmGiSlM5hEoAoGCCqGSM49\n" - + "AwEHoUQDQgAEY0i/iAFxIBS3etbjoSC1/aUKQV66+wiawL4bZqklu86ObIc7wrif\n" - + "HExPmVhKFSklOyZqGoOiVZA0zf0LZeFaPA==\n" - + "-----END EC PRIVATE KEY-----"; - private static final String CERTIFICATE_A = - "-----BEGIN CERTIFICATE-----\n" - + "MIICQTCCAeagAwIBAgIUEKARigcZQ3sLEXdlEtjYissVx0cwCgYIKoZIzj0EAwIw\n" - + "QTELMAkGA1UEBhMCSlAxDjAMBgNVBAgTBVRva3lvMQ4wDAYDVQQHEwVUb2t5bzES\n" - + "MBAGA1UEChMJU2FtcGxlIENBMB4XDTE4MDYyMTAyMTUwMFoXDTE5MDYyMTAyMTUw\n" - + "MFowRTELMAkGA1UEBhMCSlAxDjAMBgNVBAgTBVRva3lvMQ4wDAYDVQQHEwVUb2t5\n" - + "bzEWMBQGA1UEChMNU2FtcGxlIENsaWVudDBZMBMGByqGSM49AgEGCCqGSM49AwEH\n" - + "A0IABGNIv4gBcSAUt3rW46Egtf2lCkFeuvsImsC+G2apJbvOjmyHO8K4nxxMT5lY\n" - + "ShUpJTsmahqDolWQNM39C2XhWjyjgbcwgbQwDgYDVR0PAQH/BAQDAgWgMB0GA1Ud\n" - + "JQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAMBgNVHRMBAf8EAjAAMB0GA1UdDgQW\n" - + "BBTpBQl/JxB7yr77uMVT9mMicPeVJTAfBgNVHSMEGDAWgBQrJo3N3/0j3oPS6F6m\n" - + "wunHe8xLpzA1BgNVHREELjAsghJjbGllbnQuZXhhbXBsZS5jb22CFnd3dy5jbGll\n" - + "bnQuZXhhbXBsZS5jb20wCgYIKoZIzj0EAwIDSQAwRgIhAJPtXSzuncDJXnM+7us8\n" - + "46MEVjGHJy70bRY1My23RkxbAiEA5oFgTKMvls8e4UpnmUgFNP+FH8a5bF4tUPaV\n" - + "BQiBbgk=\n" - + "-----END CERTIFICATE-----"; - private static final String CERTIFICATE_B = - "-----BEGIN CERTIFICATE-----\n" - + "MIICjDCCAjKgAwIBAgIUTnLDk2Y+84DRD8bbQuZE1xlxidkwCgYIKoZIzj0EAwIw\n" - + "bzELMAkGA1UEBhMCSlAxDjAMBgNVBAgTBVRva3lvMQ4wDAYDVQQHEwVUb2t5bzEf\n" - + "MB0GA1UEChMWU2FtcGxlIEludGVybWVkaWF0ZSBDQTEfMB0GA1UEAxMWU2FtcGxl\n" - + "IEludGVybWVkaWF0ZSBDQTAeFw0xODA4MDkwNzAwMDBaFw0yMTA4MDgwNzAwMDBa\n" - + "MEUxCzAJBgNVBAYTAkFVMRMwEQYDVQQIEwpTb21lLVN0YXRlMSEwHwYDVQQKExhJ\n" - + "bnRlcm5ldCBXaWRnaXRzIFB0eSBMdGQwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNC\n" - + "AAQOENKUbcqY83bMrXoAUHry9Jrgzkwu4S01IvtzX+6Xxvocqur0i+jGbENSJ0De\n" - + "mYii2RyM+0xIDGgML3w2NXYDo4HVMIHSMA4GA1UdDwEB/wQEAwIFoDATBgNVHSUE\n" - + "DDAKBggrBgEFBQcDAjAMBgNVHRMBAf8EAjAAMB0GA1UdDgQWBBSsklJebvmvOepv\n" - + "QhvsCVFO4h+z+jAfBgNVHSMEGDAWgBT0HscZ7eRWv8QlQgfbtaT7BDNQEzAxBggr\n" - + "BgEFBQcBAQQlMCMwIQYIKwYBBQUHMAGGFWh0dHA6Ly9sb2NhbGhvc3Q6ODg4OTAq\n" - + "BgNVHR8EIzAhMB+gHaAbhhlodHRwOi8vbG9jYWxob3N0Ojg4ODgvY3JsMAoGCCqG\n" - + "SM49BAMCA0gAMEUCIAJavUnxqZm/a/szytCNdmESZdL++H71+YHHuTkxud8DAiEA\n" - + "6GUKwnt7oDqLgoavBNhBVmbmxMJjo+D3YEwTOJ/X4bs=\n" - + "-----END CERTIFICATE-----"; private static final String ANY_CONTRACT_ID = "MyCreate"; private static final String ANY_CONTRACT_NAME = "Create"; private static final byte[] ANY_BYTE_CODE = "byte_code".getBytes(StandardCharsets.UTF_8); diff --git a/ledger/src/test/java/com/scalar/dl/ledger/database/scalardb/ScalarTamperEvidentAssetLedgerTest.java b/ledger/src/test/java/com/scalar/dl/ledger/database/scalardb/ScalarTamperEvidentAssetLedgerTest.java index 48cf972f..cec1b0f5 100644 --- a/ledger/src/test/java/com/scalar/dl/ledger/database/scalardb/ScalarTamperEvidentAssetLedgerTest.java +++ b/ledger/src/test/java/com/scalar/dl/ledger/database/scalardb/ScalarTamperEvidentAssetLedgerTest.java @@ -33,6 +33,7 @@ import com.scalar.dl.ledger.config.LedgerConfig; import com.scalar.dl.ledger.crypto.DigitalSignatureSigner; import com.scalar.dl.ledger.database.AssetFilter; +import com.scalar.dl.ledger.database.AssetProofComposer; import com.scalar.dl.ledger.database.AssetRecord; import com.scalar.dl.ledger.database.Snapshot; import com.scalar.dl.ledger.database.TransactionState; diff --git a/ledger/src/test/java/com/scalar/dl/ledger/database/scalardb/ScalarTransactionManagerTest.java b/ledger/src/test/java/com/scalar/dl/ledger/database/scalardb/ScalarTransactionManagerTest.java index 228a435d..266718da 100644 --- a/ledger/src/test/java/com/scalar/dl/ledger/database/scalardb/ScalarTransactionManagerTest.java +++ b/ledger/src/test/java/com/scalar/dl/ledger/database/scalardb/ScalarTransactionManagerTest.java @@ -19,6 +19,7 @@ import com.scalar.db.transaction.jdbc.JdbcTransactionManager; import com.scalar.dl.ledger.config.LedgerConfig; import com.scalar.dl.ledger.database.AssetFilter; +import com.scalar.dl.ledger.database.AssetProofComposer; import com.scalar.dl.ledger.database.TamperEvidentAssetLedger; import com.scalar.dl.ledger.database.Transaction; import com.scalar.dl.ledger.database.TransactionState; diff --git a/ledger/src/test/java/com/scalar/dl/ledger/service/LedgerValidationServiceTest.java b/ledger/src/test/java/com/scalar/dl/ledger/service/LedgerValidationServiceTest.java index 904cca4e..c50ee2f3 100644 --- a/ledger/src/test/java/com/scalar/dl/ledger/service/LedgerValidationServiceTest.java +++ b/ledger/src/test/java/com/scalar/dl/ledger/service/LedgerValidationServiceTest.java @@ -1,5 +1,8 @@ package com.scalar.dl.ledger.service; +import static com.scalar.dl.ledger.test.TestConstants.CERTIFICATE_A; +import static com.scalar.dl.ledger.test.TestConstants.PRIVATE_KEY_A; +import static com.scalar.dl.ledger.test.TestConstants.PRIVATE_KEY_B; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatThrownBy; import static org.assertj.core.api.Assertions.catchThrowable; @@ -27,10 +30,10 @@ import com.scalar.dl.ledger.crypto.DigitalSignatureValidator; import com.scalar.dl.ledger.database.AssetFilter; import com.scalar.dl.ledger.database.AssetFilter.AgeOrder; +import com.scalar.dl.ledger.database.AssetProofComposer; import com.scalar.dl.ledger.database.TamperEvidentAssetLedger; import com.scalar.dl.ledger.database.Transaction; import com.scalar.dl.ledger.database.TransactionManager; -import com.scalar.dl.ledger.database.scalardb.AssetProofComposer; import com.scalar.dl.ledger.exception.DatabaseException; import com.scalar.dl.ledger.exception.LedgerException; import com.scalar.dl.ledger.exception.SignatureException; @@ -86,34 +89,6 @@ public class LedgerValidationServiceTest { private static final String ANY_INPUT = "input"; private static final byte[] FIRST_HASH = "first".getBytes(StandardCharsets.UTF_8); private static final byte[] LAST_HASH = "second".getBytes(StandardCharsets.UTF_8); - private static final String PRIVATE_KEY_A = - "-----BEGIN EC PRIVATE KEY-----\n" - + "MHcCAQEEIF4SjQxTArRcZaROSFjlBP2rR8fAKtL8y+kmGiSlM5hEoAoGCCqGSM49\n" - + "AwEHoUQDQgAEY0i/iAFxIBS3etbjoSC1/aUKQV66+wiawL4bZqklu86ObIc7wrif\n" - + "HExPmVhKFSklOyZqGoOiVZA0zf0LZeFaPA==\n" - + "-----END EC PRIVATE KEY-----"; - private static final String PRIVATE_KEY_B = - "-----BEGIN EC PRIVATE KEY-----\n" - + "MHcCAQEEIAHSsi6IZaB4aO7qbvkf4uv4HIAHNdMH2l6YDGyyYzY+oAoGCCqGSM49\n" - + "AwEHoUQDQgAEDhDSlG3KmPN2zK16AFB68vSa4M5MLuEtNSL7c1/ul8b6HKrq9Ivo\n" - + "xmxDUidA3pmIotkcjPtMSAxoDC98NjV2Aw==\n" - + "-----END EC PRIVATE KEY-----"; - private static final String CERTIFICATE_A = - "-----BEGIN CERTIFICATE-----\n" - + "MIICQTCCAeagAwIBAgIUEKARigcZQ3sLEXdlEtjYissVx0cwCgYIKoZIzj0EAwIw\n" - + "QTELMAkGA1UEBhMCSlAxDjAMBgNVBAgTBVRva3lvMQ4wDAYDVQQHEwVUb2t5bzES\n" - + "MBAGA1UEChMJU2FtcGxlIENBMB4XDTE4MDYyMTAyMTUwMFoXDTE5MDYyMTAyMTUw\n" - + "MFowRTELMAkGA1UEBhMCSlAxDjAMBgNVBAgTBVRva3lvMQ4wDAYDVQQHEwVUb2t5\n" - + "bzEWMBQGA1UEChMNU2FtcGxlIENsaWVudDBZMBMGByqGSM49AgEGCCqGSM49AwEH\n" - + "A0IABGNIv4gBcSAUt3rW46Egtf2lCkFeuvsImsC+G2apJbvOjmyHO8K4nxxMT5lY\n" - + "ShUpJTsmahqDolWQNM39C2XhWjyjgbcwgbQwDgYDVR0PAQH/BAQDAgWgMB0GA1Ud\n" - + "JQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAMBgNVHRMBAf8EAjAAMB0GA1UdDgQW\n" - + "BBTpBQl/JxB7yr77uMVT9mMicPeVJTAfBgNVHSMEGDAWgBQrJo3N3/0j3oPS6F6m\n" - + "wunHe8xLpzA1BgNVHREELjAsghJjbGllbnQuZXhhbXBsZS5jb22CFnd3dy5jbGll\n" - + "bnQuZXhhbXBsZS5jb20wCgYIKoZIzj0EAwIDSQAwRgIhAJPtXSzuncDJXnM+7us8\n" - + "46MEVjGHJy70bRY1My23RkxbAiEA5oFgTKMvls8e4UpnmUgFNP+FH8a5bF4tUPaV\n" - + "BQiBbgk=\n" - + "-----END CERTIFICATE-----"; private static final ObjectMapper mapper = new ObjectMapper(); private static final JacksonSerDe jacksonSerDe = new JacksonSerDe(mapper); private static final JsonpSerDe jsonpSerDe = new JsonpSerDe(); diff --git a/ledger/src/test/java/com/scalar/dl/ledger/test/TestConstants.java b/ledger/src/test/java/com/scalar/dl/ledger/test/TestConstants.java new file mode 100644 index 00000000..ba8a80d2 --- /dev/null +++ b/ledger/src/test/java/com/scalar/dl/ledger/test/TestConstants.java @@ -0,0 +1,52 @@ +package com.scalar.dl.ledger.test; + +/** Common test constants shared across all Ledger test classes. */ +public final class TestConstants { + public static final String PRIVATE_KEY_A = + "-----BEGIN EC PRIVATE KEY-----\n" + + "MHcCAQEEIF4SjQxTArRcZaROSFjlBP2rR8fAKtL8y+kmGiSlM5hEoAoGCCqGSM49\n" + + "AwEHoUQDQgAEY0i/iAFxIBS3etbjoSC1/aUKQV66+wiawL4bZqklu86ObIc7wrif\n" + + "HExPmVhKFSklOyZqGoOiVZA0zf0LZeFaPA==\n" + + "-----END EC PRIVATE KEY-----"; + public static final String PRIVATE_KEY_B = + "-----BEGIN EC PRIVATE KEY-----\n" + + "MHcCAQEEIAHSsi6IZaB4aO7qbvkf4uv4HIAHNdMH2l6YDGyyYzY+oAoGCCqGSM49\n" + + "AwEHoUQDQgAEDhDSlG3KmPN2zK16AFB68vSa4M5MLuEtNSL7c1/ul8b6HKrq9Ivo\n" + + "xmxDUidA3pmIotkcjPtMSAxoDC98NjV2Aw==\n" + + "-----END EC PRIVATE KEY-----"; + public static final String CERTIFICATE_A = + "-----BEGIN CERTIFICATE-----\n" + + "MIICQTCCAeagAwIBAgIUEKARigcZQ3sLEXdlEtjYissVx0cwCgYIKoZIzj0EAwIw\n" + + "QTELMAkGA1UEBhMCSlAxDjAMBgNVBAgTBVRva3lvMQ4wDAYDVQQHEwVUb2t5bzES\n" + + "MBAGA1UEChMJU2FtcGxlIENBMB4XDTE4MDYyMTAyMTUwMFoXDTE5MDYyMTAyMTUw\n" + + "MFowRTELMAkGA1UEBhMCSlAxDjAMBgNVBAgTBVRva3lvMQ4wDAYDVQQHEwVUb2t5\n" + + "bzEWMBQGA1UEChMNU2FtcGxlIENsaWVudDBZMBMGByqGSM49AgEGCCqGSM49AwEH\n" + + "A0IABGNIv4gBcSAUt3rW46Egtf2lCkFeuvsImsC+G2apJbvOjmyHO8K4nxxMT5lY\n" + + "ShUpJTsmahqDolWQNM39C2XhWjyjgbcwgbQwDgYDVR0PAQH/BAQDAgWgMB0GA1Ud\n" + + "JQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAMBgNVHRMBAf8EAjAAMB0GA1UdDgQW\n" + + "BBTpBQl/JxB7yr77uMVT9mMicPeVJTAfBgNVHSMEGDAWgBQrJo3N3/0j3oPS6F6m\n" + + "wunHe8xLpzA1BgNVHREELjAsghJjbGllbnQuZXhhbXBsZS5jb22CFnd3dy5jbGll\n" + + "bnQuZXhhbXBsZS5jb20wCgYIKoZIzj0EAwIDSQAwRgIhAJPtXSzuncDJXnM+7us8\n" + + "46MEVjGHJy70bRY1My23RkxbAiEA5oFgTKMvls8e4UpnmUgFNP+FH8a5bF4tUPaV\n" + + "BQiBbgk=\n" + + "-----END CERTIFICATE-----"; + public static final String CERTIFICATE_B = + "-----BEGIN CERTIFICATE-----\n" + + "MIICjDCCAjKgAwIBAgIUTnLDk2Y+84DRD8bbQuZE1xlxidkwCgYIKoZIzj0EAwIw\n" + + "bzELMAkGA1UEBhMCSlAxDjAMBgNVBAgTBVRva3lvMQ4wDAYDVQQHEwVUb2t5bzEf\n" + + "MB0GA1UEChMWU2FtcGxlIEludGVybWVkaWF0ZSBDQTEfMB0GA1UEAxMWU2FtcGxl\n" + + "IEludGVybWVkaWF0ZSBDQTAeFw0xODA4MDkwNzAwMDBaFw0yMTA4MDgwNzAwMDBa\n" + + "MEUxCzAJBgNVBAYTAkFVMRMwEQYDVQQIEwpTb21lLVN0YXRlMSEwHwYDVQQKExhJ\n" + + "bnRlcm5ldCBXaWRnaXRzIFB0eSBMdGQwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNC\n" + + "AAQOENKUbcqY83bMrXoAUHry9Jrgzkwu4S01IvtzX+6Xxvocqur0i+jGbENSJ0De\n" + + "mYii2RyM+0xIDGgML3w2NXYDo4HVMIHSMA4GA1UdDwEB/wQEAwIFoDATBgNVHSUE\n" + + "DDAKBggrBgEFBQcDAjAMBgNVHRMBAf8EAjAAMB0GA1UdDgQWBBSsklJebvmvOepv\n" + + "QhvsCVFO4h+z+jAfBgNVHSMEGDAWgBT0HscZ7eRWv8QlQgfbtaT7BDNQEzAxBggr\n" + + "BgEFBQcBAQQlMCMwIQYIKwYBBQUHMAGGFWh0dHA6Ly9sb2NhbGhvc3Q6ODg4OTAq\n" + + "BgNVHR8EIzAhMB+gHaAbhhlodHRwOi8vbG9jYWxob3N0Ojg4ODgvY3JsMAoGCCqG\n" + + "SM49BAMCA0gAMEUCIAJavUnxqZm/a/szytCNdmESZdL++H71+YHHuTkxud8DAiEA\n" + + "6GUKwnt7oDqLgoavBNhBVmbmxMJjo+D3YEwTOJ/X4bs=\n" + + "-----END CERTIFICATE-----"; + + private TestConstants() {} +} diff --git a/ledger/src/test/java/com/scalar/dl/ledger/validation/ContractValidatorTest.java b/ledger/src/test/java/com/scalar/dl/ledger/validation/ContractValidatorTest.java index afc5161b..72e138ad 100644 --- a/ledger/src/test/java/com/scalar/dl/ledger/validation/ContractValidatorTest.java +++ b/ledger/src/test/java/com/scalar/dl/ledger/validation/ContractValidatorTest.java @@ -1,5 +1,9 @@ package com.scalar.dl.ledger.validation; +import static com.scalar.dl.ledger.test.TestConstants.CERTIFICATE_A; +import static com.scalar.dl.ledger.test.TestConstants.CERTIFICATE_B; +import static com.scalar.dl.ledger.test.TestConstants.PRIVATE_KEY_A; +import static com.scalar.dl.ledger.test.TestConstants.PRIVATE_KEY_B; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatThrownBy; import static org.mockito.ArgumentMatchers.anyInt; @@ -31,51 +35,6 @@ public class ContractValidatorTest { private static final String CONTRACT_ARGUMENT = "contract_argument"; private static final String CONTRACT_ID_IN_ASSET = ENTITY_ID + "/" + CERT_VERSION + "/" + CONTRACT_ID; - private static final String PRIVATE_KEY_A = - "-----BEGIN EC PRIVATE KEY-----\n" - + "MHcCAQEEIF4SjQxTArRcZaROSFjlBP2rR8fAKtL8y+kmGiSlM5hEoAoGCCqGSM49\n" - + "AwEHoUQDQgAEY0i/iAFxIBS3etbjoSC1/aUKQV66+wiawL4bZqklu86ObIc7wrif\n" - + "HExPmVhKFSklOyZqGoOiVZA0zf0LZeFaPA==\n" - + "-----END EC PRIVATE KEY-----"; - private static final String PRIVATE_KEY_B = - "-----BEGIN EC PRIVATE KEY-----\n" - + "MHcCAQEEIAHSsi6IZaB4aO7qbvkf4uv4HIAHNdMH2l6YDGyyYzY+oAoGCCqGSM49\n" - + "AwEHoUQDQgAEDhDSlG3KmPN2zK16AFB68vSa4M5MLuEtNSL7c1/ul8b6HKrq9Ivo\n" - + "xmxDUidA3pmIotkcjPtMSAxoDC98NjV2Aw==\n" - + "-----END EC PRIVATE KEY-----"; - private static final String CERTIFICATE_A = - "-----BEGIN CERTIFICATE-----\n" - + "MIICQTCCAeagAwIBAgIUEKARigcZQ3sLEXdlEtjYissVx0cwCgYIKoZIzj0EAwIw\n" - + "QTELMAkGA1UEBhMCSlAxDjAMBgNVBAgTBVRva3lvMQ4wDAYDVQQHEwVUb2t5bzES\n" - + "MBAGA1UEChMJU2FtcGxlIENBMB4XDTE4MDYyMTAyMTUwMFoXDTE5MDYyMTAyMTUw\n" - + "MFowRTELMAkGA1UEBhMCSlAxDjAMBgNVBAgTBVRva3lvMQ4wDAYDVQQHEwVUb2t5\n" - + "bzEWMBQGA1UEChMNU2FtcGxlIENsaWVudDBZMBMGByqGSM49AgEGCCqGSM49AwEH\n" - + "A0IABGNIv4gBcSAUt3rW46Egtf2lCkFeuvsImsC+G2apJbvOjmyHO8K4nxxMT5lY\n" - + "ShUpJTsmahqDolWQNM39C2XhWjyjgbcwgbQwDgYDVR0PAQH/BAQDAgWgMB0GA1Ud\n" - + "JQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAMBgNVHRMBAf8EAjAAMB0GA1UdDgQW\n" - + "BBTpBQl/JxB7yr77uMVT9mMicPeVJTAfBgNVHSMEGDAWgBQrJo3N3/0j3oPS6F6m\n" - + "wunHe8xLpzA1BgNVHREELjAsghJjbGllbnQuZXhhbXBsZS5jb22CFnd3dy5jbGll\n" - + "bnQuZXhhbXBsZS5jb20wCgYIKoZIzj0EAwIDSQAwRgIhAJPtXSzuncDJXnM+7us8\n" - + "46MEVjGHJy70bRY1My23RkxbAiEA5oFgTKMvls8e4UpnmUgFNP+FH8a5bF4tUPaV\n" - + "BQiBbgk=\n" - + "-----END CERTIFICATE-----"; - private static final String CERTIFICATE_B = - "-----BEGIN CERTIFICATE-----\n" - + "MIICjDCCAjKgAwIBAgIUTnLDk2Y+84DRD8bbQuZE1xlxidkwCgYIKoZIzj0EAwIw\n" - + "bzELMAkGA1UEBhMCSlAxDjAMBgNVBAgTBVRva3lvMQ4wDAYDVQQHEwVUb2t5bzEf\n" - + "MB0GA1UEChMWU2FtcGxlIEludGVybWVkaWF0ZSBDQTEfMB0GA1UEAxMWU2FtcGxl\n" - + "IEludGVybWVkaWF0ZSBDQTAeFw0xODA4MDkwNzAwMDBaFw0yMTA4MDgwNzAwMDBa\n" - + "MEUxCzAJBgNVBAYTAkFVMRMwEQYDVQQIEwpTb21lLVN0YXRlMSEwHwYDVQQKExhJ\n" - + "bnRlcm5ldCBXaWRnaXRzIFB0eSBMdGQwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNC\n" - + "AAQOENKUbcqY83bMrXoAUHry9Jrgzkwu4S01IvtzX+6Xxvocqur0i+jGbENSJ0De\n" - + "mYii2RyM+0xIDGgML3w2NXYDo4HVMIHSMA4GA1UdDwEB/wQEAwIFoDATBgNVHSUE\n" - + "DDAKBggrBgEFBQcDAjAMBgNVHRMBAf8EAjAAMB0GA1UdDgQWBBSsklJebvmvOepv\n" - + "QhvsCVFO4h+z+jAfBgNVHSMEGDAWgBT0HscZ7eRWv8QlQgfbtaT7BDNQEzAxBggr\n" - + "BgEFBQcBAQQlMCMwIQYIKwYBBQUHMAGGFWh0dHA6Ly9sb2NhbGhvc3Q6ODg4OTAq\n" - + "BgNVHR8EIzAhMB+gHaAbhhlodHRwOi8vbG9jYWxob3N0Ojg4ODgvY3JsMAoGCCqG\n" - + "SM49BAMCA0gAMEUCIAJavUnxqZm/a/szytCNdmESZdL++H71+YHHuTkxud8DAiEA\n" - + "6GUKwnt7oDqLgoavBNhBVmbmxMJjo+D3YEwTOJ/X4bs=\n" - + "-----END CERTIFICATE-----"; @Mock private ContractMachine contract; @Mock private Ledger ledger; @Mock private ClientKeyValidator clientKeyValidator;