Skip to content

Commit e95ab46

Browse files
Removed expect
1 parent f3e2e71 commit e95ab46

File tree

1 file changed

+14
-33
lines changed

1 file changed

+14
-33
lines changed

DynamoDbEncryption/dafny/DynamoDbEncryption/src/AwsCryptographyDbEncryptionSdkDynamoDbOperations.dfy

+14-33
Original file line numberDiff line numberDiff line change
@@ -45,19 +45,6 @@ module AwsCryptographyDbEncryptionSdkDynamoDbOperations refines AbstractAwsCrypt
4545
method GetEncryptedDataKeyDescription(config: InternalConfig, input: GetEncryptedDataKeyDescriptionInput)
4646
returns (output: Result<GetEncryptedDataKeyDescriptionOutput, Error>)
4747
ensures GetEncryptedDataKeyDescriptionEnsuresPublicly(input, output)
48-
ensures output.Success? ==> (
49-
match input.input {
50-
case plaintextItem(item) =>
51-
DynamoToStruct.ItemToStructured(item).Success?
52-
&& var extracted := DynamoToStruct.ItemToStructured(item).Extract();
53-
&& var keys := extracted.Keys;
54-
&& "aws_dbe_head" in DynamoToStruct.ItemToStructured(item).Extract()
55-
&& var header := DynamoToStruct.ItemToStructured(item).Extract()["aws_dbe_head"].content.Terminal.value;
56-
&& Header.PartialDeserialize(header).Success?
57-
case header(header) =>
58-
Header.PartialDeserialize(header).Success?
59-
}
60-
)
6148
{
6249
var header;
6350
match input.input
@@ -67,20 +54,16 @@ module AwsCryptographyDbEncryptionSdkDynamoDbOperations refines AbstractAwsCrypt
6754
:- Need("aws_dbe_head" in DynamoToStruct.ItemToStructured(plaintextItem).Extract(), E("aws_dbe_head is not present in the attribute map."));
6855
header := DynamoToStruct.ItemToStructured(plaintextItem).Extract()["aws_dbe_head"].content.Terminal.value;
6956
}
70-
case header(headeritem) =>
71-
header := headeritem;
57+
case header(headerItem) =>
58+
header := headerItem;
7259
}
73-
:- Need(Header.PartialDeserialize(header).Success?, E("Failed to deserialize header."));
74-
var deserializedHeader := Header.PartialDeserialize(header);
75-
var datakeys := deserializedHeader.Extract().dataKeys;
60+
var deserializedHeader :- Header.PartialDeserialize(header).MapFailure(e => E("Failed to deserialize header."));
61+
var datakeys := deserializedHeader.dataKeys;
7662
var list : EncryptedDataKeyDescriptionList := [];
7763
for i := 0 to |datakeys| {
7864
var singleDataKeyOutput : EncryptedDataKeyDescriptionOutput;
79-
80-
:- Need(UTF8.Decode(datakeys[i].keyProviderId).Success?, E("Failed to extract keyProviderId."));
81-
var extractedKeyProviderId := UTF8.Decode(datakeys[i].keyProviderId).Extract();
82-
83-
if |extractedKeyProviderId| < 7 || extractedKeyProviderId[0..7] != "aws-kms" {
65+
var extractedKeyProviderId :- UTF8.Decode(datakeys[i].keyProviderId).MapFailure(e => E(e));
66+
if !("aws-kms" < extractedKeyProviderId) {
8467
singleDataKeyOutput := EncryptedDataKeyDescriptionOutput(
8568
keyProviderId := extractedKeyProviderId,
8669
keyProviderInfo := None,
@@ -91,20 +74,19 @@ module AwsCryptographyDbEncryptionSdkDynamoDbOperations refines AbstractAwsCrypt
9174

9275
// Format flavor is either 0 or 1
9376
// https://github.com/aws/aws-database-encryption-sdk-dynamodb/blob/main/specification/structured-encryption/header.md#format-flavor
94-
:- Need(deserializedHeader.Extract().flavor == 0 || deserializedHeader.Extract().flavor == 1, E("Invalid format flavor."));
77+
:- Need(deserializedHeader.flavor == 0 || deserializedHeader.flavor == 1, E("Invalid format flavor."));
9578
var algorithmSuite;
96-
if deserializedHeader.Extract().flavor == 0{
79+
if deserializedHeader.flavor == 0{
9780
algorithmSuite := AlgorithmSuites.DBE_ALG_AES_256_GCM_HKDF_SHA512_COMMIT_KEY_SYMSIG_HMAC_SHA384;
9881
} else {
9982
algorithmSuite := AlgorithmSuites.DBE_ALG_AES_256_GCM_HKDF_SHA512_COMMIT_KEY_ECDSA_P384_SYMSIG_HMAC_SHA384;
10083
}
10184

10285
:- Need(UTF8.Decode(datakeys[i].keyProviderInfo).Success?, E("Failed to extract keyProviderInfo."));
103-
var extractedKeyProviderIdInfo := UTF8.Decode(datakeys[i].keyProviderInfo).Extract();
86+
var extractedKeyProviderIdInfo := UTF8.Decode(datakeys[i].keyProviderInfo).MapFailure(e => E("Failed to deserialize header."));
10487

10588
if extractedKeyProviderId == "aws-kms-hierarchy" {
106-
:- Need(EdkWrapping.GetProviderWrappedMaterial(datakeys[i].ciphertext, algorithmSuite).Success?, E("Failed to get provider wrapped material."));
107-
var providerWrappedMaterial := EdkWrapping.GetProviderWrappedMaterial(datakeys[i].ciphertext, algorithmSuite).Extract();
89+
var providerWrappedMaterial :- EdkWrapping.GetProviderWrappedMaterial(datakeys[i].ciphertext, algorithmSuite).MapFailure(e => E("Failed to get provider wrapped material" ));
10890

10991
// The ciphertext structure in the hierarchy keyring contains Salt and IV before Version.
11092
// The length of Salt is 16 and IV is 12 bytes. The length of Version is 16 bytes.
@@ -114,19 +96,18 @@ module AwsCryptographyDbEncryptionSdkDynamoDbOperations refines AbstractAwsCrypt
11496
:- Need(EDK_CIPHERTEXT_BRANCH_KEY_VERSION_INDEX < EDK_CIPHERTEXT_VERSION_INDEX, E("Wrong branch key version index."));
11597
:- Need(|providerWrappedMaterial| >= EDK_CIPHERTEXT_VERSION_INDEX, E("Incorrect ciphertext structure length."));
11698
var branchKeyVersionUuid := providerWrappedMaterial[EDK_CIPHERTEXT_BRANCH_KEY_VERSION_INDEX .. EDK_CIPHERTEXT_VERSION_INDEX];
117-
:- Need(UUID.FromByteArray(branchKeyVersionUuid).Success?, E("Failed to convert UUID from byte array."));
118-
var expectedBranchKeyVersion := UUID.FromByteArray(branchKeyVersionUuid).Extract();
99+
var expectedBranchKeyVersion :- UUID.FromByteArray(branchKeyVersionUuid).MapFailure(e => E("Failed to convert UUID from byte array."));
119100
singleDataKeyOutput := EncryptedDataKeyDescriptionOutput(
120101
keyProviderId := extractedKeyProviderId,
121-
keyProviderInfo := Some(extractedKeyProviderIdInfo),
122-
branchKeyId := Some(extractedKeyProviderIdInfo),
102+
keyProviderInfo := Some(extractedKeyProviderIdInfo.value),
103+
branchKeyId := Some(extractedKeyProviderIdInfo.value),
123104
branchKeyVersion := Some(expectedBranchKeyVersion)
124105
);
125106
}
126107
else {
127108
singleDataKeyOutput := EncryptedDataKeyDescriptionOutput(
128109
keyProviderId := extractedKeyProviderId,
129-
keyProviderInfo := Some(extractedKeyProviderIdInfo),
110+
keyProviderInfo := Some(extractedKeyProviderIdInfo.value),
130111
branchKeyId := None,
131112
branchKeyVersion := None
132113
);

0 commit comments

Comments
 (0)