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

     1  // Package Structure
     2  // Dafny module Structure compiled into Go
     3  
     4  package Structure
     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_KeyStoreErrorMessages "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KeyStoreErrorMessages"
    17  	m_KmsArn "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KmsArn"
    18  	m_AtomicPrimitives "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AtomicPrimitives"
    19  	m_AwsCryptographyPrimitivesOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AwsCryptographyPrimitivesOperations"
    20  	m_AwsCryptographyPrimitivesTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AwsCryptographyPrimitivesTypes"
    21  	m_Digest "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/Digest"
    22  	m_HKDF "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/HKDF"
    23  	m_KdfCtr "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/KdfCtr"
    24  	m_Random "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/Random"
    25  	m_WrappedHKDF "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/WrappedHKDF"
    26  	m_WrappedHMAC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/WrappedHMAC"
    27  	m_Actions "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Actions"
    28  	m_Base64 "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Base64"
    29  	m_Base64Lemmas "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Base64Lemmas"
    30  	m_BoundedInts "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/BoundedInts"
    31  	m_DivInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivInternals"
    32  	m_DivInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivInternalsNonlinear"
    33  	m_DivMod "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivMod"
    34  	m_FileIO "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/FileIO"
    35  	m_FloatCompare "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/FloatCompare"
    36  	m_Functions "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Functions"
    37  	m_GeneralInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/GeneralInternals"
    38  	m_GetOpt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/GetOpt"
    39  	m_HexStrings "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/HexStrings"
    40  	m_Logarithm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Logarithm"
    41  	m__Math "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Math_"
    42  	m_ModInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/ModInternals"
    43  	m_ModInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/ModInternalsNonlinear"
    44  	m_Mul "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Mul"
    45  	m_MulInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/MulInternals"
    46  	m_MulInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/MulInternalsNonlinear"
    47  	m_Power "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Power"
    48  	m_Relations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Relations"
    49  	m_Seq "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Seq"
    50  	m_Seq_MergeSort "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Seq_MergeSort"
    51  	m_Sorting "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Sorting"
    52  	m_StandardLibrary "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary"
    53  	m_StandardLibraryInterop "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibraryInterop"
    54  	m_StandardLibrary_Sequence "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_Sequence"
    55  	m_StandardLibrary_String "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_String"
    56  	m_StandardLibrary_UInt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_UInt"
    57  	m_Streams "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Streams"
    58  	m_UTF8 "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/UTF8"
    59  	m_UnicodeStrings "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/UnicodeStrings"
    60  	m__Unicode "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Unicode_"
    61  	m_Utf16EncodingForm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Utf16EncodingForm"
    62  	m_Utf8EncodingForm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Utf8EncodingForm"
    63  	m_Wrappers "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Wrappers"
    64  	m__System "github.com/dafny-lang/DafnyRuntimeGo/v4/System_"
    65  	_dafny "github.com/dafny-lang/DafnyRuntimeGo/v4/dafny"
    66  )
    67  
    68  var _ = os.Args
    69  var _ _dafny.Dummy__
    70  var _ m__System.Dummy__
    71  var _ m_Wrappers.Dummy__
    72  var _ m_BoundedInts.Dummy__
    73  var _ m_StandardLibrary_UInt.Dummy__
    74  var _ m_StandardLibrary_Sequence.Dummy__
    75  var _ m_StandardLibrary_String.Dummy__
    76  var _ m_StandardLibrary.Dummy__
    77  var _ m_AwsCryptographyPrimitivesTypes.Dummy__
    78  var _ m_Random.Dummy__
    79  var _ m_Digest.Dummy__
    80  var _ m_WrappedHMAC.Dummy__
    81  var _ m_HKDF.Dummy__
    82  var _ m_WrappedHKDF.Dummy__
    83  var _ m_KdfCtr.Dummy__
    84  var _ m_AwsCryptographyPrimitivesOperations.Dummy__
    85  var _ m_AtomicPrimitives.Dummy__
    86  var _ m_ComAmazonawsDynamodbTypes.Dummy__
    87  var _ m_ComAmazonawsKmsTypes.Dummy__
    88  var _ m_Relations.Dummy__
    89  var _ m_Seq_MergeSort.Dummy__
    90  var _ m__Math.Dummy__
    91  var _ m_Seq.Dummy__
    92  var _ m__Unicode.Dummy__
    93  var _ m_Functions.Dummy__
    94  var _ m_Utf8EncodingForm.Dummy__
    95  var _ m_Utf16EncodingForm.Dummy__
    96  var _ m_UnicodeStrings.Dummy__
    97  var _ m_FileIO.Dummy__
    98  var _ m_GeneralInternals.Dummy__
    99  var _ m_MulInternalsNonlinear.Dummy__
   100  var _ m_MulInternals.Dummy__
   101  var _ m_Mul.Dummy__
   102  var _ m_ModInternalsNonlinear.Dummy__
   103  var _ m_DivInternalsNonlinear.Dummy__
   104  var _ m_ModInternals.Dummy__
   105  var _ m_DivInternals.Dummy__
   106  var _ m_DivMod.Dummy__
   107  var _ m_Power.Dummy__
   108  var _ m_Logarithm.Dummy__
   109  var _ m_StandardLibraryInterop.Dummy__
   110  var _ m_Streams.Dummy__
   111  var _ m_Sorting.Dummy__
   112  var _ m_HexStrings.Dummy__
   113  var _ m_GetOpt.Dummy__
   114  var _ m_FloatCompare.Dummy__
   115  var _ m_Base64.Dummy__
   116  var _ m_Base64Lemmas.Dummy__
   117  var _ m_Actions.Dummy__
   118  var _ m_AwsCryptographyKeyStoreTypes.Dummy__
   119  var _ m_AwsCryptographyMaterialProvidersTypes.Dummy__
   120  var _ m_AwsArnParsing.Dummy__
   121  var _ m_AwsKmsMrkMatchForDecrypt.Dummy__
   122  var _ m_AwsKmsUtils.Dummy__
   123  var _ m_KeyStoreErrorMessages.Dummy__
   124  var _ m_KmsArn.Dummy__
   125  
   126  type Dummy__ struct{}
   127  
   128  // Definition of class Default__
   129  type Default__ struct {
   130  	dummy byte
   131  }
   132  
   133  func New_Default___() *Default__ {
   134  	_this := Default__{}
   135  
   136  	return &_this
   137  }
   138  
   139  type CompanionStruct_Default___ struct {
   140  }
   141  
   142  var Companion_Default___ = CompanionStruct_Default___{}
   143  
   144  func (_this *Default__) Equals(other *Default__) bool {
   145  	return _this == other
   146  }
   147  
   148  func (_this *Default__) EqualsGeneric(x interface{}) bool {
   149  	other, ok := x.(*Default__)
   150  	return ok && _this.Equals(other)
   151  }
   152  
   153  func (*Default__) String() string {
   154  	return "Structure.Default__"
   155  }
   156  func (_this *Default__) ParentTraits_() []*_dafny.TraitID {
   157  	return [](*_dafny.TraitID){}
   158  }
   159  
   160  var _ _dafny.TraitOffspring = &Default__{}
   161  
   162  func (_static *CompanionStruct_Default___) BranchKeyContext_q(m _dafny.Map) bool {
   163  	return ((((((((((((((m).Contains(Companion_Default___.BRANCH__KEY__IDENTIFIER__FIELD())) && ((m).Contains(Companion_Default___.TYPE__FIELD()))) && ((m).Contains(Companion_Default___.KEY__CREATE__TIME()))) && ((m).Contains(Companion_Default___.HIERARCHY__VERSION()))) && ((m).Contains(Companion_Default___.TABLE__FIELD()))) && ((m).Contains(Companion_Default___.KMS__FIELD()))) && (m_ComAmazonawsKmsTypes.Companion_Default___.IsValid__KeyIdType((m).Get(Companion_Default___.KMS__FIELD()).(_dafny.Sequence)))) && (!((m).Keys()).Contains(Companion_Default___.BRANCH__KEY__FIELD()))) && ((_dafny.IntOfUint32(((m).Get(Companion_Default___.BRANCH__KEY__IDENTIFIER__FIELD()).(_dafny.Sequence)).Cardinality())).Sign() == 1)) && ((_dafny.IntOfUint32(((m).Get(Companion_Default___.TYPE__FIELD()).(_dafny.Sequence)).Cardinality())).Sign() == 1)) && (_dafny.Quantifier(((m).Keys()).Elements(), true, func(_forall_var_0 _dafny.Sequence) bool {
   164  		var _0_k _dafny.Sequence
   165  		_0_k = interface{}(_forall_var_0).(_dafny.Sequence)
   166  		return !(((m).Keys()).Contains(_0_k)) || (m_ComAmazonawsDynamodbTypes.Companion_Default___.IsValid__AttributeName(_0_k))
   167  	}))) && (((m).Contains(Companion_Default___.BRANCH__KEY__ACTIVE__VERSION__FIELD())) == ((true) && (_dafny.Companion_Sequence_.Equal((m).Get(Companion_Default___.TYPE__FIELD()).(_dafny.Sequence), Companion_Default___.BRANCH__KEY__ACTIVE__TYPE()))))) && (!((m).Contains(Companion_Default___.BRANCH__KEY__ACTIVE__VERSION__FIELD())) || ((true) && (_dafny.Companion_Sequence_.IsProperPrefixOf(Companion_Default___.BRANCH__KEY__TYPE__PREFIX(), (m).Get(Companion_Default___.BRANCH__KEY__ACTIVE__VERSION__FIELD()).(_dafny.Sequence)))))) && ((!(m).Contains(Companion_Default___.BRANCH__KEY__ACTIVE__VERSION__FIELD())) == ((_dafny.Companion_Sequence_.Equal((m).Get(Companion_Default___.TYPE__FIELD()).(_dafny.Sequence), Companion_Default___.BEACON__KEY__TYPE__VALUE())) || (_dafny.Companion_Sequence_.IsProperPrefixOf(Companion_Default___.BRANCH__KEY__TYPE__PREFIX(), (m).Get(Companion_Default___.TYPE__FIELD()).(_dafny.Sequence)))))
   168  }
   169  func (_static *CompanionStruct_Default___) ToAttributeMap(encryptionContext _dafny.Map, encryptedKey _dafny.Sequence) _dafny.Map {
   170  	return func() _dafny.Map {
   171  		var _coll0 = _dafny.NewMapBuilder()
   172  		_ = _coll0
   173  		for _iter2 := _dafny.Iterate(((((encryptionContext).Keys()).Union(_dafny.SetOf(Companion_Default___.BRANCH__KEY__FIELD()))).Difference(_dafny.SetOf(Companion_Default___.TABLE__FIELD()))).Elements()); ; {
   174  			_compr_0, _ok2 := _iter2()
   175  			if !_ok2 {
   176  				break
   177  			}
   178  			var _0_k _dafny.Sequence
   179  			_0_k = interface{}(_compr_0).(_dafny.Sequence)
   180  			if m_ComAmazonawsDynamodbTypes.Companion_AttributeName_.Is_(_0_k) {
   181  				if ((((encryptionContext).Keys()).Union(_dafny.SetOf(Companion_Default___.BRANCH__KEY__FIELD()))).Difference(_dafny.SetOf(Companion_Default___.TABLE__FIELD()))).Contains(_0_k) {
   182  					_coll0.Add(_0_k, (func() m_ComAmazonawsDynamodbTypes.AttributeValue {
   183  						if _dafny.Companion_Sequence_.Equal(_0_k, Companion_Default___.HIERARCHY__VERSION()) {
   184  							return m_ComAmazonawsDynamodbTypes.Companion_AttributeValue_.Create_N_((encryptionContext).Get(Companion_Default___.HIERARCHY__VERSION()).(_dafny.Sequence))
   185  						}
   186  						return (func() m_ComAmazonawsDynamodbTypes.AttributeValue {
   187  							if _dafny.Companion_Sequence_.Equal(_0_k, Companion_Default___.BRANCH__KEY__FIELD()) {
   188  								return m_ComAmazonawsDynamodbTypes.Companion_AttributeValue_.Create_B_(encryptedKey)
   189  							}
   190  							return m_ComAmazonawsDynamodbTypes.Companion_AttributeValue_.Create_S_((encryptionContext).Get(_0_k).(_dafny.Sequence))
   191  						})()
   192  					})())
   193  				}
   194  			}
   195  		}
   196  		return _coll0.ToMap()
   197  	}()
   198  }
   199  func (_static *CompanionStruct_Default___) ToBranchKeyContext(item _dafny.Map, logicalKeyStoreName _dafny.Sequence) _dafny.Map {
   200  	return func() _dafny.Map {
   201  		var _coll0 = _dafny.NewMapBuilder()
   202  		_ = _coll0
   203  		for _iter3 := _dafny.Iterate(((((item).Keys()).Difference(_dafny.SetOf(Companion_Default___.BRANCH__KEY__FIELD()))).Union(_dafny.SetOf(Companion_Default___.TABLE__FIELD()))).Elements()); ; {
   204  			_compr_0, _ok3 := _iter3()
   205  			if !_ok3 {
   206  				break
   207  			}
   208  			var _0_k _dafny.Sequence
   209  			_0_k = interface{}(_compr_0).(_dafny.Sequence)
   210  			if ((((item).Keys()).Difference(_dafny.SetOf(Companion_Default___.BRANCH__KEY__FIELD()))).Union(_dafny.SetOf(Companion_Default___.TABLE__FIELD()))).Contains(_0_k) {
   211  				_coll0.Add(_0_k, (func() _dafny.Sequence {
   212  					if _dafny.Companion_Sequence_.Equal(_0_k, Companion_Default___.HIERARCHY__VERSION()) {
   213  						return ((item).Get(_0_k).(m_ComAmazonawsDynamodbTypes.AttributeValue)).Dtor_N()
   214  					}
   215  					return (func() _dafny.Sequence {
   216  						if _dafny.Companion_Sequence_.Equal(_0_k, Companion_Default___.TABLE__FIELD()) {
   217  							return logicalKeyStoreName
   218  						}
   219  						return ((item).Get(_0_k).(m_ComAmazonawsDynamodbTypes.AttributeValue)).Dtor_S()
   220  					})()
   221  				})())
   222  			}
   223  		}
   224  		return _coll0.ToMap()
   225  	}()
   226  }
   227  func (_static *CompanionStruct_Default___) ToBranchKeyMaterials(encryptionContext _dafny.Map, plaintextKey _dafny.Sequence) m_Wrappers.Result {
   228  	var _0_versionInformation _dafny.Sequence = (func() _dafny.Sequence {
   229  		if (encryptionContext).Contains(Companion_Default___.BRANCH__KEY__ACTIVE__VERSION__FIELD()) {
   230  			return (encryptionContext).Get(Companion_Default___.BRANCH__KEY__ACTIVE__VERSION__FIELD()).(_dafny.Sequence)
   231  		}
   232  		return (encryptionContext).Get(Companion_Default___.TYPE__FIELD()).(_dafny.Sequence)
   233  	})()
   234  	_ = _0_versionInformation
   235  	var _1_branchKeyVersion _dafny.Sequence = (_0_versionInformation).Drop((_dafny.IntOfUint32((Companion_Default___.BRANCH__KEY__TYPE__PREFIX()).Cardinality())).Uint32())
   236  	_ = _1_branchKeyVersion
   237  	var _2_valueOrError0 m_Wrappers.Result = (m_UTF8.Encode(_1_branchKeyVersion)).MapFailure(func(coer10 func(_dafny.Sequence) m_AwsCryptographyKeyStoreTypes.Error) func(interface{}) interface{} {
   238  		return func(arg10 interface{}) interface{} {
   239  			return coer10(arg10.(_dafny.Sequence))
   240  		}
   241  	}(func(_3_e _dafny.Sequence) m_AwsCryptographyKeyStoreTypes.Error {
   242  		return m_AwsCryptographyKeyStoreTypes.Companion_Error_.Create_KeyStoreException_(_3_e)
   243  	}))
   244  	_ = _2_valueOrError0
   245  	if (_2_valueOrError0).IsFailure() {
   246  		return (_2_valueOrError0).PropagateFailure()
   247  	} else {
   248  		var _4_branchKeyVersionUtf8 _dafny.Sequence = (_2_valueOrError0).Extract().(_dafny.Sequence)
   249  		_ = _4_branchKeyVersionUtf8
   250  		var _5_valueOrError1 m_Wrappers.Result = Companion_Default___.ExtractCustomEncryptionContext(encryptionContext)
   251  		_ = _5_valueOrError1
   252  		if (_5_valueOrError1).IsFailure() {
   253  			return (_5_valueOrError1).PropagateFailure()
   254  		} else {
   255  			var _6_customEncryptionContext _dafny.Map = (_5_valueOrError1).Extract().(_dafny.Map)
   256  			_ = _6_customEncryptionContext
   257  			return m_Wrappers.Companion_Result_.Create_Success_(m_AwsCryptographyKeyStoreTypes.Companion_BranchKeyMaterials_.Create_BranchKeyMaterials_((encryptionContext).Get(Companion_Default___.BRANCH__KEY__IDENTIFIER__FIELD()).(_dafny.Sequence), _4_branchKeyVersionUtf8, _6_customEncryptionContext, plaintextKey))
   258  		}
   259  	}
   260  }
   261  func (_static *CompanionStruct_Default___) ToBeaconKeyMaterials(encryptionContext _dafny.Map, plaintextKey _dafny.Sequence) m_Wrappers.Result {
   262  	var _0_valueOrError0 m_Wrappers.Result = Companion_Default___.ExtractCustomEncryptionContext(encryptionContext)
   263  	_ = _0_valueOrError0
   264  	if (_0_valueOrError0).IsFailure() {
   265  		return (_0_valueOrError0).PropagateFailure()
   266  	} else {
   267  		var _1_customEncryptionContext _dafny.Map = (_0_valueOrError0).Extract().(_dafny.Map)
   268  		_ = _1_customEncryptionContext
   269  		return m_Wrappers.Companion_Result_.Create_Success_(m_AwsCryptographyKeyStoreTypes.Companion_BeaconKeyMaterials_.Create_BeaconKeyMaterials_((encryptionContext).Get(Companion_Default___.BRANCH__KEY__IDENTIFIER__FIELD()).(_dafny.Sequence), _1_customEncryptionContext, m_Wrappers.Companion_Option_.Create_Some_(plaintextKey), m_Wrappers.Companion_Option_.Create_None_()))
   270  	}
   271  }
   272  func (_static *CompanionStruct_Default___) ExtractCustomEncryptionContext(encryptionContext _dafny.Map) m_Wrappers.Result {
   273  	var _0_encodedEncryptionContext _dafny.Set = func() _dafny.Set {
   274  		var _coll0 = _dafny.NewBuilder()
   275  		_ = _coll0
   276  		for _iter4 := _dafny.Iterate((encryptionContext).Keys().Elements()); ; {
   277  			_compr_0, _ok4 := _iter4()
   278  			if !_ok4 {
   279  				break
   280  			}
   281  			var _1_k _dafny.Sequence
   282  			_1_k = interface{}(_compr_0).(_dafny.Sequence)
   283  			if ((encryptionContext).Contains(_1_k)) && (_dafny.Companion_Sequence_.IsProperPrefixOf(Companion_Default___.ENCRYPTION__CONTEXT__PREFIX(), _1_k)) {
   284  				_coll0.Add(_dafny.TupleOf(m_UTF8.Encode((_1_k).Drop((_dafny.IntOfUint32((Companion_Default___.ENCRYPTION__CONTEXT__PREFIX()).Cardinality())).Uint32())), m_UTF8.Encode((encryptionContext).Get(_1_k).(_dafny.Sequence))))
   285  			}
   286  		}
   287  		return _coll0.ToSet()
   288  	}()
   289  	_ = _0_encodedEncryptionContext
   290  	var _2_valueOrError0 m_Wrappers.Outcome = m_Wrappers.Companion_Default___.Need(_dafny.Quantifier((_0_encodedEncryptionContext).Elements(), true, func(_forall_var_0 _dafny.Tuple) bool {
   291  		var _3_i _dafny.Tuple
   292  		_3_i = interface{}(_forall_var_0).(_dafny.Tuple)
   293  		return !((_0_encodedEncryptionContext).Contains(_3_i)) || ((((*(_3_i).IndexInt(0)).(m_Wrappers.Result)).Is_Success()) && (((*(_3_i).IndexInt(1)).(m_Wrappers.Result)).Is_Success()))
   294  	}), m_AwsCryptographyKeyStoreTypes.Companion_Error_.Create_KeyStoreException_(_dafny.SeqOfString("Unable to encode string")))
   295  	_ = _2_valueOrError0
   296  	if (_2_valueOrError0).IsFailure() {
   297  		return (_2_valueOrError0).PropagateFailure()
   298  	} else {
   299  		return m_Wrappers.Companion_Result_.Create_Success_(func() _dafny.Map {
   300  			var _coll1 = _dafny.NewMapBuilder()
   301  			_ = _coll1
   302  			for _iter5 := _dafny.Iterate((_0_encodedEncryptionContext).Elements()); ; {
   303  				_compr_1, _ok5 := _iter5()
   304  				if !_ok5 {
   305  					break
   306  				}
   307  				var _4_i _dafny.Tuple
   308  				_4_i = interface{}(_compr_1).(_dafny.Tuple)
   309  				if (_0_encodedEncryptionContext).Contains(_4_i) {
   310  					_coll1.Add(((*(_4_i).IndexInt(0)).(m_Wrappers.Result)).Dtor_value().(_dafny.Sequence), ((*(_4_i).IndexInt(1)).(m_Wrappers.Result)).Dtor_value().(_dafny.Sequence))
   311  				}
   312  			}
   313  			return _coll1.ToMap()
   314  		}())
   315  	}
   316  }
   317  func (_static *CompanionStruct_Default___) DecryptOnlyBranchKeyEncryptionContext(branchKeyId _dafny.Sequence, branchKeyVersion _dafny.Sequence, timestamp _dafny.Sequence, logicalKeyStoreName _dafny.Sequence, kmsKeyArn _dafny.Sequence, customEncryptionContext _dafny.Map) _dafny.Map {
   318  	return (_dafny.NewMapBuilder().ToMap().UpdateUnsafe(Companion_Default___.BRANCH__KEY__IDENTIFIER__FIELD(), branchKeyId).UpdateUnsafe(Companion_Default___.TYPE__FIELD(), _dafny.Companion_Sequence_.Concatenate(Companion_Default___.BRANCH__KEY__TYPE__PREFIX(), branchKeyVersion)).UpdateUnsafe(Companion_Default___.KEY__CREATE__TIME(), timestamp).UpdateUnsafe(Companion_Default___.TABLE__FIELD(), logicalKeyStoreName).UpdateUnsafe(Companion_Default___.KMS__FIELD(), kmsKeyArn).UpdateUnsafe(Companion_Default___.HIERARCHY__VERSION(), _dafny.SeqOfString("1"))).Merge(func() _dafny.Map {
   319  		var _coll0 = _dafny.NewMapBuilder()
   320  		_ = _coll0
   321  		for _iter6 := _dafny.Iterate((customEncryptionContext).Keys().Elements()); ; {
   322  			_compr_0, _ok6 := _iter6()
   323  			if !_ok6 {
   324  				break
   325  			}
   326  			var _0_k _dafny.Sequence
   327  			_0_k = interface{}(_compr_0).(_dafny.Sequence)
   328  			if (customEncryptionContext).Contains(_0_k) {
   329  				_coll0.Add(_dafny.Companion_Sequence_.Concatenate(Companion_Default___.ENCRYPTION__CONTEXT__PREFIX(), _0_k), (customEncryptionContext).Get(_0_k).(_dafny.Sequence))
   330  			}
   331  		}
   332  		return _coll0.ToMap()
   333  	}())
   334  }
   335  func (_static *CompanionStruct_Default___) ActiveBranchKeyEncryptionContext(decryptOnlyEncryptionContext _dafny.Map) _dafny.Map {
   336  	return (decryptOnlyEncryptionContext).Merge(_dafny.NewMapBuilder().ToMap().UpdateUnsafe(Companion_Default___.BRANCH__KEY__ACTIVE__VERSION__FIELD(), (decryptOnlyEncryptionContext).Get(Companion_Default___.TYPE__FIELD()).(_dafny.Sequence)).UpdateUnsafe(Companion_Default___.TYPE__FIELD(), Companion_Default___.BRANCH__KEY__ACTIVE__TYPE()))
   337  }
   338  func (_static *CompanionStruct_Default___) BeaconKeyEncryptionContext(decryptOnlyEncryptionContext _dafny.Map) _dafny.Map {
   339  	return (decryptOnlyEncryptionContext).Merge(_dafny.NewMapBuilder().ToMap().UpdateUnsafe(Companion_Default___.TYPE__FIELD(), Companion_Default___.BEACON__KEY__TYPE__VALUE()))
   340  }
   341  func (_static *CompanionStruct_Default___) NewVersionFromActiveBranchKeyEncryptionContext(activeBranchKeyEncryptionContext _dafny.Map, branchKeyVersion _dafny.Sequence, timestamp _dafny.Sequence) _dafny.Map {
   342  	return ((activeBranchKeyEncryptionContext).Merge(_dafny.NewMapBuilder().ToMap().UpdateUnsafe(Companion_Default___.TYPE__FIELD(), _dafny.Companion_Sequence_.Concatenate(Companion_Default___.BRANCH__KEY__TYPE__PREFIX(), branchKeyVersion)).UpdateUnsafe(Companion_Default___.KEY__CREATE__TIME(), timestamp))).Subtract(_dafny.SetOf(Companion_Default___.BRANCH__KEY__ACTIVE__VERSION__FIELD()))
   343  }
   344  func (_static *CompanionStruct_Default___) BranchKeyItem_q(m _dafny.Map) bool {
   345  	return (((((((((((((((((((((m).Contains(Companion_Default___.BRANCH__KEY__IDENTIFIER__FIELD())) && (((m).Get(Companion_Default___.BRANCH__KEY__IDENTIFIER__FIELD()).(m_ComAmazonawsDynamodbTypes.AttributeValue)).Is_S())) && ((m).Contains(Companion_Default___.TYPE__FIELD()))) && (((m).Get(Companion_Default___.TYPE__FIELD()).(m_ComAmazonawsDynamodbTypes.AttributeValue)).Is_S())) && ((m).Contains(Companion_Default___.KEY__CREATE__TIME()))) && (((m).Get(Companion_Default___.KEY__CREATE__TIME()).(m_ComAmazonawsDynamodbTypes.AttributeValue)).Is_S())) && ((m).Contains(Companion_Default___.HIERARCHY__VERSION()))) && (((m).Get(Companion_Default___.HIERARCHY__VERSION()).(m_ComAmazonawsDynamodbTypes.AttributeValue)).Is_N())) && (!(m).Contains(Companion_Default___.TABLE__FIELD()))) && ((m).Contains(Companion_Default___.KMS__FIELD()))) && (((m).Get(Companion_Default___.KMS__FIELD()).(m_ComAmazonawsDynamodbTypes.AttributeValue)).Is_S())) && (m_ComAmazonawsKmsTypes.Companion_Default___.IsValid__KeyIdType(((m).Get(Companion_Default___.KMS__FIELD()).(m_ComAmazonawsDynamodbTypes.AttributeValue)).Dtor_S()))) && ((m).Contains(Companion_Default___.BRANCH__KEY__FIELD()))) && (((m).Get(Companion_Default___.BRANCH__KEY__FIELD()).(m_ComAmazonawsDynamodbTypes.AttributeValue)).Is_B())) && ((_dafny.IntOfUint32((((m).Get(Companion_Default___.BRANCH__KEY__IDENTIFIER__FIELD()).(m_ComAmazonawsDynamodbTypes.AttributeValue)).Dtor_S()).Cardinality())).Sign() == 1)) && ((_dafny.IntOfUint32((((m).Get(Companion_Default___.TYPE__FIELD()).(m_ComAmazonawsDynamodbTypes.AttributeValue)).Dtor_S()).Cardinality())).Sign() == 1)) && (_dafny.Quantifier((((m).Keys()).Difference(_dafny.SetOf(Companion_Default___.BRANCH__KEY__FIELD(), Companion_Default___.HIERARCHY__VERSION()))).Elements(), true, func(_forall_var_0 _dafny.Sequence) bool {
   346  		var _0_k _dafny.Sequence
   347  		_0_k = interface{}(_forall_var_0).(_dafny.Sequence)
   348  		return !((((m).Keys()).Difference(_dafny.SetOf(Companion_Default___.BRANCH__KEY__FIELD(), Companion_Default___.HIERARCHY__VERSION()))).Contains(_0_k)) || (((m).Get(_0_k).(m_ComAmazonawsDynamodbTypes.AttributeValue)).Is_S())
   349  	}))) && (((m).Contains(Companion_Default___.BRANCH__KEY__ACTIVE__VERSION__FIELD())) == ((true) && (_dafny.Companion_Sequence_.Equal(((m).Get(Companion_Default___.TYPE__FIELD()).(m_ComAmazonawsDynamodbTypes.AttributeValue)).Dtor_S(), Companion_Default___.BRANCH__KEY__ACTIVE__TYPE()))))) && (!((m).Contains(Companion_Default___.BRANCH__KEY__ACTIVE__VERSION__FIELD())) || ((true) && (_dafny.Companion_Sequence_.IsProperPrefixOf(Companion_Default___.BRANCH__KEY__TYPE__PREFIX(), ((m).Get(Companion_Default___.BRANCH__KEY__ACTIVE__VERSION__FIELD()).(m_ComAmazonawsDynamodbTypes.AttributeValue)).Dtor_S()))))) && ((!(m).Contains(Companion_Default___.BRANCH__KEY__ACTIVE__VERSION__FIELD())) == ((_dafny.Companion_Sequence_.Equal(((m).Get(Companion_Default___.TYPE__FIELD()).(m_ComAmazonawsDynamodbTypes.AttributeValue)).Dtor_S(), Companion_Default___.BEACON__KEY__TYPE__VALUE())) || (_dafny.Companion_Sequence_.IsProperPrefixOf(Companion_Default___.BRANCH__KEY__TYPE__PREFIX(), ((m).Get(Companion_Default___.TYPE__FIELD()).(m_ComAmazonawsDynamodbTypes.AttributeValue)).Dtor_S()))))) && (m_ComAmazonawsKmsTypes.Companion_Default___.IsValid__CiphertextType(((m).Get(Companion_Default___.BRANCH__KEY__FIELD()).(m_ComAmazonawsDynamodbTypes.AttributeValue)).Dtor_B()))
   350  }
   351  func (_static *CompanionStruct_Default___) ActiveBranchKeyItem_q(m _dafny.Map) bool {
   352  	return ((((Companion_Default___.BranchKeyItem_q(m)) && (_dafny.Companion_Sequence_.Equal(((m).Get(Companion_Default___.TYPE__FIELD()).(m_ComAmazonawsDynamodbTypes.AttributeValue)).Dtor_S(), Companion_Default___.BRANCH__KEY__ACTIVE__TYPE()))) && ((m).Contains(Companion_Default___.BRANCH__KEY__ACTIVE__VERSION__FIELD()))) && (((m).Get(Companion_Default___.BRANCH__KEY__ACTIVE__VERSION__FIELD()).(m_ComAmazonawsDynamodbTypes.AttributeValue)).Is_S())) && (_dafny.Companion_Sequence_.IsProperPrefixOf(Companion_Default___.BRANCH__KEY__TYPE__PREFIX(), ((m).Get(Companion_Default___.BRANCH__KEY__ACTIVE__VERSION__FIELD()).(m_ComAmazonawsDynamodbTypes.AttributeValue)).Dtor_S()))
   353  }
   354  func (_static *CompanionStruct_Default___) VersionBranchKeyItem_q(m _dafny.Map) bool {
   355  	return ((Companion_Default___.BranchKeyItem_q(m)) && (!(m).Contains(Companion_Default___.BRANCH__KEY__ACTIVE__VERSION__FIELD()))) && (_dafny.Companion_Sequence_.IsProperPrefixOf(Companion_Default___.BRANCH__KEY__TYPE__PREFIX(), ((m).Get(Companion_Default___.TYPE__FIELD()).(m_ComAmazonawsDynamodbTypes.AttributeValue)).Dtor_S()))
   356  }
   357  func (_static *CompanionStruct_Default___) BeaconKeyItem_q(m _dafny.Map) bool {
   358  	return ((Companion_Default___.BranchKeyItem_q(m)) && (!(m).Contains(Companion_Default___.BRANCH__KEY__ACTIVE__VERSION__FIELD()))) && (_dafny.Companion_Sequence_.Equal(((m).Get(Companion_Default___.TYPE__FIELD()).(m_ComAmazonawsDynamodbTypes.AttributeValue)).Dtor_S(), Companion_Default___.BEACON__KEY__TYPE__VALUE()))
   359  }
   360  func (_static *CompanionStruct_Default___) BRANCH__KEY__IDENTIFIER__FIELD() _dafny.Sequence {
   361  	return _dafny.SeqOfString("branch-key-id")
   362  }
   363  func (_static *CompanionStruct_Default___) TYPE__FIELD() _dafny.Sequence {
   364  	return _dafny.SeqOfString("type")
   365  }
   366  func (_static *CompanionStruct_Default___) KEY__CREATE__TIME() _dafny.Sequence {
   367  	return _dafny.SeqOfString("create-time")
   368  }
   369  func (_static *CompanionStruct_Default___) HIERARCHY__VERSION() _dafny.Sequence {
   370  	return _dafny.SeqOfString("hierarchy-version")
   371  }
   372  func (_static *CompanionStruct_Default___) TABLE__FIELD() _dafny.Sequence {
   373  	return _dafny.SeqOfString("tablename")
   374  }
   375  func (_static *CompanionStruct_Default___) KMS__FIELD() _dafny.Sequence {
   376  	return _dafny.SeqOfString("kms-arn")
   377  }
   378  func (_static *CompanionStruct_Default___) BRANCH__KEY__FIELD() _dafny.Sequence {
   379  	return _dafny.SeqOfString("enc")
   380  }
   381  func (_static *CompanionStruct_Default___) BRANCH__KEY__ACTIVE__VERSION__FIELD() _dafny.Sequence {
   382  	return _dafny.SeqOfString("version")
   383  }
   384  func (_static *CompanionStruct_Default___) BRANCH__KEY__ACTIVE__TYPE() _dafny.Sequence {
   385  	return _dafny.SeqOfString("branch:ACTIVE")
   386  }
   387  func (_static *CompanionStruct_Default___) BRANCH__KEY__TYPE__PREFIX() _dafny.Sequence {
   388  	return _dafny.SeqOfString("branch:version:")
   389  }
   390  func (_static *CompanionStruct_Default___) BEACON__KEY__TYPE__VALUE() _dafny.Sequence {
   391  	return _dafny.SeqOfString("beacon:ACTIVE")
   392  }
   393  func (_static *CompanionStruct_Default___) ENCRYPTION__CONTEXT__PREFIX() _dafny.Sequence {
   394  	return _dafny.SeqOfString("aws-crypto-ec:")
   395  }
   396  
   397  // End of class Default__
   398  
   399  // Definition of class BranchKeyContext
   400  type BranchKeyContext struct {
   401  }
   402  
   403  func New_BranchKeyContext_() *BranchKeyContext {
   404  	_this := BranchKeyContext{}
   405  
   406  	return &_this
   407  }
   408  
   409  type CompanionStruct_BranchKeyContext_ struct {
   410  }
   411  
   412  var Companion_BranchKeyContext_ = CompanionStruct_BranchKeyContext_{}
   413  
   414  func (*BranchKeyContext) String() string {
   415  	return "Structure.BranchKeyContext"
   416  }
   417  
   418  // End of class BranchKeyContext
   419  
   420  func Type_BranchKeyContext_() _dafny.TypeDescriptor {
   421  	return type_BranchKeyContext_{}
   422  }
   423  
   424  type type_BranchKeyContext_ struct {
   425  }
   426  
   427  func (_this type_BranchKeyContext_) Default() interface{} {
   428  	return _dafny.EmptyMap
   429  }
   430  
   431  func (_this type_BranchKeyContext_) String() string {
   432  	return "Structure.BranchKeyContext"
   433  }
   434  func (_this *CompanionStruct_BranchKeyContext_) Is_(__source _dafny.Map) bool {
   435  	var _0_m _dafny.Map = (__source)
   436  	_ = _0_m
   437  	return Companion_Default___.BranchKeyContext_q(_0_m)
   438  }
   439  
   440  // Definition of class BranchKeyItem
   441  type BranchKeyItem struct {
   442  }
   443  
   444  func New_BranchKeyItem_() *BranchKeyItem {
   445  	_this := BranchKeyItem{}
   446  
   447  	return &_this
   448  }
   449  
   450  type CompanionStruct_BranchKeyItem_ struct {
   451  }
   452  
   453  var Companion_BranchKeyItem_ = CompanionStruct_BranchKeyItem_{}
   454  
   455  func (*BranchKeyItem) String() string {
   456  	return "Structure.BranchKeyItem"
   457  }
   458  
   459  // End of class BranchKeyItem
   460  
   461  func Type_BranchKeyItem_() _dafny.TypeDescriptor {
   462  	return type_BranchKeyItem_{}
   463  }
   464  
   465  type type_BranchKeyItem_ struct {
   466  }
   467  
   468  func (_this type_BranchKeyItem_) Default() interface{} {
   469  	return _dafny.EmptyMap
   470  }
   471  
   472  func (_this type_BranchKeyItem_) String() string {
   473  	return "Structure.BranchKeyItem"
   474  }
   475  func (_this *CompanionStruct_BranchKeyItem_) Is_(__source _dafny.Map) bool {
   476  	var _1_m _dafny.Map = (__source)
   477  	_ = _1_m
   478  	return Companion_Default___.BranchKeyItem_q(_1_m)
   479  }
   480  
   481  // Definition of class ActiveBranchKeyItem
   482  type ActiveBranchKeyItem struct {
   483  }
   484  
   485  func New_ActiveBranchKeyItem_() *ActiveBranchKeyItem {
   486  	_this := ActiveBranchKeyItem{}
   487  
   488  	return &_this
   489  }
   490  
   491  type CompanionStruct_ActiveBranchKeyItem_ struct {
   492  }
   493  
   494  var Companion_ActiveBranchKeyItem_ = CompanionStruct_ActiveBranchKeyItem_{}
   495  
   496  func (*ActiveBranchKeyItem) String() string {
   497  	return "Structure.ActiveBranchKeyItem"
   498  }
   499  
   500  // End of class ActiveBranchKeyItem
   501  
   502  func Type_ActiveBranchKeyItem_() _dafny.TypeDescriptor {
   503  	return type_ActiveBranchKeyItem_{}
   504  }
   505  
   506  type type_ActiveBranchKeyItem_ struct {
   507  }
   508  
   509  func (_this type_ActiveBranchKeyItem_) Default() interface{} {
   510  	return _dafny.EmptyMap
   511  }
   512  
   513  func (_this type_ActiveBranchKeyItem_) String() string {
   514  	return "Structure.ActiveBranchKeyItem"
   515  }
   516  func (_this *CompanionStruct_ActiveBranchKeyItem_) Is_(__source _dafny.Map) bool {
   517  	var _2_m _dafny.Map = (__source)
   518  	_ = _2_m
   519  	return Companion_Default___.ActiveBranchKeyItem_q(_2_m)
   520  }
   521  
   522  // Definition of class VersionBranchKeyItem
   523  type VersionBranchKeyItem struct {
   524  }
   525  
   526  func New_VersionBranchKeyItem_() *VersionBranchKeyItem {
   527  	_this := VersionBranchKeyItem{}
   528  
   529  	return &_this
   530  }
   531  
   532  type CompanionStruct_VersionBranchKeyItem_ struct {
   533  }
   534  
   535  var Companion_VersionBranchKeyItem_ = CompanionStruct_VersionBranchKeyItem_{}
   536  
   537  func (*VersionBranchKeyItem) String() string {
   538  	return "Structure.VersionBranchKeyItem"
   539  }
   540  
   541  // End of class VersionBranchKeyItem
   542  
   543  func Type_VersionBranchKeyItem_() _dafny.TypeDescriptor {
   544  	return type_VersionBranchKeyItem_{}
   545  }
   546  
   547  type type_VersionBranchKeyItem_ struct {
   548  }
   549  
   550  func (_this type_VersionBranchKeyItem_) Default() interface{} {
   551  	return _dafny.EmptyMap
   552  }
   553  
   554  func (_this type_VersionBranchKeyItem_) String() string {
   555  	return "Structure.VersionBranchKeyItem"
   556  }
   557  func (_this *CompanionStruct_VersionBranchKeyItem_) Is_(__source _dafny.Map) bool {
   558  	var _3_m _dafny.Map = (__source)
   559  	_ = _3_m
   560  	return Companion_Default___.VersionBranchKeyItem_q(_3_m)
   561  }
   562  
   563  // Definition of class BeaconKeyItem
   564  type BeaconKeyItem struct {
   565  }
   566  
   567  func New_BeaconKeyItem_() *BeaconKeyItem {
   568  	_this := BeaconKeyItem{}
   569  
   570  	return &_this
   571  }
   572  
   573  type CompanionStruct_BeaconKeyItem_ struct {
   574  }
   575  
   576  var Companion_BeaconKeyItem_ = CompanionStruct_BeaconKeyItem_{}
   577  
   578  func (*BeaconKeyItem) String() string {
   579  	return "Structure.BeaconKeyItem"
   580  }
   581  
   582  // End of class BeaconKeyItem
   583  
   584  func Type_BeaconKeyItem_() _dafny.TypeDescriptor {
   585  	return type_BeaconKeyItem_{}
   586  }
   587  
   588  type type_BeaconKeyItem_ struct {
   589  }
   590  
   591  func (_this type_BeaconKeyItem_) Default() interface{} {
   592  	return _dafny.EmptyMap
   593  }
   594  
   595  func (_this type_BeaconKeyItem_) String() string {
   596  	return "Structure.BeaconKeyItem"
   597  }
   598  func (_this *CompanionStruct_BeaconKeyItem_) Is_(__source _dafny.Map) bool {
   599  	var _4_m _dafny.Map = (__source)
   600  	_ = _4_m
   601  	return Companion_Default___.BeaconKeyItem_q(_4_m)
   602  }