github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl@v0.2.0/AwsCryptographyKeyStoreOperations/AwsCryptographyKeyStoreOperations.go (about) 1 // Package AwsCryptographyKeyStoreOperations 2 // Dafny module AwsCryptographyKeyStoreOperations compiled into Go 3 4 package AwsCryptographyKeyStoreOperations 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_CreateKeyStoreTable "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CreateKeyStoreTable" 17 m_CreateKeys "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CreateKeys" 18 m_DDBKeystoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DDBKeystoreOperations" 19 m_GetKeys "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/GetKeys" 20 m_KMSKeystoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KMSKeystoreOperations" 21 m_KeyStoreErrorMessages "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KeyStoreErrorMessages" 22 m_KmsArn "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KmsArn" 23 m_Structure "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Structure" 24 m_AtomicPrimitives "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AtomicPrimitives" 25 m_AwsCryptographyPrimitivesOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AwsCryptographyPrimitivesOperations" 26 m_AwsCryptographyPrimitivesTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AwsCryptographyPrimitivesTypes" 27 m_Digest "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/Digest" 28 m_HKDF "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/HKDF" 29 m_KdfCtr "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/KdfCtr" 30 m_Random "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/Random" 31 m_WrappedHKDF "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/WrappedHKDF" 32 m_WrappedHMAC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/WrappedHMAC" 33 m_Actions "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Actions" 34 m_Base64 "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Base64" 35 m_Base64Lemmas "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Base64Lemmas" 36 m_BoundedInts "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/BoundedInts" 37 m_DivInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivInternals" 38 m_DivInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivInternalsNonlinear" 39 m_DivMod "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivMod" 40 m_FileIO "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/FileIO" 41 m_FloatCompare "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/FloatCompare" 42 m_Functions "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Functions" 43 m_GeneralInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/GeneralInternals" 44 m_GetOpt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/GetOpt" 45 m_HexStrings "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/HexStrings" 46 m_Logarithm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Logarithm" 47 m__Math "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Math_" 48 m_ModInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/ModInternals" 49 m_ModInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/ModInternalsNonlinear" 50 m_Mul "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Mul" 51 m_MulInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/MulInternals" 52 m_MulInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/MulInternalsNonlinear" 53 m_Power "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Power" 54 m_Relations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Relations" 55 m_Seq "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Seq" 56 m_Seq_MergeSort "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Seq_MergeSort" 57 m_Sorting "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Sorting" 58 m_StandardLibrary "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary" 59 m_StandardLibraryInterop "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibraryInterop" 60 m_StandardLibrary_Sequence "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_Sequence" 61 m_StandardLibrary_String "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_String" 62 m_StandardLibrary_UInt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_UInt" 63 m_Streams "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Streams" 64 m__Time "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Time_" 65 m_UTF8 "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/UTF8" 66 m_UUID "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/UUID" 67 m_UnicodeStrings "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/UnicodeStrings" 68 m__Unicode "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Unicode_" 69 m_Utf16EncodingForm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Utf16EncodingForm" 70 m_Utf8EncodingForm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Utf8EncodingForm" 71 m_Wrappers "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Wrappers" 72 m__System "github.com/dafny-lang/DafnyRuntimeGo/v4/System_" 73 _dafny "github.com/dafny-lang/DafnyRuntimeGo/v4/dafny" 74 ) 75 76 var _ = os.Args 77 var _ _dafny.Dummy__ 78 var _ m__System.Dummy__ 79 var _ m_Wrappers.Dummy__ 80 var _ m_BoundedInts.Dummy__ 81 var _ m_StandardLibrary_UInt.Dummy__ 82 var _ m_StandardLibrary_Sequence.Dummy__ 83 var _ m_StandardLibrary_String.Dummy__ 84 var _ m_StandardLibrary.Dummy__ 85 var _ m_AwsCryptographyPrimitivesTypes.Dummy__ 86 var _ m_Random.Dummy__ 87 var _ m_Digest.Dummy__ 88 var _ m_WrappedHMAC.Dummy__ 89 var _ m_HKDF.Dummy__ 90 var _ m_WrappedHKDF.Dummy__ 91 var _ m_KdfCtr.Dummy__ 92 var _ m_AwsCryptographyPrimitivesOperations.Dummy__ 93 var _ m_AtomicPrimitives.Dummy__ 94 var _ m_ComAmazonawsDynamodbTypes.Dummy__ 95 var _ m_ComAmazonawsKmsTypes.Dummy__ 96 var _ m_Relations.Dummy__ 97 var _ m_Seq_MergeSort.Dummy__ 98 var _ m__Math.Dummy__ 99 var _ m_Seq.Dummy__ 100 var _ m__Unicode.Dummy__ 101 var _ m_Functions.Dummy__ 102 var _ m_Utf8EncodingForm.Dummy__ 103 var _ m_Utf16EncodingForm.Dummy__ 104 var _ m_UnicodeStrings.Dummy__ 105 var _ m_FileIO.Dummy__ 106 var _ m_GeneralInternals.Dummy__ 107 var _ m_MulInternalsNonlinear.Dummy__ 108 var _ m_MulInternals.Dummy__ 109 var _ m_Mul.Dummy__ 110 var _ m_ModInternalsNonlinear.Dummy__ 111 var _ m_DivInternalsNonlinear.Dummy__ 112 var _ m_ModInternals.Dummy__ 113 var _ m_DivInternals.Dummy__ 114 var _ m_DivMod.Dummy__ 115 var _ m_Power.Dummy__ 116 var _ m_Logarithm.Dummy__ 117 var _ m_StandardLibraryInterop.Dummy__ 118 var _ m_Streams.Dummy__ 119 var _ m_Sorting.Dummy__ 120 var _ m_HexStrings.Dummy__ 121 var _ m_GetOpt.Dummy__ 122 var _ m_FloatCompare.Dummy__ 123 var _ m_Base64.Dummy__ 124 var _ m_Base64Lemmas.Dummy__ 125 var _ m_Actions.Dummy__ 126 var _ m_AwsCryptographyKeyStoreTypes.Dummy__ 127 var _ m_AwsCryptographyMaterialProvidersTypes.Dummy__ 128 var _ m_AwsArnParsing.Dummy__ 129 var _ m_AwsKmsMrkMatchForDecrypt.Dummy__ 130 var _ m_AwsKmsUtils.Dummy__ 131 var _ m_KeyStoreErrorMessages.Dummy__ 132 var _ m_KmsArn.Dummy__ 133 var _ m_Structure.Dummy__ 134 var _ m_KMSKeystoreOperations.Dummy__ 135 var _ m_DDBKeystoreOperations.Dummy__ 136 var _ m_CreateKeys.Dummy__ 137 var _ m_CreateKeyStoreTable.Dummy__ 138 var _ m_GetKeys.Dummy__ 139 140 type Dummy__ struct{} 141 142 // Definition of class Default__ 143 type Default__ struct { 144 dummy byte 145 } 146 147 func New_Default___() *Default__ { 148 _this := Default__{} 149 150 return &_this 151 } 152 153 type CompanionStruct_Default___ struct { 154 } 155 156 var Companion_Default___ = CompanionStruct_Default___{} 157 158 func (_this *Default__) Equals(other *Default__) bool { 159 return _this == other 160 } 161 162 func (_this *Default__) EqualsGeneric(x interface{}) bool { 163 other, ok := x.(*Default__) 164 return ok && _this.Equals(other) 165 } 166 167 func (*Default__) String() string { 168 return "AwsCryptographyKeyStoreOperations.Default__" 169 } 170 func (_this *Default__) ParentTraits_() []*_dafny.TraitID { 171 return [](*_dafny.TraitID){} 172 } 173 174 var _ _dafny.TraitOffspring = &Default__{} 175 176 func (_static *CompanionStruct_Default___) GetKeyStoreInfo(config Config) m_Wrappers.Result { 177 var output m_Wrappers.Result = m_Wrappers.Result{} 178 _ = output 179 output = m_Wrappers.Companion_Result_.Create_Success_(m_AwsCryptographyKeyStoreTypes.Companion_GetKeyStoreInfoOutput_.Create_GetKeyStoreInfoOutput_((config).Dtor_id(), (config).Dtor_ddbTableName(), (config).Dtor_logicalKeyStoreName(), (config).Dtor_grantTokens(), (config).Dtor_kmsConfiguration())) 180 return output 181 } 182 func (_static *CompanionStruct_Default___) CreateKeyStore(config Config, input m_AwsCryptographyKeyStoreTypes.CreateKeyStoreInput) m_Wrappers.Result { 183 var output m_Wrappers.Result = m_Wrappers.Result{} 184 _ = output 185 var _0_valueOrError0 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(_dafny.EmptySeq.SetString()) 186 _ = _0_valueOrError0 187 var _out0 m_Wrappers.Result 188 _ = _out0 189 _out0 = m_CreateKeyStoreTable.Companion_Default___.CreateKeyStoreTable((config).Dtor_ddbTableName(), (config).Dtor_ddbClient()) 190 _0_valueOrError0 = _out0 191 if (_0_valueOrError0).IsFailure() { 192 output = (_0_valueOrError0).PropagateFailure() 193 return output 194 } 195 var _1_ddbTableArn _dafny.Sequence 196 _ = _1_ddbTableArn 197 _1_ddbTableArn = (_0_valueOrError0).Extract().(_dafny.Sequence) 198 var _2_tableName m_Wrappers.Result 199 _ = _2_tableName 200 _2_tableName = m_AwsArnParsing.Companion_Default___.ParseAmazonDynamodbTableName(_1_ddbTableArn) 201 var _3_valueOrError1 m_Wrappers.Outcome = m_Wrappers.Companion_Outcome_.Default() 202 _ = _3_valueOrError1 203 _3_valueOrError1 = m_Wrappers.Companion_Default___.Need(((_2_tableName).Is_Success()) && (_dafny.Companion_Sequence_.Equal((_2_tableName).Dtor_value().(_dafny.Sequence), (config).Dtor_ddbTableName())), m_AwsCryptographyKeyStoreTypes.Companion_Error_.Create_KeyStoreException_(_dafny.SeqOfString("Configured DDB Table Name does not match parsed Table Name from DDB Table Arn."))) 204 if (_3_valueOrError1).IsFailure() { 205 output = (_3_valueOrError1).PropagateFailure() 206 return output 207 } 208 output = m_Wrappers.Companion_Result_.Create_Success_(m_AwsCryptographyKeyStoreTypes.Companion_CreateKeyStoreOutput_.Create_CreateKeyStoreOutput_(_1_ddbTableArn)) 209 return output 210 } 211 func (_static *CompanionStruct_Default___) CreateKey(config Config, input m_AwsCryptographyKeyStoreTypes.CreateKeyInput) m_Wrappers.Result { 212 var output m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(m_AwsCryptographyKeyStoreTypes.Companion_CreateKeyOutput_.Default()) 213 _ = output 214 var _0_valueOrError0 m_Wrappers.Outcome = m_Wrappers.Companion_Outcome_.Default() 215 _ = _0_valueOrError0 216 _0_valueOrError0 = m_Wrappers.Companion_Default___.Need(!(((input).Dtor_branchKeyIdentifier()).Is_Some()) || ((((input).Dtor_encryptionContext()).Is_Some()) && (((((input).Dtor_encryptionContext()).Dtor_value().(_dafny.Map)).Cardinality()).Sign() == 1)), m_AwsCryptographyKeyStoreTypes.Companion_Error_.Create_KeyStoreException_(m_KeyStoreErrorMessages.Companion_Default___.CUSTOM__BRANCH__KEY__ID__NEED__EC())) 217 if (_0_valueOrError0).IsFailure() { 218 output = (_0_valueOrError0).PropagateFailure() 219 return output 220 } 221 var _1_valueOrError1 m_Wrappers.Outcome = m_Wrappers.Companion_Outcome_.Default() 222 _ = _1_valueOrError1 223 _1_valueOrError1 = m_Wrappers.Companion_Default___.Need(m_KMSKeystoreOperations.Companion_Default___.HasKeyId((config).Dtor_kmsConfiguration()), m_AwsCryptographyKeyStoreTypes.Companion_Error_.Create_KeyStoreException_(m_KeyStoreErrorMessages.Companion_Default___.DISCOVERY__CREATE__KEY__NOT__SUPPORTED())) 224 if (_1_valueOrError1).IsFailure() { 225 output = (_1_valueOrError1).PropagateFailure() 226 return output 227 } 228 var _2_branchKeyIdentifier _dafny.Sequence = _dafny.EmptySeq.SetString() 229 _ = _2_branchKeyIdentifier 230 if ((input).Dtor_branchKeyIdentifier()).Is_None() { 231 var _3_maybeBranchKeyId m_Wrappers.Result 232 _ = _3_maybeBranchKeyId 233 var _out0 m_Wrappers.Result 234 _ = _out0 235 _out0 = m_UUID.GenerateUUID() 236 _3_maybeBranchKeyId = _out0 237 var _4_valueOrError2 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(_dafny.EmptySeq.SetString()) 238 _ = _4_valueOrError2 239 _4_valueOrError2 = (_3_maybeBranchKeyId).MapFailure(func(coer19 func(_dafny.Sequence) m_AwsCryptographyKeyStoreTypes.Error) func(interface{}) interface{} { 240 return func(arg19 interface{}) interface{} { 241 return coer19(arg19.(_dafny.Sequence)) 242 } 243 }(func(_5_e _dafny.Sequence) m_AwsCryptographyKeyStoreTypes.Error { 244 return m_AwsCryptographyKeyStoreTypes.Companion_Error_.Create_KeyStoreException_(_5_e) 245 })) 246 if (_4_valueOrError2).IsFailure() { 247 output = (_4_valueOrError2).PropagateFailure() 248 return output 249 } 250 _2_branchKeyIdentifier = (_4_valueOrError2).Extract().(_dafny.Sequence) 251 } else { 252 var _6_valueOrError3 m_Wrappers.Outcome = m_Wrappers.Companion_Outcome_.Default() 253 _ = _6_valueOrError3 254 _6_valueOrError3 = m_Wrappers.Companion_Default___.Need((_dafny.IntOfUint32((((input).Dtor_branchKeyIdentifier()).Dtor_value().(_dafny.Sequence)).Cardinality())).Sign() == 1, m_AwsCryptographyKeyStoreTypes.Companion_Error_.Create_KeyStoreException_(_dafny.SeqOfString("Custom branch key id can not be an empty string."))) 255 if (_6_valueOrError3).IsFailure() { 256 output = (_6_valueOrError3).PropagateFailure() 257 return output 258 } 259 _2_branchKeyIdentifier = ((input).Dtor_branchKeyIdentifier()).Dtor_value().(_dafny.Sequence) 260 } 261 var _7_timestamp_q m_Wrappers.Result 262 _ = _7_timestamp_q 263 var _out1 m_Wrappers.Result 264 _ = _out1 265 _out1 = m__Time.GetCurrentTimeStamp() 266 _7_timestamp_q = _out1 267 var _8_valueOrError4 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(_dafny.EmptySeq.SetString()) 268 _ = _8_valueOrError4 269 _8_valueOrError4 = (_7_timestamp_q).MapFailure(func(coer20 func(_dafny.Sequence) m_AwsCryptographyKeyStoreTypes.Error) func(interface{}) interface{} { 270 return func(arg20 interface{}) interface{} { 271 return coer20(arg20.(_dafny.Sequence)) 272 } 273 }(func(_9_e _dafny.Sequence) m_AwsCryptographyKeyStoreTypes.Error { 274 return m_AwsCryptographyKeyStoreTypes.Companion_Error_.Create_KeyStoreException_(_9_e) 275 })) 276 if (_8_valueOrError4).IsFailure() { 277 output = (_8_valueOrError4).PropagateFailure() 278 return output 279 } 280 var _10_timestamp _dafny.Sequence 281 _ = _10_timestamp 282 _10_timestamp = (_8_valueOrError4).Extract().(_dafny.Sequence) 283 var _11_maybeBranchKeyVersion m_Wrappers.Result 284 _ = _11_maybeBranchKeyVersion 285 var _out2 m_Wrappers.Result 286 _ = _out2 287 _out2 = m_UUID.GenerateUUID() 288 _11_maybeBranchKeyVersion = _out2 289 var _12_valueOrError5 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(_dafny.EmptySeq.SetString()) 290 _ = _12_valueOrError5 291 _12_valueOrError5 = (_11_maybeBranchKeyVersion).MapFailure(func(coer21 func(_dafny.Sequence) m_AwsCryptographyKeyStoreTypes.Error) func(interface{}) interface{} { 292 return func(arg21 interface{}) interface{} { 293 return coer21(arg21.(_dafny.Sequence)) 294 } 295 }(func(_13_e _dafny.Sequence) m_AwsCryptographyKeyStoreTypes.Error { 296 return m_AwsCryptographyKeyStoreTypes.Companion_Error_.Create_KeyStoreException_(_13_e) 297 })) 298 if (_12_valueOrError5).IsFailure() { 299 output = (_12_valueOrError5).PropagateFailure() 300 return output 301 } 302 var _14_branchKeyVersion _dafny.Sequence 303 _ = _14_branchKeyVersion 304 _14_branchKeyVersion = (_12_valueOrError5).Extract().(_dafny.Sequence) 305 var _15_unwrapEncryptionContext _dafny.Map 306 _ = _15_unwrapEncryptionContext 307 _15_unwrapEncryptionContext = ((input).Dtor_encryptionContext()).UnwrapOr(_dafny.NewMapBuilder().ToMap()).(_dafny.Map) 308 var _16_encodedEncryptionContext _dafny.Set 309 _ = _16_encodedEncryptionContext 310 _16_encodedEncryptionContext = func() _dafny.Set { 311 var _coll0 = _dafny.NewBuilder() 312 _ = _coll0 313 for _iter7 := _dafny.Iterate((_15_unwrapEncryptionContext).Keys().Elements()); ; { 314 _compr_0, _ok7 := _iter7() 315 if !_ok7 { 316 break 317 } 318 var _17_k _dafny.Sequence 319 _17_k = interface{}(_compr_0).(_dafny.Sequence) 320 if m_UTF8.Companion_ValidUTF8Bytes_.Is_(_17_k) { 321 if (_15_unwrapEncryptionContext).Contains(_17_k) { 322 _coll0.Add(_dafny.TupleOf(m_UTF8.Decode(_17_k), m_UTF8.Decode((_15_unwrapEncryptionContext).Get(_17_k).(_dafny.Sequence)), _17_k)) 323 } 324 } 325 } 326 return _coll0.ToSet() 327 }() 328 var _18_valueOrError6 m_Wrappers.Outcome = m_Wrappers.Companion_Outcome_.Default() 329 _ = _18_valueOrError6 330 _18_valueOrError6 = m_Wrappers.Companion_Default___.Need(_dafny.Quantifier((_16_encodedEncryptionContext).Elements(), true, func(_forall_var_0 _dafny.Tuple) bool { 331 var _19_i _dafny.Tuple 332 _19_i = interface{}(_forall_var_0).(_dafny.Tuple) 333 return !((_16_encodedEncryptionContext).Contains(_19_i)) || ((((((*(_19_i).IndexInt(0)).(m_Wrappers.Result)).Is_Success()) && (((*(_19_i).IndexInt(1)).(m_Wrappers.Result)).Is_Success())) && (m_ComAmazonawsDynamodbTypes.Companion_Default___.IsValid__AttributeName(_dafny.Companion_Sequence_.Concatenate(m_Structure.Companion_Default___.ENCRYPTION__CONTEXT__PREFIX(), ((*(_19_i).IndexInt(0)).(m_Wrappers.Result)).Dtor_value().(_dafny.Sequence))))) && (func(_pat_let1_0 m_Wrappers.Result) bool { 334 return func(_20_encoded m_Wrappers.Result) bool { 335 return ((_20_encoded).Is_Success()) && (_dafny.Companion_Sequence_.Equal((*(_19_i).IndexInt(2)).(_dafny.Sequence), (_20_encoded).Dtor_value().(_dafny.Sequence))) 336 }(_pat_let1_0) 337 }(m_UTF8.Encode(((*(_19_i).IndexInt(0)).(m_Wrappers.Result)).Dtor_value().(_dafny.Sequence))))) 338 }), m_AwsCryptographyKeyStoreTypes.Companion_Error_.Create_KeyStoreException_(m_KeyStoreErrorMessages.Companion_Default___.UTF8__ENCODING__ENCRYPTION__CONTEXT__ERROR())) 339 if (_18_valueOrError6).IsFailure() { 340 output = (_18_valueOrError6).PropagateFailure() 341 return output 342 } 343 var _out3 m_Wrappers.Result 344 _ = _out3 345 _out3 = m_CreateKeys.Companion_Default___.CreateBranchAndBeaconKeys(_2_branchKeyIdentifier, func() _dafny.Map { 346 var _coll1 = _dafny.NewMapBuilder() 347 _ = _coll1 348 for _iter8 := _dafny.Iterate((_16_encodedEncryptionContext).Elements()); ; { 349 _compr_1, _ok8 := _iter8() 350 if !_ok8 { 351 break 352 } 353 var _21_i _dafny.Tuple 354 _21_i = interface{}(_compr_1).(_dafny.Tuple) 355 if (_16_encodedEncryptionContext).Contains(_21_i) { 356 _coll1.Add(((*(_21_i).IndexInt(0)).(m_Wrappers.Result)).Dtor_value().(_dafny.Sequence), ((*(_21_i).IndexInt(1)).(m_Wrappers.Result)).Dtor_value().(_dafny.Sequence)) 357 } 358 } 359 return _coll1.ToMap() 360 }(), _10_timestamp, _14_branchKeyVersion, (config).Dtor_ddbTableName(), (config).Dtor_logicalKeyStoreName(), (config).Dtor_kmsConfiguration(), (config).Dtor_grantTokens(), (config).Dtor_kmsClient(), (config).Dtor_ddbClient()) 361 output = _out3 362 return output 363 } 364 func (_static *CompanionStruct_Default___) VersionKey(config Config, input m_AwsCryptographyKeyStoreTypes.VersionKeyInput) m_Wrappers.Result { 365 var output m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(m_AwsCryptographyKeyStoreTypes.Companion_VersionKeyOutput_.Default()) 366 _ = output 367 var _0_valueOrError0 m_Wrappers.Outcome = m_Wrappers.Companion_Outcome_.Default() 368 _ = _0_valueOrError0 369 _0_valueOrError0 = m_Wrappers.Companion_Default___.Need(m_KMSKeystoreOperations.Companion_Default___.HasKeyId((config).Dtor_kmsConfiguration()), m_AwsCryptographyKeyStoreTypes.Companion_Error_.Create_KeyStoreException_(m_KeyStoreErrorMessages.Companion_Default___.DISCOVERY__VERSION__KEY__NOT__SUPPORTED())) 370 if (_0_valueOrError0).IsFailure() { 371 output = (_0_valueOrError0).PropagateFailure() 372 return output 373 } 374 var _1_valueOrError1 m_Wrappers.Outcome = m_Wrappers.Companion_Outcome_.Default() 375 _ = _1_valueOrError1 376 _1_valueOrError1 = m_Wrappers.Companion_Default___.Need((_dafny.IntOfUint32(((input).Dtor_branchKeyIdentifier()).Cardinality())).Sign() == 1, m_AwsCryptographyKeyStoreTypes.Companion_Error_.Create_KeyStoreException_(m_KeyStoreErrorMessages.Companion_Default___.BRANCH__KEY__ID__NEEDED())) 377 if (_1_valueOrError1).IsFailure() { 378 output = (_1_valueOrError1).PropagateFailure() 379 return output 380 } 381 var _2_timestamp_q m_Wrappers.Result 382 _ = _2_timestamp_q 383 var _out0 m_Wrappers.Result 384 _ = _out0 385 _out0 = m__Time.GetCurrentTimeStamp() 386 _2_timestamp_q = _out0 387 var _3_valueOrError2 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(_dafny.EmptySeq.SetString()) 388 _ = _3_valueOrError2 389 _3_valueOrError2 = (_2_timestamp_q).MapFailure(func(coer22 func(_dafny.Sequence) m_AwsCryptographyKeyStoreTypes.Error) func(interface{}) interface{} { 390 return func(arg22 interface{}) interface{} { 391 return coer22(arg22.(_dafny.Sequence)) 392 } 393 }(func(_4_e _dafny.Sequence) m_AwsCryptographyKeyStoreTypes.Error { 394 return m_AwsCryptographyKeyStoreTypes.Companion_Error_.Create_KeyStoreException_(_4_e) 395 })) 396 if (_3_valueOrError2).IsFailure() { 397 output = (_3_valueOrError2).PropagateFailure() 398 return output 399 } 400 var _5_timestamp _dafny.Sequence 401 _ = _5_timestamp 402 _5_timestamp = (_3_valueOrError2).Extract().(_dafny.Sequence) 403 var _6_maybeBranchKeyVersion m_Wrappers.Result 404 _ = _6_maybeBranchKeyVersion 405 var _out1 m_Wrappers.Result 406 _ = _out1 407 _out1 = m_UUID.GenerateUUID() 408 _6_maybeBranchKeyVersion = _out1 409 var _7_valueOrError3 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(_dafny.EmptySeq.SetString()) 410 _ = _7_valueOrError3 411 _7_valueOrError3 = (_6_maybeBranchKeyVersion).MapFailure(func(coer23 func(_dafny.Sequence) m_AwsCryptographyKeyStoreTypes.Error) func(interface{}) interface{} { 412 return func(arg23 interface{}) interface{} { 413 return coer23(arg23.(_dafny.Sequence)) 414 } 415 }(func(_8_e _dafny.Sequence) m_AwsCryptographyKeyStoreTypes.Error { 416 return m_AwsCryptographyKeyStoreTypes.Companion_Error_.Create_KeyStoreException_(_8_e) 417 })) 418 if (_7_valueOrError3).IsFailure() { 419 output = (_7_valueOrError3).PropagateFailure() 420 return output 421 } 422 var _9_branchKeyVersion _dafny.Sequence 423 _ = _9_branchKeyVersion 424 _9_branchKeyVersion = (_7_valueOrError3).Extract().(_dafny.Sequence) 425 var _out2 m_Wrappers.Result 426 _ = _out2 427 _out2 = m_CreateKeys.Companion_Default___.VersionActiveBranchKey(input, _5_timestamp, _9_branchKeyVersion, (config).Dtor_ddbTableName(), (config).Dtor_logicalKeyStoreName(), (config).Dtor_kmsConfiguration(), (config).Dtor_grantTokens(), (config).Dtor_kmsClient(), (config).Dtor_ddbClient()) 428 output = _out2 429 return output 430 } 431 func (_static *CompanionStruct_Default___) GetActiveBranchKey(config Config, input m_AwsCryptographyKeyStoreTypes.GetActiveBranchKeyInput) m_Wrappers.Result { 432 var output m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(m_AwsCryptographyKeyStoreTypes.Companion_GetActiveBranchKeyOutput_.Default()) 433 _ = output 434 var _out0 m_Wrappers.Result 435 _ = _out0 436 _out0 = m_GetKeys.Companion_Default___.GetActiveKeyAndUnwrap(input, (config).Dtor_ddbTableName(), (config).Dtor_logicalKeyStoreName(), (config).Dtor_kmsConfiguration(), (config).Dtor_grantTokens(), (config).Dtor_kmsClient(), (config).Dtor_ddbClient()) 437 output = _out0 438 return output 439 } 440 func (_static *CompanionStruct_Default___) GetBranchKeyVersion(config Config, input m_AwsCryptographyKeyStoreTypes.GetBranchKeyVersionInput) m_Wrappers.Result { 441 var output m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(m_AwsCryptographyKeyStoreTypes.Companion_GetBranchKeyVersionOutput_.Default()) 442 _ = output 443 var _out0 m_Wrappers.Result 444 _ = _out0 445 _out0 = m_GetKeys.Companion_Default___.GetBranchKeyVersion(input, (config).Dtor_ddbTableName(), (config).Dtor_logicalKeyStoreName(), (config).Dtor_kmsConfiguration(), (config).Dtor_grantTokens(), (config).Dtor_kmsClient(), (config).Dtor_ddbClient()) 446 output = _out0 447 return output 448 } 449 func (_static *CompanionStruct_Default___) GetBeaconKey(config Config, input m_AwsCryptographyKeyStoreTypes.GetBeaconKeyInput) m_Wrappers.Result { 450 var output m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(m_AwsCryptographyKeyStoreTypes.Companion_GetBeaconKeyOutput_.Default()) 451 _ = output 452 var _out0 m_Wrappers.Result 453 _ = _out0 454 _out0 = m_GetKeys.Companion_Default___.GetBeaconKeyAndUnwrap(input, (config).Dtor_ddbTableName(), (config).Dtor_logicalKeyStoreName(), (config).Dtor_kmsConfiguration(), (config).Dtor_grantTokens(), (config).Dtor_kmsClient(), (config).Dtor_ddbClient()) 455 output = _out0 456 return output 457 } 458 459 // End of class Default__ 460 461 // Definition of datatype Config 462 type Config struct { 463 Data_Config_ 464 } 465 466 func (_this Config) Get_() Data_Config_ { 467 return _this.Data_Config_ 468 } 469 470 type Data_Config_ interface { 471 isConfig() 472 } 473 474 type CompanionStruct_Config_ struct { 475 } 476 477 var Companion_Config_ = CompanionStruct_Config_{} 478 479 type Config_Config struct { 480 Id _dafny.Sequence 481 DdbTableName _dafny.Sequence 482 LogicalKeyStoreName _dafny.Sequence 483 KmsConfiguration m_AwsCryptographyKeyStoreTypes.KMSConfiguration 484 GrantTokens _dafny.Sequence 485 KmsClient m_ComAmazonawsKmsTypes.IKMSClient 486 DdbClient m_ComAmazonawsDynamodbTypes.IDynamoDBClient 487 } 488 489 func (Config_Config) isConfig() {} 490 491 func (CompanionStruct_Config_) Create_Config_(Id _dafny.Sequence, DdbTableName _dafny.Sequence, LogicalKeyStoreName _dafny.Sequence, KmsConfiguration m_AwsCryptographyKeyStoreTypes.KMSConfiguration, GrantTokens _dafny.Sequence, KmsClient m_ComAmazonawsKmsTypes.IKMSClient, DdbClient m_ComAmazonawsDynamodbTypes.IDynamoDBClient) Config { 492 return Config{Config_Config{Id, DdbTableName, LogicalKeyStoreName, KmsConfiguration, GrantTokens, KmsClient, DdbClient}} 493 } 494 495 func (_this Config) Is_Config() bool { 496 _, ok := _this.Get_().(Config_Config) 497 return ok 498 } 499 500 func (CompanionStruct_Config_) Default() Config { 501 return Companion_Config_.Create_Config_(_dafny.EmptySeq.SetString(), _dafny.EmptySeq.SetString(), _dafny.EmptySeq.SetString(), m_AwsCryptographyKeyStoreTypes.Companion_KMSConfiguration_.Default(), _dafny.EmptySeq, (m_ComAmazonawsKmsTypes.IKMSClient)(nil), (m_ComAmazonawsDynamodbTypes.IDynamoDBClient)(nil)) 502 } 503 504 func (_this Config) Dtor_id() _dafny.Sequence { 505 return _this.Get_().(Config_Config).Id 506 } 507 508 func (_this Config) Dtor_ddbTableName() _dafny.Sequence { 509 return _this.Get_().(Config_Config).DdbTableName 510 } 511 512 func (_this Config) Dtor_logicalKeyStoreName() _dafny.Sequence { 513 return _this.Get_().(Config_Config).LogicalKeyStoreName 514 } 515 516 func (_this Config) Dtor_kmsConfiguration() m_AwsCryptographyKeyStoreTypes.KMSConfiguration { 517 return _this.Get_().(Config_Config).KmsConfiguration 518 } 519 520 func (_this Config) Dtor_grantTokens() _dafny.Sequence { 521 return _this.Get_().(Config_Config).GrantTokens 522 } 523 524 func (_this Config) Dtor_kmsClient() m_ComAmazonawsKmsTypes.IKMSClient { 525 return _this.Get_().(Config_Config).KmsClient 526 } 527 528 func (_this Config) Dtor_ddbClient() m_ComAmazonawsDynamodbTypes.IDynamoDBClient { 529 return _this.Get_().(Config_Config).DdbClient 530 } 531 532 func (_this Config) String() string { 533 switch data := _this.Get_().(type) { 534 case nil: 535 return "null" 536 case Config_Config: 537 { 538 return "AwsCryptographyKeyStoreOperations.Config.Config" + "(" + _dafny.String(data.Id) + ", " + _dafny.String(data.DdbTableName) + ", " + _dafny.String(data.LogicalKeyStoreName) + ", " + _dafny.String(data.KmsConfiguration) + ", " + _dafny.String(data.GrantTokens) + ", " + _dafny.String(data.KmsClient) + ", " + _dafny.String(data.DdbClient) + ")" 539 } 540 default: 541 { 542 return "<unexpected>" 543 } 544 } 545 } 546 547 func (_this Config) Equals(other Config) bool { 548 switch data1 := _this.Get_().(type) { 549 case Config_Config: 550 { 551 data2, ok := other.Get_().(Config_Config) 552 return ok && data1.Id.Equals(data2.Id) && data1.DdbTableName.Equals(data2.DdbTableName) && data1.LogicalKeyStoreName.Equals(data2.LogicalKeyStoreName) && data1.KmsConfiguration.Equals(data2.KmsConfiguration) && data1.GrantTokens.Equals(data2.GrantTokens) && _dafny.AreEqual(data1.KmsClient, data2.KmsClient) && _dafny.AreEqual(data1.DdbClient, data2.DdbClient) 553 } 554 default: 555 { 556 return false // unexpected 557 } 558 } 559 } 560 561 func (_this Config) EqualsGeneric(other interface{}) bool { 562 typed, ok := other.(Config) 563 return ok && _this.Equals(typed) 564 } 565 566 func Type_Config_() _dafny.TypeDescriptor { 567 return type_Config_{} 568 } 569 570 type type_Config_ struct { 571 } 572 573 func (_this type_Config_) Default() interface{} { 574 return Companion_Config_.Default() 575 } 576 577 func (_this type_Config_) String() string { 578 return "AwsCryptographyKeyStoreOperations.Config" 579 } 580 func (_this Config) ParentTraits_() []*_dafny.TraitID { 581 return [](*_dafny.TraitID){} 582 } 583 584 var _ _dafny.TraitOffspring = Config{} 585 586 // End of datatype Config