github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl@v0.2.0/EcdhEdkWrapping/EcdhEdkWrapping.go (about) 1 // Package EcdhEdkWrapping 2 // Dafny module EcdhEdkWrapping compiled into Go 3 4 package EcdhEdkWrapping 5 6 import ( 7 os "os" 8 9 m_ComAmazonawsDynamodbTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/dynamodb/ComAmazonawsDynamodbTypes" 10 m_Com_Amazonaws_Dynamodb "github.com/aws/aws-cryptographic-material-providers-library/releases/go/dynamodb/Com_Amazonaws_Dynamodb" 11 m_ComAmazonawsKmsTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/kms/ComAmazonawsKmsTypes" 12 m_Com_Amazonaws_Kms "github.com/aws/aws-cryptographic-material-providers-library/releases/go/kms/Com_Amazonaws_Kms" 13 m_AlgorithmSuites "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AlgorithmSuites" 14 m_AwsArnParsing "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsArnParsing" 15 m_AwsCryptographyKeyStoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyKeyStoreOperations" 16 m_AwsCryptographyKeyStoreTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyKeyStoreTypes" 17 m_AwsCryptographyMaterialProvidersTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyMaterialProvidersTypes" 18 m_AwsKmsDiscoveryKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsDiscoveryKeyring" 19 m_AwsKmsHierarchicalKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsHierarchicalKeyring" 20 m_AwsKmsKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsKeyring" 21 m_AwsKmsMrkAreUnique "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkAreUnique" 22 m_AwsKmsMrkDiscoveryKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkDiscoveryKeyring" 23 m_AwsKmsMrkKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkKeyring" 24 m_AwsKmsMrkMatchForDecrypt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkMatchForDecrypt" 25 m_AwsKmsRsaKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsRsaKeyring" 26 m_AwsKmsUtils "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsUtils" 27 m_CacheConstants "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CacheConstants" 28 m_CanonicalEncryptionContext "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CanonicalEncryptionContext" 29 m_Constants "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Constants" 30 m_CreateKeyStoreTable "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CreateKeyStoreTable" 31 m_CreateKeys "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CreateKeys" 32 m_DDBKeystoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DDBKeystoreOperations" 33 m_DiscoveryMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DiscoveryMultiKeyring" 34 m_EdkWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/EdkWrapping" 35 m_ErrorMessages "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/ErrorMessages" 36 m_GetKeys "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/GetKeys" 37 m_IntermediateKeyWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/IntermediateKeyWrapping" 38 m_KMSKeystoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KMSKeystoreOperations" 39 m_KeyStore "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KeyStore" 40 m_KeyStoreErrorMessages "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KeyStoreErrorMessages" 41 m_Keyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Keyring" 42 m_KmsArn "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KmsArn" 43 m_LocalCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/LocalCMC" 44 m_MaterialWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MaterialWrapping" 45 m_Materials "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Materials" 46 m_MrkAwareDiscoveryMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MrkAwareDiscoveryMultiKeyring" 47 m_MrkAwareStrictMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MrkAwareStrictMultiKeyring" 48 m_MultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MultiKeyring" 49 m_StormTracker "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StormTracker" 50 m_StormTrackingCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StormTrackingCMC" 51 m_StrictMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StrictMultiKeyring" 52 m_Structure "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Structure" 53 m_SynchronizedLocalCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/SynchronizedLocalCMC" 54 m_AtomicPrimitives "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AtomicPrimitives" 55 m_AwsCryptographyPrimitivesOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AwsCryptographyPrimitivesOperations" 56 m_AwsCryptographyPrimitivesTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AwsCryptographyPrimitivesTypes" 57 m_Digest "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/Digest" 58 m_HKDF "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/HKDF" 59 m_KdfCtr "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/KdfCtr" 60 m_Random "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/Random" 61 m_WrappedHKDF "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/WrappedHKDF" 62 m_WrappedHMAC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/WrappedHMAC" 63 m_Actions "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Actions" 64 m_Base64 "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Base64" 65 m_Base64Lemmas "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Base64Lemmas" 66 m_BoundedInts "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/BoundedInts" 67 m_DivInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivInternals" 68 m_DivInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivInternalsNonlinear" 69 m_DivMod "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivMod" 70 m_FileIO "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/FileIO" 71 m_FloatCompare "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/FloatCompare" 72 m_Functions "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Functions" 73 m_GeneralInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/GeneralInternals" 74 m_GetOpt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/GetOpt" 75 m_HexStrings "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/HexStrings" 76 m_Logarithm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Logarithm" 77 m__Math "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Math_" 78 m_ModInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/ModInternals" 79 m_ModInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/ModInternalsNonlinear" 80 m_Mul "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Mul" 81 m_MulInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/MulInternals" 82 m_MulInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/MulInternalsNonlinear" 83 m_Power "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Power" 84 m_Relations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Relations" 85 m_Seq "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Seq" 86 m_Seq_MergeSort "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Seq_MergeSort" 87 m_Sorting "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Sorting" 88 m_StandardLibrary "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary" 89 m_StandardLibraryInterop "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibraryInterop" 90 m_StandardLibrary_Sequence "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_Sequence" 91 m_StandardLibrary_String "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_String" 92 m_StandardLibrary_UInt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_UInt" 93 m_Streams "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Streams" 94 m_UTF8 "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/UTF8" 95 m_UnicodeStrings "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/UnicodeStrings" 96 m__Unicode "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Unicode_" 97 m_Utf16EncodingForm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Utf16EncodingForm" 98 m_Utf8EncodingForm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Utf8EncodingForm" 99 m_Wrappers "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Wrappers" 100 m__System "github.com/dafny-lang/DafnyRuntimeGo/v4/System_" 101 _dafny "github.com/dafny-lang/DafnyRuntimeGo/v4/dafny" 102 ) 103 104 var _ = os.Args 105 var _ _dafny.Dummy__ 106 var _ m__System.Dummy__ 107 var _ m_Wrappers.Dummy__ 108 var _ m_BoundedInts.Dummy__ 109 var _ m_StandardLibrary_UInt.Dummy__ 110 var _ m_StandardLibrary_Sequence.Dummy__ 111 var _ m_StandardLibrary_String.Dummy__ 112 var _ m_StandardLibrary.Dummy__ 113 var _ m_AwsCryptographyPrimitivesTypes.Dummy__ 114 var _ m_Random.Dummy__ 115 var _ m_Digest.Dummy__ 116 var _ m_WrappedHMAC.Dummy__ 117 var _ m_HKDF.Dummy__ 118 var _ m_WrappedHKDF.Dummy__ 119 var _ m_KdfCtr.Dummy__ 120 var _ m_AwsCryptographyPrimitivesOperations.Dummy__ 121 var _ m_AtomicPrimitives.Dummy__ 122 var _ m_ComAmazonawsDynamodbTypes.Dummy__ 123 var _ m_ComAmazonawsKmsTypes.Dummy__ 124 var _ m_Relations.Dummy__ 125 var _ m_Seq_MergeSort.Dummy__ 126 var _ m__Math.Dummy__ 127 var _ m_Seq.Dummy__ 128 var _ m__Unicode.Dummy__ 129 var _ m_Functions.Dummy__ 130 var _ m_Utf8EncodingForm.Dummy__ 131 var _ m_Utf16EncodingForm.Dummy__ 132 var _ m_UnicodeStrings.Dummy__ 133 var _ m_FileIO.Dummy__ 134 var _ m_GeneralInternals.Dummy__ 135 var _ m_MulInternalsNonlinear.Dummy__ 136 var _ m_MulInternals.Dummy__ 137 var _ m_Mul.Dummy__ 138 var _ m_ModInternalsNonlinear.Dummy__ 139 var _ m_DivInternalsNonlinear.Dummy__ 140 var _ m_ModInternals.Dummy__ 141 var _ m_DivInternals.Dummy__ 142 var _ m_DivMod.Dummy__ 143 var _ m_Power.Dummy__ 144 var _ m_Logarithm.Dummy__ 145 var _ m_StandardLibraryInterop.Dummy__ 146 var _ m_Streams.Dummy__ 147 var _ m_Sorting.Dummy__ 148 var _ m_HexStrings.Dummy__ 149 var _ m_GetOpt.Dummy__ 150 var _ m_FloatCompare.Dummy__ 151 var _ m_Base64.Dummy__ 152 var _ m_Base64Lemmas.Dummy__ 153 var _ m_Actions.Dummy__ 154 var _ m_AwsCryptographyKeyStoreTypes.Dummy__ 155 var _ m_AwsCryptographyMaterialProvidersTypes.Dummy__ 156 var _ m_AwsArnParsing.Dummy__ 157 var _ m_AwsKmsMrkMatchForDecrypt.Dummy__ 158 var _ m_AwsKmsUtils.Dummy__ 159 var _ m_KeyStoreErrorMessages.Dummy__ 160 var _ m_KmsArn.Dummy__ 161 var _ m_Structure.Dummy__ 162 var _ m_KMSKeystoreOperations.Dummy__ 163 var _ m_DDBKeystoreOperations.Dummy__ 164 var _ m_CreateKeys.Dummy__ 165 var _ m_CreateKeyStoreTable.Dummy__ 166 var _ m_GetKeys.Dummy__ 167 var _ m_AwsCryptographyKeyStoreOperations.Dummy__ 168 var _ m_Com_Amazonaws_Kms.Dummy__ 169 var _ m_Com_Amazonaws_Dynamodb.Dummy__ 170 var _ m_KeyStore.Dummy__ 171 var _ m_AlgorithmSuites.Dummy__ 172 var _ m_Materials.Dummy__ 173 var _ m_Keyring.Dummy__ 174 var _ m_MultiKeyring.Dummy__ 175 var _ m_AwsKmsMrkAreUnique.Dummy__ 176 var _ m_Constants.Dummy__ 177 var _ m_MaterialWrapping.Dummy__ 178 var _ m_CanonicalEncryptionContext.Dummy__ 179 var _ m_IntermediateKeyWrapping.Dummy__ 180 var _ m_EdkWrapping.Dummy__ 181 var _ m_ErrorMessages.Dummy__ 182 var _ m_AwsKmsKeyring.Dummy__ 183 var _ m_StrictMultiKeyring.Dummy__ 184 var _ m_AwsKmsDiscoveryKeyring.Dummy__ 185 var _ m_DiscoveryMultiKeyring.Dummy__ 186 var _ m_AwsKmsMrkDiscoveryKeyring.Dummy__ 187 var _ m_MrkAwareDiscoveryMultiKeyring.Dummy__ 188 var _ m_AwsKmsMrkKeyring.Dummy__ 189 var _ m_MrkAwareStrictMultiKeyring.Dummy__ 190 var _ m_LocalCMC.Dummy__ 191 var _ m_SynchronizedLocalCMC.Dummy__ 192 var _ m_StormTracker.Dummy__ 193 var _ m_StormTrackingCMC.Dummy__ 194 var _ m_CacheConstants.Dummy__ 195 var _ m_AwsKmsHierarchicalKeyring.Dummy__ 196 var _ m_AwsKmsRsaKeyring.Dummy__ 197 198 type Dummy__ struct{} 199 200 // Definition of class Default__ 201 type Default__ struct { 202 dummy byte 203 } 204 205 func New_Default___() *Default__ { 206 _this := Default__{} 207 208 return &_this 209 } 210 211 type CompanionStruct_Default___ struct { 212 } 213 214 var Companion_Default___ = CompanionStruct_Default___{} 215 216 func (_this *Default__) Equals(other *Default__) bool { 217 return _this == other 218 } 219 220 func (_this *Default__) EqualsGeneric(x interface{}) bool { 221 other, ok := x.(*Default__) 222 return ok && _this.Equals(other) 223 } 224 225 func (*Default__) String() string { 226 return "EcdhEdkWrapping.Default__" 227 } 228 func (_this *Default__) ParentTraits_() []*_dafny.TraitID { 229 return [](*_dafny.TraitID){} 230 } 231 232 var _ _dafny.TraitOffspring = &Default__{} 233 234 func (_static *CompanionStruct_Default___) DeriveSharedKeyingMaterial(sharedSecret _dafny.Sequence, fixedInfo _dafny.Sequence, salt _dafny.Sequence, crypto *m_AtomicPrimitives.AtomicPrimitivesClient) m_Wrappers.Result { 235 var res m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(_dafny.EmptySeq) 236 _ = res 237 var _0_maybeDerivedKeyingMaterial m_Wrappers.Result 238 _ = _0_maybeDerivedKeyingMaterial 239 var _out0 m_Wrappers.Result 240 _ = _out0 241 _out0 = (crypto).KdfCounterMode(m_AwsCryptographyPrimitivesTypes.Companion_KdfCtrInput_.Create_KdfCtrInput_(m_AwsCryptographyPrimitivesTypes.Companion_DigestAlgorithm_.Create_SHA__384_(), sharedSecret, m_Constants.Companion_Default___.KDF__EXPECTED__LEN(), m_Wrappers.Companion_Option_.Create_Some_(fixedInfo), m_Wrappers.Companion_Option_.Create_Some_(salt))) 242 _0_maybeDerivedKeyingMaterial = _out0 243 var _1_valueOrError0 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(_dafny.EmptySeq) 244 _ = _1_valueOrError0 245 _1_valueOrError0 = (_0_maybeDerivedKeyingMaterial).MapFailure(func(coer102 func(m_AwsCryptographyPrimitivesTypes.Error) m_AwsCryptographyMaterialProvidersTypes.Error) func(interface{}) interface{} { 246 return func(arg103 interface{}) interface{} { 247 return coer102(arg103.(m_AwsCryptographyPrimitivesTypes.Error)) 248 } 249 }(func(_2_e m_AwsCryptographyPrimitivesTypes.Error) m_AwsCryptographyMaterialProvidersTypes.Error { 250 return m_AwsCryptographyMaterialProvidersTypes.Companion_Error_.Create_AwsCryptographyPrimitives_(_2_e) 251 })) 252 if (_1_valueOrError0).IsFailure() { 253 res = (_1_valueOrError0).PropagateFailure() 254 return res 255 } 256 var _3_derivedKeyingMaterial _dafny.Sequence 257 _ = _3_derivedKeyingMaterial 258 _3_derivedKeyingMaterial = (_1_valueOrError0).Extract().(_dafny.Sequence) 259 res = m_Wrappers.Companion_Result_.Create_Success_(_3_derivedKeyingMaterial) 260 return res 261 } 262 func (_static *CompanionStruct_Default___) SerializeFixedInfo(ecdhKeyDerivationUtf8 _dafny.Sequence, curveSpecUtf8 _dafny.Sequence, senderPublicKey _dafny.Sequence, recipientPublicKey _dafny.Sequence, canonicalizedEC _dafny.Sequence, keyringVersion _dafny.Sequence) _dafny.Sequence { 263 return _dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(ecdhKeyDerivationUtf8, m_Constants.Companion_Default___.ECDH__KDF__DELIMETER()), curveSpecUtf8), m_Constants.Companion_Default___.ECDH__KDF__DELIMETER()), m_Constants.Companion_Default___.ECDH__KDF__PRF__NAME()), m_Constants.Companion_Default___.ECDH__KDF__DELIMETER()), senderPublicKey), recipientPublicKey), m_Constants.Companion_Default___.ECDH__KDF__DELIMETER()), keyringVersion), m_Constants.Companion_Default___.ECDH__KDF__DELIMETER()), canonicalizedEC) 264 } 265 func (_static *CompanionStruct_Default___) CurveSpecTypeToString(c m_AwsCryptographyPrimitivesTypes.ECDHCurveSpec) _dafny.Sequence { 266 var _source0 m_AwsCryptographyPrimitivesTypes.ECDHCurveSpec = c 267 _ = _source0 268 { 269 if _source0.Is_ECC__NIST__P256() { 270 return _dafny.SeqOfString("p256") 271 } 272 } 273 { 274 if _source0.Is_ECC__NIST__P384() { 275 return _dafny.SeqOfString("p384") 276 } 277 } 278 { 279 if _source0.Is_ECC__NIST__P521() { 280 return _dafny.SeqOfString("p521") 281 } 282 } 283 { 284 return _dafny.SeqOfString("sm2") 285 } 286 } 287 func (_static *CompanionStruct_Default___) E(s _dafny.Sequence) m_AwsCryptographyMaterialProvidersTypes.Error { 288 return m_AwsCryptographyMaterialProvidersTypes.Companion_Error_.Create_AwsCryptographicMaterialProvidersException_(s) 289 } 290 291 // End of class Default__ 292 293 // Definition of datatype EcdhUnwrapInfo 294 type EcdhUnwrapInfo struct { 295 Data_EcdhUnwrapInfo_ 296 } 297 298 func (_this EcdhUnwrapInfo) Get_() Data_EcdhUnwrapInfo_ { 299 return _this.Data_EcdhUnwrapInfo_ 300 } 301 302 type Data_EcdhUnwrapInfo_ interface { 303 isEcdhUnwrapInfo() 304 } 305 306 type CompanionStruct_EcdhUnwrapInfo_ struct { 307 } 308 309 var Companion_EcdhUnwrapInfo_ = CompanionStruct_EcdhUnwrapInfo_{} 310 311 type EcdhUnwrapInfo_EcdhUnwrapInfo struct { 312 } 313 314 func (EcdhUnwrapInfo_EcdhUnwrapInfo) isEcdhUnwrapInfo() {} 315 316 func (CompanionStruct_EcdhUnwrapInfo_) Create_EcdhUnwrapInfo_() EcdhUnwrapInfo { 317 return EcdhUnwrapInfo{EcdhUnwrapInfo_EcdhUnwrapInfo{}} 318 } 319 320 func (_this EcdhUnwrapInfo) Is_EcdhUnwrapInfo() bool { 321 _, ok := _this.Get_().(EcdhUnwrapInfo_EcdhUnwrapInfo) 322 return ok 323 } 324 325 func (CompanionStruct_EcdhUnwrapInfo_) Default() EcdhUnwrapInfo { 326 return Companion_EcdhUnwrapInfo_.Create_EcdhUnwrapInfo_() 327 } 328 329 func (_ CompanionStruct_EcdhUnwrapInfo_) AllSingletonConstructors() _dafny.Iterator { 330 i := -1 331 return func() (interface{}, bool) { 332 i++ 333 switch i { 334 case 0: 335 return Companion_EcdhUnwrapInfo_.Create_EcdhUnwrapInfo_(), true 336 default: 337 return EcdhUnwrapInfo{}, false 338 } 339 } 340 } 341 342 func (_this EcdhUnwrapInfo) String() string { 343 switch _this.Get_().(type) { 344 case nil: 345 return "null" 346 case EcdhUnwrapInfo_EcdhUnwrapInfo: 347 { 348 return "EcdhEdkWrapping.EcdhUnwrapInfo.EcdhUnwrapInfo" 349 } 350 default: 351 { 352 return "<unexpected>" 353 } 354 } 355 } 356 357 func (_this EcdhUnwrapInfo) Equals(other EcdhUnwrapInfo) bool { 358 switch _this.Get_().(type) { 359 case EcdhUnwrapInfo_EcdhUnwrapInfo: 360 { 361 _, ok := other.Get_().(EcdhUnwrapInfo_EcdhUnwrapInfo) 362 return ok 363 } 364 default: 365 { 366 return false // unexpected 367 } 368 } 369 } 370 371 func (_this EcdhUnwrapInfo) EqualsGeneric(other interface{}) bool { 372 typed, ok := other.(EcdhUnwrapInfo) 373 return ok && _this.Equals(typed) 374 } 375 376 func Type_EcdhUnwrapInfo_() _dafny.TypeDescriptor { 377 return type_EcdhUnwrapInfo_{} 378 } 379 380 type type_EcdhUnwrapInfo_ struct { 381 } 382 383 func (_this type_EcdhUnwrapInfo_) Default() interface{} { 384 return Companion_EcdhUnwrapInfo_.Default() 385 } 386 387 func (_this type_EcdhUnwrapInfo_) String() string { 388 return "EcdhEdkWrapping.EcdhUnwrapInfo" 389 } 390 func (_this EcdhUnwrapInfo) ParentTraits_() []*_dafny.TraitID { 391 return [](*_dafny.TraitID){} 392 } 393 394 var _ _dafny.TraitOffspring = EcdhUnwrapInfo{} 395 396 // End of datatype EcdhUnwrapInfo 397 398 // Definition of datatype EcdhWrapInfo 399 type EcdhWrapInfo struct { 400 Data_EcdhWrapInfo_ 401 } 402 403 func (_this EcdhWrapInfo) Get_() Data_EcdhWrapInfo_ { 404 return _this.Data_EcdhWrapInfo_ 405 } 406 407 type Data_EcdhWrapInfo_ interface { 408 isEcdhWrapInfo() 409 } 410 411 type CompanionStruct_EcdhWrapInfo_ struct { 412 } 413 414 var Companion_EcdhWrapInfo_ = CompanionStruct_EcdhWrapInfo_{} 415 416 type EcdhWrapInfo_EcdhWrapInfo struct { 417 } 418 419 func (EcdhWrapInfo_EcdhWrapInfo) isEcdhWrapInfo() {} 420 421 func (CompanionStruct_EcdhWrapInfo_) Create_EcdhWrapInfo_() EcdhWrapInfo { 422 return EcdhWrapInfo{EcdhWrapInfo_EcdhWrapInfo{}} 423 } 424 425 func (_this EcdhWrapInfo) Is_EcdhWrapInfo() bool { 426 _, ok := _this.Get_().(EcdhWrapInfo_EcdhWrapInfo) 427 return ok 428 } 429 430 func (CompanionStruct_EcdhWrapInfo_) Default() EcdhWrapInfo { 431 return Companion_EcdhWrapInfo_.Create_EcdhWrapInfo_() 432 } 433 434 func (_ CompanionStruct_EcdhWrapInfo_) AllSingletonConstructors() _dafny.Iterator { 435 i := -1 436 return func() (interface{}, bool) { 437 i++ 438 switch i { 439 case 0: 440 return Companion_EcdhWrapInfo_.Create_EcdhWrapInfo_(), true 441 default: 442 return EcdhWrapInfo{}, false 443 } 444 } 445 } 446 447 func (_this EcdhWrapInfo) String() string { 448 switch _this.Get_().(type) { 449 case nil: 450 return "null" 451 case EcdhWrapInfo_EcdhWrapInfo: 452 { 453 return "EcdhEdkWrapping.EcdhWrapInfo.EcdhWrapInfo" 454 } 455 default: 456 { 457 return "<unexpected>" 458 } 459 } 460 } 461 462 func (_this EcdhWrapInfo) Equals(other EcdhWrapInfo) bool { 463 switch _this.Get_().(type) { 464 case EcdhWrapInfo_EcdhWrapInfo: 465 { 466 _, ok := other.Get_().(EcdhWrapInfo_EcdhWrapInfo) 467 return ok 468 } 469 default: 470 { 471 return false // unexpected 472 } 473 } 474 } 475 476 func (_this EcdhWrapInfo) EqualsGeneric(other interface{}) bool { 477 typed, ok := other.(EcdhWrapInfo) 478 return ok && _this.Equals(typed) 479 } 480 481 func Type_EcdhWrapInfo_() _dafny.TypeDescriptor { 482 return type_EcdhWrapInfo_{} 483 } 484 485 type type_EcdhWrapInfo_ struct { 486 } 487 488 func (_this type_EcdhWrapInfo_) Default() interface{} { 489 return Companion_EcdhWrapInfo_.Default() 490 } 491 492 func (_this type_EcdhWrapInfo_) String() string { 493 return "EcdhEdkWrapping.EcdhWrapInfo" 494 } 495 func (_this EcdhWrapInfo) ParentTraits_() []*_dafny.TraitID { 496 return [](*_dafny.TraitID){} 497 } 498 499 var _ _dafny.TraitOffspring = EcdhWrapInfo{} 500 501 // End of datatype EcdhWrapInfo 502 503 // Definition of class EcdhUnwrap 504 type EcdhUnwrap struct { 505 _senderPublicKey _dafny.Sequence 506 _recipientPublicKey _dafny.Sequence 507 _sharedSecret _dafny.Sequence 508 _keyringVersion _dafny.Sequence 509 _curveSpec m_AwsCryptographyPrimitivesTypes.ECDHCurveSpec 510 _crypto *m_AtomicPrimitives.AtomicPrimitivesClient 511 } 512 513 func New_EcdhUnwrap_() *EcdhUnwrap { 514 _this := EcdhUnwrap{} 515 516 _this._senderPublicKey = _dafny.EmptySeq 517 _this._recipientPublicKey = _dafny.EmptySeq 518 _this._sharedSecret = _dafny.EmptySeq 519 _this._keyringVersion = _dafny.EmptySeq 520 _this._curveSpec = m_AwsCryptographyPrimitivesTypes.Companion_ECDHCurveSpec_.Default() 521 _this._crypto = (*m_AtomicPrimitives.AtomicPrimitivesClient)(nil) 522 return &_this 523 } 524 525 type CompanionStruct_EcdhUnwrap_ struct { 526 } 527 528 var Companion_EcdhUnwrap_ = CompanionStruct_EcdhUnwrap_{} 529 530 func (_this *EcdhUnwrap) Equals(other *EcdhUnwrap) bool { 531 return _this == other 532 } 533 534 func (_this *EcdhUnwrap) EqualsGeneric(x interface{}) bool { 535 other, ok := x.(*EcdhUnwrap) 536 return ok && _this.Equals(other) 537 } 538 539 func (*EcdhUnwrap) String() string { 540 return "EcdhEdkWrapping.EcdhUnwrap" 541 } 542 543 func Type_EcdhUnwrap_() _dafny.TypeDescriptor { 544 return type_EcdhUnwrap_{} 545 } 546 547 type type_EcdhUnwrap_ struct { 548 } 549 550 func (_this type_EcdhUnwrap_) Default() interface{} { 551 return (*EcdhUnwrap)(nil) 552 } 553 554 func (_this type_EcdhUnwrap_) String() string { 555 return "EcdhEdkWrapping.EcdhUnwrap" 556 } 557 func (_this *EcdhUnwrap) ParentTraits_() []*_dafny.TraitID { 558 return [](*_dafny.TraitID){m_MaterialWrapping.Companion_UnwrapMaterial_.TraitID_, m_Actions.Companion_ActionWithResult_.TraitID_, m_Actions.Companion_Action_.TraitID_} 559 } 560 561 var _ m_MaterialWrapping.UnwrapMaterial = &EcdhUnwrap{} 562 var _ m_Actions.ActionWithResult = &EcdhUnwrap{} 563 var _ m_Actions.Action = &EcdhUnwrap{} 564 var _ _dafny.TraitOffspring = &EcdhUnwrap{} 565 566 func (_this *EcdhUnwrap) Ctor__(senderPublicKey _dafny.Sequence, recipientPublicKey _dafny.Sequence, sharedSecret _dafny.Sequence, keyringVersion _dafny.Sequence, curveSpec m_AwsCryptographyPrimitivesTypes.ECDHCurveSpec, crypto *m_AtomicPrimitives.AtomicPrimitivesClient) { 567 { 568 (_this)._senderPublicKey = senderPublicKey 569 (_this)._recipientPublicKey = recipientPublicKey 570 (_this)._sharedSecret = sharedSecret 571 (_this)._keyringVersion = keyringVersion 572 (_this)._curveSpec = curveSpec 573 (_this)._crypto = crypto 574 } 575 } 576 func (_this *EcdhUnwrap) Invoke(input interface{}) interface{} { 577 { 578 var input m_MaterialWrapping.UnwrapInput = input.(m_MaterialWrapping.UnwrapInput) 579 _ = input 580 var res m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(m_MaterialWrapping.Companion_UnwrapOutput_.Default(Companion_EcdhUnwrapInfo_.Default())) 581 _ = res 582 var _0_suite m_AwsCryptographyMaterialProvidersTypes.AlgorithmSuiteInfo 583 _ = _0_suite 584 _0_suite = (input).Dtor_algorithmSuite() 585 var _1_wrappedMaterial _dafny.Sequence 586 _ = _1_wrappedMaterial 587 _1_wrappedMaterial = (input).Dtor_wrappedMaterial() 588 var _2_aad _dafny.Map 589 _ = _2_aad 590 _2_aad = (input).Dtor_encryptionContext() 591 var _3_valueOrError0 m_Wrappers.Outcome = m_Wrappers.Companion_Outcome_.Default() 592 _ = _3_valueOrError0 593 _3_valueOrError0 = m_Wrappers.Companion_Default___.Need((_dafny.IntOfUint32((_1_wrappedMaterial).Cardinality())).Cmp(m_Constants.Companion_Default___.CIPHERTEXT__WRAPPED__MATERIAL__INDEX()) > 0, Companion_Default___.E(_dafny.SeqOfString("Recieved ciphertext is shorter than expected."))) 594 if (_3_valueOrError0).IsFailure() { 595 res = (_3_valueOrError0).PropagateFailure() 596 return res 597 } 598 var _4_KeyLength _dafny.Int 599 _ = _4_KeyLength 600 _4_KeyLength = _dafny.IntOfInt32(m_AlgorithmSuites.Companion_Default___.GetEncryptKeyLength(_0_suite)) 601 var _5_valueOrError1 m_Wrappers.Outcome = m_Wrappers.Companion_Outcome_.Default() 602 _ = _5_valueOrError1 603 _5_valueOrError1 = m_Wrappers.Companion_Default___.Need((_dafny.IntOfUint32((_1_wrappedMaterial).Cardinality())).Cmp((m_Constants.Companion_Default___.ECDH__WRAPPED__KEY__MATERIAL__INDEX()).Plus(_4_KeyLength)) > 0, m_AwsCryptographyMaterialProvidersTypes.Companion_Error_.Create_AwsCryptographicMaterialProvidersException_(_dafny.SeqOfString("Received EDK Ciphertext of incorrect length."))) 604 if (_5_valueOrError1).IsFailure() { 605 res = (_5_valueOrError1).PropagateFailure() 606 return res 607 } 608 var _6_kdfNonce _dafny.Sequence 609 _ = _6_kdfNonce 610 _6_kdfNonce = (_1_wrappedMaterial).Subsequence(0, (m_Constants.Companion_Default___.ECDH__COMMITMENT__KEY__INDEX()).Uint32()) 611 var _7_iv _dafny.Sequence 612 _ = _7_iv 613 _7_iv = _dafny.SeqCreate((_dafny.IntOfInt32((m_Constants.Companion_Default___.ECDH__AES__256__ENC__ALG()).Dtor_ivLength())).Uint32(), func(coer103 func(_dafny.Int) uint8) func(_dafny.Int) interface{} { 614 return func(arg104 _dafny.Int) interface{} { 615 return coer103(arg104) 616 } 617 }(func(_8___v0 _dafny.Int) uint8 { 618 return uint8(0) 619 })) 620 var _9_commitmentKey _dafny.Sequence 621 _ = _9_commitmentKey 622 _9_commitmentKey = (_1_wrappedMaterial).Subsequence((m_Constants.Companion_Default___.ECDH__COMMITMENT__KEY__INDEX()).Uint32(), (m_Constants.Companion_Default___.ECDH__WRAPPED__KEY__MATERIAL__INDEX()).Uint32()) 623 var _10_wrappedKey _dafny.Sequence 624 _ = _10_wrappedKey 625 _10_wrappedKey = (_1_wrappedMaterial).Subsequence((m_Constants.Companion_Default___.ECDH__WRAPPED__KEY__MATERIAL__INDEX()).Uint32(), ((m_Constants.Companion_Default___.ECDH__WRAPPED__KEY__MATERIAL__INDEX()).Plus(_4_KeyLength)).Uint32()) 626 var _11_authTag _dafny.Sequence 627 _ = _11_authTag 628 _11_authTag = (_1_wrappedMaterial).Drop(((m_Constants.Companion_Default___.ECDH__WRAPPED__KEY__MATERIAL__INDEX()).Plus(_4_KeyLength)).Uint32()) 629 var _12_valueOrError2 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(m_UTF8.Companion_ValidUTF8Bytes_.Witness()) 630 _ = _12_valueOrError2 631 _12_valueOrError2 = (m_UTF8.Encode(Companion_Default___.CurveSpecTypeToString((_this).CurveSpec()))).MapFailure(func(coer104 func(_dafny.Sequence) m_AwsCryptographyMaterialProvidersTypes.Error) func(interface{}) interface{} { 632 return func(arg105 interface{}) interface{} { 633 return coer104(arg105.(_dafny.Sequence)) 634 } 635 }(Companion_Default___.E)) 636 if (_12_valueOrError2).IsFailure() { 637 res = (_12_valueOrError2).PropagateFailure() 638 return res 639 } 640 var _13_curveSpecUtf8 _dafny.Sequence 641 _ = _13_curveSpecUtf8 642 _13_curveSpecUtf8 = (_12_valueOrError2).Extract().(_dafny.Sequence) 643 var _14_valueOrError3 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(_dafny.EmptySeq) 644 _ = _14_valueOrError3 645 _14_valueOrError3 = m_CanonicalEncryptionContext.Companion_Default___.EncryptionContextToAAD((input).Dtor_encryptionContext()) 646 if (_14_valueOrError3).IsFailure() { 647 res = (_14_valueOrError3).PropagateFailure() 648 return res 649 } 650 var _15_canonicalizedEC _dafny.Sequence 651 _ = _15_canonicalizedEC 652 _15_canonicalizedEC = (_14_valueOrError3).Extract().(_dafny.Sequence) 653 var _16_fixedInfo _dafny.Sequence 654 _ = _16_fixedInfo 655 _16_fixedInfo = Companion_Default___.SerializeFixedInfo(m_Constants.Companion_Default___.ECDH__KDF__UTF8(), _13_curveSpecUtf8, (_this).SenderPublicKey(), (_this).RecipientPublicKey(), _15_canonicalizedEC, (_this).KeyringVersion()) 656 var _17_valueOrError4 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(_dafny.EmptySeq) 657 _ = _17_valueOrError4 658 var _out0 m_Wrappers.Result 659 _ = _out0 660 _out0 = Companion_Default___.DeriveSharedKeyingMaterial((_this).SharedSecret(), _16_fixedInfo, _6_kdfNonce, (_this).Crypto()) 661 _17_valueOrError4 = _out0 662 if (_17_valueOrError4).IsFailure() { 663 res = (_17_valueOrError4).PropagateFailure() 664 return res 665 } 666 var _18_derivedKeyingMaterial _dafny.Sequence 667 _ = _18_derivedKeyingMaterial 668 _18_derivedKeyingMaterial = (_17_valueOrError4).Extract().(_dafny.Sequence) 669 var _19_calculatedCommitmentKey _dafny.Sequence 670 _ = _19_calculatedCommitmentKey 671 _19_calculatedCommitmentKey = (_18_derivedKeyingMaterial).Subsequence(0, 32) 672 var _20_sharedKeyingMaterial _dafny.Sequence 673 _ = _20_sharedKeyingMaterial 674 _20_sharedKeyingMaterial = (_18_derivedKeyingMaterial).Drop(32) 675 var _21_valueOrError5 m_Wrappers.Outcome = m_Wrappers.Companion_Outcome_.Default() 676 _ = _21_valueOrError5 677 _21_valueOrError5 = m_Wrappers.Companion_Default___.Need((_dafny.IntOfUint32((_19_calculatedCommitmentKey).Cardinality())).Cmp(_dafny.IntOfUint32((_9_commitmentKey).Cardinality())) == 0, Companion_Default___.E(_dafny.SeqOfString("Calculated commitment key length does NOT match expected commitment key length"))) 678 if (_21_valueOrError5).IsFailure() { 679 res = (_21_valueOrError5).PropagateFailure() 680 return res 681 } 682 var _22_check_q bool 683 _ = _22_check_q 684 var _out1 bool 685 _ = _out1 686 _out1 = (_this).CommitmentKeyCheck(_19_calculatedCommitmentKey, _9_commitmentKey) 687 _22_check_q = _out1 688 var _23_valueOrError6 m_Wrappers.Outcome = m_Wrappers.Companion_Outcome_.Default() 689 _ = _23_valueOrError6 690 _23_valueOrError6 = m_Wrappers.Companion_Default___.Need(_22_check_q, Companion_Default___.E(_dafny.SeqOfString("Commitment keys do not match"))) 691 if (_23_valueOrError6).IsFailure() { 692 res = (_23_valueOrError6).PropagateFailure() 693 return res 694 } 695 var _24_maybeUnwrappedPdk m_Wrappers.Result 696 _ = _24_maybeUnwrappedPdk 697 var _out2 m_Wrappers.Result 698 _ = _out2 699 _out2 = ((_this).Crypto()).AESDecrypt(m_AwsCryptographyPrimitivesTypes.Companion_AESDecryptInput_.Create_AESDecryptInput_(m_Constants.Companion_Default___.ECDH__AES__256__ENC__ALG(), _20_sharedKeyingMaterial, _10_wrappedKey, _11_authTag, _7_iv, _16_fixedInfo)) 700 _24_maybeUnwrappedPdk = _out2 701 var _25_valueOrError7 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(_dafny.EmptySeq) 702 _ = _25_valueOrError7 703 _25_valueOrError7 = (_24_maybeUnwrappedPdk).MapFailure(func(coer105 func(m_AwsCryptographyPrimitivesTypes.Error) m_AwsCryptographyMaterialProvidersTypes.Error) func(interface{}) interface{} { 704 return func(arg106 interface{}) interface{} { 705 return coer105(arg106.(m_AwsCryptographyPrimitivesTypes.Error)) 706 } 707 }(func(_26_e m_AwsCryptographyPrimitivesTypes.Error) m_AwsCryptographyMaterialProvidersTypes.Error { 708 return m_AwsCryptographyMaterialProvidersTypes.Companion_Error_.Create_AwsCryptographyPrimitives_(_26_e) 709 })) 710 if (_25_valueOrError7).IsFailure() { 711 res = (_25_valueOrError7).PropagateFailure() 712 return res 713 } 714 var _27_unwrappedPdk _dafny.Sequence 715 _ = _27_unwrappedPdk 716 _27_unwrappedPdk = (_25_valueOrError7).Extract().(_dafny.Sequence) 717 var _28_valueOrError8 m_Wrappers.Outcome = m_Wrappers.Companion_Outcome_.Default() 718 _ = _28_valueOrError8 719 _28_valueOrError8 = m_Wrappers.Companion_Default___.Need((_dafny.IntOfUint32((_27_unwrappedPdk).Cardinality())).Cmp(_dafny.IntOfInt32(m_AlgorithmSuites.Companion_Default___.GetEncryptKeyLength((input).Dtor_algorithmSuite()))) == 0, Companion_Default___.E(_dafny.SeqOfString("Invalid Key Length"))) 720 if (_28_valueOrError8).IsFailure() { 721 res = (_28_valueOrError8).PropagateFailure() 722 return res 723 } 724 var _29_output m_MaterialWrapping.UnwrapOutput 725 _ = _29_output 726 _29_output = m_MaterialWrapping.Companion_UnwrapOutput_.Create_UnwrapOutput_(_27_unwrappedPdk, Companion_EcdhUnwrapInfo_.Create_EcdhUnwrapInfo_()) 727 res = m_Wrappers.Companion_Result_.Create_Success_(_29_output) 728 return res 729 return res 730 } 731 } 732 func (_this *EcdhUnwrap) CommitmentKeyCheck(calculatedCommitmentKey _dafny.Sequence, serializedCommitmentKey _dafny.Sequence) bool { 733 { 734 var res bool = false 735 _ = res 736 var _0_diff_q uint8 737 _ = _0_diff_q 738 _0_diff_q = uint8(0) 739 var _hi0 _dafny.Int = _dafny.IntOfUint32((serializedCommitmentKey).Cardinality()) 740 _ = _hi0 741 for _1_i := _dafny.Zero; _1_i.Cmp(_hi0) < 0; _1_i = _1_i.Plus(_dafny.One) { 742 _0_diff_q = (_0_diff_q) | ((uint8((calculatedCommitmentKey).Select((_1_i).Uint32()).(uint8))) ^ (uint8((serializedCommitmentKey).Select((_1_i).Uint32()).(uint8)))) 743 } 744 res = (_0_diff_q) == (uint8(0)) 745 return res 746 } 747 } 748 func (_this *EcdhUnwrap) SenderPublicKey() _dafny.Sequence { 749 { 750 return _this._senderPublicKey 751 } 752 } 753 func (_this *EcdhUnwrap) RecipientPublicKey() _dafny.Sequence { 754 { 755 return _this._recipientPublicKey 756 } 757 } 758 func (_this *EcdhUnwrap) SharedSecret() _dafny.Sequence { 759 { 760 return _this._sharedSecret 761 } 762 } 763 func (_this *EcdhUnwrap) KeyringVersion() _dafny.Sequence { 764 { 765 return _this._keyringVersion 766 } 767 } 768 func (_this *EcdhUnwrap) CurveSpec() m_AwsCryptographyPrimitivesTypes.ECDHCurveSpec { 769 { 770 return _this._curveSpec 771 } 772 } 773 func (_this *EcdhUnwrap) Crypto() *m_AtomicPrimitives.AtomicPrimitivesClient { 774 { 775 return _this._crypto 776 } 777 } 778 779 // End of class EcdhUnwrap 780 781 // Definition of class EcdhGenerateAndWrapKeyMaterial 782 type EcdhGenerateAndWrapKeyMaterial struct { 783 _crypto *m_AtomicPrimitives.AtomicPrimitivesClient 784 _sharedSecret _dafny.Sequence 785 _fixedInfo _dafny.Sequence 786 } 787 788 func New_EcdhGenerateAndWrapKeyMaterial_() *EcdhGenerateAndWrapKeyMaterial { 789 _this := EcdhGenerateAndWrapKeyMaterial{} 790 791 _this._crypto = (*m_AtomicPrimitives.AtomicPrimitivesClient)(nil) 792 _this._sharedSecret = _dafny.EmptySeq 793 _this._fixedInfo = _dafny.EmptySeq 794 return &_this 795 } 796 797 type CompanionStruct_EcdhGenerateAndWrapKeyMaterial_ struct { 798 } 799 800 var Companion_EcdhGenerateAndWrapKeyMaterial_ = CompanionStruct_EcdhGenerateAndWrapKeyMaterial_{} 801 802 func (_this *EcdhGenerateAndWrapKeyMaterial) Equals(other *EcdhGenerateAndWrapKeyMaterial) bool { 803 return _this == other 804 } 805 806 func (_this *EcdhGenerateAndWrapKeyMaterial) EqualsGeneric(x interface{}) bool { 807 other, ok := x.(*EcdhGenerateAndWrapKeyMaterial) 808 return ok && _this.Equals(other) 809 } 810 811 func (*EcdhGenerateAndWrapKeyMaterial) String() string { 812 return "EcdhEdkWrapping.EcdhGenerateAndWrapKeyMaterial" 813 } 814 815 func Type_EcdhGenerateAndWrapKeyMaterial_() _dafny.TypeDescriptor { 816 return type_EcdhGenerateAndWrapKeyMaterial_{} 817 } 818 819 type type_EcdhGenerateAndWrapKeyMaterial_ struct { 820 } 821 822 func (_this type_EcdhGenerateAndWrapKeyMaterial_) Default() interface{} { 823 return (*EcdhGenerateAndWrapKeyMaterial)(nil) 824 } 825 826 func (_this type_EcdhGenerateAndWrapKeyMaterial_) String() string { 827 return "EcdhEdkWrapping.EcdhGenerateAndWrapKeyMaterial" 828 } 829 func (_this *EcdhGenerateAndWrapKeyMaterial) ParentTraits_() []*_dafny.TraitID { 830 return [](*_dafny.TraitID){m_MaterialWrapping.Companion_GenerateAndWrapMaterial_.TraitID_, m_Actions.Companion_ActionWithResult_.TraitID_, m_Actions.Companion_Action_.TraitID_} 831 } 832 833 var _ m_MaterialWrapping.GenerateAndWrapMaterial = &EcdhGenerateAndWrapKeyMaterial{} 834 var _ m_Actions.ActionWithResult = &EcdhGenerateAndWrapKeyMaterial{} 835 var _ m_Actions.Action = &EcdhGenerateAndWrapKeyMaterial{} 836 var _ _dafny.TraitOffspring = &EcdhGenerateAndWrapKeyMaterial{} 837 838 func (_this *EcdhGenerateAndWrapKeyMaterial) Ctor__(sharedSecret _dafny.Sequence, fixedInfo _dafny.Sequence, crypto *m_AtomicPrimitives.AtomicPrimitivesClient) { 839 { 840 (_this)._sharedSecret = sharedSecret 841 (_this)._fixedInfo = fixedInfo 842 (_this)._crypto = crypto 843 } 844 } 845 func (_this *EcdhGenerateAndWrapKeyMaterial) Invoke(input interface{}) interface{} { 846 { 847 var input m_MaterialWrapping.GenerateAndWrapInput = input.(m_MaterialWrapping.GenerateAndWrapInput) 848 _ = input 849 var res m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(m_MaterialWrapping.Companion_GenerateAndWrapOutput_.Default(Companion_EcdhWrapInfo_.Default())) 850 _ = res 851 var _0_suite m_AwsCryptographyMaterialProvidersTypes.AlgorithmSuiteInfo 852 _ = _0_suite 853 _0_suite = (input).Dtor_algorithmSuite() 854 var _1_pdkResult m_Wrappers.Result 855 _ = _1_pdkResult 856 var _out0 m_Wrappers.Result 857 _ = _out0 858 _out0 = ((_this).Crypto()).GenerateRandomBytes(m_AwsCryptographyPrimitivesTypes.Companion_GenerateRandomBytesInput_.Create_GenerateRandomBytesInput_(m_AlgorithmSuites.Companion_Default___.GetEncryptKeyLength(_0_suite))) 859 _1_pdkResult = _out0 860 var _2_valueOrError0 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(_dafny.EmptySeq) 861 _ = _2_valueOrError0 862 _2_valueOrError0 = (_1_pdkResult).MapFailure(func(coer106 func(m_AwsCryptographyPrimitivesTypes.Error) m_AwsCryptographyMaterialProvidersTypes.Error) func(interface{}) interface{} { 863 return func(arg107 interface{}) interface{} { 864 return coer106(arg107.(m_AwsCryptographyPrimitivesTypes.Error)) 865 } 866 }(func(_3_e m_AwsCryptographyPrimitivesTypes.Error) m_AwsCryptographyMaterialProvidersTypes.Error { 867 return m_AwsCryptographyMaterialProvidersTypes.Companion_Error_.Create_AwsCryptographyPrimitives_(_3_e) 868 })) 869 if (_2_valueOrError0).IsFailure() { 870 res = (_2_valueOrError0).PropagateFailure() 871 return res 872 } 873 var _4_pdk _dafny.Sequence 874 _ = _4_pdk 875 _4_pdk = (_2_valueOrError0).Extract().(_dafny.Sequence) 876 var _5_wrap *EcdhWrapKeyMaterial 877 _ = _5_wrap 878 var _nw0 *EcdhWrapKeyMaterial = New_EcdhWrapKeyMaterial_() 879 _ = _nw0 880 _nw0.Ctor__((_this).SharedSecret(), (_this).FixedInfo(), (_this).Crypto()) 881 _5_wrap = _nw0 882 var _6_valueOrError1 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(m_MaterialWrapping.Companion_WrapOutput_.Default(Companion_EcdhWrapInfo_.Default())) 883 _ = _6_valueOrError1 884 var _out1 interface{} 885 _ = _out1 886 _out1 = (_5_wrap).Invoke(m_MaterialWrapping.Companion_WrapInput_.Create_WrapInput_(_4_pdk, (input).Dtor_algorithmSuite(), (input).Dtor_encryptionContext())) 887 _6_valueOrError1 = _out1.(m_Wrappers.Result) 888 if (_6_valueOrError1).IsFailure() { 889 res = (_6_valueOrError1).PropagateFailure() 890 return res 891 } 892 var _7_wrapOutput m_MaterialWrapping.WrapOutput 893 _ = _7_wrapOutput 894 _7_wrapOutput = (_6_valueOrError1).Extract().(m_MaterialWrapping.WrapOutput) 895 var _8_output m_MaterialWrapping.GenerateAndWrapOutput 896 _ = _8_output 897 _8_output = m_MaterialWrapping.Companion_GenerateAndWrapOutput_.Create_GenerateAndWrapOutput_(_4_pdk, (_7_wrapOutput).Dtor_wrappedMaterial(), (_7_wrapOutput).Dtor_wrapInfo().(EcdhWrapInfo)) 898 res = m_Wrappers.Companion_Result_.Create_Success_(_8_output) 899 return res 900 return res 901 } 902 } 903 func (_this *EcdhGenerateAndWrapKeyMaterial) Crypto() *m_AtomicPrimitives.AtomicPrimitivesClient { 904 { 905 return _this._crypto 906 } 907 } 908 func (_this *EcdhGenerateAndWrapKeyMaterial) SharedSecret() _dafny.Sequence { 909 { 910 return _this._sharedSecret 911 } 912 } 913 func (_this *EcdhGenerateAndWrapKeyMaterial) FixedInfo() _dafny.Sequence { 914 { 915 return _this._fixedInfo 916 } 917 } 918 919 // End of class EcdhGenerateAndWrapKeyMaterial 920 921 // Definition of class EcdhWrapKeyMaterial 922 type EcdhWrapKeyMaterial struct { 923 _crypto *m_AtomicPrimitives.AtomicPrimitivesClient 924 _fixedInfo _dafny.Sequence 925 _sharedSecret _dafny.Sequence 926 } 927 928 func New_EcdhWrapKeyMaterial_() *EcdhWrapKeyMaterial { 929 _this := EcdhWrapKeyMaterial{} 930 931 _this._crypto = (*m_AtomicPrimitives.AtomicPrimitivesClient)(nil) 932 _this._fixedInfo = _dafny.EmptySeq 933 _this._sharedSecret = _dafny.EmptySeq 934 return &_this 935 } 936 937 type CompanionStruct_EcdhWrapKeyMaterial_ struct { 938 } 939 940 var Companion_EcdhWrapKeyMaterial_ = CompanionStruct_EcdhWrapKeyMaterial_{} 941 942 func (_this *EcdhWrapKeyMaterial) Equals(other *EcdhWrapKeyMaterial) bool { 943 return _this == other 944 } 945 946 func (_this *EcdhWrapKeyMaterial) EqualsGeneric(x interface{}) bool { 947 other, ok := x.(*EcdhWrapKeyMaterial) 948 return ok && _this.Equals(other) 949 } 950 951 func (*EcdhWrapKeyMaterial) String() string { 952 return "EcdhEdkWrapping.EcdhWrapKeyMaterial" 953 } 954 955 func Type_EcdhWrapKeyMaterial_() _dafny.TypeDescriptor { 956 return type_EcdhWrapKeyMaterial_{} 957 } 958 959 type type_EcdhWrapKeyMaterial_ struct { 960 } 961 962 func (_this type_EcdhWrapKeyMaterial_) Default() interface{} { 963 return (*EcdhWrapKeyMaterial)(nil) 964 } 965 966 func (_this type_EcdhWrapKeyMaterial_) String() string { 967 return "EcdhEdkWrapping.EcdhWrapKeyMaterial" 968 } 969 func (_this *EcdhWrapKeyMaterial) ParentTraits_() []*_dafny.TraitID { 970 return [](*_dafny.TraitID){m_MaterialWrapping.Companion_WrapMaterial_.TraitID_, m_Actions.Companion_ActionWithResult_.TraitID_, m_Actions.Companion_Action_.TraitID_} 971 } 972 973 var _ m_MaterialWrapping.WrapMaterial = &EcdhWrapKeyMaterial{} 974 var _ m_Actions.ActionWithResult = &EcdhWrapKeyMaterial{} 975 var _ m_Actions.Action = &EcdhWrapKeyMaterial{} 976 var _ _dafny.TraitOffspring = &EcdhWrapKeyMaterial{} 977 978 func (_this *EcdhWrapKeyMaterial) Ctor__(sharedSecret _dafny.Sequence, fixedInfo _dafny.Sequence, crypto *m_AtomicPrimitives.AtomicPrimitivesClient) { 979 { 980 (_this)._sharedSecret = sharedSecret 981 (_this)._fixedInfo = fixedInfo 982 (_this)._crypto = crypto 983 } 984 } 985 func (_this *EcdhWrapKeyMaterial) Invoke(input interface{}) interface{} { 986 { 987 var input m_MaterialWrapping.WrapInput = input.(m_MaterialWrapping.WrapInput) 988 _ = input 989 var res m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(m_MaterialWrapping.Companion_WrapOutput_.Default(Companion_EcdhWrapInfo_.Default())) 990 _ = res 991 var _0_suite m_AwsCryptographyMaterialProvidersTypes.AlgorithmSuiteInfo 992 _ = _0_suite 993 _0_suite = (input).Dtor_algorithmSuite() 994 var _1_valueOrError0 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(_dafny.EmptySeq) 995 _ = _1_valueOrError0 996 _1_valueOrError0 = m_CanonicalEncryptionContext.Companion_Default___.EncryptionContextToAAD((input).Dtor_encryptionContext()) 997 if (_1_valueOrError0).IsFailure() { 998 res = (_1_valueOrError0).PropagateFailure() 999 return res 1000 } 1001 var _2_canonicalizedEC _dafny.Sequence 1002 _ = _2_canonicalizedEC 1003 _2_canonicalizedEC = (_1_valueOrError0).Extract().(_dafny.Sequence) 1004 var _3_maybeSalt m_Wrappers.Result 1005 _ = _3_maybeSalt 1006 var _out0 m_Wrappers.Result 1007 _ = _out0 1008 _out0 = ((_this).Crypto()).GenerateRandomBytes(m_AwsCryptographyPrimitivesTypes.Companion_GenerateRandomBytesInput_.Create_GenerateRandomBytesInput_(m_Constants.Companion_Default___.KDF__SALT__LEN())) 1009 _3_maybeSalt = _out0 1010 var _4_valueOrError1 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(_dafny.EmptySeq) 1011 _ = _4_valueOrError1 1012 _4_valueOrError1 = (_3_maybeSalt).MapFailure(func(coer107 func(m_AwsCryptographyPrimitivesTypes.Error) m_AwsCryptographyMaterialProvidersTypes.Error) func(interface{}) interface{} { 1013 return func(arg108 interface{}) interface{} { 1014 return coer107(arg108.(m_AwsCryptographyPrimitivesTypes.Error)) 1015 } 1016 }(func(_5_e m_AwsCryptographyPrimitivesTypes.Error) m_AwsCryptographyMaterialProvidersTypes.Error { 1017 return m_AwsCryptographyMaterialProvidersTypes.Companion_Error_.Create_AwsCryptographyPrimitives_(_5_e) 1018 })) 1019 if (_4_valueOrError1).IsFailure() { 1020 res = (_4_valueOrError1).PropagateFailure() 1021 return res 1022 } 1023 var _6_salt _dafny.Sequence 1024 _ = _6_salt 1025 _6_salt = (_4_valueOrError1).Extract().(_dafny.Sequence) 1026 var _7_valueOrError2 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(_dafny.EmptySeq) 1027 _ = _7_valueOrError2 1028 var _out1 m_Wrappers.Result 1029 _ = _out1 1030 _out1 = Companion_Default___.DeriveSharedKeyingMaterial((_this).SharedSecret(), (_this).FixedInfo(), _6_salt, (_this).Crypto()) 1031 _7_valueOrError2 = _out1 1032 if (_7_valueOrError2).IsFailure() { 1033 res = (_7_valueOrError2).PropagateFailure() 1034 return res 1035 } 1036 var _8_derivedKeyingMaterial _dafny.Sequence 1037 _ = _8_derivedKeyingMaterial 1038 _8_derivedKeyingMaterial = (_7_valueOrError2).Extract().(_dafny.Sequence) 1039 var _9_commitmentKey _dafny.Sequence 1040 _ = _9_commitmentKey 1041 _9_commitmentKey = (_8_derivedKeyingMaterial).Subsequence(0, 32) 1042 var _10_sharedKeyingMaterial _dafny.Sequence 1043 _ = _10_sharedKeyingMaterial 1044 _10_sharedKeyingMaterial = (_8_derivedKeyingMaterial).Drop(32) 1045 var _11_iv _dafny.Sequence 1046 _ = _11_iv 1047 _11_iv = _dafny.SeqCreate((_dafny.IntOfInt32((m_Constants.Companion_Default___.ECDH__AES__256__ENC__ALG()).Dtor_ivLength())).Uint32(), func(coer108 func(_dafny.Int) uint8) func(_dafny.Int) interface{} { 1048 return func(arg109 _dafny.Int) interface{} { 1049 return coer108(arg109) 1050 } 1051 }(func(_12___v3 _dafny.Int) uint8 { 1052 return uint8(0) 1053 })) 1054 var _13_maybeWrappedPdk m_Wrappers.Result 1055 _ = _13_maybeWrappedPdk 1056 var _out2 m_Wrappers.Result 1057 _ = _out2 1058 _out2 = ((_this).Crypto()).AESEncrypt(m_AwsCryptographyPrimitivesTypes.Companion_AESEncryptInput_.Create_AESEncryptInput_(m_Constants.Companion_Default___.ECDH__AES__256__ENC__ALG(), _11_iv, _10_sharedKeyingMaterial, (input).Dtor_plaintextMaterial(), (_this).FixedInfo())) 1059 _13_maybeWrappedPdk = _out2 1060 var _14_valueOrError3 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(m_AwsCryptographyPrimitivesTypes.Companion_AESEncryptOutput_.Default()) 1061 _ = _14_valueOrError3 1062 _14_valueOrError3 = (_13_maybeWrappedPdk).MapFailure(func(coer109 func(m_AwsCryptographyPrimitivesTypes.Error) m_AwsCryptographyMaterialProvidersTypes.Error) func(interface{}) interface{} { 1063 return func(arg110 interface{}) interface{} { 1064 return coer109(arg110.(m_AwsCryptographyPrimitivesTypes.Error)) 1065 } 1066 }(func(_15_e m_AwsCryptographyPrimitivesTypes.Error) m_AwsCryptographyMaterialProvidersTypes.Error { 1067 return m_AwsCryptographyMaterialProvidersTypes.Companion_Error_.Create_AwsCryptographyPrimitives_(_15_e) 1068 })) 1069 if (_14_valueOrError3).IsFailure() { 1070 res = (_14_valueOrError3).PropagateFailure() 1071 return res 1072 } 1073 var _16_wrappedPdk m_AwsCryptographyPrimitivesTypes.AESEncryptOutput 1074 _ = _16_wrappedPdk 1075 _16_wrappedPdk = (_14_valueOrError3).Extract().(m_AwsCryptographyPrimitivesTypes.AESEncryptOutput) 1076 var _17_output m_MaterialWrapping.WrapOutput 1077 _ = _17_output 1078 _17_output = m_MaterialWrapping.Companion_WrapOutput_.Create_WrapOutput_(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_6_salt, _9_commitmentKey), (_16_wrappedPdk).Dtor_cipherText()), (_16_wrappedPdk).Dtor_authTag()), Companion_EcdhWrapInfo_.Create_EcdhWrapInfo_()) 1079 res = m_Wrappers.Companion_Result_.Create_Success_(_17_output) 1080 return res 1081 return res 1082 } 1083 } 1084 func (_this *EcdhWrapKeyMaterial) Crypto() *m_AtomicPrimitives.AtomicPrimitivesClient { 1085 { 1086 return _this._crypto 1087 } 1088 } 1089 func (_this *EcdhWrapKeyMaterial) FixedInfo() _dafny.Sequence { 1090 { 1091 return _this._fixedInfo 1092 } 1093 } 1094 func (_this *EcdhWrapKeyMaterial) SharedSecret() _dafny.Sequence { 1095 { 1096 return _this._sharedSecret 1097 } 1098 } 1099 1100 // End of class EcdhWrapKeyMaterial