S2T
S2T

Reputation: 3

No Configured Keyring was able to decrypt the Data Key. The list of encountered Exceptions is available via `list`

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

Answers (0)

Related Questions