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

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