Skip to content

Commit e42c28f

Browse files
fix(PerfTest): Rebase to the latest dbEsdk changes
1 parent e4d7b7d commit e42c28f

File tree

10 files changed

+98
-93
lines changed

10 files changed

+98
-93
lines changed

PerfTest/runtimes/java/DynamoDbEncryption/build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ repositories {
6262
}
6363

6464
dependencies {
65-
implementation("software.amazon.cryptography:AwsCryptographyDynamoDbEncryption:1.0-SNAPSHOT")
65+
implementation("software.amazon.cryptography:aws-database-encryption-sdk-dynamodb:1.0-SNAPSHOT")
6666
implementation("software.amazon.cryptography:AwsCryptographicMaterialProviders:1.0-SNAPSHOT")
6767

6868
implementation(platform("software.amazon.awssdk:bom:2.19.1"))

PerfTest/runtimes/java/DynamoDbEncryption/src/main/java/software/aws/cryptography/performance/itemencryptor/utils/GenerateDataFlat.java

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -16,18 +16,21 @@
1616
* and is mainly for debugging purpose (and avoid handwriting data).
1717
*/
1818
public class GenerateDataFlat {
19-
public static void main(String[] args) throws Exception {
20-
File myFile = new File("flat_attributes.json");
19+
public static void main(final String[] args) throws Exception {
20+
final File myFile = new File("flat_attributes.json");
2121
myFile.createNewFile();
22-
Map<String, AttributeValue.Builder> jsonData = new HashMap<>();
23-
//2000 * 100 bytes = 200 KB
24-
for (Integer i = 0; i < 2000; i++) {
25-
byte[] randomData = new byte[100];
26-
new Random().nextBytes(randomData);
27-
jsonData.put("Attribute".concat(i.toString()), AttributeValue.builder().b(SdkBytes.fromByteArray(randomData)));
28-
FileOutputStream fileOutputStream = new FileOutputStream(myFile);
29-
fileOutputStream.write(JsonMapper.builder().serializationInclusion(JsonInclude.Include.NON_NULL).build().writeValueAsBytes(jsonData));
30-
fileOutputStream.close();
22+
final Map<String, AttributeValue.Builder> jsonData = new HashMap<>();
23+
//First 2 attributes are pk and sk
24+
for (Integer topLevelAttributeIndex = 2; topLevelAttributeIndex < 100; topLevelAttributeIndex++) {
25+
byte[] randomData = new byte[2000];
26+
new Random().nextBytes(randomData);
27+
jsonData.put("Attribute".concat(topLevelAttributeIndex.toString()), AttributeValue.builder().b(SdkBytes.fromByteArray(randomData)));
3128
}
29+
final FileOutputStream fileOutputStream = new FileOutputStream(myFile);
30+
fileOutputStream.write(JsonMapper.builder()
31+
.serializationInclusion(JsonInclude.Include.NON_NULL)
32+
.build()
33+
.writeValueAsBytes(jsonData));
34+
fileOutputStream.close();
3235
}
3336
}

PerfTest/runtimes/java/DynamoDbEncryption/src/main/java/software/aws/cryptography/performance/itemencryptor/utils/GenerateDataNested.java

Lines changed: 21 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -16,33 +16,35 @@
1616
* and is mainly for debugging purpose (and avoid handwriting data).
1717
*/
1818
public class GenerateDataNested {
19-
public static void main(String[] args) throws Exception {
20-
File myFile = new File("nested_attributes.json");
19+
public static void main(final String[] args) throws Exception {
20+
final File myFile = new File("nested_attributes.json");
2121
myFile.createNewFile();
22-
Map<String, AttributeValue.Builder> jsonData = new HashMap<>();
23-
for (Integer i = 0; i < 200; i++) {
22+
final Map<String, AttributeValue.Builder> jsonData = new HashMap<>();
23+
//First 2 attributes are pk and sk
24+
for (Integer topLevelAttributeIndex = 2; topLevelAttributeIndex < 100; topLevelAttributeIndex++) {
2425
//Randomise level of nesting
25-
for (Integer j = 0; j < new Random().nextInt(100); j++) {
26-
byte[] randomData = new byte[100];
27-
new Random().nextBytes(randomData);
28-
jsonData.put("Attribute".concat(i.toString()), AttributeValue.builder().m(gen(j)));
29-
}
30-
FileOutputStream fileOutputStream = new FileOutputStream(myFile);
31-
fileOutputStream.write(JsonMapper.builder().serializationInclusion(JsonInclude.Include.NON_NULL).build().writeValueAsBytes(jsonData));
32-
fileOutputStream.close();
26+
final Integer nestedChildAttributeIndex = new Random().nextInt(31);
27+
jsonData.put("Attribute".concat(topLevelAttributeIndex.toString()),
28+
AttributeValue.builder().m(generateNestedChildren(nestedChildAttributeIndex)));
3329
}
30+
final FileOutputStream fileOutputStream = new FileOutputStream(myFile);
31+
fileOutputStream.write(JsonMapper.builder()
32+
.serializationInclusion(JsonInclude.Include.NON_NULL)
33+
.build()
34+
.writeValueAsBytes(jsonData));
35+
fileOutputStream.close();
3436
}
35-
static Map<String, AttributeValue> gen(Integer j) {
36-
if(j == 0) {
37+
static Map<String, AttributeValue> generateNestedChildren(final Integer nestedChildAttributeIndex) {
38+
if (nestedChildAttributeIndex == 0) {
3739
byte[] randomData = new byte[1000];
3840
new Random().nextBytes(randomData);
39-
Map<String, AttributeValue> val = new HashMap<>();
40-
val.put("Attribute".concat(j.toString()), AttributeValue.fromB(SdkBytes.fromByteArray(randomData)));
41-
return val;
41+
Map<String, AttributeValue> leafNode = new HashMap<>();
42+
leafNode.put("Attribute".concat(nestedChildAttributeIndex.toString()), AttributeValue.fromB(SdkBytes.fromByteArray(randomData)));
43+
return leafNode;
4244
}
43-
Map<String, AttributeValue> nested = gen(j-1);
45+
Map<String, AttributeValue> nested = generateNestedChildren(nestedChildAttributeIndex - 1);
4446
Map<String, AttributeValue> parent = new HashMap<>();
45-
parent.put("Attribute".concat(j.toString()), AttributeValue.fromM(nested));
47+
parent.put("Attribute".concat(nestedChildAttributeIndex.toString()), AttributeValue.fromM(nested));
4648
return parent;
4749
}
4850
}

PerfTest/runtimes/java/DynamoDbEncryption/src/main/java/software/aws/cryptography/performance/itemencryptor/v3/AwsKmsKeyringTest.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
package software.aws.cryptography.performance.itemencryptor.v3;
22

33
import software.amazon.awssdk.services.kms.KmsClient;
4-
import software.amazon.cryptography.materialProviders.IKeyring;
5-
import software.amazon.cryptography.materialProviders.MaterialProviders;
6-
import software.amazon.cryptography.materialProviders.model.CreateAwsKmsKeyringInput;
7-
import software.amazon.cryptography.materialProviders.model.MaterialProvidersConfig;
4+
import software.amazon.cryptography.materialproviders.IKeyring;
5+
import software.amazon.cryptography.materialproviders.MaterialProviders;
6+
import software.amazon.cryptography.materialproviders.model.CreateAwsKmsKeyringInput;
7+
import software.amazon.cryptography.materialproviders.model.MaterialProvidersConfig;
88

99
import static software.aws.cryptography.performance.itemencryptor.TestConstants.KMS_KEY_ARN;
1010

PerfTest/runtimes/java/DynamoDbEncryption/src/main/java/software/aws/cryptography/performance/itemencryptor/v3/HeirarchyKeyringTest.java

Lines changed: 25 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
package software.aws.cryptography.performance.itemencryptor.v3;
22

3-
import com.fasterxml.jackson.core.type.TypeReference;
43
import com.fasterxml.jackson.databind.JsonNode;
5-
import com.fasterxml.jackson.databind.ObjectMapper;
64
import software.amazon.awssdk.core.client.config.ClientOverrideConfiguration;
75
import software.amazon.awssdk.services.dynamodb.DynamoDbClient;
86
import software.amazon.awssdk.services.dynamodb.model.AttributeValue;
@@ -11,26 +9,26 @@
119
import software.amazon.awssdk.services.dynamodb.model.PutItemRequest;
1210
import software.amazon.awssdk.services.dynamodb.model.ReturnValue;
1311
import software.amazon.awssdk.services.kms.KmsClient;
14-
import software.amazon.cryptography.dynamoDbEncryption.DynamoDbEncryption;
15-
import software.amazon.cryptography.dynamoDbEncryption.model.CreateDynamoDbEncryptionBranchKeyIdSupplierInput;
16-
import software.amazon.cryptography.dynamoDbEncryption.model.DynamoDbEncryptionConfig;
17-
import software.amazon.cryptography.dynamoDbEncryption.model.DynamoDbTableEncryptionConfig;
18-
import software.amazon.cryptography.dynamoDbEncryption.model.DynamoDbTablesEncryptionConfig;
19-
import software.amazon.cryptography.dynamoDbEncryption.model.GetBranchKeyIdFromDdbKeyOutput;
20-
import software.amazon.cryptography.keyStore.KeyStore;
21-
import software.amazon.cryptography.keyStore.model.CreateKeyStoreInput;
22-
import software.amazon.cryptography.keyStore.model.KeyStoreConfig;
23-
import software.amazon.cryptography.materialProviders.IBranchKeyIdSupplier;
24-
import software.amazon.cryptography.materialProviders.IKeyring;
25-
import software.amazon.cryptography.materialProviders.MaterialProviders;
26-
import software.amazon.cryptography.materialProviders.model.CreateAwsKmsHierarchicalKeyringInput;
27-
import software.amazon.cryptography.materialProviders.model.MaterialProvidersConfig;
28-
import software.aws.cryptography.dynamoDbEncryption.DynamoDbEncryptionInterceptor;
12+
import software.amazon.cryptography.dbencryptionsdk.dynamodb.DynamoDbEncryption;
13+
import software.amazon.cryptography.dbencryptionsdk.dynamodb.DynamoDbEncryptionInterceptor;
14+
import software.amazon.cryptography.dbencryptionsdk.dynamodb.model.CreateDynamoDbEncryptionBranchKeyIdSupplierInput;
15+
import software.amazon.cryptography.dbencryptionsdk.dynamodb.model.DynamoDbEncryptionConfig;
16+
import software.amazon.cryptography.dbencryptionsdk.dynamodb.model.DynamoDbTableEncryptionConfig;
17+
import software.amazon.cryptography.dbencryptionsdk.dynamodb.model.DynamoDbTablesEncryptionConfig;
18+
import software.amazon.cryptography.dbencryptionsdk.dynamodb.model.GetBranchKeyIdFromDdbKeyOutput;
19+
import software.amazon.cryptography.keystore.KeyStore;
20+
import software.amazon.cryptography.keystore.model.CreateKeyStoreInput;
21+
import software.amazon.cryptography.keystore.model.KMSConfiguration;
22+
import software.amazon.cryptography.keystore.model.KeyStoreConfig;
23+
import software.amazon.cryptography.materialproviders.IBranchKeyIdSupplier;
24+
import software.amazon.cryptography.materialproviders.IKeyring;
25+
import software.amazon.cryptography.materialproviders.MaterialProviders;
26+
import software.amazon.cryptography.materialproviders.model.CreateAwsKmsHierarchicalKeyringInput;
27+
import software.amazon.cryptography.materialproviders.model.MaterialProvidersConfig;
2928

3029
import java.util.HashMap;
3130
import java.util.Map;
3231

33-
import static software.aws.cryptography.performance.itemencryptor.TestConstants.DATA_TO_ENCRYPT;
3432
import static software.aws.cryptography.performance.itemencryptor.TestConstants.KMS_KEY_ARN;
3533
import static software.aws.cryptography.performance.itemencryptor.TestConstants.PARTITION_ATTRIBUTE;
3634
import static software.aws.cryptography.performance.itemencryptor.TestConstants.SORT_ATTRIBUTE;
@@ -58,7 +56,9 @@ protected IKeyring createKeyring() {
5856

5957
final KeyStoreConfig keyStoreConfig = KeyStoreConfig.builder()
6058
.ddbTableName(TEST_KEYSTORE_NAME)
61-
.kmsKeyArn(KMS_KEY_ARN)
59+
.kmsConfiguration(KMSConfiguration.builder()
60+
.kmsKeyArn(KMS_KEY_ARN)
61+
.build())
6262
.kmsClient(kmsClient)
6363
.ddbClient(dynamoDbClient)
6464
.build();
@@ -71,18 +71,18 @@ protected IKeyring createKeyring() {
7171
final String tenant2BranchKey = keystore.CreateKey().branchKeyIdentifier();
7272

7373
ddbEnc = DynamoDbEncryption.builder()
74-
.DynamoDbEncryptionConfig(DynamoDbEncryptionConfig.builder().build()).build();
74+
.DynamoDbEncryptionConfig(DynamoDbEncryptionConfig.builder().build()).build();
7575

7676
final IBranchKeyIdSupplier branchKeyIdSupplier = ddbEnc.CreateDynamoDbEncryptionBranchKeyIdSupplier(
77-
CreateDynamoDbEncryptionBranchKeyIdSupplierInput.builder()
78-
.ddbKeyBranchKeyIdSupplier((getBranchKeyIdFromDdbKeyInput) -> {
77+
CreateDynamoDbEncryptionBranchKeyIdSupplierInput.builder()
78+
.ddbKeyBranchKeyIdSupplier((getBranchKeyIdFromDdbKeyInput) -> {
7979
String tenantKeyId = getBranchKeyIdFromDdbKeyInput.ddbKey().get(PARTITION_ATTRIBUTE).s();
8080
if (tenantKeyId.equals(TEST_PK)) {
8181
return GetBranchKeyIdFromDdbKeyOutput.builder().branchKeyId(tenant1BranchKey).build();
8282
}
8383
return GetBranchKeyIdFromDdbKeyOutput.builder().branchKeyId(tenant2BranchKey).build();
8484
})
85-
.build())
85+
.build())
8686
.branchKeyIdSupplier();
8787

8888

@@ -106,9 +106,9 @@ public void setup() throws Exception {
106106
.logicalTableName(TEST_DDB_TABLE_NAME)
107107
.partitionKeyName(PARTITION_ATTRIBUTE)
108108
.sortKeyName(SORT_ATTRIBUTE)
109-
.attributeActions(getAttributeActions(plainTextAttribute))
109+
.attributeActionsOnEncrypt(getAttributeActions(plainTextAttribute))
110110
.keyring(createKeyring())
111-
.allowedUnauthenticatedAttributePrefix(UNAUTH_PREFIX)
111+
.allowedUnsignedAttributePrefix(UNAUTH_PREFIX)
112112
.build();
113113
tableConfigs.put(TEST_DDB_TABLE_NAME, config);
114114

PerfTest/runtimes/java/DynamoDbEncryption/src/main/java/software/aws/cryptography/performance/itemencryptor/v3/LegacyConfigTest.java

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -4,17 +4,17 @@
44
import com.amazonaws.services.dynamodbv2.datamodeling.encryption.providers.WrappedMaterialsProvider;
55
import com.fasterxml.jackson.databind.JsonNode;
66
import software.amazon.awssdk.services.dynamodb.model.AttributeValue;
7-
import software.amazon.cryptography.dynamoDbEncryption.itemEncryptor.DynamoDbItemEncryptor;
8-
import software.amazon.cryptography.dynamoDbEncryption.itemEncryptor.model.DynamoDbItemEncryptorConfig;
9-
import software.amazon.cryptography.dynamoDbEncryption.model.LegacyConfig;
10-
import software.amazon.cryptography.dynamoDbEncryption.model.LegacyPolicy;
11-
import software.amazon.cryptography.materialProviders.IKeyring;
12-
import software.amazon.cryptography.materialProviders.MaterialProviders;
13-
import software.amazon.cryptography.materialProviders.model.AesWrappingAlg;
14-
import software.amazon.cryptography.materialProviders.model.CreateRawAesKeyringInput;
15-
import software.amazon.cryptography.materialProviders.model.DBEAlgorithmSuiteId;
16-
import software.amazon.cryptography.materialProviders.model.MaterialProvidersConfig;
17-
import software.amazon.cryptography.structuredEncryption.model.CryptoAction;
7+
import software.amazon.cryptography.dbencryptionsdk.dynamodb.itemencryptor.DynamoDbItemEncryptor;
8+
import software.amazon.cryptography.dbencryptionsdk.dynamodb.itemencryptor.model.DynamoDbItemEncryptorConfig;
9+
import software.amazon.cryptography.dbencryptionsdk.dynamodb.model.LegacyOverride;
10+
import software.amazon.cryptography.dbencryptionsdk.dynamodb.model.LegacyPolicy;
11+
import software.amazon.cryptography.dbencryptionsdk.structuredencryption.model.CryptoAction;
12+
import software.amazon.cryptography.materialproviders.IKeyring;
13+
import software.amazon.cryptography.materialproviders.MaterialProviders;
14+
import software.amazon.cryptography.materialproviders.model.AesWrappingAlg;
15+
import software.amazon.cryptography.materialproviders.model.CreateRawAesKeyringInput;
16+
import software.amazon.cryptography.materialproviders.model.DBEAlgorithmSuiteId;
17+
import software.amazon.cryptography.materialproviders.model.MaterialProvidersConfig;
1818

1919
import javax.crypto.SecretKey;
2020
import javax.crypto.spec.SecretKeySpec;
@@ -62,20 +62,20 @@ public void setup() throws Exception {
6262
}
6363
}
6464

65-
final LegacyConfig legacyConfig = LegacyConfig
65+
final LegacyOverride legacyConfig = LegacyOverride
6666
.builder()
6767
.encryptor(DynamoDBEncryptor.getInstance(createLegacyMaterialProvider()))
68-
.policy(LegacyPolicy.REQUIRE_ENCRYPT_ALLOW_DECRYPT)
69-
.attributeFlags(legacyActions)
68+
.policy(LegacyPolicy.FORBID_LEGACY_ENCRYPT_ALLOW_LEGACY_DECRYPT)
69+
.attributeActionsOnEncrypt(legacyActions)
7070
.build();
7171

7272
final DynamoDbItemEncryptorConfig config = DynamoDbItemEncryptorConfig.builder().logicalTableName(TEST_TABLE)
7373
.partitionKeyName(PARTITION_ATTRIBUTE)
7474
.sortKeyName(SORT_ATTRIBUTE)
75-
.attributeActions(getAttributeActions(plainTextAttribute))
75+
.attributeActionsOnEncrypt(getAttributeActions(plainTextAttribute))
7676
.keyring(createKeyring())
77-
.legacyConfig(legacyConfig)
78-
.allowedUnauthenticatedAttributePrefix(UNAUTH_PREFIX)
77+
.legacyOverride(legacyConfig)
78+
.allowedUnsignedAttributePrefix(UNAUTH_PREFIX)
7979
.algorithmSuiteId(DBEAlgorithmSuiteId.ALG_AES_256_GCM_HKDF_SHA512_COMMIT_KEY_SYMSIG_HMAC_SHA384)
8080
.build();
8181
dynamoDbItemEncryptor = DynamoDbItemEncryptor.builder().DynamoDbItemEncryptorConfig(config)

PerfTest/runtimes/java/DynamoDbEncryption/src/main/java/software/aws/cryptography/performance/itemencryptor/v3/RawAesKeyringTest.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
package software.aws.cryptography.performance.itemencryptor.v3;
22

3-
import software.amazon.cryptography.materialProviders.IKeyring;
4-
import software.amazon.cryptography.materialProviders.MaterialProviders;
5-
import software.amazon.cryptography.materialProviders.model.AesWrappingAlg;
6-
import software.amazon.cryptography.materialProviders.model.CreateRawAesKeyringInput;
7-
import software.amazon.cryptography.materialProviders.model.MaterialProvidersConfig;
3+
import software.amazon.cryptography.materialproviders.IKeyring;
4+
import software.amazon.cryptography.materialproviders.MaterialProviders;
5+
import software.amazon.cryptography.materialproviders.model.AesWrappingAlg;
6+
import software.amazon.cryptography.materialproviders.model.CreateRawAesKeyringInput;
7+
import software.amazon.cryptography.materialproviders.model.MaterialProvidersConfig;
88

99
import java.nio.ByteBuffer;
1010

0 commit comments

Comments
 (0)