Skip to content

Commit 88c597c

Browse files
chore: add user agent string (#2172)
1 parent 321f8d5 commit 88c597c

2 files changed

Lines changed: 36 additions & 2 deletions

File tree

DynamoDbEncryption/runtimes/java/src/main/sdkv2/com/amazonaws/services/dynamodbv2/datamodeling/sdkv2/encryption/providers/DirectKmsMaterialProvider.java

Lines changed: 32 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
import static com.amazonaws.services.dynamodbv2.datamodeling.sdkv2.encryption.materials.WrappedRawMaterials.CONTENT_KEY_ALGORITHM;
1818
import static com.amazonaws.services.dynamodbv2.datamodeling.sdkv2.encryption.materials.WrappedRawMaterials.ENVELOPE_KEY;
1919
import static com.amazonaws.services.dynamodbv2.datamodeling.sdkv2.encryption.materials.WrappedRawMaterials.KEY_WRAPPING_ALGORITHM;
20+
import static com.amazonaws.services.dynamodbv2.datamodeling.sdkv2.internal.Utils.loadVersion;
2021

2122
import com.amazonaws.services.dynamodbv2.datamodeling.sdkv2.encryption.EncryptionContext;
2223
import com.amazonaws.services.dynamodbv2.datamodeling.sdkv2.encryption.exceptions.DynamoDbEncryptionException;
@@ -33,6 +34,8 @@
3334
import java.util.Map;
3435
import javax.crypto.SecretKey;
3536
import javax.crypto.spec.SecretKeySpec;
37+
import software.amazon.awssdk.awscore.AwsRequestOverrideConfiguration;
38+
import software.amazon.awssdk.core.ApiName;
3639
import software.amazon.awssdk.core.SdkBytes;
3740
import software.amazon.awssdk.services.dynamodb.model.AttributeValue;
3841
import software.amazon.awssdk.services.kms.KmsClient;
@@ -51,6 +54,8 @@
5154
*/
5255
public class DirectKmsMaterialProvider implements EncryptionMaterialsProvider {
5356

57+
private static final String USER_AGENT = "DynamodbEncryptionSdkJava/";
58+
5459
private static final String COVERED_ATTR_CTX_KEY = "aws-kms-ec-attr";
5560
private static final String SIGNING_KEY_ALGORITHM = "amzn-ddb-sig-alg";
5661
private static final String TABLE_NAME_EC_KEY = "*aws-kms-table*";
@@ -288,7 +293,7 @@ protected DecryptResponse decrypt(
288293
final DecryptRequest request,
289294
final EncryptionContext context
290295
) {
291-
return kms.decrypt(request);
296+
return kms.decrypt(appendUserAgent(request));
292297
}
293298

294299
/**
@@ -305,7 +310,7 @@ protected GenerateDataKeyResponse generateDataKey(
305310
final GenerateDataKeyRequest request,
306311
final EncryptionContext context
307312
) {
308-
return kms.generateDataKey(request);
313+
return kms.generateDataKey(appendUserAgent(request));
309314
}
310315

311316
/**
@@ -384,4 +389,29 @@ private static void populateKmsEcFromEc(
384389
public void refresh() {
385390
// No action needed
386391
}
392+
393+
private static AwsRequestOverrideConfiguration userAgentOverrideConfig() {
394+
return AwsRequestOverrideConfiguration
395+
.builder()
396+
.addApiName(
397+
ApiName.builder().name(USER_AGENT).version(loadVersion()).build()
398+
)
399+
.build();
400+
}
401+
402+
private static DecryptRequest appendUserAgent(final DecryptRequest request) {
403+
return request
404+
.toBuilder()
405+
.overrideConfiguration(userAgentOverrideConfig())
406+
.build();
407+
}
408+
409+
private static GenerateDataKeyRequest appendUserAgent(
410+
final GenerateDataKeyRequest request
411+
) {
412+
return request
413+
.toBuilder()
414+
.overrideConfiguration(userAgentOverrideConfig())
415+
.build();
416+
}
387417
}

DynamoDbEncryption/runtimes/java/src/main/sdkv2/com/amazonaws/services/dynamodbv2/datamodeling/sdkv2/internal/Utils.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,4 +38,8 @@ public static byte[] getRandom(int len) {
3838
getRng().nextBytes(result);
3939
return result;
4040
}
41+
42+
public static String loadVersion() {
43+
return "4.x-legacy";
44+
}
4145
}

0 commit comments

Comments
 (0)