diff --git a/src/main/java/com/amazonaws/encryptionsdk/CryptoResult.java b/src/main/java/com/amazonaws/encryptionsdk/CryptoResult.java index 61f38fc2..6b569ea7 100644 --- a/src/main/java/com/amazonaws/encryptionsdk/CryptoResult.java +++ b/src/main/java/com/amazonaws/encryptionsdk/CryptoResult.java @@ -69,6 +69,7 @@ public List getMasterKeys() { } /** Convenience method for retrieving the keyIds in the results from {@link #getMasterKeys()}. */ + @Deprecated public List getMasterKeyIds() { final List result = new ArrayList<>(masterKeys_.size()); for (final MasterKey mk : masterKeys_) { diff --git a/src/main/java/com/amazonaws/encryptionsdk/internal/DecryptionHandler.java b/src/main/java/com/amazonaws/encryptionsdk/internal/DecryptionHandler.java index 591e8805..09ee898d 100644 --- a/src/main/java/com/amazonaws/encryptionsdk/internal/DecryptionHandler.java +++ b/src/main/java/com/amazonaws/encryptionsdk/internal/DecryptionHandler.java @@ -890,7 +890,9 @@ public CiphertextHeaders getHeaders() { @Override public List getMasterKeys() { - return Collections.singletonList(dataKey_.getMasterKey()); + return dataKey_.getMasterKey() == null + ? Collections.emptyList() + : Collections.singletonList(dataKey_.getMasterKey()); } @Override diff --git a/src/test/java/com/amazonaws/encryptionsdk/AwsCryptoIntegrationTest.java b/src/test/java/com/amazonaws/encryptionsdk/AwsCryptoIntegrationTest.java index e414c50b..06a9e77e 100644 --- a/src/test/java/com/amazonaws/encryptionsdk/AwsCryptoIntegrationTest.java +++ b/src/test/java/com/amazonaws/encryptionsdk/AwsCryptoIntegrationTest.java @@ -113,21 +113,21 @@ public void AwsKmsEncryptDecryptKeyring() { crypto.encryptData(kmsKeyring, EXAMPLE_DATA, encryptionContext); List masterKeys = encryptResult.getMasterKeys(); + List masterKeyIds = encryptResult.getMasterKeyIds(); // Assert CryptoResult returns empty list if keyrings are used. - assert masterKeys.size() == 0; + assert masterKeys.isEmpty(); + assert masterKeyIds.isEmpty(); final byte[] ciphertext = encryptResult.getResult(); // Decrypt the data - final CryptoResult decryptResult = crypto.decryptData(kmsKeyring, ciphertext); - assert masterKeys.size() == 0; - - // Verify that the encryption context in the result contains the - // encryption context supplied to the encryptData method. - if (!encryptionContext.entrySet().stream() - .allMatch(e -> e.getValue().equals(decryptResult.getEncryptionContext().get(e.getKey())))) { - throw new IllegalStateException("Wrong Encryption Context!"); - } + final CryptoResult decryptResult = + crypto.decryptData(kmsKeyring, ciphertext, encryptionContext); + masterKeys = decryptResult.getMasterKeys(); + masterKeyIds = decryptResult.getMasterKeyIds(); + // Assert CryptoResult returns empty list if keyrings are used. + assert masterKeys.isEmpty(); + assert masterKeyIds.isEmpty(); // Verify that the decrypted plaintext matches the original plaintext assert Arrays.equals(decryptResult.getResult(), EXAMPLE_DATA);