Skip to content

Commit a5a4aca

Browse files
committed
fix: allow multi-tenant queries with allow_plaintext
1 parent 86406f5 commit a5a4aca

File tree

2 files changed

+6
-5
lines changed

2 files changed

+6
-5
lines changed

DynamoDbEncryption/dafny/DynamoDbEncryptionTransforms/src/QueryTransform.dfy

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -90,10 +90,10 @@ module QueryTransform {
9090
//# with the resulting decrypted [DynamoDB Item](./decrypt-item.md#dynamodb-item-1).
9191
var decryptInput := EncTypes.DecryptItemInput(encryptedItem := encryptedItems[x]);
9292
var decryptRes := tableConfig.itemEncryptor.DecryptItem(decryptInput);
93-
9493
var decrypted :- MapError(decryptRes);
95-
if keyId.KeyId? {
96-
:- Need(decrypted.parsedHeader.Some?, E("Decrypted query result has no parsed header."));
94+
95+
// No parsed header is ok, because it means ALLOW_PLAINTEXT_READ and a plain text item
96+
if keyId.KeyId? && decrypted.parsedHeader.Some? {
9797
:- Need(|decrypted.parsedHeader.value.encryptedDataKeys| == 1, E("Query result has more than one Encrypted Data Key"));
9898
if decrypted.parsedHeader.value.encryptedDataKeys[0].keyProviderInfo == keyIdUtf8 {
9999
decryptedItems := decryptedItems + [decrypted.plaintextItem];

DynamoDbEncryption/dafny/DynamoDbEncryptionTransforms/src/ScanTransform.dfy

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -88,9 +88,10 @@ module ScanTransform {
8888

8989
var decryptInput := EncTypes.DecryptItemInput(encryptedItem := encryptedItems[x]);
9090
var decryptRes := tableConfig.itemEncryptor.DecryptItem(decryptInput);
91-
9291
var decrypted :- MapError(decryptRes);
93-
if keyId.KeyId? {
92+
93+
// No parsed header is ok, because it means ALLOW_PLAINTEXT_READ and a plain text item
94+
if keyId.KeyId? && decrypted.parsedHeader.Some? {
9495
:- Need(decrypted.parsedHeader.Some?, E("Decrypted scan result has no parsed header."));
9596
:- Need(|decrypted.parsedHeader.value.encryptedDataKeys| == 1, E("Scan result has more than one Encrypted Data Key"));
9697
if decrypted.parsedHeader.value.encryptedDataKeys[0].keyProviderInfo == keyIdUtf8 {

0 commit comments

Comments
 (0)