Reputation: 3
I am getting an error when I try to decrypt the data which is encrypted by AWS KMS.
Able to encrypt the data without any issue but while decrypting getting the error.
Error: No Configured Keyring was able to decrypt the Data Key. The list of encountered Exceptions is available via list
.
Please find below the java code
keyArn = "arn of ny aws kms key";
plaintext = "Text to encrypt";
final AwsCrypto crypto = AwsCrypto.builder()
.withCommitmentPolicy(CommitmentPolicy.RequireEncryptRequireDecrypt)
.build(); System.out.println("MaterialProvidersConfig.builder().build():"+MaterialProvidersConfig.builder().build());
final MaterialProviders materialProviders = MaterialProviders.builder()
.MaterialProvidersConfig(MaterialProvidersConfig.builder().build())
.build();
final CreateAwsKmsMultiKeyringInput keyringInput =
CreateAwsKmsMultiKeyringInput.builder().generator(keyArn).build();
final IKeyring kmsKeyring = materialProviders.CreateAwsKmsMultiKeyring(keyringInput);
// Encrypt the data
final CryptoResult<byte[], ?> encryptResult = crypto.encryptData(kmsKeyring, plaintext.getBytes(StandardCharsets.UTF_8));
final byte[] ciphertext = encryptResult.getResult();
System.out.println("Ciphertext: " + Arrays.toString(ciphertext));
String base64Ciphertext = Base64.getEncoder().encodeToString(ciphertext);
System.out.println(base64Ciphertext);
// Decrypt the data
final CryptoResult<byte[], ?> decryptResult =
crypto.decryptData(
kmsKeyring,
ciphertext
);
assert Arrays.equals(decryptResult.getResult(), plaintext.getBytes(StandardCharsets.UTF_8));
// The data is correct, so return it.
System.out.println("Decrypted: " + new String(decryptResult.getResult(), StandardCharsets.UTF_8));
Full Error message:
Exception in thread "main" software.amazon.cryptography.materialproviders.model.CollectionOfErrors: No Configured Keyring was able to decrypt the Data Key. The list of encountered Exceptions is available via `list`.
at software.amazon.cryptography.materialproviders.model.CollectionOfErrors$BuilderImpl.build(CollectionOfErrors.java:136)
at software.amazon.cryptography.materialproviders.ToNative.Error(ToNative.java:129)
at software.amazon.cryptography.materialproviders.ToNative.Error(ToNative.java:232)
at software.amazon.cryptography.materialproviders.CryptographicMaterialsManager.DecryptMaterials(CryptographicMaterialsManager.java:48)
at com.amazonaws.encryptionsdk.CMMHandler.decryptMaterials(CMMHandler.java:100)
at com.amazonaws.encryptionsdk.internal.DecryptionHandler.readHeaderFields(DecryptionHandler.java:796)
at com.amazonaws.encryptionsdk.internal.DecryptionHandler.<init>(DecryptionHandler.java:143)
at com.amazonaws.encryptionsdk.internal.DecryptionHandler.create(DecryptionHandler.java:465)
at com.amazonaws.encryptionsdk.AwsCrypto.decryptData(AwsCrypto.java:822)
at com.amazonaws.encryptionsdk.AwsCrypto.decryptData(AwsCrypto.java:768)
at com.amazonaws.encryptionsdk.AwsCrypto.decryptData(AwsCrypto.java:759)
at com.amazonaws.encryptionsdk.AwsCrypto.decryptData(AwsCrypto.java:734)
at com.amazonaws.encryptionsdk.keyrings.StringExample.main(StringExample.java:67)
Upvotes: 0
Views: 54