github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl@v0.2.0/DDBKeystoreOperations/DDBKeystoreOperations.go (about) 1 // Package DDBKeystoreOperations 2 // Dafny module DDBKeystoreOperations compiled into Go 3 4 package DDBKeystoreOperations 5 6 import ( 7 os "os" 8 9 m_ComAmazonawsDynamodbTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/dynamodb/ComAmazonawsDynamodbTypes" 10 m_ComAmazonawsKmsTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/kms/ComAmazonawsKmsTypes" 11 m_AwsArnParsing "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsArnParsing" 12 m_AwsCryptographyKeyStoreTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyKeyStoreTypes" 13 m_AwsCryptographyMaterialProvidersTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyMaterialProvidersTypes" 14 m_AwsKmsMrkMatchForDecrypt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkMatchForDecrypt" 15 m_AwsKmsUtils "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsUtils" 16 m_KMSKeystoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KMSKeystoreOperations" 17 m_KeyStoreErrorMessages "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KeyStoreErrorMessages" 18 m_KmsArn "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KmsArn" 19 m_Structure "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Structure" 20 m_AtomicPrimitives "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AtomicPrimitives" 21 m_AwsCryptographyPrimitivesOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AwsCryptographyPrimitivesOperations" 22 m_AwsCryptographyPrimitivesTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AwsCryptographyPrimitivesTypes" 23 m_Digest "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/Digest" 24 m_HKDF "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/HKDF" 25 m_KdfCtr "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/KdfCtr" 26 m_Random "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/Random" 27 m_WrappedHKDF "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/WrappedHKDF" 28 m_WrappedHMAC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/WrappedHMAC" 29 m_Actions "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Actions" 30 m_Base64 "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Base64" 31 m_Base64Lemmas "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Base64Lemmas" 32 m_BoundedInts "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/BoundedInts" 33 m_DivInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivInternals" 34 m_DivInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivInternalsNonlinear" 35 m_DivMod "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivMod" 36 m_FileIO "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/FileIO" 37 m_FloatCompare "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/FloatCompare" 38 m_Functions "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Functions" 39 m_GeneralInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/GeneralInternals" 40 m_GetOpt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/GetOpt" 41 m_HexStrings "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/HexStrings" 42 m_Logarithm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Logarithm" 43 m__Math "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Math_" 44 m_ModInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/ModInternals" 45 m_ModInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/ModInternalsNonlinear" 46 m_Mul "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Mul" 47 m_MulInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/MulInternals" 48 m_MulInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/MulInternalsNonlinear" 49 m_Power "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Power" 50 m_Relations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Relations" 51 m_Seq "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Seq" 52 m_Seq_MergeSort "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Seq_MergeSort" 53 m_Sorting "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Sorting" 54 m_StandardLibrary "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary" 55 m_StandardLibraryInterop "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibraryInterop" 56 m_StandardLibrary_Sequence "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_Sequence" 57 m_StandardLibrary_String "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_String" 58 m_StandardLibrary_UInt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_UInt" 59 m_Streams "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Streams" 60 m_UnicodeStrings "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/UnicodeStrings" 61 m__Unicode "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Unicode_" 62 m_Utf16EncodingForm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Utf16EncodingForm" 63 m_Utf8EncodingForm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Utf8EncodingForm" 64 m_Wrappers "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Wrappers" 65 m__System "github.com/dafny-lang/DafnyRuntimeGo/v4/System_" 66 _dafny "github.com/dafny-lang/DafnyRuntimeGo/v4/dafny" 67 ) 68 69 var _ = os.Args 70 var _ _dafny.Dummy__ 71 var _ m__System.Dummy__ 72 var _ m_Wrappers.Dummy__ 73 var _ m_BoundedInts.Dummy__ 74 var _ m_StandardLibrary_UInt.Dummy__ 75 var _ m_StandardLibrary_Sequence.Dummy__ 76 var _ m_StandardLibrary_String.Dummy__ 77 var _ m_StandardLibrary.Dummy__ 78 var _ m_AwsCryptographyPrimitivesTypes.Dummy__ 79 var _ m_Random.Dummy__ 80 var _ m_Digest.Dummy__ 81 var _ m_WrappedHMAC.Dummy__ 82 var _ m_HKDF.Dummy__ 83 var _ m_WrappedHKDF.Dummy__ 84 var _ m_KdfCtr.Dummy__ 85 var _ m_AwsCryptographyPrimitivesOperations.Dummy__ 86 var _ m_AtomicPrimitives.Dummy__ 87 var _ m_ComAmazonawsDynamodbTypes.Dummy__ 88 var _ m_ComAmazonawsKmsTypes.Dummy__ 89 var _ m_Relations.Dummy__ 90 var _ m_Seq_MergeSort.Dummy__ 91 var _ m__Math.Dummy__ 92 var _ m_Seq.Dummy__ 93 var _ m__Unicode.Dummy__ 94 var _ m_Functions.Dummy__ 95 var _ m_Utf8EncodingForm.Dummy__ 96 var _ m_Utf16EncodingForm.Dummy__ 97 var _ m_UnicodeStrings.Dummy__ 98 var _ m_FileIO.Dummy__ 99 var _ m_GeneralInternals.Dummy__ 100 var _ m_MulInternalsNonlinear.Dummy__ 101 var _ m_MulInternals.Dummy__ 102 var _ m_Mul.Dummy__ 103 var _ m_ModInternalsNonlinear.Dummy__ 104 var _ m_DivInternalsNonlinear.Dummy__ 105 var _ m_ModInternals.Dummy__ 106 var _ m_DivInternals.Dummy__ 107 var _ m_DivMod.Dummy__ 108 var _ m_Power.Dummy__ 109 var _ m_Logarithm.Dummy__ 110 var _ m_StandardLibraryInterop.Dummy__ 111 var _ m_Streams.Dummy__ 112 var _ m_Sorting.Dummy__ 113 var _ m_HexStrings.Dummy__ 114 var _ m_GetOpt.Dummy__ 115 var _ m_FloatCompare.Dummy__ 116 var _ m_Base64.Dummy__ 117 var _ m_Base64Lemmas.Dummy__ 118 var _ m_Actions.Dummy__ 119 var _ m_AwsCryptographyKeyStoreTypes.Dummy__ 120 var _ m_AwsCryptographyMaterialProvidersTypes.Dummy__ 121 var _ m_AwsArnParsing.Dummy__ 122 var _ m_AwsKmsMrkMatchForDecrypt.Dummy__ 123 var _ m_AwsKmsUtils.Dummy__ 124 var _ m_KeyStoreErrorMessages.Dummy__ 125 var _ m_KmsArn.Dummy__ 126 var _ m_Structure.Dummy__ 127 var _ m_KMSKeystoreOperations.Dummy__ 128 129 type Dummy__ struct{} 130 131 // Definition of class Default__ 132 type Default__ struct { 133 dummy byte 134 } 135 136 func New_Default___() *Default__ { 137 _this := Default__{} 138 139 return &_this 140 } 141 142 type CompanionStruct_Default___ struct { 143 } 144 145 var Companion_Default___ = CompanionStruct_Default___{} 146 147 func (_this *Default__) Equals(other *Default__) bool { 148 return _this == other 149 } 150 151 func (_this *Default__) EqualsGeneric(x interface{}) bool { 152 other, ok := x.(*Default__) 153 return ok && _this.Equals(other) 154 } 155 156 func (*Default__) String() string { 157 return "DDBKeystoreOperations.Default__" 158 } 159 func (_this *Default__) ParentTraits_() []*_dafny.TraitID { 160 return [](*_dafny.TraitID){} 161 } 162 163 var _ _dafny.TraitOffspring = &Default__{} 164 165 func (_static *CompanionStruct_Default___) WriteNewKeyToStore(versionBranchKeyItem _dafny.Map, activeBranchKeyItem _dafny.Map, beaconKeyItem _dafny.Map, tableName _dafny.Sequence, ddbClient m_ComAmazonawsDynamodbTypes.IDynamoDBClient) m_Wrappers.Result { 166 var output m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(m_ComAmazonawsDynamodbTypes.Companion_TransactWriteItemsOutput_.Default()) 167 _ = output 168 var _0_items _dafny.Sequence 169 _ = _0_items 170 _0_items = _dafny.SeqOf(Companion_Default___.CreateTransactWritePutItem(versionBranchKeyItem, tableName, Companion_ConditionExpression_.Create_BRANCH__KEY__NOT__EXIST_()), Companion_Default___.CreateTransactWritePutItem(activeBranchKeyItem, tableName, Companion_ConditionExpression_.Create_BRANCH__KEY__NOT__EXIST_()), Companion_Default___.CreateTransactWritePutItem(beaconKeyItem, tableName, Companion_ConditionExpression_.Create_BRANCH__KEY__NOT__EXIST_())) 171 var _1_transactRequest m_ComAmazonawsDynamodbTypes.TransactWriteItemsInput 172 _ = _1_transactRequest 173 _1_transactRequest = m_ComAmazonawsDynamodbTypes.Companion_TransactWriteItemsInput_.Create_TransactWriteItemsInput_(_0_items, m_Wrappers.Companion_Option_.Create_None_(), m_Wrappers.Companion_Option_.Create_None_(), m_Wrappers.Companion_Option_.Create_None_()) 174 var _2_maybeTransactWriteResponse m_Wrappers.Result 175 _ = _2_maybeTransactWriteResponse 176 var _out0 m_Wrappers.Result 177 _ = _out0 178 _out0 = (ddbClient).TransactWriteItems(_1_transactRequest) 179 _2_maybeTransactWriteResponse = _out0 180 var _3_valueOrError0 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(m_ComAmazonawsDynamodbTypes.Companion_TransactWriteItemsOutput_.Default()) 181 _ = _3_valueOrError0 182 _3_valueOrError0 = (_2_maybeTransactWriteResponse).MapFailure(func(coer14 func(m_ComAmazonawsDynamodbTypes.Error) m_AwsCryptographyKeyStoreTypes.Error) func(interface{}) interface{} { 183 return func(arg14 interface{}) interface{} { 184 return coer14(arg14.(m_ComAmazonawsDynamodbTypes.Error)) 185 } 186 }(func(_4_e m_ComAmazonawsDynamodbTypes.Error) m_AwsCryptographyKeyStoreTypes.Error { 187 return m_AwsCryptographyKeyStoreTypes.Companion_Error_.Create_ComAmazonawsDynamodb_(_4_e) 188 })) 189 if (_3_valueOrError0).IsFailure() { 190 output = (_3_valueOrError0).PropagateFailure() 191 return output 192 } 193 var _5_transactWriteItemsResponse m_ComAmazonawsDynamodbTypes.TransactWriteItemsOutput 194 _ = _5_transactWriteItemsResponse 195 _5_transactWriteItemsResponse = (_3_valueOrError0).Extract().(m_ComAmazonawsDynamodbTypes.TransactWriteItemsOutput) 196 output = m_Wrappers.Companion_Result_.Create_Success_(_5_transactWriteItemsResponse) 197 return output 198 } 199 func (_static *CompanionStruct_Default___) WriteNewBranchKeyVersionToKeystore(versionBranchKeyItem _dafny.Map, activeBranchKeyItem _dafny.Map, tableName _dafny.Sequence, ddbClient m_ComAmazonawsDynamodbTypes.IDynamoDBClient) m_Wrappers.Result { 200 var output m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(m_ComAmazonawsDynamodbTypes.Companion_TransactWriteItemsOutput_.Default()) 201 _ = output 202 var _0_items _dafny.Sequence 203 _ = _0_items 204 _0_items = _dafny.SeqOf(Companion_Default___.CreateTransactWritePutItem(versionBranchKeyItem, tableName, Companion_ConditionExpression_.Create_BRANCH__KEY__NOT__EXIST_()), Companion_Default___.CreateTransactWritePutItem(activeBranchKeyItem, tableName, Companion_ConditionExpression_.Create_BRANCH__KEY__EXISTS_())) 205 var _1_transactRequest m_ComAmazonawsDynamodbTypes.TransactWriteItemsInput 206 _ = _1_transactRequest 207 _1_transactRequest = m_ComAmazonawsDynamodbTypes.Companion_TransactWriteItemsInput_.Create_TransactWriteItemsInput_(_0_items, m_Wrappers.Companion_Option_.Create_None_(), m_Wrappers.Companion_Option_.Create_None_(), m_Wrappers.Companion_Option_.Create_None_()) 208 var _2_maybeTransactWriteResponse m_Wrappers.Result 209 _ = _2_maybeTransactWriteResponse 210 var _out0 m_Wrappers.Result 211 _ = _out0 212 _out0 = (ddbClient).TransactWriteItems(_1_transactRequest) 213 _2_maybeTransactWriteResponse = _out0 214 var _3_valueOrError0 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(m_ComAmazonawsDynamodbTypes.Companion_TransactWriteItemsOutput_.Default()) 215 _ = _3_valueOrError0 216 _3_valueOrError0 = (_2_maybeTransactWriteResponse).MapFailure(func(coer15 func(m_ComAmazonawsDynamodbTypes.Error) m_AwsCryptographyKeyStoreTypes.Error) func(interface{}) interface{} { 217 return func(arg15 interface{}) interface{} { 218 return coer15(arg15.(m_ComAmazonawsDynamodbTypes.Error)) 219 } 220 }(func(_4_e m_ComAmazonawsDynamodbTypes.Error) m_AwsCryptographyKeyStoreTypes.Error { 221 return m_AwsCryptographyKeyStoreTypes.Companion_Error_.Create_ComAmazonawsDynamodb_(_4_e) 222 })) 223 if (_3_valueOrError0).IsFailure() { 224 output = (_3_valueOrError0).PropagateFailure() 225 return output 226 } 227 var _5_transactWriteItemsResponse m_ComAmazonawsDynamodbTypes.TransactWriteItemsOutput 228 _ = _5_transactWriteItemsResponse 229 _5_transactWriteItemsResponse = (_3_valueOrError0).Extract().(m_ComAmazonawsDynamodbTypes.TransactWriteItemsOutput) 230 output = m_Wrappers.Companion_Result_.Create_Success_(_5_transactWriteItemsResponse) 231 return output 232 } 233 func (_static *CompanionStruct_Default___) GetActiveBranchKeyItem(branchKeyIdentifier _dafny.Sequence, tableName _dafny.Sequence, ddbClient m_ComAmazonawsDynamodbTypes.IDynamoDBClient) m_Wrappers.Result { 234 var output m_Wrappers.Result = m_Wrappers.Result{} 235 _ = output 236 var _0_dynamoDbKey _dafny.Map 237 _ = _0_dynamoDbKey 238 _0_dynamoDbKey = _dafny.NewMapBuilder().ToMap().UpdateUnsafe(m_Structure.Companion_Default___.BRANCH__KEY__IDENTIFIER__FIELD(), m_ComAmazonawsDynamodbTypes.Companion_AttributeValue_.Create_S_(branchKeyIdentifier)).UpdateUnsafe(m_Structure.Companion_Default___.TYPE__FIELD(), m_ComAmazonawsDynamodbTypes.Companion_AttributeValue_.Create_S_(m_Structure.Companion_Default___.BRANCH__KEY__ACTIVE__TYPE())) 239 var _1_ItemRequest m_ComAmazonawsDynamodbTypes.GetItemInput 240 _ = _1_ItemRequest 241 _1_ItemRequest = m_ComAmazonawsDynamodbTypes.Companion_GetItemInput_.Create_GetItemInput_(tableName, _0_dynamoDbKey, m_Wrappers.Companion_Option_.Create_None_(), m_Wrappers.Companion_Option_.Create_None_(), m_Wrappers.Companion_Option_.Create_None_(), m_Wrappers.Companion_Option_.Create_None_(), m_Wrappers.Companion_Option_.Create_None_()) 242 var _2_maybeGetItem m_Wrappers.Result 243 _ = _2_maybeGetItem 244 var _out0 m_Wrappers.Result 245 _ = _out0 246 _out0 = (ddbClient).GetItem(_1_ItemRequest) 247 _2_maybeGetItem = _out0 248 var _3_valueOrError0 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(m_ComAmazonawsDynamodbTypes.Companion_GetItemOutput_.Default()) 249 _ = _3_valueOrError0 250 _3_valueOrError0 = (_2_maybeGetItem).MapFailure(func(coer16 func(m_ComAmazonawsDynamodbTypes.Error) m_AwsCryptographyKeyStoreTypes.Error) func(interface{}) interface{} { 251 return func(arg16 interface{}) interface{} { 252 return coer16(arg16.(m_ComAmazonawsDynamodbTypes.Error)) 253 } 254 }(func(_4_e m_ComAmazonawsDynamodbTypes.Error) m_AwsCryptographyKeyStoreTypes.Error { 255 return m_AwsCryptographyKeyStoreTypes.Companion_Error_.Create_ComAmazonawsDynamodb_(_4_e) 256 })) 257 if (_3_valueOrError0).IsFailure() { 258 output = (_3_valueOrError0).PropagateFailure() 259 return output 260 } 261 var _5_getItemResponse m_ComAmazonawsDynamodbTypes.GetItemOutput 262 _ = _5_getItemResponse 263 _5_getItemResponse = (_3_valueOrError0).Extract().(m_ComAmazonawsDynamodbTypes.GetItemOutput) 264 var _6_valueOrError1 m_Wrappers.Outcome = m_Wrappers.Companion_Outcome_.Default() 265 _ = _6_valueOrError1 266 _6_valueOrError1 = m_Wrappers.Companion_Default___.Need((((_5_getItemResponse).Dtor_Item()).Is_Some()) && (((((_5_getItemResponse).Dtor_Item()).Dtor_value().(_dafny.Map)).Cardinality()).Cmp(_dafny.One) >= 0), m_AwsCryptographyKeyStoreTypes.Companion_Error_.Create_KeyStoreException_(m_KeyStoreErrorMessages.Companion_Default___.NO__CORRESPONDING__BRANCH__KEY())) 267 if (_6_valueOrError1).IsFailure() { 268 output = (_6_valueOrError1).PropagateFailure() 269 return output 270 } 271 var _7_valueOrError2 m_Wrappers.Outcome = m_Wrappers.Companion_Outcome_.Default() 272 _ = _7_valueOrError2 273 _7_valueOrError2 = m_Wrappers.Companion_Default___.Need((m_Structure.Companion_Default___.ActiveBranchKeyItem_q(((_5_getItemResponse).Dtor_Item()).Dtor_value().(_dafny.Map))) && (_dafny.Companion_Sequence_.Equal(((((_5_getItemResponse).Dtor_Item()).Dtor_value().(_dafny.Map)).Get(m_Structure.Companion_Default___.BRANCH__KEY__IDENTIFIER__FIELD()).(m_ComAmazonawsDynamodbTypes.AttributeValue)).Dtor_S(), branchKeyIdentifier)), m_AwsCryptographyKeyStoreTypes.Companion_Error_.Create_KeyStoreException_(_dafny.SeqOfString("Item found is not a valid active branch key."))) 274 if (_7_valueOrError2).IsFailure() { 275 output = (_7_valueOrError2).PropagateFailure() 276 return output 277 } 278 output = m_Wrappers.Companion_Result_.Create_Success_(((_5_getItemResponse).Dtor_Item()).Dtor_value().(_dafny.Map)) 279 return output 280 } 281 func (_static *CompanionStruct_Default___) GetVersionBranchKeyItem(branchKeyIdentifier _dafny.Sequence, branchKeyVersion _dafny.Sequence, tableName _dafny.Sequence, ddbClient m_ComAmazonawsDynamodbTypes.IDynamoDBClient) m_Wrappers.Result { 282 var output m_Wrappers.Result = m_Wrappers.Result{} 283 _ = output 284 var _0_dynamoDbKey _dafny.Map 285 _ = _0_dynamoDbKey 286 _0_dynamoDbKey = _dafny.NewMapBuilder().ToMap().UpdateUnsafe(m_Structure.Companion_Default___.BRANCH__KEY__IDENTIFIER__FIELD(), m_ComAmazonawsDynamodbTypes.Companion_AttributeValue_.Create_S_(branchKeyIdentifier)).UpdateUnsafe(m_Structure.Companion_Default___.TYPE__FIELD(), m_ComAmazonawsDynamodbTypes.Companion_AttributeValue_.Create_S_(_dafny.Companion_Sequence_.Concatenate(m_Structure.Companion_Default___.BRANCH__KEY__TYPE__PREFIX(), branchKeyVersion))) 287 var _1_ItemRequest m_ComAmazonawsDynamodbTypes.GetItemInput 288 _ = _1_ItemRequest 289 _1_ItemRequest = m_ComAmazonawsDynamodbTypes.Companion_GetItemInput_.Create_GetItemInput_(tableName, _0_dynamoDbKey, m_Wrappers.Companion_Option_.Create_None_(), m_Wrappers.Companion_Option_.Create_None_(), m_Wrappers.Companion_Option_.Create_None_(), m_Wrappers.Companion_Option_.Create_None_(), m_Wrappers.Companion_Option_.Create_None_()) 290 var _2_maybeGetItem m_Wrappers.Result 291 _ = _2_maybeGetItem 292 var _out0 m_Wrappers.Result 293 _ = _out0 294 _out0 = (ddbClient).GetItem(_1_ItemRequest) 295 _2_maybeGetItem = _out0 296 var _3_valueOrError0 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(m_ComAmazonawsDynamodbTypes.Companion_GetItemOutput_.Default()) 297 _ = _3_valueOrError0 298 _3_valueOrError0 = (_2_maybeGetItem).MapFailure(func(coer17 func(m_ComAmazonawsDynamodbTypes.Error) m_AwsCryptographyKeyStoreTypes.Error) func(interface{}) interface{} { 299 return func(arg17 interface{}) interface{} { 300 return coer17(arg17.(m_ComAmazonawsDynamodbTypes.Error)) 301 } 302 }(func(_4_e m_ComAmazonawsDynamodbTypes.Error) m_AwsCryptographyKeyStoreTypes.Error { 303 return m_AwsCryptographyKeyStoreTypes.Companion_Error_.Create_ComAmazonawsDynamodb_(_4_e) 304 })) 305 if (_3_valueOrError0).IsFailure() { 306 output = (_3_valueOrError0).PropagateFailure() 307 return output 308 } 309 var _5_getItemResponse m_ComAmazonawsDynamodbTypes.GetItemOutput 310 _ = _5_getItemResponse 311 _5_getItemResponse = (_3_valueOrError0).Extract().(m_ComAmazonawsDynamodbTypes.GetItemOutput) 312 var _6_valueOrError1 m_Wrappers.Outcome = m_Wrappers.Companion_Outcome_.Default() 313 _ = _6_valueOrError1 314 _6_valueOrError1 = m_Wrappers.Companion_Default___.Need((((_5_getItemResponse).Dtor_Item()).Is_Some()) && (((((_5_getItemResponse).Dtor_Item()).Dtor_value().(_dafny.Map)).Cardinality()).Cmp(_dafny.One) >= 0), m_AwsCryptographyKeyStoreTypes.Companion_Error_.Create_KeyStoreException_(m_KeyStoreErrorMessages.Companion_Default___.NO__CORRESPONDING__BRANCH__KEY())) 315 if (_6_valueOrError1).IsFailure() { 316 output = (_6_valueOrError1).PropagateFailure() 317 return output 318 } 319 var _7_valueOrError2 m_Wrappers.Outcome = m_Wrappers.Companion_Outcome_.Default() 320 _ = _7_valueOrError2 321 _7_valueOrError2 = m_Wrappers.Companion_Default___.Need(((m_Structure.Companion_Default___.VersionBranchKeyItem_q(((_5_getItemResponse).Dtor_Item()).Dtor_value().(_dafny.Map))) && (_dafny.Companion_Sequence_.Equal(((((_5_getItemResponse).Dtor_Item()).Dtor_value().(_dafny.Map)).Get(m_Structure.Companion_Default___.BRANCH__KEY__IDENTIFIER__FIELD()).(m_ComAmazonawsDynamodbTypes.AttributeValue)).Dtor_S(), branchKeyIdentifier))) && (_dafny.Companion_Sequence_.Equal(((((_5_getItemResponse).Dtor_Item()).Dtor_value().(_dafny.Map)).Get(m_Structure.Companion_Default___.TYPE__FIELD()).(m_ComAmazonawsDynamodbTypes.AttributeValue)).Dtor_S(), _dafny.Companion_Sequence_.Concatenate(m_Structure.Companion_Default___.BRANCH__KEY__TYPE__PREFIX(), branchKeyVersion))), m_AwsCryptographyKeyStoreTypes.Companion_Error_.Create_KeyStoreException_(_dafny.SeqOfString("Item found is not a valid branch key version."))) 322 if (_7_valueOrError2).IsFailure() { 323 output = (_7_valueOrError2).PropagateFailure() 324 return output 325 } 326 output = m_Wrappers.Companion_Result_.Create_Success_(((_5_getItemResponse).Dtor_Item()).Dtor_value().(_dafny.Map)) 327 return output 328 } 329 func (_static *CompanionStruct_Default___) GetBeaconKeyItem(branchKeyIdentifier _dafny.Sequence, tableName _dafny.Sequence, ddbClient m_ComAmazonawsDynamodbTypes.IDynamoDBClient) m_Wrappers.Result { 330 var output m_Wrappers.Result = m_Wrappers.Result{} 331 _ = output 332 var _0_dynamoDbKey _dafny.Map 333 _ = _0_dynamoDbKey 334 _0_dynamoDbKey = _dafny.NewMapBuilder().ToMap().UpdateUnsafe(m_Structure.Companion_Default___.BRANCH__KEY__IDENTIFIER__FIELD(), m_ComAmazonawsDynamodbTypes.Companion_AttributeValue_.Create_S_(branchKeyIdentifier)).UpdateUnsafe(m_Structure.Companion_Default___.TYPE__FIELD(), m_ComAmazonawsDynamodbTypes.Companion_AttributeValue_.Create_S_(m_Structure.Companion_Default___.BEACON__KEY__TYPE__VALUE())) 335 var _1_ItemRequest m_ComAmazonawsDynamodbTypes.GetItemInput 336 _ = _1_ItemRequest 337 _1_ItemRequest = m_ComAmazonawsDynamodbTypes.Companion_GetItemInput_.Create_GetItemInput_(tableName, _0_dynamoDbKey, m_Wrappers.Companion_Option_.Create_None_(), m_Wrappers.Companion_Option_.Create_None_(), m_Wrappers.Companion_Option_.Create_None_(), m_Wrappers.Companion_Option_.Create_None_(), m_Wrappers.Companion_Option_.Create_None_()) 338 var _2_maybeGetItem m_Wrappers.Result 339 _ = _2_maybeGetItem 340 var _out0 m_Wrappers.Result 341 _ = _out0 342 _out0 = (ddbClient).GetItem(_1_ItemRequest) 343 _2_maybeGetItem = _out0 344 var _3_valueOrError0 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(m_ComAmazonawsDynamodbTypes.Companion_GetItemOutput_.Default()) 345 _ = _3_valueOrError0 346 _3_valueOrError0 = (_2_maybeGetItem).MapFailure(func(coer18 func(m_ComAmazonawsDynamodbTypes.Error) m_AwsCryptographyKeyStoreTypes.Error) func(interface{}) interface{} { 347 return func(arg18 interface{}) interface{} { 348 return coer18(arg18.(m_ComAmazonawsDynamodbTypes.Error)) 349 } 350 }(func(_4_e m_ComAmazonawsDynamodbTypes.Error) m_AwsCryptographyKeyStoreTypes.Error { 351 return m_AwsCryptographyKeyStoreTypes.Companion_Error_.Create_ComAmazonawsDynamodb_(_4_e) 352 })) 353 if (_3_valueOrError0).IsFailure() { 354 output = (_3_valueOrError0).PropagateFailure() 355 return output 356 } 357 var _5_getItemResponse m_ComAmazonawsDynamodbTypes.GetItemOutput 358 _ = _5_getItemResponse 359 _5_getItemResponse = (_3_valueOrError0).Extract().(m_ComAmazonawsDynamodbTypes.GetItemOutput) 360 var _6_valueOrError1 m_Wrappers.Outcome = m_Wrappers.Companion_Outcome_.Default() 361 _ = _6_valueOrError1 362 _6_valueOrError1 = m_Wrappers.Companion_Default___.Need((((_5_getItemResponse).Dtor_Item()).Is_Some()) && (((((_5_getItemResponse).Dtor_Item()).Dtor_value().(_dafny.Map)).Cardinality()).Cmp(_dafny.One) >= 0), m_AwsCryptographyKeyStoreTypes.Companion_Error_.Create_KeyStoreException_(m_KeyStoreErrorMessages.Companion_Default___.NO__CORRESPONDING__BRANCH__KEY())) 363 if (_6_valueOrError1).IsFailure() { 364 output = (_6_valueOrError1).PropagateFailure() 365 return output 366 } 367 var _7_valueOrError2 m_Wrappers.Outcome = m_Wrappers.Companion_Outcome_.Default() 368 _ = _7_valueOrError2 369 _7_valueOrError2 = m_Wrappers.Companion_Default___.Need((m_Structure.Companion_Default___.BeaconKeyItem_q(((_5_getItemResponse).Dtor_Item()).Dtor_value().(_dafny.Map))) && (_dafny.Companion_Sequence_.Equal(((((_5_getItemResponse).Dtor_Item()).Dtor_value().(_dafny.Map)).Get(m_Structure.Companion_Default___.BRANCH__KEY__IDENTIFIER__FIELD()).(m_ComAmazonawsDynamodbTypes.AttributeValue)).Dtor_S(), branchKeyIdentifier)), m_AwsCryptographyKeyStoreTypes.Companion_Error_.Create_KeyStoreException_(_dafny.SeqOfString("Item found is not a valid beacon key."))) 370 if (_7_valueOrError2).IsFailure() { 371 output = (_7_valueOrError2).PropagateFailure() 372 return output 373 } 374 output = m_Wrappers.Companion_Result_.Create_Success_(((_5_getItemResponse).Dtor_Item()).Dtor_value().(_dafny.Map)) 375 return output 376 } 377 func (_static *CompanionStruct_Default___) CreateTransactWritePutItem(item _dafny.Map, tableName _dafny.Sequence, conditionExpression ConditionExpression) m_ComAmazonawsDynamodbTypes.TransactWriteItem { 378 return m_ComAmazonawsDynamodbTypes.Companion_TransactWriteItem_.Create_TransactWriteItem_(m_Wrappers.Companion_Option_.Create_None_(), m_Wrappers.Companion_Option_.Create_Some_(m_ComAmazonawsDynamodbTypes.Companion_Put_.Create_Put_(item, tableName, m_Wrappers.Companion_Option_.Create_Some_(func() _dafny.Sequence { 379 var _source0 ConditionExpression = conditionExpression 380 _ = _source0 381 { 382 if _source0.Is_BRANCH__KEY__NOT__EXIST() { 383 return Companion_Default___.BRANCH__KEY__NOT__EXIST__CONDITION() 384 } 385 } 386 { 387 return Companion_Default___.BRANCH__KEY__EXISTS__CONDITION() 388 } 389 }()), m_Wrappers.Companion_Option_.Create_Some_(Companion_Default___.BRANCH__KEY__EXISTS__EXPRESSION__ATTRIBUTE__NAMES()), m_Wrappers.Companion_Option_.Create_None_(), m_Wrappers.Companion_Option_.Create_None_())), m_Wrappers.Companion_Option_.Create_None_(), m_Wrappers.Companion_Option_.Create_None_()) 390 } 391 func (_static *CompanionStruct_Default___) BRANCH__KEY__EXISTS__EXPRESSION__ATTRIBUTE__NAME() _dafny.Sequence { 392 return _dafny.SeqOfString("#BranchKeyIdentifierField") 393 } 394 func (_static *CompanionStruct_Default___) BRANCH__KEY__EXISTS__EXPRESSION__ATTRIBUTE__NAMES() _dafny.Map { 395 return _dafny.NewMapBuilder().ToMap().UpdateUnsafe(Companion_Default___.BRANCH__KEY__EXISTS__EXPRESSION__ATTRIBUTE__NAME(), m_Structure.Companion_Default___.BRANCH__KEY__IDENTIFIER__FIELD()) 396 } 397 func (_static *CompanionStruct_Default___) BRANCH__KEY__NOT__EXIST__CONDITION() _dafny.Sequence { 398 return _dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("attribute_not_exists("), Companion_Default___.BRANCH__KEY__EXISTS__EXPRESSION__ATTRIBUTE__NAME()), _dafny.SeqOfString(")")) 399 } 400 func (_static *CompanionStruct_Default___) BRANCH__KEY__EXISTS__CONDITION() _dafny.Sequence { 401 return _dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("attribute_exists("), Companion_Default___.BRANCH__KEY__EXISTS__EXPRESSION__ATTRIBUTE__NAME()), _dafny.SeqOfString(")")) 402 } 403 404 // End of class Default__ 405 406 // Definition of datatype ConditionExpression 407 type ConditionExpression struct { 408 Data_ConditionExpression_ 409 } 410 411 func (_this ConditionExpression) Get_() Data_ConditionExpression_ { 412 return _this.Data_ConditionExpression_ 413 } 414 415 type Data_ConditionExpression_ interface { 416 isConditionExpression() 417 } 418 419 type CompanionStruct_ConditionExpression_ struct { 420 } 421 422 var Companion_ConditionExpression_ = CompanionStruct_ConditionExpression_{} 423 424 type ConditionExpression_BRANCH__KEY__NOT__EXIST struct { 425 } 426 427 func (ConditionExpression_BRANCH__KEY__NOT__EXIST) isConditionExpression() {} 428 429 func (CompanionStruct_ConditionExpression_) Create_BRANCH__KEY__NOT__EXIST_() ConditionExpression { 430 return ConditionExpression{ConditionExpression_BRANCH__KEY__NOT__EXIST{}} 431 } 432 433 func (_this ConditionExpression) Is_BRANCH__KEY__NOT__EXIST() bool { 434 _, ok := _this.Get_().(ConditionExpression_BRANCH__KEY__NOT__EXIST) 435 return ok 436 } 437 438 type ConditionExpression_BRANCH__KEY__EXISTS struct { 439 } 440 441 func (ConditionExpression_BRANCH__KEY__EXISTS) isConditionExpression() {} 442 443 func (CompanionStruct_ConditionExpression_) Create_BRANCH__KEY__EXISTS_() ConditionExpression { 444 return ConditionExpression{ConditionExpression_BRANCH__KEY__EXISTS{}} 445 } 446 447 func (_this ConditionExpression) Is_BRANCH__KEY__EXISTS() bool { 448 _, ok := _this.Get_().(ConditionExpression_BRANCH__KEY__EXISTS) 449 return ok 450 } 451 452 func (CompanionStruct_ConditionExpression_) Default() ConditionExpression { 453 return Companion_ConditionExpression_.Create_BRANCH__KEY__NOT__EXIST_() 454 } 455 456 func (_ CompanionStruct_ConditionExpression_) AllSingletonConstructors() _dafny.Iterator { 457 i := -1 458 return func() (interface{}, bool) { 459 i++ 460 switch i { 461 case 0: 462 return Companion_ConditionExpression_.Create_BRANCH__KEY__NOT__EXIST_(), true 463 case 1: 464 return Companion_ConditionExpression_.Create_BRANCH__KEY__EXISTS_(), true 465 default: 466 return ConditionExpression{}, false 467 } 468 } 469 } 470 471 func (_this ConditionExpression) String() string { 472 switch _this.Get_().(type) { 473 case nil: 474 return "null" 475 case ConditionExpression_BRANCH__KEY__NOT__EXIST: 476 { 477 return "DDBKeystoreOperations.ConditionExpression.BRANCH_KEY_NOT_EXIST" 478 } 479 case ConditionExpression_BRANCH__KEY__EXISTS: 480 { 481 return "DDBKeystoreOperations.ConditionExpression.BRANCH_KEY_EXISTS" 482 } 483 default: 484 { 485 return "<unexpected>" 486 } 487 } 488 } 489 490 func (_this ConditionExpression) Equals(other ConditionExpression) bool { 491 switch _this.Get_().(type) { 492 case ConditionExpression_BRANCH__KEY__NOT__EXIST: 493 { 494 _, ok := other.Get_().(ConditionExpression_BRANCH__KEY__NOT__EXIST) 495 return ok 496 } 497 case ConditionExpression_BRANCH__KEY__EXISTS: 498 { 499 _, ok := other.Get_().(ConditionExpression_BRANCH__KEY__EXISTS) 500 return ok 501 } 502 default: 503 { 504 return false // unexpected 505 } 506 } 507 } 508 509 func (_this ConditionExpression) EqualsGeneric(other interface{}) bool { 510 typed, ok := other.(ConditionExpression) 511 return ok && _this.Equals(typed) 512 } 513 514 func Type_ConditionExpression_() _dafny.TypeDescriptor { 515 return type_ConditionExpression_{} 516 } 517 518 type type_ConditionExpression_ struct { 519 } 520 521 func (_this type_ConditionExpression_) Default() interface{} { 522 return Companion_ConditionExpression_.Default() 523 } 524 525 func (_this type_ConditionExpression_) String() string { 526 return "DDBKeystoreOperations.ConditionExpression" 527 } 528 func (_this ConditionExpression) ParentTraits_() []*_dafny.TraitID { 529 return [](*_dafny.TraitID){} 530 } 531 532 var _ _dafny.TraitOffspring = ConditionExpression{} 533 534 // End of datatype ConditionExpression