github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl@v0.2.0/AwsKmsMrkKeyring/AwsKmsMrkKeyring.go (about)

     1  // Package AwsKmsMrkKeyring
     2  // Dafny module AwsKmsMrkKeyring compiled into Go
     3  
     4  package AwsKmsMrkKeyring
     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_AwsKmsKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsKeyring"
    20  	m_AwsKmsMrkAreUnique "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkAreUnique"
    21  	m_AwsKmsMrkDiscoveryKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkDiscoveryKeyring"
    22  	m_AwsKmsMrkMatchForDecrypt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkMatchForDecrypt"
    23  	m_AwsKmsUtils "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsUtils"
    24  	m_CanonicalEncryptionContext "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CanonicalEncryptionContext"
    25  	m_Constants "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Constants"
    26  	m_CreateKeyStoreTable "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CreateKeyStoreTable"
    27  	m_CreateKeys "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CreateKeys"
    28  	m_DDBKeystoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DDBKeystoreOperations"
    29  	m_DiscoveryMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DiscoveryMultiKeyring"
    30  	m_EdkWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/EdkWrapping"
    31  	m_ErrorMessages "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/ErrorMessages"
    32  	m_GetKeys "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/GetKeys"
    33  	m_IntermediateKeyWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/IntermediateKeyWrapping"
    34  	m_KMSKeystoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KMSKeystoreOperations"
    35  	m_KeyStore "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KeyStore"
    36  	m_KeyStoreErrorMessages "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KeyStoreErrorMessages"
    37  	m_Keyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Keyring"
    38  	m_KmsArn "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KmsArn"
    39  	m_MaterialWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MaterialWrapping"
    40  	m_Materials "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Materials"
    41  	m_MrkAwareDiscoveryMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MrkAwareDiscoveryMultiKeyring"
    42  	m_MultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MultiKeyring"
    43  	m_StrictMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StrictMultiKeyring"
    44  	m_Structure "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Structure"
    45  	m_AtomicPrimitives "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AtomicPrimitives"
    46  	m_AwsCryptographyPrimitivesOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AwsCryptographyPrimitivesOperations"
    47  	m_AwsCryptographyPrimitivesTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AwsCryptographyPrimitivesTypes"
    48  	m_Digest "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/Digest"
    49  	m_HKDF "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/HKDF"
    50  	m_KdfCtr "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/KdfCtr"
    51  	m_Random "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/Random"
    52  	m_WrappedHKDF "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/WrappedHKDF"
    53  	m_WrappedHMAC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/WrappedHMAC"
    54  	m_Actions "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Actions"
    55  	m_Base64 "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Base64"
    56  	m_Base64Lemmas "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Base64Lemmas"
    57  	m_BoundedInts "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/BoundedInts"
    58  	m_DivInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivInternals"
    59  	m_DivInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivInternalsNonlinear"
    60  	m_DivMod "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivMod"
    61  	m_FileIO "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/FileIO"
    62  	m_FloatCompare "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/FloatCompare"
    63  	m_Functions "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Functions"
    64  	m_GeneralInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/GeneralInternals"
    65  	m_GetOpt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/GetOpt"
    66  	m_HexStrings "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/HexStrings"
    67  	m_Logarithm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Logarithm"
    68  	m__Math "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Math_"
    69  	m_ModInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/ModInternals"
    70  	m_ModInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/ModInternalsNonlinear"
    71  	m_Mul "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Mul"
    72  	m_MulInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/MulInternals"
    73  	m_MulInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/MulInternalsNonlinear"
    74  	m_Power "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Power"
    75  	m_Relations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Relations"
    76  	m_Seq "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Seq"
    77  	m_Seq_MergeSort "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Seq_MergeSort"
    78  	m_Sorting "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Sorting"
    79  	m_StandardLibrary "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary"
    80  	m_StandardLibraryInterop "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibraryInterop"
    81  	m_StandardLibrary_Sequence "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_Sequence"
    82  	m_StandardLibrary_String "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_String"
    83  	m_StandardLibrary_UInt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_UInt"
    84  	m_Streams "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Streams"
    85  	m_UTF8 "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/UTF8"
    86  	m_UnicodeStrings "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/UnicodeStrings"
    87  	m__Unicode "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Unicode_"
    88  	m_Utf16EncodingForm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Utf16EncodingForm"
    89  	m_Utf8EncodingForm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Utf8EncodingForm"
    90  	m_Wrappers "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Wrappers"
    91  	m__System "github.com/dafny-lang/DafnyRuntimeGo/v4/System_"
    92  	_dafny "github.com/dafny-lang/DafnyRuntimeGo/v4/dafny"
    93  )
    94  
    95  var _ = os.Args
    96  var _ _dafny.Dummy__
    97  var _ m__System.Dummy__
    98  var _ m_Wrappers.Dummy__
    99  var _ m_BoundedInts.Dummy__
   100  var _ m_StandardLibrary_UInt.Dummy__
   101  var _ m_StandardLibrary_Sequence.Dummy__
   102  var _ m_StandardLibrary_String.Dummy__
   103  var _ m_StandardLibrary.Dummy__
   104  var _ m_AwsCryptographyPrimitivesTypes.Dummy__
   105  var _ m_Random.Dummy__
   106  var _ m_Digest.Dummy__
   107  var _ m_WrappedHMAC.Dummy__
   108  var _ m_HKDF.Dummy__
   109  var _ m_WrappedHKDF.Dummy__
   110  var _ m_KdfCtr.Dummy__
   111  var _ m_AwsCryptographyPrimitivesOperations.Dummy__
   112  var _ m_AtomicPrimitives.Dummy__
   113  var _ m_ComAmazonawsDynamodbTypes.Dummy__
   114  var _ m_ComAmazonawsKmsTypes.Dummy__
   115  var _ m_Relations.Dummy__
   116  var _ m_Seq_MergeSort.Dummy__
   117  var _ m__Math.Dummy__
   118  var _ m_Seq.Dummy__
   119  var _ m__Unicode.Dummy__
   120  var _ m_Functions.Dummy__
   121  var _ m_Utf8EncodingForm.Dummy__
   122  var _ m_Utf16EncodingForm.Dummy__
   123  var _ m_UnicodeStrings.Dummy__
   124  var _ m_FileIO.Dummy__
   125  var _ m_GeneralInternals.Dummy__
   126  var _ m_MulInternalsNonlinear.Dummy__
   127  var _ m_MulInternals.Dummy__
   128  var _ m_Mul.Dummy__
   129  var _ m_ModInternalsNonlinear.Dummy__
   130  var _ m_DivInternalsNonlinear.Dummy__
   131  var _ m_ModInternals.Dummy__
   132  var _ m_DivInternals.Dummy__
   133  var _ m_DivMod.Dummy__
   134  var _ m_Power.Dummy__
   135  var _ m_Logarithm.Dummy__
   136  var _ m_StandardLibraryInterop.Dummy__
   137  var _ m_Streams.Dummy__
   138  var _ m_Sorting.Dummy__
   139  var _ m_HexStrings.Dummy__
   140  var _ m_GetOpt.Dummy__
   141  var _ m_FloatCompare.Dummy__
   142  var _ m_Base64.Dummy__
   143  var _ m_Base64Lemmas.Dummy__
   144  var _ m_Actions.Dummy__
   145  var _ m_AwsCryptographyKeyStoreTypes.Dummy__
   146  var _ m_AwsCryptographyMaterialProvidersTypes.Dummy__
   147  var _ m_AwsArnParsing.Dummy__
   148  var _ m_AwsKmsMrkMatchForDecrypt.Dummy__
   149  var _ m_AwsKmsUtils.Dummy__
   150  var _ m_KeyStoreErrorMessages.Dummy__
   151  var _ m_KmsArn.Dummy__
   152  var _ m_Structure.Dummy__
   153  var _ m_KMSKeystoreOperations.Dummy__
   154  var _ m_DDBKeystoreOperations.Dummy__
   155  var _ m_CreateKeys.Dummy__
   156  var _ m_CreateKeyStoreTable.Dummy__
   157  var _ m_GetKeys.Dummy__
   158  var _ m_AwsCryptographyKeyStoreOperations.Dummy__
   159  var _ m_Com_Amazonaws_Kms.Dummy__
   160  var _ m_Com_Amazonaws_Dynamodb.Dummy__
   161  var _ m_KeyStore.Dummy__
   162  var _ m_AlgorithmSuites.Dummy__
   163  var _ m_Materials.Dummy__
   164  var _ m_Keyring.Dummy__
   165  var _ m_MultiKeyring.Dummy__
   166  var _ m_AwsKmsMrkAreUnique.Dummy__
   167  var _ m_Constants.Dummy__
   168  var _ m_MaterialWrapping.Dummy__
   169  var _ m_CanonicalEncryptionContext.Dummy__
   170  var _ m_IntermediateKeyWrapping.Dummy__
   171  var _ m_EdkWrapping.Dummy__
   172  var _ m_ErrorMessages.Dummy__
   173  var _ m_AwsKmsKeyring.Dummy__
   174  var _ m_StrictMultiKeyring.Dummy__
   175  var _ m_AwsKmsDiscoveryKeyring.Dummy__
   176  var _ m_DiscoveryMultiKeyring.Dummy__
   177  var _ m_AwsKmsMrkDiscoveryKeyring.Dummy__
   178  var _ m_MrkAwareDiscoveryMultiKeyring.Dummy__
   179  
   180  type Dummy__ struct{}
   181  
   182  // Definition of class AwsKmsMrkKeyring
   183  type AwsKmsMrkKeyring struct {
   184  	_client      m_ComAmazonawsKmsTypes.IKMSClient
   185  	_awsKmsKey   _dafny.Sequence
   186  	_grantTokens _dafny.Sequence
   187  	_awsKmsArn   m_AwsArnParsing.AwsKmsIdentifier
   188  }
   189  
   190  func New_AwsKmsMrkKeyring_() *AwsKmsMrkKeyring {
   191  	_this := AwsKmsMrkKeyring{}
   192  
   193  	_this._client = (m_ComAmazonawsKmsTypes.IKMSClient)(nil)
   194  	_this._awsKmsKey = _dafny.EmptySeq.SetString()
   195  	_this._grantTokens = _dafny.EmptySeq
   196  	_this._awsKmsArn = m_AwsArnParsing.AwsKmsIdentifier{}
   197  	return &_this
   198  }
   199  
   200  type CompanionStruct_AwsKmsMrkKeyring_ struct {
   201  }
   202  
   203  var Companion_AwsKmsMrkKeyring_ = CompanionStruct_AwsKmsMrkKeyring_{}
   204  
   205  func (_this *AwsKmsMrkKeyring) Equals(other *AwsKmsMrkKeyring) bool {
   206  	return _this == other
   207  }
   208  
   209  func (_this *AwsKmsMrkKeyring) EqualsGeneric(x interface{}) bool {
   210  	other, ok := x.(*AwsKmsMrkKeyring)
   211  	return ok && _this.Equals(other)
   212  }
   213  
   214  func (*AwsKmsMrkKeyring) String() string {
   215  	return "AwsKmsMrkKeyring.AwsKmsMrkKeyring"
   216  }
   217  
   218  func Type_AwsKmsMrkKeyring_() _dafny.TypeDescriptor {
   219  	return type_AwsKmsMrkKeyring_{}
   220  }
   221  
   222  type type_AwsKmsMrkKeyring_ struct {
   223  }
   224  
   225  func (_this type_AwsKmsMrkKeyring_) Default() interface{} {
   226  	return (*AwsKmsMrkKeyring)(nil)
   227  }
   228  
   229  func (_this type_AwsKmsMrkKeyring_) String() string {
   230  	return "AwsKmsMrkKeyring.AwsKmsMrkKeyring"
   231  }
   232  func (_this *AwsKmsMrkKeyring) ParentTraits_() []*_dafny.TraitID {
   233  	return [](*_dafny.TraitID){m_Keyring.Companion_VerifiableInterface_.TraitID_, m_AwsCryptographyMaterialProvidersTypes.Companion_IKeyring_.TraitID_}
   234  }
   235  
   236  var _ m_Keyring.VerifiableInterface = &AwsKmsMrkKeyring{}
   237  var _ m_AwsCryptographyMaterialProvidersTypes.IKeyring = &AwsKmsMrkKeyring{}
   238  var _ _dafny.TraitOffspring = &AwsKmsMrkKeyring{}
   239  
   240  func (_this *AwsKmsMrkKeyring) OnDecrypt(input m_AwsCryptographyMaterialProvidersTypes.OnDecryptInput) m_Wrappers.Result {
   241  	var _out5 m_Wrappers.Result
   242  	_ = _out5
   243  	_out5 = m_AwsCryptographyMaterialProvidersTypes.Companion_IKeyring_.OnDecrypt(_this, input)
   244  	return _out5
   245  }
   246  func (_this *AwsKmsMrkKeyring) OnEncrypt(input m_AwsCryptographyMaterialProvidersTypes.OnEncryptInput) m_Wrappers.Result {
   247  	var _out5 m_Wrappers.Result
   248  	_ = _out5
   249  	_out5 = m_AwsCryptographyMaterialProvidersTypes.Companion_IKeyring_.OnEncrypt(_this, input)
   250  	return _out5
   251  }
   252  func (_this *AwsKmsMrkKeyring) Ctor__(client m_ComAmazonawsKmsTypes.IKMSClient, awsKmsKey _dafny.Sequence, grantTokens _dafny.Sequence) {
   253  	{
   254  		var _0_parsedAwsKmsId m_Wrappers.Result
   255  		_ = _0_parsedAwsKmsId
   256  		_0_parsedAwsKmsId = m_AwsArnParsing.Companion_Default___.ParseAwsKmsIdentifier(awsKmsKey)
   257  		(_this)._client = client
   258  		(_this)._awsKmsKey = awsKmsKey
   259  		(_this)._awsKmsArn = (_0_parsedAwsKmsId).Dtor_value().(m_AwsArnParsing.AwsKmsIdentifier)
   260  		(_this)._grantTokens = grantTokens
   261  	}
   262  }
   263  func (_this *AwsKmsMrkKeyring) OnEncrypt_k(input m_AwsCryptographyMaterialProvidersTypes.OnEncryptInput) m_Wrappers.Result {
   264  	{
   265  		var output m_Wrappers.Result = m_Wrappers.Result{}
   266  		_ = output
   267  		var _0_materials m_AwsCryptographyMaterialProvidersTypes.EncryptionMaterials
   268  		_ = _0_materials
   269  		_0_materials = (input).Dtor_materials()
   270  		var _1_suite m_AwsCryptographyMaterialProvidersTypes.AlgorithmSuiteInfo
   271  		_ = _1_suite
   272  		_1_suite = ((input).Dtor_materials()).Dtor_algorithmSuite()
   273  		var _2_valueOrError0 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(_dafny.EmptyMap)
   274  		_ = _2_valueOrError0
   275  		_2_valueOrError0 = m_AwsKmsUtils.Companion_Default___.StringifyEncryptionContext(((input).Dtor_materials()).Dtor_encryptionContext())
   276  		if (_2_valueOrError0).IsFailure() {
   277  			output = (_2_valueOrError0).PropagateFailure()
   278  			return output
   279  		}
   280  		var _3_stringifiedEncCtx _dafny.Map
   281  		_ = _3_stringifiedEncCtx
   282  		_3_stringifiedEncCtx = (_2_valueOrError0).Extract().(_dafny.Map)
   283  		var _4_kmsGenerateAndWrap *m_AwsKmsKeyring.KmsGenerateAndWrapKeyMaterial
   284  		_ = _4_kmsGenerateAndWrap
   285  		var _nw0 *m_AwsKmsKeyring.KmsGenerateAndWrapKeyMaterial = m_AwsKmsKeyring.New_KmsGenerateAndWrapKeyMaterial_()
   286  		_ = _nw0
   287  		_nw0.Ctor__((_this).Client(), (_this).AwsKmsKey(), (_this).GrantTokens())
   288  		_4_kmsGenerateAndWrap = _nw0
   289  		var _5_kmsWrap *m_AwsKmsKeyring.KmsWrapKeyMaterial
   290  		_ = _5_kmsWrap
   291  		var _nw1 *m_AwsKmsKeyring.KmsWrapKeyMaterial = m_AwsKmsKeyring.New_KmsWrapKeyMaterial_()
   292  		_ = _nw1
   293  		_nw1.Ctor__((_this).Client(), (_this).AwsKmsKey(), (_this).GrantTokens())
   294  		_5_kmsWrap = _nw1
   295  		var _6_valueOrError1 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(m_EdkWrapping.Companion_WrapEdkMaterialOutput_.Default(m_AwsKmsKeyring.Companion_KmsWrapInfo_.Default()))
   296  		_ = _6_valueOrError1
   297  		var _out0 m_Wrappers.Result
   298  		_ = _out0
   299  		_out0 = m_EdkWrapping.Companion_Default___.WrapEdkMaterial(_0_materials, _5_kmsWrap, _4_kmsGenerateAndWrap)
   300  		_6_valueOrError1 = _out0
   301  		if (_6_valueOrError1).IsFailure() {
   302  			output = (_6_valueOrError1).PropagateFailure()
   303  			return output
   304  		}
   305  		var _7_wrapOutput m_EdkWrapping.WrapEdkMaterialOutput
   306  		_ = _7_wrapOutput
   307  		_7_wrapOutput = (_6_valueOrError1).Extract().(m_EdkWrapping.WrapEdkMaterialOutput)
   308  		var _8_kmsKeyArn _dafny.Sequence
   309  		_ = _8_kmsKeyArn
   310  		_8_kmsKeyArn = ((_7_wrapOutput).Dtor_wrapInfo().(m_AwsKmsKeyring.KmsWrapInfo)).Dtor_kmsKeyArn()
   311  		var _9_symmetricSigningKeyList m_Wrappers.Option
   312  		_ = _9_symmetricSigningKeyList
   313  		if ((_7_wrapOutput).Dtor_symmetricSigningKey()).Is_Some() {
   314  			_9_symmetricSigningKeyList = m_Wrappers.Companion_Option_.Create_Some_(_dafny.SeqOf(((_7_wrapOutput).Dtor_symmetricSigningKey()).Dtor_value().(_dafny.Sequence)))
   315  		} else {
   316  			_9_symmetricSigningKeyList = m_Wrappers.Companion_Option_.Create_None_()
   317  		}
   318  		var _10_valueOrError2 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(m_UTF8.Companion_ValidUTF8Bytes_.Witness())
   319  		_ = _10_valueOrError2
   320  		_10_valueOrError2 = (m_UTF8.Encode(_8_kmsKeyArn)).MapFailure(func(coer69 func(_dafny.Sequence) m_AwsCryptographyMaterialProvidersTypes.Error) func(interface{}) interface{} {
   321  			return func(arg70 interface{}) interface{} {
   322  				return coer69(arg70.(_dafny.Sequence))
   323  			}
   324  		}(m_AwsKmsUtils.Companion_Default___.WrapStringToError))
   325  		if (_10_valueOrError2).IsFailure() {
   326  			output = (_10_valueOrError2).PropagateFailure()
   327  			return output
   328  		}
   329  		var _11_providerInfo _dafny.Sequence
   330  		_ = _11_providerInfo
   331  		_11_providerInfo = (_10_valueOrError2).Extract().(_dafny.Sequence)
   332  		var _12_valueOrError3 m_Wrappers.Outcome = m_Wrappers.Companion_Outcome_.Default()
   333  		_ = _12_valueOrError3
   334  		_12_valueOrError3 = m_Wrappers.Companion_Default___.Need((_dafny.IntOfUint32((_11_providerInfo).Cardinality())).Cmp(m_StandardLibrary_UInt.Companion_Default___.UINT16__LIMIT()) < 0, m_AwsCryptographyMaterialProvidersTypes.Companion_Error_.Create_AwsCryptographicMaterialProvidersException_(_dafny.SeqOfString("Invalid response from AWS KMS GenerateDataKey: Key ID too long.")))
   335  		if (_12_valueOrError3).IsFailure() {
   336  			output = (_12_valueOrError3).PropagateFailure()
   337  			return output
   338  		}
   339  		var _13_edk m_AwsCryptographyMaterialProvidersTypes.EncryptedDataKey
   340  		_ = _13_edk
   341  		_13_edk = m_AwsCryptographyMaterialProvidersTypes.Companion_EncryptedDataKey_.Create_EncryptedDataKey_(m_Constants.Companion_Default___.PROVIDER__ID(), _11_providerInfo, (_7_wrapOutput).Dtor_wrappedMaterial())
   342  		if (_7_wrapOutput).Is_GenerateAndWrapEdkMaterialOutput() {
   343  			var _14_valueOrError4 m_Wrappers.Result = m_Wrappers.Result{}
   344  			_ = _14_valueOrError4
   345  			_14_valueOrError4 = m_Materials.Companion_Default___.EncryptionMaterialAddDataKey(_0_materials, (_7_wrapOutput).Dtor_plaintextDataKey(), _dafny.SeqOf(_13_edk), _9_symmetricSigningKeyList)
   346  			if (_14_valueOrError4).IsFailure() {
   347  				output = (_14_valueOrError4).PropagateFailure()
   348  				return output
   349  			}
   350  			var _15_result m_AwsCryptographyMaterialProvidersTypes.EncryptionMaterials
   351  			_ = _15_result
   352  			_15_result = (_14_valueOrError4).Extract().(m_AwsCryptographyMaterialProvidersTypes.EncryptionMaterials)
   353  			output = m_Wrappers.Companion_Result_.Create_Success_(m_AwsCryptographyMaterialProvidersTypes.Companion_OnEncryptOutput_.Create_OnEncryptOutput_(_15_result))
   354  			return output
   355  		} else if (_7_wrapOutput).Is_WrapOnlyEdkMaterialOutput() {
   356  			var _16_valueOrError5 m_Wrappers.Result = m_Wrappers.Result{}
   357  			_ = _16_valueOrError5
   358  			_16_valueOrError5 = m_Materials.Companion_Default___.EncryptionMaterialAddEncryptedDataKeys(_0_materials, _dafny.SeqOf(_13_edk), _9_symmetricSigningKeyList)
   359  			if (_16_valueOrError5).IsFailure() {
   360  				output = (_16_valueOrError5).PropagateFailure()
   361  				return output
   362  			}
   363  			var _17_result m_AwsCryptographyMaterialProvidersTypes.EncryptionMaterials
   364  			_ = _17_result
   365  			_17_result = (_16_valueOrError5).Extract().(m_AwsCryptographyMaterialProvidersTypes.EncryptionMaterials)
   366  			output = m_Wrappers.Companion_Result_.Create_Success_(m_AwsCryptographyMaterialProvidersTypes.Companion_OnEncryptOutput_.Create_OnEncryptOutput_(_17_result))
   367  			return output
   368  		}
   369  		return output
   370  	}
   371  }
   372  func (_this *AwsKmsMrkKeyring) OnDecrypt_k(input m_AwsCryptographyMaterialProvidersTypes.OnDecryptInput) m_Wrappers.Result {
   373  	{
   374  		var output m_Wrappers.Result = m_Wrappers.Result{}
   375  		_ = output
   376  		var _0_materials m_AwsCryptographyMaterialProvidersTypes.DecryptionMaterials
   377  		_ = _0_materials
   378  		_0_materials = (input).Dtor_materials()
   379  		var _1_suite m_AwsCryptographyMaterialProvidersTypes.AlgorithmSuiteInfo
   380  		_ = _1_suite
   381  		_1_suite = ((input).Dtor_materials()).Dtor_algorithmSuite()
   382  		var _2_valueOrError0 m_Wrappers.Outcome = m_Wrappers.Companion_Outcome_.Default()
   383  		_ = _2_valueOrError0
   384  		_2_valueOrError0 = m_Wrappers.Companion_Default___.Need(m_Materials.Companion_Default___.DecryptionMaterialsWithoutPlaintextDataKey(_0_materials), m_AwsCryptographyMaterialProvidersTypes.Companion_Error_.Create_AwsCryptographicMaterialProvidersException_(_dafny.SeqOfString("Keyring received decryption materials that already contain a plaintext data key.")))
   385  		if (_2_valueOrError0).IsFailure() {
   386  			output = (_2_valueOrError0).PropagateFailure()
   387  			return output
   388  		}
   389  		var _3_valueOrError1 m_Wrappers.Outcome = m_Wrappers.Companion_Outcome_.Default()
   390  		_ = _3_valueOrError1
   391  		_3_valueOrError1 = m_AwsKmsUtils.Companion_Default___.OkForDecrypt((_this).AwsKmsArn(), (_this).AwsKmsKey())
   392  		if (_3_valueOrError1).IsFailure() {
   393  			output = (_3_valueOrError1).PropagateFailure()
   394  			return output
   395  		}
   396  		var _4_filter *m_AwsKmsUtils.OnDecryptMrkAwareEncryptedDataKeyFilter
   397  		_ = _4_filter
   398  		var _nw0 *m_AwsKmsUtils.OnDecryptMrkAwareEncryptedDataKeyFilter = m_AwsKmsUtils.New_OnDecryptMrkAwareEncryptedDataKeyFilter_()
   399  		_ = _nw0
   400  		_nw0.Ctor__((_this).AwsKmsArn(), m_Constants.Companion_Default___.PROVIDER__ID())
   401  		_4_filter = _nw0
   402  		var _5_valueOrError2 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(_dafny.EmptySeq)
   403  		_ = _5_valueOrError2
   404  		var _out0 m_Wrappers.Result
   405  		_ = _out0
   406  		_out0 = m_Actions.Companion_Default___.FilterWithResult(_4_filter, (input).Dtor_encryptedDataKeys())
   407  		_5_valueOrError2 = _out0
   408  		if (_5_valueOrError2).IsFailure() {
   409  			output = (_5_valueOrError2).PropagateFailure()
   410  			return output
   411  		}
   412  		var _6_edksToAttempt _dafny.Sequence
   413  		_ = _6_edksToAttempt
   414  		_6_edksToAttempt = (_5_valueOrError2).Extract().(_dafny.Sequence)
   415  		if (_dafny.IntOfUint32((_6_edksToAttempt).Cardinality())).Sign() == 0 {
   416  			var _7_valueOrError3 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(_dafny.EmptySeq.SetString())
   417  			_ = _7_valueOrError3
   418  			_7_valueOrError3 = m_ErrorMessages.Companion_Default___.IncorrectDataKeys((input).Dtor_encryptedDataKeys(), ((input).Dtor_materials()).Dtor_algorithmSuite(), _dafny.SeqOfString(""))
   419  			if (_7_valueOrError3).IsFailure() {
   420  				output = (_7_valueOrError3).PropagateFailure()
   421  				return output
   422  			}
   423  			var _8_errorMessage _dafny.Sequence
   424  			_ = _8_errorMessage
   425  			_8_errorMessage = (_7_valueOrError3).Extract().(_dafny.Sequence)
   426  			output = m_Wrappers.Companion_Result_.Create_Failure_(m_AwsCryptographyMaterialProvidersTypes.Companion_Error_.Create_AwsCryptographicMaterialProvidersException_(_8_errorMessage))
   427  			return output
   428  		}
   429  		var _9_decryptClosure *DecryptSingleEncryptedDataKey
   430  		_ = _9_decryptClosure
   431  		var _nw1 *DecryptSingleEncryptedDataKey = New_DecryptSingleEncryptedDataKey_()
   432  		_ = _nw1
   433  		_nw1.Ctor__(_0_materials, (_this).Client(), (_this).AwsKmsKey(), (_this).GrantTokens())
   434  		_9_decryptClosure = _nw1
   435  		var _10_outcome m_Wrappers.Result
   436  		_ = _10_outcome
   437  		var _out1 m_Wrappers.Result
   438  		_ = _out1
   439  		_out1 = m_Actions.Companion_Default___.ReduceToSuccess(_9_decryptClosure, _6_edksToAttempt)
   440  		_10_outcome = _out1
   441  		var _11_valueOrError4 m_Wrappers.Result = m_Wrappers.Result{}
   442  		_ = _11_valueOrError4
   443  		_11_valueOrError4 = (_10_outcome).MapFailure(func(coer70 func(_dafny.Sequence) m_AwsCryptographyMaterialProvidersTypes.Error) func(interface{}) interface{} {
   444  			return func(arg71 interface{}) interface{} {
   445  				return coer70(arg71.(_dafny.Sequence))
   446  			}
   447  		}(func(_12_errors _dafny.Sequence) m_AwsCryptographyMaterialProvidersTypes.Error {
   448  			return m_AwsCryptographyMaterialProvidersTypes.Companion_Error_.Create_CollectionOfErrors_(_12_errors, _dafny.SeqOfString("No Configured KMS Key was able to decrypt the Data Key. The list of encountered Exceptions is available via `list`."))
   449  		}))
   450  		if (_11_valueOrError4).IsFailure() {
   451  			output = (_11_valueOrError4).PropagateFailure()
   452  			return output
   453  		}
   454  		var _13_SealedDecryptionMaterials m_AwsCryptographyMaterialProvidersTypes.DecryptionMaterials
   455  		_ = _13_SealedDecryptionMaterials
   456  		_13_SealedDecryptionMaterials = (_11_valueOrError4).Extract().(m_AwsCryptographyMaterialProvidersTypes.DecryptionMaterials)
   457  		output = m_Wrappers.Companion_Result_.Create_Success_(m_AwsCryptographyMaterialProvidersTypes.Companion_OnDecryptOutput_.Create_OnDecryptOutput_(_13_SealedDecryptionMaterials))
   458  		return output
   459  		return output
   460  	}
   461  }
   462  func (_this *AwsKmsMrkKeyring) Client() m_ComAmazonawsKmsTypes.IKMSClient {
   463  	{
   464  		return _this._client
   465  	}
   466  }
   467  func (_this *AwsKmsMrkKeyring) AwsKmsKey() _dafny.Sequence {
   468  	{
   469  		return _this._awsKmsKey
   470  	}
   471  }
   472  func (_this *AwsKmsMrkKeyring) GrantTokens() _dafny.Sequence {
   473  	{
   474  		return _this._grantTokens
   475  	}
   476  }
   477  func (_this *AwsKmsMrkKeyring) AwsKmsArn() m_AwsArnParsing.AwsKmsIdentifier {
   478  	{
   479  		return _this._awsKmsArn
   480  	}
   481  }
   482  
   483  // End of class AwsKmsMrkKeyring
   484  
   485  // Definition of class DecryptSingleEncryptedDataKey
   486  type DecryptSingleEncryptedDataKey struct {
   487  	_materials   m_AwsCryptographyMaterialProvidersTypes.DecryptionMaterials
   488  	_client      m_ComAmazonawsKmsTypes.IKMSClient
   489  	_awsKmsKey   _dafny.Sequence
   490  	_grantTokens _dafny.Sequence
   491  }
   492  
   493  func New_DecryptSingleEncryptedDataKey_() *DecryptSingleEncryptedDataKey {
   494  	_this := DecryptSingleEncryptedDataKey{}
   495  
   496  	_this._materials = m_AwsCryptographyMaterialProvidersTypes.DecryptionMaterials{}
   497  	_this._client = (m_ComAmazonawsKmsTypes.IKMSClient)(nil)
   498  	_this._awsKmsKey = _dafny.EmptySeq.SetString()
   499  	_this._grantTokens = _dafny.EmptySeq
   500  	return &_this
   501  }
   502  
   503  type CompanionStruct_DecryptSingleEncryptedDataKey_ struct {
   504  }
   505  
   506  var Companion_DecryptSingleEncryptedDataKey_ = CompanionStruct_DecryptSingleEncryptedDataKey_{}
   507  
   508  func (_this *DecryptSingleEncryptedDataKey) Equals(other *DecryptSingleEncryptedDataKey) bool {
   509  	return _this == other
   510  }
   511  
   512  func (_this *DecryptSingleEncryptedDataKey) EqualsGeneric(x interface{}) bool {
   513  	other, ok := x.(*DecryptSingleEncryptedDataKey)
   514  	return ok && _this.Equals(other)
   515  }
   516  
   517  func (*DecryptSingleEncryptedDataKey) String() string {
   518  	return "AwsKmsMrkKeyring.DecryptSingleEncryptedDataKey"
   519  }
   520  
   521  func Type_DecryptSingleEncryptedDataKey_() _dafny.TypeDescriptor {
   522  	return type_DecryptSingleEncryptedDataKey_{}
   523  }
   524  
   525  type type_DecryptSingleEncryptedDataKey_ struct {
   526  }
   527  
   528  func (_this type_DecryptSingleEncryptedDataKey_) Default() interface{} {
   529  	return (*DecryptSingleEncryptedDataKey)(nil)
   530  }
   531  
   532  func (_this type_DecryptSingleEncryptedDataKey_) String() string {
   533  	return "AwsKmsMrkKeyring.DecryptSingleEncryptedDataKey"
   534  }
   535  func (_this *DecryptSingleEncryptedDataKey) ParentTraits_() []*_dafny.TraitID {
   536  	return [](*_dafny.TraitID){m_Actions.Companion_ActionWithResult_.TraitID_, m_Actions.Companion_Action_.TraitID_}
   537  }
   538  
   539  var _ m_Actions.ActionWithResult = &DecryptSingleEncryptedDataKey{}
   540  var _ m_Actions.Action = &DecryptSingleEncryptedDataKey{}
   541  var _ _dafny.TraitOffspring = &DecryptSingleEncryptedDataKey{}
   542  
   543  func (_this *DecryptSingleEncryptedDataKey) Ctor__(materials m_AwsCryptographyMaterialProvidersTypes.DecryptionMaterials, client m_ComAmazonawsKmsTypes.IKMSClient, awsKmsKey _dafny.Sequence, grantTokens _dafny.Sequence) {
   544  	{
   545  		(_this)._materials = materials
   546  		(_this)._client = client
   547  		(_this)._awsKmsKey = awsKmsKey
   548  		(_this)._grantTokens = grantTokens
   549  	}
   550  }
   551  func (_this *DecryptSingleEncryptedDataKey) Invoke(edk interface{}) interface{} {
   552  	{
   553  		var edk m_AwsCryptographyMaterialProvidersTypes.EncryptedDataKey = edk.(m_AwsCryptographyMaterialProvidersTypes.EncryptedDataKey)
   554  		_ = edk
   555  		var res m_Wrappers.Result = m_Wrappers.Result{}
   556  		_ = res
   557  		var _0_kmsUnwrap *m_AwsKmsKeyring.KmsUnwrapKeyMaterial
   558  		_ = _0_kmsUnwrap
   559  		var _nw0 *m_AwsKmsKeyring.KmsUnwrapKeyMaterial = m_AwsKmsKeyring.New_KmsUnwrapKeyMaterial_()
   560  		_ = _nw0
   561  		_nw0.Ctor__((_this).Client(), (_this).AwsKmsKey(), (_this).GrantTokens())
   562  		_0_kmsUnwrap = _nw0
   563  		var _1_unwrapOutputRes m_Wrappers.Result
   564  		_ = _1_unwrapOutputRes
   565  		var _out0 m_Wrappers.Result
   566  		_ = _out0
   567  		_out0 = m_EdkWrapping.Companion_Default___.UnwrapEdkMaterial((edk).Dtor_ciphertext(), (_this).Materials(), _0_kmsUnwrap)
   568  		_1_unwrapOutputRes = _out0
   569  		var _2_valueOrError0 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(m_EdkWrapping.Companion_UnwrapEdkMaterialOutput_.Default(m_AwsKmsKeyring.Companion_KmsUnwrapInfo_.Default()))
   570  		_ = _2_valueOrError0
   571  		_2_valueOrError0 = _1_unwrapOutputRes
   572  		if (_2_valueOrError0).IsFailure() {
   573  			res = (_2_valueOrError0).PropagateFailure()
   574  			return res
   575  		}
   576  		var _3_unwrapOutput m_EdkWrapping.UnwrapEdkMaterialOutput
   577  		_ = _3_unwrapOutput
   578  		_3_unwrapOutput = (_2_valueOrError0).Extract().(m_EdkWrapping.UnwrapEdkMaterialOutput)
   579  		var _4_valueOrError1 m_Wrappers.Result = m_Wrappers.Result{}
   580  		_ = _4_valueOrError1
   581  		_4_valueOrError1 = m_Materials.Companion_Default___.DecryptionMaterialsAddDataKey((_this).Materials(), (_3_unwrapOutput).Dtor_plaintextDataKey(), (_3_unwrapOutput).Dtor_symmetricSigningKey())
   582  		if (_4_valueOrError1).IsFailure() {
   583  			res = (_4_valueOrError1).PropagateFailure()
   584  			return res
   585  		}
   586  		var _5_result m_AwsCryptographyMaterialProvidersTypes.DecryptionMaterials
   587  		_ = _5_result
   588  		_5_result = (_4_valueOrError1).Extract().(m_AwsCryptographyMaterialProvidersTypes.DecryptionMaterials)
   589  		res = m_Wrappers.Companion_Result_.Create_Success_(_5_result)
   590  		return res
   591  		return res
   592  	}
   593  }
   594  func (_this *DecryptSingleEncryptedDataKey) Materials() m_AwsCryptographyMaterialProvidersTypes.DecryptionMaterials {
   595  	{
   596  		return _this._materials
   597  	}
   598  }
   599  func (_this *DecryptSingleEncryptedDataKey) Client() m_ComAmazonawsKmsTypes.IKMSClient {
   600  	{
   601  		return _this._client
   602  	}
   603  }
   604  func (_this *DecryptSingleEncryptedDataKey) AwsKmsKey() _dafny.Sequence {
   605  	{
   606  		return _this._awsKmsKey
   607  	}
   608  }
   609  func (_this *DecryptSingleEncryptedDataKey) GrantTokens() _dafny.Sequence {
   610  	{
   611  		return _this._grantTokens
   612  	}
   613  }
   614  
   615  // End of class DecryptSingleEncryptedDataKey