diff --git a/.github/workflows/go-release.yml b/.github/workflows/go-release.yml index b563a7f89..175f1e9b6 100644 --- a/.github/workflows/go-release.yml +++ b/.github/workflows/go-release.yml @@ -72,8 +72,8 @@ jobs: - name: Get release directory name id: release-dir run: | - chmod +x ./scripts/go-release-automation.sh - RELEASE_DIR_NAME=$(./scripts/go-release-automation.sh get_release_dir_name "${{ github.event.inputs.project-name }}" "${{ github.event.inputs.version }}") + chmod +x ./submodules/MaterialProviders/scripts/go-release-automation.sh + RELEASE_DIR_NAME=$(./submodules/MaterialProviders/scripts/go-release-automation.sh get_release_dir_name "${{ github.event.inputs.project-name }}" "${{ github.event.inputs.version }}") echo "releaseDirName=$RELEASE_DIR_NAME" >> $GITHUB_OUTPUT - name: Generate a changelog @@ -84,8 +84,8 @@ jobs: - name: Run Go release automation script run: | - chmod +x ./scripts/go-release-automation.sh - ./scripts/go-release-automation.sh run_release_script ${{ github.event.inputs.project-name }} ${{ github.event.inputs.version }} + chmod +x ./submodules/MaterialProviders/scripts/go-release-automation.sh + ./submodules/MaterialProviders/scripts/go-release-automation.sh run_release_script ${{ github.event.inputs.project-name }} ${{ github.event.inputs.version }} - name: Create Pull Request env: diff --git a/project.properties b/project.properties index 0de26ec02..39f9cb146 100644 --- a/project.properties +++ b/project.properties @@ -1,5 +1,5 @@ projectJavaVersion=3.9.0-SNAPSHOT -mplDependencyJavaVersion=1.11.0-SNAPSHOT +mplDependencyJavaVersion=1.11.1-SNAPSHOT dafnyVersion=4.9.0 dafnyVerifyVersion=4.9.1 dafnyRuntimeJavaVersion=4.9.0 diff --git a/releases/go/dynamodb-esdk/AttributeResolver/AttributeResolver.go b/releases/go/dynamodb-esdk/AttributeResolver/AttributeResolver.go new file mode 100644 index 000000000..16e55a632 --- /dev/null +++ b/releases/go/dynamodb-esdk/AttributeResolver/AttributeResolver.go @@ -0,0 +1,407 @@ +// Package AttributeResolver +// Dafny module AttributeResolver compiled into Go + +package AttributeResolver + +import ( + os "os" + + m_ComAmazonawsDynamodbTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/dynamodb/ComAmazonawsDynamodbTypes" + m_Com_Amazonaws_Dynamodb "github.com/aws/aws-cryptographic-material-providers-library/releases/go/dynamodb/Com_Amazonaws_Dynamodb" + m_ComAmazonawsKmsTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/kms/ComAmazonawsKmsTypes" + m_Com_Amazonaws_Kms "github.com/aws/aws-cryptographic-material-providers-library/releases/go/kms/Com_Amazonaws_Kms" + m_AlgorithmSuites "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AlgorithmSuites" + m_AwsArnParsing "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsArnParsing" + m_AwsCryptographyKeyStoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyKeyStoreOperations" + m_AwsCryptographyKeyStoreTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyKeyStoreTypes" + m_AwsCryptographyMaterialProvidersOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyMaterialProvidersOperations" + m_AwsCryptographyMaterialProvidersTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyMaterialProvidersTypes" + m_AwsKmsDiscoveryKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsDiscoveryKeyring" + m_AwsKmsEcdhKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsEcdhKeyring" + m_AwsKmsHierarchicalKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsHierarchicalKeyring" + m_AwsKmsKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsKeyring" + m_AwsKmsMrkAreUnique "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkAreUnique" + m_AwsKmsMrkDiscoveryKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkDiscoveryKeyring" + m_AwsKmsMrkKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkKeyring" + m_AwsKmsMrkMatchForDecrypt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkMatchForDecrypt" + m_AwsKmsRsaKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsRsaKeyring" + m_AwsKmsUtils "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsUtils" + m_CMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CMM" + m_CacheConstants "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CacheConstants" + m_CanonicalEncryptionContext "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CanonicalEncryptionContext" + m_Commitment "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Commitment" + m_Constants "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Constants" + m_CreateKeyStoreTable "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CreateKeyStoreTable" + m_CreateKeys "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CreateKeys" + m_DDBKeystoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DDBKeystoreOperations" + m_DefaultCMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DefaultCMM" + m_DefaultClientSupplier "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DefaultClientSupplier" + m_Defaults "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Defaults" + m_DiscoveryMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DiscoveryMultiKeyring" + m_EcdhEdkWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/EcdhEdkWrapping" + m_EdkWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/EdkWrapping" + m_ErrorMessages "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/ErrorMessages" + m_GetKeys "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/GetKeys" + m_IntermediateKeyWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/IntermediateKeyWrapping" + m_KMSKeystoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KMSKeystoreOperations" + m_KeyStore "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KeyStore" + m_KeyStoreErrorMessages "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KeyStoreErrorMessages" + m_Keyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Keyring" + m_KmsArn "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KmsArn" + m_LocalCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/LocalCMC" + m_MaterialProviders "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MaterialProviders" + m_MaterialWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MaterialWrapping" + m_Materials "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Materials" + m_MrkAwareDiscoveryMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MrkAwareDiscoveryMultiKeyring" + m_MrkAwareStrictMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MrkAwareStrictMultiKeyring" + m_MultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MultiKeyring" + m_RawAESKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawAESKeyring" + m_RawECDHKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawECDHKeyring" + m_RawRSAKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawRSAKeyring" + m_RequiredEncryptionContextCMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RequiredEncryptionContextCMM" + m_StormTracker "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StormTracker" + m_StormTrackingCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StormTrackingCMC" + m_StrictMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StrictMultiKeyring" + m_Structure "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Structure" + m_SynchronizedLocalCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/SynchronizedLocalCMC" + m_Utils "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Utils" + m_AtomicPrimitives "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AtomicPrimitives" + m_AwsCryptographyPrimitivesOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AwsCryptographyPrimitivesOperations" + m_AwsCryptographyPrimitivesTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AwsCryptographyPrimitivesTypes" + m_Digest "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/Digest" + m_HKDF "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/HKDF" + m_KdfCtr "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/KdfCtr" + m_Random "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/Random" + m_WrappedHKDF "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/WrappedHKDF" + m_WrappedHMAC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/WrappedHMAC" + m_Actions "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Actions" + m_Base64 "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Base64" + m_Base64Lemmas "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Base64Lemmas" + m_BoundedInts "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/BoundedInts" + m_DivInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivInternals" + m_DivInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivInternalsNonlinear" + m_DivMod "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivMod" + m_FileIO "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/FileIO" + m_FloatCompare "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/FloatCompare" + m_Functions "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Functions" + m_GeneralInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/GeneralInternals" + m_GetOpt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/GetOpt" + m_HexStrings "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/HexStrings" + m_Logarithm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Logarithm" + m__Math "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Math_" + m_ModInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/ModInternals" + m_ModInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/ModInternalsNonlinear" + m_Mul "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Mul" + m_MulInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/MulInternals" + m_MulInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/MulInternalsNonlinear" + m_Power "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Power" + m_Relations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Relations" + m_Seq "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Seq" + m_Seq_MergeSort "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Seq_MergeSort" + m_Sorting "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Sorting" + m_StandardLibrary "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary" + m_StandardLibraryInterop "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibraryInterop" + m_StandardLibrary_MemoryMath "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_MemoryMath" + m_StandardLibrary_Sequence "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_Sequence" + m_StandardLibrary_String "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_String" + m_StandardLibrary_UInt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_UInt" + m_Streams "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Streams" + m_UnicodeStrings "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/UnicodeStrings" + m__Unicode "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Unicode_" + m_Utf16EncodingForm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Utf16EncodingForm" + m_Utf8EncodingForm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Utf8EncodingForm" + m_Wrappers "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Wrappers" + m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations" + m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes" + m_AwsCryptographyDbEncryptionSdkDynamoDbOperations "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbOperations" + m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes" + m_AwsCryptographyDbEncryptionSdkDynamoDbTypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbTypes" + m_AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations" + m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes" + m_BaseBeacon "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/BaseBeacon" + m_BatchExecuteStatementTransform "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/BatchExecuteStatementTransform" + m_BatchGetItemTransform "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/BatchGetItemTransform" + m_BatchWriteItemTransform "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/BatchWriteItemTransform" + m_Canonize "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/Canonize" + m_CompoundBeacon "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/CompoundBeacon" + m_DdbMiddlewareConfig "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DdbMiddlewareConfig" + m_DdbStatement "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DdbStatement" + m_DdbVirtualFields "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DdbVirtualFields" + m_DeleteItemTransform "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DeleteItemTransform" + m_DynamoDBFilterExpr "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDBFilterExpr" + m_DynamoDBSupport "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDBSupport" + m_DynamoDbEncryption "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbEncryption" + m_DynamoDbEncryptionBranchKeyIdSupplier "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbEncryptionBranchKeyIdSupplier" + m_DynamoDbEncryptionUtil "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbEncryptionUtil" + m_DynamoDbItemEncryptor "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbItemEncryptor" + m_DynamoDbItemEncryptorUtil "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbItemEncryptorUtil" + m_DynamoDbMiddlewareSupport "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbMiddlewareSupport" + m_DynamoDbNormalizeNumber "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbNormalizeNumber" + m_DynamoDbUpdateExpr "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbUpdateExpr" + m_DynamoToStruct "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoToStruct" + m_ExecuteStatementTransform "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/ExecuteStatementTransform" + m_ExecuteTransactionTransform "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/ExecuteTransactionTransform" + m_GetItemTransform "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/GetItemTransform" + m_InternalLegacyOverride "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/InternalLegacyOverride" + m__Maps "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/Maps_" + m_OptimizedMergeSort "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/OptimizedMergeSort" + m_PutItemTransform "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/PutItemTransform" + m_QueryTransform "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/QueryTransform" + m_ScanTransform "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/ScanTransform" + m_SearchConfigToInfo "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/SearchConfigToInfo" + m_SearchableEncryptionInfo "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/SearchableEncryptionInfo" + m_Sets "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/Sets" + m_SortCanon "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/SortCanon" + m_StructuredEncryption "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryption" + m_StructuredEncryptionCrypt "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionCrypt" + m_StructuredEncryptionFooter "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionFooter" + m_StructuredEncryptionHeader "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionHeader" + m_StructuredEncryptionPaths "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionPaths" + m_StructuredEncryptionUtil "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionUtil" + m_TermLoc "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/TermLoc" + m_TransactGetItemsTransform "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/TransactGetItemsTransform" + m_TransactWriteItemsTransform "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/TransactWriteItemsTransform" + m_UpdateItemTransform "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/UpdateItemTransform" + m__System "github.com/dafny-lang/DafnyRuntimeGo/v4/System_" + _dafny "github.com/dafny-lang/DafnyRuntimeGo/v4/dafny" +) + +var _ = os.Args +var _ _dafny.Dummy__ +var _ m__System.Dummy__ +var _ m_Wrappers.Dummy__ +var _ m_BoundedInts.Dummy__ +var _ m_StandardLibrary_UInt.Dummy__ +var _ m_StandardLibrary_MemoryMath.Dummy__ +var _ m_StandardLibrary_Sequence.Dummy__ +var _ m_StandardLibrary_String.Dummy__ +var _ m_StandardLibrary.Dummy__ +var _ m_AwsCryptographyPrimitivesTypes.Dummy__ +var _ m_Random.Dummy__ +var _ m_Digest.Dummy__ +var _ m_WrappedHMAC.Dummy__ +var _ m_HKDF.Dummy__ +var _ m_WrappedHKDF.Dummy__ +var _ m_KdfCtr.Dummy__ +var _ m_AwsCryptographyPrimitivesOperations.Dummy__ +var _ m_AtomicPrimitives.Dummy__ +var _ m_ComAmazonawsDynamodbTypes.Dummy__ +var _ m_ComAmazonawsKmsTypes.Dummy__ +var _ m_AwsCryptographyKeyStoreTypes.Dummy__ +var _ m_AwsCryptographyMaterialProvidersTypes.Dummy__ +var _ m_Base64.Dummy__ +var _ m_AlgorithmSuites.Dummy__ +var _ m_Materials.Dummy__ +var _ m_Keyring.Dummy__ +var _ m_Relations.Dummy__ +var _ m_Seq_MergeSort.Dummy__ +var _ m__Math.Dummy__ +var _ m_Seq.Dummy__ +var _ m_Actions.Dummy__ +var _ m_CanonicalEncryptionContext.Dummy__ +var _ m_MaterialWrapping.Dummy__ +var _ m_IntermediateKeyWrapping.Dummy__ +var _ m_EdkWrapping.Dummy__ +var _ m_ErrorMessages.Dummy__ +var _ m_RawAESKeyring.Dummy__ +var _ m_AwsArnParsing.Dummy__ +var _ m_Constants.Dummy__ +var _ m_EcdhEdkWrapping.Dummy__ +var _ m_RawECDHKeyring.Dummy__ +var _ m_RawRSAKeyring.Dummy__ +var _ m_AwsKmsMrkMatchForDecrypt.Dummy__ +var _ m_AwsKmsUtils.Dummy__ +var _ m_AwsKmsKeyring.Dummy__ +var _ m_AwsKmsDiscoveryKeyring.Dummy__ +var _ m_AwsKmsEcdhKeyring.Dummy__ +var _ m_FileIO.Dummy__ +var _ m_LocalCMC.Dummy__ +var _ m_SynchronizedLocalCMC.Dummy__ +var _ m_StormTracker.Dummy__ +var _ m_StormTrackingCMC.Dummy__ +var _ m_CacheConstants.Dummy__ +var _ m_AwsKmsHierarchicalKeyring.Dummy__ +var _ m_AwsKmsMrkDiscoveryKeyring.Dummy__ +var _ m_AwsKmsMrkKeyring.Dummy__ +var _ m_AwsKmsRsaKeyring.Dummy__ +var _ m_MultiKeyring.Dummy__ +var _ m_AwsKmsMrkAreUnique.Dummy__ +var _ m_StrictMultiKeyring.Dummy__ +var _ m_Com_Amazonaws_Kms.Dummy__ +var _ m_Com_Amazonaws_Dynamodb.Dummy__ +var _ m_DiscoveryMultiKeyring.Dummy__ +var _ m_MrkAwareDiscoveryMultiKeyring.Dummy__ +var _ m_MrkAwareStrictMultiKeyring.Dummy__ +var _ m_CMM.Dummy__ +var _ m_Defaults.Dummy__ +var _ m_Commitment.Dummy__ +var _ m_DefaultCMM.Dummy__ +var _ m_DefaultClientSupplier.Dummy__ +var _ m_Utils.Dummy__ +var _ m_RequiredEncryptionContextCMM.Dummy__ +var _ m_AwsCryptographyMaterialProvidersOperations.Dummy__ +var _ m_MaterialProviders.Dummy__ +var _ m_KeyStoreErrorMessages.Dummy__ +var _ m_KmsArn.Dummy__ +var _ m_Structure.Dummy__ +var _ m_KMSKeystoreOperations.Dummy__ +var _ m_DDBKeystoreOperations.Dummy__ +var _ m_CreateKeys.Dummy__ +var _ m_CreateKeyStoreTable.Dummy__ +var _ m_GetKeys.Dummy__ +var _ m_AwsCryptographyKeyStoreOperations.Dummy__ +var _ m_KeyStore.Dummy__ +var _ m__Unicode.Dummy__ +var _ m_Functions.Dummy__ +var _ m_Utf8EncodingForm.Dummy__ +var _ m_Utf16EncodingForm.Dummy__ +var _ m_UnicodeStrings.Dummy__ +var _ m_GeneralInternals.Dummy__ +var _ m_MulInternalsNonlinear.Dummy__ +var _ m_MulInternals.Dummy__ +var _ m_Mul.Dummy__ +var _ m_ModInternalsNonlinear.Dummy__ +var _ m_DivInternalsNonlinear.Dummy__ +var _ m_ModInternals.Dummy__ +var _ m_DivInternals.Dummy__ +var _ m_DivMod.Dummy__ +var _ m_Power.Dummy__ +var _ m_Logarithm.Dummy__ +var _ m_StandardLibraryInterop.Dummy__ +var _ m_Streams.Dummy__ +var _ m_Sorting.Dummy__ +var _ m_HexStrings.Dummy__ +var _ m_GetOpt.Dummy__ +var _ m_FloatCompare.Dummy__ +var _ m_Base64Lemmas.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Dummy__ +var _ m_StructuredEncryptionUtil.Dummy__ +var _ m_Sets.Dummy__ +var _ m_StructuredEncryptionPaths.Dummy__ +var _ m_StructuredEncryptionHeader.Dummy__ +var _ m_StructuredEncryptionFooter.Dummy__ +var _ m_OptimizedMergeSort.Dummy__ +var _ m_SortCanon.Dummy__ +var _ m_Canonize.Dummy__ +var _ m_StructuredEncryptionCrypt.Dummy__ +var _ m__Maps.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations.Dummy__ +var _ m_StructuredEncryption.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Dummy__ +var _ m_DynamoDbEncryptionUtil.Dummy__ +var _ m_DynamoDbNormalizeNumber.Dummy__ +var _ m_DynamoToStruct.Dummy__ +var _ m_DynamoDbItemEncryptorUtil.Dummy__ +var _ m_InternalLegacyOverride.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations.Dummy__ +var _ m_DynamoDbItemEncryptor.Dummy__ +var _ m_DynamoDbEncryptionBranchKeyIdSupplier.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbOperations.Dummy__ +var _ m_DynamoDbEncryption.Dummy__ +var _ m_TermLoc.Dummy__ +var _ m_DdbVirtualFields.Dummy__ +var _ m_DynamoDbUpdateExpr.Dummy__ +var _ m_BaseBeacon.Dummy__ +var _ m_CompoundBeacon.Dummy__ +var _ m_SearchableEncryptionInfo.Dummy__ +var _ m_DynamoDBFilterExpr.Dummy__ +var _ m_DynamoDBSupport.Dummy__ +var _ m_SearchConfigToInfo.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Dummy__ +var _ m_DdbMiddlewareConfig.Dummy__ +var _ m_DdbStatement.Dummy__ +var _ m_DynamoDbMiddlewareSupport.Dummy__ +var _ m_PutItemTransform.Dummy__ +var _ m_GetItemTransform.Dummy__ +var _ m_UpdateItemTransform.Dummy__ +var _ m_BatchWriteItemTransform.Dummy__ +var _ m_TransactWriteItemsTransform.Dummy__ +var _ m_BatchGetItemTransform.Dummy__ +var _ m_ScanTransform.Dummy__ +var _ m_QueryTransform.Dummy__ +var _ m_TransactGetItemsTransform.Dummy__ +var _ m_DeleteItemTransform.Dummy__ +var _ m_ExecuteStatementTransform.Dummy__ +var _ m_BatchExecuteStatementTransform.Dummy__ +var _ m_ExecuteTransactionTransform.Dummy__ + +type Dummy__ struct{} + +// Definition of class Default__ +type Default__ struct { + dummy byte +} + +func New_Default___() *Default__ { + _this := Default__{} + + return &_this +} + +type CompanionStruct_Default___ struct { +} + +var Companion_Default___ = CompanionStruct_Default___{} + +func (_this *Default__) Equals(other *Default__) bool { + return _this == other +} + +func (_this *Default__) EqualsGeneric(x interface{}) bool { + other, ok := x.(*Default__) + return ok && _this.Equals(other) +} + +func (*Default__) String() string { + return "AttributeResolver.Default__" +} +func (_this *Default__) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = &Default__{} + +func (_static *CompanionStruct_Default___) Resolve(config m_DdbMiddlewareConfig.Config, input m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.ResolveAttributesInput) m_Wrappers.Result { + var output m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_ResolveAttributesOutput_.Default()) + _ = output + if (!((config).Dtor_tableEncryptionConfigs()).Contains((input).Dtor_TableName())) || (((((config).Dtor_tableEncryptionConfigs()).Get((input).Dtor_TableName()).(m_DdbMiddlewareConfig.TableConfig)).Dtor_search()).Is_None()) { + output = m_Wrappers.Companion_Result_.Create_Success_(m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_ResolveAttributesOutput_.Create_ResolveAttributesOutput_(_dafny.NewMapBuilder().ToMap(), _dafny.NewMapBuilder().ToMap())) + return output + } else { + var _0_tableConfig m_DdbMiddlewareConfig.TableConfig + _ = _0_tableConfig + _0_tableConfig = ((config).Dtor_tableEncryptionConfigs()).Get((input).Dtor_TableName()).(m_DdbMiddlewareConfig.TableConfig) + var _1_valueOrError0 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(_dafny.EmptyMap) + _ = _1_valueOrError0 + var _out0 m_Wrappers.Result + _ = _out0 + _out0 = m_DynamoDbMiddlewareSupport.Companion_Default___.GetVirtualFields(((_0_tableConfig).Dtor_search()).Dtor_value().(m_SearchableEncryptionInfo.SearchInfo), (input).Dtor_Item(), (input).Dtor_Version()) + _1_valueOrError0 = _out0 + if (_1_valueOrError0).IsFailure() { + output = (_1_valueOrError0).PropagateFailure() + return output + } + var _2_vf _dafny.Map + _ = _2_vf + _2_vf = (_1_valueOrError0).Extract().(_dafny.Map) + var _3_valueOrError1 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(_dafny.EmptyMap) + _ = _3_valueOrError1 + var _out1 m_Wrappers.Result + _ = _out1 + _out1 = m_DynamoDbMiddlewareSupport.Companion_Default___.GetCompoundBeacons(((_0_tableConfig).Dtor_search()).Dtor_value().(m_SearchableEncryptionInfo.SearchInfo), (input).Dtor_Item(), (input).Dtor_Version()) + _3_valueOrError1 = _out1 + if (_3_valueOrError1).IsFailure() { + output = (_3_valueOrError1).PropagateFailure() + return output + } + var _4_cb _dafny.Map + _ = _4_cb + _4_cb = (_3_valueOrError1).Extract().(_dafny.Map) + output = m_Wrappers.Companion_Result_.Create_Success_(m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_ResolveAttributesOutput_.Create_ResolveAttributesOutput_(_2_vf, _4_cb)) + return output + } + return output +} + +// End of class Default__ diff --git a/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations/AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations.go b/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations/AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations.go new file mode 100644 index 000000000..7d0382e61 --- /dev/null +++ b/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations/AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations.go @@ -0,0 +1,1323 @@ +// Package AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations +// Dafny module AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations compiled into Go + +package AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations + +import ( + os "os" + + m_ComAmazonawsDynamodbTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/dynamodb/ComAmazonawsDynamodbTypes" + m_Com_Amazonaws_Dynamodb "github.com/aws/aws-cryptographic-material-providers-library/releases/go/dynamodb/Com_Amazonaws_Dynamodb" + m_ComAmazonawsKmsTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/kms/ComAmazonawsKmsTypes" + m_Com_Amazonaws_Kms "github.com/aws/aws-cryptographic-material-providers-library/releases/go/kms/Com_Amazonaws_Kms" + m_AlgorithmSuites "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AlgorithmSuites" + m_AwsArnParsing "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsArnParsing" + m_AwsCryptographyKeyStoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyKeyStoreOperations" + m_AwsCryptographyKeyStoreTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyKeyStoreTypes" + m_AwsCryptographyMaterialProvidersOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyMaterialProvidersOperations" + m_AwsCryptographyMaterialProvidersTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyMaterialProvidersTypes" + m_AwsKmsDiscoveryKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsDiscoveryKeyring" + m_AwsKmsEcdhKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsEcdhKeyring" + m_AwsKmsHierarchicalKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsHierarchicalKeyring" + m_AwsKmsKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsKeyring" + m_AwsKmsMrkAreUnique "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkAreUnique" + m_AwsKmsMrkDiscoveryKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkDiscoveryKeyring" + m_AwsKmsMrkKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkKeyring" + m_AwsKmsMrkMatchForDecrypt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkMatchForDecrypt" + m_AwsKmsRsaKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsRsaKeyring" + m_AwsKmsUtils "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsUtils" + m_CMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CMM" + m_CacheConstants "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CacheConstants" + m_CanonicalEncryptionContext "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CanonicalEncryptionContext" + m_Commitment "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Commitment" + m_Constants "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Constants" + m_CreateKeyStoreTable "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CreateKeyStoreTable" + m_CreateKeys "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CreateKeys" + m_DDBKeystoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DDBKeystoreOperations" + m_DefaultCMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DefaultCMM" + m_DefaultClientSupplier "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DefaultClientSupplier" + m_Defaults "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Defaults" + m_DiscoveryMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DiscoveryMultiKeyring" + m_EcdhEdkWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/EcdhEdkWrapping" + m_EdkWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/EdkWrapping" + m_ErrorMessages "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/ErrorMessages" + m_GetKeys "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/GetKeys" + m_IntermediateKeyWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/IntermediateKeyWrapping" + m_KMSKeystoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KMSKeystoreOperations" + m_KeyStore "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KeyStore" + m_KeyStoreErrorMessages "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KeyStoreErrorMessages" + m_Keyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Keyring" + m_KmsArn "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KmsArn" + m_LocalCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/LocalCMC" + m_MaterialProviders "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MaterialProviders" + m_MaterialWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MaterialWrapping" + m_Materials "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Materials" + m_MrkAwareDiscoveryMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MrkAwareDiscoveryMultiKeyring" + m_MrkAwareStrictMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MrkAwareStrictMultiKeyring" + m_MultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MultiKeyring" + m_RawAESKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawAESKeyring" + m_RawECDHKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawECDHKeyring" + m_RawRSAKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawRSAKeyring" + m_RequiredEncryptionContextCMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RequiredEncryptionContextCMM" + m_StormTracker "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StormTracker" + m_StormTrackingCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StormTrackingCMC" + m_StrictMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StrictMultiKeyring" + m_Structure "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Structure" + m_SynchronizedLocalCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/SynchronizedLocalCMC" + m_Utils "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Utils" + m_AtomicPrimitives "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AtomicPrimitives" + m_AwsCryptographyPrimitivesOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AwsCryptographyPrimitivesOperations" + m_AwsCryptographyPrimitivesTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AwsCryptographyPrimitivesTypes" + m_Digest "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/Digest" + m_HKDF "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/HKDF" + m_KdfCtr "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/KdfCtr" + m_Random "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/Random" + m_WrappedHKDF "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/WrappedHKDF" + m_WrappedHMAC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/WrappedHMAC" + m_Actions "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Actions" + m_Base64 "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Base64" + m_Base64Lemmas "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Base64Lemmas" + m_BoundedInts "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/BoundedInts" + m_DivInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivInternals" + m_DivInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivInternalsNonlinear" + m_DivMod "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivMod" + m_FileIO "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/FileIO" + m_FloatCompare "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/FloatCompare" + m_Functions "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Functions" + m_GeneralInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/GeneralInternals" + m_GetOpt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/GetOpt" + m_HexStrings "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/HexStrings" + m_Logarithm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Logarithm" + m__Math "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Math_" + m_ModInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/ModInternals" + m_ModInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/ModInternalsNonlinear" + m_Mul "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Mul" + m_MulInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/MulInternals" + m_MulInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/MulInternalsNonlinear" + m_Power "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Power" + m_Relations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Relations" + m_Seq "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Seq" + m_Seq_MergeSort "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Seq_MergeSort" + m_SortedSets "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/SortedSets" + m_Sorting "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Sorting" + m_StandardLibrary "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary" + m_StandardLibraryInterop "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibraryInterop" + m_StandardLibrary_MemoryMath "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_MemoryMath" + m_StandardLibrary_Sequence "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_Sequence" + m_StandardLibrary_String "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_String" + m_StandardLibrary_UInt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_UInt" + m_Streams "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Streams" + m_UTF8 "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/UTF8" + m_UnicodeStrings "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/UnicodeStrings" + m__Unicode "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Unicode_" + m_Utf16EncodingForm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Utf16EncodingForm" + m_Utf8EncodingForm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Utf8EncodingForm" + m_Wrappers "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Wrappers" + m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes" + m_AwsCryptographyDbEncryptionSdkDynamoDbTypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbTypes" + m_AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations" + m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes" + m_Canonize "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/Canonize" + m_DynamoDbEncryptionUtil "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbEncryptionUtil" + m_DynamoDbItemEncryptorUtil "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbItemEncryptorUtil" + m_DynamoDbNormalizeNumber "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbNormalizeNumber" + m_DynamoToStruct "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoToStruct" + m_InternalLegacyOverride "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/InternalLegacyOverride" + m__Maps "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/Maps_" + m_OptimizedMergeSort "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/OptimizedMergeSort" + m_Sets "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/Sets" + m_SortCanon "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/SortCanon" + m_StructuredEncryption "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryption" + m_StructuredEncryptionCrypt "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionCrypt" + m_StructuredEncryptionFooter "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionFooter" + m_StructuredEncryptionHeader "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionHeader" + m_StructuredEncryptionPaths "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionPaths" + m_StructuredEncryptionUtil "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionUtil" + m__System "github.com/dafny-lang/DafnyRuntimeGo/v4/System_" + _dafny "github.com/dafny-lang/DafnyRuntimeGo/v4/dafny" +) + +var _ = os.Args +var _ _dafny.Dummy__ +var _ m__System.Dummy__ +var _ m_Wrappers.Dummy__ +var _ m_BoundedInts.Dummy__ +var _ m_StandardLibrary_UInt.Dummy__ +var _ m_StandardLibrary_MemoryMath.Dummy__ +var _ m_StandardLibrary_Sequence.Dummy__ +var _ m_StandardLibrary_String.Dummy__ +var _ m_StandardLibrary.Dummy__ +var _ m_AwsCryptographyPrimitivesTypes.Dummy__ +var _ m_Random.Dummy__ +var _ m_Digest.Dummy__ +var _ m_WrappedHMAC.Dummy__ +var _ m_HKDF.Dummy__ +var _ m_WrappedHKDF.Dummy__ +var _ m_KdfCtr.Dummy__ +var _ m_AwsCryptographyPrimitivesOperations.Dummy__ +var _ m_AtomicPrimitives.Dummy__ +var _ m_ComAmazonawsDynamodbTypes.Dummy__ +var _ m_ComAmazonawsKmsTypes.Dummy__ +var _ m_AwsCryptographyKeyStoreTypes.Dummy__ +var _ m_AwsCryptographyMaterialProvidersTypes.Dummy__ +var _ m_Base64.Dummy__ +var _ m_AlgorithmSuites.Dummy__ +var _ m_Materials.Dummy__ +var _ m_Keyring.Dummy__ +var _ m_Relations.Dummy__ +var _ m_Seq_MergeSort.Dummy__ +var _ m__Math.Dummy__ +var _ m_Seq.Dummy__ +var _ m_Actions.Dummy__ +var _ m_CanonicalEncryptionContext.Dummy__ +var _ m_MaterialWrapping.Dummy__ +var _ m_IntermediateKeyWrapping.Dummy__ +var _ m_EdkWrapping.Dummy__ +var _ m_ErrorMessages.Dummy__ +var _ m_RawAESKeyring.Dummy__ +var _ m_AwsArnParsing.Dummy__ +var _ m_Constants.Dummy__ +var _ m_EcdhEdkWrapping.Dummy__ +var _ m_RawECDHKeyring.Dummy__ +var _ m_RawRSAKeyring.Dummy__ +var _ m_AwsKmsMrkMatchForDecrypt.Dummy__ +var _ m_AwsKmsUtils.Dummy__ +var _ m_AwsKmsKeyring.Dummy__ +var _ m_AwsKmsDiscoveryKeyring.Dummy__ +var _ m_AwsKmsEcdhKeyring.Dummy__ +var _ m_FileIO.Dummy__ +var _ m_LocalCMC.Dummy__ +var _ m_SynchronizedLocalCMC.Dummy__ +var _ m_StormTracker.Dummy__ +var _ m_StormTrackingCMC.Dummy__ +var _ m_CacheConstants.Dummy__ +var _ m_AwsKmsHierarchicalKeyring.Dummy__ +var _ m_AwsKmsMrkDiscoveryKeyring.Dummy__ +var _ m_AwsKmsMrkKeyring.Dummy__ +var _ m_AwsKmsRsaKeyring.Dummy__ +var _ m_MultiKeyring.Dummy__ +var _ m_AwsKmsMrkAreUnique.Dummy__ +var _ m_StrictMultiKeyring.Dummy__ +var _ m_Com_Amazonaws_Kms.Dummy__ +var _ m_Com_Amazonaws_Dynamodb.Dummy__ +var _ m_DiscoveryMultiKeyring.Dummy__ +var _ m_MrkAwareDiscoveryMultiKeyring.Dummy__ +var _ m_MrkAwareStrictMultiKeyring.Dummy__ +var _ m_CMM.Dummy__ +var _ m_Defaults.Dummy__ +var _ m_Commitment.Dummy__ +var _ m_DefaultCMM.Dummy__ +var _ m_DefaultClientSupplier.Dummy__ +var _ m_Utils.Dummy__ +var _ m_RequiredEncryptionContextCMM.Dummy__ +var _ m_AwsCryptographyMaterialProvidersOperations.Dummy__ +var _ m_MaterialProviders.Dummy__ +var _ m_KeyStoreErrorMessages.Dummy__ +var _ m_KmsArn.Dummy__ +var _ m_Structure.Dummy__ +var _ m_KMSKeystoreOperations.Dummy__ +var _ m_DDBKeystoreOperations.Dummy__ +var _ m_CreateKeys.Dummy__ +var _ m_CreateKeyStoreTable.Dummy__ +var _ m_GetKeys.Dummy__ +var _ m_AwsCryptographyKeyStoreOperations.Dummy__ +var _ m_KeyStore.Dummy__ +var _ m__Unicode.Dummy__ +var _ m_Functions.Dummy__ +var _ m_Utf8EncodingForm.Dummy__ +var _ m_Utf16EncodingForm.Dummy__ +var _ m_UnicodeStrings.Dummy__ +var _ m_GeneralInternals.Dummy__ +var _ m_MulInternalsNonlinear.Dummy__ +var _ m_MulInternals.Dummy__ +var _ m_Mul.Dummy__ +var _ m_ModInternalsNonlinear.Dummy__ +var _ m_DivInternalsNonlinear.Dummy__ +var _ m_ModInternals.Dummy__ +var _ m_DivInternals.Dummy__ +var _ m_DivMod.Dummy__ +var _ m_Power.Dummy__ +var _ m_Logarithm.Dummy__ +var _ m_StandardLibraryInterop.Dummy__ +var _ m_Streams.Dummy__ +var _ m_Sorting.Dummy__ +var _ m_HexStrings.Dummy__ +var _ m_GetOpt.Dummy__ +var _ m_FloatCompare.Dummy__ +var _ m_Base64Lemmas.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Dummy__ +var _ m_StructuredEncryptionUtil.Dummy__ +var _ m_Sets.Dummy__ +var _ m_StructuredEncryptionPaths.Dummy__ +var _ m_StructuredEncryptionHeader.Dummy__ +var _ m_StructuredEncryptionFooter.Dummy__ +var _ m_OptimizedMergeSort.Dummy__ +var _ m_SortCanon.Dummy__ +var _ m_Canonize.Dummy__ +var _ m_StructuredEncryptionCrypt.Dummy__ +var _ m__Maps.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations.Dummy__ +var _ m_StructuredEncryption.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Dummy__ +var _ m_DynamoDbEncryptionUtil.Dummy__ +var _ m_DynamoDbNormalizeNumber.Dummy__ +var _ m_DynamoToStruct.Dummy__ +var _ m_DynamoDbItemEncryptorUtil.Dummy__ +var _ m_InternalLegacyOverride.Dummy__ + +type Dummy__ struct{} + +// Definition of class Default__ +type Default__ struct { + dummy byte +} + +func New_Default___() *Default__ { + _this := Default__{} + + return &_this +} + +type CompanionStruct_Default___ struct { +} + +var Companion_Default___ = CompanionStruct_Default___{} + +func (_this *Default__) Equals(other *Default__) bool { + return _this == other +} + +func (_this *Default__) EqualsGeneric(x interface{}) bool { + other, ok := x.(*Default__) + return ok && _this.Equals(other) +} + +func (*Default__) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations.Default__" +} +func (_this *Default__) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = &Default__{} + +func (_static *CompanionStruct_Default___) AllowedUnsigned(unauthenticatedAttributes m_Wrappers.Option, unauthenticatedPrefix m_Wrappers.Option, attr _dafny.Sequence) bool { + return ((((unauthenticatedAttributes).Is_Some()) && (_dafny.Companion_Sequence_.Contains((unauthenticatedAttributes).Dtor_value().(_dafny.Sequence), attr))) || (((unauthenticatedPrefix).Is_Some()) && (_dafny.Companion_Sequence_.IsPrefixOf((unauthenticatedPrefix).Dtor_value().(_dafny.Sequence), attr)))) || (_dafny.Companion_Sequence_.IsPrefixOf(m_DynamoDbItemEncryptorUtil.Companion_Default___.ReservedPrefix(), attr)) +} +func (_static *CompanionStruct_Default___) ForwardCompatibleAttributeAction(attribute _dafny.Sequence, action m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.CryptoAction, unauthenticatedAttributes m_Wrappers.Option, unauthenticatedPrefix m_Wrappers.Option) bool { + if (action).Equals(m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Companion_CryptoAction_.Create_DO__NOTHING_()) { + return Companion_Default___.AllowedUnsigned(unauthenticatedAttributes, unauthenticatedPrefix, attribute) + } else { + return !(Companion_Default___.AllowedUnsigned(unauthenticatedAttributes, unauthenticatedPrefix, attribute)) + } +} +func (_static *CompanionStruct_Default___) CryptoActionString(action m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.CryptoAction) _dafny.Sequence { + if (action).Equals(m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Companion_CryptoAction_.Create_DO__NOTHING_()) { + return _dafny.SeqOfString("DO_NOTHING") + } else if (action).Equals(m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Companion_CryptoAction_.Create_SIGN__ONLY_()) { + return _dafny.SeqOfString("SIGN_ONLY") + } else if (action).Equals(m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Companion_CryptoAction_.Create_SIGN__AND__INCLUDE__IN__ENCRYPTION__CONTEXT_()) { + return _dafny.SeqOfString("SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT") + } else if (action).Equals(m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Companion_CryptoAction_.Create_ENCRYPT__AND__SIGN_()) { + return _dafny.SeqOfString("ENCRYPT_AND_SIGN") + } else { + return _dafny.SeqOfString("internal error") + } +} +func (_static *CompanionStruct_Default___) ExplainNotForwardCompatible(attr _dafny.Sequence, action m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.CryptoAction, unauthenticatedAttributes m_Wrappers.Option, unauthenticatedPrefix m_Wrappers.Option) _dafny.Sequence { + return _dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("Attribute "), attr), _dafny.SeqOfString(" is configured as ")), Companion_Default___.CryptoActionString(action)), _dafny.SeqOfString(" but ")), (func() _dafny.Sequence { + if (action).Equals(m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Companion_CryptoAction_.Create_DO__NOTHING_()) { + return _dafny.SeqOfString("it must also be in unauthenticatedAttributes or begin with the unauthenticatedPrefix.") + } + return (func() _dafny.Sequence { + if ((unauthenticatedAttributes).Is_Some()) && (_dafny.Companion_Sequence_.Contains((unauthenticatedAttributes).Dtor_value().(_dafny.Sequence), attr)) { + return _dafny.SeqOfString("it is also in unauthenticatedAttributes.") + } + return (func() _dafny.Sequence { + if ((unauthenticatedPrefix).Is_Some()) && (_dafny.Companion_Sequence_.IsPrefixOf((unauthenticatedPrefix).Dtor_value().(_dafny.Sequence), attr)) { + return _dafny.SeqOfString("it also begins with the unauthenticatedPrefix.") + } + return _dafny.SeqOfString("it also begins with the reserved prefix.") + })() + })() + })()) +} +func (_static *CompanionStruct_Default___) UnknownAttribute(config Config, attr _dafny.Sequence) bool { + return (Companion_Default___.InSignatureScope(config, attr)) && (!((config).Dtor_attributeActionsOnEncrypt()).Contains(attr)) +} +func (_static *CompanionStruct_Default___) InSignatureScope(config Config, attr _dafny.Sequence) bool { + return !(Companion_Default___.AllowedUnsigned((config).Dtor_allowedUnsignedAttributes(), (config).Dtor_allowedUnsignedAttributePrefix(), attr)) +} +func (_static *CompanionStruct_Default___) EncodeName(k _dafny.Sequence) m_Wrappers.Result { + return Companion_Default___.DDBEncode(_dafny.Companion_Sequence_.Concatenate(m_StructuredEncryptionUtil.Companion_Default___.ATTR__PREFIX(), k)) +} +func (_static *CompanionStruct_Default___) MakeEncryptionContextForEncrypt(config Config, item _dafny.Map) m_Wrappers.Result { + if ((config).Dtor_version()) == (uint8(2)) { + return Companion_Default___.MakeEncryptionContextV2(config, item) + } else { + return Companion_Default___.MakeEncryptionContextV1(config, item) + } +} +func (_static *CompanionStruct_Default___) MakeEncryptionContextForDecrypt(config Config, header _dafny.Sequence, item _dafny.Map) m_Wrappers.Result { + if ((header).Select(uint32(uint32(0))).(uint8)) == (uint8(2)) { + return Companion_Default___.MakeEncryptionContextV2(config, item) + } else if ((header).Select(uint32(uint32(0))).(uint8)) == (uint8(1)) { + return Companion_Default___.MakeEncryptionContextV1(config, item) + } else { + return m_Wrappers.Companion_Result_.Create_Failure_(m_DynamoDbItemEncryptorUtil.Companion_Default___.E(_dafny.SeqOfString("Header attribute has unexpected version number"))) + } +} +func (_static *CompanionStruct_Default___) MakeEncryptionContextV1(config Config, item _dafny.Map) m_Wrappers.Result { + var _0_valueOrError0 m_Wrappers.Outcome = m_Wrappers.Companion_Default___.FNeed((item).Contains((config).Dtor_partitionKeyName()), func(coer53 func() m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Error) func() interface{} { + return func() interface{} { + return coer53() + } + }((func(_1_config Config) func() m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Error { + return func() m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Error { + return Companion_Default___.DDBError(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("Partition key "), (_1_config).Dtor_partitionKeyName()), _dafny.SeqOfString(" not found in Item to be encrypted or decrypted"))) + } + })(config))) + _ = _0_valueOrError0 + if (_0_valueOrError0).IsFailure() { + return (_0_valueOrError0).PropagateFailure() + } else { + var _2_valueOrError1 m_Wrappers.Result = Companion_Default___.DDBEncode((config).Dtor_logicalTableName()) + _ = _2_valueOrError1 + if (_2_valueOrError1).IsFailure() { + return (_2_valueOrError1).PropagateFailure() + } else { + var _3_logicalTableName _dafny.Sequence = (_2_valueOrError1).Extract().(_dafny.Sequence) + _ = _3_logicalTableName + var _4_valueOrError2 m_Wrappers.Result = Companion_Default___.DDBEncode((config).Dtor_partitionKeyName()) + _ = _4_valueOrError2 + if (_4_valueOrError2).IsFailure() { + return (_4_valueOrError2).PropagateFailure() + } else { + var _5_partitionName _dafny.Sequence = (_4_valueOrError2).Extract().(_dafny.Sequence) + _ = _5_partitionName + var _6_valueOrError3 m_Wrappers.Result = Companion_Default___.EncodeName((config).Dtor_partitionKeyName()) + _ = _6_valueOrError3 + if (_6_valueOrError3).IsFailure() { + return (_6_valueOrError3).PropagateFailure() + } else { + var _7_partitionKeyName _dafny.Sequence = (_6_valueOrError3).Extract().(_dafny.Sequence) + _ = _7_partitionKeyName + var _8_partitionKeyValue _dafny.Sequence = m_StructuredEncryptionUtil.Companion_Default___.EncodeTerminal((item).Get((config).Dtor_partitionKeyName()).(m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.StructuredDataTerminal)) + _ = _8_partitionKeyValue + if ((config).Dtor_sortKeyName()).Is_None() { + var _9_valueOrError4 m_Wrappers.Outcome = m_Wrappers.Companion_Default___.Need(((_dafny.SetOf(m_DynamoDbItemEncryptorUtil.Companion_Default___.TABLE__NAME(), m_DynamoDbItemEncryptorUtil.Companion_Default___.PARTITION__NAME(), m_DynamoDbItemEncryptorUtil.Companion_Default___.SORT__NAME(), _7_partitionKeyName)).Cardinality()).Cmp(_dafny.IntOfInt64(4)) == 0, m_DynamoDbItemEncryptorUtil.Companion_Default___.E(_dafny.SeqOfString("Internal Error"))) + _ = _9_valueOrError4 + if (_9_valueOrError4).IsFailure() { + return (_9_valueOrError4).PropagateFailure() + } else { + var _10_ec _dafny.Map = _dafny.NewMapBuilder().ToMap().UpdateUnsafe(m_DynamoDbItemEncryptorUtil.Companion_Default___.TABLE__NAME(), _3_logicalTableName).UpdateUnsafe(m_DynamoDbItemEncryptorUtil.Companion_Default___.PARTITION__NAME(), _5_partitionName).UpdateUnsafe(_7_partitionKeyName, _8_partitionKeyValue) + _ = _10_ec + return m_Wrappers.Companion_Result_.Create_Success_(_10_ec) + } + } else { + var _11_valueOrError5 m_Wrappers.Outcome = m_Wrappers.Companion_Default___.Need((item).Contains(((config).Dtor_sortKeyName()).Dtor_value().(_dafny.Sequence)), Companion_Default___.DDBError(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("Sort key "), ((config).Dtor_sortKeyName()).Dtor_value().(_dafny.Sequence)), _dafny.SeqOfString(" not found in Item to be encrypted or decrypted")))) + _ = _11_valueOrError5 + if (_11_valueOrError5).IsFailure() { + return (_11_valueOrError5).PropagateFailure() + } else { + var _12_valueOrError6 m_Wrappers.Result = Companion_Default___.DDBEncode(((config).Dtor_sortKeyName()).Dtor_value().(_dafny.Sequence)) + _ = _12_valueOrError6 + if (_12_valueOrError6).IsFailure() { + return (_12_valueOrError6).PropagateFailure() + } else { + var _13_sortName _dafny.Sequence = (_12_valueOrError6).Extract().(_dafny.Sequence) + _ = _13_sortName + var _14_valueOrError7 m_Wrappers.Result = Companion_Default___.EncodeName(((config).Dtor_sortKeyName()).Dtor_value().(_dafny.Sequence)) + _ = _14_valueOrError7 + if (_14_valueOrError7).IsFailure() { + return (_14_valueOrError7).PropagateFailure() + } else { + var _15_sortKeyName _dafny.Sequence = (_14_valueOrError7).Extract().(_dafny.Sequence) + _ = _15_sortKeyName + var _16_sortKeyValue _dafny.Sequence = m_StructuredEncryptionUtil.Companion_Default___.EncodeTerminal((item).Get(((config).Dtor_sortKeyName()).Dtor_value().(_dafny.Sequence)).(m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.StructuredDataTerminal)) + _ = _16_sortKeyValue + var _17_valueOrError8 m_Wrappers.Outcome = m_Wrappers.Companion_Default___.Need(((_dafny.SetOf(m_DynamoDbItemEncryptorUtil.Companion_Default___.TABLE__NAME(), m_DynamoDbItemEncryptorUtil.Companion_Default___.PARTITION__NAME(), _7_partitionKeyName, m_DynamoDbItemEncryptorUtil.Companion_Default___.SORT__NAME(), _15_sortKeyName)).Cardinality()).Cmp(_dafny.IntOfInt64(5)) == 0, m_DynamoDbItemEncryptorUtil.Companion_Default___.E(_dafny.SeqOfString("Internal Error"))) + _ = _17_valueOrError8 + if (_17_valueOrError8).IsFailure() { + return (_17_valueOrError8).PropagateFailure() + } else { + var _18_ec _dafny.Map = _dafny.NewMapBuilder().ToMap().UpdateUnsafe(m_DynamoDbItemEncryptorUtil.Companion_Default___.TABLE__NAME(), _3_logicalTableName).UpdateUnsafe(m_DynamoDbItemEncryptorUtil.Companion_Default___.PARTITION__NAME(), _5_partitionName).UpdateUnsafe(_7_partitionKeyName, _8_partitionKeyValue).UpdateUnsafe(m_DynamoDbItemEncryptorUtil.Companion_Default___.SORT__NAME(), _13_sortName).UpdateUnsafe(_15_sortKeyName, _16_sortKeyValue) + _ = _18_ec + return m_Wrappers.Companion_Result_.Create_Success_(_18_ec) + } + } + } + } + } + } + } + } + } +} +func (_static *CompanionStruct_Default___) MakeEncryptionContextV2(config Config, item _dafny.Map) m_Wrappers.Result { + var _0_valueOrError0 m_Wrappers.Outcome = m_Wrappers.Companion_Default___.Need((item).Contains((config).Dtor_partitionKeyName()), Companion_Default___.DDBError(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("Partition key "), (config).Dtor_partitionKeyName()), _dafny.SeqOfString(" not found in Item to be encrypted or decrypted")))) + _ = _0_valueOrError0 + if (_0_valueOrError0).IsFailure() { + return (_0_valueOrError0).PropagateFailure() + } else { + var _1_valueOrError1 m_Wrappers.Result = Companion_Default___.DDBEncode((config).Dtor_logicalTableName()) + _ = _1_valueOrError1 + if (_1_valueOrError1).IsFailure() { + return (_1_valueOrError1).PropagateFailure() + } else { + var _2_logicalTableName _dafny.Sequence = (_1_valueOrError1).Extract().(_dafny.Sequence) + _ = _2_logicalTableName + var _3_valueOrError2 m_Wrappers.Result = Companion_Default___.DDBEncode((config).Dtor_partitionKeyName()) + _ = _3_valueOrError2 + if (_3_valueOrError2).IsFailure() { + return (_3_valueOrError2).PropagateFailure() + } else { + var _4_partitionName _dafny.Sequence = (_3_valueOrError2).Extract().(_dafny.Sequence) + _ = _4_partitionName + var _5_valueOrError3 m_Wrappers.Result = Companion_Default___.EncodeName((config).Dtor_partitionKeyName()) + _ = _5_valueOrError3 + if (_5_valueOrError3).IsFailure() { + return (_5_valueOrError3).PropagateFailure() + } else { + var _6_partitionKeyName _dafny.Sequence = (_5_valueOrError3).Extract().(_dafny.Sequence) + _ = _6_partitionKeyName + if ((config).Dtor_sortKeyName()).Is_None() { + var _7_ec _dafny.Map = _dafny.NewMapBuilder().ToMap().UpdateUnsafe(m_DynamoDbItemEncryptorUtil.Companion_Default___.TABLE__NAME(), _2_logicalTableName).UpdateUnsafe(m_DynamoDbItemEncryptorUtil.Companion_Default___.PARTITION__NAME(), _4_partitionName) + _ = _7_ec + return m_Wrappers.Companion_Result_.Create_Success_(_7_ec) + } else { + var _8_valueOrError4 m_Wrappers.Outcome = m_Wrappers.Companion_Default___.Need((item).Contains(((config).Dtor_sortKeyName()).Dtor_value().(_dafny.Sequence)), Companion_Default___.DDBError(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("Sort key "), ((config).Dtor_sortKeyName()).Dtor_value().(_dafny.Sequence)), _dafny.SeqOfString(" not found in Item to be encrypted or decrypted")))) + _ = _8_valueOrError4 + if (_8_valueOrError4).IsFailure() { + return (_8_valueOrError4).PropagateFailure() + } else { + var _9_valueOrError5 m_Wrappers.Result = Companion_Default___.DDBEncode(((config).Dtor_sortKeyName()).Dtor_value().(_dafny.Sequence)) + _ = _9_valueOrError5 + if (_9_valueOrError5).IsFailure() { + return (_9_valueOrError5).PropagateFailure() + } else { + var _10_sortName _dafny.Sequence = (_9_valueOrError5).Extract().(_dafny.Sequence) + _ = _10_sortName + var _11_valueOrError6 m_Wrappers.Result = Companion_Default___.EncodeName(((config).Dtor_sortKeyName()).Dtor_value().(_dafny.Sequence)) + _ = _11_valueOrError6 + if (_11_valueOrError6).IsFailure() { + return (_11_valueOrError6).PropagateFailure() + } else { + var _12_sortKeyName _dafny.Sequence = (_11_valueOrError6).Extract().(_dafny.Sequence) + _ = _12_sortKeyName + var _13_ec _dafny.Map = _dafny.NewMapBuilder().ToMap().UpdateUnsafe(m_DynamoDbItemEncryptorUtil.Companion_Default___.TABLE__NAME(), _2_logicalTableName).UpdateUnsafe(m_DynamoDbItemEncryptorUtil.Companion_Default___.PARTITION__NAME(), _4_partitionName).UpdateUnsafe(m_DynamoDbItemEncryptorUtil.Companion_Default___.SORT__NAME(), _10_sortName) + _ = _13_ec + return m_Wrappers.Companion_Result_.Create_Success_(_13_ec) + } + } + } + } + } + } + } + } +} +func (_static *CompanionStruct_Default___) DDBError(s _dafny.Sequence) m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Error { + return m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Companion_Error_.Create_DynamoDbItemEncryptorException_(s) +} +func (_static *CompanionStruct_Default___) DDBEncode(s _dafny.Sequence) m_Wrappers.Result { + return (m_UTF8.Encode(s)).MapFailure(func(coer54 func(_dafny.Sequence) m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Error) func(interface{}) interface{} { + return func(arg77 interface{}) interface{} { + return coer54(arg77.(_dafny.Sequence)) + } + }(func(_0_e _dafny.Sequence) m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Error { + return Companion_Default___.DDBError(_0_e) + })) +} +func (_static *CompanionStruct_Default___) IsVersion2Schema(actions _dafny.Map) bool { + return _dafny.Quantifier((actions).Keys().Elements(), false, func(_exists_var_0 _dafny.Sequence) bool { + var _0_x _dafny.Sequence + _0_x = interface{}(_exists_var_0).(_dafny.Sequence) + return ((actions).Contains(_0_x)) && (((actions).Get(_0_x).(m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.CryptoAction)).Equals(m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Companion_CryptoAction_.Create_SIGN__AND__INCLUDE__IN__ENCRYPTION__CONTEXT_())) + }) +} +func (_static *CompanionStruct_Default___) VersionFromActions(actions _dafny.Map) uint8 { + if Companion_Default___.IsVersion2Schema(actions) { + return uint8(2) + } else { + return uint8(1) + } +} +func (_static *CompanionStruct_Default___) KeyActionFromVersion(version uint8) m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.CryptoAction { + if (version) == (uint8(2)) { + return m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Companion_CryptoAction_.Create_SIGN__AND__INCLUDE__IN__ENCRYPTION__CONTEXT_() + } else { + return m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Companion_CryptoAction_.Create_SIGN__ONLY_() + } +} +func (_static *CompanionStruct_Default___) KeyActionStringFromVersion(version uint8) _dafny.Sequence { + if (version) == (uint8(2)) { + return _dafny.SeqOfString("SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT") + } else { + return _dafny.SeqOfString("SIGN_ONLY") + } +} +func (_static *CompanionStruct_Default___) GetCryptoSchemaActionInner(config Config, attr _dafny.Sequence) m_Wrappers.Result { + if ((config).Dtor_attributeActionsOnEncrypt()).Contains(attr) { + return m_Wrappers.Companion_Result_.Create_Success_(((config).Dtor_attributeActionsOnEncrypt()).Get(attr).(m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.CryptoAction)) + } else if !(Companion_Default___.InSignatureScope(config, attr)) { + return m_Wrappers.Companion_Result_.Create_Success_(m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Companion_CryptoAction_.Create_DO__NOTHING_()) + } else { + return m_Wrappers.Companion_Result_.Create_Failure_(_dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("No Crypto Action configured for attribute "), attr)) + } +} +func (_static *CompanionStruct_Default___) GetCryptoSchemaAction(config Config, attr _dafny.Sequence) m_Wrappers.Result { + return Companion_Default___.GetCryptoSchemaActionInner(config, attr) +} +func (_static *CompanionStruct_Default___) GetAuthenticateSchemaAction(config Config, attr _dafny.Sequence) m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.AuthenticateAction { + if Companion_Default___.InSignatureScope(config, attr) { + return m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Companion_AuthenticateAction_.Create_SIGN_() + } else { + return m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Companion_AuthenticateAction_.Create_DO__NOT__SIGN_() + } +} +func (_static *CompanionStruct_Default___) ConfigToCryptoSchema(config Config, item _dafny.Map) m_Wrappers.Result { + var _0_schema _dafny.Map = func() _dafny.Map { + var _coll0 = _dafny.NewMapBuilder() + _ = _coll0 + for _iter16 := _dafny.Iterate((item).Keys().Elements()); ; { + _compr_0, _ok16 := _iter16() + if !_ok16 { + break + } + var _1_k _dafny.Sequence + _1_k = interface{}(_compr_0).(_dafny.Sequence) + if (item).Contains(_1_k) { + _coll0.Add(_1_k, Companion_Default___.GetCryptoSchemaAction(config, _1_k)) + } + } + return _coll0.ToMap() + }() + _ = _0_schema + var _2_actionMapRes m_Wrappers.Result = m_DynamoToStruct.Companion_Default___.SimplifyMapValue(_0_schema) + _ = _2_actionMapRes + return m_DynamoToStruct.Companion_Default___.MapError(_2_actionMapRes) +} +func (_static *CompanionStruct_Default___) ConfigToAuthenticateSchema(config Config, item _dafny.Map) _dafny.Map { + return func() _dafny.Map { + var _coll0 = _dafny.NewMapBuilder() + _ = _coll0 + for _iter17 := _dafny.Iterate((item).Keys().Elements()); ; { + _compr_0, _ok17 := _iter17() + if !_ok17 { + break + } + var _0_k _dafny.Sequence + _0_k = interface{}(_compr_0).(_dafny.Sequence) + if m_ComAmazonawsDynamodbTypes.Companion_AttributeName_.Is_(_0_k) { + if (item).Contains(_0_k) { + _coll0.Add(_0_k, Companion_Default___.GetAuthenticateSchemaAction(config, _0_k)) + } + } + } + return _coll0.ToMap() + }() +} +func (_static *CompanionStruct_Default___) IsPlaintextItem(ddbItem _dafny.Map) bool { + return (!(ddbItem).Contains(m_StructuredEncryptionUtil.Companion_Default___.HeaderField())) && (!(ddbItem).Contains(m_StructuredEncryptionUtil.Companion_Default___.FooterField())) +} +func (_static *CompanionStruct_Default___) ConvertCryptoSchemaToAttributeActions(config Config, schema _dafny.Map) m_Wrappers.Result { + var _0_valueOrError0 m_Wrappers.Outcome = m_Wrappers.Companion_Default___.Need(_dafny.Quantifier((schema).Keys().Elements(), true, func(_forall_var_0 _dafny.Sequence) bool { + var _1_k _dafny.Sequence + _1_k = interface{}(_forall_var_0).(_dafny.Sequence) + if m_ComAmazonawsDynamodbTypes.Companion_AttributeName_.Is_(_1_k) { + return !((schema).Contains(_1_k)) || (Companion_Default___.InSignatureScope(config, _1_k)) + } else { + return true + } + }), m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Companion_Error_.Create_DynamoDbItemEncryptorException_(_dafny.SeqOfString("Received unexpected Crypto Schema: mismatch with signature scope"))) + _ = _0_valueOrError0 + if (_0_valueOrError0).IsFailure() { + return (_0_valueOrError0).PropagateFailure() + } else { + var _2_valueOrError1 m_Wrappers.Outcome = m_Wrappers.Companion_Default___.Need(_dafny.Quantifier((schema).Keys().Elements(), true, func(_forall_var_1 _dafny.Sequence) bool { + var _3_k _dafny.Sequence + _3_k = interface{}(_forall_var_1).(_dafny.Sequence) + return !((schema).Contains(_3_k)) || (m_ComAmazonawsDynamodbTypes.Companion_Default___.IsValid__AttributeName(_3_k)) + }), m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Companion_Error_.Create_DynamoDbItemEncryptorException_(_dafny.SeqOfString("Received unexpected Crypto Schema: Invalid attribute names"))) + _ = _2_valueOrError1 + if (_2_valueOrError1).IsFailure() { + return (_2_valueOrError1).PropagateFailure() + } else { + return m_Wrappers.Companion_Result_.Create_Success_(schema) + } + } +} +func (_static *CompanionStruct_Default___) GetItemNames(item _dafny.Map) _dafny.Sequence { + var _0_keys _dafny.Sequence = m_SortedSets.SetToOrderedSequence2((item).Keys(), func(coer55 func(_dafny.Char, _dafny.Char) bool) func(interface{}, interface{}) bool { + return func(arg78 interface{}, arg79 interface{}) bool { + return coer55(arg78.(_dafny.Char), arg79.(_dafny.Char)) + } + }(m_DynamoDbItemEncryptorUtil.Companion_Default___.CharLess)) + _ = _0_keys + if (uint64((_0_keys).Cardinality())) == (uint64(0)) { + return _dafny.SeqOfString("item is empty") + } else { + return m_StandardLibrary.Companion_Default___.Join(_0_keys, _dafny.SeqOfString(" ")) + } +} +func (_static *CompanionStruct_Default___) KeyMissingMsg(config Config, item _dafny.Map, tag _dafny.Sequence) _dafny.Sequence { + return _dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("On "), tag), _dafny.SeqOfString(" : ")), (func() _dafny.Sequence { + if !(item).Contains((config).Dtor_partitionKeyName()) { + return _dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("Partition key '"), (config).Dtor_partitionKeyName()), _dafny.SeqOfString("' does not exist in item. ")) + } + return _dafny.SeqOfString("") + })()), (func() _dafny.Sequence { + if (((config).Dtor_sortKeyName()).Is_Some()) && (!(item).Contains(((config).Dtor_sortKeyName()).Dtor_value().(_dafny.Sequence))) { + return _dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("Sort key '"), ((config).Dtor_sortKeyName()).Dtor_value().(_dafny.Sequence)), _dafny.SeqOfString("' does not exist in item. ")) + } + return _dafny.SeqOfString("") + })()), _dafny.SeqOfString("Item contains these attributes : ")), Companion_Default___.GetItemNames(item)), _dafny.SeqOfString(".")) +} +func (_static *CompanionStruct_Default___) ContextAttrsExist(actions _dafny.Map, item _dafny.Map) bool { + return _dafny.Quantifier((actions).Keys().Elements(), true, func(_forall_var_0 _dafny.Sequence) bool { + var _0_k _dafny.Sequence + _0_k = interface{}(_forall_var_0).(_dafny.Sequence) + return !((actions).Contains(_0_k)) || (!(((actions).Get(_0_k).(m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.CryptoAction)).Equals(m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Companion_CryptoAction_.Create_SIGN__AND__INCLUDE__IN__ENCRYPTION__CONTEXT_())) || ((item).Contains(_0_k))) + }) +} +func (_static *CompanionStruct_Default___) ContextMissingMsg(actions _dafny.Map, item _dafny.Map) _dafny.Sequence { + var _0_s _dafny.Set = func() _dafny.Set { + var _coll0 = _dafny.NewBuilder() + _ = _coll0 + for _iter18 := _dafny.Iterate((actions).Keys().Elements()); ; { + _compr_0, _ok18 := _iter18() + if !_ok18 { + break + } + var _1_k _dafny.Sequence + _1_k = interface{}(_compr_0).(_dafny.Sequence) + if (((actions).Contains(_1_k)) && (((actions).Get(_1_k).(m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.CryptoAction)).Equals(m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Companion_CryptoAction_.Create_SIGN__AND__INCLUDE__IN__ENCRYPTION__CONTEXT_()))) && (!(item).Contains(_1_k)) { + _coll0.Add(_1_k) + } + } + return _coll0.ToSet() + }() + _ = _0_s + var _2_missing _dafny.Sequence = m_SortedSets.SetToOrderedSequence2(_0_s, func(coer56 func(_dafny.Char, _dafny.Char) bool) func(interface{}, interface{}) bool { + return func(arg80 interface{}, arg81 interface{}) bool { + return coer56(arg80.(_dafny.Char), arg81.(_dafny.Char)) + } + }(m_DynamoDbItemEncryptorUtil.Companion_Default___.CharLess)) + _ = _2_missing + if (uint64((_2_missing).Cardinality())) == (uint64(0)) { + return _dafny.SeqOfString("No missing SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT attributes.") + } else if (uint64((_2_missing).Cardinality())) == (uint64(1)) { + return _dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("Attribute "), (_2_missing).Select(uint32(uint32(0))).(_dafny.Sequence)), _dafny.SeqOfString(" was configured with SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT but was not present in item to be encrypted.")) + } else { + return _dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("These attributes were configured with SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT but were not present in item to be encrypted."), m_StandardLibrary.Companion_Default___.Join(_2_missing, _dafny.SeqOfString(","))) + } +} +func (_static *CompanionStruct_Default___) EncryptItem(config Config, input m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.EncryptItemInput) m_Wrappers.Result { + var output m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Companion_EncryptItemOutput_.Default()) + _ = output + var _0_valueOrError0 m_Wrappers.Outcome = m_Wrappers.Companion_Outcome_.Default() + _ = _0_valueOrError0 + _0_valueOrError0 = m_Wrappers.Companion_Default___.Need((((input).Dtor_plaintextItem()).Contains((config).Dtor_partitionKeyName())) && ((((config).Dtor_sortKeyName()).Is_None()) || (((input).Dtor_plaintextItem()).Contains(((config).Dtor_sortKeyName()).Dtor_value().(_dafny.Sequence)))), m_DynamoDbItemEncryptorUtil.Companion_Default___.E(Companion_Default___.KeyMissingMsg(config, (input).Dtor_plaintextItem(), _dafny.SeqOfString("Encrypt")))) + if (_0_valueOrError0).IsFailure() { + output = (_0_valueOrError0).PropagateFailure() + return output + } + var _1_valueOrError1 m_Wrappers.Outcome = m_Wrappers.Companion_Outcome_.Default() + _ = _1_valueOrError1 + _1_valueOrError1 = m_Wrappers.Companion_Default___.Need(Companion_Default___.ContextAttrsExist((config).Dtor_attributeActionsOnEncrypt(), (input).Dtor_plaintextItem()), m_DynamoDbItemEncryptorUtil.Companion_Default___.E(Companion_Default___.ContextMissingMsg((config).Dtor_attributeActionsOnEncrypt(), (input).Dtor_plaintextItem()))) + if (_1_valueOrError1).IsFailure() { + output = (_1_valueOrError1).PropagateFailure() + return output + } + if (((config).Dtor_internalLegacyOverride()).Is_Some()) && (((((config).Dtor_internalLegacyOverride()).Dtor_value().(*m_InternalLegacyOverride.InternalLegacyOverride)).Policy()).Is_FORCE__LEGACY__ENCRYPT__ALLOW__LEGACY__DECRYPT()) { + var _2_valueOrError2 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Companion_EncryptItemOutput_.Default()) + _ = _2_valueOrError2 + var _out0 m_Wrappers.Result + _ = _out0 + _out0 = (((config).Dtor_internalLegacyOverride()).Dtor_value().(*m_InternalLegacyOverride.InternalLegacyOverride)).EncryptItem(input) + _2_valueOrError2 = _out0 + if (_2_valueOrError2).IsFailure() { + output = (_2_valueOrError2).PropagateFailure() + return output + } + var _3_encryptItemOutput m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.EncryptItemOutput + _ = _3_encryptItemOutput + _3_encryptItemOutput = (_2_valueOrError2).Extract().(m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.EncryptItemOutput) + output = m_Wrappers.Companion_Result_.Create_Success_(_3_encryptItemOutput) + return output + } + if ((config).Dtor_plaintextOverride()).Is_FORCE__PLAINTEXT__WRITE__ALLOW__PLAINTEXT__READ() { + var _4_passthroughOutput m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.EncryptItemOutput + _ = _4_passthroughOutput + _4_passthroughOutput = m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Companion_EncryptItemOutput_.Create_EncryptItemOutput_((input).Dtor_plaintextItem(), m_Wrappers.Companion_Option_.Create_None_()) + output = m_Wrappers.Companion_Result_.Create_Success_(_4_passthroughOutput) + return output + } + var _5_valueOrError3 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(_dafny.EmptyMap) + _ = _5_valueOrError3 + _5_valueOrError3 = (m_DynamoToStruct.Companion_Default___.ItemToStructured2((input).Dtor_plaintextItem(), (config).Dtor_attributeActionsOnEncrypt())).MapFailure(func(coer57 func(m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Error) m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Error) func(interface{}) interface{} { + return func(arg82 interface{}) interface{} { + return coer57(arg82.(m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Error)) + } + }(func(_6_e m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Error) m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Error { + return m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Companion_Error_.Create_AwsCryptographyDbEncryptionSdkDynamoDb_(_6_e) + })) + if (_5_valueOrError3).IsFailure() { + output = (_5_valueOrError3).PropagateFailure() + return output + } + var _7_plaintextStructure _dafny.Map + _ = _7_plaintextStructure + _7_plaintextStructure = (_5_valueOrError3).Extract().(_dafny.Map) + var _8_valueOrError4 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(_dafny.EmptyMap) + _ = _8_valueOrError4 + _8_valueOrError4 = Companion_Default___.MakeEncryptionContextForEncrypt(config, _7_plaintextStructure) + if (_8_valueOrError4).IsFailure() { + output = (_8_valueOrError4).PropagateFailure() + return output + } + var _9_context _dafny.Map + _ = _9_context + _9_context = (_8_valueOrError4).Extract().(_dafny.Map) + var _10_valueOrError5 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(_dafny.EmptyMap) + _ = _10_valueOrError5 + _10_valueOrError5 = (Companion_Default___.ConfigToCryptoSchema(config, _7_plaintextStructure)).MapFailure(func(coer58 func(m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Error) m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Error) func(interface{}) interface{} { + return func(arg83 interface{}) interface{} { + return coer58(arg83.(m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Error)) + } + }(func(_11_e m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Error) m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Error { + return m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Companion_Error_.Create_AwsCryptographyDbEncryptionSdkDynamoDb_(_11_e) + })) + if (_10_valueOrError5).IsFailure() { + output = (_10_valueOrError5).PropagateFailure() + return output + } + var _12_cryptoSchema _dafny.Map + _ = _12_cryptoSchema + _12_cryptoSchema = (_10_valueOrError5).Extract().(_dafny.Map) + var _13_contextKeysX _dafny.Sequence + _ = _13_contextKeysX + _13_contextKeysX = m_SortedSets.SetToOrderedSequence2((_9_context).Keys(), func(coer59 func(uint8, uint8) bool) func(interface{}, interface{}) bool { + return func(arg84 interface{}, arg85 interface{}) bool { + return coer59(arg84.(uint8), arg85.(uint8)) + } + }(m_DynamoDbItemEncryptorUtil.Companion_Default___.ByteLess)) + var _14_contextKeys _dafny.Sequence + _ = _14_contextKeys + _14_contextKeys = _13_contextKeysX + var _15_reqCMMR m_Wrappers.Result + _ = _15_reqCMMR + var _out1 m_Wrappers.Result + _ = _out1 + _out1 = ((config).Dtor_cmpClient()).CreateRequiredEncryptionContextCMM(m_AwsCryptographyMaterialProvidersTypes.Companion_CreateRequiredEncryptionContextCMMInput_.Create_CreateRequiredEncryptionContextCMMInput_(m_Wrappers.Companion_Option_.Create_Some_((config).Dtor_cmm()), m_Wrappers.Companion_Option_.Create_None_(), _14_contextKeys)) + _15_reqCMMR = _out1 + var _16_valueOrError6 m_Wrappers.Result = m_Wrappers.Result{} + _ = _16_valueOrError6 + _16_valueOrError6 = (_15_reqCMMR).MapFailure(func(coer60 func(m_AwsCryptographyMaterialProvidersTypes.Error) m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Error) func(interface{}) interface{} { + return func(arg86 interface{}) interface{} { + return coer60(arg86.(m_AwsCryptographyMaterialProvidersTypes.Error)) + } + }(func(_17_e m_AwsCryptographyMaterialProvidersTypes.Error) m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Error { + return m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Companion_Error_.Create_AwsCryptographyMaterialProviders_(_17_e) + })) + if (_16_valueOrError6).IsFailure() { + output = (_16_valueOrError6).PropagateFailure() + return output + } + var _18_reqCMM m_AwsCryptographyMaterialProvidersTypes.ICryptographicMaterialsManager + _ = _18_reqCMM + _18_reqCMM = m_AwsCryptographyMaterialProvidersTypes.Companion_ICryptographicMaterialsManager_.CastTo_((_16_valueOrError6).Extract()) + var _19_encryptRes m_Wrappers.Result + _ = _19_encryptRes + var _out2 m_Wrappers.Result + _ = _out2 + _out2 = ((config).Dtor_structuredEncryption()).EncryptStructure(m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Companion_EncryptStructureInput_.Create_EncryptStructureInput_((config).Dtor_logicalTableName(), _7_plaintextStructure, _12_cryptoSchema, _18_reqCMM, (config).Dtor_algorithmSuiteId(), m_Wrappers.Companion_Option_.Create_Some_(_9_context))) + _19_encryptRes = _out2 + var _20_valueOrError7 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Companion_EncryptStructureOutput_.Default()) + _ = _20_valueOrError7 + _20_valueOrError7 = (_19_encryptRes).MapFailure(func(coer61 func(m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Error) m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Error) func(interface{}) interface{} { + return func(arg87 interface{}) interface{} { + return coer61(arg87.(m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Error)) + } + }(func(_21_e m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Error) m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Error { + return m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Companion_Error_.Create_AwsCryptographyDbEncryptionSdkDynamoDb_(m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Companion_Error_.Create_AwsCryptographyDbEncryptionSdkStructuredEncryption_(_21_e)) + })) + if (_20_valueOrError7).IsFailure() { + output = (_20_valueOrError7).PropagateFailure() + return output + } + var _22_encryptVal m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.EncryptStructureOutput + _ = _22_encryptVal + _22_encryptVal = (_20_valueOrError7).Extract().(m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.EncryptStructureOutput) + var _23_encryptedData _dafny.Map + _ = _23_encryptedData + _23_encryptedData = (_22_encryptVal).Dtor_encryptedStructure() + var _24_valueOrError8 m_Wrappers.Outcome = m_Wrappers.Companion_Outcome_.Default() + _ = _24_valueOrError8 + _24_valueOrError8 = m_Wrappers.Companion_Default___.Need(_dafny.Quantifier((_23_encryptedData).Keys().Elements(), true, func(_forall_var_0 _dafny.Sequence) bool { + var _25_k _dafny.Sequence + _25_k = interface{}(_forall_var_0).(_dafny.Sequence) + return !((_23_encryptedData).Contains(_25_k)) || (m_ComAmazonawsDynamodbTypes.Companion_Default___.IsValid__AttributeName(_25_k)) + }), m_DynamoDbItemEncryptorUtil.Companion_Default___.E(_dafny.SeqOfString(""))) + if (_24_valueOrError8).IsFailure() { + output = (_24_valueOrError8).PropagateFailure() + return output + } + var _26_valueOrError9 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(_dafny.EmptyMap) + _ = _26_valueOrError9 + _26_valueOrError9 = (m_DynamoToStruct.Companion_Default___.StructuredToItemEncrypt(_23_encryptedData, (input).Dtor_plaintextItem(), (config).Dtor_attributeActionsOnEncrypt())).MapFailure(func(coer62 func(m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Error) m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Error) func(interface{}) interface{} { + return func(arg88 interface{}) interface{} { + return coer62(arg88.(m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Error)) + } + }(func(_27_e m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Error) m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Error { + return m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Companion_Error_.Create_AwsCryptographyDbEncryptionSdkDynamoDb_(_27_e) + })) + if (_26_valueOrError9).IsFailure() { + output = (_26_valueOrError9).PropagateFailure() + return output + } + var _28_ddbKey _dafny.Map + _ = _28_ddbKey + _28_ddbKey = (_26_valueOrError9).Extract().(_dafny.Map) + var _29_valueOrError10 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(_dafny.EmptyMap) + _ = _29_valueOrError10 + _29_valueOrError10 = Companion_Default___.ConvertCryptoSchemaToAttributeActions(config, (_22_encryptVal).Dtor_cryptoSchema()) + if (_29_valueOrError10).IsFailure() { + output = (_29_valueOrError10).PropagateFailure() + return output + } + var _30_parsedActions _dafny.Map + _ = _30_parsedActions + _30_parsedActions = (_29_valueOrError10).Extract().(_dafny.Map) + var _31_selectorContextR m_Wrappers.Result + _ = _31_selectorContextR + _31_selectorContextR = m_DynamoDbItemEncryptorUtil.Companion_Default___.ConvertContextForSelector(((_22_encryptVal).Dtor_parsedHeader()).Dtor_encryptionContext()) + var _32_valueOrError11 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(_dafny.EmptyMap) + _ = _32_valueOrError11 + _32_valueOrError11 = (_31_selectorContextR).MapFailure(func(coer63 func(_dafny.Sequence) m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Error) func(interface{}) interface{} { + return func(arg89 interface{}) interface{} { + return coer63(arg89.(_dafny.Sequence)) + } + }(func(_33_e _dafny.Sequence) m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Error { + return m_DynamoDbItemEncryptorUtil.Companion_Default___.E(_33_e) + })) + if (_32_valueOrError11).IsFailure() { + output = (_32_valueOrError11).PropagateFailure() + return output + } + var _34_selectorContext _dafny.Map + _ = _34_selectorContext + _34_selectorContext = (_32_valueOrError11).Extract().(_dafny.Map) + var _35_parsedHeader m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.ParsedHeader + _ = _35_parsedHeader + _35_parsedHeader = m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Companion_ParsedHeader_.Create_ParsedHeader_(_30_parsedActions, ((_22_encryptVal).Dtor_parsedHeader()).Dtor_algorithmSuiteId(), ((_22_encryptVal).Dtor_parsedHeader()).Dtor_encryptedDataKeys(), ((_22_encryptVal).Dtor_parsedHeader()).Dtor_storedEncryptionContext(), ((_22_encryptVal).Dtor_parsedHeader()).Dtor_encryptionContext(), _34_selectorContext) + output = m_Wrappers.Companion_Result_.Create_Success_(m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Companion_EncryptItemOutput_.Create_EncryptItemOutput_(_28_ddbKey, m_Wrappers.Companion_Option_.Create_Some_(_35_parsedHeader))) + return output +} +func (_static *CompanionStruct_Default___) DecryptItem(config Config, input m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.DecryptItemInput) m_Wrappers.Result { + var output m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Companion_DecryptItemOutput_.Default()) + _ = output + var _0_valueOrError0 m_Wrappers.Outcome = m_Wrappers.Companion_Outcome_.Default() + _ = _0_valueOrError0 + _0_valueOrError0 = m_Wrappers.Companion_Default___.Need((((input).Dtor_encryptedItem()).Contains((config).Dtor_partitionKeyName())) && ((((config).Dtor_sortKeyName()).Is_None()) || (((input).Dtor_encryptedItem()).Contains(((config).Dtor_sortKeyName()).Dtor_value().(_dafny.Sequence)))), m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Companion_Error_.Create_DynamoDbItemEncryptorException_(Companion_Default___.KeyMissingMsg(config, (input).Dtor_encryptedItem(), _dafny.SeqOfString("Decrypt")))) + if (_0_valueOrError0).IsFailure() { + output = (_0_valueOrError0).PropagateFailure() + return output + } + if (((config).Dtor_internalLegacyOverride()).Is_Some()) && ((((config).Dtor_internalLegacyOverride()).Dtor_value().(*m_InternalLegacyOverride.InternalLegacyOverride)).IsLegacyInput(input)) { + var _1_valueOrError1 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Companion_DecryptItemOutput_.Default()) + _ = _1_valueOrError1 + var _out0 m_Wrappers.Result + _ = _out0 + _out0 = (((config).Dtor_internalLegacyOverride()).Dtor_value().(*m_InternalLegacyOverride.InternalLegacyOverride)).DecryptItem(input) + _1_valueOrError1 = _out0 + if (_1_valueOrError1).IsFailure() { + output = (_1_valueOrError1).PropagateFailure() + return output + } + var _2_decryptItemOutput m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.DecryptItemOutput + _ = _2_decryptItemOutput + _2_decryptItemOutput = (_1_valueOrError1).Extract().(m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.DecryptItemOutput) + output = m_Wrappers.Companion_Result_.Create_Success_(_2_decryptItemOutput) + return output + } + if ((((config).Dtor_plaintextOverride()).Is_FORCE__PLAINTEXT__WRITE__ALLOW__PLAINTEXT__READ()) || (((config).Dtor_plaintextOverride()).Is_FORBID__PLAINTEXT__WRITE__ALLOW__PLAINTEXT__READ())) && (Companion_Default___.IsPlaintextItem((input).Dtor_encryptedItem())) { + var _3_passthroughOutput m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.DecryptItemOutput + _ = _3_passthroughOutput + _3_passthroughOutput = m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Companion_DecryptItemOutput_.Create_DecryptItemOutput_((input).Dtor_encryptedItem(), m_Wrappers.Companion_Option_.Create_None_()) + output = m_Wrappers.Companion_Result_.Create_Success_(_3_passthroughOutput) + return output + } + var _4_valueOrError2 m_Wrappers.Outcome = m_Wrappers.Companion_Outcome_.Default() + _ = _4_valueOrError2 + _4_valueOrError2 = m_Wrappers.Companion_Default___.Need(!(Companion_Default___.IsPlaintextItem((input).Dtor_encryptedItem())), m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Companion_Error_.Create_DynamoDbItemEncryptorException_(_dafny.SeqOfString("Encrypted item missing expected header and footer attributes"))) + if (_4_valueOrError2).IsFailure() { + output = (_4_valueOrError2).PropagateFailure() + return output + } + var _5_valueOrError3 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(_dafny.EmptyMap) + _ = _5_valueOrError3 + _5_valueOrError3 = (m_DynamoToStruct.Companion_Default___.ItemToStructured2((input).Dtor_encryptedItem(), (config).Dtor_attributeActionsOnEncrypt())).MapFailure(func(coer64 func(m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Error) m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Error) func(interface{}) interface{} { + return func(arg90 interface{}) interface{} { + return coer64(arg90.(m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Error)) + } + }(func(_6_e m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Error) m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Error { + return m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Companion_Error_.Create_AwsCryptographyDbEncryptionSdkDynamoDb_(_6_e) + })) + if (_5_valueOrError3).IsFailure() { + output = (_5_valueOrError3).PropagateFailure() + return output + } + var _7_encryptedStructure _dafny.Map + _ = _7_encryptedStructure + _7_encryptedStructure = (_5_valueOrError3).Extract().(_dafny.Map) + var _8_valueOrError4 m_Wrappers.Outcome = m_Wrappers.Companion_Outcome_.Default() + _ = _8_valueOrError4 + _8_valueOrError4 = m_Wrappers.Companion_Default___.Need(((input).Dtor_encryptedItem()).Contains(m_StructuredEncryptionUtil.Companion_Default___.HeaderField()), m_DynamoDbItemEncryptorUtil.Companion_Default___.E(_dafny.SeqOfString("Header field, \"aws_dbe_head\", not in item."))) + if (_8_valueOrError4).IsFailure() { + output = (_8_valueOrError4).PropagateFailure() + return output + } + var _9_header m_ComAmazonawsDynamodbTypes.AttributeValue + _ = _9_header + _9_header = ((input).Dtor_encryptedItem()).Get(m_StructuredEncryptionUtil.Companion_Default___.HeaderField()).(m_ComAmazonawsDynamodbTypes.AttributeValue) + var _10_valueOrError5 m_Wrappers.Outcome = m_Wrappers.Companion_Outcome_.Default() + _ = _10_valueOrError5 + _10_valueOrError5 = m_Wrappers.Companion_Default___.Need((_9_header).Is_B(), m_DynamoDbItemEncryptorUtil.Companion_Default___.E(_dafny.SeqOfString("Header field, \"aws_dbe_head\", not binary"))) + if (_10_valueOrError5).IsFailure() { + output = (_10_valueOrError5).PropagateFailure() + return output + } + var _11_valueOrError6 m_Wrappers.Outcome = m_Wrappers.Companion_Outcome_.Default() + _ = _11_valueOrError6 + _11_valueOrError6 = m_Wrappers.Companion_Default___.Need((uint64(0)) < (uint64(((_9_header).Dtor_B()).Cardinality())), m_DynamoDbItemEncryptorUtil.Companion_Default___.E(_dafny.SeqOfString("Unexpected empty header field."))) + if (_11_valueOrError6).IsFailure() { + output = (_11_valueOrError6).PropagateFailure() + return output + } + var _12_valueOrError7 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(_dafny.EmptyMap) + _ = _12_valueOrError7 + _12_valueOrError7 = Companion_Default___.MakeEncryptionContextForDecrypt(config, (_9_header).Dtor_B(), _7_encryptedStructure) + if (_12_valueOrError7).IsFailure() { + output = (_12_valueOrError7).PropagateFailure() + return output + } + var _13_context _dafny.Map + _ = _13_context + _13_context = (_12_valueOrError7).Extract().(_dafny.Map) + var _14_authenticateSchema _dafny.Map + _ = _14_authenticateSchema + _14_authenticateSchema = Companion_Default___.ConfigToAuthenticateSchema(config, _7_encryptedStructure) + var _15_reqCMMR m_Wrappers.Result + _ = _15_reqCMMR + var _out1 m_Wrappers.Result + _ = _out1 + _out1 = ((config).Dtor_cmpClient()).CreateRequiredEncryptionContextCMM(m_AwsCryptographyMaterialProvidersTypes.Companion_CreateRequiredEncryptionContextCMMInput_.Create_CreateRequiredEncryptionContextCMMInput_(m_Wrappers.Companion_Option_.Create_Some_((config).Dtor_cmm()), m_Wrappers.Companion_Option_.Create_None_(), m_SortedSets.SetToOrderedSequence2((_13_context).Keys(), func(coer65 func(uint8, uint8) bool) func(interface{}, interface{}) bool { + return func(arg91 interface{}, arg92 interface{}) bool { + return coer65(arg91.(uint8), arg92.(uint8)) + } + }(m_DynamoDbItemEncryptorUtil.Companion_Default___.ByteLess)))) + _15_reqCMMR = _out1 + var _16_valueOrError8 m_Wrappers.Result = m_Wrappers.Result{} + _ = _16_valueOrError8 + _16_valueOrError8 = (_15_reqCMMR).MapFailure(func(coer66 func(m_AwsCryptographyMaterialProvidersTypes.Error) m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Error) func(interface{}) interface{} { + return func(arg93 interface{}) interface{} { + return coer66(arg93.(m_AwsCryptographyMaterialProvidersTypes.Error)) + } + }(func(_17_e m_AwsCryptographyMaterialProvidersTypes.Error) m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Error { + return m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Companion_Error_.Create_AwsCryptographyMaterialProviders_(_17_e) + })) + if (_16_valueOrError8).IsFailure() { + output = (_16_valueOrError8).PropagateFailure() + return output + } + var _18_reqCMM m_AwsCryptographyMaterialProvidersTypes.ICryptographicMaterialsManager + _ = _18_reqCMM + _18_reqCMM = m_AwsCryptographyMaterialProvidersTypes.Companion_ICryptographicMaterialsManager_.CastTo_((_16_valueOrError8).Extract()) + var _19_decryptRes m_Wrappers.Result + _ = _19_decryptRes + var _out2 m_Wrappers.Result + _ = _out2 + _out2 = ((config).Dtor_structuredEncryption()).DecryptStructure(m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Companion_DecryptStructureInput_.Create_DecryptStructureInput_((config).Dtor_logicalTableName(), _7_encryptedStructure, _14_authenticateSchema, _18_reqCMM, m_Wrappers.Companion_Option_.Create_Some_(_13_context))) + _19_decryptRes = _out2 + var _20_valueOrError9 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Companion_DecryptStructureOutput_.Default()) + _ = _20_valueOrError9 + _20_valueOrError9 = (_19_decryptRes).MapFailure(func(coer67 func(m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Error) m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Error) func(interface{}) interface{} { + return func(arg94 interface{}) interface{} { + return coer67(arg94.(m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Error)) + } + }(func(_21_e m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Error) m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Error { + return m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Companion_Error_.Create_AwsCryptographyDbEncryptionSdkDynamoDb_(m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Companion_Error_.Create_AwsCryptographyDbEncryptionSdkStructuredEncryption_(_21_e)) + })) + if (_20_valueOrError9).IsFailure() { + output = (_20_valueOrError9).PropagateFailure() + return output + } + var _22_decryptVal m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.DecryptStructureOutput + _ = _22_decryptVal + _22_decryptVal = (_20_valueOrError9).Extract().(m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.DecryptStructureOutput) + var _23_decryptedData _dafny.Map + _ = _23_decryptedData + _23_decryptedData = (_22_decryptVal).Dtor_plaintextStructure() + var _24_valueOrError10 m_Wrappers.Outcome = m_Wrappers.Companion_Outcome_.Default() + _ = _24_valueOrError10 + _24_valueOrError10 = m_Wrappers.Companion_Default___.Need(_dafny.Quantifier((_23_decryptedData).Keys().Elements(), true, func(_forall_var_0 _dafny.Sequence) bool { + var _25_k _dafny.Sequence + _25_k = interface{}(_forall_var_0).(_dafny.Sequence) + return !((_23_decryptedData).Contains(_25_k)) || (m_ComAmazonawsDynamodbTypes.Companion_Default___.IsValid__AttributeName(_25_k)) + }), m_DynamoDbItemEncryptorUtil.Companion_Default___.E(_dafny.SeqOfString(""))) + if (_24_valueOrError10).IsFailure() { + output = (_24_valueOrError10).PropagateFailure() + return output + } + var _26_valueOrError11 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(_dafny.EmptyMap) + _ = _26_valueOrError11 + _26_valueOrError11 = (m_DynamoToStruct.Companion_Default___.StructuredToItemDecrypt(_23_decryptedData, (input).Dtor_encryptedItem(), (_22_decryptVal).Dtor_cryptoSchema())).MapFailure(func(coer68 func(m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Error) m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Error) func(interface{}) interface{} { + return func(arg95 interface{}) interface{} { + return coer68(arg95.(m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Error)) + } + }(func(_27_e m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Error) m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Error { + return m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Companion_Error_.Create_AwsCryptographyDbEncryptionSdkDynamoDb_(_27_e) + })) + if (_26_valueOrError11).IsFailure() { + output = (_26_valueOrError11).PropagateFailure() + return output + } + var _28_ddbItem _dafny.Map + _ = _28_ddbItem + _28_ddbItem = (_26_valueOrError11).Extract().(_dafny.Map) + var _29_schemaToConvert _dafny.Map + _ = _29_schemaToConvert + _29_schemaToConvert = (_22_decryptVal).Dtor_cryptoSchema() + var _30_valueOrError12 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(_dafny.EmptyMap) + _ = _30_valueOrError12 + _30_valueOrError12 = Companion_Default___.ConvertCryptoSchemaToAttributeActions(config, _29_schemaToConvert) + if (_30_valueOrError12).IsFailure() { + output = (_30_valueOrError12).PropagateFailure() + return output + } + var _31_parsedAuthActions _dafny.Map + _ = _31_parsedAuthActions + _31_parsedAuthActions = (_30_valueOrError12).Extract().(_dafny.Map) + var _32_selectorContextR m_Wrappers.Result + _ = _32_selectorContextR + _32_selectorContextR = m_DynamoDbItemEncryptorUtil.Companion_Default___.ConvertContextForSelector(((_22_decryptVal).Dtor_parsedHeader()).Dtor_encryptionContext()) + var _33_valueOrError13 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(_dafny.EmptyMap) + _ = _33_valueOrError13 + _33_valueOrError13 = (_32_selectorContextR).MapFailure(func(coer69 func(_dafny.Sequence) m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Error) func(interface{}) interface{} { + return func(arg96 interface{}) interface{} { + return coer69(arg96.(_dafny.Sequence)) + } + }(func(_34_e _dafny.Sequence) m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Error { + return m_DynamoDbItemEncryptorUtil.Companion_Default___.E(_34_e) + })) + if (_33_valueOrError13).IsFailure() { + output = (_33_valueOrError13).PropagateFailure() + return output + } + var _35_selectorContext _dafny.Map + _ = _35_selectorContext + _35_selectorContext = (_33_valueOrError13).Extract().(_dafny.Map) + var _36_parsedHeader m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.ParsedHeader + _ = _36_parsedHeader + _36_parsedHeader = m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Companion_ParsedHeader_.Create_ParsedHeader_(_31_parsedAuthActions, ((_22_decryptVal).Dtor_parsedHeader()).Dtor_algorithmSuiteId(), ((_22_decryptVal).Dtor_parsedHeader()).Dtor_encryptedDataKeys(), ((_22_decryptVal).Dtor_parsedHeader()).Dtor_storedEncryptionContext(), ((_22_decryptVal).Dtor_parsedHeader()).Dtor_encryptionContext(), _35_selectorContext) + output = m_Wrappers.Companion_Result_.Create_Success_(m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Companion_DecryptItemOutput_.Create_DecryptItemOutput_(_28_ddbItem, m_Wrappers.Companion_Option_.Create_Some_(_36_parsedHeader))) + return output +} + +// End of class Default__ + +// Definition of datatype Config +type Config struct { + Data_Config_ +} + +func (_this Config) Get_() Data_Config_ { + return _this.Data_Config_ +} + +type Data_Config_ interface { + isConfig() +} + +type CompanionStruct_Config_ struct { +} + +var Companion_Config_ = CompanionStruct_Config_{} + +type Config_Config struct { + Version uint8 + CmpClient *m_MaterialProviders.MaterialProvidersClient + LogicalTableName _dafny.Sequence + PartitionKeyName _dafny.Sequence + SortKeyName m_Wrappers.Option + Cmm m_AwsCryptographyMaterialProvidersTypes.ICryptographicMaterialsManager + AttributeActionsOnEncrypt _dafny.Map + AllowedUnsignedAttributes m_Wrappers.Option + AllowedUnsignedAttributePrefix m_Wrappers.Option + AlgorithmSuiteId m_Wrappers.Option + StructuredEncryption *m_StructuredEncryption.StructuredEncryptionClient + PlaintextOverride m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.PlaintextOverride + InternalLegacyOverride m_Wrappers.Option +} + +func (Config_Config) isConfig() {} + +func (CompanionStruct_Config_) Create_Config_(Version uint8, CmpClient *m_MaterialProviders.MaterialProvidersClient, LogicalTableName _dafny.Sequence, PartitionKeyName _dafny.Sequence, SortKeyName m_Wrappers.Option, Cmm m_AwsCryptographyMaterialProvidersTypes.ICryptographicMaterialsManager, AttributeActionsOnEncrypt _dafny.Map, AllowedUnsignedAttributes m_Wrappers.Option, AllowedUnsignedAttributePrefix m_Wrappers.Option, AlgorithmSuiteId m_Wrappers.Option, StructuredEncryption *m_StructuredEncryption.StructuredEncryptionClient, PlaintextOverride m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.PlaintextOverride, InternalLegacyOverride m_Wrappers.Option) Config { + return Config{Config_Config{Version, CmpClient, LogicalTableName, PartitionKeyName, SortKeyName, Cmm, AttributeActionsOnEncrypt, AllowedUnsignedAttributes, AllowedUnsignedAttributePrefix, AlgorithmSuiteId, StructuredEncryption, PlaintextOverride, InternalLegacyOverride}} +} + +func (_this Config) Is_Config() bool { + _, ok := _this.Get_().(Config_Config) + return ok +} + +func (CompanionStruct_Config_) Default() Config { + return Companion_Config_.Create_Config_(m_StructuredEncryptionHeader.Companion_Version_.Witness(), (*m_MaterialProviders.MaterialProvidersClient)(nil), _dafny.EmptySeq.SetString(), _dafny.EmptySeq.SetString(), m_Wrappers.Companion_Option_.Default(), (m_AwsCryptographyMaterialProvidersTypes.ICryptographicMaterialsManager)(nil), _dafny.EmptyMap, m_Wrappers.Companion_Option_.Default(), m_Wrappers.Companion_Option_.Default(), m_Wrappers.Companion_Option_.Default(), (*m_StructuredEncryption.StructuredEncryptionClient)(nil), m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Companion_PlaintextOverride_.Default(), m_Wrappers.Companion_Option_.Default()) +} + +func (_this Config) Dtor_version() uint8 { + return _this.Get_().(Config_Config).Version +} + +func (_this Config) Dtor_cmpClient() *m_MaterialProviders.MaterialProvidersClient { + return _this.Get_().(Config_Config).CmpClient +} + +func (_this Config) Dtor_logicalTableName() _dafny.Sequence { + return _this.Get_().(Config_Config).LogicalTableName +} + +func (_this Config) Dtor_partitionKeyName() _dafny.Sequence { + return _this.Get_().(Config_Config).PartitionKeyName +} + +func (_this Config) Dtor_sortKeyName() m_Wrappers.Option { + return _this.Get_().(Config_Config).SortKeyName +} + +func (_this Config) Dtor_cmm() m_AwsCryptographyMaterialProvidersTypes.ICryptographicMaterialsManager { + return _this.Get_().(Config_Config).Cmm +} + +func (_this Config) Dtor_attributeActionsOnEncrypt() _dafny.Map { + return _this.Get_().(Config_Config).AttributeActionsOnEncrypt +} + +func (_this Config) Dtor_allowedUnsignedAttributes() m_Wrappers.Option { + return _this.Get_().(Config_Config).AllowedUnsignedAttributes +} + +func (_this Config) Dtor_allowedUnsignedAttributePrefix() m_Wrappers.Option { + return _this.Get_().(Config_Config).AllowedUnsignedAttributePrefix +} + +func (_this Config) Dtor_algorithmSuiteId() m_Wrappers.Option { + return _this.Get_().(Config_Config).AlgorithmSuiteId +} + +func (_this Config) Dtor_structuredEncryption() *m_StructuredEncryption.StructuredEncryptionClient { + return _this.Get_().(Config_Config).StructuredEncryption +} + +func (_this Config) Dtor_plaintextOverride() m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.PlaintextOverride { + return _this.Get_().(Config_Config).PlaintextOverride +} + +func (_this Config) Dtor_internalLegacyOverride() m_Wrappers.Option { + return _this.Get_().(Config_Config).InternalLegacyOverride +} + +func (_this Config) String() string { + switch data := _this.Get_().(type) { + case nil: + return "null" + case Config_Config: + { + return "AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations.Config.Config" + "(" + _dafny.String(data.Version) + ", " + _dafny.String(data.CmpClient) + ", " + _dafny.String(data.LogicalTableName) + ", " + _dafny.String(data.PartitionKeyName) + ", " + _dafny.String(data.SortKeyName) + ", " + _dafny.String(data.Cmm) + ", " + _dafny.String(data.AttributeActionsOnEncrypt) + ", " + _dafny.String(data.AllowedUnsignedAttributes) + ", " + _dafny.String(data.AllowedUnsignedAttributePrefix) + ", " + _dafny.String(data.AlgorithmSuiteId) + ", " + _dafny.String(data.StructuredEncryption) + ", " + _dafny.String(data.PlaintextOverride) + ", " + _dafny.String(data.InternalLegacyOverride) + ")" + } + default: + { + return "" + } + } +} + +func (_this Config) Equals(other Config) bool { + switch data1 := _this.Get_().(type) { + case Config_Config: + { + data2, ok := other.Get_().(Config_Config) + return ok && data1.Version == data2.Version && data1.CmpClient == data2.CmpClient && data1.LogicalTableName.Equals(data2.LogicalTableName) && data1.PartitionKeyName.Equals(data2.PartitionKeyName) && data1.SortKeyName.Equals(data2.SortKeyName) && _dafny.AreEqual(data1.Cmm, data2.Cmm) && data1.AttributeActionsOnEncrypt.Equals(data2.AttributeActionsOnEncrypt) && data1.AllowedUnsignedAttributes.Equals(data2.AllowedUnsignedAttributes) && data1.AllowedUnsignedAttributePrefix.Equals(data2.AllowedUnsignedAttributePrefix) && data1.AlgorithmSuiteId.Equals(data2.AlgorithmSuiteId) && data1.StructuredEncryption == data2.StructuredEncryption && data1.PlaintextOverride.Equals(data2.PlaintextOverride) && data1.InternalLegacyOverride.Equals(data2.InternalLegacyOverride) + } + default: + { + return false // unexpected + } + } +} + +func (_this Config) EqualsGeneric(other interface{}) bool { + typed, ok := other.(Config) + return ok && _this.Equals(typed) +} + +func Type_Config_() _dafny.TypeDescriptor { + return type_Config_{} +} + +type type_Config_ struct { +} + +func (_this type_Config_) Default() interface{} { + return Companion_Config_.Default() +} + +func (_this type_Config_) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations.Config" +} +func (_this Config) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = Config{} + +// End of datatype Config + +// Definition of class ValidConfig +type ValidConfig struct { +} + +func New_ValidConfig_() *ValidConfig { + _this := ValidConfig{} + + return &_this +} + +type CompanionStruct_ValidConfig_ struct { +} + +var Companion_ValidConfig_ = CompanionStruct_ValidConfig_{} + +func (*ValidConfig) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations.ValidConfig" +} + +// End of class ValidConfig + +func Type_ValidConfig_() _dafny.TypeDescriptor { + return type_ValidConfig_{} +} + +type type_ValidConfig_ struct { +} + +func (_this type_ValidConfig_) Default() interface{} { + return Companion_Config_.Default() +} + +func (_this type_ValidConfig_) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations.ValidConfig" +} diff --git a/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes/AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.go b/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes/AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.go new file mode 100644 index 000000000..faa45e405 --- /dev/null +++ b/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes/AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.go @@ -0,0 +1,1561 @@ +// Package AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes +// Dafny module AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes compiled into Go + +package AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes + +import ( + os "os" + + m_ComAmazonawsDynamodbTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/dynamodb/ComAmazonawsDynamodbTypes" + m_Com_Amazonaws_Dynamodb "github.com/aws/aws-cryptographic-material-providers-library/releases/go/dynamodb/Com_Amazonaws_Dynamodb" + m_ComAmazonawsKmsTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/kms/ComAmazonawsKmsTypes" + m_Com_Amazonaws_Kms "github.com/aws/aws-cryptographic-material-providers-library/releases/go/kms/Com_Amazonaws_Kms" + m_AlgorithmSuites "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AlgorithmSuites" + m_AwsArnParsing "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsArnParsing" + m_AwsCryptographyKeyStoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyKeyStoreOperations" + m_AwsCryptographyKeyStoreTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyKeyStoreTypes" + m_AwsCryptographyMaterialProvidersOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyMaterialProvidersOperations" + m_AwsCryptographyMaterialProvidersTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyMaterialProvidersTypes" + m_AwsKmsDiscoveryKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsDiscoveryKeyring" + m_AwsKmsEcdhKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsEcdhKeyring" + m_AwsKmsHierarchicalKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsHierarchicalKeyring" + m_AwsKmsKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsKeyring" + m_AwsKmsMrkAreUnique "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkAreUnique" + m_AwsKmsMrkDiscoveryKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkDiscoveryKeyring" + m_AwsKmsMrkKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkKeyring" + m_AwsKmsMrkMatchForDecrypt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkMatchForDecrypt" + m_AwsKmsRsaKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsRsaKeyring" + m_AwsKmsUtils "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsUtils" + m_CMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CMM" + m_CacheConstants "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CacheConstants" + m_CanonicalEncryptionContext "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CanonicalEncryptionContext" + m_Commitment "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Commitment" + m_Constants "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Constants" + m_CreateKeyStoreTable "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CreateKeyStoreTable" + m_CreateKeys "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CreateKeys" + m_DDBKeystoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DDBKeystoreOperations" + m_DefaultCMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DefaultCMM" + m_DefaultClientSupplier "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DefaultClientSupplier" + m_Defaults "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Defaults" + m_DiscoveryMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DiscoveryMultiKeyring" + m_EcdhEdkWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/EcdhEdkWrapping" + m_EdkWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/EdkWrapping" + m_ErrorMessages "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/ErrorMessages" + m_GetKeys "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/GetKeys" + m_IntermediateKeyWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/IntermediateKeyWrapping" + m_KMSKeystoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KMSKeystoreOperations" + m_KeyStore "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KeyStore" + m_KeyStoreErrorMessages "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KeyStoreErrorMessages" + m_Keyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Keyring" + m_KmsArn "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KmsArn" + m_LocalCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/LocalCMC" + m_MaterialProviders "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MaterialProviders" + m_MaterialWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MaterialWrapping" + m_Materials "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Materials" + m_MrkAwareDiscoveryMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MrkAwareDiscoveryMultiKeyring" + m_MrkAwareStrictMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MrkAwareStrictMultiKeyring" + m_MultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MultiKeyring" + m_RawAESKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawAESKeyring" + m_RawECDHKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawECDHKeyring" + m_RawRSAKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawRSAKeyring" + m_RequiredEncryptionContextCMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RequiredEncryptionContextCMM" + m_StormTracker "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StormTracker" + m_StormTrackingCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StormTrackingCMC" + m_StrictMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StrictMultiKeyring" + m_Structure "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Structure" + m_SynchronizedLocalCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/SynchronizedLocalCMC" + m_Utils "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Utils" + m_AtomicPrimitives "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AtomicPrimitives" + m_AwsCryptographyPrimitivesOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AwsCryptographyPrimitivesOperations" + m_AwsCryptographyPrimitivesTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AwsCryptographyPrimitivesTypes" + m_Digest "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/Digest" + m_HKDF "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/HKDF" + m_KdfCtr "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/KdfCtr" + m_Random "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/Random" + m_WrappedHKDF "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/WrappedHKDF" + m_WrappedHMAC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/WrappedHMAC" + m_Actions "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Actions" + m_Base64 "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Base64" + m_Base64Lemmas "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Base64Lemmas" + m_BoundedInts "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/BoundedInts" + m_DivInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivInternals" + m_DivInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivInternalsNonlinear" + m_DivMod "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivMod" + m_FileIO "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/FileIO" + m_FloatCompare "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/FloatCompare" + m_Functions "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Functions" + m_GeneralInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/GeneralInternals" + m_GetOpt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/GetOpt" + m_HexStrings "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/HexStrings" + m_Logarithm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Logarithm" + m__Math "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Math_" + m_ModInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/ModInternals" + m_ModInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/ModInternalsNonlinear" + m_Mul "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Mul" + m_MulInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/MulInternals" + m_MulInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/MulInternalsNonlinear" + m_Power "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Power" + m_Relations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Relations" + m_Seq "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Seq" + m_Seq_MergeSort "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Seq_MergeSort" + m_Sorting "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Sorting" + m_StandardLibrary "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary" + m_StandardLibraryInterop "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibraryInterop" + m_StandardLibrary_MemoryMath "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_MemoryMath" + m_StandardLibrary_Sequence "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_Sequence" + m_StandardLibrary_String "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_String" + m_StandardLibrary_UInt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_UInt" + m_Streams "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Streams" + m_UnicodeStrings "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/UnicodeStrings" + m__Unicode "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Unicode_" + m_Utf16EncodingForm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Utf16EncodingForm" + m_Utf8EncodingForm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Utf8EncodingForm" + m_Wrappers "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Wrappers" + m_AwsCryptographyDbEncryptionSdkDynamoDbTypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbTypes" + m_AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations" + m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes" + m_Canonize "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/Canonize" + m__Maps "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/Maps_" + m_OptimizedMergeSort "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/OptimizedMergeSort" + m_Sets "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/Sets" + m_SortCanon "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/SortCanon" + m_StructuredEncryption "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryption" + m_StructuredEncryptionCrypt "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionCrypt" + m_StructuredEncryptionFooter "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionFooter" + m_StructuredEncryptionHeader "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionHeader" + m_StructuredEncryptionPaths "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionPaths" + m_StructuredEncryptionUtil "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionUtil" + m__System "github.com/dafny-lang/DafnyRuntimeGo/v4/System_" + _dafny "github.com/dafny-lang/DafnyRuntimeGo/v4/dafny" +) + +var _ = os.Args +var _ _dafny.Dummy__ +var _ m__System.Dummy__ +var _ m_Wrappers.Dummy__ +var _ m_BoundedInts.Dummy__ +var _ m_StandardLibrary_UInt.Dummy__ +var _ m_StandardLibrary_MemoryMath.Dummy__ +var _ m_StandardLibrary_Sequence.Dummy__ +var _ m_StandardLibrary_String.Dummy__ +var _ m_StandardLibrary.Dummy__ +var _ m_AwsCryptographyPrimitivesTypes.Dummy__ +var _ m_Random.Dummy__ +var _ m_Digest.Dummy__ +var _ m_WrappedHMAC.Dummy__ +var _ m_HKDF.Dummy__ +var _ m_WrappedHKDF.Dummy__ +var _ m_KdfCtr.Dummy__ +var _ m_AwsCryptographyPrimitivesOperations.Dummy__ +var _ m_AtomicPrimitives.Dummy__ +var _ m_ComAmazonawsDynamodbTypes.Dummy__ +var _ m_ComAmazonawsKmsTypes.Dummy__ +var _ m_AwsCryptographyKeyStoreTypes.Dummy__ +var _ m_AwsCryptographyMaterialProvidersTypes.Dummy__ +var _ m_Base64.Dummy__ +var _ m_AlgorithmSuites.Dummy__ +var _ m_Materials.Dummy__ +var _ m_Keyring.Dummy__ +var _ m_Relations.Dummy__ +var _ m_Seq_MergeSort.Dummy__ +var _ m__Math.Dummy__ +var _ m_Seq.Dummy__ +var _ m_Actions.Dummy__ +var _ m_CanonicalEncryptionContext.Dummy__ +var _ m_MaterialWrapping.Dummy__ +var _ m_IntermediateKeyWrapping.Dummy__ +var _ m_EdkWrapping.Dummy__ +var _ m_ErrorMessages.Dummy__ +var _ m_RawAESKeyring.Dummy__ +var _ m_AwsArnParsing.Dummy__ +var _ m_Constants.Dummy__ +var _ m_EcdhEdkWrapping.Dummy__ +var _ m_RawECDHKeyring.Dummy__ +var _ m_RawRSAKeyring.Dummy__ +var _ m_AwsKmsMrkMatchForDecrypt.Dummy__ +var _ m_AwsKmsUtils.Dummy__ +var _ m_AwsKmsKeyring.Dummy__ +var _ m_AwsKmsDiscoveryKeyring.Dummy__ +var _ m_AwsKmsEcdhKeyring.Dummy__ +var _ m_FileIO.Dummy__ +var _ m_LocalCMC.Dummy__ +var _ m_SynchronizedLocalCMC.Dummy__ +var _ m_StormTracker.Dummy__ +var _ m_StormTrackingCMC.Dummy__ +var _ m_CacheConstants.Dummy__ +var _ m_AwsKmsHierarchicalKeyring.Dummy__ +var _ m_AwsKmsMrkDiscoveryKeyring.Dummy__ +var _ m_AwsKmsMrkKeyring.Dummy__ +var _ m_AwsKmsRsaKeyring.Dummy__ +var _ m_MultiKeyring.Dummy__ +var _ m_AwsKmsMrkAreUnique.Dummy__ +var _ m_StrictMultiKeyring.Dummy__ +var _ m_Com_Amazonaws_Kms.Dummy__ +var _ m_Com_Amazonaws_Dynamodb.Dummy__ +var _ m_DiscoveryMultiKeyring.Dummy__ +var _ m_MrkAwareDiscoveryMultiKeyring.Dummy__ +var _ m_MrkAwareStrictMultiKeyring.Dummy__ +var _ m_CMM.Dummy__ +var _ m_Defaults.Dummy__ +var _ m_Commitment.Dummy__ +var _ m_DefaultCMM.Dummy__ +var _ m_DefaultClientSupplier.Dummy__ +var _ m_Utils.Dummy__ +var _ m_RequiredEncryptionContextCMM.Dummy__ +var _ m_AwsCryptographyMaterialProvidersOperations.Dummy__ +var _ m_MaterialProviders.Dummy__ +var _ m_KeyStoreErrorMessages.Dummy__ +var _ m_KmsArn.Dummy__ +var _ m_Structure.Dummy__ +var _ m_KMSKeystoreOperations.Dummy__ +var _ m_DDBKeystoreOperations.Dummy__ +var _ m_CreateKeys.Dummy__ +var _ m_CreateKeyStoreTable.Dummy__ +var _ m_GetKeys.Dummy__ +var _ m_AwsCryptographyKeyStoreOperations.Dummy__ +var _ m_KeyStore.Dummy__ +var _ m__Unicode.Dummy__ +var _ m_Functions.Dummy__ +var _ m_Utf8EncodingForm.Dummy__ +var _ m_Utf16EncodingForm.Dummy__ +var _ m_UnicodeStrings.Dummy__ +var _ m_GeneralInternals.Dummy__ +var _ m_MulInternalsNonlinear.Dummy__ +var _ m_MulInternals.Dummy__ +var _ m_Mul.Dummy__ +var _ m_ModInternalsNonlinear.Dummy__ +var _ m_DivInternalsNonlinear.Dummy__ +var _ m_ModInternals.Dummy__ +var _ m_DivInternals.Dummy__ +var _ m_DivMod.Dummy__ +var _ m_Power.Dummy__ +var _ m_Logarithm.Dummy__ +var _ m_StandardLibraryInterop.Dummy__ +var _ m_Streams.Dummy__ +var _ m_Sorting.Dummy__ +var _ m_HexStrings.Dummy__ +var _ m_GetOpt.Dummy__ +var _ m_FloatCompare.Dummy__ +var _ m_Base64Lemmas.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Dummy__ +var _ m_StructuredEncryptionUtil.Dummy__ +var _ m_Sets.Dummy__ +var _ m_StructuredEncryptionPaths.Dummy__ +var _ m_StructuredEncryptionHeader.Dummy__ +var _ m_StructuredEncryptionFooter.Dummy__ +var _ m_OptimizedMergeSort.Dummy__ +var _ m_SortCanon.Dummy__ +var _ m_Canonize.Dummy__ +var _ m_StructuredEncryptionCrypt.Dummy__ +var _ m__Maps.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations.Dummy__ +var _ m_StructuredEncryption.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Dummy__ + +type Dummy__ struct{} + +// Definition of class Default__ +type Default__ struct { + dummy byte +} + +func New_Default___() *Default__ { + _this := Default__{} + + return &_this +} + +type CompanionStruct_Default___ struct { +} + +var Companion_Default___ = CompanionStruct_Default___{} + +func (_this *Default__) Equals(other *Default__) bool { + return _this == other +} + +func (_this *Default__) EqualsGeneric(x interface{}) bool { + other, ok := x.(*Default__) + return ok && _this.Equals(other) +} + +func (*Default__) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Default__" +} +func (_this *Default__) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = &Default__{} + +func (_static *CompanionStruct_Default___) IsDummySubsetType(x _dafny.Int) bool { + return (x).Sign() == 1 +} + +// End of class Default__ + +// Definition of datatype DafnyCallEvent +type DafnyCallEvent struct { + Data_DafnyCallEvent_ +} + +func (_this DafnyCallEvent) Get_() Data_DafnyCallEvent_ { + return _this.Data_DafnyCallEvent_ +} + +type Data_DafnyCallEvent_ interface { + isDafnyCallEvent() +} + +type CompanionStruct_DafnyCallEvent_ struct { +} + +var Companion_DafnyCallEvent_ = CompanionStruct_DafnyCallEvent_{} + +type DafnyCallEvent_DafnyCallEvent struct { + Input interface{} + Output interface{} +} + +func (DafnyCallEvent_DafnyCallEvent) isDafnyCallEvent() {} + +func (CompanionStruct_DafnyCallEvent_) Create_DafnyCallEvent_(Input interface{}, Output interface{}) DafnyCallEvent { + return DafnyCallEvent{DafnyCallEvent_DafnyCallEvent{Input, Output}} +} + +func (_this DafnyCallEvent) Is_DafnyCallEvent() bool { + _, ok := _this.Get_().(DafnyCallEvent_DafnyCallEvent) + return ok +} + +func (CompanionStruct_DafnyCallEvent_) Default(_default_I interface{}, _default_O interface{}) DafnyCallEvent { + return Companion_DafnyCallEvent_.Create_DafnyCallEvent_(_default_I, _default_O) +} + +func (_this DafnyCallEvent) Dtor_input() interface{} { + return _this.Get_().(DafnyCallEvent_DafnyCallEvent).Input +} + +func (_this DafnyCallEvent) Dtor_output() interface{} { + return _this.Get_().(DafnyCallEvent_DafnyCallEvent).Output +} + +func (_this DafnyCallEvent) String() string { + switch data := _this.Get_().(type) { + case nil: + return "null" + case DafnyCallEvent_DafnyCallEvent: + { + return "AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.DafnyCallEvent.DafnyCallEvent" + "(" + _dafny.String(data.Input) + ", " + _dafny.String(data.Output) + ")" + } + default: + { + return "" + } + } +} + +func (_this DafnyCallEvent) Equals(other DafnyCallEvent) bool { + switch data1 := _this.Get_().(type) { + case DafnyCallEvent_DafnyCallEvent: + { + data2, ok := other.Get_().(DafnyCallEvent_DafnyCallEvent) + return ok && _dafny.AreEqual(data1.Input, data2.Input) && _dafny.AreEqual(data1.Output, data2.Output) + } + default: + { + return false // unexpected + } + } +} + +func (_this DafnyCallEvent) EqualsGeneric(other interface{}) bool { + typed, ok := other.(DafnyCallEvent) + return ok && _this.Equals(typed) +} + +func Type_DafnyCallEvent_(Type_I_ _dafny.TypeDescriptor, Type_O_ _dafny.TypeDescriptor) _dafny.TypeDescriptor { + return type_DafnyCallEvent_{Type_I_, Type_O_} +} + +type type_DafnyCallEvent_ struct { + Type_I_ _dafny.TypeDescriptor + Type_O_ _dafny.TypeDescriptor +} + +func (_this type_DafnyCallEvent_) Default() interface{} { + Type_I_ := _this.Type_I_ + _ = Type_I_ + Type_O_ := _this.Type_O_ + _ = Type_O_ + return Companion_DafnyCallEvent_.Default(Type_I_.Default(), Type_O_.Default()) +} + +func (_this type_DafnyCallEvent_) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.DafnyCallEvent" +} +func (_this DafnyCallEvent) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = DafnyCallEvent{} + +// End of datatype DafnyCallEvent + +// Definition of datatype DecryptItemInput +type DecryptItemInput struct { + Data_DecryptItemInput_ +} + +func (_this DecryptItemInput) Get_() Data_DecryptItemInput_ { + return _this.Data_DecryptItemInput_ +} + +type Data_DecryptItemInput_ interface { + isDecryptItemInput() +} + +type CompanionStruct_DecryptItemInput_ struct { +} + +var Companion_DecryptItemInput_ = CompanionStruct_DecryptItemInput_{} + +type DecryptItemInput_DecryptItemInput struct { + EncryptedItem _dafny.Map +} + +func (DecryptItemInput_DecryptItemInput) isDecryptItemInput() {} + +func (CompanionStruct_DecryptItemInput_) Create_DecryptItemInput_(EncryptedItem _dafny.Map) DecryptItemInput { + return DecryptItemInput{DecryptItemInput_DecryptItemInput{EncryptedItem}} +} + +func (_this DecryptItemInput) Is_DecryptItemInput() bool { + _, ok := _this.Get_().(DecryptItemInput_DecryptItemInput) + return ok +} + +func (CompanionStruct_DecryptItemInput_) Default() DecryptItemInput { + return Companion_DecryptItemInput_.Create_DecryptItemInput_(_dafny.EmptyMap) +} + +func (_this DecryptItemInput) Dtor_encryptedItem() _dafny.Map { + return _this.Get_().(DecryptItemInput_DecryptItemInput).EncryptedItem +} + +func (_this DecryptItemInput) String() string { + switch data := _this.Get_().(type) { + case nil: + return "null" + case DecryptItemInput_DecryptItemInput: + { + return "AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.DecryptItemInput.DecryptItemInput" + "(" + _dafny.String(data.EncryptedItem) + ")" + } + default: + { + return "" + } + } +} + +func (_this DecryptItemInput) Equals(other DecryptItemInput) bool { + switch data1 := _this.Get_().(type) { + case DecryptItemInput_DecryptItemInput: + { + data2, ok := other.Get_().(DecryptItemInput_DecryptItemInput) + return ok && data1.EncryptedItem.Equals(data2.EncryptedItem) + } + default: + { + return false // unexpected + } + } +} + +func (_this DecryptItemInput) EqualsGeneric(other interface{}) bool { + typed, ok := other.(DecryptItemInput) + return ok && _this.Equals(typed) +} + +func Type_DecryptItemInput_() _dafny.TypeDescriptor { + return type_DecryptItemInput_{} +} + +type type_DecryptItemInput_ struct { +} + +func (_this type_DecryptItemInput_) Default() interface{} { + return Companion_DecryptItemInput_.Default() +} + +func (_this type_DecryptItemInput_) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.DecryptItemInput" +} +func (_this DecryptItemInput) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = DecryptItemInput{} + +// End of datatype DecryptItemInput + +// Definition of datatype DecryptItemOutput +type DecryptItemOutput struct { + Data_DecryptItemOutput_ +} + +func (_this DecryptItemOutput) Get_() Data_DecryptItemOutput_ { + return _this.Data_DecryptItemOutput_ +} + +type Data_DecryptItemOutput_ interface { + isDecryptItemOutput() +} + +type CompanionStruct_DecryptItemOutput_ struct { +} + +var Companion_DecryptItemOutput_ = CompanionStruct_DecryptItemOutput_{} + +type DecryptItemOutput_DecryptItemOutput struct { + PlaintextItem _dafny.Map + ParsedHeader m_Wrappers.Option +} + +func (DecryptItemOutput_DecryptItemOutput) isDecryptItemOutput() {} + +func (CompanionStruct_DecryptItemOutput_) Create_DecryptItemOutput_(PlaintextItem _dafny.Map, ParsedHeader m_Wrappers.Option) DecryptItemOutput { + return DecryptItemOutput{DecryptItemOutput_DecryptItemOutput{PlaintextItem, ParsedHeader}} +} + +func (_this DecryptItemOutput) Is_DecryptItemOutput() bool { + _, ok := _this.Get_().(DecryptItemOutput_DecryptItemOutput) + return ok +} + +func (CompanionStruct_DecryptItemOutput_) Default() DecryptItemOutput { + return Companion_DecryptItemOutput_.Create_DecryptItemOutput_(_dafny.EmptyMap, m_Wrappers.Companion_Option_.Default()) +} + +func (_this DecryptItemOutput) Dtor_plaintextItem() _dafny.Map { + return _this.Get_().(DecryptItemOutput_DecryptItemOutput).PlaintextItem +} + +func (_this DecryptItemOutput) Dtor_parsedHeader() m_Wrappers.Option { + return _this.Get_().(DecryptItemOutput_DecryptItemOutput).ParsedHeader +} + +func (_this DecryptItemOutput) String() string { + switch data := _this.Get_().(type) { + case nil: + return "null" + case DecryptItemOutput_DecryptItemOutput: + { + return "AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.DecryptItemOutput.DecryptItemOutput" + "(" + _dafny.String(data.PlaintextItem) + ", " + _dafny.String(data.ParsedHeader) + ")" + } + default: + { + return "" + } + } +} + +func (_this DecryptItemOutput) Equals(other DecryptItemOutput) bool { + switch data1 := _this.Get_().(type) { + case DecryptItemOutput_DecryptItemOutput: + { + data2, ok := other.Get_().(DecryptItemOutput_DecryptItemOutput) + return ok && data1.PlaintextItem.Equals(data2.PlaintextItem) && data1.ParsedHeader.Equals(data2.ParsedHeader) + } + default: + { + return false // unexpected + } + } +} + +func (_this DecryptItemOutput) EqualsGeneric(other interface{}) bool { + typed, ok := other.(DecryptItemOutput) + return ok && _this.Equals(typed) +} + +func Type_DecryptItemOutput_() _dafny.TypeDescriptor { + return type_DecryptItemOutput_{} +} + +type type_DecryptItemOutput_ struct { +} + +func (_this type_DecryptItemOutput_) Default() interface{} { + return Companion_DecryptItemOutput_.Default() +} + +func (_this type_DecryptItemOutput_) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.DecryptItemOutput" +} +func (_this DecryptItemOutput) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = DecryptItemOutput{} + +// End of datatype DecryptItemOutput + +// Definition of class IDynamoDbItemEncryptorClientCallHistory +type IDynamoDbItemEncryptorClientCallHistory struct { + dummy byte +} + +func New_IDynamoDbItemEncryptorClientCallHistory_() *IDynamoDbItemEncryptorClientCallHistory { + _this := IDynamoDbItemEncryptorClientCallHistory{} + + return &_this +} + +type CompanionStruct_IDynamoDbItemEncryptorClientCallHistory_ struct { +} + +var Companion_IDynamoDbItemEncryptorClientCallHistory_ = CompanionStruct_IDynamoDbItemEncryptorClientCallHistory_{} + +func (_this *IDynamoDbItemEncryptorClientCallHistory) Equals(other *IDynamoDbItemEncryptorClientCallHistory) bool { + return _this == other +} + +func (_this *IDynamoDbItemEncryptorClientCallHistory) EqualsGeneric(x interface{}) bool { + other, ok := x.(*IDynamoDbItemEncryptorClientCallHistory) + return ok && _this.Equals(other) +} + +func (*IDynamoDbItemEncryptorClientCallHistory) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.IDynamoDbItemEncryptorClientCallHistory" +} + +func Type_IDynamoDbItemEncryptorClientCallHistory_() _dafny.TypeDescriptor { + return type_IDynamoDbItemEncryptorClientCallHistory_{} +} + +type type_IDynamoDbItemEncryptorClientCallHistory_ struct { +} + +func (_this type_IDynamoDbItemEncryptorClientCallHistory_) Default() interface{} { + return (*IDynamoDbItemEncryptorClientCallHistory)(nil) +} + +func (_this type_IDynamoDbItemEncryptorClientCallHistory_) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.IDynamoDbItemEncryptorClientCallHistory" +} +func (_this *IDynamoDbItemEncryptorClientCallHistory) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = &IDynamoDbItemEncryptorClientCallHistory{} + +// End of class IDynamoDbItemEncryptorClientCallHistory + +// Definition of trait IDynamoDbItemEncryptorClient +type IDynamoDbItemEncryptorClient interface { + String() string + EncryptItem(input EncryptItemInput) m_Wrappers.Result + DecryptItem(input DecryptItemInput) m_Wrappers.Result +} +type CompanionStruct_IDynamoDbItemEncryptorClient_ struct { + TraitID_ *_dafny.TraitID +} + +var Companion_IDynamoDbItemEncryptorClient_ = CompanionStruct_IDynamoDbItemEncryptorClient_{ + TraitID_: &_dafny.TraitID{}, +} + +func (CompanionStruct_IDynamoDbItemEncryptorClient_) CastTo_(x interface{}) IDynamoDbItemEncryptorClient { + var t IDynamoDbItemEncryptorClient + t, _ = x.(IDynamoDbItemEncryptorClient) + return t +} + +// End of trait IDynamoDbItemEncryptorClient + +// Definition of datatype DynamoDbItemEncryptorConfig +type DynamoDbItemEncryptorConfig struct { + Data_DynamoDbItemEncryptorConfig_ +} + +func (_this DynamoDbItemEncryptorConfig) Get_() Data_DynamoDbItemEncryptorConfig_ { + return _this.Data_DynamoDbItemEncryptorConfig_ +} + +type Data_DynamoDbItemEncryptorConfig_ interface { + isDynamoDbItemEncryptorConfig() +} + +type CompanionStruct_DynamoDbItemEncryptorConfig_ struct { +} + +var Companion_DynamoDbItemEncryptorConfig_ = CompanionStruct_DynamoDbItemEncryptorConfig_{} + +type DynamoDbItemEncryptorConfig_DynamoDbItemEncryptorConfig struct { + LogicalTableName _dafny.Sequence + PartitionKeyName _dafny.Sequence + SortKeyName m_Wrappers.Option + AttributeActionsOnEncrypt _dafny.Map + AllowedUnsignedAttributes m_Wrappers.Option + AllowedUnsignedAttributePrefix m_Wrappers.Option + AlgorithmSuiteId m_Wrappers.Option + Keyring m_Wrappers.Option + Cmm m_Wrappers.Option + LegacyOverride m_Wrappers.Option + PlaintextOverride m_Wrappers.Option +} + +func (DynamoDbItemEncryptorConfig_DynamoDbItemEncryptorConfig) isDynamoDbItemEncryptorConfig() {} + +func (CompanionStruct_DynamoDbItemEncryptorConfig_) Create_DynamoDbItemEncryptorConfig_(LogicalTableName _dafny.Sequence, PartitionKeyName _dafny.Sequence, SortKeyName m_Wrappers.Option, AttributeActionsOnEncrypt _dafny.Map, AllowedUnsignedAttributes m_Wrappers.Option, AllowedUnsignedAttributePrefix m_Wrappers.Option, AlgorithmSuiteId m_Wrappers.Option, Keyring m_Wrappers.Option, Cmm m_Wrappers.Option, LegacyOverride m_Wrappers.Option, PlaintextOverride m_Wrappers.Option) DynamoDbItemEncryptorConfig { + return DynamoDbItemEncryptorConfig{DynamoDbItemEncryptorConfig_DynamoDbItemEncryptorConfig{LogicalTableName, PartitionKeyName, SortKeyName, AttributeActionsOnEncrypt, AllowedUnsignedAttributes, AllowedUnsignedAttributePrefix, AlgorithmSuiteId, Keyring, Cmm, LegacyOverride, PlaintextOverride}} +} + +func (_this DynamoDbItemEncryptorConfig) Is_DynamoDbItemEncryptorConfig() bool { + _, ok := _this.Get_().(DynamoDbItemEncryptorConfig_DynamoDbItemEncryptorConfig) + return ok +} + +func (CompanionStruct_DynamoDbItemEncryptorConfig_) Default() DynamoDbItemEncryptorConfig { + return Companion_DynamoDbItemEncryptorConfig_.Create_DynamoDbItemEncryptorConfig_(_dafny.EmptySeq.SetString(), _dafny.EmptySeq.SetString(), m_Wrappers.Companion_Option_.Default(), _dafny.EmptyMap, m_Wrappers.Companion_Option_.Default(), m_Wrappers.Companion_Option_.Default(), m_Wrappers.Companion_Option_.Default(), m_Wrappers.Companion_Option_.Default(), m_Wrappers.Companion_Option_.Default(), m_Wrappers.Companion_Option_.Default(), m_Wrappers.Companion_Option_.Default()) +} + +func (_this DynamoDbItemEncryptorConfig) Dtor_logicalTableName() _dafny.Sequence { + return _this.Get_().(DynamoDbItemEncryptorConfig_DynamoDbItemEncryptorConfig).LogicalTableName +} + +func (_this DynamoDbItemEncryptorConfig) Dtor_partitionKeyName() _dafny.Sequence { + return _this.Get_().(DynamoDbItemEncryptorConfig_DynamoDbItemEncryptorConfig).PartitionKeyName +} + +func (_this DynamoDbItemEncryptorConfig) Dtor_sortKeyName() m_Wrappers.Option { + return _this.Get_().(DynamoDbItemEncryptorConfig_DynamoDbItemEncryptorConfig).SortKeyName +} + +func (_this DynamoDbItemEncryptorConfig) Dtor_attributeActionsOnEncrypt() _dafny.Map { + return _this.Get_().(DynamoDbItemEncryptorConfig_DynamoDbItemEncryptorConfig).AttributeActionsOnEncrypt +} + +func (_this DynamoDbItemEncryptorConfig) Dtor_allowedUnsignedAttributes() m_Wrappers.Option { + return _this.Get_().(DynamoDbItemEncryptorConfig_DynamoDbItemEncryptorConfig).AllowedUnsignedAttributes +} + +func (_this DynamoDbItemEncryptorConfig) Dtor_allowedUnsignedAttributePrefix() m_Wrappers.Option { + return _this.Get_().(DynamoDbItemEncryptorConfig_DynamoDbItemEncryptorConfig).AllowedUnsignedAttributePrefix +} + +func (_this DynamoDbItemEncryptorConfig) Dtor_algorithmSuiteId() m_Wrappers.Option { + return _this.Get_().(DynamoDbItemEncryptorConfig_DynamoDbItemEncryptorConfig).AlgorithmSuiteId +} + +func (_this DynamoDbItemEncryptorConfig) Dtor_keyring() m_Wrappers.Option { + return _this.Get_().(DynamoDbItemEncryptorConfig_DynamoDbItemEncryptorConfig).Keyring +} + +func (_this DynamoDbItemEncryptorConfig) Dtor_cmm() m_Wrappers.Option { + return _this.Get_().(DynamoDbItemEncryptorConfig_DynamoDbItemEncryptorConfig).Cmm +} + +func (_this DynamoDbItemEncryptorConfig) Dtor_legacyOverride() m_Wrappers.Option { + return _this.Get_().(DynamoDbItemEncryptorConfig_DynamoDbItemEncryptorConfig).LegacyOverride +} + +func (_this DynamoDbItemEncryptorConfig) Dtor_plaintextOverride() m_Wrappers.Option { + return _this.Get_().(DynamoDbItemEncryptorConfig_DynamoDbItemEncryptorConfig).PlaintextOverride +} + +func (_this DynamoDbItemEncryptorConfig) String() string { + switch data := _this.Get_().(type) { + case nil: + return "null" + case DynamoDbItemEncryptorConfig_DynamoDbItemEncryptorConfig: + { + return "AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.DynamoDbItemEncryptorConfig.DynamoDbItemEncryptorConfig" + "(" + _dafny.String(data.LogicalTableName) + ", " + _dafny.String(data.PartitionKeyName) + ", " + _dafny.String(data.SortKeyName) + ", " + _dafny.String(data.AttributeActionsOnEncrypt) + ", " + _dafny.String(data.AllowedUnsignedAttributes) + ", " + _dafny.String(data.AllowedUnsignedAttributePrefix) + ", " + _dafny.String(data.AlgorithmSuiteId) + ", " + _dafny.String(data.Keyring) + ", " + _dafny.String(data.Cmm) + ", " + _dafny.String(data.LegacyOverride) + ", " + _dafny.String(data.PlaintextOverride) + ")" + } + default: + { + return "" + } + } +} + +func (_this DynamoDbItemEncryptorConfig) Equals(other DynamoDbItemEncryptorConfig) bool { + switch data1 := _this.Get_().(type) { + case DynamoDbItemEncryptorConfig_DynamoDbItemEncryptorConfig: + { + data2, ok := other.Get_().(DynamoDbItemEncryptorConfig_DynamoDbItemEncryptorConfig) + return ok && data1.LogicalTableName.Equals(data2.LogicalTableName) && data1.PartitionKeyName.Equals(data2.PartitionKeyName) && data1.SortKeyName.Equals(data2.SortKeyName) && data1.AttributeActionsOnEncrypt.Equals(data2.AttributeActionsOnEncrypt) && data1.AllowedUnsignedAttributes.Equals(data2.AllowedUnsignedAttributes) && data1.AllowedUnsignedAttributePrefix.Equals(data2.AllowedUnsignedAttributePrefix) && data1.AlgorithmSuiteId.Equals(data2.AlgorithmSuiteId) && data1.Keyring.Equals(data2.Keyring) && data1.Cmm.Equals(data2.Cmm) && data1.LegacyOverride.Equals(data2.LegacyOverride) && data1.PlaintextOverride.Equals(data2.PlaintextOverride) + } + default: + { + return false // unexpected + } + } +} + +func (_this DynamoDbItemEncryptorConfig) EqualsGeneric(other interface{}) bool { + typed, ok := other.(DynamoDbItemEncryptorConfig) + return ok && _this.Equals(typed) +} + +func Type_DynamoDbItemEncryptorConfig_() _dafny.TypeDescriptor { + return type_DynamoDbItemEncryptorConfig_{} +} + +type type_DynamoDbItemEncryptorConfig_ struct { +} + +func (_this type_DynamoDbItemEncryptorConfig_) Default() interface{} { + return Companion_DynamoDbItemEncryptorConfig_.Default() +} + +func (_this type_DynamoDbItemEncryptorConfig_) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.DynamoDbItemEncryptorConfig" +} +func (_this DynamoDbItemEncryptorConfig) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = DynamoDbItemEncryptorConfig{} + +// End of datatype DynamoDbItemEncryptorConfig + +// Definition of datatype EncryptItemInput +type EncryptItemInput struct { + Data_EncryptItemInput_ +} + +func (_this EncryptItemInput) Get_() Data_EncryptItemInput_ { + return _this.Data_EncryptItemInput_ +} + +type Data_EncryptItemInput_ interface { + isEncryptItemInput() +} + +type CompanionStruct_EncryptItemInput_ struct { +} + +var Companion_EncryptItemInput_ = CompanionStruct_EncryptItemInput_{} + +type EncryptItemInput_EncryptItemInput struct { + PlaintextItem _dafny.Map +} + +func (EncryptItemInput_EncryptItemInput) isEncryptItemInput() {} + +func (CompanionStruct_EncryptItemInput_) Create_EncryptItemInput_(PlaintextItem _dafny.Map) EncryptItemInput { + return EncryptItemInput{EncryptItemInput_EncryptItemInput{PlaintextItem}} +} + +func (_this EncryptItemInput) Is_EncryptItemInput() bool { + _, ok := _this.Get_().(EncryptItemInput_EncryptItemInput) + return ok +} + +func (CompanionStruct_EncryptItemInput_) Default() EncryptItemInput { + return Companion_EncryptItemInput_.Create_EncryptItemInput_(_dafny.EmptyMap) +} + +func (_this EncryptItemInput) Dtor_plaintextItem() _dafny.Map { + return _this.Get_().(EncryptItemInput_EncryptItemInput).PlaintextItem +} + +func (_this EncryptItemInput) String() string { + switch data := _this.Get_().(type) { + case nil: + return "null" + case EncryptItemInput_EncryptItemInput: + { + return "AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.EncryptItemInput.EncryptItemInput" + "(" + _dafny.String(data.PlaintextItem) + ")" + } + default: + { + return "" + } + } +} + +func (_this EncryptItemInput) Equals(other EncryptItemInput) bool { + switch data1 := _this.Get_().(type) { + case EncryptItemInput_EncryptItemInput: + { + data2, ok := other.Get_().(EncryptItemInput_EncryptItemInput) + return ok && data1.PlaintextItem.Equals(data2.PlaintextItem) + } + default: + { + return false // unexpected + } + } +} + +func (_this EncryptItemInput) EqualsGeneric(other interface{}) bool { + typed, ok := other.(EncryptItemInput) + return ok && _this.Equals(typed) +} + +func Type_EncryptItemInput_() _dafny.TypeDescriptor { + return type_EncryptItemInput_{} +} + +type type_EncryptItemInput_ struct { +} + +func (_this type_EncryptItemInput_) Default() interface{} { + return Companion_EncryptItemInput_.Default() +} + +func (_this type_EncryptItemInput_) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.EncryptItemInput" +} +func (_this EncryptItemInput) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = EncryptItemInput{} + +// End of datatype EncryptItemInput + +// Definition of datatype EncryptItemOutput +type EncryptItemOutput struct { + Data_EncryptItemOutput_ +} + +func (_this EncryptItemOutput) Get_() Data_EncryptItemOutput_ { + return _this.Data_EncryptItemOutput_ +} + +type Data_EncryptItemOutput_ interface { + isEncryptItemOutput() +} + +type CompanionStruct_EncryptItemOutput_ struct { +} + +var Companion_EncryptItemOutput_ = CompanionStruct_EncryptItemOutput_{} + +type EncryptItemOutput_EncryptItemOutput struct { + EncryptedItem _dafny.Map + ParsedHeader m_Wrappers.Option +} + +func (EncryptItemOutput_EncryptItemOutput) isEncryptItemOutput() {} + +func (CompanionStruct_EncryptItemOutput_) Create_EncryptItemOutput_(EncryptedItem _dafny.Map, ParsedHeader m_Wrappers.Option) EncryptItemOutput { + return EncryptItemOutput{EncryptItemOutput_EncryptItemOutput{EncryptedItem, ParsedHeader}} +} + +func (_this EncryptItemOutput) Is_EncryptItemOutput() bool { + _, ok := _this.Get_().(EncryptItemOutput_EncryptItemOutput) + return ok +} + +func (CompanionStruct_EncryptItemOutput_) Default() EncryptItemOutput { + return Companion_EncryptItemOutput_.Create_EncryptItemOutput_(_dafny.EmptyMap, m_Wrappers.Companion_Option_.Default()) +} + +func (_this EncryptItemOutput) Dtor_encryptedItem() _dafny.Map { + return _this.Get_().(EncryptItemOutput_EncryptItemOutput).EncryptedItem +} + +func (_this EncryptItemOutput) Dtor_parsedHeader() m_Wrappers.Option { + return _this.Get_().(EncryptItemOutput_EncryptItemOutput).ParsedHeader +} + +func (_this EncryptItemOutput) String() string { + switch data := _this.Get_().(type) { + case nil: + return "null" + case EncryptItemOutput_EncryptItemOutput: + { + return "AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.EncryptItemOutput.EncryptItemOutput" + "(" + _dafny.String(data.EncryptedItem) + ", " + _dafny.String(data.ParsedHeader) + ")" + } + default: + { + return "" + } + } +} + +func (_this EncryptItemOutput) Equals(other EncryptItemOutput) bool { + switch data1 := _this.Get_().(type) { + case EncryptItemOutput_EncryptItemOutput: + { + data2, ok := other.Get_().(EncryptItemOutput_EncryptItemOutput) + return ok && data1.EncryptedItem.Equals(data2.EncryptedItem) && data1.ParsedHeader.Equals(data2.ParsedHeader) + } + default: + { + return false // unexpected + } + } +} + +func (_this EncryptItemOutput) EqualsGeneric(other interface{}) bool { + typed, ok := other.(EncryptItemOutput) + return ok && _this.Equals(typed) +} + +func Type_EncryptItemOutput_() _dafny.TypeDescriptor { + return type_EncryptItemOutput_{} +} + +type type_EncryptItemOutput_ struct { +} + +func (_this type_EncryptItemOutput_) Default() interface{} { + return Companion_EncryptItemOutput_.Default() +} + +func (_this type_EncryptItemOutput_) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.EncryptItemOutput" +} +func (_this EncryptItemOutput) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = EncryptItemOutput{} + +// End of datatype EncryptItemOutput + +// Definition of datatype ParsedHeader +type ParsedHeader struct { + Data_ParsedHeader_ +} + +func (_this ParsedHeader) Get_() Data_ParsedHeader_ { + return _this.Data_ParsedHeader_ +} + +type Data_ParsedHeader_ interface { + isParsedHeader() +} + +type CompanionStruct_ParsedHeader_ struct { +} + +var Companion_ParsedHeader_ = CompanionStruct_ParsedHeader_{} + +type ParsedHeader_ParsedHeader struct { + AttributeActionsOnEncrypt _dafny.Map + AlgorithmSuiteId m_AwsCryptographyMaterialProvidersTypes.DBEAlgorithmSuiteId + EncryptedDataKeys _dafny.Sequence + StoredEncryptionContext _dafny.Map + EncryptionContext _dafny.Map + SelectorContext _dafny.Map +} + +func (ParsedHeader_ParsedHeader) isParsedHeader() {} + +func (CompanionStruct_ParsedHeader_) Create_ParsedHeader_(AttributeActionsOnEncrypt _dafny.Map, AlgorithmSuiteId m_AwsCryptographyMaterialProvidersTypes.DBEAlgorithmSuiteId, EncryptedDataKeys _dafny.Sequence, StoredEncryptionContext _dafny.Map, EncryptionContext _dafny.Map, SelectorContext _dafny.Map) ParsedHeader { + return ParsedHeader{ParsedHeader_ParsedHeader{AttributeActionsOnEncrypt, AlgorithmSuiteId, EncryptedDataKeys, StoredEncryptionContext, EncryptionContext, SelectorContext}} +} + +func (_this ParsedHeader) Is_ParsedHeader() bool { + _, ok := _this.Get_().(ParsedHeader_ParsedHeader) + return ok +} + +func (CompanionStruct_ParsedHeader_) Default() ParsedHeader { + return Companion_ParsedHeader_.Create_ParsedHeader_(_dafny.EmptyMap, m_AwsCryptographyMaterialProvidersTypes.Companion_DBEAlgorithmSuiteId_.Default(), _dafny.EmptySeq, _dafny.EmptyMap, _dafny.EmptyMap, _dafny.EmptyMap) +} + +func (_this ParsedHeader) Dtor_attributeActionsOnEncrypt() _dafny.Map { + return _this.Get_().(ParsedHeader_ParsedHeader).AttributeActionsOnEncrypt +} + +func (_this ParsedHeader) Dtor_algorithmSuiteId() m_AwsCryptographyMaterialProvidersTypes.DBEAlgorithmSuiteId { + return _this.Get_().(ParsedHeader_ParsedHeader).AlgorithmSuiteId +} + +func (_this ParsedHeader) Dtor_encryptedDataKeys() _dafny.Sequence { + return _this.Get_().(ParsedHeader_ParsedHeader).EncryptedDataKeys +} + +func (_this ParsedHeader) Dtor_storedEncryptionContext() _dafny.Map { + return _this.Get_().(ParsedHeader_ParsedHeader).StoredEncryptionContext +} + +func (_this ParsedHeader) Dtor_encryptionContext() _dafny.Map { + return _this.Get_().(ParsedHeader_ParsedHeader).EncryptionContext +} + +func (_this ParsedHeader) Dtor_selectorContext() _dafny.Map { + return _this.Get_().(ParsedHeader_ParsedHeader).SelectorContext +} + +func (_this ParsedHeader) String() string { + switch data := _this.Get_().(type) { + case nil: + return "null" + case ParsedHeader_ParsedHeader: + { + return "AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.ParsedHeader.ParsedHeader" + "(" + _dafny.String(data.AttributeActionsOnEncrypt) + ", " + _dafny.String(data.AlgorithmSuiteId) + ", " + _dafny.String(data.EncryptedDataKeys) + ", " + _dafny.String(data.StoredEncryptionContext) + ", " + _dafny.String(data.EncryptionContext) + ", " + _dafny.String(data.SelectorContext) + ")" + } + default: + { + return "" + } + } +} + +func (_this ParsedHeader) Equals(other ParsedHeader) bool { + switch data1 := _this.Get_().(type) { + case ParsedHeader_ParsedHeader: + { + data2, ok := other.Get_().(ParsedHeader_ParsedHeader) + return ok && data1.AttributeActionsOnEncrypt.Equals(data2.AttributeActionsOnEncrypt) && data1.AlgorithmSuiteId.Equals(data2.AlgorithmSuiteId) && data1.EncryptedDataKeys.Equals(data2.EncryptedDataKeys) && data1.StoredEncryptionContext.Equals(data2.StoredEncryptionContext) && data1.EncryptionContext.Equals(data2.EncryptionContext) && data1.SelectorContext.Equals(data2.SelectorContext) + } + default: + { + return false // unexpected + } + } +} + +func (_this ParsedHeader) EqualsGeneric(other interface{}) bool { + typed, ok := other.(ParsedHeader) + return ok && _this.Equals(typed) +} + +func Type_ParsedHeader_() _dafny.TypeDescriptor { + return type_ParsedHeader_{} +} + +type type_ParsedHeader_ struct { +} + +func (_this type_ParsedHeader_) Default() interface{} { + return Companion_ParsedHeader_.Default() +} + +func (_this type_ParsedHeader_) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.ParsedHeader" +} +func (_this ParsedHeader) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = ParsedHeader{} + +// End of datatype ParsedHeader + +// Definition of datatype Error +type Error struct { + Data_Error_ +} + +func (_this Error) Get_() Data_Error_ { + return _this.Data_Error_ +} + +type Data_Error_ interface { + isError() +} + +type CompanionStruct_Error_ struct { +} + +var Companion_Error_ = CompanionStruct_Error_{} + +type Error_DynamoDbItemEncryptorException struct { + Message _dafny.Sequence +} + +func (Error_DynamoDbItemEncryptorException) isError() {} + +func (CompanionStruct_Error_) Create_DynamoDbItemEncryptorException_(Message _dafny.Sequence) Error { + return Error{Error_DynamoDbItemEncryptorException{Message}} +} + +func (_this Error) Is_DynamoDbItemEncryptorException() bool { + _, ok := _this.Get_().(Error_DynamoDbItemEncryptorException) + return ok +} + +type Error_AwsCryptographyDbEncryptionSdkDynamoDb struct { + AwsCryptographyDbEncryptionSdkDynamoDb m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Error +} + +func (Error_AwsCryptographyDbEncryptionSdkDynamoDb) isError() {} + +func (CompanionStruct_Error_) Create_AwsCryptographyDbEncryptionSdkDynamoDb_(AwsCryptographyDbEncryptionSdkDynamoDb m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Error) Error { + return Error{Error_AwsCryptographyDbEncryptionSdkDynamoDb{AwsCryptographyDbEncryptionSdkDynamoDb}} +} + +func (_this Error) Is_AwsCryptographyDbEncryptionSdkDynamoDb() bool { + _, ok := _this.Get_().(Error_AwsCryptographyDbEncryptionSdkDynamoDb) + return ok +} + +type Error_AwsCryptographyDbEncryptionSdkStructuredEncryption struct { + AwsCryptographyDbEncryptionSdkStructuredEncryption m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Error +} + +func (Error_AwsCryptographyDbEncryptionSdkStructuredEncryption) isError() {} + +func (CompanionStruct_Error_) Create_AwsCryptographyDbEncryptionSdkStructuredEncryption_(AwsCryptographyDbEncryptionSdkStructuredEncryption m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Error) Error { + return Error{Error_AwsCryptographyDbEncryptionSdkStructuredEncryption{AwsCryptographyDbEncryptionSdkStructuredEncryption}} +} + +func (_this Error) Is_AwsCryptographyDbEncryptionSdkStructuredEncryption() bool { + _, ok := _this.Get_().(Error_AwsCryptographyDbEncryptionSdkStructuredEncryption) + return ok +} + +type Error_AwsCryptographyMaterialProviders struct { + AwsCryptographyMaterialProviders m_AwsCryptographyMaterialProvidersTypes.Error +} + +func (Error_AwsCryptographyMaterialProviders) isError() {} + +func (CompanionStruct_Error_) Create_AwsCryptographyMaterialProviders_(AwsCryptographyMaterialProviders m_AwsCryptographyMaterialProvidersTypes.Error) Error { + return Error{Error_AwsCryptographyMaterialProviders{AwsCryptographyMaterialProviders}} +} + +func (_this Error) Is_AwsCryptographyMaterialProviders() bool { + _, ok := _this.Get_().(Error_AwsCryptographyMaterialProviders) + return ok +} + +type Error_AwsCryptographyPrimitives struct { + AwsCryptographyPrimitives m_AwsCryptographyPrimitivesTypes.Error +} + +func (Error_AwsCryptographyPrimitives) isError() {} + +func (CompanionStruct_Error_) Create_AwsCryptographyPrimitives_(AwsCryptographyPrimitives m_AwsCryptographyPrimitivesTypes.Error) Error { + return Error{Error_AwsCryptographyPrimitives{AwsCryptographyPrimitives}} +} + +func (_this Error) Is_AwsCryptographyPrimitives() bool { + _, ok := _this.Get_().(Error_AwsCryptographyPrimitives) + return ok +} + +type Error_ComAmazonawsDynamodb struct { + ComAmazonawsDynamodb m_ComAmazonawsDynamodbTypes.Error +} + +func (Error_ComAmazonawsDynamodb) isError() {} + +func (CompanionStruct_Error_) Create_ComAmazonawsDynamodb_(ComAmazonawsDynamodb m_ComAmazonawsDynamodbTypes.Error) Error { + return Error{Error_ComAmazonawsDynamodb{ComAmazonawsDynamodb}} +} + +func (_this Error) Is_ComAmazonawsDynamodb() bool { + _, ok := _this.Get_().(Error_ComAmazonawsDynamodb) + return ok +} + +type Error_CollectionOfErrors struct { + List _dafny.Sequence + Message _dafny.Sequence +} + +func (Error_CollectionOfErrors) isError() {} + +func (CompanionStruct_Error_) Create_CollectionOfErrors_(List _dafny.Sequence, Message _dafny.Sequence) Error { + return Error{Error_CollectionOfErrors{List, Message}} +} + +func (_this Error) Is_CollectionOfErrors() bool { + _, ok := _this.Get_().(Error_CollectionOfErrors) + return ok +} + +type Error_Opaque struct { + Obj interface{} +} + +func (Error_Opaque) isError() {} + +func (CompanionStruct_Error_) Create_Opaque_(Obj interface{}) Error { + return Error{Error_Opaque{Obj}} +} + +func (_this Error) Is_Opaque() bool { + _, ok := _this.Get_().(Error_Opaque) + return ok +} + +type Error_OpaqueWithText struct { + Obj interface{} + ObjMessage _dafny.Sequence +} + +func (Error_OpaqueWithText) isError() {} + +func (CompanionStruct_Error_) Create_OpaqueWithText_(Obj interface{}, ObjMessage _dafny.Sequence) Error { + return Error{Error_OpaqueWithText{Obj, ObjMessage}} +} + +func (_this Error) Is_OpaqueWithText() bool { + _, ok := _this.Get_().(Error_OpaqueWithText) + return ok +} + +func (CompanionStruct_Error_) Default() Error { + return Companion_Error_.Create_DynamoDbItemEncryptorException_(_dafny.EmptySeq.SetString()) +} + +func (_this Error) Dtor_message() _dafny.Sequence { + switch data := _this.Get_().(type) { + case Error_DynamoDbItemEncryptorException: + return data.Message + default: + return data.(Error_CollectionOfErrors).Message + } +} + +func (_this Error) Dtor_AwsCryptographyDbEncryptionSdkDynamoDb() m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Error { + return _this.Get_().(Error_AwsCryptographyDbEncryptionSdkDynamoDb).AwsCryptographyDbEncryptionSdkDynamoDb +} + +func (_this Error) Dtor_AwsCryptographyDbEncryptionSdkStructuredEncryption() m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Error { + return _this.Get_().(Error_AwsCryptographyDbEncryptionSdkStructuredEncryption).AwsCryptographyDbEncryptionSdkStructuredEncryption +} + +func (_this Error) Dtor_AwsCryptographyMaterialProviders() m_AwsCryptographyMaterialProvidersTypes.Error { + return _this.Get_().(Error_AwsCryptographyMaterialProviders).AwsCryptographyMaterialProviders +} + +func (_this Error) Dtor_AwsCryptographyPrimitives() m_AwsCryptographyPrimitivesTypes.Error { + return _this.Get_().(Error_AwsCryptographyPrimitives).AwsCryptographyPrimitives +} + +func (_this Error) Dtor_ComAmazonawsDynamodb() m_ComAmazonawsDynamodbTypes.Error { + return _this.Get_().(Error_ComAmazonawsDynamodb).ComAmazonawsDynamodb +} + +func (_this Error) Dtor_list() _dafny.Sequence { + return _this.Get_().(Error_CollectionOfErrors).List +} + +func (_this Error) Dtor_obj() interface{} { + switch data := _this.Get_().(type) { + case Error_Opaque: + return data.Obj + default: + return data.(Error_OpaqueWithText).Obj + } +} + +func (_this Error) Dtor_objMessage() _dafny.Sequence { + return _this.Get_().(Error_OpaqueWithText).ObjMessage +} + +func (_this Error) String() string { + switch data := _this.Get_().(type) { + case nil: + return "null" + case Error_DynamoDbItemEncryptorException: + { + return "AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Error.DynamoDbItemEncryptorException" + "(" + _dafny.String(data.Message) + ")" + } + case Error_AwsCryptographyDbEncryptionSdkDynamoDb: + { + return "AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Error.AwsCryptographyDbEncryptionSdkDynamoDb" + "(" + _dafny.String(data.AwsCryptographyDbEncryptionSdkDynamoDb) + ")" + } + case Error_AwsCryptographyDbEncryptionSdkStructuredEncryption: + { + return "AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Error.AwsCryptographyDbEncryptionSdkStructuredEncryption" + "(" + _dafny.String(data.AwsCryptographyDbEncryptionSdkStructuredEncryption) + ")" + } + case Error_AwsCryptographyMaterialProviders: + { + return "AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Error.AwsCryptographyMaterialProviders" + "(" + _dafny.String(data.AwsCryptographyMaterialProviders) + ")" + } + case Error_AwsCryptographyPrimitives: + { + return "AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Error.AwsCryptographyPrimitives" + "(" + _dafny.String(data.AwsCryptographyPrimitives) + ")" + } + case Error_ComAmazonawsDynamodb: + { + return "AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Error.ComAmazonawsDynamodb" + "(" + _dafny.String(data.ComAmazonawsDynamodb) + ")" + } + case Error_CollectionOfErrors: + { + return "AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Error.CollectionOfErrors" + "(" + _dafny.String(data.List) + ", " + _dafny.String(data.Message) + ")" + } + case Error_Opaque: + { + return "AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Error.Opaque" + "(" + _dafny.String(data.Obj) + ")" + } + case Error_OpaqueWithText: + { + return "AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Error.OpaqueWithText" + "(" + _dafny.String(data.Obj) + ", " + _dafny.String(data.ObjMessage) + ")" + } + default: + { + return "" + } + } +} + +func (_this Error) Equals(other Error) bool { + switch data1 := _this.Get_().(type) { + case Error_DynamoDbItemEncryptorException: + { + data2, ok := other.Get_().(Error_DynamoDbItemEncryptorException) + return ok && data1.Message.Equals(data2.Message) + } + case Error_AwsCryptographyDbEncryptionSdkDynamoDb: + { + data2, ok := other.Get_().(Error_AwsCryptographyDbEncryptionSdkDynamoDb) + return ok && data1.AwsCryptographyDbEncryptionSdkDynamoDb.Equals(data2.AwsCryptographyDbEncryptionSdkDynamoDb) + } + case Error_AwsCryptographyDbEncryptionSdkStructuredEncryption: + { + data2, ok := other.Get_().(Error_AwsCryptographyDbEncryptionSdkStructuredEncryption) + return ok && data1.AwsCryptographyDbEncryptionSdkStructuredEncryption.Equals(data2.AwsCryptographyDbEncryptionSdkStructuredEncryption) + } + case Error_AwsCryptographyMaterialProviders: + { + data2, ok := other.Get_().(Error_AwsCryptographyMaterialProviders) + return ok && data1.AwsCryptographyMaterialProviders.Equals(data2.AwsCryptographyMaterialProviders) + } + case Error_AwsCryptographyPrimitives: + { + data2, ok := other.Get_().(Error_AwsCryptographyPrimitives) + return ok && data1.AwsCryptographyPrimitives.Equals(data2.AwsCryptographyPrimitives) + } + case Error_ComAmazonawsDynamodb: + { + data2, ok := other.Get_().(Error_ComAmazonawsDynamodb) + return ok && data1.ComAmazonawsDynamodb.Equals(data2.ComAmazonawsDynamodb) + } + case Error_CollectionOfErrors: + { + data2, ok := other.Get_().(Error_CollectionOfErrors) + return ok && data1.List.Equals(data2.List) && data1.Message.Equals(data2.Message) + } + case Error_Opaque: + { + data2, ok := other.Get_().(Error_Opaque) + return ok && _dafny.AreEqual(data1.Obj, data2.Obj) + } + case Error_OpaqueWithText: + { + data2, ok := other.Get_().(Error_OpaqueWithText) + return ok && _dafny.AreEqual(data1.Obj, data2.Obj) && data1.ObjMessage.Equals(data2.ObjMessage) + } + default: + { + return false // unexpected + } + } +} + +func (_this Error) EqualsGeneric(other interface{}) bool { + typed, ok := other.(Error) + return ok && _this.Equals(typed) +} + +func Type_Error_() _dafny.TypeDescriptor { + return type_Error_{} +} + +type type_Error_ struct { +} + +func (_this type_Error_) Default() interface{} { + return Companion_Error_.Default() +} + +func (_this type_Error_) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Error" +} +func (_this Error) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = Error{} + +// End of datatype Error + +// Definition of class OpaqueError +type OpaqueError struct { +} + +func New_OpaqueError_() *OpaqueError { + _this := OpaqueError{} + + return &_this +} + +type CompanionStruct_OpaqueError_ struct { +} + +var Companion_OpaqueError_ = CompanionStruct_OpaqueError_{} + +func (*OpaqueError) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.OpaqueError" +} + +// End of class OpaqueError + +func Type_OpaqueError_() _dafny.TypeDescriptor { + return type_OpaqueError_{} +} + +type type_OpaqueError_ struct { +} + +func (_this type_OpaqueError_) Default() interface{} { + return Companion_Error_.Default() +} + +func (_this type_OpaqueError_) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.OpaqueError" +} +func (_this *CompanionStruct_OpaqueError_) Is_(__source Error) bool { + var _0_e Error = (__source) + _ = _0_e + return ((_0_e).Is_Opaque()) || ((_0_e).Is_OpaqueWithText()) +} + +// Definition of class DummySubsetType +type DummySubsetType struct { +} + +func New_DummySubsetType_() *DummySubsetType { + _this := DummySubsetType{} + + return &_this +} + +type CompanionStruct_DummySubsetType_ struct { +} + +var Companion_DummySubsetType_ = CompanionStruct_DummySubsetType_{} + +func (*DummySubsetType) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.DummySubsetType" +} +func (_this *CompanionStruct_DummySubsetType_) Witness() _dafny.Int { + return _dafny.One +} + +// End of class DummySubsetType + +func Type_DummySubsetType_() _dafny.TypeDescriptor { + return type_DummySubsetType_{} +} + +type type_DummySubsetType_ struct { +} + +func (_this type_DummySubsetType_) Default() interface{} { + return Companion_DummySubsetType_.Witness() +} + +func (_this type_DummySubsetType_) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.DummySubsetType" +} +func (_this *CompanionStruct_DummySubsetType_) Is_(__source _dafny.Int) bool { + var _1_x _dafny.Int = (__source) + _ = _1_x + return Companion_Default___.IsDummySubsetType(_1_x) +} diff --git a/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbOperations/AwsCryptographyDbEncryptionSdkDynamoDbOperations.go b/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbOperations/AwsCryptographyDbEncryptionSdkDynamoDbOperations.go new file mode 100644 index 000000000..3f1f410fe --- /dev/null +++ b/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbOperations/AwsCryptographyDbEncryptionSdkDynamoDbOperations.go @@ -0,0 +1,618 @@ +// Package AwsCryptographyDbEncryptionSdkDynamoDbOperations +// Dafny module AwsCryptographyDbEncryptionSdkDynamoDbOperations compiled into Go + +package AwsCryptographyDbEncryptionSdkDynamoDbOperations + +import ( + os "os" + + m_ComAmazonawsDynamodbTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/dynamodb/ComAmazonawsDynamodbTypes" + m_Com_Amazonaws_Dynamodb "github.com/aws/aws-cryptographic-material-providers-library/releases/go/dynamodb/Com_Amazonaws_Dynamodb" + m_ComAmazonawsKmsTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/kms/ComAmazonawsKmsTypes" + m_Com_Amazonaws_Kms "github.com/aws/aws-cryptographic-material-providers-library/releases/go/kms/Com_Amazonaws_Kms" + m_AlgorithmSuites "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AlgorithmSuites" + m_AwsArnParsing "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsArnParsing" + m_AwsCryptographyKeyStoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyKeyStoreOperations" + m_AwsCryptographyKeyStoreTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyKeyStoreTypes" + m_AwsCryptographyMaterialProvidersOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyMaterialProvidersOperations" + m_AwsCryptographyMaterialProvidersTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyMaterialProvidersTypes" + m_AwsKmsDiscoveryKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsDiscoveryKeyring" + m_AwsKmsEcdhKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsEcdhKeyring" + m_AwsKmsHierarchicalKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsHierarchicalKeyring" + m_AwsKmsKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsKeyring" + m_AwsKmsMrkAreUnique "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkAreUnique" + m_AwsKmsMrkDiscoveryKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkDiscoveryKeyring" + m_AwsKmsMrkKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkKeyring" + m_AwsKmsMrkMatchForDecrypt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkMatchForDecrypt" + m_AwsKmsRsaKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsRsaKeyring" + m_AwsKmsUtils "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsUtils" + m_CMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CMM" + m_CacheConstants "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CacheConstants" + m_CanonicalEncryptionContext "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CanonicalEncryptionContext" + m_Commitment "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Commitment" + m_Constants "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Constants" + m_CreateKeyStoreTable "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CreateKeyStoreTable" + m_CreateKeys "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CreateKeys" + m_DDBKeystoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DDBKeystoreOperations" + m_DefaultCMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DefaultCMM" + m_DefaultClientSupplier "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DefaultClientSupplier" + m_Defaults "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Defaults" + m_DiscoveryMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DiscoveryMultiKeyring" + m_EcdhEdkWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/EcdhEdkWrapping" + m_EdkWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/EdkWrapping" + m_ErrorMessages "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/ErrorMessages" + m_GetKeys "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/GetKeys" + m_IntermediateKeyWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/IntermediateKeyWrapping" + m_KMSKeystoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KMSKeystoreOperations" + m_KeyStore "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KeyStore" + m_KeyStoreErrorMessages "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KeyStoreErrorMessages" + m_Keyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Keyring" + m_KmsArn "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KmsArn" + m_LocalCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/LocalCMC" + m_MaterialProviders "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MaterialProviders" + m_MaterialWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MaterialWrapping" + m_Materials "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Materials" + m_MrkAwareDiscoveryMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MrkAwareDiscoveryMultiKeyring" + m_MrkAwareStrictMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MrkAwareStrictMultiKeyring" + m_MultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MultiKeyring" + m_RawAESKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawAESKeyring" + m_RawECDHKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawECDHKeyring" + m_RawRSAKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawRSAKeyring" + m_RequiredEncryptionContextCMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RequiredEncryptionContextCMM" + m_StormTracker "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StormTracker" + m_StormTrackingCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StormTrackingCMC" + m_StrictMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StrictMultiKeyring" + m_Structure "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Structure" + m_SynchronizedLocalCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/SynchronizedLocalCMC" + m_Utils "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Utils" + m_AtomicPrimitives "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AtomicPrimitives" + m_AwsCryptographyPrimitivesOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AwsCryptographyPrimitivesOperations" + m_AwsCryptographyPrimitivesTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AwsCryptographyPrimitivesTypes" + m_Digest "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/Digest" + m_HKDF "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/HKDF" + m_KdfCtr "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/KdfCtr" + m_Random "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/Random" + m_WrappedHKDF "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/WrappedHKDF" + m_WrappedHMAC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/WrappedHMAC" + m_Actions "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Actions" + m_Base64 "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Base64" + m_Base64Lemmas "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Base64Lemmas" + m_BoundedInts "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/BoundedInts" + m_DivInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivInternals" + m_DivInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivInternalsNonlinear" + m_DivMod "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivMod" + m_FileIO "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/FileIO" + m_FloatCompare "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/FloatCompare" + m_Functions "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Functions" + m_GeneralInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/GeneralInternals" + m_GetOpt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/GetOpt" + m_HexStrings "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/HexStrings" + m_Logarithm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Logarithm" + m__Math "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Math_" + m_ModInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/ModInternals" + m_ModInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/ModInternalsNonlinear" + m_Mul "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Mul" + m_MulInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/MulInternals" + m_MulInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/MulInternalsNonlinear" + m_Power "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Power" + m_Relations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Relations" + m_Seq "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Seq" + m_Seq_MergeSort "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Seq_MergeSort" + m_Sorting "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Sorting" + m_StandardLibrary "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary" + m_StandardLibraryInterop "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibraryInterop" + m_StandardLibrary_MemoryMath "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_MemoryMath" + m_StandardLibrary_Sequence "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_Sequence" + m_StandardLibrary_String "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_String" + m_StandardLibrary_UInt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_UInt" + m_Streams "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Streams" + m_UTF8 "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/UTF8" + m_UUID "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/UUID" + m_UnicodeStrings "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/UnicodeStrings" + m__Unicode "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Unicode_" + m_Utf16EncodingForm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Utf16EncodingForm" + m_Utf8EncodingForm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Utf8EncodingForm" + m_Wrappers "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Wrappers" + m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations" + m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes" + m_AwsCryptographyDbEncryptionSdkDynamoDbTypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbTypes" + m_AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations" + m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes" + m_Canonize "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/Canonize" + m_DynamoDbEncryptionBranchKeyIdSupplier "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbEncryptionBranchKeyIdSupplier" + m_DynamoDbEncryptionUtil "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbEncryptionUtil" + m_DynamoDbItemEncryptor "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbItemEncryptor" + m_DynamoDbItemEncryptorUtil "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbItemEncryptorUtil" + m_DynamoDbNormalizeNumber "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbNormalizeNumber" + m_DynamoToStruct "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoToStruct" + m_InternalLegacyOverride "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/InternalLegacyOverride" + m__Maps "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/Maps_" + m_OptimizedMergeSort "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/OptimizedMergeSort" + m_Sets "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/Sets" + m_SortCanon "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/SortCanon" + m_StructuredEncryption "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryption" + m_StructuredEncryptionCrypt "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionCrypt" + m_StructuredEncryptionFooter "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionFooter" + m_StructuredEncryptionHeader "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionHeader" + m_StructuredEncryptionPaths "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionPaths" + m_StructuredEncryptionUtil "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionUtil" + m__System "github.com/dafny-lang/DafnyRuntimeGo/v4/System_" + _dafny "github.com/dafny-lang/DafnyRuntimeGo/v4/dafny" +) + +var _ = os.Args +var _ _dafny.Dummy__ +var _ m__System.Dummy__ +var _ m_Wrappers.Dummy__ +var _ m_BoundedInts.Dummy__ +var _ m_StandardLibrary_UInt.Dummy__ +var _ m_StandardLibrary_MemoryMath.Dummy__ +var _ m_StandardLibrary_Sequence.Dummy__ +var _ m_StandardLibrary_String.Dummy__ +var _ m_StandardLibrary.Dummy__ +var _ m_AwsCryptographyPrimitivesTypes.Dummy__ +var _ m_Random.Dummy__ +var _ m_Digest.Dummy__ +var _ m_WrappedHMAC.Dummy__ +var _ m_HKDF.Dummy__ +var _ m_WrappedHKDF.Dummy__ +var _ m_KdfCtr.Dummy__ +var _ m_AwsCryptographyPrimitivesOperations.Dummy__ +var _ m_AtomicPrimitives.Dummy__ +var _ m_ComAmazonawsDynamodbTypes.Dummy__ +var _ m_ComAmazonawsKmsTypes.Dummy__ +var _ m_AwsCryptographyKeyStoreTypes.Dummy__ +var _ m_AwsCryptographyMaterialProvidersTypes.Dummy__ +var _ m_Base64.Dummy__ +var _ m_AlgorithmSuites.Dummy__ +var _ m_Materials.Dummy__ +var _ m_Keyring.Dummy__ +var _ m_Relations.Dummy__ +var _ m_Seq_MergeSort.Dummy__ +var _ m__Math.Dummy__ +var _ m_Seq.Dummy__ +var _ m_Actions.Dummy__ +var _ m_CanonicalEncryptionContext.Dummy__ +var _ m_MaterialWrapping.Dummy__ +var _ m_IntermediateKeyWrapping.Dummy__ +var _ m_EdkWrapping.Dummy__ +var _ m_ErrorMessages.Dummy__ +var _ m_RawAESKeyring.Dummy__ +var _ m_AwsArnParsing.Dummy__ +var _ m_Constants.Dummy__ +var _ m_EcdhEdkWrapping.Dummy__ +var _ m_RawECDHKeyring.Dummy__ +var _ m_RawRSAKeyring.Dummy__ +var _ m_AwsKmsMrkMatchForDecrypt.Dummy__ +var _ m_AwsKmsUtils.Dummy__ +var _ m_AwsKmsKeyring.Dummy__ +var _ m_AwsKmsDiscoveryKeyring.Dummy__ +var _ m_AwsKmsEcdhKeyring.Dummy__ +var _ m_FileIO.Dummy__ +var _ m_LocalCMC.Dummy__ +var _ m_SynchronizedLocalCMC.Dummy__ +var _ m_StormTracker.Dummy__ +var _ m_StormTrackingCMC.Dummy__ +var _ m_CacheConstants.Dummy__ +var _ m_AwsKmsHierarchicalKeyring.Dummy__ +var _ m_AwsKmsMrkDiscoveryKeyring.Dummy__ +var _ m_AwsKmsMrkKeyring.Dummy__ +var _ m_AwsKmsRsaKeyring.Dummy__ +var _ m_MultiKeyring.Dummy__ +var _ m_AwsKmsMrkAreUnique.Dummy__ +var _ m_StrictMultiKeyring.Dummy__ +var _ m_Com_Amazonaws_Kms.Dummy__ +var _ m_Com_Amazonaws_Dynamodb.Dummy__ +var _ m_DiscoveryMultiKeyring.Dummy__ +var _ m_MrkAwareDiscoveryMultiKeyring.Dummy__ +var _ m_MrkAwareStrictMultiKeyring.Dummy__ +var _ m_CMM.Dummy__ +var _ m_Defaults.Dummy__ +var _ m_Commitment.Dummy__ +var _ m_DefaultCMM.Dummy__ +var _ m_DefaultClientSupplier.Dummy__ +var _ m_Utils.Dummy__ +var _ m_RequiredEncryptionContextCMM.Dummy__ +var _ m_AwsCryptographyMaterialProvidersOperations.Dummy__ +var _ m_MaterialProviders.Dummy__ +var _ m_KeyStoreErrorMessages.Dummy__ +var _ m_KmsArn.Dummy__ +var _ m_Structure.Dummy__ +var _ m_KMSKeystoreOperations.Dummy__ +var _ m_DDBKeystoreOperations.Dummy__ +var _ m_CreateKeys.Dummy__ +var _ m_CreateKeyStoreTable.Dummy__ +var _ m_GetKeys.Dummy__ +var _ m_AwsCryptographyKeyStoreOperations.Dummy__ +var _ m_KeyStore.Dummy__ +var _ m__Unicode.Dummy__ +var _ m_Functions.Dummy__ +var _ m_Utf8EncodingForm.Dummy__ +var _ m_Utf16EncodingForm.Dummy__ +var _ m_UnicodeStrings.Dummy__ +var _ m_GeneralInternals.Dummy__ +var _ m_MulInternalsNonlinear.Dummy__ +var _ m_MulInternals.Dummy__ +var _ m_Mul.Dummy__ +var _ m_ModInternalsNonlinear.Dummy__ +var _ m_DivInternalsNonlinear.Dummy__ +var _ m_ModInternals.Dummy__ +var _ m_DivInternals.Dummy__ +var _ m_DivMod.Dummy__ +var _ m_Power.Dummy__ +var _ m_Logarithm.Dummy__ +var _ m_StandardLibraryInterop.Dummy__ +var _ m_Streams.Dummy__ +var _ m_Sorting.Dummy__ +var _ m_HexStrings.Dummy__ +var _ m_GetOpt.Dummy__ +var _ m_FloatCompare.Dummy__ +var _ m_Base64Lemmas.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Dummy__ +var _ m_StructuredEncryptionUtil.Dummy__ +var _ m_Sets.Dummy__ +var _ m_StructuredEncryptionPaths.Dummy__ +var _ m_StructuredEncryptionHeader.Dummy__ +var _ m_StructuredEncryptionFooter.Dummy__ +var _ m_OptimizedMergeSort.Dummy__ +var _ m_SortCanon.Dummy__ +var _ m_Canonize.Dummy__ +var _ m_StructuredEncryptionCrypt.Dummy__ +var _ m__Maps.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations.Dummy__ +var _ m_StructuredEncryption.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Dummy__ +var _ m_DynamoDbEncryptionUtil.Dummy__ +var _ m_DynamoDbNormalizeNumber.Dummy__ +var _ m_DynamoToStruct.Dummy__ +var _ m_DynamoDbItemEncryptorUtil.Dummy__ +var _ m_InternalLegacyOverride.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations.Dummy__ +var _ m_DynamoDbItemEncryptor.Dummy__ +var _ m_DynamoDbEncryptionBranchKeyIdSupplier.Dummy__ + +type Dummy__ struct{} + +// Definition of class Default__ +type Default__ struct { + dummy byte +} + +func New_Default___() *Default__ { + _this := Default__{} + + return &_this +} + +type CompanionStruct_Default___ struct { +} + +var Companion_Default___ = CompanionStruct_Default___{} + +func (_this *Default__) Equals(other *Default__) bool { + return _this == other +} + +func (_this *Default__) EqualsGeneric(x interface{}) bool { + other, ok := x.(*Default__) + return ok && _this.Equals(other) +} + +func (*Default__) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbOperations.Default__" +} +func (_this *Default__) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = &Default__{} + +func (_static *CompanionStruct_Default___) CreateDynamoDbEncryptionBranchKeyIdSupplier(config Config, input m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.CreateDynamoDbEncryptionBranchKeyIdSupplierInput) m_Wrappers.Result { + var output m_Wrappers.Result = m_Wrappers.Result{} + _ = output + var _0_supplier *m_DynamoDbEncryptionBranchKeyIdSupplier.DynamoDbEncryptionBranchKeyIdSupplier + _ = _0_supplier + var _nw0 *m_DynamoDbEncryptionBranchKeyIdSupplier.DynamoDbEncryptionBranchKeyIdSupplier = m_DynamoDbEncryptionBranchKeyIdSupplier.New_DynamoDbEncryptionBranchKeyIdSupplier_() + _ = _nw0 + _nw0.Ctor__((input).Dtor_ddbKeyBranchKeyIdSupplier()) + _0_supplier = _nw0 + output = m_Wrappers.Companion_Result_.Create_Success_(m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Companion_CreateDynamoDbEncryptionBranchKeyIdSupplierOutput_.Create_CreateDynamoDbEncryptionBranchKeyIdSupplierOutput_(_0_supplier)) + return output + return output +} +func (_static *CompanionStruct_Default___) GetEncryptedDataKeyDescription(config Config, input m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.GetEncryptedDataKeyDescriptionInput) m_Wrappers.Result { + var output m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Companion_GetEncryptedDataKeyDescriptionOutput_.Default()) + _ = output + var _0_header _dafny.Sequence = _dafny.EmptySeq + _ = _0_header + var _source0 m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.GetEncryptedDataKeyDescriptionUnion = (input).Dtor_input() + _ = _source0 + { + { + if _source0.Is_item() { + var _1_item _dafny.Map = _source0.Get_().(m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.GetEncryptedDataKeyDescriptionUnion_item).Item + _ = _1_item + { + var _2_valueOrError0 m_Wrappers.Outcome = m_Wrappers.Companion_Outcome_.Default() + _ = _2_valueOrError0 + _2_valueOrError0 = m_Wrappers.Companion_Default___.Need(((_1_item).Contains(_dafny.SeqOfString("aws_dbe_head"))) && (((_1_item).Get(_dafny.SeqOfString("aws_dbe_head")).(m_ComAmazonawsDynamodbTypes.AttributeValue)).Is_B()), m_DynamoDbEncryptionUtil.Companion_Default___.E(_dafny.SeqOfString("Header not found in the DynamoDB item."))) + if (_2_valueOrError0).IsFailure() { + output = (_2_valueOrError0).PropagateFailure() + return output + } + _0_header = ((_1_item).Get(_dafny.SeqOfString("aws_dbe_head")).(m_ComAmazonawsDynamodbTypes.AttributeValue)).Dtor_B() + } + goto Lmatch0 + } + } + { + var _3_headerItem _dafny.Sequence = _source0.Get_().(m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.GetEncryptedDataKeyDescriptionUnion_header).Header + _ = _3_headerItem + _0_header = _3_headerItem + } + goto Lmatch0 + } +Lmatch0: + var _4_valueOrError1 m_Wrappers.Result = m_Wrappers.Result{} + _ = _4_valueOrError1 + _4_valueOrError1 = (m_StructuredEncryptionHeader.Companion_Default___.PartialDeserialize(_0_header)).MapFailure(func(coer76 func(m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Error) m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Error) func(interface{}) interface{} { + return func(arg104 interface{}) interface{} { + return coer76(arg104.(m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Error)) + } + }(func(_5_e m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Error) m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Error { + return m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Companion_Error_.Create_AwsCryptographyDbEncryptionSdkStructuredEncryption_(_5_e) + })) + if (_4_valueOrError1).IsFailure() { + output = (_4_valueOrError1).PropagateFailure() + return output + } + var _6_deserializedHeader m_StructuredEncryptionHeader.PartialHeader + _ = _6_deserializedHeader + _6_deserializedHeader = (_4_valueOrError1).Extract().(m_StructuredEncryptionHeader.PartialHeader) + var _7_datakeys _dafny.Sequence + _ = _7_datakeys + _7_datakeys = (_6_deserializedHeader).Dtor_dataKeys() + var _8_list _dafny.Sequence + _ = _8_list + _8_list = _dafny.SeqOf() + var _hi0 uint64 = uint64((_7_datakeys).Cardinality()) + _ = _hi0 + for _9_i := uint64(0); _9_i < _hi0; _9_i++ { + var _10_valueOrError2 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(_dafny.EmptySeq.SetString()) + _ = _10_valueOrError2 + _10_valueOrError2 = (m_UTF8.Decode(((_7_datakeys).Select(uint32(_9_i)).(m_AwsCryptographyMaterialProvidersTypes.EncryptedDataKey)).Dtor_keyProviderId())).MapFailure(func(coer77 func(_dafny.Sequence) m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Error) func(interface{}) interface{} { + return func(arg105 interface{}) interface{} { + return coer77(arg105.(_dafny.Sequence)) + } + }(func(_11_e _dafny.Sequence) m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Error { + return m_DynamoDbEncryptionUtil.Companion_Default___.E(_11_e) + })) + if (_10_valueOrError2).IsFailure() { + output = (_10_valueOrError2).PropagateFailure() + return output + } + var _12_extractedKeyProviderId _dafny.Sequence + _ = _12_extractedKeyProviderId + _12_extractedKeyProviderId = (_10_valueOrError2).Extract().(_dafny.Sequence) + var _13_extractedKeyProviderIdInfo m_Wrappers.Option + _ = _13_extractedKeyProviderIdInfo + _13_extractedKeyProviderIdInfo = m_Wrappers.Companion_Option_.Create_None_() + var _14_expectedBranchKeyVersion m_Wrappers.Option + _ = _14_expectedBranchKeyVersion + _14_expectedBranchKeyVersion = m_Wrappers.Companion_Option_.Create_None_() + if _dafny.Companion_Sequence_.IsPrefixOf(_dafny.SeqOfString("aws-kms"), _12_extractedKeyProviderId) { + var _15_valueOrError3 m_Wrappers.Outcome = m_Wrappers.Companion_Outcome_.Default() + _ = _15_valueOrError3 + _15_valueOrError3 = m_Wrappers.Companion_Default___.Need((((_6_deserializedHeader).Dtor_flavor()) == (uint8(0))) || (((_6_deserializedHeader).Dtor_flavor()) == (uint8(1))), m_DynamoDbEncryptionUtil.Companion_Default___.E(_dafny.SeqOfString("Invalid format flavor."))) + if (_15_valueOrError3).IsFailure() { + output = (_15_valueOrError3).PropagateFailure() + return output + } + var _16_algorithmSuite m_AwsCryptographyMaterialProvidersTypes.AlgorithmSuiteInfo = m_AwsCryptographyMaterialProvidersTypes.AlgorithmSuiteInfo{} + _ = _16_algorithmSuite + if ((_6_deserializedHeader).Dtor_flavor()) == (uint8(0)) { + _16_algorithmSuite = m_AlgorithmSuites.Companion_Default___.DBE__ALG__AES__256__GCM__HKDF__SHA512__COMMIT__KEY__SYMSIG__HMAC__SHA384() + } else { + _16_algorithmSuite = m_AlgorithmSuites.Companion_Default___.DBE__ALG__AES__256__GCM__HKDF__SHA512__COMMIT__KEY__ECDSA__P384__SYMSIG__HMAC__SHA384() + } + var _17_valueOrError4 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(_dafny.EmptySeq.SetString()) + _ = _17_valueOrError4 + _17_valueOrError4 = (m_UTF8.Decode(((_7_datakeys).Select(uint32(_9_i)).(m_AwsCryptographyMaterialProvidersTypes.EncryptedDataKey)).Dtor_keyProviderInfo())).MapFailure(func(coer78 func(_dafny.Sequence) m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Error) func(interface{}) interface{} { + return func(arg106 interface{}) interface{} { + return coer78(arg106.(_dafny.Sequence)) + } + }(func(_18_e _dafny.Sequence) m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Error { + return m_DynamoDbEncryptionUtil.Companion_Default___.E(_18_e) + })) + if (_17_valueOrError4).IsFailure() { + output = (_17_valueOrError4).PropagateFailure() + return output + } + var _19_maybeKeyProviderIdInfo _dafny.Sequence + _ = _19_maybeKeyProviderIdInfo + _19_maybeKeyProviderIdInfo = (_17_valueOrError4).Extract().(_dafny.Sequence) + _13_extractedKeyProviderIdInfo = m_Wrappers.Companion_Option_.Create_Some_(_19_maybeKeyProviderIdInfo) + if _dafny.Companion_Sequence_.Equal(_12_extractedKeyProviderId, _dafny.SeqOfString("aws-kms-hierarchy")) { + var _20_valueOrError5 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(_dafny.EmptySeq) + _ = _20_valueOrError5 + _20_valueOrError5 = (m_EdkWrapping.Companion_Default___.GetProviderWrappedMaterial(((_7_datakeys).Select(uint32(_9_i)).(m_AwsCryptographyMaterialProvidersTypes.EncryptedDataKey)).Dtor_ciphertext(), _16_algorithmSuite)).MapFailure(func(coer79 func(m_AwsCryptographyMaterialProvidersTypes.Error) m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Error) func(interface{}) interface{} { + return func(arg107 interface{}) interface{} { + return coer79(arg107.(m_AwsCryptographyMaterialProvidersTypes.Error)) + } + }(func(_21_e m_AwsCryptographyMaterialProvidersTypes.Error) m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Error { + return m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Companion_Error_.Create_AwsCryptographyMaterialProviders_(_21_e) + })) + if (_20_valueOrError5).IsFailure() { + output = (_20_valueOrError5).PropagateFailure() + return output + } + var _22_providerWrappedMaterial _dafny.Sequence + _ = _22_providerWrappedMaterial + _22_providerWrappedMaterial = (_20_valueOrError5).Extract().(_dafny.Sequence) + var _23_EDK__CIPHERTEXT__BRANCH__KEY__VERSION__INDEX uint64 + _ = _23_EDK__CIPHERTEXT__BRANCH__KEY__VERSION__INDEX + _23_EDK__CIPHERTEXT__BRANCH__KEY__VERSION__INDEX = (Companion_Default___.SALT__LENGTH()) + (Companion_Default___.IV__LENGTH()) + var _24_EDK__CIPHERTEXT__VERSION__INDEX uint64 + _ = _24_EDK__CIPHERTEXT__VERSION__INDEX + _24_EDK__CIPHERTEXT__VERSION__INDEX = (_23_EDK__CIPHERTEXT__BRANCH__KEY__VERSION__INDEX) + (Companion_Default___.VERSION__LENGTH()) + var _25_valueOrError6 m_Wrappers.Outcome = m_Wrappers.Companion_Outcome_.Default() + _ = _25_valueOrError6 + _25_valueOrError6 = m_Wrappers.Companion_Default___.Need((_23_EDK__CIPHERTEXT__BRANCH__KEY__VERSION__INDEX) < (_24_EDK__CIPHERTEXT__VERSION__INDEX), m_DynamoDbEncryptionUtil.Companion_Default___.E(_dafny.SeqOfString("Wrong branch key version index."))) + if (_25_valueOrError6).IsFailure() { + output = (_25_valueOrError6).PropagateFailure() + return output + } + var _26_valueOrError7 m_Wrappers.Outcome = m_Wrappers.Companion_Outcome_.Default() + _ = _26_valueOrError7 + _26_valueOrError7 = m_Wrappers.Companion_Default___.Need((uint64((_22_providerWrappedMaterial).Cardinality())) >= (_24_EDK__CIPHERTEXT__VERSION__INDEX), m_DynamoDbEncryptionUtil.Companion_Default___.E(_dafny.SeqOfString("Incorrect ciphertext structure length."))) + if (_26_valueOrError7).IsFailure() { + output = (_26_valueOrError7).PropagateFailure() + return output + } + var _27_branchKeyVersionUuid _dafny.Sequence + _ = _27_branchKeyVersionUuid + _27_branchKeyVersionUuid = (_22_providerWrappedMaterial).Subsequence(uint32(_23_EDK__CIPHERTEXT__BRANCH__KEY__VERSION__INDEX), uint32(_24_EDK__CIPHERTEXT__VERSION__INDEX)) + var _28_valueOrError8 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(_dafny.EmptySeq.SetString()) + _ = _28_valueOrError8 + _28_valueOrError8 = (m_UUID.FromByteArray(_27_branchKeyVersionUuid)).MapFailure(func(coer80 func(_dafny.Sequence) m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Error) func(interface{}) interface{} { + return func(arg108 interface{}) interface{} { + return coer80(arg108.(_dafny.Sequence)) + } + }(func(_29_e _dafny.Sequence) m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Error { + return m_DynamoDbEncryptionUtil.Companion_Default___.E(_29_e) + })) + if (_28_valueOrError8).IsFailure() { + output = (_28_valueOrError8).PropagateFailure() + return output + } + var _30_maybeBranchKeyVersion _dafny.Sequence + _ = _30_maybeBranchKeyVersion + _30_maybeBranchKeyVersion = (_28_valueOrError8).Extract().(_dafny.Sequence) + _14_expectedBranchKeyVersion = m_Wrappers.Companion_Option_.Create_Some_(_30_maybeBranchKeyVersion) + } + } + var _31_singleDataKeyOutput m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.EncryptedDataKeyDescription + _ = _31_singleDataKeyOutput + _31_singleDataKeyOutput = m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Companion_EncryptedDataKeyDescription_.Create_EncryptedDataKeyDescription_(_12_extractedKeyProviderId, _13_extractedKeyProviderIdInfo, _13_extractedKeyProviderIdInfo, _14_expectedBranchKeyVersion) + _8_list = _dafny.Companion_Sequence_.Concatenate(_8_list, _dafny.SeqOf(_31_singleDataKeyOutput)) + } + output = m_Wrappers.Companion_Result_.Create_Success_(m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Companion_GetEncryptedDataKeyDescriptionOutput_.Create_GetEncryptedDataKeyDescriptionOutput_(_8_list)) + return output +} +func (_static *CompanionStruct_Default___) SALT__LENGTH() uint64 { + return uint64(16) +} +func (_static *CompanionStruct_Default___) IV__LENGTH() uint64 { + return uint64(12) +} +func (_static *CompanionStruct_Default___) VERSION__LENGTH() uint64 { + return uint64(16) +} + +// End of class Default__ + +// Definition of datatype Config +type Config struct { + Data_Config_ +} + +func (_this Config) Get_() Data_Config_ { + return _this.Data_Config_ +} + +type Data_Config_ interface { + isConfig() +} + +type CompanionStruct_Config_ struct { +} + +var Companion_Config_ = CompanionStruct_Config_{} + +type Config_Config struct { +} + +func (Config_Config) isConfig() {} + +func (CompanionStruct_Config_) Create_Config_() Config { + return Config{Config_Config{}} +} + +func (_this Config) Is_Config() bool { + _, ok := _this.Get_().(Config_Config) + return ok +} + +func (CompanionStruct_Config_) Default() Config { + return Companion_Config_.Create_Config_() +} + +func (_ CompanionStruct_Config_) AllSingletonConstructors() _dafny.Iterator { + i := -1 + return func() (interface{}, bool) { + i++ + switch i { + case 0: + return Companion_Config_.Create_Config_(), true + default: + return Config{}, false + } + } +} + +func (_this Config) String() string { + switch _this.Get_().(type) { + case nil: + return "null" + case Config_Config: + { + return "AwsCryptographyDbEncryptionSdkDynamoDbOperations.Config.Config" + } + default: + { + return "" + } + } +} + +func (_this Config) Equals(other Config) bool { + switch _this.Get_().(type) { + case Config_Config: + { + _, ok := other.Get_().(Config_Config) + return ok + } + default: + { + return false // unexpected + } + } +} + +func (_this Config) EqualsGeneric(other interface{}) bool { + typed, ok := other.(Config) + return ok && _this.Equals(typed) +} + +func Type_Config_() _dafny.TypeDescriptor { + return type_Config_{} +} + +type type_Config_ struct { +} + +func (_this type_Config_) Default() interface{} { + return Companion_Config_.Default() +} + +func (_this type_Config_) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbOperations.Config" +} +func (_this Config) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = Config{} + +// End of datatype Config diff --git a/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbTransformsOperations/AwsCryptographyDbEncryptionSdkDynamoDbTransformsOperations.go b/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbTransformsOperations/AwsCryptographyDbEncryptionSdkDynamoDbTransformsOperations.go new file mode 100644 index 000000000..e828bdbfe --- /dev/null +++ b/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbTransformsOperations/AwsCryptographyDbEncryptionSdkDynamoDbTransformsOperations.go @@ -0,0 +1,611 @@ +// Package AwsCryptographyDbEncryptionSdkDynamoDbTransformsOperations +// Dafny module AwsCryptographyDbEncryptionSdkDynamoDbTransformsOperations compiled into Go + +package AwsCryptographyDbEncryptionSdkDynamoDbTransformsOperations + +import ( + os "os" + + m_ComAmazonawsDynamodbTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/dynamodb/ComAmazonawsDynamodbTypes" + m_Com_Amazonaws_Dynamodb "github.com/aws/aws-cryptographic-material-providers-library/releases/go/dynamodb/Com_Amazonaws_Dynamodb" + m_ComAmazonawsKmsTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/kms/ComAmazonawsKmsTypes" + m_Com_Amazonaws_Kms "github.com/aws/aws-cryptographic-material-providers-library/releases/go/kms/Com_Amazonaws_Kms" + m_AlgorithmSuites "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AlgorithmSuites" + m_AwsArnParsing "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsArnParsing" + m_AwsCryptographyKeyStoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyKeyStoreOperations" + m_AwsCryptographyKeyStoreTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyKeyStoreTypes" + m_AwsCryptographyMaterialProvidersOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyMaterialProvidersOperations" + m_AwsCryptographyMaterialProvidersTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyMaterialProvidersTypes" + m_AwsKmsDiscoveryKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsDiscoveryKeyring" + m_AwsKmsEcdhKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsEcdhKeyring" + m_AwsKmsHierarchicalKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsHierarchicalKeyring" + m_AwsKmsKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsKeyring" + m_AwsKmsMrkAreUnique "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkAreUnique" + m_AwsKmsMrkDiscoveryKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkDiscoveryKeyring" + m_AwsKmsMrkKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkKeyring" + m_AwsKmsMrkMatchForDecrypt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkMatchForDecrypt" + m_AwsKmsRsaKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsRsaKeyring" + m_AwsKmsUtils "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsUtils" + m_CMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CMM" + m_CacheConstants "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CacheConstants" + m_CanonicalEncryptionContext "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CanonicalEncryptionContext" + m_Commitment "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Commitment" + m_Constants "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Constants" + m_CreateKeyStoreTable "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CreateKeyStoreTable" + m_CreateKeys "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CreateKeys" + m_DDBKeystoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DDBKeystoreOperations" + m_DefaultCMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DefaultCMM" + m_DefaultClientSupplier "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DefaultClientSupplier" + m_Defaults "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Defaults" + m_DiscoveryMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DiscoveryMultiKeyring" + m_EcdhEdkWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/EcdhEdkWrapping" + m_EdkWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/EdkWrapping" + m_ErrorMessages "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/ErrorMessages" + m_GetKeys "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/GetKeys" + m_IntermediateKeyWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/IntermediateKeyWrapping" + m_KMSKeystoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KMSKeystoreOperations" + m_KeyStore "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KeyStore" + m_KeyStoreErrorMessages "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KeyStoreErrorMessages" + m_Keyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Keyring" + m_KmsArn "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KmsArn" + m_LocalCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/LocalCMC" + m_MaterialProviders "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MaterialProviders" + m_MaterialWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MaterialWrapping" + m_Materials "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Materials" + m_MrkAwareDiscoveryMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MrkAwareDiscoveryMultiKeyring" + m_MrkAwareStrictMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MrkAwareStrictMultiKeyring" + m_MultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MultiKeyring" + m_RawAESKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawAESKeyring" + m_RawECDHKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawECDHKeyring" + m_RawRSAKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawRSAKeyring" + m_RequiredEncryptionContextCMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RequiredEncryptionContextCMM" + m_StormTracker "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StormTracker" + m_StormTrackingCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StormTrackingCMC" + m_StrictMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StrictMultiKeyring" + m_Structure "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Structure" + m_SynchronizedLocalCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/SynchronizedLocalCMC" + m_Utils "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Utils" + m_AtomicPrimitives "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AtomicPrimitives" + m_AwsCryptographyPrimitivesOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AwsCryptographyPrimitivesOperations" + m_AwsCryptographyPrimitivesTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AwsCryptographyPrimitivesTypes" + m_Digest "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/Digest" + m_HKDF "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/HKDF" + m_KdfCtr "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/KdfCtr" + m_Random "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/Random" + m_WrappedHKDF "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/WrappedHKDF" + m_WrappedHMAC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/WrappedHMAC" + m_Actions "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Actions" + m_Base64 "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Base64" + m_Base64Lemmas "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Base64Lemmas" + m_BoundedInts "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/BoundedInts" + m_DivInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivInternals" + m_DivInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivInternalsNonlinear" + m_DivMod "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivMod" + m_FileIO "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/FileIO" + m_FloatCompare "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/FloatCompare" + m_Functions "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Functions" + m_GeneralInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/GeneralInternals" + m_GetOpt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/GetOpt" + m_HexStrings "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/HexStrings" + m_Logarithm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Logarithm" + m__Math "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Math_" + m_ModInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/ModInternals" + m_ModInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/ModInternalsNonlinear" + m_Mul "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Mul" + m_MulInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/MulInternals" + m_MulInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/MulInternalsNonlinear" + m_Power "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Power" + m_Relations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Relations" + m_Seq "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Seq" + m_Seq_MergeSort "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Seq_MergeSort" + m_Sorting "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Sorting" + m_StandardLibrary "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary" + m_StandardLibraryInterop "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibraryInterop" + m_StandardLibrary_MemoryMath "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_MemoryMath" + m_StandardLibrary_Sequence "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_Sequence" + m_StandardLibrary_String "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_String" + m_StandardLibrary_UInt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_UInt" + m_Streams "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Streams" + m_UnicodeStrings "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/UnicodeStrings" + m__Unicode "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Unicode_" + m_Utf16EncodingForm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Utf16EncodingForm" + m_Utf8EncodingForm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Utf8EncodingForm" + m_Wrappers "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Wrappers" + m_AttributeResolver "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AttributeResolver" + m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations" + m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes" + m_AwsCryptographyDbEncryptionSdkDynamoDbOperations "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbOperations" + m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes" + m_AwsCryptographyDbEncryptionSdkDynamoDbTypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbTypes" + m_AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations" + m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes" + m_BaseBeacon "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/BaseBeacon" + m_BatchExecuteStatementTransform "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/BatchExecuteStatementTransform" + m_BatchGetItemTransform "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/BatchGetItemTransform" + m_BatchWriteItemTransform "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/BatchWriteItemTransform" + m_Canonize "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/Canonize" + m_CompoundBeacon "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/CompoundBeacon" + m_DdbMiddlewareConfig "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DdbMiddlewareConfig" + m_DdbStatement "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DdbStatement" + m_DdbVirtualFields "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DdbVirtualFields" + m_DeleteItemTransform "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DeleteItemTransform" + m_DynamoDBFilterExpr "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDBFilterExpr" + m_DynamoDBSupport "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDBSupport" + m_DynamoDbEncryption "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbEncryption" + m_DynamoDbEncryptionBranchKeyIdSupplier "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbEncryptionBranchKeyIdSupplier" + m_DynamoDbEncryptionUtil "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbEncryptionUtil" + m_DynamoDbItemEncryptor "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbItemEncryptor" + m_DynamoDbItemEncryptorUtil "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbItemEncryptorUtil" + m_DynamoDbMiddlewareSupport "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbMiddlewareSupport" + m_DynamoDbNormalizeNumber "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbNormalizeNumber" + m_DynamoDbUpdateExpr "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbUpdateExpr" + m_DynamoToStruct "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoToStruct" + m_ExecuteStatementTransform "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/ExecuteStatementTransform" + m_ExecuteTransactionTransform "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/ExecuteTransactionTransform" + m_GetItemTransform "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/GetItemTransform" + m_InternalLegacyOverride "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/InternalLegacyOverride" + m__Maps "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/Maps_" + m_OptimizedMergeSort "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/OptimizedMergeSort" + m_PutItemTransform "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/PutItemTransform" + m_QueryTransform "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/QueryTransform" + m_ScanTransform "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/ScanTransform" + m_SearchConfigToInfo "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/SearchConfigToInfo" + m_SearchableEncryptionInfo "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/SearchableEncryptionInfo" + m_Sets "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/Sets" + m_SortCanon "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/SortCanon" + m_StructuredEncryption "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryption" + m_StructuredEncryptionCrypt "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionCrypt" + m_StructuredEncryptionFooter "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionFooter" + m_StructuredEncryptionHeader "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionHeader" + m_StructuredEncryptionPaths "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionPaths" + m_StructuredEncryptionUtil "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionUtil" + m_TermLoc "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/TermLoc" + m_TransactGetItemsTransform "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/TransactGetItemsTransform" + m_TransactWriteItemsTransform "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/TransactWriteItemsTransform" + m_UpdateItemTransform "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/UpdateItemTransform" + m__System "github.com/dafny-lang/DafnyRuntimeGo/v4/System_" + _dafny "github.com/dafny-lang/DafnyRuntimeGo/v4/dafny" +) + +var _ = os.Args +var _ _dafny.Dummy__ +var _ m__System.Dummy__ +var _ m_Wrappers.Dummy__ +var _ m_BoundedInts.Dummy__ +var _ m_StandardLibrary_UInt.Dummy__ +var _ m_StandardLibrary_MemoryMath.Dummy__ +var _ m_StandardLibrary_Sequence.Dummy__ +var _ m_StandardLibrary_String.Dummy__ +var _ m_StandardLibrary.Dummy__ +var _ m_AwsCryptographyPrimitivesTypes.Dummy__ +var _ m_Random.Dummy__ +var _ m_Digest.Dummy__ +var _ m_WrappedHMAC.Dummy__ +var _ m_HKDF.Dummy__ +var _ m_WrappedHKDF.Dummy__ +var _ m_KdfCtr.Dummy__ +var _ m_AwsCryptographyPrimitivesOperations.Dummy__ +var _ m_AtomicPrimitives.Dummy__ +var _ m_ComAmazonawsDynamodbTypes.Dummy__ +var _ m_ComAmazonawsKmsTypes.Dummy__ +var _ m_AwsCryptographyKeyStoreTypes.Dummy__ +var _ m_AwsCryptographyMaterialProvidersTypes.Dummy__ +var _ m_Base64.Dummy__ +var _ m_AlgorithmSuites.Dummy__ +var _ m_Materials.Dummy__ +var _ m_Keyring.Dummy__ +var _ m_Relations.Dummy__ +var _ m_Seq_MergeSort.Dummy__ +var _ m__Math.Dummy__ +var _ m_Seq.Dummy__ +var _ m_Actions.Dummy__ +var _ m_CanonicalEncryptionContext.Dummy__ +var _ m_MaterialWrapping.Dummy__ +var _ m_IntermediateKeyWrapping.Dummy__ +var _ m_EdkWrapping.Dummy__ +var _ m_ErrorMessages.Dummy__ +var _ m_RawAESKeyring.Dummy__ +var _ m_AwsArnParsing.Dummy__ +var _ m_Constants.Dummy__ +var _ m_EcdhEdkWrapping.Dummy__ +var _ m_RawECDHKeyring.Dummy__ +var _ m_RawRSAKeyring.Dummy__ +var _ m_AwsKmsMrkMatchForDecrypt.Dummy__ +var _ m_AwsKmsUtils.Dummy__ +var _ m_AwsKmsKeyring.Dummy__ +var _ m_AwsKmsDiscoveryKeyring.Dummy__ +var _ m_AwsKmsEcdhKeyring.Dummy__ +var _ m_FileIO.Dummy__ +var _ m_LocalCMC.Dummy__ +var _ m_SynchronizedLocalCMC.Dummy__ +var _ m_StormTracker.Dummy__ +var _ m_StormTrackingCMC.Dummy__ +var _ m_CacheConstants.Dummy__ +var _ m_AwsKmsHierarchicalKeyring.Dummy__ +var _ m_AwsKmsMrkDiscoveryKeyring.Dummy__ +var _ m_AwsKmsMrkKeyring.Dummy__ +var _ m_AwsKmsRsaKeyring.Dummy__ +var _ m_MultiKeyring.Dummy__ +var _ m_AwsKmsMrkAreUnique.Dummy__ +var _ m_StrictMultiKeyring.Dummy__ +var _ m_Com_Amazonaws_Kms.Dummy__ +var _ m_Com_Amazonaws_Dynamodb.Dummy__ +var _ m_DiscoveryMultiKeyring.Dummy__ +var _ m_MrkAwareDiscoveryMultiKeyring.Dummy__ +var _ m_MrkAwareStrictMultiKeyring.Dummy__ +var _ m_CMM.Dummy__ +var _ m_Defaults.Dummy__ +var _ m_Commitment.Dummy__ +var _ m_DefaultCMM.Dummy__ +var _ m_DefaultClientSupplier.Dummy__ +var _ m_Utils.Dummy__ +var _ m_RequiredEncryptionContextCMM.Dummy__ +var _ m_AwsCryptographyMaterialProvidersOperations.Dummy__ +var _ m_MaterialProviders.Dummy__ +var _ m_KeyStoreErrorMessages.Dummy__ +var _ m_KmsArn.Dummy__ +var _ m_Structure.Dummy__ +var _ m_KMSKeystoreOperations.Dummy__ +var _ m_DDBKeystoreOperations.Dummy__ +var _ m_CreateKeys.Dummy__ +var _ m_CreateKeyStoreTable.Dummy__ +var _ m_GetKeys.Dummy__ +var _ m_AwsCryptographyKeyStoreOperations.Dummy__ +var _ m_KeyStore.Dummy__ +var _ m__Unicode.Dummy__ +var _ m_Functions.Dummy__ +var _ m_Utf8EncodingForm.Dummy__ +var _ m_Utf16EncodingForm.Dummy__ +var _ m_UnicodeStrings.Dummy__ +var _ m_GeneralInternals.Dummy__ +var _ m_MulInternalsNonlinear.Dummy__ +var _ m_MulInternals.Dummy__ +var _ m_Mul.Dummy__ +var _ m_ModInternalsNonlinear.Dummy__ +var _ m_DivInternalsNonlinear.Dummy__ +var _ m_ModInternals.Dummy__ +var _ m_DivInternals.Dummy__ +var _ m_DivMod.Dummy__ +var _ m_Power.Dummy__ +var _ m_Logarithm.Dummy__ +var _ m_StandardLibraryInterop.Dummy__ +var _ m_Streams.Dummy__ +var _ m_Sorting.Dummy__ +var _ m_HexStrings.Dummy__ +var _ m_GetOpt.Dummy__ +var _ m_FloatCompare.Dummy__ +var _ m_Base64Lemmas.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Dummy__ +var _ m_StructuredEncryptionUtil.Dummy__ +var _ m_Sets.Dummy__ +var _ m_StructuredEncryptionPaths.Dummy__ +var _ m_StructuredEncryptionHeader.Dummy__ +var _ m_StructuredEncryptionFooter.Dummy__ +var _ m_OptimizedMergeSort.Dummy__ +var _ m_SortCanon.Dummy__ +var _ m_Canonize.Dummy__ +var _ m_StructuredEncryptionCrypt.Dummy__ +var _ m__Maps.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations.Dummy__ +var _ m_StructuredEncryption.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Dummy__ +var _ m_DynamoDbEncryptionUtil.Dummy__ +var _ m_DynamoDbNormalizeNumber.Dummy__ +var _ m_DynamoToStruct.Dummy__ +var _ m_DynamoDbItemEncryptorUtil.Dummy__ +var _ m_InternalLegacyOverride.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations.Dummy__ +var _ m_DynamoDbItemEncryptor.Dummy__ +var _ m_DynamoDbEncryptionBranchKeyIdSupplier.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbOperations.Dummy__ +var _ m_DynamoDbEncryption.Dummy__ +var _ m_TermLoc.Dummy__ +var _ m_DdbVirtualFields.Dummy__ +var _ m_DynamoDbUpdateExpr.Dummy__ +var _ m_BaseBeacon.Dummy__ +var _ m_CompoundBeacon.Dummy__ +var _ m_SearchableEncryptionInfo.Dummy__ +var _ m_DynamoDBFilterExpr.Dummy__ +var _ m_DynamoDBSupport.Dummy__ +var _ m_SearchConfigToInfo.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Dummy__ +var _ m_DdbMiddlewareConfig.Dummy__ +var _ m_DdbStatement.Dummy__ +var _ m_DynamoDbMiddlewareSupport.Dummy__ +var _ m_PutItemTransform.Dummy__ +var _ m_GetItemTransform.Dummy__ +var _ m_UpdateItemTransform.Dummy__ +var _ m_BatchWriteItemTransform.Dummy__ +var _ m_TransactWriteItemsTransform.Dummy__ +var _ m_BatchGetItemTransform.Dummy__ +var _ m_ScanTransform.Dummy__ +var _ m_QueryTransform.Dummy__ +var _ m_TransactGetItemsTransform.Dummy__ +var _ m_DeleteItemTransform.Dummy__ +var _ m_ExecuteStatementTransform.Dummy__ +var _ m_BatchExecuteStatementTransform.Dummy__ +var _ m_ExecuteTransactionTransform.Dummy__ +var _ m_AttributeResolver.Dummy__ + +type Dummy__ struct{} + +// Definition of class Default__ +type Default__ struct { + dummy byte +} + +func New_Default___() *Default__ { + _this := Default__{} + + return &_this +} + +type CompanionStruct_Default___ struct { +} + +var Companion_Default___ = CompanionStruct_Default___{} + +func (_this *Default__) Equals(other *Default__) bool { + return _this == other +} + +func (_this *Default__) EqualsGeneric(x interface{}) bool { + other, ok := x.(*Default__) + return ok && _this.Equals(other) +} + +func (*Default__) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbTransformsOperations.Default__" +} +func (_this *Default__) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = &Default__{} + +func (_static *CompanionStruct_Default___) PutItemInputTransform(config m_DdbMiddlewareConfig.Config, input m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.PutItemInputTransformInput) m_Wrappers.Result { + var output m_Wrappers.Result = m_Wrappers.Result{} + _ = output + var _out0 m_Wrappers.Result + _ = _out0 + _out0 = m_PutItemTransform.Companion_Default___.Input(config, input) + output = _out0 + return output +} +func (_static *CompanionStruct_Default___) PutItemOutputTransform(config m_DdbMiddlewareConfig.Config, input m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.PutItemOutputTransformInput) m_Wrappers.Result { + var output m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_PutItemOutputTransformOutput_.Default()) + _ = output + var _out0 m_Wrappers.Result + _ = _out0 + _out0 = m_PutItemTransform.Companion_Default___.Output(config, input) + output = _out0 + return output +} +func (_static *CompanionStruct_Default___) GetItemInputTransform(config m_DdbMiddlewareConfig.Config, input m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.GetItemInputTransformInput) m_Wrappers.Result { + var output m_Wrappers.Result = m_Wrappers.Result{} + _ = output + var _out0 m_Wrappers.Result + _ = _out0 + _out0 = m_GetItemTransform.Companion_Default___.Input(config, input) + output = _out0 + return output +} +func (_static *CompanionStruct_Default___) GetItemOutputTransform(config m_DdbMiddlewareConfig.Config, input m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.GetItemOutputTransformInput) m_Wrappers.Result { + var output m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_GetItemOutputTransformOutput_.Default()) + _ = output + var _out0 m_Wrappers.Result + _ = _out0 + _out0 = m_GetItemTransform.Companion_Default___.Output(config, input) + output = _out0 + return output +} +func (_static *CompanionStruct_Default___) UpdateItemInputTransform(config m_DdbMiddlewareConfig.Config, input m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.UpdateItemInputTransformInput) m_Wrappers.Result { + var output m_Wrappers.Result = m_Wrappers.Result{} + _ = output + var _out0 m_Wrappers.Result + _ = _out0 + _out0 = m_UpdateItemTransform.Companion_Default___.Input(config, input) + output = _out0 + return output +} +func (_static *CompanionStruct_Default___) UpdateItemOutputTransform(config m_DdbMiddlewareConfig.Config, input m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.UpdateItemOutputTransformInput) m_Wrappers.Result { + var output m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_UpdateItemOutputTransformOutput_.Default()) + _ = output + var _out0 m_Wrappers.Result + _ = _out0 + _out0 = m_UpdateItemTransform.Companion_Default___.Output(config, input) + output = _out0 + return output +} +func (_static *CompanionStruct_Default___) BatchWriteItemInputTransform(config m_DdbMiddlewareConfig.Config, input m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.BatchWriteItemInputTransformInput) m_Wrappers.Result { + var output m_Wrappers.Result = m_Wrappers.Result{} + _ = output + var _out0 m_Wrappers.Result + _ = _out0 + _out0 = m_BatchWriteItemTransform.Companion_Default___.Input(config, input) + output = _out0 + return output +} +func (_static *CompanionStruct_Default___) BatchWriteItemOutputTransform(config m_DdbMiddlewareConfig.Config, input m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.BatchWriteItemOutputTransformInput) m_Wrappers.Result { + var output m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_BatchWriteItemOutputTransformOutput_.Default()) + _ = output + var _out0 m_Wrappers.Result + _ = _out0 + _out0 = m_BatchWriteItemTransform.Companion_Default___.Output(config, input) + output = _out0 + return output +} +func (_static *CompanionStruct_Default___) TransactWriteItemsInputTransform(config m_DdbMiddlewareConfig.Config, input m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.TransactWriteItemsInputTransformInput) m_Wrappers.Result { + var output m_Wrappers.Result = m_Wrappers.Result{} + _ = output + var _out0 m_Wrappers.Result + _ = _out0 + _out0 = m_TransactWriteItemsTransform.Companion_Default___.Input(config, input) + output = _out0 + return output +} +func (_static *CompanionStruct_Default___) TransactWriteItemsOutputTransform(config m_DdbMiddlewareConfig.Config, input m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.TransactWriteItemsOutputTransformInput) m_Wrappers.Result { + var output m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_TransactWriteItemsOutputTransformOutput_.Default()) + _ = output + var _out0 m_Wrappers.Result + _ = _out0 + _out0 = m_TransactWriteItemsTransform.Companion_Default___.Output(config, input) + output = _out0 + return output +} +func (_static *CompanionStruct_Default___) BatchGetItemInputTransform(config m_DdbMiddlewareConfig.Config, input m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.BatchGetItemInputTransformInput) m_Wrappers.Result { + var output m_Wrappers.Result = m_Wrappers.Result{} + _ = output + var _out0 m_Wrappers.Result + _ = _out0 + _out0 = m_BatchGetItemTransform.Companion_Default___.Input(config, input) + output = _out0 + return output +} +func (_static *CompanionStruct_Default___) BatchGetItemOutputTransform(config m_DdbMiddlewareConfig.Config, input m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.BatchGetItemOutputTransformInput) m_Wrappers.Result { + var output m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_BatchGetItemOutputTransformOutput_.Default()) + _ = output + var _out0 m_Wrappers.Result + _ = _out0 + _out0 = m_BatchGetItemTransform.Companion_Default___.Output(config, input) + output = _out0 + return output +} +func (_static *CompanionStruct_Default___) ScanInputTransform(config m_DdbMiddlewareConfig.Config, input m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.ScanInputTransformInput) m_Wrappers.Result { + var output m_Wrappers.Result = m_Wrappers.Result{} + _ = output + var _out0 m_Wrappers.Result + _ = _out0 + _out0 = m_ScanTransform.Companion_Default___.Input(config, input) + output = _out0 + return output +} +func (_static *CompanionStruct_Default___) ScanOutputTransform(config m_DdbMiddlewareConfig.Config, input m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.ScanOutputTransformInput) m_Wrappers.Result { + var output m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_ScanOutputTransformOutput_.Default()) + _ = output + var _out0 m_Wrappers.Result + _ = _out0 + _out0 = m_ScanTransform.Companion_Default___.Output(config, input) + output = _out0 + return output +} +func (_static *CompanionStruct_Default___) QueryInputTransform(config m_DdbMiddlewareConfig.Config, input m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.QueryInputTransformInput) m_Wrappers.Result { + var output m_Wrappers.Result = m_Wrappers.Result{} + _ = output + var _out0 m_Wrappers.Result + _ = _out0 + _out0 = m_QueryTransform.Companion_Default___.Input(config, input) + output = _out0 + return output +} +func (_static *CompanionStruct_Default___) QueryOutputTransform(config m_DdbMiddlewareConfig.Config, input m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.QueryOutputTransformInput) m_Wrappers.Result { + var output m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_QueryOutputTransformOutput_.Default()) + _ = output + var _out0 m_Wrappers.Result + _ = _out0 + _out0 = m_QueryTransform.Companion_Default___.Output(config, input) + output = _out0 + return output +} +func (_static *CompanionStruct_Default___) TransactGetItemsInputTransform(config m_DdbMiddlewareConfig.Config, input m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.TransactGetItemsInputTransformInput) m_Wrappers.Result { + var output m_Wrappers.Result = m_Wrappers.Result{} + _ = output + var _out0 m_Wrappers.Result + _ = _out0 + _out0 = m_TransactGetItemsTransform.Companion_Default___.Input(config, input) + output = _out0 + return output +} +func (_static *CompanionStruct_Default___) TransactGetItemsOutputTransform(config m_DdbMiddlewareConfig.Config, input m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.TransactGetItemsOutputTransformInput) m_Wrappers.Result { + var output m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_TransactGetItemsOutputTransformOutput_.Default()) + _ = output + var _out0 m_Wrappers.Result + _ = _out0 + _out0 = m_TransactGetItemsTransform.Companion_Default___.Output(config, input) + output = _out0 + return output +} +func (_static *CompanionStruct_Default___) DeleteItemInputTransform(config m_DdbMiddlewareConfig.Config, input m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.DeleteItemInputTransformInput) m_Wrappers.Result { + var output m_Wrappers.Result = m_Wrappers.Result{} + _ = output + var _out0 m_Wrappers.Result + _ = _out0 + _out0 = m_DeleteItemTransform.Companion_Default___.Input(config, input) + output = _out0 + return output +} +func (_static *CompanionStruct_Default___) DeleteItemOutputTransform(config m_DdbMiddlewareConfig.Config, input m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.DeleteItemOutputTransformInput) m_Wrappers.Result { + var output m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_DeleteItemOutputTransformOutput_.Default()) + _ = output + var _out0 m_Wrappers.Result + _ = _out0 + _out0 = m_DeleteItemTransform.Companion_Default___.Output(config, input) + output = _out0 + return output +} +func (_static *CompanionStruct_Default___) ExecuteStatementInputTransform(config m_DdbMiddlewareConfig.Config, input m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.ExecuteStatementInputTransformInput) m_Wrappers.Result { + var output m_Wrappers.Result = m_Wrappers.Result{} + _ = output + var _out0 m_Wrappers.Result + _ = _out0 + _out0 = m_ExecuteStatementTransform.Companion_Default___.Input(config, input) + output = _out0 + return output +} +func (_static *CompanionStruct_Default___) ExecuteStatementOutputTransform(config m_DdbMiddlewareConfig.Config, input m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.ExecuteStatementOutputTransformInput) m_Wrappers.Result { + var output m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_ExecuteStatementOutputTransformOutput_.Default()) + _ = output + var _out0 m_Wrappers.Result + _ = _out0 + _out0 = m_ExecuteStatementTransform.Companion_Default___.Output(config, input) + output = _out0 + return output +} +func (_static *CompanionStruct_Default___) BatchExecuteStatementInputTransform(config m_DdbMiddlewareConfig.Config, input m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.BatchExecuteStatementInputTransformInput) m_Wrappers.Result { + var output m_Wrappers.Result = m_Wrappers.Result{} + _ = output + var _out0 m_Wrappers.Result + _ = _out0 + _out0 = m_BatchExecuteStatementTransform.Companion_Default___.Input(config, input) + output = _out0 + return output +} +func (_static *CompanionStruct_Default___) BatchExecuteStatementOutputTransform(config m_DdbMiddlewareConfig.Config, input m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.BatchExecuteStatementOutputTransformInput) m_Wrappers.Result { + var output m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_BatchExecuteStatementOutputTransformOutput_.Default()) + _ = output + var _out0 m_Wrappers.Result + _ = _out0 + _out0 = m_BatchExecuteStatementTransform.Companion_Default___.Output(config, input) + output = _out0 + return output +} +func (_static *CompanionStruct_Default___) ExecuteTransactionInputTransform(config m_DdbMiddlewareConfig.Config, input m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.ExecuteTransactionInputTransformInput) m_Wrappers.Result { + var output m_Wrappers.Result = m_Wrappers.Result{} + _ = output + var _out0 m_Wrappers.Result + _ = _out0 + _out0 = m_ExecuteTransactionTransform.Companion_Default___.Input(config, input) + output = _out0 + return output +} +func (_static *CompanionStruct_Default___) ExecuteTransactionOutputTransform(config m_DdbMiddlewareConfig.Config, input m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.ExecuteTransactionOutputTransformInput) m_Wrappers.Result { + var output m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_ExecuteTransactionOutputTransformOutput_.Default()) + _ = output + var _out0 m_Wrappers.Result + _ = _out0 + _out0 = m_ExecuteTransactionTransform.Companion_Default___.Output(config, input) + output = _out0 + return output +} +func (_static *CompanionStruct_Default___) ResolveAttributes(config m_DdbMiddlewareConfig.Config, input m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.ResolveAttributesInput) m_Wrappers.Result { + var output m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_ResolveAttributesOutput_.Default()) + _ = output + var _out0 m_Wrappers.Result + _ = _out0 + _out0 = m_AttributeResolver.Companion_Default___.Resolve(config, input) + output = _out0 + return output +} + +// End of class Default__ diff --git a/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.go b/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.go new file mode 100644 index 000000000..58074a7d7 --- /dev/null +++ b/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.go @@ -0,0 +1,6313 @@ +// Package AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes +// Dafny module AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes compiled into Go + +package AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes + +import ( + os "os" + + m_ComAmazonawsDynamodbTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/dynamodb/ComAmazonawsDynamodbTypes" + m_Com_Amazonaws_Dynamodb "github.com/aws/aws-cryptographic-material-providers-library/releases/go/dynamodb/Com_Amazonaws_Dynamodb" + m_ComAmazonawsKmsTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/kms/ComAmazonawsKmsTypes" + m_Com_Amazonaws_Kms "github.com/aws/aws-cryptographic-material-providers-library/releases/go/kms/Com_Amazonaws_Kms" + m_AlgorithmSuites "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AlgorithmSuites" + m_AwsArnParsing "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsArnParsing" + m_AwsCryptographyKeyStoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyKeyStoreOperations" + m_AwsCryptographyKeyStoreTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyKeyStoreTypes" + m_AwsCryptographyMaterialProvidersOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyMaterialProvidersOperations" + m_AwsCryptographyMaterialProvidersTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyMaterialProvidersTypes" + m_AwsKmsDiscoveryKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsDiscoveryKeyring" + m_AwsKmsEcdhKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsEcdhKeyring" + m_AwsKmsHierarchicalKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsHierarchicalKeyring" + m_AwsKmsKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsKeyring" + m_AwsKmsMrkAreUnique "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkAreUnique" + m_AwsKmsMrkDiscoveryKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkDiscoveryKeyring" + m_AwsKmsMrkKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkKeyring" + m_AwsKmsMrkMatchForDecrypt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkMatchForDecrypt" + m_AwsKmsRsaKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsRsaKeyring" + m_AwsKmsUtils "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsUtils" + m_CMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CMM" + m_CacheConstants "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CacheConstants" + m_CanonicalEncryptionContext "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CanonicalEncryptionContext" + m_Commitment "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Commitment" + m_Constants "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Constants" + m_CreateKeyStoreTable "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CreateKeyStoreTable" + m_CreateKeys "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CreateKeys" + m_DDBKeystoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DDBKeystoreOperations" + m_DefaultCMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DefaultCMM" + m_DefaultClientSupplier "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DefaultClientSupplier" + m_Defaults "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Defaults" + m_DiscoveryMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DiscoveryMultiKeyring" + m_EcdhEdkWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/EcdhEdkWrapping" + m_EdkWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/EdkWrapping" + m_ErrorMessages "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/ErrorMessages" + m_GetKeys "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/GetKeys" + m_IntermediateKeyWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/IntermediateKeyWrapping" + m_KMSKeystoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KMSKeystoreOperations" + m_KeyStore "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KeyStore" + m_KeyStoreErrorMessages "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KeyStoreErrorMessages" + m_Keyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Keyring" + m_KmsArn "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KmsArn" + m_LocalCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/LocalCMC" + m_MaterialProviders "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MaterialProviders" + m_MaterialWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MaterialWrapping" + m_Materials "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Materials" + m_MrkAwareDiscoveryMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MrkAwareDiscoveryMultiKeyring" + m_MrkAwareStrictMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MrkAwareStrictMultiKeyring" + m_MultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MultiKeyring" + m_RawAESKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawAESKeyring" + m_RawECDHKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawECDHKeyring" + m_RawRSAKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawRSAKeyring" + m_RequiredEncryptionContextCMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RequiredEncryptionContextCMM" + m_StormTracker "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StormTracker" + m_StormTrackingCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StormTrackingCMC" + m_StrictMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StrictMultiKeyring" + m_Structure "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Structure" + m_SynchronizedLocalCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/SynchronizedLocalCMC" + m_Utils "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Utils" + m_AtomicPrimitives "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AtomicPrimitives" + m_AwsCryptographyPrimitivesOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AwsCryptographyPrimitivesOperations" + m_AwsCryptographyPrimitivesTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AwsCryptographyPrimitivesTypes" + m_Digest "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/Digest" + m_HKDF "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/HKDF" + m_KdfCtr "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/KdfCtr" + m_Random "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/Random" + m_WrappedHKDF "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/WrappedHKDF" + m_WrappedHMAC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/WrappedHMAC" + m_Actions "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Actions" + m_Base64 "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Base64" + m_Base64Lemmas "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Base64Lemmas" + m_BoundedInts "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/BoundedInts" + m_DivInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivInternals" + m_DivInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivInternalsNonlinear" + m_DivMod "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivMod" + m_FileIO "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/FileIO" + m_FloatCompare "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/FloatCompare" + m_Functions "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Functions" + m_GeneralInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/GeneralInternals" + m_GetOpt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/GetOpt" + m_HexStrings "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/HexStrings" + m_Logarithm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Logarithm" + m__Math "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Math_" + m_ModInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/ModInternals" + m_ModInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/ModInternalsNonlinear" + m_Mul "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Mul" + m_MulInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/MulInternals" + m_MulInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/MulInternalsNonlinear" + m_Power "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Power" + m_Relations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Relations" + m_Seq "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Seq" + m_Seq_MergeSort "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Seq_MergeSort" + m_Sorting "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Sorting" + m_StandardLibrary "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary" + m_StandardLibraryInterop "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibraryInterop" + m_StandardLibrary_MemoryMath "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_MemoryMath" + m_StandardLibrary_Sequence "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_Sequence" + m_StandardLibrary_String "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_String" + m_StandardLibrary_UInt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_UInt" + m_Streams "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Streams" + m_UnicodeStrings "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/UnicodeStrings" + m__Unicode "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Unicode_" + m_Utf16EncodingForm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Utf16EncodingForm" + m_Utf8EncodingForm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Utf8EncodingForm" + m_Wrappers "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Wrappers" + m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations" + m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes" + m_AwsCryptographyDbEncryptionSdkDynamoDbOperations "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbOperations" + m_AwsCryptographyDbEncryptionSdkDynamoDbTypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbTypes" + m_AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations" + m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes" + m_BaseBeacon "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/BaseBeacon" + m_Canonize "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/Canonize" + m_CompoundBeacon "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/CompoundBeacon" + m_DdbVirtualFields "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DdbVirtualFields" + m_DynamoDBFilterExpr "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDBFilterExpr" + m_DynamoDBSupport "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDBSupport" + m_DynamoDbEncryption "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbEncryption" + m_DynamoDbEncryptionBranchKeyIdSupplier "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbEncryptionBranchKeyIdSupplier" + m_DynamoDbEncryptionUtil "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbEncryptionUtil" + m_DynamoDbItemEncryptor "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbItemEncryptor" + m_DynamoDbItemEncryptorUtil "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbItemEncryptorUtil" + m_DynamoDbNormalizeNumber "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbNormalizeNumber" + m_DynamoDbUpdateExpr "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbUpdateExpr" + m_DynamoToStruct "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoToStruct" + m_InternalLegacyOverride "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/InternalLegacyOverride" + m__Maps "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/Maps_" + m_OptimizedMergeSort "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/OptimizedMergeSort" + m_SearchConfigToInfo "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/SearchConfigToInfo" + m_SearchableEncryptionInfo "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/SearchableEncryptionInfo" + m_Sets "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/Sets" + m_SortCanon "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/SortCanon" + m_StructuredEncryption "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryption" + m_StructuredEncryptionCrypt "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionCrypt" + m_StructuredEncryptionFooter "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionFooter" + m_StructuredEncryptionHeader "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionHeader" + m_StructuredEncryptionPaths "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionPaths" + m_StructuredEncryptionUtil "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionUtil" + m_TermLoc "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/TermLoc" + m__System "github.com/dafny-lang/DafnyRuntimeGo/v4/System_" + _dafny "github.com/dafny-lang/DafnyRuntimeGo/v4/dafny" +) + +var _ = os.Args +var _ _dafny.Dummy__ +var _ m__System.Dummy__ +var _ m_Wrappers.Dummy__ +var _ m_BoundedInts.Dummy__ +var _ m_StandardLibrary_UInt.Dummy__ +var _ m_StandardLibrary_MemoryMath.Dummy__ +var _ m_StandardLibrary_Sequence.Dummy__ +var _ m_StandardLibrary_String.Dummy__ +var _ m_StandardLibrary.Dummy__ +var _ m_AwsCryptographyPrimitivesTypes.Dummy__ +var _ m_Random.Dummy__ +var _ m_Digest.Dummy__ +var _ m_WrappedHMAC.Dummy__ +var _ m_HKDF.Dummy__ +var _ m_WrappedHKDF.Dummy__ +var _ m_KdfCtr.Dummy__ +var _ m_AwsCryptographyPrimitivesOperations.Dummy__ +var _ m_AtomicPrimitives.Dummy__ +var _ m_ComAmazonawsDynamodbTypes.Dummy__ +var _ m_ComAmazonawsKmsTypes.Dummy__ +var _ m_AwsCryptographyKeyStoreTypes.Dummy__ +var _ m_AwsCryptographyMaterialProvidersTypes.Dummy__ +var _ m_Base64.Dummy__ +var _ m_AlgorithmSuites.Dummy__ +var _ m_Materials.Dummy__ +var _ m_Keyring.Dummy__ +var _ m_Relations.Dummy__ +var _ m_Seq_MergeSort.Dummy__ +var _ m__Math.Dummy__ +var _ m_Seq.Dummy__ +var _ m_Actions.Dummy__ +var _ m_CanonicalEncryptionContext.Dummy__ +var _ m_MaterialWrapping.Dummy__ +var _ m_IntermediateKeyWrapping.Dummy__ +var _ m_EdkWrapping.Dummy__ +var _ m_ErrorMessages.Dummy__ +var _ m_RawAESKeyring.Dummy__ +var _ m_AwsArnParsing.Dummy__ +var _ m_Constants.Dummy__ +var _ m_EcdhEdkWrapping.Dummy__ +var _ m_RawECDHKeyring.Dummy__ +var _ m_RawRSAKeyring.Dummy__ +var _ m_AwsKmsMrkMatchForDecrypt.Dummy__ +var _ m_AwsKmsUtils.Dummy__ +var _ m_AwsKmsKeyring.Dummy__ +var _ m_AwsKmsDiscoveryKeyring.Dummy__ +var _ m_AwsKmsEcdhKeyring.Dummy__ +var _ m_FileIO.Dummy__ +var _ m_LocalCMC.Dummy__ +var _ m_SynchronizedLocalCMC.Dummy__ +var _ m_StormTracker.Dummy__ +var _ m_StormTrackingCMC.Dummy__ +var _ m_CacheConstants.Dummy__ +var _ m_AwsKmsHierarchicalKeyring.Dummy__ +var _ m_AwsKmsMrkDiscoveryKeyring.Dummy__ +var _ m_AwsKmsMrkKeyring.Dummy__ +var _ m_AwsKmsRsaKeyring.Dummy__ +var _ m_MultiKeyring.Dummy__ +var _ m_AwsKmsMrkAreUnique.Dummy__ +var _ m_StrictMultiKeyring.Dummy__ +var _ m_Com_Amazonaws_Kms.Dummy__ +var _ m_Com_Amazonaws_Dynamodb.Dummy__ +var _ m_DiscoveryMultiKeyring.Dummy__ +var _ m_MrkAwareDiscoveryMultiKeyring.Dummy__ +var _ m_MrkAwareStrictMultiKeyring.Dummy__ +var _ m_CMM.Dummy__ +var _ m_Defaults.Dummy__ +var _ m_Commitment.Dummy__ +var _ m_DefaultCMM.Dummy__ +var _ m_DefaultClientSupplier.Dummy__ +var _ m_Utils.Dummy__ +var _ m_RequiredEncryptionContextCMM.Dummy__ +var _ m_AwsCryptographyMaterialProvidersOperations.Dummy__ +var _ m_MaterialProviders.Dummy__ +var _ m_KeyStoreErrorMessages.Dummy__ +var _ m_KmsArn.Dummy__ +var _ m_Structure.Dummy__ +var _ m_KMSKeystoreOperations.Dummy__ +var _ m_DDBKeystoreOperations.Dummy__ +var _ m_CreateKeys.Dummy__ +var _ m_CreateKeyStoreTable.Dummy__ +var _ m_GetKeys.Dummy__ +var _ m_AwsCryptographyKeyStoreOperations.Dummy__ +var _ m_KeyStore.Dummy__ +var _ m__Unicode.Dummy__ +var _ m_Functions.Dummy__ +var _ m_Utf8EncodingForm.Dummy__ +var _ m_Utf16EncodingForm.Dummy__ +var _ m_UnicodeStrings.Dummy__ +var _ m_GeneralInternals.Dummy__ +var _ m_MulInternalsNonlinear.Dummy__ +var _ m_MulInternals.Dummy__ +var _ m_Mul.Dummy__ +var _ m_ModInternalsNonlinear.Dummy__ +var _ m_DivInternalsNonlinear.Dummy__ +var _ m_ModInternals.Dummy__ +var _ m_DivInternals.Dummy__ +var _ m_DivMod.Dummy__ +var _ m_Power.Dummy__ +var _ m_Logarithm.Dummy__ +var _ m_StandardLibraryInterop.Dummy__ +var _ m_Streams.Dummy__ +var _ m_Sorting.Dummy__ +var _ m_HexStrings.Dummy__ +var _ m_GetOpt.Dummy__ +var _ m_FloatCompare.Dummy__ +var _ m_Base64Lemmas.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Dummy__ +var _ m_StructuredEncryptionUtil.Dummy__ +var _ m_Sets.Dummy__ +var _ m_StructuredEncryptionPaths.Dummy__ +var _ m_StructuredEncryptionHeader.Dummy__ +var _ m_StructuredEncryptionFooter.Dummy__ +var _ m_OptimizedMergeSort.Dummy__ +var _ m_SortCanon.Dummy__ +var _ m_Canonize.Dummy__ +var _ m_StructuredEncryptionCrypt.Dummy__ +var _ m__Maps.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations.Dummy__ +var _ m_StructuredEncryption.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Dummy__ +var _ m_DynamoDbEncryptionUtil.Dummy__ +var _ m_DynamoDbNormalizeNumber.Dummy__ +var _ m_DynamoToStruct.Dummy__ +var _ m_DynamoDbItemEncryptorUtil.Dummy__ +var _ m_InternalLegacyOverride.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations.Dummy__ +var _ m_DynamoDbItemEncryptor.Dummy__ +var _ m_DynamoDbEncryptionBranchKeyIdSupplier.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbOperations.Dummy__ +var _ m_DynamoDbEncryption.Dummy__ +var _ m_TermLoc.Dummy__ +var _ m_DdbVirtualFields.Dummy__ +var _ m_DynamoDbUpdateExpr.Dummy__ +var _ m_BaseBeacon.Dummy__ +var _ m_CompoundBeacon.Dummy__ +var _ m_SearchableEncryptionInfo.Dummy__ +var _ m_DynamoDBFilterExpr.Dummy__ +var _ m_DynamoDBSupport.Dummy__ +var _ m_SearchConfigToInfo.Dummy__ + +type Dummy__ struct{} + +// Definition of class Default__ +type Default__ struct { + dummy byte +} + +func New_Default___() *Default__ { + _this := Default__{} + + return &_this +} + +type CompanionStruct_Default___ struct { +} + +var Companion_Default___ = CompanionStruct_Default___{} + +func (_this *Default__) Equals(other *Default__) bool { + return _this == other +} + +func (_this *Default__) EqualsGeneric(x interface{}) bool { + other, ok := x.(*Default__) + return ok && _this.Equals(other) +} + +func (*Default__) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Default__" +} +func (_this *Default__) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = &Default__{} + +func (_static *CompanionStruct_Default___) IsDummySubsetType(x _dafny.Int) bool { + return (x).Sign() == 1 +} + +// End of class Default__ + +// Definition of datatype DafnyCallEvent +type DafnyCallEvent struct { + Data_DafnyCallEvent_ +} + +func (_this DafnyCallEvent) Get_() Data_DafnyCallEvent_ { + return _this.Data_DafnyCallEvent_ +} + +type Data_DafnyCallEvent_ interface { + isDafnyCallEvent() +} + +type CompanionStruct_DafnyCallEvent_ struct { +} + +var Companion_DafnyCallEvent_ = CompanionStruct_DafnyCallEvent_{} + +type DafnyCallEvent_DafnyCallEvent struct { + Input interface{} + Output interface{} +} + +func (DafnyCallEvent_DafnyCallEvent) isDafnyCallEvent() {} + +func (CompanionStruct_DafnyCallEvent_) Create_DafnyCallEvent_(Input interface{}, Output interface{}) DafnyCallEvent { + return DafnyCallEvent{DafnyCallEvent_DafnyCallEvent{Input, Output}} +} + +func (_this DafnyCallEvent) Is_DafnyCallEvent() bool { + _, ok := _this.Get_().(DafnyCallEvent_DafnyCallEvent) + return ok +} + +func (CompanionStruct_DafnyCallEvent_) Default(_default_I interface{}, _default_O interface{}) DafnyCallEvent { + return Companion_DafnyCallEvent_.Create_DafnyCallEvent_(_default_I, _default_O) +} + +func (_this DafnyCallEvent) Dtor_input() interface{} { + return _this.Get_().(DafnyCallEvent_DafnyCallEvent).Input +} + +func (_this DafnyCallEvent) Dtor_output() interface{} { + return _this.Get_().(DafnyCallEvent_DafnyCallEvent).Output +} + +func (_this DafnyCallEvent) String() string { + switch data := _this.Get_().(type) { + case nil: + return "null" + case DafnyCallEvent_DafnyCallEvent: + { + return "AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.DafnyCallEvent.DafnyCallEvent" + "(" + _dafny.String(data.Input) + ", " + _dafny.String(data.Output) + ")" + } + default: + { + return "" + } + } +} + +func (_this DafnyCallEvent) Equals(other DafnyCallEvent) bool { + switch data1 := _this.Get_().(type) { + case DafnyCallEvent_DafnyCallEvent: + { + data2, ok := other.Get_().(DafnyCallEvent_DafnyCallEvent) + return ok && _dafny.AreEqual(data1.Input, data2.Input) && _dafny.AreEqual(data1.Output, data2.Output) + } + default: + { + return false // unexpected + } + } +} + +func (_this DafnyCallEvent) EqualsGeneric(other interface{}) bool { + typed, ok := other.(DafnyCallEvent) + return ok && _this.Equals(typed) +} + +func Type_DafnyCallEvent_(Type_I_ _dafny.TypeDescriptor, Type_O_ _dafny.TypeDescriptor) _dafny.TypeDescriptor { + return type_DafnyCallEvent_{Type_I_, Type_O_} +} + +type type_DafnyCallEvent_ struct { + Type_I_ _dafny.TypeDescriptor + Type_O_ _dafny.TypeDescriptor +} + +func (_this type_DafnyCallEvent_) Default() interface{} { + Type_I_ := _this.Type_I_ + _ = Type_I_ + Type_O_ := _this.Type_O_ + _ = Type_O_ + return Companion_DafnyCallEvent_.Default(Type_I_.Default(), Type_O_.Default()) +} + +func (_this type_DafnyCallEvent_) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.DafnyCallEvent" +} +func (_this DafnyCallEvent) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = DafnyCallEvent{} + +// End of datatype DafnyCallEvent + +// Definition of datatype BatchExecuteStatementInputTransformInput +type BatchExecuteStatementInputTransformInput struct { + Data_BatchExecuteStatementInputTransformInput_ +} + +func (_this BatchExecuteStatementInputTransformInput) Get_() Data_BatchExecuteStatementInputTransformInput_ { + return _this.Data_BatchExecuteStatementInputTransformInput_ +} + +type Data_BatchExecuteStatementInputTransformInput_ interface { + isBatchExecuteStatementInputTransformInput() +} + +type CompanionStruct_BatchExecuteStatementInputTransformInput_ struct { +} + +var Companion_BatchExecuteStatementInputTransformInput_ = CompanionStruct_BatchExecuteStatementInputTransformInput_{} + +type BatchExecuteStatementInputTransformInput_BatchExecuteStatementInputTransformInput struct { + SdkInput m_ComAmazonawsDynamodbTypes.BatchExecuteStatementInput +} + +func (BatchExecuteStatementInputTransformInput_BatchExecuteStatementInputTransformInput) isBatchExecuteStatementInputTransformInput() { +} + +func (CompanionStruct_BatchExecuteStatementInputTransformInput_) Create_BatchExecuteStatementInputTransformInput_(SdkInput m_ComAmazonawsDynamodbTypes.BatchExecuteStatementInput) BatchExecuteStatementInputTransformInput { + return BatchExecuteStatementInputTransformInput{BatchExecuteStatementInputTransformInput_BatchExecuteStatementInputTransformInput{SdkInput}} +} + +func (_this BatchExecuteStatementInputTransformInput) Is_BatchExecuteStatementInputTransformInput() bool { + _, ok := _this.Get_().(BatchExecuteStatementInputTransformInput_BatchExecuteStatementInputTransformInput) + return ok +} + +func (CompanionStruct_BatchExecuteStatementInputTransformInput_) Default() BatchExecuteStatementInputTransformInput { + return Companion_BatchExecuteStatementInputTransformInput_.Create_BatchExecuteStatementInputTransformInput_(m_ComAmazonawsDynamodbTypes.Companion_BatchExecuteStatementInput_.Default()) +} + +func (_this BatchExecuteStatementInputTransformInput) Dtor_sdkInput() m_ComAmazonawsDynamodbTypes.BatchExecuteStatementInput { + return _this.Get_().(BatchExecuteStatementInputTransformInput_BatchExecuteStatementInputTransformInput).SdkInput +} + +func (_this BatchExecuteStatementInputTransformInput) String() string { + switch data := _this.Get_().(type) { + case nil: + return "null" + case BatchExecuteStatementInputTransformInput_BatchExecuteStatementInputTransformInput: + { + return "AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.BatchExecuteStatementInputTransformInput.BatchExecuteStatementInputTransformInput" + "(" + _dafny.String(data.SdkInput) + ")" + } + default: + { + return "" + } + } +} + +func (_this BatchExecuteStatementInputTransformInput) Equals(other BatchExecuteStatementInputTransformInput) bool { + switch data1 := _this.Get_().(type) { + case BatchExecuteStatementInputTransformInput_BatchExecuteStatementInputTransformInput: + { + data2, ok := other.Get_().(BatchExecuteStatementInputTransformInput_BatchExecuteStatementInputTransformInput) + return ok && data1.SdkInput.Equals(data2.SdkInput) + } + default: + { + return false // unexpected + } + } +} + +func (_this BatchExecuteStatementInputTransformInput) EqualsGeneric(other interface{}) bool { + typed, ok := other.(BatchExecuteStatementInputTransformInput) + return ok && _this.Equals(typed) +} + +func Type_BatchExecuteStatementInputTransformInput_() _dafny.TypeDescriptor { + return type_BatchExecuteStatementInputTransformInput_{} +} + +type type_BatchExecuteStatementInputTransformInput_ struct { +} + +func (_this type_BatchExecuteStatementInputTransformInput_) Default() interface{} { + return Companion_BatchExecuteStatementInputTransformInput_.Default() +} + +func (_this type_BatchExecuteStatementInputTransformInput_) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.BatchExecuteStatementInputTransformInput" +} +func (_this BatchExecuteStatementInputTransformInput) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = BatchExecuteStatementInputTransformInput{} + +// End of datatype BatchExecuteStatementInputTransformInput + +// Definition of datatype BatchExecuteStatementInputTransformOutput +type BatchExecuteStatementInputTransformOutput struct { + Data_BatchExecuteStatementInputTransformOutput_ +} + +func (_this BatchExecuteStatementInputTransformOutput) Get_() Data_BatchExecuteStatementInputTransformOutput_ { + return _this.Data_BatchExecuteStatementInputTransformOutput_ +} + +type Data_BatchExecuteStatementInputTransformOutput_ interface { + isBatchExecuteStatementInputTransformOutput() +} + +type CompanionStruct_BatchExecuteStatementInputTransformOutput_ struct { +} + +var Companion_BatchExecuteStatementInputTransformOutput_ = CompanionStruct_BatchExecuteStatementInputTransformOutput_{} + +type BatchExecuteStatementInputTransformOutput_BatchExecuteStatementInputTransformOutput struct { + TransformedInput m_ComAmazonawsDynamodbTypes.BatchExecuteStatementInput +} + +func (BatchExecuteStatementInputTransformOutput_BatchExecuteStatementInputTransformOutput) isBatchExecuteStatementInputTransformOutput() { +} + +func (CompanionStruct_BatchExecuteStatementInputTransformOutput_) Create_BatchExecuteStatementInputTransformOutput_(TransformedInput m_ComAmazonawsDynamodbTypes.BatchExecuteStatementInput) BatchExecuteStatementInputTransformOutput { + return BatchExecuteStatementInputTransformOutput{BatchExecuteStatementInputTransformOutput_BatchExecuteStatementInputTransformOutput{TransformedInput}} +} + +func (_this BatchExecuteStatementInputTransformOutput) Is_BatchExecuteStatementInputTransformOutput() bool { + _, ok := _this.Get_().(BatchExecuteStatementInputTransformOutput_BatchExecuteStatementInputTransformOutput) + return ok +} + +func (CompanionStruct_BatchExecuteStatementInputTransformOutput_) Default() BatchExecuteStatementInputTransformOutput { + return Companion_BatchExecuteStatementInputTransformOutput_.Create_BatchExecuteStatementInputTransformOutput_(m_ComAmazonawsDynamodbTypes.Companion_BatchExecuteStatementInput_.Default()) +} + +func (_this BatchExecuteStatementInputTransformOutput) Dtor_transformedInput() m_ComAmazonawsDynamodbTypes.BatchExecuteStatementInput { + return _this.Get_().(BatchExecuteStatementInputTransformOutput_BatchExecuteStatementInputTransformOutput).TransformedInput +} + +func (_this BatchExecuteStatementInputTransformOutput) String() string { + switch data := _this.Get_().(type) { + case nil: + return "null" + case BatchExecuteStatementInputTransformOutput_BatchExecuteStatementInputTransformOutput: + { + return "AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.BatchExecuteStatementInputTransformOutput.BatchExecuteStatementInputTransformOutput" + "(" + _dafny.String(data.TransformedInput) + ")" + } + default: + { + return "" + } + } +} + +func (_this BatchExecuteStatementInputTransformOutput) Equals(other BatchExecuteStatementInputTransformOutput) bool { + switch data1 := _this.Get_().(type) { + case BatchExecuteStatementInputTransformOutput_BatchExecuteStatementInputTransformOutput: + { + data2, ok := other.Get_().(BatchExecuteStatementInputTransformOutput_BatchExecuteStatementInputTransformOutput) + return ok && data1.TransformedInput.Equals(data2.TransformedInput) + } + default: + { + return false // unexpected + } + } +} + +func (_this BatchExecuteStatementInputTransformOutput) EqualsGeneric(other interface{}) bool { + typed, ok := other.(BatchExecuteStatementInputTransformOutput) + return ok && _this.Equals(typed) +} + +func Type_BatchExecuteStatementInputTransformOutput_() _dafny.TypeDescriptor { + return type_BatchExecuteStatementInputTransformOutput_{} +} + +type type_BatchExecuteStatementInputTransformOutput_ struct { +} + +func (_this type_BatchExecuteStatementInputTransformOutput_) Default() interface{} { + return Companion_BatchExecuteStatementInputTransformOutput_.Default() +} + +func (_this type_BatchExecuteStatementInputTransformOutput_) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.BatchExecuteStatementInputTransformOutput" +} +func (_this BatchExecuteStatementInputTransformOutput) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = BatchExecuteStatementInputTransformOutput{} + +// End of datatype BatchExecuteStatementInputTransformOutput + +// Definition of datatype BatchExecuteStatementOutputTransformInput +type BatchExecuteStatementOutputTransformInput struct { + Data_BatchExecuteStatementOutputTransformInput_ +} + +func (_this BatchExecuteStatementOutputTransformInput) Get_() Data_BatchExecuteStatementOutputTransformInput_ { + return _this.Data_BatchExecuteStatementOutputTransformInput_ +} + +type Data_BatchExecuteStatementOutputTransformInput_ interface { + isBatchExecuteStatementOutputTransformInput() +} + +type CompanionStruct_BatchExecuteStatementOutputTransformInput_ struct { +} + +var Companion_BatchExecuteStatementOutputTransformInput_ = CompanionStruct_BatchExecuteStatementOutputTransformInput_{} + +type BatchExecuteStatementOutputTransformInput_BatchExecuteStatementOutputTransformInput struct { + SdkOutput m_ComAmazonawsDynamodbTypes.BatchExecuteStatementOutput + OriginalInput m_ComAmazonawsDynamodbTypes.BatchExecuteStatementInput +} + +func (BatchExecuteStatementOutputTransformInput_BatchExecuteStatementOutputTransformInput) isBatchExecuteStatementOutputTransformInput() { +} + +func (CompanionStruct_BatchExecuteStatementOutputTransformInput_) Create_BatchExecuteStatementOutputTransformInput_(SdkOutput m_ComAmazonawsDynamodbTypes.BatchExecuteStatementOutput, OriginalInput m_ComAmazonawsDynamodbTypes.BatchExecuteStatementInput) BatchExecuteStatementOutputTransformInput { + return BatchExecuteStatementOutputTransformInput{BatchExecuteStatementOutputTransformInput_BatchExecuteStatementOutputTransformInput{SdkOutput, OriginalInput}} +} + +func (_this BatchExecuteStatementOutputTransformInput) Is_BatchExecuteStatementOutputTransformInput() bool { + _, ok := _this.Get_().(BatchExecuteStatementOutputTransformInput_BatchExecuteStatementOutputTransformInput) + return ok +} + +func (CompanionStruct_BatchExecuteStatementOutputTransformInput_) Default() BatchExecuteStatementOutputTransformInput { + return Companion_BatchExecuteStatementOutputTransformInput_.Create_BatchExecuteStatementOutputTransformInput_(m_ComAmazonawsDynamodbTypes.Companion_BatchExecuteStatementOutput_.Default(), m_ComAmazonawsDynamodbTypes.Companion_BatchExecuteStatementInput_.Default()) +} + +func (_this BatchExecuteStatementOutputTransformInput) Dtor_sdkOutput() m_ComAmazonawsDynamodbTypes.BatchExecuteStatementOutput { + return _this.Get_().(BatchExecuteStatementOutputTransformInput_BatchExecuteStatementOutputTransformInput).SdkOutput +} + +func (_this BatchExecuteStatementOutputTransformInput) Dtor_originalInput() m_ComAmazonawsDynamodbTypes.BatchExecuteStatementInput { + return _this.Get_().(BatchExecuteStatementOutputTransformInput_BatchExecuteStatementOutputTransformInput).OriginalInput +} + +func (_this BatchExecuteStatementOutputTransformInput) String() string { + switch data := _this.Get_().(type) { + case nil: + return "null" + case BatchExecuteStatementOutputTransformInput_BatchExecuteStatementOutputTransformInput: + { + return "AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.BatchExecuteStatementOutputTransformInput.BatchExecuteStatementOutputTransformInput" + "(" + _dafny.String(data.SdkOutput) + ", " + _dafny.String(data.OriginalInput) + ")" + } + default: + { + return "" + } + } +} + +func (_this BatchExecuteStatementOutputTransformInput) Equals(other BatchExecuteStatementOutputTransformInput) bool { + switch data1 := _this.Get_().(type) { + case BatchExecuteStatementOutputTransformInput_BatchExecuteStatementOutputTransformInput: + { + data2, ok := other.Get_().(BatchExecuteStatementOutputTransformInput_BatchExecuteStatementOutputTransformInput) + return ok && data1.SdkOutput.Equals(data2.SdkOutput) && data1.OriginalInput.Equals(data2.OriginalInput) + } + default: + { + return false // unexpected + } + } +} + +func (_this BatchExecuteStatementOutputTransformInput) EqualsGeneric(other interface{}) bool { + typed, ok := other.(BatchExecuteStatementOutputTransformInput) + return ok && _this.Equals(typed) +} + +func Type_BatchExecuteStatementOutputTransformInput_() _dafny.TypeDescriptor { + return type_BatchExecuteStatementOutputTransformInput_{} +} + +type type_BatchExecuteStatementOutputTransformInput_ struct { +} + +func (_this type_BatchExecuteStatementOutputTransformInput_) Default() interface{} { + return Companion_BatchExecuteStatementOutputTransformInput_.Default() +} + +func (_this type_BatchExecuteStatementOutputTransformInput_) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.BatchExecuteStatementOutputTransformInput" +} +func (_this BatchExecuteStatementOutputTransformInput) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = BatchExecuteStatementOutputTransformInput{} + +// End of datatype BatchExecuteStatementOutputTransformInput + +// Definition of datatype BatchExecuteStatementOutputTransformOutput +type BatchExecuteStatementOutputTransformOutput struct { + Data_BatchExecuteStatementOutputTransformOutput_ +} + +func (_this BatchExecuteStatementOutputTransformOutput) Get_() Data_BatchExecuteStatementOutputTransformOutput_ { + return _this.Data_BatchExecuteStatementOutputTransformOutput_ +} + +type Data_BatchExecuteStatementOutputTransformOutput_ interface { + isBatchExecuteStatementOutputTransformOutput() +} + +type CompanionStruct_BatchExecuteStatementOutputTransformOutput_ struct { +} + +var Companion_BatchExecuteStatementOutputTransformOutput_ = CompanionStruct_BatchExecuteStatementOutputTransformOutput_{} + +type BatchExecuteStatementOutputTransformOutput_BatchExecuteStatementOutputTransformOutput struct { + TransformedOutput m_ComAmazonawsDynamodbTypes.BatchExecuteStatementOutput +} + +func (BatchExecuteStatementOutputTransformOutput_BatchExecuteStatementOutputTransformOutput) isBatchExecuteStatementOutputTransformOutput() { +} + +func (CompanionStruct_BatchExecuteStatementOutputTransformOutput_) Create_BatchExecuteStatementOutputTransformOutput_(TransformedOutput m_ComAmazonawsDynamodbTypes.BatchExecuteStatementOutput) BatchExecuteStatementOutputTransformOutput { + return BatchExecuteStatementOutputTransformOutput{BatchExecuteStatementOutputTransformOutput_BatchExecuteStatementOutputTransformOutput{TransformedOutput}} +} + +func (_this BatchExecuteStatementOutputTransformOutput) Is_BatchExecuteStatementOutputTransformOutput() bool { + _, ok := _this.Get_().(BatchExecuteStatementOutputTransformOutput_BatchExecuteStatementOutputTransformOutput) + return ok +} + +func (CompanionStruct_BatchExecuteStatementOutputTransformOutput_) Default() BatchExecuteStatementOutputTransformOutput { + return Companion_BatchExecuteStatementOutputTransformOutput_.Create_BatchExecuteStatementOutputTransformOutput_(m_ComAmazonawsDynamodbTypes.Companion_BatchExecuteStatementOutput_.Default()) +} + +func (_this BatchExecuteStatementOutputTransformOutput) Dtor_transformedOutput() m_ComAmazonawsDynamodbTypes.BatchExecuteStatementOutput { + return _this.Get_().(BatchExecuteStatementOutputTransformOutput_BatchExecuteStatementOutputTransformOutput).TransformedOutput +} + +func (_this BatchExecuteStatementOutputTransformOutput) String() string { + switch data := _this.Get_().(type) { + case nil: + return "null" + case BatchExecuteStatementOutputTransformOutput_BatchExecuteStatementOutputTransformOutput: + { + return "AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.BatchExecuteStatementOutputTransformOutput.BatchExecuteStatementOutputTransformOutput" + "(" + _dafny.String(data.TransformedOutput) + ")" + } + default: + { + return "" + } + } +} + +func (_this BatchExecuteStatementOutputTransformOutput) Equals(other BatchExecuteStatementOutputTransformOutput) bool { + switch data1 := _this.Get_().(type) { + case BatchExecuteStatementOutputTransformOutput_BatchExecuteStatementOutputTransformOutput: + { + data2, ok := other.Get_().(BatchExecuteStatementOutputTransformOutput_BatchExecuteStatementOutputTransformOutput) + return ok && data1.TransformedOutput.Equals(data2.TransformedOutput) + } + default: + { + return false // unexpected + } + } +} + +func (_this BatchExecuteStatementOutputTransformOutput) EqualsGeneric(other interface{}) bool { + typed, ok := other.(BatchExecuteStatementOutputTransformOutput) + return ok && _this.Equals(typed) +} + +func Type_BatchExecuteStatementOutputTransformOutput_() _dafny.TypeDescriptor { + return type_BatchExecuteStatementOutputTransformOutput_{} +} + +type type_BatchExecuteStatementOutputTransformOutput_ struct { +} + +func (_this type_BatchExecuteStatementOutputTransformOutput_) Default() interface{} { + return Companion_BatchExecuteStatementOutputTransformOutput_.Default() +} + +func (_this type_BatchExecuteStatementOutputTransformOutput_) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.BatchExecuteStatementOutputTransformOutput" +} +func (_this BatchExecuteStatementOutputTransformOutput) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = BatchExecuteStatementOutputTransformOutput{} + +// End of datatype BatchExecuteStatementOutputTransformOutput + +// Definition of datatype BatchGetItemInputTransformInput +type BatchGetItemInputTransformInput struct { + Data_BatchGetItemInputTransformInput_ +} + +func (_this BatchGetItemInputTransformInput) Get_() Data_BatchGetItemInputTransformInput_ { + return _this.Data_BatchGetItemInputTransformInput_ +} + +type Data_BatchGetItemInputTransformInput_ interface { + isBatchGetItemInputTransformInput() +} + +type CompanionStruct_BatchGetItemInputTransformInput_ struct { +} + +var Companion_BatchGetItemInputTransformInput_ = CompanionStruct_BatchGetItemInputTransformInput_{} + +type BatchGetItemInputTransformInput_BatchGetItemInputTransformInput struct { + SdkInput m_ComAmazonawsDynamodbTypes.BatchGetItemInput +} + +func (BatchGetItemInputTransformInput_BatchGetItemInputTransformInput) isBatchGetItemInputTransformInput() { +} + +func (CompanionStruct_BatchGetItemInputTransformInput_) Create_BatchGetItemInputTransformInput_(SdkInput m_ComAmazonawsDynamodbTypes.BatchGetItemInput) BatchGetItemInputTransformInput { + return BatchGetItemInputTransformInput{BatchGetItemInputTransformInput_BatchGetItemInputTransformInput{SdkInput}} +} + +func (_this BatchGetItemInputTransformInput) Is_BatchGetItemInputTransformInput() bool { + _, ok := _this.Get_().(BatchGetItemInputTransformInput_BatchGetItemInputTransformInput) + return ok +} + +func (CompanionStruct_BatchGetItemInputTransformInput_) Default() BatchGetItemInputTransformInput { + return Companion_BatchGetItemInputTransformInput_.Create_BatchGetItemInputTransformInput_(m_ComAmazonawsDynamodbTypes.Companion_BatchGetItemInput_.Default()) +} + +func (_this BatchGetItemInputTransformInput) Dtor_sdkInput() m_ComAmazonawsDynamodbTypes.BatchGetItemInput { + return _this.Get_().(BatchGetItemInputTransformInput_BatchGetItemInputTransformInput).SdkInput +} + +func (_this BatchGetItemInputTransformInput) String() string { + switch data := _this.Get_().(type) { + case nil: + return "null" + case BatchGetItemInputTransformInput_BatchGetItemInputTransformInput: + { + return "AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.BatchGetItemInputTransformInput.BatchGetItemInputTransformInput" + "(" + _dafny.String(data.SdkInput) + ")" + } + default: + { + return "" + } + } +} + +func (_this BatchGetItemInputTransformInput) Equals(other BatchGetItemInputTransformInput) bool { + switch data1 := _this.Get_().(type) { + case BatchGetItemInputTransformInput_BatchGetItemInputTransformInput: + { + data2, ok := other.Get_().(BatchGetItemInputTransformInput_BatchGetItemInputTransformInput) + return ok && data1.SdkInput.Equals(data2.SdkInput) + } + default: + { + return false // unexpected + } + } +} + +func (_this BatchGetItemInputTransformInput) EqualsGeneric(other interface{}) bool { + typed, ok := other.(BatchGetItemInputTransformInput) + return ok && _this.Equals(typed) +} + +func Type_BatchGetItemInputTransformInput_() _dafny.TypeDescriptor { + return type_BatchGetItemInputTransformInput_{} +} + +type type_BatchGetItemInputTransformInput_ struct { +} + +func (_this type_BatchGetItemInputTransformInput_) Default() interface{} { + return Companion_BatchGetItemInputTransformInput_.Default() +} + +func (_this type_BatchGetItemInputTransformInput_) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.BatchGetItemInputTransformInput" +} +func (_this BatchGetItemInputTransformInput) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = BatchGetItemInputTransformInput{} + +// End of datatype BatchGetItemInputTransformInput + +// Definition of datatype BatchGetItemInputTransformOutput +type BatchGetItemInputTransformOutput struct { + Data_BatchGetItemInputTransformOutput_ +} + +func (_this BatchGetItemInputTransformOutput) Get_() Data_BatchGetItemInputTransformOutput_ { + return _this.Data_BatchGetItemInputTransformOutput_ +} + +type Data_BatchGetItemInputTransformOutput_ interface { + isBatchGetItemInputTransformOutput() +} + +type CompanionStruct_BatchGetItemInputTransformOutput_ struct { +} + +var Companion_BatchGetItemInputTransformOutput_ = CompanionStruct_BatchGetItemInputTransformOutput_{} + +type BatchGetItemInputTransformOutput_BatchGetItemInputTransformOutput struct { + TransformedInput m_ComAmazonawsDynamodbTypes.BatchGetItemInput +} + +func (BatchGetItemInputTransformOutput_BatchGetItemInputTransformOutput) isBatchGetItemInputTransformOutput() { +} + +func (CompanionStruct_BatchGetItemInputTransformOutput_) Create_BatchGetItemInputTransformOutput_(TransformedInput m_ComAmazonawsDynamodbTypes.BatchGetItemInput) BatchGetItemInputTransformOutput { + return BatchGetItemInputTransformOutput{BatchGetItemInputTransformOutput_BatchGetItemInputTransformOutput{TransformedInput}} +} + +func (_this BatchGetItemInputTransformOutput) Is_BatchGetItemInputTransformOutput() bool { + _, ok := _this.Get_().(BatchGetItemInputTransformOutput_BatchGetItemInputTransformOutput) + return ok +} + +func (CompanionStruct_BatchGetItemInputTransformOutput_) Default() BatchGetItemInputTransformOutput { + return Companion_BatchGetItemInputTransformOutput_.Create_BatchGetItemInputTransformOutput_(m_ComAmazonawsDynamodbTypes.Companion_BatchGetItemInput_.Default()) +} + +func (_this BatchGetItemInputTransformOutput) Dtor_transformedInput() m_ComAmazonawsDynamodbTypes.BatchGetItemInput { + return _this.Get_().(BatchGetItemInputTransformOutput_BatchGetItemInputTransformOutput).TransformedInput +} + +func (_this BatchGetItemInputTransformOutput) String() string { + switch data := _this.Get_().(type) { + case nil: + return "null" + case BatchGetItemInputTransformOutput_BatchGetItemInputTransformOutput: + { + return "AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.BatchGetItemInputTransformOutput.BatchGetItemInputTransformOutput" + "(" + _dafny.String(data.TransformedInput) + ")" + } + default: + { + return "" + } + } +} + +func (_this BatchGetItemInputTransformOutput) Equals(other BatchGetItemInputTransformOutput) bool { + switch data1 := _this.Get_().(type) { + case BatchGetItemInputTransformOutput_BatchGetItemInputTransformOutput: + { + data2, ok := other.Get_().(BatchGetItemInputTransformOutput_BatchGetItemInputTransformOutput) + return ok && data1.TransformedInput.Equals(data2.TransformedInput) + } + default: + { + return false // unexpected + } + } +} + +func (_this BatchGetItemInputTransformOutput) EqualsGeneric(other interface{}) bool { + typed, ok := other.(BatchGetItemInputTransformOutput) + return ok && _this.Equals(typed) +} + +func Type_BatchGetItemInputTransformOutput_() _dafny.TypeDescriptor { + return type_BatchGetItemInputTransformOutput_{} +} + +type type_BatchGetItemInputTransformOutput_ struct { +} + +func (_this type_BatchGetItemInputTransformOutput_) Default() interface{} { + return Companion_BatchGetItemInputTransformOutput_.Default() +} + +func (_this type_BatchGetItemInputTransformOutput_) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.BatchGetItemInputTransformOutput" +} +func (_this BatchGetItemInputTransformOutput) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = BatchGetItemInputTransformOutput{} + +// End of datatype BatchGetItemInputTransformOutput + +// Definition of datatype BatchGetItemOutputTransformInput +type BatchGetItemOutputTransformInput struct { + Data_BatchGetItemOutputTransformInput_ +} + +func (_this BatchGetItemOutputTransformInput) Get_() Data_BatchGetItemOutputTransformInput_ { + return _this.Data_BatchGetItemOutputTransformInput_ +} + +type Data_BatchGetItemOutputTransformInput_ interface { + isBatchGetItemOutputTransformInput() +} + +type CompanionStruct_BatchGetItemOutputTransformInput_ struct { +} + +var Companion_BatchGetItemOutputTransformInput_ = CompanionStruct_BatchGetItemOutputTransformInput_{} + +type BatchGetItemOutputTransformInput_BatchGetItemOutputTransformInput struct { + SdkOutput m_ComAmazonawsDynamodbTypes.BatchGetItemOutput + OriginalInput m_ComAmazonawsDynamodbTypes.BatchGetItemInput +} + +func (BatchGetItemOutputTransformInput_BatchGetItemOutputTransformInput) isBatchGetItemOutputTransformInput() { +} + +func (CompanionStruct_BatchGetItemOutputTransformInput_) Create_BatchGetItemOutputTransformInput_(SdkOutput m_ComAmazonawsDynamodbTypes.BatchGetItemOutput, OriginalInput m_ComAmazonawsDynamodbTypes.BatchGetItemInput) BatchGetItemOutputTransformInput { + return BatchGetItemOutputTransformInput{BatchGetItemOutputTransformInput_BatchGetItemOutputTransformInput{SdkOutput, OriginalInput}} +} + +func (_this BatchGetItemOutputTransformInput) Is_BatchGetItemOutputTransformInput() bool { + _, ok := _this.Get_().(BatchGetItemOutputTransformInput_BatchGetItemOutputTransformInput) + return ok +} + +func (CompanionStruct_BatchGetItemOutputTransformInput_) Default() BatchGetItemOutputTransformInput { + return Companion_BatchGetItemOutputTransformInput_.Create_BatchGetItemOutputTransformInput_(m_ComAmazonawsDynamodbTypes.Companion_BatchGetItemOutput_.Default(), m_ComAmazonawsDynamodbTypes.Companion_BatchGetItemInput_.Default()) +} + +func (_this BatchGetItemOutputTransformInput) Dtor_sdkOutput() m_ComAmazonawsDynamodbTypes.BatchGetItemOutput { + return _this.Get_().(BatchGetItemOutputTransformInput_BatchGetItemOutputTransformInput).SdkOutput +} + +func (_this BatchGetItemOutputTransformInput) Dtor_originalInput() m_ComAmazonawsDynamodbTypes.BatchGetItemInput { + return _this.Get_().(BatchGetItemOutputTransformInput_BatchGetItemOutputTransformInput).OriginalInput +} + +func (_this BatchGetItemOutputTransformInput) String() string { + switch data := _this.Get_().(type) { + case nil: + return "null" + case BatchGetItemOutputTransformInput_BatchGetItemOutputTransformInput: + { + return "AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.BatchGetItemOutputTransformInput.BatchGetItemOutputTransformInput" + "(" + _dafny.String(data.SdkOutput) + ", " + _dafny.String(data.OriginalInput) + ")" + } + default: + { + return "" + } + } +} + +func (_this BatchGetItemOutputTransformInput) Equals(other BatchGetItemOutputTransformInput) bool { + switch data1 := _this.Get_().(type) { + case BatchGetItemOutputTransformInput_BatchGetItemOutputTransformInput: + { + data2, ok := other.Get_().(BatchGetItemOutputTransformInput_BatchGetItemOutputTransformInput) + return ok && data1.SdkOutput.Equals(data2.SdkOutput) && data1.OriginalInput.Equals(data2.OriginalInput) + } + default: + { + return false // unexpected + } + } +} + +func (_this BatchGetItemOutputTransformInput) EqualsGeneric(other interface{}) bool { + typed, ok := other.(BatchGetItemOutputTransformInput) + return ok && _this.Equals(typed) +} + +func Type_BatchGetItemOutputTransformInput_() _dafny.TypeDescriptor { + return type_BatchGetItemOutputTransformInput_{} +} + +type type_BatchGetItemOutputTransformInput_ struct { +} + +func (_this type_BatchGetItemOutputTransformInput_) Default() interface{} { + return Companion_BatchGetItemOutputTransformInput_.Default() +} + +func (_this type_BatchGetItemOutputTransformInput_) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.BatchGetItemOutputTransformInput" +} +func (_this BatchGetItemOutputTransformInput) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = BatchGetItemOutputTransformInput{} + +// End of datatype BatchGetItemOutputTransformInput + +// Definition of datatype BatchGetItemOutputTransformOutput +type BatchGetItemOutputTransformOutput struct { + Data_BatchGetItemOutputTransformOutput_ +} + +func (_this BatchGetItemOutputTransformOutput) Get_() Data_BatchGetItemOutputTransformOutput_ { + return _this.Data_BatchGetItemOutputTransformOutput_ +} + +type Data_BatchGetItemOutputTransformOutput_ interface { + isBatchGetItemOutputTransformOutput() +} + +type CompanionStruct_BatchGetItemOutputTransformOutput_ struct { +} + +var Companion_BatchGetItemOutputTransformOutput_ = CompanionStruct_BatchGetItemOutputTransformOutput_{} + +type BatchGetItemOutputTransformOutput_BatchGetItemOutputTransformOutput struct { + TransformedOutput m_ComAmazonawsDynamodbTypes.BatchGetItemOutput +} + +func (BatchGetItemOutputTransformOutput_BatchGetItemOutputTransformOutput) isBatchGetItemOutputTransformOutput() { +} + +func (CompanionStruct_BatchGetItemOutputTransformOutput_) Create_BatchGetItemOutputTransformOutput_(TransformedOutput m_ComAmazonawsDynamodbTypes.BatchGetItemOutput) BatchGetItemOutputTransformOutput { + return BatchGetItemOutputTransformOutput{BatchGetItemOutputTransformOutput_BatchGetItemOutputTransformOutput{TransformedOutput}} +} + +func (_this BatchGetItemOutputTransformOutput) Is_BatchGetItemOutputTransformOutput() bool { + _, ok := _this.Get_().(BatchGetItemOutputTransformOutput_BatchGetItemOutputTransformOutput) + return ok +} + +func (CompanionStruct_BatchGetItemOutputTransformOutput_) Default() BatchGetItemOutputTransformOutput { + return Companion_BatchGetItemOutputTransformOutput_.Create_BatchGetItemOutputTransformOutput_(m_ComAmazonawsDynamodbTypes.Companion_BatchGetItemOutput_.Default()) +} + +func (_this BatchGetItemOutputTransformOutput) Dtor_transformedOutput() m_ComAmazonawsDynamodbTypes.BatchGetItemOutput { + return _this.Get_().(BatchGetItemOutputTransformOutput_BatchGetItemOutputTransformOutput).TransformedOutput +} + +func (_this BatchGetItemOutputTransformOutput) String() string { + switch data := _this.Get_().(type) { + case nil: + return "null" + case BatchGetItemOutputTransformOutput_BatchGetItemOutputTransformOutput: + { + return "AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.BatchGetItemOutputTransformOutput.BatchGetItemOutputTransformOutput" + "(" + _dafny.String(data.TransformedOutput) + ")" + } + default: + { + return "" + } + } +} + +func (_this BatchGetItemOutputTransformOutput) Equals(other BatchGetItemOutputTransformOutput) bool { + switch data1 := _this.Get_().(type) { + case BatchGetItemOutputTransformOutput_BatchGetItemOutputTransformOutput: + { + data2, ok := other.Get_().(BatchGetItemOutputTransformOutput_BatchGetItemOutputTransformOutput) + return ok && data1.TransformedOutput.Equals(data2.TransformedOutput) + } + default: + { + return false // unexpected + } + } +} + +func (_this BatchGetItemOutputTransformOutput) EqualsGeneric(other interface{}) bool { + typed, ok := other.(BatchGetItemOutputTransformOutput) + return ok && _this.Equals(typed) +} + +func Type_BatchGetItemOutputTransformOutput_() _dafny.TypeDescriptor { + return type_BatchGetItemOutputTransformOutput_{} +} + +type type_BatchGetItemOutputTransformOutput_ struct { +} + +func (_this type_BatchGetItemOutputTransformOutput_) Default() interface{} { + return Companion_BatchGetItemOutputTransformOutput_.Default() +} + +func (_this type_BatchGetItemOutputTransformOutput_) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.BatchGetItemOutputTransformOutput" +} +func (_this BatchGetItemOutputTransformOutput) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = BatchGetItemOutputTransformOutput{} + +// End of datatype BatchGetItemOutputTransformOutput + +// Definition of datatype BatchWriteItemInputTransformInput +type BatchWriteItemInputTransformInput struct { + Data_BatchWriteItemInputTransformInput_ +} + +func (_this BatchWriteItemInputTransformInput) Get_() Data_BatchWriteItemInputTransformInput_ { + return _this.Data_BatchWriteItemInputTransformInput_ +} + +type Data_BatchWriteItemInputTransformInput_ interface { + isBatchWriteItemInputTransformInput() +} + +type CompanionStruct_BatchWriteItemInputTransformInput_ struct { +} + +var Companion_BatchWriteItemInputTransformInput_ = CompanionStruct_BatchWriteItemInputTransformInput_{} + +type BatchWriteItemInputTransformInput_BatchWriteItemInputTransformInput struct { + SdkInput m_ComAmazonawsDynamodbTypes.BatchWriteItemInput +} + +func (BatchWriteItemInputTransformInput_BatchWriteItemInputTransformInput) isBatchWriteItemInputTransformInput() { +} + +func (CompanionStruct_BatchWriteItemInputTransformInput_) Create_BatchWriteItemInputTransformInput_(SdkInput m_ComAmazonawsDynamodbTypes.BatchWriteItemInput) BatchWriteItemInputTransformInput { + return BatchWriteItemInputTransformInput{BatchWriteItemInputTransformInput_BatchWriteItemInputTransformInput{SdkInput}} +} + +func (_this BatchWriteItemInputTransformInput) Is_BatchWriteItemInputTransformInput() bool { + _, ok := _this.Get_().(BatchWriteItemInputTransformInput_BatchWriteItemInputTransformInput) + return ok +} + +func (CompanionStruct_BatchWriteItemInputTransformInput_) Default() BatchWriteItemInputTransformInput { + return Companion_BatchWriteItemInputTransformInput_.Create_BatchWriteItemInputTransformInput_(m_ComAmazonawsDynamodbTypes.Companion_BatchWriteItemInput_.Default()) +} + +func (_this BatchWriteItemInputTransformInput) Dtor_sdkInput() m_ComAmazonawsDynamodbTypes.BatchWriteItemInput { + return _this.Get_().(BatchWriteItemInputTransformInput_BatchWriteItemInputTransformInput).SdkInput +} + +func (_this BatchWriteItemInputTransformInput) String() string { + switch data := _this.Get_().(type) { + case nil: + return "null" + case BatchWriteItemInputTransformInput_BatchWriteItemInputTransformInput: + { + return "AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.BatchWriteItemInputTransformInput.BatchWriteItemInputTransformInput" + "(" + _dafny.String(data.SdkInput) + ")" + } + default: + { + return "" + } + } +} + +func (_this BatchWriteItemInputTransformInput) Equals(other BatchWriteItemInputTransformInput) bool { + switch data1 := _this.Get_().(type) { + case BatchWriteItemInputTransformInput_BatchWriteItemInputTransformInput: + { + data2, ok := other.Get_().(BatchWriteItemInputTransformInput_BatchWriteItemInputTransformInput) + return ok && data1.SdkInput.Equals(data2.SdkInput) + } + default: + { + return false // unexpected + } + } +} + +func (_this BatchWriteItemInputTransformInput) EqualsGeneric(other interface{}) bool { + typed, ok := other.(BatchWriteItemInputTransformInput) + return ok && _this.Equals(typed) +} + +func Type_BatchWriteItemInputTransformInput_() _dafny.TypeDescriptor { + return type_BatchWriteItemInputTransformInput_{} +} + +type type_BatchWriteItemInputTransformInput_ struct { +} + +func (_this type_BatchWriteItemInputTransformInput_) Default() interface{} { + return Companion_BatchWriteItemInputTransformInput_.Default() +} + +func (_this type_BatchWriteItemInputTransformInput_) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.BatchWriteItemInputTransformInput" +} +func (_this BatchWriteItemInputTransformInput) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = BatchWriteItemInputTransformInput{} + +// End of datatype BatchWriteItemInputTransformInput + +// Definition of datatype BatchWriteItemInputTransformOutput +type BatchWriteItemInputTransformOutput struct { + Data_BatchWriteItemInputTransformOutput_ +} + +func (_this BatchWriteItemInputTransformOutput) Get_() Data_BatchWriteItemInputTransformOutput_ { + return _this.Data_BatchWriteItemInputTransformOutput_ +} + +type Data_BatchWriteItemInputTransformOutput_ interface { + isBatchWriteItemInputTransformOutput() +} + +type CompanionStruct_BatchWriteItemInputTransformOutput_ struct { +} + +var Companion_BatchWriteItemInputTransformOutput_ = CompanionStruct_BatchWriteItemInputTransformOutput_{} + +type BatchWriteItemInputTransformOutput_BatchWriteItemInputTransformOutput struct { + TransformedInput m_ComAmazonawsDynamodbTypes.BatchWriteItemInput +} + +func (BatchWriteItemInputTransformOutput_BatchWriteItemInputTransformOutput) isBatchWriteItemInputTransformOutput() { +} + +func (CompanionStruct_BatchWriteItemInputTransformOutput_) Create_BatchWriteItemInputTransformOutput_(TransformedInput m_ComAmazonawsDynamodbTypes.BatchWriteItemInput) BatchWriteItemInputTransformOutput { + return BatchWriteItemInputTransformOutput{BatchWriteItemInputTransformOutput_BatchWriteItemInputTransformOutput{TransformedInput}} +} + +func (_this BatchWriteItemInputTransformOutput) Is_BatchWriteItemInputTransformOutput() bool { + _, ok := _this.Get_().(BatchWriteItemInputTransformOutput_BatchWriteItemInputTransformOutput) + return ok +} + +func (CompanionStruct_BatchWriteItemInputTransformOutput_) Default() BatchWriteItemInputTransformOutput { + return Companion_BatchWriteItemInputTransformOutput_.Create_BatchWriteItemInputTransformOutput_(m_ComAmazonawsDynamodbTypes.Companion_BatchWriteItemInput_.Default()) +} + +func (_this BatchWriteItemInputTransformOutput) Dtor_transformedInput() m_ComAmazonawsDynamodbTypes.BatchWriteItemInput { + return _this.Get_().(BatchWriteItemInputTransformOutput_BatchWriteItemInputTransformOutput).TransformedInput +} + +func (_this BatchWriteItemInputTransformOutput) String() string { + switch data := _this.Get_().(type) { + case nil: + return "null" + case BatchWriteItemInputTransformOutput_BatchWriteItemInputTransformOutput: + { + return "AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.BatchWriteItemInputTransformOutput.BatchWriteItemInputTransformOutput" + "(" + _dafny.String(data.TransformedInput) + ")" + } + default: + { + return "" + } + } +} + +func (_this BatchWriteItemInputTransformOutput) Equals(other BatchWriteItemInputTransformOutput) bool { + switch data1 := _this.Get_().(type) { + case BatchWriteItemInputTransformOutput_BatchWriteItemInputTransformOutput: + { + data2, ok := other.Get_().(BatchWriteItemInputTransformOutput_BatchWriteItemInputTransformOutput) + return ok && data1.TransformedInput.Equals(data2.TransformedInput) + } + default: + { + return false // unexpected + } + } +} + +func (_this BatchWriteItemInputTransformOutput) EqualsGeneric(other interface{}) bool { + typed, ok := other.(BatchWriteItemInputTransformOutput) + return ok && _this.Equals(typed) +} + +func Type_BatchWriteItemInputTransformOutput_() _dafny.TypeDescriptor { + return type_BatchWriteItemInputTransformOutput_{} +} + +type type_BatchWriteItemInputTransformOutput_ struct { +} + +func (_this type_BatchWriteItemInputTransformOutput_) Default() interface{} { + return Companion_BatchWriteItemInputTransformOutput_.Default() +} + +func (_this type_BatchWriteItemInputTransformOutput_) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.BatchWriteItemInputTransformOutput" +} +func (_this BatchWriteItemInputTransformOutput) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = BatchWriteItemInputTransformOutput{} + +// End of datatype BatchWriteItemInputTransformOutput + +// Definition of datatype BatchWriteItemOutputTransformInput +type BatchWriteItemOutputTransformInput struct { + Data_BatchWriteItemOutputTransformInput_ +} + +func (_this BatchWriteItemOutputTransformInput) Get_() Data_BatchWriteItemOutputTransformInput_ { + return _this.Data_BatchWriteItemOutputTransformInput_ +} + +type Data_BatchWriteItemOutputTransformInput_ interface { + isBatchWriteItemOutputTransformInput() +} + +type CompanionStruct_BatchWriteItemOutputTransformInput_ struct { +} + +var Companion_BatchWriteItemOutputTransformInput_ = CompanionStruct_BatchWriteItemOutputTransformInput_{} + +type BatchWriteItemOutputTransformInput_BatchWriteItemOutputTransformInput struct { + SdkOutput m_ComAmazonawsDynamodbTypes.BatchWriteItemOutput + OriginalInput m_ComAmazonawsDynamodbTypes.BatchWriteItemInput +} + +func (BatchWriteItemOutputTransformInput_BatchWriteItemOutputTransformInput) isBatchWriteItemOutputTransformInput() { +} + +func (CompanionStruct_BatchWriteItemOutputTransformInput_) Create_BatchWriteItemOutputTransformInput_(SdkOutput m_ComAmazonawsDynamodbTypes.BatchWriteItemOutput, OriginalInput m_ComAmazonawsDynamodbTypes.BatchWriteItemInput) BatchWriteItemOutputTransformInput { + return BatchWriteItemOutputTransformInput{BatchWriteItemOutputTransformInput_BatchWriteItemOutputTransformInput{SdkOutput, OriginalInput}} +} + +func (_this BatchWriteItemOutputTransformInput) Is_BatchWriteItemOutputTransformInput() bool { + _, ok := _this.Get_().(BatchWriteItemOutputTransformInput_BatchWriteItemOutputTransformInput) + return ok +} + +func (CompanionStruct_BatchWriteItemOutputTransformInput_) Default() BatchWriteItemOutputTransformInput { + return Companion_BatchWriteItemOutputTransformInput_.Create_BatchWriteItemOutputTransformInput_(m_ComAmazonawsDynamodbTypes.Companion_BatchWriteItemOutput_.Default(), m_ComAmazonawsDynamodbTypes.Companion_BatchWriteItemInput_.Default()) +} + +func (_this BatchWriteItemOutputTransformInput) Dtor_sdkOutput() m_ComAmazonawsDynamodbTypes.BatchWriteItemOutput { + return _this.Get_().(BatchWriteItemOutputTransformInput_BatchWriteItemOutputTransformInput).SdkOutput +} + +func (_this BatchWriteItemOutputTransformInput) Dtor_originalInput() m_ComAmazonawsDynamodbTypes.BatchWriteItemInput { + return _this.Get_().(BatchWriteItemOutputTransformInput_BatchWriteItemOutputTransformInput).OriginalInput +} + +func (_this BatchWriteItemOutputTransformInput) String() string { + switch data := _this.Get_().(type) { + case nil: + return "null" + case BatchWriteItemOutputTransformInput_BatchWriteItemOutputTransformInput: + { + return "AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.BatchWriteItemOutputTransformInput.BatchWriteItemOutputTransformInput" + "(" + _dafny.String(data.SdkOutput) + ", " + _dafny.String(data.OriginalInput) + ")" + } + default: + { + return "" + } + } +} + +func (_this BatchWriteItemOutputTransformInput) Equals(other BatchWriteItemOutputTransformInput) bool { + switch data1 := _this.Get_().(type) { + case BatchWriteItemOutputTransformInput_BatchWriteItemOutputTransformInput: + { + data2, ok := other.Get_().(BatchWriteItemOutputTransformInput_BatchWriteItemOutputTransformInput) + return ok && data1.SdkOutput.Equals(data2.SdkOutput) && data1.OriginalInput.Equals(data2.OriginalInput) + } + default: + { + return false // unexpected + } + } +} + +func (_this BatchWriteItemOutputTransformInput) EqualsGeneric(other interface{}) bool { + typed, ok := other.(BatchWriteItemOutputTransformInput) + return ok && _this.Equals(typed) +} + +func Type_BatchWriteItemOutputTransformInput_() _dafny.TypeDescriptor { + return type_BatchWriteItemOutputTransformInput_{} +} + +type type_BatchWriteItemOutputTransformInput_ struct { +} + +func (_this type_BatchWriteItemOutputTransformInput_) Default() interface{} { + return Companion_BatchWriteItemOutputTransformInput_.Default() +} + +func (_this type_BatchWriteItemOutputTransformInput_) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.BatchWriteItemOutputTransformInput" +} +func (_this BatchWriteItemOutputTransformInput) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = BatchWriteItemOutputTransformInput{} + +// End of datatype BatchWriteItemOutputTransformInput + +// Definition of datatype BatchWriteItemOutputTransformOutput +type BatchWriteItemOutputTransformOutput struct { + Data_BatchWriteItemOutputTransformOutput_ +} + +func (_this BatchWriteItemOutputTransformOutput) Get_() Data_BatchWriteItemOutputTransformOutput_ { + return _this.Data_BatchWriteItemOutputTransformOutput_ +} + +type Data_BatchWriteItemOutputTransformOutput_ interface { + isBatchWriteItemOutputTransformOutput() +} + +type CompanionStruct_BatchWriteItemOutputTransformOutput_ struct { +} + +var Companion_BatchWriteItemOutputTransformOutput_ = CompanionStruct_BatchWriteItemOutputTransformOutput_{} + +type BatchWriteItemOutputTransformOutput_BatchWriteItemOutputTransformOutput struct { + TransformedOutput m_ComAmazonawsDynamodbTypes.BatchWriteItemOutput +} + +func (BatchWriteItemOutputTransformOutput_BatchWriteItemOutputTransformOutput) isBatchWriteItemOutputTransformOutput() { +} + +func (CompanionStruct_BatchWriteItemOutputTransformOutput_) Create_BatchWriteItemOutputTransformOutput_(TransformedOutput m_ComAmazonawsDynamodbTypes.BatchWriteItemOutput) BatchWriteItemOutputTransformOutput { + return BatchWriteItemOutputTransformOutput{BatchWriteItemOutputTransformOutput_BatchWriteItemOutputTransformOutput{TransformedOutput}} +} + +func (_this BatchWriteItemOutputTransformOutput) Is_BatchWriteItemOutputTransformOutput() bool { + _, ok := _this.Get_().(BatchWriteItemOutputTransformOutput_BatchWriteItemOutputTransformOutput) + return ok +} + +func (CompanionStruct_BatchWriteItemOutputTransformOutput_) Default() BatchWriteItemOutputTransformOutput { + return Companion_BatchWriteItemOutputTransformOutput_.Create_BatchWriteItemOutputTransformOutput_(m_ComAmazonawsDynamodbTypes.Companion_BatchWriteItemOutput_.Default()) +} + +func (_this BatchWriteItemOutputTransformOutput) Dtor_transformedOutput() m_ComAmazonawsDynamodbTypes.BatchWriteItemOutput { + return _this.Get_().(BatchWriteItemOutputTransformOutput_BatchWriteItemOutputTransformOutput).TransformedOutput +} + +func (_this BatchWriteItemOutputTransformOutput) String() string { + switch data := _this.Get_().(type) { + case nil: + return "null" + case BatchWriteItemOutputTransformOutput_BatchWriteItemOutputTransformOutput: + { + return "AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.BatchWriteItemOutputTransformOutput.BatchWriteItemOutputTransformOutput" + "(" + _dafny.String(data.TransformedOutput) + ")" + } + default: + { + return "" + } + } +} + +func (_this BatchWriteItemOutputTransformOutput) Equals(other BatchWriteItemOutputTransformOutput) bool { + switch data1 := _this.Get_().(type) { + case BatchWriteItemOutputTransformOutput_BatchWriteItemOutputTransformOutput: + { + data2, ok := other.Get_().(BatchWriteItemOutputTransformOutput_BatchWriteItemOutputTransformOutput) + return ok && data1.TransformedOutput.Equals(data2.TransformedOutput) + } + default: + { + return false // unexpected + } + } +} + +func (_this BatchWriteItemOutputTransformOutput) EqualsGeneric(other interface{}) bool { + typed, ok := other.(BatchWriteItemOutputTransformOutput) + return ok && _this.Equals(typed) +} + +func Type_BatchWriteItemOutputTransformOutput_() _dafny.TypeDescriptor { + return type_BatchWriteItemOutputTransformOutput_{} +} + +type type_BatchWriteItemOutputTransformOutput_ struct { +} + +func (_this type_BatchWriteItemOutputTransformOutput_) Default() interface{} { + return Companion_BatchWriteItemOutputTransformOutput_.Default() +} + +func (_this type_BatchWriteItemOutputTransformOutput_) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.BatchWriteItemOutputTransformOutput" +} +func (_this BatchWriteItemOutputTransformOutput) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = BatchWriteItemOutputTransformOutput{} + +// End of datatype BatchWriteItemOutputTransformOutput + +// Definition of datatype DeleteItemInputTransformInput +type DeleteItemInputTransformInput struct { + Data_DeleteItemInputTransformInput_ +} + +func (_this DeleteItemInputTransformInput) Get_() Data_DeleteItemInputTransformInput_ { + return _this.Data_DeleteItemInputTransformInput_ +} + +type Data_DeleteItemInputTransformInput_ interface { + isDeleteItemInputTransformInput() +} + +type CompanionStruct_DeleteItemInputTransformInput_ struct { +} + +var Companion_DeleteItemInputTransformInput_ = CompanionStruct_DeleteItemInputTransformInput_{} + +type DeleteItemInputTransformInput_DeleteItemInputTransformInput struct { + SdkInput m_ComAmazonawsDynamodbTypes.DeleteItemInput +} + +func (DeleteItemInputTransformInput_DeleteItemInputTransformInput) isDeleteItemInputTransformInput() { +} + +func (CompanionStruct_DeleteItemInputTransformInput_) Create_DeleteItemInputTransformInput_(SdkInput m_ComAmazonawsDynamodbTypes.DeleteItemInput) DeleteItemInputTransformInput { + return DeleteItemInputTransformInput{DeleteItemInputTransformInput_DeleteItemInputTransformInput{SdkInput}} +} + +func (_this DeleteItemInputTransformInput) Is_DeleteItemInputTransformInput() bool { + _, ok := _this.Get_().(DeleteItemInputTransformInput_DeleteItemInputTransformInput) + return ok +} + +func (CompanionStruct_DeleteItemInputTransformInput_) Default() DeleteItemInputTransformInput { + return Companion_DeleteItemInputTransformInput_.Create_DeleteItemInputTransformInput_(m_ComAmazonawsDynamodbTypes.Companion_DeleteItemInput_.Default()) +} + +func (_this DeleteItemInputTransformInput) Dtor_sdkInput() m_ComAmazonawsDynamodbTypes.DeleteItemInput { + return _this.Get_().(DeleteItemInputTransformInput_DeleteItemInputTransformInput).SdkInput +} + +func (_this DeleteItemInputTransformInput) String() string { + switch data := _this.Get_().(type) { + case nil: + return "null" + case DeleteItemInputTransformInput_DeleteItemInputTransformInput: + { + return "AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.DeleteItemInputTransformInput.DeleteItemInputTransformInput" + "(" + _dafny.String(data.SdkInput) + ")" + } + default: + { + return "" + } + } +} + +func (_this DeleteItemInputTransformInput) Equals(other DeleteItemInputTransformInput) bool { + switch data1 := _this.Get_().(type) { + case DeleteItemInputTransformInput_DeleteItemInputTransformInput: + { + data2, ok := other.Get_().(DeleteItemInputTransformInput_DeleteItemInputTransformInput) + return ok && data1.SdkInput.Equals(data2.SdkInput) + } + default: + { + return false // unexpected + } + } +} + +func (_this DeleteItemInputTransformInput) EqualsGeneric(other interface{}) bool { + typed, ok := other.(DeleteItemInputTransformInput) + return ok && _this.Equals(typed) +} + +func Type_DeleteItemInputTransformInput_() _dafny.TypeDescriptor { + return type_DeleteItemInputTransformInput_{} +} + +type type_DeleteItemInputTransformInput_ struct { +} + +func (_this type_DeleteItemInputTransformInput_) Default() interface{} { + return Companion_DeleteItemInputTransformInput_.Default() +} + +func (_this type_DeleteItemInputTransformInput_) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.DeleteItemInputTransformInput" +} +func (_this DeleteItemInputTransformInput) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = DeleteItemInputTransformInput{} + +// End of datatype DeleteItemInputTransformInput + +// Definition of datatype DeleteItemInputTransformOutput +type DeleteItemInputTransformOutput struct { + Data_DeleteItemInputTransformOutput_ +} + +func (_this DeleteItemInputTransformOutput) Get_() Data_DeleteItemInputTransformOutput_ { + return _this.Data_DeleteItemInputTransformOutput_ +} + +type Data_DeleteItemInputTransformOutput_ interface { + isDeleteItemInputTransformOutput() +} + +type CompanionStruct_DeleteItemInputTransformOutput_ struct { +} + +var Companion_DeleteItemInputTransformOutput_ = CompanionStruct_DeleteItemInputTransformOutput_{} + +type DeleteItemInputTransformOutput_DeleteItemInputTransformOutput struct { + TransformedInput m_ComAmazonawsDynamodbTypes.DeleteItemInput +} + +func (DeleteItemInputTransformOutput_DeleteItemInputTransformOutput) isDeleteItemInputTransformOutput() { +} + +func (CompanionStruct_DeleteItemInputTransformOutput_) Create_DeleteItemInputTransformOutput_(TransformedInput m_ComAmazonawsDynamodbTypes.DeleteItemInput) DeleteItemInputTransformOutput { + return DeleteItemInputTransformOutput{DeleteItemInputTransformOutput_DeleteItemInputTransformOutput{TransformedInput}} +} + +func (_this DeleteItemInputTransformOutput) Is_DeleteItemInputTransformOutput() bool { + _, ok := _this.Get_().(DeleteItemInputTransformOutput_DeleteItemInputTransformOutput) + return ok +} + +func (CompanionStruct_DeleteItemInputTransformOutput_) Default() DeleteItemInputTransformOutput { + return Companion_DeleteItemInputTransformOutput_.Create_DeleteItemInputTransformOutput_(m_ComAmazonawsDynamodbTypes.Companion_DeleteItemInput_.Default()) +} + +func (_this DeleteItemInputTransformOutput) Dtor_transformedInput() m_ComAmazonawsDynamodbTypes.DeleteItemInput { + return _this.Get_().(DeleteItemInputTransformOutput_DeleteItemInputTransformOutput).TransformedInput +} + +func (_this DeleteItemInputTransformOutput) String() string { + switch data := _this.Get_().(type) { + case nil: + return "null" + case DeleteItemInputTransformOutput_DeleteItemInputTransformOutput: + { + return "AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.DeleteItemInputTransformOutput.DeleteItemInputTransformOutput" + "(" + _dafny.String(data.TransformedInput) + ")" + } + default: + { + return "" + } + } +} + +func (_this DeleteItemInputTransformOutput) Equals(other DeleteItemInputTransformOutput) bool { + switch data1 := _this.Get_().(type) { + case DeleteItemInputTransformOutput_DeleteItemInputTransformOutput: + { + data2, ok := other.Get_().(DeleteItemInputTransformOutput_DeleteItemInputTransformOutput) + return ok && data1.TransformedInput.Equals(data2.TransformedInput) + } + default: + { + return false // unexpected + } + } +} + +func (_this DeleteItemInputTransformOutput) EqualsGeneric(other interface{}) bool { + typed, ok := other.(DeleteItemInputTransformOutput) + return ok && _this.Equals(typed) +} + +func Type_DeleteItemInputTransformOutput_() _dafny.TypeDescriptor { + return type_DeleteItemInputTransformOutput_{} +} + +type type_DeleteItemInputTransformOutput_ struct { +} + +func (_this type_DeleteItemInputTransformOutput_) Default() interface{} { + return Companion_DeleteItemInputTransformOutput_.Default() +} + +func (_this type_DeleteItemInputTransformOutput_) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.DeleteItemInputTransformOutput" +} +func (_this DeleteItemInputTransformOutput) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = DeleteItemInputTransformOutput{} + +// End of datatype DeleteItemInputTransformOutput + +// Definition of datatype DeleteItemOutputTransformInput +type DeleteItemOutputTransformInput struct { + Data_DeleteItemOutputTransformInput_ +} + +func (_this DeleteItemOutputTransformInput) Get_() Data_DeleteItemOutputTransformInput_ { + return _this.Data_DeleteItemOutputTransformInput_ +} + +type Data_DeleteItemOutputTransformInput_ interface { + isDeleteItemOutputTransformInput() +} + +type CompanionStruct_DeleteItemOutputTransformInput_ struct { +} + +var Companion_DeleteItemOutputTransformInput_ = CompanionStruct_DeleteItemOutputTransformInput_{} + +type DeleteItemOutputTransformInput_DeleteItemOutputTransformInput struct { + SdkOutput m_ComAmazonawsDynamodbTypes.DeleteItemOutput + OriginalInput m_ComAmazonawsDynamodbTypes.DeleteItemInput +} + +func (DeleteItemOutputTransformInput_DeleteItemOutputTransformInput) isDeleteItemOutputTransformInput() { +} + +func (CompanionStruct_DeleteItemOutputTransformInput_) Create_DeleteItemOutputTransformInput_(SdkOutput m_ComAmazonawsDynamodbTypes.DeleteItemOutput, OriginalInput m_ComAmazonawsDynamodbTypes.DeleteItemInput) DeleteItemOutputTransformInput { + return DeleteItemOutputTransformInput{DeleteItemOutputTransformInput_DeleteItemOutputTransformInput{SdkOutput, OriginalInput}} +} + +func (_this DeleteItemOutputTransformInput) Is_DeleteItemOutputTransformInput() bool { + _, ok := _this.Get_().(DeleteItemOutputTransformInput_DeleteItemOutputTransformInput) + return ok +} + +func (CompanionStruct_DeleteItemOutputTransformInput_) Default() DeleteItemOutputTransformInput { + return Companion_DeleteItemOutputTransformInput_.Create_DeleteItemOutputTransformInput_(m_ComAmazonawsDynamodbTypes.Companion_DeleteItemOutput_.Default(), m_ComAmazonawsDynamodbTypes.Companion_DeleteItemInput_.Default()) +} + +func (_this DeleteItemOutputTransformInput) Dtor_sdkOutput() m_ComAmazonawsDynamodbTypes.DeleteItemOutput { + return _this.Get_().(DeleteItemOutputTransformInput_DeleteItemOutputTransformInput).SdkOutput +} + +func (_this DeleteItemOutputTransformInput) Dtor_originalInput() m_ComAmazonawsDynamodbTypes.DeleteItemInput { + return _this.Get_().(DeleteItemOutputTransformInput_DeleteItemOutputTransformInput).OriginalInput +} + +func (_this DeleteItemOutputTransformInput) String() string { + switch data := _this.Get_().(type) { + case nil: + return "null" + case DeleteItemOutputTransformInput_DeleteItemOutputTransformInput: + { + return "AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.DeleteItemOutputTransformInput.DeleteItemOutputTransformInput" + "(" + _dafny.String(data.SdkOutput) + ", " + _dafny.String(data.OriginalInput) + ")" + } + default: + { + return "" + } + } +} + +func (_this DeleteItemOutputTransformInput) Equals(other DeleteItemOutputTransformInput) bool { + switch data1 := _this.Get_().(type) { + case DeleteItemOutputTransformInput_DeleteItemOutputTransformInput: + { + data2, ok := other.Get_().(DeleteItemOutputTransformInput_DeleteItemOutputTransformInput) + return ok && data1.SdkOutput.Equals(data2.SdkOutput) && data1.OriginalInput.Equals(data2.OriginalInput) + } + default: + { + return false // unexpected + } + } +} + +func (_this DeleteItemOutputTransformInput) EqualsGeneric(other interface{}) bool { + typed, ok := other.(DeleteItemOutputTransformInput) + return ok && _this.Equals(typed) +} + +func Type_DeleteItemOutputTransformInput_() _dafny.TypeDescriptor { + return type_DeleteItemOutputTransformInput_{} +} + +type type_DeleteItemOutputTransformInput_ struct { +} + +func (_this type_DeleteItemOutputTransformInput_) Default() interface{} { + return Companion_DeleteItemOutputTransformInput_.Default() +} + +func (_this type_DeleteItemOutputTransformInput_) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.DeleteItemOutputTransformInput" +} +func (_this DeleteItemOutputTransformInput) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = DeleteItemOutputTransformInput{} + +// End of datatype DeleteItemOutputTransformInput + +// Definition of datatype DeleteItemOutputTransformOutput +type DeleteItemOutputTransformOutput struct { + Data_DeleteItemOutputTransformOutput_ +} + +func (_this DeleteItemOutputTransformOutput) Get_() Data_DeleteItemOutputTransformOutput_ { + return _this.Data_DeleteItemOutputTransformOutput_ +} + +type Data_DeleteItemOutputTransformOutput_ interface { + isDeleteItemOutputTransformOutput() +} + +type CompanionStruct_DeleteItemOutputTransformOutput_ struct { +} + +var Companion_DeleteItemOutputTransformOutput_ = CompanionStruct_DeleteItemOutputTransformOutput_{} + +type DeleteItemOutputTransformOutput_DeleteItemOutputTransformOutput struct { + TransformedOutput m_ComAmazonawsDynamodbTypes.DeleteItemOutput +} + +func (DeleteItemOutputTransformOutput_DeleteItemOutputTransformOutput) isDeleteItemOutputTransformOutput() { +} + +func (CompanionStruct_DeleteItemOutputTransformOutput_) Create_DeleteItemOutputTransformOutput_(TransformedOutput m_ComAmazonawsDynamodbTypes.DeleteItemOutput) DeleteItemOutputTransformOutput { + return DeleteItemOutputTransformOutput{DeleteItemOutputTransformOutput_DeleteItemOutputTransformOutput{TransformedOutput}} +} + +func (_this DeleteItemOutputTransformOutput) Is_DeleteItemOutputTransformOutput() bool { + _, ok := _this.Get_().(DeleteItemOutputTransformOutput_DeleteItemOutputTransformOutput) + return ok +} + +func (CompanionStruct_DeleteItemOutputTransformOutput_) Default() DeleteItemOutputTransformOutput { + return Companion_DeleteItemOutputTransformOutput_.Create_DeleteItemOutputTransformOutput_(m_ComAmazonawsDynamodbTypes.Companion_DeleteItemOutput_.Default()) +} + +func (_this DeleteItemOutputTransformOutput) Dtor_transformedOutput() m_ComAmazonawsDynamodbTypes.DeleteItemOutput { + return _this.Get_().(DeleteItemOutputTransformOutput_DeleteItemOutputTransformOutput).TransformedOutput +} + +func (_this DeleteItemOutputTransformOutput) String() string { + switch data := _this.Get_().(type) { + case nil: + return "null" + case DeleteItemOutputTransformOutput_DeleteItemOutputTransformOutput: + { + return "AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.DeleteItemOutputTransformOutput.DeleteItemOutputTransformOutput" + "(" + _dafny.String(data.TransformedOutput) + ")" + } + default: + { + return "" + } + } +} + +func (_this DeleteItemOutputTransformOutput) Equals(other DeleteItemOutputTransformOutput) bool { + switch data1 := _this.Get_().(type) { + case DeleteItemOutputTransformOutput_DeleteItemOutputTransformOutput: + { + data2, ok := other.Get_().(DeleteItemOutputTransformOutput_DeleteItemOutputTransformOutput) + return ok && data1.TransformedOutput.Equals(data2.TransformedOutput) + } + default: + { + return false // unexpected + } + } +} + +func (_this DeleteItemOutputTransformOutput) EqualsGeneric(other interface{}) bool { + typed, ok := other.(DeleteItemOutputTransformOutput) + return ok && _this.Equals(typed) +} + +func Type_DeleteItemOutputTransformOutput_() _dafny.TypeDescriptor { + return type_DeleteItemOutputTransformOutput_{} +} + +type type_DeleteItemOutputTransformOutput_ struct { +} + +func (_this type_DeleteItemOutputTransformOutput_) Default() interface{} { + return Companion_DeleteItemOutputTransformOutput_.Default() +} + +func (_this type_DeleteItemOutputTransformOutput_) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.DeleteItemOutputTransformOutput" +} +func (_this DeleteItemOutputTransformOutput) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = DeleteItemOutputTransformOutput{} + +// End of datatype DeleteItemOutputTransformOutput + +// Definition of class IDynamoDbEncryptionTransformsClientCallHistory +type IDynamoDbEncryptionTransformsClientCallHistory struct { + dummy byte +} + +func New_IDynamoDbEncryptionTransformsClientCallHistory_() *IDynamoDbEncryptionTransformsClientCallHistory { + _this := IDynamoDbEncryptionTransformsClientCallHistory{} + + return &_this +} + +type CompanionStruct_IDynamoDbEncryptionTransformsClientCallHistory_ struct { +} + +var Companion_IDynamoDbEncryptionTransformsClientCallHistory_ = CompanionStruct_IDynamoDbEncryptionTransformsClientCallHistory_{} + +func (_this *IDynamoDbEncryptionTransformsClientCallHistory) Equals(other *IDynamoDbEncryptionTransformsClientCallHistory) bool { + return _this == other +} + +func (_this *IDynamoDbEncryptionTransformsClientCallHistory) EqualsGeneric(x interface{}) bool { + other, ok := x.(*IDynamoDbEncryptionTransformsClientCallHistory) + return ok && _this.Equals(other) +} + +func (*IDynamoDbEncryptionTransformsClientCallHistory) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.IDynamoDbEncryptionTransformsClientCallHistory" +} + +func Type_IDynamoDbEncryptionTransformsClientCallHistory_() _dafny.TypeDescriptor { + return type_IDynamoDbEncryptionTransformsClientCallHistory_{} +} + +type type_IDynamoDbEncryptionTransformsClientCallHistory_ struct { +} + +func (_this type_IDynamoDbEncryptionTransformsClientCallHistory_) Default() interface{} { + return (*IDynamoDbEncryptionTransformsClientCallHistory)(nil) +} + +func (_this type_IDynamoDbEncryptionTransformsClientCallHistory_) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.IDynamoDbEncryptionTransformsClientCallHistory" +} +func (_this *IDynamoDbEncryptionTransformsClientCallHistory) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = &IDynamoDbEncryptionTransformsClientCallHistory{} + +// End of class IDynamoDbEncryptionTransformsClientCallHistory + +// Definition of trait IDynamoDbEncryptionTransformsClient +type IDynamoDbEncryptionTransformsClient interface { + String() string + PutItemInputTransform(input PutItemInputTransformInput) m_Wrappers.Result + PutItemOutputTransform(input PutItemOutputTransformInput) m_Wrappers.Result + GetItemInputTransform(input GetItemInputTransformInput) m_Wrappers.Result + GetItemOutputTransform(input GetItemOutputTransformInput) m_Wrappers.Result + BatchWriteItemInputTransform(input BatchWriteItemInputTransformInput) m_Wrappers.Result + BatchWriteItemOutputTransform(input BatchWriteItemOutputTransformInput) m_Wrappers.Result + BatchGetItemInputTransform(input BatchGetItemInputTransformInput) m_Wrappers.Result + BatchGetItemOutputTransform(input BatchGetItemOutputTransformInput) m_Wrappers.Result + ScanInputTransform(input ScanInputTransformInput) m_Wrappers.Result + ScanOutputTransform(input ScanOutputTransformInput) m_Wrappers.Result + QueryInputTransform(input QueryInputTransformInput) m_Wrappers.Result + QueryOutputTransform(input QueryOutputTransformInput) m_Wrappers.Result + TransactWriteItemsInputTransform(input TransactWriteItemsInputTransformInput) m_Wrappers.Result + TransactWriteItemsOutputTransform(input TransactWriteItemsOutputTransformInput) m_Wrappers.Result + UpdateItemInputTransform(input UpdateItemInputTransformInput) m_Wrappers.Result + UpdateItemOutputTransform(input UpdateItemOutputTransformInput) m_Wrappers.Result + DeleteItemInputTransform(input DeleteItemInputTransformInput) m_Wrappers.Result + DeleteItemOutputTransform(input DeleteItemOutputTransformInput) m_Wrappers.Result + TransactGetItemsInputTransform(input TransactGetItemsInputTransformInput) m_Wrappers.Result + TransactGetItemsOutputTransform(input TransactGetItemsOutputTransformInput) m_Wrappers.Result + ExecuteStatementInputTransform(input ExecuteStatementInputTransformInput) m_Wrappers.Result + ExecuteStatementOutputTransform(input ExecuteStatementOutputTransformInput) m_Wrappers.Result + BatchExecuteStatementInputTransform(input BatchExecuteStatementInputTransformInput) m_Wrappers.Result + BatchExecuteStatementOutputTransform(input BatchExecuteStatementOutputTransformInput) m_Wrappers.Result + ExecuteTransactionInputTransform(input ExecuteTransactionInputTransformInput) m_Wrappers.Result + ExecuteTransactionOutputTransform(input ExecuteTransactionOutputTransformInput) m_Wrappers.Result + ResolveAttributes(input ResolveAttributesInput) m_Wrappers.Result +} +type CompanionStruct_IDynamoDbEncryptionTransformsClient_ struct { + TraitID_ *_dafny.TraitID +} + +var Companion_IDynamoDbEncryptionTransformsClient_ = CompanionStruct_IDynamoDbEncryptionTransformsClient_{ + TraitID_: &_dafny.TraitID{}, +} + +func (CompanionStruct_IDynamoDbEncryptionTransformsClient_) CastTo_(x interface{}) IDynamoDbEncryptionTransformsClient { + var t IDynamoDbEncryptionTransformsClient + t, _ = x.(IDynamoDbEncryptionTransformsClient) + return t +} + +// End of trait IDynamoDbEncryptionTransformsClient + +// Definition of datatype ExecuteStatementInputTransformInput +type ExecuteStatementInputTransformInput struct { + Data_ExecuteStatementInputTransformInput_ +} + +func (_this ExecuteStatementInputTransformInput) Get_() Data_ExecuteStatementInputTransformInput_ { + return _this.Data_ExecuteStatementInputTransformInput_ +} + +type Data_ExecuteStatementInputTransformInput_ interface { + isExecuteStatementInputTransformInput() +} + +type CompanionStruct_ExecuteStatementInputTransformInput_ struct { +} + +var Companion_ExecuteStatementInputTransformInput_ = CompanionStruct_ExecuteStatementInputTransformInput_{} + +type ExecuteStatementInputTransformInput_ExecuteStatementInputTransformInput struct { + SdkInput m_ComAmazonawsDynamodbTypes.ExecuteStatementInput +} + +func (ExecuteStatementInputTransformInput_ExecuteStatementInputTransformInput) isExecuteStatementInputTransformInput() { +} + +func (CompanionStruct_ExecuteStatementInputTransformInput_) Create_ExecuteStatementInputTransformInput_(SdkInput m_ComAmazonawsDynamodbTypes.ExecuteStatementInput) ExecuteStatementInputTransformInput { + return ExecuteStatementInputTransformInput{ExecuteStatementInputTransformInput_ExecuteStatementInputTransformInput{SdkInput}} +} + +func (_this ExecuteStatementInputTransformInput) Is_ExecuteStatementInputTransformInput() bool { + _, ok := _this.Get_().(ExecuteStatementInputTransformInput_ExecuteStatementInputTransformInput) + return ok +} + +func (CompanionStruct_ExecuteStatementInputTransformInput_) Default() ExecuteStatementInputTransformInput { + return Companion_ExecuteStatementInputTransformInput_.Create_ExecuteStatementInputTransformInput_(m_ComAmazonawsDynamodbTypes.Companion_ExecuteStatementInput_.Default()) +} + +func (_this ExecuteStatementInputTransformInput) Dtor_sdkInput() m_ComAmazonawsDynamodbTypes.ExecuteStatementInput { + return _this.Get_().(ExecuteStatementInputTransformInput_ExecuteStatementInputTransformInput).SdkInput +} + +func (_this ExecuteStatementInputTransformInput) String() string { + switch data := _this.Get_().(type) { + case nil: + return "null" + case ExecuteStatementInputTransformInput_ExecuteStatementInputTransformInput: + { + return "AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.ExecuteStatementInputTransformInput.ExecuteStatementInputTransformInput" + "(" + _dafny.String(data.SdkInput) + ")" + } + default: + { + return "" + } + } +} + +func (_this ExecuteStatementInputTransformInput) Equals(other ExecuteStatementInputTransformInput) bool { + switch data1 := _this.Get_().(type) { + case ExecuteStatementInputTransformInput_ExecuteStatementInputTransformInput: + { + data2, ok := other.Get_().(ExecuteStatementInputTransformInput_ExecuteStatementInputTransformInput) + return ok && data1.SdkInput.Equals(data2.SdkInput) + } + default: + { + return false // unexpected + } + } +} + +func (_this ExecuteStatementInputTransformInput) EqualsGeneric(other interface{}) bool { + typed, ok := other.(ExecuteStatementInputTransformInput) + return ok && _this.Equals(typed) +} + +func Type_ExecuteStatementInputTransformInput_() _dafny.TypeDescriptor { + return type_ExecuteStatementInputTransformInput_{} +} + +type type_ExecuteStatementInputTransformInput_ struct { +} + +func (_this type_ExecuteStatementInputTransformInput_) Default() interface{} { + return Companion_ExecuteStatementInputTransformInput_.Default() +} + +func (_this type_ExecuteStatementInputTransformInput_) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.ExecuteStatementInputTransformInput" +} +func (_this ExecuteStatementInputTransformInput) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = ExecuteStatementInputTransformInput{} + +// End of datatype ExecuteStatementInputTransformInput + +// Definition of datatype ExecuteStatementInputTransformOutput +type ExecuteStatementInputTransformOutput struct { + Data_ExecuteStatementInputTransformOutput_ +} + +func (_this ExecuteStatementInputTransformOutput) Get_() Data_ExecuteStatementInputTransformOutput_ { + return _this.Data_ExecuteStatementInputTransformOutput_ +} + +type Data_ExecuteStatementInputTransformOutput_ interface { + isExecuteStatementInputTransformOutput() +} + +type CompanionStruct_ExecuteStatementInputTransformOutput_ struct { +} + +var Companion_ExecuteStatementInputTransformOutput_ = CompanionStruct_ExecuteStatementInputTransformOutput_{} + +type ExecuteStatementInputTransformOutput_ExecuteStatementInputTransformOutput struct { + TransformedInput m_ComAmazonawsDynamodbTypes.ExecuteStatementInput +} + +func (ExecuteStatementInputTransformOutput_ExecuteStatementInputTransformOutput) isExecuteStatementInputTransformOutput() { +} + +func (CompanionStruct_ExecuteStatementInputTransformOutput_) Create_ExecuteStatementInputTransformOutput_(TransformedInput m_ComAmazonawsDynamodbTypes.ExecuteStatementInput) ExecuteStatementInputTransformOutput { + return ExecuteStatementInputTransformOutput{ExecuteStatementInputTransformOutput_ExecuteStatementInputTransformOutput{TransformedInput}} +} + +func (_this ExecuteStatementInputTransformOutput) Is_ExecuteStatementInputTransformOutput() bool { + _, ok := _this.Get_().(ExecuteStatementInputTransformOutput_ExecuteStatementInputTransformOutput) + return ok +} + +func (CompanionStruct_ExecuteStatementInputTransformOutput_) Default() ExecuteStatementInputTransformOutput { + return Companion_ExecuteStatementInputTransformOutput_.Create_ExecuteStatementInputTransformOutput_(m_ComAmazonawsDynamodbTypes.Companion_ExecuteStatementInput_.Default()) +} + +func (_this ExecuteStatementInputTransformOutput) Dtor_transformedInput() m_ComAmazonawsDynamodbTypes.ExecuteStatementInput { + return _this.Get_().(ExecuteStatementInputTransformOutput_ExecuteStatementInputTransformOutput).TransformedInput +} + +func (_this ExecuteStatementInputTransformOutput) String() string { + switch data := _this.Get_().(type) { + case nil: + return "null" + case ExecuteStatementInputTransformOutput_ExecuteStatementInputTransformOutput: + { + return "AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.ExecuteStatementInputTransformOutput.ExecuteStatementInputTransformOutput" + "(" + _dafny.String(data.TransformedInput) + ")" + } + default: + { + return "" + } + } +} + +func (_this ExecuteStatementInputTransformOutput) Equals(other ExecuteStatementInputTransformOutput) bool { + switch data1 := _this.Get_().(type) { + case ExecuteStatementInputTransformOutput_ExecuteStatementInputTransformOutput: + { + data2, ok := other.Get_().(ExecuteStatementInputTransformOutput_ExecuteStatementInputTransformOutput) + return ok && data1.TransformedInput.Equals(data2.TransformedInput) + } + default: + { + return false // unexpected + } + } +} + +func (_this ExecuteStatementInputTransformOutput) EqualsGeneric(other interface{}) bool { + typed, ok := other.(ExecuteStatementInputTransformOutput) + return ok && _this.Equals(typed) +} + +func Type_ExecuteStatementInputTransformOutput_() _dafny.TypeDescriptor { + return type_ExecuteStatementInputTransformOutput_{} +} + +type type_ExecuteStatementInputTransformOutput_ struct { +} + +func (_this type_ExecuteStatementInputTransformOutput_) Default() interface{} { + return Companion_ExecuteStatementInputTransformOutput_.Default() +} + +func (_this type_ExecuteStatementInputTransformOutput_) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.ExecuteStatementInputTransformOutput" +} +func (_this ExecuteStatementInputTransformOutput) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = ExecuteStatementInputTransformOutput{} + +// End of datatype ExecuteStatementInputTransformOutput + +// Definition of datatype ExecuteStatementOutputTransformInput +type ExecuteStatementOutputTransformInput struct { + Data_ExecuteStatementOutputTransformInput_ +} + +func (_this ExecuteStatementOutputTransformInput) Get_() Data_ExecuteStatementOutputTransformInput_ { + return _this.Data_ExecuteStatementOutputTransformInput_ +} + +type Data_ExecuteStatementOutputTransformInput_ interface { + isExecuteStatementOutputTransformInput() +} + +type CompanionStruct_ExecuteStatementOutputTransformInput_ struct { +} + +var Companion_ExecuteStatementOutputTransformInput_ = CompanionStruct_ExecuteStatementOutputTransformInput_{} + +type ExecuteStatementOutputTransformInput_ExecuteStatementOutputTransformInput struct { + SdkOutput m_ComAmazonawsDynamodbTypes.ExecuteStatementOutput + OriginalInput m_ComAmazonawsDynamodbTypes.ExecuteStatementInput +} + +func (ExecuteStatementOutputTransformInput_ExecuteStatementOutputTransformInput) isExecuteStatementOutputTransformInput() { +} + +func (CompanionStruct_ExecuteStatementOutputTransformInput_) Create_ExecuteStatementOutputTransformInput_(SdkOutput m_ComAmazonawsDynamodbTypes.ExecuteStatementOutput, OriginalInput m_ComAmazonawsDynamodbTypes.ExecuteStatementInput) ExecuteStatementOutputTransformInput { + return ExecuteStatementOutputTransformInput{ExecuteStatementOutputTransformInput_ExecuteStatementOutputTransformInput{SdkOutput, OriginalInput}} +} + +func (_this ExecuteStatementOutputTransformInput) Is_ExecuteStatementOutputTransformInput() bool { + _, ok := _this.Get_().(ExecuteStatementOutputTransformInput_ExecuteStatementOutputTransformInput) + return ok +} + +func (CompanionStruct_ExecuteStatementOutputTransformInput_) Default() ExecuteStatementOutputTransformInput { + return Companion_ExecuteStatementOutputTransformInput_.Create_ExecuteStatementOutputTransformInput_(m_ComAmazonawsDynamodbTypes.Companion_ExecuteStatementOutput_.Default(), m_ComAmazonawsDynamodbTypes.Companion_ExecuteStatementInput_.Default()) +} + +func (_this ExecuteStatementOutputTransformInput) Dtor_sdkOutput() m_ComAmazonawsDynamodbTypes.ExecuteStatementOutput { + return _this.Get_().(ExecuteStatementOutputTransformInput_ExecuteStatementOutputTransformInput).SdkOutput +} + +func (_this ExecuteStatementOutputTransformInput) Dtor_originalInput() m_ComAmazonawsDynamodbTypes.ExecuteStatementInput { + return _this.Get_().(ExecuteStatementOutputTransformInput_ExecuteStatementOutputTransformInput).OriginalInput +} + +func (_this ExecuteStatementOutputTransformInput) String() string { + switch data := _this.Get_().(type) { + case nil: + return "null" + case ExecuteStatementOutputTransformInput_ExecuteStatementOutputTransformInput: + { + return "AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.ExecuteStatementOutputTransformInput.ExecuteStatementOutputTransformInput" + "(" + _dafny.String(data.SdkOutput) + ", " + _dafny.String(data.OriginalInput) + ")" + } + default: + { + return "" + } + } +} + +func (_this ExecuteStatementOutputTransformInput) Equals(other ExecuteStatementOutputTransformInput) bool { + switch data1 := _this.Get_().(type) { + case ExecuteStatementOutputTransformInput_ExecuteStatementOutputTransformInput: + { + data2, ok := other.Get_().(ExecuteStatementOutputTransformInput_ExecuteStatementOutputTransformInput) + return ok && data1.SdkOutput.Equals(data2.SdkOutput) && data1.OriginalInput.Equals(data2.OriginalInput) + } + default: + { + return false // unexpected + } + } +} + +func (_this ExecuteStatementOutputTransformInput) EqualsGeneric(other interface{}) bool { + typed, ok := other.(ExecuteStatementOutputTransformInput) + return ok && _this.Equals(typed) +} + +func Type_ExecuteStatementOutputTransformInput_() _dafny.TypeDescriptor { + return type_ExecuteStatementOutputTransformInput_{} +} + +type type_ExecuteStatementOutputTransformInput_ struct { +} + +func (_this type_ExecuteStatementOutputTransformInput_) Default() interface{} { + return Companion_ExecuteStatementOutputTransformInput_.Default() +} + +func (_this type_ExecuteStatementOutputTransformInput_) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.ExecuteStatementOutputTransformInput" +} +func (_this ExecuteStatementOutputTransformInput) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = ExecuteStatementOutputTransformInput{} + +// End of datatype ExecuteStatementOutputTransformInput + +// Definition of datatype ExecuteStatementOutputTransformOutput +type ExecuteStatementOutputTransformOutput struct { + Data_ExecuteStatementOutputTransformOutput_ +} + +func (_this ExecuteStatementOutputTransformOutput) Get_() Data_ExecuteStatementOutputTransformOutput_ { + return _this.Data_ExecuteStatementOutputTransformOutput_ +} + +type Data_ExecuteStatementOutputTransformOutput_ interface { + isExecuteStatementOutputTransformOutput() +} + +type CompanionStruct_ExecuteStatementOutputTransformOutput_ struct { +} + +var Companion_ExecuteStatementOutputTransformOutput_ = CompanionStruct_ExecuteStatementOutputTransformOutput_{} + +type ExecuteStatementOutputTransformOutput_ExecuteStatementOutputTransformOutput struct { + TransformedOutput m_ComAmazonawsDynamodbTypes.ExecuteStatementOutput +} + +func (ExecuteStatementOutputTransformOutput_ExecuteStatementOutputTransformOutput) isExecuteStatementOutputTransformOutput() { +} + +func (CompanionStruct_ExecuteStatementOutputTransformOutput_) Create_ExecuteStatementOutputTransformOutput_(TransformedOutput m_ComAmazonawsDynamodbTypes.ExecuteStatementOutput) ExecuteStatementOutputTransformOutput { + return ExecuteStatementOutputTransformOutput{ExecuteStatementOutputTransformOutput_ExecuteStatementOutputTransformOutput{TransformedOutput}} +} + +func (_this ExecuteStatementOutputTransformOutput) Is_ExecuteStatementOutputTransformOutput() bool { + _, ok := _this.Get_().(ExecuteStatementOutputTransformOutput_ExecuteStatementOutputTransformOutput) + return ok +} + +func (CompanionStruct_ExecuteStatementOutputTransformOutput_) Default() ExecuteStatementOutputTransformOutput { + return Companion_ExecuteStatementOutputTransformOutput_.Create_ExecuteStatementOutputTransformOutput_(m_ComAmazonawsDynamodbTypes.Companion_ExecuteStatementOutput_.Default()) +} + +func (_this ExecuteStatementOutputTransformOutput) Dtor_transformedOutput() m_ComAmazonawsDynamodbTypes.ExecuteStatementOutput { + return _this.Get_().(ExecuteStatementOutputTransformOutput_ExecuteStatementOutputTransformOutput).TransformedOutput +} + +func (_this ExecuteStatementOutputTransformOutput) String() string { + switch data := _this.Get_().(type) { + case nil: + return "null" + case ExecuteStatementOutputTransformOutput_ExecuteStatementOutputTransformOutput: + { + return "AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.ExecuteStatementOutputTransformOutput.ExecuteStatementOutputTransformOutput" + "(" + _dafny.String(data.TransformedOutput) + ")" + } + default: + { + return "" + } + } +} + +func (_this ExecuteStatementOutputTransformOutput) Equals(other ExecuteStatementOutputTransformOutput) bool { + switch data1 := _this.Get_().(type) { + case ExecuteStatementOutputTransformOutput_ExecuteStatementOutputTransformOutput: + { + data2, ok := other.Get_().(ExecuteStatementOutputTransformOutput_ExecuteStatementOutputTransformOutput) + return ok && data1.TransformedOutput.Equals(data2.TransformedOutput) + } + default: + { + return false // unexpected + } + } +} + +func (_this ExecuteStatementOutputTransformOutput) EqualsGeneric(other interface{}) bool { + typed, ok := other.(ExecuteStatementOutputTransformOutput) + return ok && _this.Equals(typed) +} + +func Type_ExecuteStatementOutputTransformOutput_() _dafny.TypeDescriptor { + return type_ExecuteStatementOutputTransformOutput_{} +} + +type type_ExecuteStatementOutputTransformOutput_ struct { +} + +func (_this type_ExecuteStatementOutputTransformOutput_) Default() interface{} { + return Companion_ExecuteStatementOutputTransformOutput_.Default() +} + +func (_this type_ExecuteStatementOutputTransformOutput_) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.ExecuteStatementOutputTransformOutput" +} +func (_this ExecuteStatementOutputTransformOutput) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = ExecuteStatementOutputTransformOutput{} + +// End of datatype ExecuteStatementOutputTransformOutput + +// Definition of datatype ExecuteTransactionInputTransformInput +type ExecuteTransactionInputTransformInput struct { + Data_ExecuteTransactionInputTransformInput_ +} + +func (_this ExecuteTransactionInputTransformInput) Get_() Data_ExecuteTransactionInputTransformInput_ { + return _this.Data_ExecuteTransactionInputTransformInput_ +} + +type Data_ExecuteTransactionInputTransformInput_ interface { + isExecuteTransactionInputTransformInput() +} + +type CompanionStruct_ExecuteTransactionInputTransformInput_ struct { +} + +var Companion_ExecuteTransactionInputTransformInput_ = CompanionStruct_ExecuteTransactionInputTransformInput_{} + +type ExecuteTransactionInputTransformInput_ExecuteTransactionInputTransformInput struct { + SdkInput m_ComAmazonawsDynamodbTypes.ExecuteTransactionInput +} + +func (ExecuteTransactionInputTransformInput_ExecuteTransactionInputTransformInput) isExecuteTransactionInputTransformInput() { +} + +func (CompanionStruct_ExecuteTransactionInputTransformInput_) Create_ExecuteTransactionInputTransformInput_(SdkInput m_ComAmazonawsDynamodbTypes.ExecuteTransactionInput) ExecuteTransactionInputTransformInput { + return ExecuteTransactionInputTransformInput{ExecuteTransactionInputTransformInput_ExecuteTransactionInputTransformInput{SdkInput}} +} + +func (_this ExecuteTransactionInputTransformInput) Is_ExecuteTransactionInputTransformInput() bool { + _, ok := _this.Get_().(ExecuteTransactionInputTransformInput_ExecuteTransactionInputTransformInput) + return ok +} + +func (CompanionStruct_ExecuteTransactionInputTransformInput_) Default() ExecuteTransactionInputTransformInput { + return Companion_ExecuteTransactionInputTransformInput_.Create_ExecuteTransactionInputTransformInput_(m_ComAmazonawsDynamodbTypes.Companion_ExecuteTransactionInput_.Default()) +} + +func (_this ExecuteTransactionInputTransformInput) Dtor_sdkInput() m_ComAmazonawsDynamodbTypes.ExecuteTransactionInput { + return _this.Get_().(ExecuteTransactionInputTransformInput_ExecuteTransactionInputTransformInput).SdkInput +} + +func (_this ExecuteTransactionInputTransformInput) String() string { + switch data := _this.Get_().(type) { + case nil: + return "null" + case ExecuteTransactionInputTransformInput_ExecuteTransactionInputTransformInput: + { + return "AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.ExecuteTransactionInputTransformInput.ExecuteTransactionInputTransformInput" + "(" + _dafny.String(data.SdkInput) + ")" + } + default: + { + return "" + } + } +} + +func (_this ExecuteTransactionInputTransformInput) Equals(other ExecuteTransactionInputTransformInput) bool { + switch data1 := _this.Get_().(type) { + case ExecuteTransactionInputTransformInput_ExecuteTransactionInputTransformInput: + { + data2, ok := other.Get_().(ExecuteTransactionInputTransformInput_ExecuteTransactionInputTransformInput) + return ok && data1.SdkInput.Equals(data2.SdkInput) + } + default: + { + return false // unexpected + } + } +} + +func (_this ExecuteTransactionInputTransformInput) EqualsGeneric(other interface{}) bool { + typed, ok := other.(ExecuteTransactionInputTransformInput) + return ok && _this.Equals(typed) +} + +func Type_ExecuteTransactionInputTransformInput_() _dafny.TypeDescriptor { + return type_ExecuteTransactionInputTransformInput_{} +} + +type type_ExecuteTransactionInputTransformInput_ struct { +} + +func (_this type_ExecuteTransactionInputTransformInput_) Default() interface{} { + return Companion_ExecuteTransactionInputTransformInput_.Default() +} + +func (_this type_ExecuteTransactionInputTransformInput_) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.ExecuteTransactionInputTransformInput" +} +func (_this ExecuteTransactionInputTransformInput) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = ExecuteTransactionInputTransformInput{} + +// End of datatype ExecuteTransactionInputTransformInput + +// Definition of datatype ExecuteTransactionInputTransformOutput +type ExecuteTransactionInputTransformOutput struct { + Data_ExecuteTransactionInputTransformOutput_ +} + +func (_this ExecuteTransactionInputTransformOutput) Get_() Data_ExecuteTransactionInputTransformOutput_ { + return _this.Data_ExecuteTransactionInputTransformOutput_ +} + +type Data_ExecuteTransactionInputTransformOutput_ interface { + isExecuteTransactionInputTransformOutput() +} + +type CompanionStruct_ExecuteTransactionInputTransformOutput_ struct { +} + +var Companion_ExecuteTransactionInputTransformOutput_ = CompanionStruct_ExecuteTransactionInputTransformOutput_{} + +type ExecuteTransactionInputTransformOutput_ExecuteTransactionInputTransformOutput struct { + TransformedInput m_ComAmazonawsDynamodbTypes.ExecuteTransactionInput +} + +func (ExecuteTransactionInputTransformOutput_ExecuteTransactionInputTransformOutput) isExecuteTransactionInputTransformOutput() { +} + +func (CompanionStruct_ExecuteTransactionInputTransformOutput_) Create_ExecuteTransactionInputTransformOutput_(TransformedInput m_ComAmazonawsDynamodbTypes.ExecuteTransactionInput) ExecuteTransactionInputTransformOutput { + return ExecuteTransactionInputTransformOutput{ExecuteTransactionInputTransformOutput_ExecuteTransactionInputTransformOutput{TransformedInput}} +} + +func (_this ExecuteTransactionInputTransformOutput) Is_ExecuteTransactionInputTransformOutput() bool { + _, ok := _this.Get_().(ExecuteTransactionInputTransformOutput_ExecuteTransactionInputTransformOutput) + return ok +} + +func (CompanionStruct_ExecuteTransactionInputTransformOutput_) Default() ExecuteTransactionInputTransformOutput { + return Companion_ExecuteTransactionInputTransformOutput_.Create_ExecuteTransactionInputTransformOutput_(m_ComAmazonawsDynamodbTypes.Companion_ExecuteTransactionInput_.Default()) +} + +func (_this ExecuteTransactionInputTransformOutput) Dtor_transformedInput() m_ComAmazonawsDynamodbTypes.ExecuteTransactionInput { + return _this.Get_().(ExecuteTransactionInputTransformOutput_ExecuteTransactionInputTransformOutput).TransformedInput +} + +func (_this ExecuteTransactionInputTransformOutput) String() string { + switch data := _this.Get_().(type) { + case nil: + return "null" + case ExecuteTransactionInputTransformOutput_ExecuteTransactionInputTransformOutput: + { + return "AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.ExecuteTransactionInputTransformOutput.ExecuteTransactionInputTransformOutput" + "(" + _dafny.String(data.TransformedInput) + ")" + } + default: + { + return "" + } + } +} + +func (_this ExecuteTransactionInputTransformOutput) Equals(other ExecuteTransactionInputTransformOutput) bool { + switch data1 := _this.Get_().(type) { + case ExecuteTransactionInputTransformOutput_ExecuteTransactionInputTransformOutput: + { + data2, ok := other.Get_().(ExecuteTransactionInputTransformOutput_ExecuteTransactionInputTransformOutput) + return ok && data1.TransformedInput.Equals(data2.TransformedInput) + } + default: + { + return false // unexpected + } + } +} + +func (_this ExecuteTransactionInputTransformOutput) EqualsGeneric(other interface{}) bool { + typed, ok := other.(ExecuteTransactionInputTransformOutput) + return ok && _this.Equals(typed) +} + +func Type_ExecuteTransactionInputTransformOutput_() _dafny.TypeDescriptor { + return type_ExecuteTransactionInputTransformOutput_{} +} + +type type_ExecuteTransactionInputTransformOutput_ struct { +} + +func (_this type_ExecuteTransactionInputTransformOutput_) Default() interface{} { + return Companion_ExecuteTransactionInputTransformOutput_.Default() +} + +func (_this type_ExecuteTransactionInputTransformOutput_) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.ExecuteTransactionInputTransformOutput" +} +func (_this ExecuteTransactionInputTransformOutput) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = ExecuteTransactionInputTransformOutput{} + +// End of datatype ExecuteTransactionInputTransformOutput + +// Definition of datatype ExecuteTransactionOutputTransformInput +type ExecuteTransactionOutputTransformInput struct { + Data_ExecuteTransactionOutputTransformInput_ +} + +func (_this ExecuteTransactionOutputTransformInput) Get_() Data_ExecuteTransactionOutputTransformInput_ { + return _this.Data_ExecuteTransactionOutputTransformInput_ +} + +type Data_ExecuteTransactionOutputTransformInput_ interface { + isExecuteTransactionOutputTransformInput() +} + +type CompanionStruct_ExecuteTransactionOutputTransformInput_ struct { +} + +var Companion_ExecuteTransactionOutputTransformInput_ = CompanionStruct_ExecuteTransactionOutputTransformInput_{} + +type ExecuteTransactionOutputTransformInput_ExecuteTransactionOutputTransformInput struct { + SdkOutput m_ComAmazonawsDynamodbTypes.ExecuteTransactionOutput + OriginalInput m_ComAmazonawsDynamodbTypes.ExecuteTransactionInput +} + +func (ExecuteTransactionOutputTransformInput_ExecuteTransactionOutputTransformInput) isExecuteTransactionOutputTransformInput() { +} + +func (CompanionStruct_ExecuteTransactionOutputTransformInput_) Create_ExecuteTransactionOutputTransformInput_(SdkOutput m_ComAmazonawsDynamodbTypes.ExecuteTransactionOutput, OriginalInput m_ComAmazonawsDynamodbTypes.ExecuteTransactionInput) ExecuteTransactionOutputTransformInput { + return ExecuteTransactionOutputTransformInput{ExecuteTransactionOutputTransformInput_ExecuteTransactionOutputTransformInput{SdkOutput, OriginalInput}} +} + +func (_this ExecuteTransactionOutputTransformInput) Is_ExecuteTransactionOutputTransformInput() bool { + _, ok := _this.Get_().(ExecuteTransactionOutputTransformInput_ExecuteTransactionOutputTransformInput) + return ok +} + +func (CompanionStruct_ExecuteTransactionOutputTransformInput_) Default() ExecuteTransactionOutputTransformInput { + return Companion_ExecuteTransactionOutputTransformInput_.Create_ExecuteTransactionOutputTransformInput_(m_ComAmazonawsDynamodbTypes.Companion_ExecuteTransactionOutput_.Default(), m_ComAmazonawsDynamodbTypes.Companion_ExecuteTransactionInput_.Default()) +} + +func (_this ExecuteTransactionOutputTransformInput) Dtor_sdkOutput() m_ComAmazonawsDynamodbTypes.ExecuteTransactionOutput { + return _this.Get_().(ExecuteTransactionOutputTransformInput_ExecuteTransactionOutputTransformInput).SdkOutput +} + +func (_this ExecuteTransactionOutputTransformInput) Dtor_originalInput() m_ComAmazonawsDynamodbTypes.ExecuteTransactionInput { + return _this.Get_().(ExecuteTransactionOutputTransformInput_ExecuteTransactionOutputTransformInput).OriginalInput +} + +func (_this ExecuteTransactionOutputTransformInput) String() string { + switch data := _this.Get_().(type) { + case nil: + return "null" + case ExecuteTransactionOutputTransformInput_ExecuteTransactionOutputTransformInput: + { + return "AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.ExecuteTransactionOutputTransformInput.ExecuteTransactionOutputTransformInput" + "(" + _dafny.String(data.SdkOutput) + ", " + _dafny.String(data.OriginalInput) + ")" + } + default: + { + return "" + } + } +} + +func (_this ExecuteTransactionOutputTransformInput) Equals(other ExecuteTransactionOutputTransformInput) bool { + switch data1 := _this.Get_().(type) { + case ExecuteTransactionOutputTransformInput_ExecuteTransactionOutputTransformInput: + { + data2, ok := other.Get_().(ExecuteTransactionOutputTransformInput_ExecuteTransactionOutputTransformInput) + return ok && data1.SdkOutput.Equals(data2.SdkOutput) && data1.OriginalInput.Equals(data2.OriginalInput) + } + default: + { + return false // unexpected + } + } +} + +func (_this ExecuteTransactionOutputTransformInput) EqualsGeneric(other interface{}) bool { + typed, ok := other.(ExecuteTransactionOutputTransformInput) + return ok && _this.Equals(typed) +} + +func Type_ExecuteTransactionOutputTransformInput_() _dafny.TypeDescriptor { + return type_ExecuteTransactionOutputTransformInput_{} +} + +type type_ExecuteTransactionOutputTransformInput_ struct { +} + +func (_this type_ExecuteTransactionOutputTransformInput_) Default() interface{} { + return Companion_ExecuteTransactionOutputTransformInput_.Default() +} + +func (_this type_ExecuteTransactionOutputTransformInput_) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.ExecuteTransactionOutputTransformInput" +} +func (_this ExecuteTransactionOutputTransformInput) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = ExecuteTransactionOutputTransformInput{} + +// End of datatype ExecuteTransactionOutputTransformInput + +// Definition of datatype ExecuteTransactionOutputTransformOutput +type ExecuteTransactionOutputTransformOutput struct { + Data_ExecuteTransactionOutputTransformOutput_ +} + +func (_this ExecuteTransactionOutputTransformOutput) Get_() Data_ExecuteTransactionOutputTransformOutput_ { + return _this.Data_ExecuteTransactionOutputTransformOutput_ +} + +type Data_ExecuteTransactionOutputTransformOutput_ interface { + isExecuteTransactionOutputTransformOutput() +} + +type CompanionStruct_ExecuteTransactionOutputTransformOutput_ struct { +} + +var Companion_ExecuteTransactionOutputTransformOutput_ = CompanionStruct_ExecuteTransactionOutputTransformOutput_{} + +type ExecuteTransactionOutputTransformOutput_ExecuteTransactionOutputTransformOutput struct { + TransformedOutput m_ComAmazonawsDynamodbTypes.ExecuteTransactionOutput +} + +func (ExecuteTransactionOutputTransformOutput_ExecuteTransactionOutputTransformOutput) isExecuteTransactionOutputTransformOutput() { +} + +func (CompanionStruct_ExecuteTransactionOutputTransformOutput_) Create_ExecuteTransactionOutputTransformOutput_(TransformedOutput m_ComAmazonawsDynamodbTypes.ExecuteTransactionOutput) ExecuteTransactionOutputTransformOutput { + return ExecuteTransactionOutputTransformOutput{ExecuteTransactionOutputTransformOutput_ExecuteTransactionOutputTransformOutput{TransformedOutput}} +} + +func (_this ExecuteTransactionOutputTransformOutput) Is_ExecuteTransactionOutputTransformOutput() bool { + _, ok := _this.Get_().(ExecuteTransactionOutputTransformOutput_ExecuteTransactionOutputTransformOutput) + return ok +} + +func (CompanionStruct_ExecuteTransactionOutputTransformOutput_) Default() ExecuteTransactionOutputTransformOutput { + return Companion_ExecuteTransactionOutputTransformOutput_.Create_ExecuteTransactionOutputTransformOutput_(m_ComAmazonawsDynamodbTypes.Companion_ExecuteTransactionOutput_.Default()) +} + +func (_this ExecuteTransactionOutputTransformOutput) Dtor_transformedOutput() m_ComAmazonawsDynamodbTypes.ExecuteTransactionOutput { + return _this.Get_().(ExecuteTransactionOutputTransformOutput_ExecuteTransactionOutputTransformOutput).TransformedOutput +} + +func (_this ExecuteTransactionOutputTransformOutput) String() string { + switch data := _this.Get_().(type) { + case nil: + return "null" + case ExecuteTransactionOutputTransformOutput_ExecuteTransactionOutputTransformOutput: + { + return "AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.ExecuteTransactionOutputTransformOutput.ExecuteTransactionOutputTransformOutput" + "(" + _dafny.String(data.TransformedOutput) + ")" + } + default: + { + return "" + } + } +} + +func (_this ExecuteTransactionOutputTransformOutput) Equals(other ExecuteTransactionOutputTransformOutput) bool { + switch data1 := _this.Get_().(type) { + case ExecuteTransactionOutputTransformOutput_ExecuteTransactionOutputTransformOutput: + { + data2, ok := other.Get_().(ExecuteTransactionOutputTransformOutput_ExecuteTransactionOutputTransformOutput) + return ok && data1.TransformedOutput.Equals(data2.TransformedOutput) + } + default: + { + return false // unexpected + } + } +} + +func (_this ExecuteTransactionOutputTransformOutput) EqualsGeneric(other interface{}) bool { + typed, ok := other.(ExecuteTransactionOutputTransformOutput) + return ok && _this.Equals(typed) +} + +func Type_ExecuteTransactionOutputTransformOutput_() _dafny.TypeDescriptor { + return type_ExecuteTransactionOutputTransformOutput_{} +} + +type type_ExecuteTransactionOutputTransformOutput_ struct { +} + +func (_this type_ExecuteTransactionOutputTransformOutput_) Default() interface{} { + return Companion_ExecuteTransactionOutputTransformOutput_.Default() +} + +func (_this type_ExecuteTransactionOutputTransformOutput_) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.ExecuteTransactionOutputTransformOutput" +} +func (_this ExecuteTransactionOutputTransformOutput) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = ExecuteTransactionOutputTransformOutput{} + +// End of datatype ExecuteTransactionOutputTransformOutput + +// Definition of datatype GetItemInputTransformInput +type GetItemInputTransformInput struct { + Data_GetItemInputTransformInput_ +} + +func (_this GetItemInputTransformInput) Get_() Data_GetItemInputTransformInput_ { + return _this.Data_GetItemInputTransformInput_ +} + +type Data_GetItemInputTransformInput_ interface { + isGetItemInputTransformInput() +} + +type CompanionStruct_GetItemInputTransformInput_ struct { +} + +var Companion_GetItemInputTransformInput_ = CompanionStruct_GetItemInputTransformInput_{} + +type GetItemInputTransformInput_GetItemInputTransformInput struct { + SdkInput m_ComAmazonawsDynamodbTypes.GetItemInput +} + +func (GetItemInputTransformInput_GetItemInputTransformInput) isGetItemInputTransformInput() {} + +func (CompanionStruct_GetItemInputTransformInput_) Create_GetItemInputTransformInput_(SdkInput m_ComAmazonawsDynamodbTypes.GetItemInput) GetItemInputTransformInput { + return GetItemInputTransformInput{GetItemInputTransformInput_GetItemInputTransformInput{SdkInput}} +} + +func (_this GetItemInputTransformInput) Is_GetItemInputTransformInput() bool { + _, ok := _this.Get_().(GetItemInputTransformInput_GetItemInputTransformInput) + return ok +} + +func (CompanionStruct_GetItemInputTransformInput_) Default() GetItemInputTransformInput { + return Companion_GetItemInputTransformInput_.Create_GetItemInputTransformInput_(m_ComAmazonawsDynamodbTypes.Companion_GetItemInput_.Default()) +} + +func (_this GetItemInputTransformInput) Dtor_sdkInput() m_ComAmazonawsDynamodbTypes.GetItemInput { + return _this.Get_().(GetItemInputTransformInput_GetItemInputTransformInput).SdkInput +} + +func (_this GetItemInputTransformInput) String() string { + switch data := _this.Get_().(type) { + case nil: + return "null" + case GetItemInputTransformInput_GetItemInputTransformInput: + { + return "AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.GetItemInputTransformInput.GetItemInputTransformInput" + "(" + _dafny.String(data.SdkInput) + ")" + } + default: + { + return "" + } + } +} + +func (_this GetItemInputTransformInput) Equals(other GetItemInputTransformInput) bool { + switch data1 := _this.Get_().(type) { + case GetItemInputTransformInput_GetItemInputTransformInput: + { + data2, ok := other.Get_().(GetItemInputTransformInput_GetItemInputTransformInput) + return ok && data1.SdkInput.Equals(data2.SdkInput) + } + default: + { + return false // unexpected + } + } +} + +func (_this GetItemInputTransformInput) EqualsGeneric(other interface{}) bool { + typed, ok := other.(GetItemInputTransformInput) + return ok && _this.Equals(typed) +} + +func Type_GetItemInputTransformInput_() _dafny.TypeDescriptor { + return type_GetItemInputTransformInput_{} +} + +type type_GetItemInputTransformInput_ struct { +} + +func (_this type_GetItemInputTransformInput_) Default() interface{} { + return Companion_GetItemInputTransformInput_.Default() +} + +func (_this type_GetItemInputTransformInput_) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.GetItemInputTransformInput" +} +func (_this GetItemInputTransformInput) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = GetItemInputTransformInput{} + +// End of datatype GetItemInputTransformInput + +// Definition of datatype GetItemInputTransformOutput +type GetItemInputTransformOutput struct { + Data_GetItemInputTransformOutput_ +} + +func (_this GetItemInputTransformOutput) Get_() Data_GetItemInputTransformOutput_ { + return _this.Data_GetItemInputTransformOutput_ +} + +type Data_GetItemInputTransformOutput_ interface { + isGetItemInputTransformOutput() +} + +type CompanionStruct_GetItemInputTransformOutput_ struct { +} + +var Companion_GetItemInputTransformOutput_ = CompanionStruct_GetItemInputTransformOutput_{} + +type GetItemInputTransformOutput_GetItemInputTransformOutput struct { + TransformedInput m_ComAmazonawsDynamodbTypes.GetItemInput +} + +func (GetItemInputTransformOutput_GetItemInputTransformOutput) isGetItemInputTransformOutput() {} + +func (CompanionStruct_GetItemInputTransformOutput_) Create_GetItemInputTransformOutput_(TransformedInput m_ComAmazonawsDynamodbTypes.GetItemInput) GetItemInputTransformOutput { + return GetItemInputTransformOutput{GetItemInputTransformOutput_GetItemInputTransformOutput{TransformedInput}} +} + +func (_this GetItemInputTransformOutput) Is_GetItemInputTransformOutput() bool { + _, ok := _this.Get_().(GetItemInputTransformOutput_GetItemInputTransformOutput) + return ok +} + +func (CompanionStruct_GetItemInputTransformOutput_) Default() GetItemInputTransformOutput { + return Companion_GetItemInputTransformOutput_.Create_GetItemInputTransformOutput_(m_ComAmazonawsDynamodbTypes.Companion_GetItemInput_.Default()) +} + +func (_this GetItemInputTransformOutput) Dtor_transformedInput() m_ComAmazonawsDynamodbTypes.GetItemInput { + return _this.Get_().(GetItemInputTransformOutput_GetItemInputTransformOutput).TransformedInput +} + +func (_this GetItemInputTransformOutput) String() string { + switch data := _this.Get_().(type) { + case nil: + return "null" + case GetItemInputTransformOutput_GetItemInputTransformOutput: + { + return "AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.GetItemInputTransformOutput.GetItemInputTransformOutput" + "(" + _dafny.String(data.TransformedInput) + ")" + } + default: + { + return "" + } + } +} + +func (_this GetItemInputTransformOutput) Equals(other GetItemInputTransformOutput) bool { + switch data1 := _this.Get_().(type) { + case GetItemInputTransformOutput_GetItemInputTransformOutput: + { + data2, ok := other.Get_().(GetItemInputTransformOutput_GetItemInputTransformOutput) + return ok && data1.TransformedInput.Equals(data2.TransformedInput) + } + default: + { + return false // unexpected + } + } +} + +func (_this GetItemInputTransformOutput) EqualsGeneric(other interface{}) bool { + typed, ok := other.(GetItemInputTransformOutput) + return ok && _this.Equals(typed) +} + +func Type_GetItemInputTransformOutput_() _dafny.TypeDescriptor { + return type_GetItemInputTransformOutput_{} +} + +type type_GetItemInputTransformOutput_ struct { +} + +func (_this type_GetItemInputTransformOutput_) Default() interface{} { + return Companion_GetItemInputTransformOutput_.Default() +} + +func (_this type_GetItemInputTransformOutput_) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.GetItemInputTransformOutput" +} +func (_this GetItemInputTransformOutput) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = GetItemInputTransformOutput{} + +// End of datatype GetItemInputTransformOutput + +// Definition of datatype GetItemOutputTransformInput +type GetItemOutputTransformInput struct { + Data_GetItemOutputTransformInput_ +} + +func (_this GetItemOutputTransformInput) Get_() Data_GetItemOutputTransformInput_ { + return _this.Data_GetItemOutputTransformInput_ +} + +type Data_GetItemOutputTransformInput_ interface { + isGetItemOutputTransformInput() +} + +type CompanionStruct_GetItemOutputTransformInput_ struct { +} + +var Companion_GetItemOutputTransformInput_ = CompanionStruct_GetItemOutputTransformInput_{} + +type GetItemOutputTransformInput_GetItemOutputTransformInput struct { + SdkOutput m_ComAmazonawsDynamodbTypes.GetItemOutput + OriginalInput m_ComAmazonawsDynamodbTypes.GetItemInput +} + +func (GetItemOutputTransformInput_GetItemOutputTransformInput) isGetItemOutputTransformInput() {} + +func (CompanionStruct_GetItemOutputTransformInput_) Create_GetItemOutputTransformInput_(SdkOutput m_ComAmazonawsDynamodbTypes.GetItemOutput, OriginalInput m_ComAmazonawsDynamodbTypes.GetItemInput) GetItemOutputTransformInput { + return GetItemOutputTransformInput{GetItemOutputTransformInput_GetItemOutputTransformInput{SdkOutput, OriginalInput}} +} + +func (_this GetItemOutputTransformInput) Is_GetItemOutputTransformInput() bool { + _, ok := _this.Get_().(GetItemOutputTransformInput_GetItemOutputTransformInput) + return ok +} + +func (CompanionStruct_GetItemOutputTransformInput_) Default() GetItemOutputTransformInput { + return Companion_GetItemOutputTransformInput_.Create_GetItemOutputTransformInput_(m_ComAmazonawsDynamodbTypes.Companion_GetItemOutput_.Default(), m_ComAmazonawsDynamodbTypes.Companion_GetItemInput_.Default()) +} + +func (_this GetItemOutputTransformInput) Dtor_sdkOutput() m_ComAmazonawsDynamodbTypes.GetItemOutput { + return _this.Get_().(GetItemOutputTransformInput_GetItemOutputTransformInput).SdkOutput +} + +func (_this GetItemOutputTransformInput) Dtor_originalInput() m_ComAmazonawsDynamodbTypes.GetItemInput { + return _this.Get_().(GetItemOutputTransformInput_GetItemOutputTransformInput).OriginalInput +} + +func (_this GetItemOutputTransformInput) String() string { + switch data := _this.Get_().(type) { + case nil: + return "null" + case GetItemOutputTransformInput_GetItemOutputTransformInput: + { + return "AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.GetItemOutputTransformInput.GetItemOutputTransformInput" + "(" + _dafny.String(data.SdkOutput) + ", " + _dafny.String(data.OriginalInput) + ")" + } + default: + { + return "" + } + } +} + +func (_this GetItemOutputTransformInput) Equals(other GetItemOutputTransformInput) bool { + switch data1 := _this.Get_().(type) { + case GetItemOutputTransformInput_GetItemOutputTransformInput: + { + data2, ok := other.Get_().(GetItemOutputTransformInput_GetItemOutputTransformInput) + return ok && data1.SdkOutput.Equals(data2.SdkOutput) && data1.OriginalInput.Equals(data2.OriginalInput) + } + default: + { + return false // unexpected + } + } +} + +func (_this GetItemOutputTransformInput) EqualsGeneric(other interface{}) bool { + typed, ok := other.(GetItemOutputTransformInput) + return ok && _this.Equals(typed) +} + +func Type_GetItemOutputTransformInput_() _dafny.TypeDescriptor { + return type_GetItemOutputTransformInput_{} +} + +type type_GetItemOutputTransformInput_ struct { +} + +func (_this type_GetItemOutputTransformInput_) Default() interface{} { + return Companion_GetItemOutputTransformInput_.Default() +} + +func (_this type_GetItemOutputTransformInput_) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.GetItemOutputTransformInput" +} +func (_this GetItemOutputTransformInput) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = GetItemOutputTransformInput{} + +// End of datatype GetItemOutputTransformInput + +// Definition of datatype GetItemOutputTransformOutput +type GetItemOutputTransformOutput struct { + Data_GetItemOutputTransformOutput_ +} + +func (_this GetItemOutputTransformOutput) Get_() Data_GetItemOutputTransformOutput_ { + return _this.Data_GetItemOutputTransformOutput_ +} + +type Data_GetItemOutputTransformOutput_ interface { + isGetItemOutputTransformOutput() +} + +type CompanionStruct_GetItemOutputTransformOutput_ struct { +} + +var Companion_GetItemOutputTransformOutput_ = CompanionStruct_GetItemOutputTransformOutput_{} + +type GetItemOutputTransformOutput_GetItemOutputTransformOutput struct { + TransformedOutput m_ComAmazonawsDynamodbTypes.GetItemOutput +} + +func (GetItemOutputTransformOutput_GetItemOutputTransformOutput) isGetItemOutputTransformOutput() {} + +func (CompanionStruct_GetItemOutputTransformOutput_) Create_GetItemOutputTransformOutput_(TransformedOutput m_ComAmazonawsDynamodbTypes.GetItemOutput) GetItemOutputTransformOutput { + return GetItemOutputTransformOutput{GetItemOutputTransformOutput_GetItemOutputTransformOutput{TransformedOutput}} +} + +func (_this GetItemOutputTransformOutput) Is_GetItemOutputTransformOutput() bool { + _, ok := _this.Get_().(GetItemOutputTransformOutput_GetItemOutputTransformOutput) + return ok +} + +func (CompanionStruct_GetItemOutputTransformOutput_) Default() GetItemOutputTransformOutput { + return Companion_GetItemOutputTransformOutput_.Create_GetItemOutputTransformOutput_(m_ComAmazonawsDynamodbTypes.Companion_GetItemOutput_.Default()) +} + +func (_this GetItemOutputTransformOutput) Dtor_transformedOutput() m_ComAmazonawsDynamodbTypes.GetItemOutput { + return _this.Get_().(GetItemOutputTransformOutput_GetItemOutputTransformOutput).TransformedOutput +} + +func (_this GetItemOutputTransformOutput) String() string { + switch data := _this.Get_().(type) { + case nil: + return "null" + case GetItemOutputTransformOutput_GetItemOutputTransformOutput: + { + return "AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.GetItemOutputTransformOutput.GetItemOutputTransformOutput" + "(" + _dafny.String(data.TransformedOutput) + ")" + } + default: + { + return "" + } + } +} + +func (_this GetItemOutputTransformOutput) Equals(other GetItemOutputTransformOutput) bool { + switch data1 := _this.Get_().(type) { + case GetItemOutputTransformOutput_GetItemOutputTransformOutput: + { + data2, ok := other.Get_().(GetItemOutputTransformOutput_GetItemOutputTransformOutput) + return ok && data1.TransformedOutput.Equals(data2.TransformedOutput) + } + default: + { + return false // unexpected + } + } +} + +func (_this GetItemOutputTransformOutput) EqualsGeneric(other interface{}) bool { + typed, ok := other.(GetItemOutputTransformOutput) + return ok && _this.Equals(typed) +} + +func Type_GetItemOutputTransformOutput_() _dafny.TypeDescriptor { + return type_GetItemOutputTransformOutput_{} +} + +type type_GetItemOutputTransformOutput_ struct { +} + +func (_this type_GetItemOutputTransformOutput_) Default() interface{} { + return Companion_GetItemOutputTransformOutput_.Default() +} + +func (_this type_GetItemOutputTransformOutput_) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.GetItemOutputTransformOutput" +} +func (_this GetItemOutputTransformOutput) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = GetItemOutputTransformOutput{} + +// End of datatype GetItemOutputTransformOutput + +// Definition of datatype PutItemInputTransformInput +type PutItemInputTransformInput struct { + Data_PutItemInputTransformInput_ +} + +func (_this PutItemInputTransformInput) Get_() Data_PutItemInputTransformInput_ { + return _this.Data_PutItemInputTransformInput_ +} + +type Data_PutItemInputTransformInput_ interface { + isPutItemInputTransformInput() +} + +type CompanionStruct_PutItemInputTransformInput_ struct { +} + +var Companion_PutItemInputTransformInput_ = CompanionStruct_PutItemInputTransformInput_{} + +type PutItemInputTransformInput_PutItemInputTransformInput struct { + SdkInput m_ComAmazonawsDynamodbTypes.PutItemInput +} + +func (PutItemInputTransformInput_PutItemInputTransformInput) isPutItemInputTransformInput() {} + +func (CompanionStruct_PutItemInputTransformInput_) Create_PutItemInputTransformInput_(SdkInput m_ComAmazonawsDynamodbTypes.PutItemInput) PutItemInputTransformInput { + return PutItemInputTransformInput{PutItemInputTransformInput_PutItemInputTransformInput{SdkInput}} +} + +func (_this PutItemInputTransformInput) Is_PutItemInputTransformInput() bool { + _, ok := _this.Get_().(PutItemInputTransformInput_PutItemInputTransformInput) + return ok +} + +func (CompanionStruct_PutItemInputTransformInput_) Default() PutItemInputTransformInput { + return Companion_PutItemInputTransformInput_.Create_PutItemInputTransformInput_(m_ComAmazonawsDynamodbTypes.Companion_PutItemInput_.Default()) +} + +func (_this PutItemInputTransformInput) Dtor_sdkInput() m_ComAmazonawsDynamodbTypes.PutItemInput { + return _this.Get_().(PutItemInputTransformInput_PutItemInputTransformInput).SdkInput +} + +func (_this PutItemInputTransformInput) String() string { + switch data := _this.Get_().(type) { + case nil: + return "null" + case PutItemInputTransformInput_PutItemInputTransformInput: + { + return "AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.PutItemInputTransformInput.PutItemInputTransformInput" + "(" + _dafny.String(data.SdkInput) + ")" + } + default: + { + return "" + } + } +} + +func (_this PutItemInputTransformInput) Equals(other PutItemInputTransformInput) bool { + switch data1 := _this.Get_().(type) { + case PutItemInputTransformInput_PutItemInputTransformInput: + { + data2, ok := other.Get_().(PutItemInputTransformInput_PutItemInputTransformInput) + return ok && data1.SdkInput.Equals(data2.SdkInput) + } + default: + { + return false // unexpected + } + } +} + +func (_this PutItemInputTransformInput) EqualsGeneric(other interface{}) bool { + typed, ok := other.(PutItemInputTransformInput) + return ok && _this.Equals(typed) +} + +func Type_PutItemInputTransformInput_() _dafny.TypeDescriptor { + return type_PutItemInputTransformInput_{} +} + +type type_PutItemInputTransformInput_ struct { +} + +func (_this type_PutItemInputTransformInput_) Default() interface{} { + return Companion_PutItemInputTransformInput_.Default() +} + +func (_this type_PutItemInputTransformInput_) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.PutItemInputTransformInput" +} +func (_this PutItemInputTransformInput) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = PutItemInputTransformInput{} + +// End of datatype PutItemInputTransformInput + +// Definition of datatype PutItemInputTransformOutput +type PutItemInputTransformOutput struct { + Data_PutItemInputTransformOutput_ +} + +func (_this PutItemInputTransformOutput) Get_() Data_PutItemInputTransformOutput_ { + return _this.Data_PutItemInputTransformOutput_ +} + +type Data_PutItemInputTransformOutput_ interface { + isPutItemInputTransformOutput() +} + +type CompanionStruct_PutItemInputTransformOutput_ struct { +} + +var Companion_PutItemInputTransformOutput_ = CompanionStruct_PutItemInputTransformOutput_{} + +type PutItemInputTransformOutput_PutItemInputTransformOutput struct { + TransformedInput m_ComAmazonawsDynamodbTypes.PutItemInput +} + +func (PutItemInputTransformOutput_PutItemInputTransformOutput) isPutItemInputTransformOutput() {} + +func (CompanionStruct_PutItemInputTransformOutput_) Create_PutItemInputTransformOutput_(TransformedInput m_ComAmazonawsDynamodbTypes.PutItemInput) PutItemInputTransformOutput { + return PutItemInputTransformOutput{PutItemInputTransformOutput_PutItemInputTransformOutput{TransformedInput}} +} + +func (_this PutItemInputTransformOutput) Is_PutItemInputTransformOutput() bool { + _, ok := _this.Get_().(PutItemInputTransformOutput_PutItemInputTransformOutput) + return ok +} + +func (CompanionStruct_PutItemInputTransformOutput_) Default() PutItemInputTransformOutput { + return Companion_PutItemInputTransformOutput_.Create_PutItemInputTransformOutput_(m_ComAmazonawsDynamodbTypes.Companion_PutItemInput_.Default()) +} + +func (_this PutItemInputTransformOutput) Dtor_transformedInput() m_ComAmazonawsDynamodbTypes.PutItemInput { + return _this.Get_().(PutItemInputTransformOutput_PutItemInputTransformOutput).TransformedInput +} + +func (_this PutItemInputTransformOutput) String() string { + switch data := _this.Get_().(type) { + case nil: + return "null" + case PutItemInputTransformOutput_PutItemInputTransformOutput: + { + return "AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.PutItemInputTransformOutput.PutItemInputTransformOutput" + "(" + _dafny.String(data.TransformedInput) + ")" + } + default: + { + return "" + } + } +} + +func (_this PutItemInputTransformOutput) Equals(other PutItemInputTransformOutput) bool { + switch data1 := _this.Get_().(type) { + case PutItemInputTransformOutput_PutItemInputTransformOutput: + { + data2, ok := other.Get_().(PutItemInputTransformOutput_PutItemInputTransformOutput) + return ok && data1.TransformedInput.Equals(data2.TransformedInput) + } + default: + { + return false // unexpected + } + } +} + +func (_this PutItemInputTransformOutput) EqualsGeneric(other interface{}) bool { + typed, ok := other.(PutItemInputTransformOutput) + return ok && _this.Equals(typed) +} + +func Type_PutItemInputTransformOutput_() _dafny.TypeDescriptor { + return type_PutItemInputTransformOutput_{} +} + +type type_PutItemInputTransformOutput_ struct { +} + +func (_this type_PutItemInputTransformOutput_) Default() interface{} { + return Companion_PutItemInputTransformOutput_.Default() +} + +func (_this type_PutItemInputTransformOutput_) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.PutItemInputTransformOutput" +} +func (_this PutItemInputTransformOutput) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = PutItemInputTransformOutput{} + +// End of datatype PutItemInputTransformOutput + +// Definition of datatype PutItemOutputTransformInput +type PutItemOutputTransformInput struct { + Data_PutItemOutputTransformInput_ +} + +func (_this PutItemOutputTransformInput) Get_() Data_PutItemOutputTransformInput_ { + return _this.Data_PutItemOutputTransformInput_ +} + +type Data_PutItemOutputTransformInput_ interface { + isPutItemOutputTransformInput() +} + +type CompanionStruct_PutItemOutputTransformInput_ struct { +} + +var Companion_PutItemOutputTransformInput_ = CompanionStruct_PutItemOutputTransformInput_{} + +type PutItemOutputTransformInput_PutItemOutputTransformInput struct { + SdkOutput m_ComAmazonawsDynamodbTypes.PutItemOutput + OriginalInput m_ComAmazonawsDynamodbTypes.PutItemInput +} + +func (PutItemOutputTransformInput_PutItemOutputTransformInput) isPutItemOutputTransformInput() {} + +func (CompanionStruct_PutItemOutputTransformInput_) Create_PutItemOutputTransformInput_(SdkOutput m_ComAmazonawsDynamodbTypes.PutItemOutput, OriginalInput m_ComAmazonawsDynamodbTypes.PutItemInput) PutItemOutputTransformInput { + return PutItemOutputTransformInput{PutItemOutputTransformInput_PutItemOutputTransformInput{SdkOutput, OriginalInput}} +} + +func (_this PutItemOutputTransformInput) Is_PutItemOutputTransformInput() bool { + _, ok := _this.Get_().(PutItemOutputTransformInput_PutItemOutputTransformInput) + return ok +} + +func (CompanionStruct_PutItemOutputTransformInput_) Default() PutItemOutputTransformInput { + return Companion_PutItemOutputTransformInput_.Create_PutItemOutputTransformInput_(m_ComAmazonawsDynamodbTypes.Companion_PutItemOutput_.Default(), m_ComAmazonawsDynamodbTypes.Companion_PutItemInput_.Default()) +} + +func (_this PutItemOutputTransformInput) Dtor_sdkOutput() m_ComAmazonawsDynamodbTypes.PutItemOutput { + return _this.Get_().(PutItemOutputTransformInput_PutItemOutputTransformInput).SdkOutput +} + +func (_this PutItemOutputTransformInput) Dtor_originalInput() m_ComAmazonawsDynamodbTypes.PutItemInput { + return _this.Get_().(PutItemOutputTransformInput_PutItemOutputTransformInput).OriginalInput +} + +func (_this PutItemOutputTransformInput) String() string { + switch data := _this.Get_().(type) { + case nil: + return "null" + case PutItemOutputTransformInput_PutItemOutputTransformInput: + { + return "AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.PutItemOutputTransformInput.PutItemOutputTransformInput" + "(" + _dafny.String(data.SdkOutput) + ", " + _dafny.String(data.OriginalInput) + ")" + } + default: + { + return "" + } + } +} + +func (_this PutItemOutputTransformInput) Equals(other PutItemOutputTransformInput) bool { + switch data1 := _this.Get_().(type) { + case PutItemOutputTransformInput_PutItemOutputTransformInput: + { + data2, ok := other.Get_().(PutItemOutputTransformInput_PutItemOutputTransformInput) + return ok && data1.SdkOutput.Equals(data2.SdkOutput) && data1.OriginalInput.Equals(data2.OriginalInput) + } + default: + { + return false // unexpected + } + } +} + +func (_this PutItemOutputTransformInput) EqualsGeneric(other interface{}) bool { + typed, ok := other.(PutItemOutputTransformInput) + return ok && _this.Equals(typed) +} + +func Type_PutItemOutputTransformInput_() _dafny.TypeDescriptor { + return type_PutItemOutputTransformInput_{} +} + +type type_PutItemOutputTransformInput_ struct { +} + +func (_this type_PutItemOutputTransformInput_) Default() interface{} { + return Companion_PutItemOutputTransformInput_.Default() +} + +func (_this type_PutItemOutputTransformInput_) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.PutItemOutputTransformInput" +} +func (_this PutItemOutputTransformInput) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = PutItemOutputTransformInput{} + +// End of datatype PutItemOutputTransformInput + +// Definition of datatype PutItemOutputTransformOutput +type PutItemOutputTransformOutput struct { + Data_PutItemOutputTransformOutput_ +} + +func (_this PutItemOutputTransformOutput) Get_() Data_PutItemOutputTransformOutput_ { + return _this.Data_PutItemOutputTransformOutput_ +} + +type Data_PutItemOutputTransformOutput_ interface { + isPutItemOutputTransformOutput() +} + +type CompanionStruct_PutItemOutputTransformOutput_ struct { +} + +var Companion_PutItemOutputTransformOutput_ = CompanionStruct_PutItemOutputTransformOutput_{} + +type PutItemOutputTransformOutput_PutItemOutputTransformOutput struct { + TransformedOutput m_ComAmazonawsDynamodbTypes.PutItemOutput +} + +func (PutItemOutputTransformOutput_PutItemOutputTransformOutput) isPutItemOutputTransformOutput() {} + +func (CompanionStruct_PutItemOutputTransformOutput_) Create_PutItemOutputTransformOutput_(TransformedOutput m_ComAmazonawsDynamodbTypes.PutItemOutput) PutItemOutputTransformOutput { + return PutItemOutputTransformOutput{PutItemOutputTransformOutput_PutItemOutputTransformOutput{TransformedOutput}} +} + +func (_this PutItemOutputTransformOutput) Is_PutItemOutputTransformOutput() bool { + _, ok := _this.Get_().(PutItemOutputTransformOutput_PutItemOutputTransformOutput) + return ok +} + +func (CompanionStruct_PutItemOutputTransformOutput_) Default() PutItemOutputTransformOutput { + return Companion_PutItemOutputTransformOutput_.Create_PutItemOutputTransformOutput_(m_ComAmazonawsDynamodbTypes.Companion_PutItemOutput_.Default()) +} + +func (_this PutItemOutputTransformOutput) Dtor_transformedOutput() m_ComAmazonawsDynamodbTypes.PutItemOutput { + return _this.Get_().(PutItemOutputTransformOutput_PutItemOutputTransformOutput).TransformedOutput +} + +func (_this PutItemOutputTransformOutput) String() string { + switch data := _this.Get_().(type) { + case nil: + return "null" + case PutItemOutputTransformOutput_PutItemOutputTransformOutput: + { + return "AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.PutItemOutputTransformOutput.PutItemOutputTransformOutput" + "(" + _dafny.String(data.TransformedOutput) + ")" + } + default: + { + return "" + } + } +} + +func (_this PutItemOutputTransformOutput) Equals(other PutItemOutputTransformOutput) bool { + switch data1 := _this.Get_().(type) { + case PutItemOutputTransformOutput_PutItemOutputTransformOutput: + { + data2, ok := other.Get_().(PutItemOutputTransformOutput_PutItemOutputTransformOutput) + return ok && data1.TransformedOutput.Equals(data2.TransformedOutput) + } + default: + { + return false // unexpected + } + } +} + +func (_this PutItemOutputTransformOutput) EqualsGeneric(other interface{}) bool { + typed, ok := other.(PutItemOutputTransformOutput) + return ok && _this.Equals(typed) +} + +func Type_PutItemOutputTransformOutput_() _dafny.TypeDescriptor { + return type_PutItemOutputTransformOutput_{} +} + +type type_PutItemOutputTransformOutput_ struct { +} + +func (_this type_PutItemOutputTransformOutput_) Default() interface{} { + return Companion_PutItemOutputTransformOutput_.Default() +} + +func (_this type_PutItemOutputTransformOutput_) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.PutItemOutputTransformOutput" +} +func (_this PutItemOutputTransformOutput) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = PutItemOutputTransformOutput{} + +// End of datatype PutItemOutputTransformOutput + +// Definition of datatype QueryInputTransformInput +type QueryInputTransformInput struct { + Data_QueryInputTransformInput_ +} + +func (_this QueryInputTransformInput) Get_() Data_QueryInputTransformInput_ { + return _this.Data_QueryInputTransformInput_ +} + +type Data_QueryInputTransformInput_ interface { + isQueryInputTransformInput() +} + +type CompanionStruct_QueryInputTransformInput_ struct { +} + +var Companion_QueryInputTransformInput_ = CompanionStruct_QueryInputTransformInput_{} + +type QueryInputTransformInput_QueryInputTransformInput struct { + SdkInput m_ComAmazonawsDynamodbTypes.QueryInput +} + +func (QueryInputTransformInput_QueryInputTransformInput) isQueryInputTransformInput() {} + +func (CompanionStruct_QueryInputTransformInput_) Create_QueryInputTransformInput_(SdkInput m_ComAmazonawsDynamodbTypes.QueryInput) QueryInputTransformInput { + return QueryInputTransformInput{QueryInputTransformInput_QueryInputTransformInput{SdkInput}} +} + +func (_this QueryInputTransformInput) Is_QueryInputTransformInput() bool { + _, ok := _this.Get_().(QueryInputTransformInput_QueryInputTransformInput) + return ok +} + +func (CompanionStruct_QueryInputTransformInput_) Default() QueryInputTransformInput { + return Companion_QueryInputTransformInput_.Create_QueryInputTransformInput_(m_ComAmazonawsDynamodbTypes.Companion_QueryInput_.Default()) +} + +func (_this QueryInputTransformInput) Dtor_sdkInput() m_ComAmazonawsDynamodbTypes.QueryInput { + return _this.Get_().(QueryInputTransformInput_QueryInputTransformInput).SdkInput +} + +func (_this QueryInputTransformInput) String() string { + switch data := _this.Get_().(type) { + case nil: + return "null" + case QueryInputTransformInput_QueryInputTransformInput: + { + return "AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.QueryInputTransformInput.QueryInputTransformInput" + "(" + _dafny.String(data.SdkInput) + ")" + } + default: + { + return "" + } + } +} + +func (_this QueryInputTransformInput) Equals(other QueryInputTransformInput) bool { + switch data1 := _this.Get_().(type) { + case QueryInputTransformInput_QueryInputTransformInput: + { + data2, ok := other.Get_().(QueryInputTransformInput_QueryInputTransformInput) + return ok && data1.SdkInput.Equals(data2.SdkInput) + } + default: + { + return false // unexpected + } + } +} + +func (_this QueryInputTransformInput) EqualsGeneric(other interface{}) bool { + typed, ok := other.(QueryInputTransformInput) + return ok && _this.Equals(typed) +} + +func Type_QueryInputTransformInput_() _dafny.TypeDescriptor { + return type_QueryInputTransformInput_{} +} + +type type_QueryInputTransformInput_ struct { +} + +func (_this type_QueryInputTransformInput_) Default() interface{} { + return Companion_QueryInputTransformInput_.Default() +} + +func (_this type_QueryInputTransformInput_) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.QueryInputTransformInput" +} +func (_this QueryInputTransformInput) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = QueryInputTransformInput{} + +// End of datatype QueryInputTransformInput + +// Definition of datatype QueryInputTransformOutput +type QueryInputTransformOutput struct { + Data_QueryInputTransformOutput_ +} + +func (_this QueryInputTransformOutput) Get_() Data_QueryInputTransformOutput_ { + return _this.Data_QueryInputTransformOutput_ +} + +type Data_QueryInputTransformOutput_ interface { + isQueryInputTransformOutput() +} + +type CompanionStruct_QueryInputTransformOutput_ struct { +} + +var Companion_QueryInputTransformOutput_ = CompanionStruct_QueryInputTransformOutput_{} + +type QueryInputTransformOutput_QueryInputTransformOutput struct { + TransformedInput m_ComAmazonawsDynamodbTypes.QueryInput +} + +func (QueryInputTransformOutput_QueryInputTransformOutput) isQueryInputTransformOutput() {} + +func (CompanionStruct_QueryInputTransformOutput_) Create_QueryInputTransformOutput_(TransformedInput m_ComAmazonawsDynamodbTypes.QueryInput) QueryInputTransformOutput { + return QueryInputTransformOutput{QueryInputTransformOutput_QueryInputTransformOutput{TransformedInput}} +} + +func (_this QueryInputTransformOutput) Is_QueryInputTransformOutput() bool { + _, ok := _this.Get_().(QueryInputTransformOutput_QueryInputTransformOutput) + return ok +} + +func (CompanionStruct_QueryInputTransformOutput_) Default() QueryInputTransformOutput { + return Companion_QueryInputTransformOutput_.Create_QueryInputTransformOutput_(m_ComAmazonawsDynamodbTypes.Companion_QueryInput_.Default()) +} + +func (_this QueryInputTransformOutput) Dtor_transformedInput() m_ComAmazonawsDynamodbTypes.QueryInput { + return _this.Get_().(QueryInputTransformOutput_QueryInputTransformOutput).TransformedInput +} + +func (_this QueryInputTransformOutput) String() string { + switch data := _this.Get_().(type) { + case nil: + return "null" + case QueryInputTransformOutput_QueryInputTransformOutput: + { + return "AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.QueryInputTransformOutput.QueryInputTransformOutput" + "(" + _dafny.String(data.TransformedInput) + ")" + } + default: + { + return "" + } + } +} + +func (_this QueryInputTransformOutput) Equals(other QueryInputTransformOutput) bool { + switch data1 := _this.Get_().(type) { + case QueryInputTransformOutput_QueryInputTransformOutput: + { + data2, ok := other.Get_().(QueryInputTransformOutput_QueryInputTransformOutput) + return ok && data1.TransformedInput.Equals(data2.TransformedInput) + } + default: + { + return false // unexpected + } + } +} + +func (_this QueryInputTransformOutput) EqualsGeneric(other interface{}) bool { + typed, ok := other.(QueryInputTransformOutput) + return ok && _this.Equals(typed) +} + +func Type_QueryInputTransformOutput_() _dafny.TypeDescriptor { + return type_QueryInputTransformOutput_{} +} + +type type_QueryInputTransformOutput_ struct { +} + +func (_this type_QueryInputTransformOutput_) Default() interface{} { + return Companion_QueryInputTransformOutput_.Default() +} + +func (_this type_QueryInputTransformOutput_) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.QueryInputTransformOutput" +} +func (_this QueryInputTransformOutput) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = QueryInputTransformOutput{} + +// End of datatype QueryInputTransformOutput + +// Definition of datatype QueryOutputTransformInput +type QueryOutputTransformInput struct { + Data_QueryOutputTransformInput_ +} + +func (_this QueryOutputTransformInput) Get_() Data_QueryOutputTransformInput_ { + return _this.Data_QueryOutputTransformInput_ +} + +type Data_QueryOutputTransformInput_ interface { + isQueryOutputTransformInput() +} + +type CompanionStruct_QueryOutputTransformInput_ struct { +} + +var Companion_QueryOutputTransformInput_ = CompanionStruct_QueryOutputTransformInput_{} + +type QueryOutputTransformInput_QueryOutputTransformInput struct { + SdkOutput m_ComAmazonawsDynamodbTypes.QueryOutput + OriginalInput m_ComAmazonawsDynamodbTypes.QueryInput +} + +func (QueryOutputTransformInput_QueryOutputTransformInput) isQueryOutputTransformInput() {} + +func (CompanionStruct_QueryOutputTransformInput_) Create_QueryOutputTransformInput_(SdkOutput m_ComAmazonawsDynamodbTypes.QueryOutput, OriginalInput m_ComAmazonawsDynamodbTypes.QueryInput) QueryOutputTransformInput { + return QueryOutputTransformInput{QueryOutputTransformInput_QueryOutputTransformInput{SdkOutput, OriginalInput}} +} + +func (_this QueryOutputTransformInput) Is_QueryOutputTransformInput() bool { + _, ok := _this.Get_().(QueryOutputTransformInput_QueryOutputTransformInput) + return ok +} + +func (CompanionStruct_QueryOutputTransformInput_) Default() QueryOutputTransformInput { + return Companion_QueryOutputTransformInput_.Create_QueryOutputTransformInput_(m_ComAmazonawsDynamodbTypes.Companion_QueryOutput_.Default(), m_ComAmazonawsDynamodbTypes.Companion_QueryInput_.Default()) +} + +func (_this QueryOutputTransformInput) Dtor_sdkOutput() m_ComAmazonawsDynamodbTypes.QueryOutput { + return _this.Get_().(QueryOutputTransformInput_QueryOutputTransformInput).SdkOutput +} + +func (_this QueryOutputTransformInput) Dtor_originalInput() m_ComAmazonawsDynamodbTypes.QueryInput { + return _this.Get_().(QueryOutputTransformInput_QueryOutputTransformInput).OriginalInput +} + +func (_this QueryOutputTransformInput) String() string { + switch data := _this.Get_().(type) { + case nil: + return "null" + case QueryOutputTransformInput_QueryOutputTransformInput: + { + return "AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.QueryOutputTransformInput.QueryOutputTransformInput" + "(" + _dafny.String(data.SdkOutput) + ", " + _dafny.String(data.OriginalInput) + ")" + } + default: + { + return "" + } + } +} + +func (_this QueryOutputTransformInput) Equals(other QueryOutputTransformInput) bool { + switch data1 := _this.Get_().(type) { + case QueryOutputTransformInput_QueryOutputTransformInput: + { + data2, ok := other.Get_().(QueryOutputTransformInput_QueryOutputTransformInput) + return ok && data1.SdkOutput.Equals(data2.SdkOutput) && data1.OriginalInput.Equals(data2.OriginalInput) + } + default: + { + return false // unexpected + } + } +} + +func (_this QueryOutputTransformInput) EqualsGeneric(other interface{}) bool { + typed, ok := other.(QueryOutputTransformInput) + return ok && _this.Equals(typed) +} + +func Type_QueryOutputTransformInput_() _dafny.TypeDescriptor { + return type_QueryOutputTransformInput_{} +} + +type type_QueryOutputTransformInput_ struct { +} + +func (_this type_QueryOutputTransformInput_) Default() interface{} { + return Companion_QueryOutputTransformInput_.Default() +} + +func (_this type_QueryOutputTransformInput_) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.QueryOutputTransformInput" +} +func (_this QueryOutputTransformInput) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = QueryOutputTransformInput{} + +// End of datatype QueryOutputTransformInput + +// Definition of datatype QueryOutputTransformOutput +type QueryOutputTransformOutput struct { + Data_QueryOutputTransformOutput_ +} + +func (_this QueryOutputTransformOutput) Get_() Data_QueryOutputTransformOutput_ { + return _this.Data_QueryOutputTransformOutput_ +} + +type Data_QueryOutputTransformOutput_ interface { + isQueryOutputTransformOutput() +} + +type CompanionStruct_QueryOutputTransformOutput_ struct { +} + +var Companion_QueryOutputTransformOutput_ = CompanionStruct_QueryOutputTransformOutput_{} + +type QueryOutputTransformOutput_QueryOutputTransformOutput struct { + TransformedOutput m_ComAmazonawsDynamodbTypes.QueryOutput +} + +func (QueryOutputTransformOutput_QueryOutputTransformOutput) isQueryOutputTransformOutput() {} + +func (CompanionStruct_QueryOutputTransformOutput_) Create_QueryOutputTransformOutput_(TransformedOutput m_ComAmazonawsDynamodbTypes.QueryOutput) QueryOutputTransformOutput { + return QueryOutputTransformOutput{QueryOutputTransformOutput_QueryOutputTransformOutput{TransformedOutput}} +} + +func (_this QueryOutputTransformOutput) Is_QueryOutputTransformOutput() bool { + _, ok := _this.Get_().(QueryOutputTransformOutput_QueryOutputTransformOutput) + return ok +} + +func (CompanionStruct_QueryOutputTransformOutput_) Default() QueryOutputTransformOutput { + return Companion_QueryOutputTransformOutput_.Create_QueryOutputTransformOutput_(m_ComAmazonawsDynamodbTypes.Companion_QueryOutput_.Default()) +} + +func (_this QueryOutputTransformOutput) Dtor_transformedOutput() m_ComAmazonawsDynamodbTypes.QueryOutput { + return _this.Get_().(QueryOutputTransformOutput_QueryOutputTransformOutput).TransformedOutput +} + +func (_this QueryOutputTransformOutput) String() string { + switch data := _this.Get_().(type) { + case nil: + return "null" + case QueryOutputTransformOutput_QueryOutputTransformOutput: + { + return "AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.QueryOutputTransformOutput.QueryOutputTransformOutput" + "(" + _dafny.String(data.TransformedOutput) + ")" + } + default: + { + return "" + } + } +} + +func (_this QueryOutputTransformOutput) Equals(other QueryOutputTransformOutput) bool { + switch data1 := _this.Get_().(type) { + case QueryOutputTransformOutput_QueryOutputTransformOutput: + { + data2, ok := other.Get_().(QueryOutputTransformOutput_QueryOutputTransformOutput) + return ok && data1.TransformedOutput.Equals(data2.TransformedOutput) + } + default: + { + return false // unexpected + } + } +} + +func (_this QueryOutputTransformOutput) EqualsGeneric(other interface{}) bool { + typed, ok := other.(QueryOutputTransformOutput) + return ok && _this.Equals(typed) +} + +func Type_QueryOutputTransformOutput_() _dafny.TypeDescriptor { + return type_QueryOutputTransformOutput_{} +} + +type type_QueryOutputTransformOutput_ struct { +} + +func (_this type_QueryOutputTransformOutput_) Default() interface{} { + return Companion_QueryOutputTransformOutput_.Default() +} + +func (_this type_QueryOutputTransformOutput_) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.QueryOutputTransformOutput" +} +func (_this QueryOutputTransformOutput) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = QueryOutputTransformOutput{} + +// End of datatype QueryOutputTransformOutput + +// Definition of datatype ResolveAttributesInput +type ResolveAttributesInput struct { + Data_ResolveAttributesInput_ +} + +func (_this ResolveAttributesInput) Get_() Data_ResolveAttributesInput_ { + return _this.Data_ResolveAttributesInput_ +} + +type Data_ResolveAttributesInput_ interface { + isResolveAttributesInput() +} + +type CompanionStruct_ResolveAttributesInput_ struct { +} + +var Companion_ResolveAttributesInput_ = CompanionStruct_ResolveAttributesInput_{} + +type ResolveAttributesInput_ResolveAttributesInput struct { + TableName _dafny.Sequence + Item _dafny.Map + Version m_Wrappers.Option +} + +func (ResolveAttributesInput_ResolveAttributesInput) isResolveAttributesInput() {} + +func (CompanionStruct_ResolveAttributesInput_) Create_ResolveAttributesInput_(TableName _dafny.Sequence, Item _dafny.Map, Version m_Wrappers.Option) ResolveAttributesInput { + return ResolveAttributesInput{ResolveAttributesInput_ResolveAttributesInput{TableName, Item, Version}} +} + +func (_this ResolveAttributesInput) Is_ResolveAttributesInput() bool { + _, ok := _this.Get_().(ResolveAttributesInput_ResolveAttributesInput) + return ok +} + +func (CompanionStruct_ResolveAttributesInput_) Default() ResolveAttributesInput { + return Companion_ResolveAttributesInput_.Create_ResolveAttributesInput_(_dafny.EmptySeq.SetString(), _dafny.EmptyMap, m_Wrappers.Companion_Option_.Default()) +} + +func (_this ResolveAttributesInput) Dtor_TableName() _dafny.Sequence { + return _this.Get_().(ResolveAttributesInput_ResolveAttributesInput).TableName +} + +func (_this ResolveAttributesInput) Dtor_Item() _dafny.Map { + return _this.Get_().(ResolveAttributesInput_ResolveAttributesInput).Item +} + +func (_this ResolveAttributesInput) Dtor_Version() m_Wrappers.Option { + return _this.Get_().(ResolveAttributesInput_ResolveAttributesInput).Version +} + +func (_this ResolveAttributesInput) String() string { + switch data := _this.Get_().(type) { + case nil: + return "null" + case ResolveAttributesInput_ResolveAttributesInput: + { + return "AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.ResolveAttributesInput.ResolveAttributesInput" + "(" + _dafny.String(data.TableName) + ", " + _dafny.String(data.Item) + ", " + _dafny.String(data.Version) + ")" + } + default: + { + return "" + } + } +} + +func (_this ResolveAttributesInput) Equals(other ResolveAttributesInput) bool { + switch data1 := _this.Get_().(type) { + case ResolveAttributesInput_ResolveAttributesInput: + { + data2, ok := other.Get_().(ResolveAttributesInput_ResolveAttributesInput) + return ok && data1.TableName.Equals(data2.TableName) && data1.Item.Equals(data2.Item) && data1.Version.Equals(data2.Version) + } + default: + { + return false // unexpected + } + } +} + +func (_this ResolveAttributesInput) EqualsGeneric(other interface{}) bool { + typed, ok := other.(ResolveAttributesInput) + return ok && _this.Equals(typed) +} + +func Type_ResolveAttributesInput_() _dafny.TypeDescriptor { + return type_ResolveAttributesInput_{} +} + +type type_ResolveAttributesInput_ struct { +} + +func (_this type_ResolveAttributesInput_) Default() interface{} { + return Companion_ResolveAttributesInput_.Default() +} + +func (_this type_ResolveAttributesInput_) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.ResolveAttributesInput" +} +func (_this ResolveAttributesInput) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = ResolveAttributesInput{} + +// End of datatype ResolveAttributesInput + +// Definition of datatype ResolveAttributesOutput +type ResolveAttributesOutput struct { + Data_ResolveAttributesOutput_ +} + +func (_this ResolveAttributesOutput) Get_() Data_ResolveAttributesOutput_ { + return _this.Data_ResolveAttributesOutput_ +} + +type Data_ResolveAttributesOutput_ interface { + isResolveAttributesOutput() +} + +type CompanionStruct_ResolveAttributesOutput_ struct { +} + +var Companion_ResolveAttributesOutput_ = CompanionStruct_ResolveAttributesOutput_{} + +type ResolveAttributesOutput_ResolveAttributesOutput struct { + VirtualFields _dafny.Map + CompoundBeacons _dafny.Map +} + +func (ResolveAttributesOutput_ResolveAttributesOutput) isResolveAttributesOutput() {} + +func (CompanionStruct_ResolveAttributesOutput_) Create_ResolveAttributesOutput_(VirtualFields _dafny.Map, CompoundBeacons _dafny.Map) ResolveAttributesOutput { + return ResolveAttributesOutput{ResolveAttributesOutput_ResolveAttributesOutput{VirtualFields, CompoundBeacons}} +} + +func (_this ResolveAttributesOutput) Is_ResolveAttributesOutput() bool { + _, ok := _this.Get_().(ResolveAttributesOutput_ResolveAttributesOutput) + return ok +} + +func (CompanionStruct_ResolveAttributesOutput_) Default() ResolveAttributesOutput { + return Companion_ResolveAttributesOutput_.Create_ResolveAttributesOutput_(_dafny.EmptyMap, _dafny.EmptyMap) +} + +func (_this ResolveAttributesOutput) Dtor_VirtualFields() _dafny.Map { + return _this.Get_().(ResolveAttributesOutput_ResolveAttributesOutput).VirtualFields +} + +func (_this ResolveAttributesOutput) Dtor_CompoundBeacons() _dafny.Map { + return _this.Get_().(ResolveAttributesOutput_ResolveAttributesOutput).CompoundBeacons +} + +func (_this ResolveAttributesOutput) String() string { + switch data := _this.Get_().(type) { + case nil: + return "null" + case ResolveAttributesOutput_ResolveAttributesOutput: + { + return "AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.ResolveAttributesOutput.ResolveAttributesOutput" + "(" + _dafny.String(data.VirtualFields) + ", " + _dafny.String(data.CompoundBeacons) + ")" + } + default: + { + return "" + } + } +} + +func (_this ResolveAttributesOutput) Equals(other ResolveAttributesOutput) bool { + switch data1 := _this.Get_().(type) { + case ResolveAttributesOutput_ResolveAttributesOutput: + { + data2, ok := other.Get_().(ResolveAttributesOutput_ResolveAttributesOutput) + return ok && data1.VirtualFields.Equals(data2.VirtualFields) && data1.CompoundBeacons.Equals(data2.CompoundBeacons) + } + default: + { + return false // unexpected + } + } +} + +func (_this ResolveAttributesOutput) EqualsGeneric(other interface{}) bool { + typed, ok := other.(ResolveAttributesOutput) + return ok && _this.Equals(typed) +} + +func Type_ResolveAttributesOutput_() _dafny.TypeDescriptor { + return type_ResolveAttributesOutput_{} +} + +type type_ResolveAttributesOutput_ struct { +} + +func (_this type_ResolveAttributesOutput_) Default() interface{} { + return Companion_ResolveAttributesOutput_.Default() +} + +func (_this type_ResolveAttributesOutput_) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.ResolveAttributesOutput" +} +func (_this ResolveAttributesOutput) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = ResolveAttributesOutput{} + +// End of datatype ResolveAttributesOutput + +// Definition of datatype ScanInputTransformInput +type ScanInputTransformInput struct { + Data_ScanInputTransformInput_ +} + +func (_this ScanInputTransformInput) Get_() Data_ScanInputTransformInput_ { + return _this.Data_ScanInputTransformInput_ +} + +type Data_ScanInputTransformInput_ interface { + isScanInputTransformInput() +} + +type CompanionStruct_ScanInputTransformInput_ struct { +} + +var Companion_ScanInputTransformInput_ = CompanionStruct_ScanInputTransformInput_{} + +type ScanInputTransformInput_ScanInputTransformInput struct { + SdkInput m_ComAmazonawsDynamodbTypes.ScanInput +} + +func (ScanInputTransformInput_ScanInputTransformInput) isScanInputTransformInput() {} + +func (CompanionStruct_ScanInputTransformInput_) Create_ScanInputTransformInput_(SdkInput m_ComAmazonawsDynamodbTypes.ScanInput) ScanInputTransformInput { + return ScanInputTransformInput{ScanInputTransformInput_ScanInputTransformInput{SdkInput}} +} + +func (_this ScanInputTransformInput) Is_ScanInputTransformInput() bool { + _, ok := _this.Get_().(ScanInputTransformInput_ScanInputTransformInput) + return ok +} + +func (CompanionStruct_ScanInputTransformInput_) Default() ScanInputTransformInput { + return Companion_ScanInputTransformInput_.Create_ScanInputTransformInput_(m_ComAmazonawsDynamodbTypes.Companion_ScanInput_.Default()) +} + +func (_this ScanInputTransformInput) Dtor_sdkInput() m_ComAmazonawsDynamodbTypes.ScanInput { + return _this.Get_().(ScanInputTransformInput_ScanInputTransformInput).SdkInput +} + +func (_this ScanInputTransformInput) String() string { + switch data := _this.Get_().(type) { + case nil: + return "null" + case ScanInputTransformInput_ScanInputTransformInput: + { + return "AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.ScanInputTransformInput.ScanInputTransformInput" + "(" + _dafny.String(data.SdkInput) + ")" + } + default: + { + return "" + } + } +} + +func (_this ScanInputTransformInput) Equals(other ScanInputTransformInput) bool { + switch data1 := _this.Get_().(type) { + case ScanInputTransformInput_ScanInputTransformInput: + { + data2, ok := other.Get_().(ScanInputTransformInput_ScanInputTransformInput) + return ok && data1.SdkInput.Equals(data2.SdkInput) + } + default: + { + return false // unexpected + } + } +} + +func (_this ScanInputTransformInput) EqualsGeneric(other interface{}) bool { + typed, ok := other.(ScanInputTransformInput) + return ok && _this.Equals(typed) +} + +func Type_ScanInputTransformInput_() _dafny.TypeDescriptor { + return type_ScanInputTransformInput_{} +} + +type type_ScanInputTransformInput_ struct { +} + +func (_this type_ScanInputTransformInput_) Default() interface{} { + return Companion_ScanInputTransformInput_.Default() +} + +func (_this type_ScanInputTransformInput_) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.ScanInputTransformInput" +} +func (_this ScanInputTransformInput) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = ScanInputTransformInput{} + +// End of datatype ScanInputTransformInput + +// Definition of datatype ScanInputTransformOutput +type ScanInputTransformOutput struct { + Data_ScanInputTransformOutput_ +} + +func (_this ScanInputTransformOutput) Get_() Data_ScanInputTransformOutput_ { + return _this.Data_ScanInputTransformOutput_ +} + +type Data_ScanInputTransformOutput_ interface { + isScanInputTransformOutput() +} + +type CompanionStruct_ScanInputTransformOutput_ struct { +} + +var Companion_ScanInputTransformOutput_ = CompanionStruct_ScanInputTransformOutput_{} + +type ScanInputTransformOutput_ScanInputTransformOutput struct { + TransformedInput m_ComAmazonawsDynamodbTypes.ScanInput +} + +func (ScanInputTransformOutput_ScanInputTransformOutput) isScanInputTransformOutput() {} + +func (CompanionStruct_ScanInputTransformOutput_) Create_ScanInputTransformOutput_(TransformedInput m_ComAmazonawsDynamodbTypes.ScanInput) ScanInputTransformOutput { + return ScanInputTransformOutput{ScanInputTransformOutput_ScanInputTransformOutput{TransformedInput}} +} + +func (_this ScanInputTransformOutput) Is_ScanInputTransformOutput() bool { + _, ok := _this.Get_().(ScanInputTransformOutput_ScanInputTransformOutput) + return ok +} + +func (CompanionStruct_ScanInputTransformOutput_) Default() ScanInputTransformOutput { + return Companion_ScanInputTransformOutput_.Create_ScanInputTransformOutput_(m_ComAmazonawsDynamodbTypes.Companion_ScanInput_.Default()) +} + +func (_this ScanInputTransformOutput) Dtor_transformedInput() m_ComAmazonawsDynamodbTypes.ScanInput { + return _this.Get_().(ScanInputTransformOutput_ScanInputTransformOutput).TransformedInput +} + +func (_this ScanInputTransformOutput) String() string { + switch data := _this.Get_().(type) { + case nil: + return "null" + case ScanInputTransformOutput_ScanInputTransformOutput: + { + return "AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.ScanInputTransformOutput.ScanInputTransformOutput" + "(" + _dafny.String(data.TransformedInput) + ")" + } + default: + { + return "" + } + } +} + +func (_this ScanInputTransformOutput) Equals(other ScanInputTransformOutput) bool { + switch data1 := _this.Get_().(type) { + case ScanInputTransformOutput_ScanInputTransformOutput: + { + data2, ok := other.Get_().(ScanInputTransformOutput_ScanInputTransformOutput) + return ok && data1.TransformedInput.Equals(data2.TransformedInput) + } + default: + { + return false // unexpected + } + } +} + +func (_this ScanInputTransformOutput) EqualsGeneric(other interface{}) bool { + typed, ok := other.(ScanInputTransformOutput) + return ok && _this.Equals(typed) +} + +func Type_ScanInputTransformOutput_() _dafny.TypeDescriptor { + return type_ScanInputTransformOutput_{} +} + +type type_ScanInputTransformOutput_ struct { +} + +func (_this type_ScanInputTransformOutput_) Default() interface{} { + return Companion_ScanInputTransformOutput_.Default() +} + +func (_this type_ScanInputTransformOutput_) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.ScanInputTransformOutput" +} +func (_this ScanInputTransformOutput) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = ScanInputTransformOutput{} + +// End of datatype ScanInputTransformOutput + +// Definition of datatype ScanOutputTransformInput +type ScanOutputTransformInput struct { + Data_ScanOutputTransformInput_ +} + +func (_this ScanOutputTransformInput) Get_() Data_ScanOutputTransformInput_ { + return _this.Data_ScanOutputTransformInput_ +} + +type Data_ScanOutputTransformInput_ interface { + isScanOutputTransformInput() +} + +type CompanionStruct_ScanOutputTransformInput_ struct { +} + +var Companion_ScanOutputTransformInput_ = CompanionStruct_ScanOutputTransformInput_{} + +type ScanOutputTransformInput_ScanOutputTransformInput struct { + SdkOutput m_ComAmazonawsDynamodbTypes.ScanOutput + OriginalInput m_ComAmazonawsDynamodbTypes.ScanInput +} + +func (ScanOutputTransformInput_ScanOutputTransformInput) isScanOutputTransformInput() {} + +func (CompanionStruct_ScanOutputTransformInput_) Create_ScanOutputTransformInput_(SdkOutput m_ComAmazonawsDynamodbTypes.ScanOutput, OriginalInput m_ComAmazonawsDynamodbTypes.ScanInput) ScanOutputTransformInput { + return ScanOutputTransformInput{ScanOutputTransformInput_ScanOutputTransformInput{SdkOutput, OriginalInput}} +} + +func (_this ScanOutputTransformInput) Is_ScanOutputTransformInput() bool { + _, ok := _this.Get_().(ScanOutputTransformInput_ScanOutputTransformInput) + return ok +} + +func (CompanionStruct_ScanOutputTransformInput_) Default() ScanOutputTransformInput { + return Companion_ScanOutputTransformInput_.Create_ScanOutputTransformInput_(m_ComAmazonawsDynamodbTypes.Companion_ScanOutput_.Default(), m_ComAmazonawsDynamodbTypes.Companion_ScanInput_.Default()) +} + +func (_this ScanOutputTransformInput) Dtor_sdkOutput() m_ComAmazonawsDynamodbTypes.ScanOutput { + return _this.Get_().(ScanOutputTransformInput_ScanOutputTransformInput).SdkOutput +} + +func (_this ScanOutputTransformInput) Dtor_originalInput() m_ComAmazonawsDynamodbTypes.ScanInput { + return _this.Get_().(ScanOutputTransformInput_ScanOutputTransformInput).OriginalInput +} + +func (_this ScanOutputTransformInput) String() string { + switch data := _this.Get_().(type) { + case nil: + return "null" + case ScanOutputTransformInput_ScanOutputTransformInput: + { + return "AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.ScanOutputTransformInput.ScanOutputTransformInput" + "(" + _dafny.String(data.SdkOutput) + ", " + _dafny.String(data.OriginalInput) + ")" + } + default: + { + return "" + } + } +} + +func (_this ScanOutputTransformInput) Equals(other ScanOutputTransformInput) bool { + switch data1 := _this.Get_().(type) { + case ScanOutputTransformInput_ScanOutputTransformInput: + { + data2, ok := other.Get_().(ScanOutputTransformInput_ScanOutputTransformInput) + return ok && data1.SdkOutput.Equals(data2.SdkOutput) && data1.OriginalInput.Equals(data2.OriginalInput) + } + default: + { + return false // unexpected + } + } +} + +func (_this ScanOutputTransformInput) EqualsGeneric(other interface{}) bool { + typed, ok := other.(ScanOutputTransformInput) + return ok && _this.Equals(typed) +} + +func Type_ScanOutputTransformInput_() _dafny.TypeDescriptor { + return type_ScanOutputTransformInput_{} +} + +type type_ScanOutputTransformInput_ struct { +} + +func (_this type_ScanOutputTransformInput_) Default() interface{} { + return Companion_ScanOutputTransformInput_.Default() +} + +func (_this type_ScanOutputTransformInput_) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.ScanOutputTransformInput" +} +func (_this ScanOutputTransformInput) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = ScanOutputTransformInput{} + +// End of datatype ScanOutputTransformInput + +// Definition of datatype ScanOutputTransformOutput +type ScanOutputTransformOutput struct { + Data_ScanOutputTransformOutput_ +} + +func (_this ScanOutputTransformOutput) Get_() Data_ScanOutputTransformOutput_ { + return _this.Data_ScanOutputTransformOutput_ +} + +type Data_ScanOutputTransformOutput_ interface { + isScanOutputTransformOutput() +} + +type CompanionStruct_ScanOutputTransformOutput_ struct { +} + +var Companion_ScanOutputTransformOutput_ = CompanionStruct_ScanOutputTransformOutput_{} + +type ScanOutputTransformOutput_ScanOutputTransformOutput struct { + TransformedOutput m_ComAmazonawsDynamodbTypes.ScanOutput +} + +func (ScanOutputTransformOutput_ScanOutputTransformOutput) isScanOutputTransformOutput() {} + +func (CompanionStruct_ScanOutputTransformOutput_) Create_ScanOutputTransformOutput_(TransformedOutput m_ComAmazonawsDynamodbTypes.ScanOutput) ScanOutputTransformOutput { + return ScanOutputTransformOutput{ScanOutputTransformOutput_ScanOutputTransformOutput{TransformedOutput}} +} + +func (_this ScanOutputTransformOutput) Is_ScanOutputTransformOutput() bool { + _, ok := _this.Get_().(ScanOutputTransformOutput_ScanOutputTransformOutput) + return ok +} + +func (CompanionStruct_ScanOutputTransformOutput_) Default() ScanOutputTransformOutput { + return Companion_ScanOutputTransformOutput_.Create_ScanOutputTransformOutput_(m_ComAmazonawsDynamodbTypes.Companion_ScanOutput_.Default()) +} + +func (_this ScanOutputTransformOutput) Dtor_transformedOutput() m_ComAmazonawsDynamodbTypes.ScanOutput { + return _this.Get_().(ScanOutputTransformOutput_ScanOutputTransformOutput).TransformedOutput +} + +func (_this ScanOutputTransformOutput) String() string { + switch data := _this.Get_().(type) { + case nil: + return "null" + case ScanOutputTransformOutput_ScanOutputTransformOutput: + { + return "AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.ScanOutputTransformOutput.ScanOutputTransformOutput" + "(" + _dafny.String(data.TransformedOutput) + ")" + } + default: + { + return "" + } + } +} + +func (_this ScanOutputTransformOutput) Equals(other ScanOutputTransformOutput) bool { + switch data1 := _this.Get_().(type) { + case ScanOutputTransformOutput_ScanOutputTransformOutput: + { + data2, ok := other.Get_().(ScanOutputTransformOutput_ScanOutputTransformOutput) + return ok && data1.TransformedOutput.Equals(data2.TransformedOutput) + } + default: + { + return false // unexpected + } + } +} + +func (_this ScanOutputTransformOutput) EqualsGeneric(other interface{}) bool { + typed, ok := other.(ScanOutputTransformOutput) + return ok && _this.Equals(typed) +} + +func Type_ScanOutputTransformOutput_() _dafny.TypeDescriptor { + return type_ScanOutputTransformOutput_{} +} + +type type_ScanOutputTransformOutput_ struct { +} + +func (_this type_ScanOutputTransformOutput_) Default() interface{} { + return Companion_ScanOutputTransformOutput_.Default() +} + +func (_this type_ScanOutputTransformOutput_) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.ScanOutputTransformOutput" +} +func (_this ScanOutputTransformOutput) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = ScanOutputTransformOutput{} + +// End of datatype ScanOutputTransformOutput + +// Definition of datatype TransactGetItemsInputTransformInput +type TransactGetItemsInputTransformInput struct { + Data_TransactGetItemsInputTransformInput_ +} + +func (_this TransactGetItemsInputTransformInput) Get_() Data_TransactGetItemsInputTransformInput_ { + return _this.Data_TransactGetItemsInputTransformInput_ +} + +type Data_TransactGetItemsInputTransformInput_ interface { + isTransactGetItemsInputTransformInput() +} + +type CompanionStruct_TransactGetItemsInputTransformInput_ struct { +} + +var Companion_TransactGetItemsInputTransformInput_ = CompanionStruct_TransactGetItemsInputTransformInput_{} + +type TransactGetItemsInputTransformInput_TransactGetItemsInputTransformInput struct { + SdkInput m_ComAmazonawsDynamodbTypes.TransactGetItemsInput +} + +func (TransactGetItemsInputTransformInput_TransactGetItemsInputTransformInput) isTransactGetItemsInputTransformInput() { +} + +func (CompanionStruct_TransactGetItemsInputTransformInput_) Create_TransactGetItemsInputTransformInput_(SdkInput m_ComAmazonawsDynamodbTypes.TransactGetItemsInput) TransactGetItemsInputTransformInput { + return TransactGetItemsInputTransformInput{TransactGetItemsInputTransformInput_TransactGetItemsInputTransformInput{SdkInput}} +} + +func (_this TransactGetItemsInputTransformInput) Is_TransactGetItemsInputTransformInput() bool { + _, ok := _this.Get_().(TransactGetItemsInputTransformInput_TransactGetItemsInputTransformInput) + return ok +} + +func (CompanionStruct_TransactGetItemsInputTransformInput_) Default() TransactGetItemsInputTransformInput { + return Companion_TransactGetItemsInputTransformInput_.Create_TransactGetItemsInputTransformInput_(m_ComAmazonawsDynamodbTypes.Companion_TransactGetItemsInput_.Default()) +} + +func (_this TransactGetItemsInputTransformInput) Dtor_sdkInput() m_ComAmazonawsDynamodbTypes.TransactGetItemsInput { + return _this.Get_().(TransactGetItemsInputTransformInput_TransactGetItemsInputTransformInput).SdkInput +} + +func (_this TransactGetItemsInputTransformInput) String() string { + switch data := _this.Get_().(type) { + case nil: + return "null" + case TransactGetItemsInputTransformInput_TransactGetItemsInputTransformInput: + { + return "AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.TransactGetItemsInputTransformInput.TransactGetItemsInputTransformInput" + "(" + _dafny.String(data.SdkInput) + ")" + } + default: + { + return "" + } + } +} + +func (_this TransactGetItemsInputTransformInput) Equals(other TransactGetItemsInputTransformInput) bool { + switch data1 := _this.Get_().(type) { + case TransactGetItemsInputTransformInput_TransactGetItemsInputTransformInput: + { + data2, ok := other.Get_().(TransactGetItemsInputTransformInput_TransactGetItemsInputTransformInput) + return ok && data1.SdkInput.Equals(data2.SdkInput) + } + default: + { + return false // unexpected + } + } +} + +func (_this TransactGetItemsInputTransformInput) EqualsGeneric(other interface{}) bool { + typed, ok := other.(TransactGetItemsInputTransformInput) + return ok && _this.Equals(typed) +} + +func Type_TransactGetItemsInputTransformInput_() _dafny.TypeDescriptor { + return type_TransactGetItemsInputTransformInput_{} +} + +type type_TransactGetItemsInputTransformInput_ struct { +} + +func (_this type_TransactGetItemsInputTransformInput_) Default() interface{} { + return Companion_TransactGetItemsInputTransformInput_.Default() +} + +func (_this type_TransactGetItemsInputTransformInput_) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.TransactGetItemsInputTransformInput" +} +func (_this TransactGetItemsInputTransformInput) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = TransactGetItemsInputTransformInput{} + +// End of datatype TransactGetItemsInputTransformInput + +// Definition of datatype TransactGetItemsInputTransformOutput +type TransactGetItemsInputTransformOutput struct { + Data_TransactGetItemsInputTransformOutput_ +} + +func (_this TransactGetItemsInputTransformOutput) Get_() Data_TransactGetItemsInputTransformOutput_ { + return _this.Data_TransactGetItemsInputTransformOutput_ +} + +type Data_TransactGetItemsInputTransformOutput_ interface { + isTransactGetItemsInputTransformOutput() +} + +type CompanionStruct_TransactGetItemsInputTransformOutput_ struct { +} + +var Companion_TransactGetItemsInputTransformOutput_ = CompanionStruct_TransactGetItemsInputTransformOutput_{} + +type TransactGetItemsInputTransformOutput_TransactGetItemsInputTransformOutput struct { + TransformedInput m_ComAmazonawsDynamodbTypes.TransactGetItemsInput +} + +func (TransactGetItemsInputTransformOutput_TransactGetItemsInputTransformOutput) isTransactGetItemsInputTransformOutput() { +} + +func (CompanionStruct_TransactGetItemsInputTransformOutput_) Create_TransactGetItemsInputTransformOutput_(TransformedInput m_ComAmazonawsDynamodbTypes.TransactGetItemsInput) TransactGetItemsInputTransformOutput { + return TransactGetItemsInputTransformOutput{TransactGetItemsInputTransformOutput_TransactGetItemsInputTransformOutput{TransformedInput}} +} + +func (_this TransactGetItemsInputTransformOutput) Is_TransactGetItemsInputTransformOutput() bool { + _, ok := _this.Get_().(TransactGetItemsInputTransformOutput_TransactGetItemsInputTransformOutput) + return ok +} + +func (CompanionStruct_TransactGetItemsInputTransformOutput_) Default() TransactGetItemsInputTransformOutput { + return Companion_TransactGetItemsInputTransformOutput_.Create_TransactGetItemsInputTransformOutput_(m_ComAmazonawsDynamodbTypes.Companion_TransactGetItemsInput_.Default()) +} + +func (_this TransactGetItemsInputTransformOutput) Dtor_transformedInput() m_ComAmazonawsDynamodbTypes.TransactGetItemsInput { + return _this.Get_().(TransactGetItemsInputTransformOutput_TransactGetItemsInputTransformOutput).TransformedInput +} + +func (_this TransactGetItemsInputTransformOutput) String() string { + switch data := _this.Get_().(type) { + case nil: + return "null" + case TransactGetItemsInputTransformOutput_TransactGetItemsInputTransformOutput: + { + return "AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.TransactGetItemsInputTransformOutput.TransactGetItemsInputTransformOutput" + "(" + _dafny.String(data.TransformedInput) + ")" + } + default: + { + return "" + } + } +} + +func (_this TransactGetItemsInputTransformOutput) Equals(other TransactGetItemsInputTransformOutput) bool { + switch data1 := _this.Get_().(type) { + case TransactGetItemsInputTransformOutput_TransactGetItemsInputTransformOutput: + { + data2, ok := other.Get_().(TransactGetItemsInputTransformOutput_TransactGetItemsInputTransformOutput) + return ok && data1.TransformedInput.Equals(data2.TransformedInput) + } + default: + { + return false // unexpected + } + } +} + +func (_this TransactGetItemsInputTransformOutput) EqualsGeneric(other interface{}) bool { + typed, ok := other.(TransactGetItemsInputTransformOutput) + return ok && _this.Equals(typed) +} + +func Type_TransactGetItemsInputTransformOutput_() _dafny.TypeDescriptor { + return type_TransactGetItemsInputTransformOutput_{} +} + +type type_TransactGetItemsInputTransformOutput_ struct { +} + +func (_this type_TransactGetItemsInputTransformOutput_) Default() interface{} { + return Companion_TransactGetItemsInputTransformOutput_.Default() +} + +func (_this type_TransactGetItemsInputTransformOutput_) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.TransactGetItemsInputTransformOutput" +} +func (_this TransactGetItemsInputTransformOutput) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = TransactGetItemsInputTransformOutput{} + +// End of datatype TransactGetItemsInputTransformOutput + +// Definition of datatype TransactGetItemsOutputTransformInput +type TransactGetItemsOutputTransformInput struct { + Data_TransactGetItemsOutputTransformInput_ +} + +func (_this TransactGetItemsOutputTransformInput) Get_() Data_TransactGetItemsOutputTransformInput_ { + return _this.Data_TransactGetItemsOutputTransformInput_ +} + +type Data_TransactGetItemsOutputTransformInput_ interface { + isTransactGetItemsOutputTransformInput() +} + +type CompanionStruct_TransactGetItemsOutputTransformInput_ struct { +} + +var Companion_TransactGetItemsOutputTransformInput_ = CompanionStruct_TransactGetItemsOutputTransformInput_{} + +type TransactGetItemsOutputTransformInput_TransactGetItemsOutputTransformInput struct { + SdkOutput m_ComAmazonawsDynamodbTypes.TransactGetItemsOutput + OriginalInput m_ComAmazonawsDynamodbTypes.TransactGetItemsInput +} + +func (TransactGetItemsOutputTransformInput_TransactGetItemsOutputTransformInput) isTransactGetItemsOutputTransformInput() { +} + +func (CompanionStruct_TransactGetItemsOutputTransformInput_) Create_TransactGetItemsOutputTransformInput_(SdkOutput m_ComAmazonawsDynamodbTypes.TransactGetItemsOutput, OriginalInput m_ComAmazonawsDynamodbTypes.TransactGetItemsInput) TransactGetItemsOutputTransformInput { + return TransactGetItemsOutputTransformInput{TransactGetItemsOutputTransformInput_TransactGetItemsOutputTransformInput{SdkOutput, OriginalInput}} +} + +func (_this TransactGetItemsOutputTransformInput) Is_TransactGetItemsOutputTransformInput() bool { + _, ok := _this.Get_().(TransactGetItemsOutputTransformInput_TransactGetItemsOutputTransformInput) + return ok +} + +func (CompanionStruct_TransactGetItemsOutputTransformInput_) Default() TransactGetItemsOutputTransformInput { + return Companion_TransactGetItemsOutputTransformInput_.Create_TransactGetItemsOutputTransformInput_(m_ComAmazonawsDynamodbTypes.Companion_TransactGetItemsOutput_.Default(), m_ComAmazonawsDynamodbTypes.Companion_TransactGetItemsInput_.Default()) +} + +func (_this TransactGetItemsOutputTransformInput) Dtor_sdkOutput() m_ComAmazonawsDynamodbTypes.TransactGetItemsOutput { + return _this.Get_().(TransactGetItemsOutputTransformInput_TransactGetItemsOutputTransformInput).SdkOutput +} + +func (_this TransactGetItemsOutputTransformInput) Dtor_originalInput() m_ComAmazonawsDynamodbTypes.TransactGetItemsInput { + return _this.Get_().(TransactGetItemsOutputTransformInput_TransactGetItemsOutputTransformInput).OriginalInput +} + +func (_this TransactGetItemsOutputTransformInput) String() string { + switch data := _this.Get_().(type) { + case nil: + return "null" + case TransactGetItemsOutputTransformInput_TransactGetItemsOutputTransformInput: + { + return "AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.TransactGetItemsOutputTransformInput.TransactGetItemsOutputTransformInput" + "(" + _dafny.String(data.SdkOutput) + ", " + _dafny.String(data.OriginalInput) + ")" + } + default: + { + return "" + } + } +} + +func (_this TransactGetItemsOutputTransformInput) Equals(other TransactGetItemsOutputTransformInput) bool { + switch data1 := _this.Get_().(type) { + case TransactGetItemsOutputTransformInput_TransactGetItemsOutputTransformInput: + { + data2, ok := other.Get_().(TransactGetItemsOutputTransformInput_TransactGetItemsOutputTransformInput) + return ok && data1.SdkOutput.Equals(data2.SdkOutput) && data1.OriginalInput.Equals(data2.OriginalInput) + } + default: + { + return false // unexpected + } + } +} + +func (_this TransactGetItemsOutputTransformInput) EqualsGeneric(other interface{}) bool { + typed, ok := other.(TransactGetItemsOutputTransformInput) + return ok && _this.Equals(typed) +} + +func Type_TransactGetItemsOutputTransformInput_() _dafny.TypeDescriptor { + return type_TransactGetItemsOutputTransformInput_{} +} + +type type_TransactGetItemsOutputTransformInput_ struct { +} + +func (_this type_TransactGetItemsOutputTransformInput_) Default() interface{} { + return Companion_TransactGetItemsOutputTransformInput_.Default() +} + +func (_this type_TransactGetItemsOutputTransformInput_) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.TransactGetItemsOutputTransformInput" +} +func (_this TransactGetItemsOutputTransformInput) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = TransactGetItemsOutputTransformInput{} + +// End of datatype TransactGetItemsOutputTransformInput + +// Definition of datatype TransactGetItemsOutputTransformOutput +type TransactGetItemsOutputTransformOutput struct { + Data_TransactGetItemsOutputTransformOutput_ +} + +func (_this TransactGetItemsOutputTransformOutput) Get_() Data_TransactGetItemsOutputTransformOutput_ { + return _this.Data_TransactGetItemsOutputTransformOutput_ +} + +type Data_TransactGetItemsOutputTransformOutput_ interface { + isTransactGetItemsOutputTransformOutput() +} + +type CompanionStruct_TransactGetItemsOutputTransformOutput_ struct { +} + +var Companion_TransactGetItemsOutputTransformOutput_ = CompanionStruct_TransactGetItemsOutputTransformOutput_{} + +type TransactGetItemsOutputTransformOutput_TransactGetItemsOutputTransformOutput struct { + TransformedOutput m_ComAmazonawsDynamodbTypes.TransactGetItemsOutput +} + +func (TransactGetItemsOutputTransformOutput_TransactGetItemsOutputTransformOutput) isTransactGetItemsOutputTransformOutput() { +} + +func (CompanionStruct_TransactGetItemsOutputTransformOutput_) Create_TransactGetItemsOutputTransformOutput_(TransformedOutput m_ComAmazonawsDynamodbTypes.TransactGetItemsOutput) TransactGetItemsOutputTransformOutput { + return TransactGetItemsOutputTransformOutput{TransactGetItemsOutputTransformOutput_TransactGetItemsOutputTransformOutput{TransformedOutput}} +} + +func (_this TransactGetItemsOutputTransformOutput) Is_TransactGetItemsOutputTransformOutput() bool { + _, ok := _this.Get_().(TransactGetItemsOutputTransformOutput_TransactGetItemsOutputTransformOutput) + return ok +} + +func (CompanionStruct_TransactGetItemsOutputTransformOutput_) Default() TransactGetItemsOutputTransformOutput { + return Companion_TransactGetItemsOutputTransformOutput_.Create_TransactGetItemsOutputTransformOutput_(m_ComAmazonawsDynamodbTypes.Companion_TransactGetItemsOutput_.Default()) +} + +func (_this TransactGetItemsOutputTransformOutput) Dtor_transformedOutput() m_ComAmazonawsDynamodbTypes.TransactGetItemsOutput { + return _this.Get_().(TransactGetItemsOutputTransformOutput_TransactGetItemsOutputTransformOutput).TransformedOutput +} + +func (_this TransactGetItemsOutputTransformOutput) String() string { + switch data := _this.Get_().(type) { + case nil: + return "null" + case TransactGetItemsOutputTransformOutput_TransactGetItemsOutputTransformOutput: + { + return "AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.TransactGetItemsOutputTransformOutput.TransactGetItemsOutputTransformOutput" + "(" + _dafny.String(data.TransformedOutput) + ")" + } + default: + { + return "" + } + } +} + +func (_this TransactGetItemsOutputTransformOutput) Equals(other TransactGetItemsOutputTransformOutput) bool { + switch data1 := _this.Get_().(type) { + case TransactGetItemsOutputTransformOutput_TransactGetItemsOutputTransformOutput: + { + data2, ok := other.Get_().(TransactGetItemsOutputTransformOutput_TransactGetItemsOutputTransformOutput) + return ok && data1.TransformedOutput.Equals(data2.TransformedOutput) + } + default: + { + return false // unexpected + } + } +} + +func (_this TransactGetItemsOutputTransformOutput) EqualsGeneric(other interface{}) bool { + typed, ok := other.(TransactGetItemsOutputTransformOutput) + return ok && _this.Equals(typed) +} + +func Type_TransactGetItemsOutputTransformOutput_() _dafny.TypeDescriptor { + return type_TransactGetItemsOutputTransformOutput_{} +} + +type type_TransactGetItemsOutputTransformOutput_ struct { +} + +func (_this type_TransactGetItemsOutputTransformOutput_) Default() interface{} { + return Companion_TransactGetItemsOutputTransformOutput_.Default() +} + +func (_this type_TransactGetItemsOutputTransformOutput_) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.TransactGetItemsOutputTransformOutput" +} +func (_this TransactGetItemsOutputTransformOutput) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = TransactGetItemsOutputTransformOutput{} + +// End of datatype TransactGetItemsOutputTransformOutput + +// Definition of datatype TransactWriteItemsInputTransformInput +type TransactWriteItemsInputTransformInput struct { + Data_TransactWriteItemsInputTransformInput_ +} + +func (_this TransactWriteItemsInputTransformInput) Get_() Data_TransactWriteItemsInputTransformInput_ { + return _this.Data_TransactWriteItemsInputTransformInput_ +} + +type Data_TransactWriteItemsInputTransformInput_ interface { + isTransactWriteItemsInputTransformInput() +} + +type CompanionStruct_TransactWriteItemsInputTransformInput_ struct { +} + +var Companion_TransactWriteItemsInputTransformInput_ = CompanionStruct_TransactWriteItemsInputTransformInput_{} + +type TransactWriteItemsInputTransformInput_TransactWriteItemsInputTransformInput struct { + SdkInput m_ComAmazonawsDynamodbTypes.TransactWriteItemsInput +} + +func (TransactWriteItemsInputTransformInput_TransactWriteItemsInputTransformInput) isTransactWriteItemsInputTransformInput() { +} + +func (CompanionStruct_TransactWriteItemsInputTransformInput_) Create_TransactWriteItemsInputTransformInput_(SdkInput m_ComAmazonawsDynamodbTypes.TransactWriteItemsInput) TransactWriteItemsInputTransformInput { + return TransactWriteItemsInputTransformInput{TransactWriteItemsInputTransformInput_TransactWriteItemsInputTransformInput{SdkInput}} +} + +func (_this TransactWriteItemsInputTransformInput) Is_TransactWriteItemsInputTransformInput() bool { + _, ok := _this.Get_().(TransactWriteItemsInputTransformInput_TransactWriteItemsInputTransformInput) + return ok +} + +func (CompanionStruct_TransactWriteItemsInputTransformInput_) Default() TransactWriteItemsInputTransformInput { + return Companion_TransactWriteItemsInputTransformInput_.Create_TransactWriteItemsInputTransformInput_(m_ComAmazonawsDynamodbTypes.Companion_TransactWriteItemsInput_.Default()) +} + +func (_this TransactWriteItemsInputTransformInput) Dtor_sdkInput() m_ComAmazonawsDynamodbTypes.TransactWriteItemsInput { + return _this.Get_().(TransactWriteItemsInputTransformInput_TransactWriteItemsInputTransformInput).SdkInput +} + +func (_this TransactWriteItemsInputTransformInput) String() string { + switch data := _this.Get_().(type) { + case nil: + return "null" + case TransactWriteItemsInputTransformInput_TransactWriteItemsInputTransformInput: + { + return "AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.TransactWriteItemsInputTransformInput.TransactWriteItemsInputTransformInput" + "(" + _dafny.String(data.SdkInput) + ")" + } + default: + { + return "" + } + } +} + +func (_this TransactWriteItemsInputTransformInput) Equals(other TransactWriteItemsInputTransformInput) bool { + switch data1 := _this.Get_().(type) { + case TransactWriteItemsInputTransformInput_TransactWriteItemsInputTransformInput: + { + data2, ok := other.Get_().(TransactWriteItemsInputTransformInput_TransactWriteItemsInputTransformInput) + return ok && data1.SdkInput.Equals(data2.SdkInput) + } + default: + { + return false // unexpected + } + } +} + +func (_this TransactWriteItemsInputTransformInput) EqualsGeneric(other interface{}) bool { + typed, ok := other.(TransactWriteItemsInputTransformInput) + return ok && _this.Equals(typed) +} + +func Type_TransactWriteItemsInputTransformInput_() _dafny.TypeDescriptor { + return type_TransactWriteItemsInputTransformInput_{} +} + +type type_TransactWriteItemsInputTransformInput_ struct { +} + +func (_this type_TransactWriteItemsInputTransformInput_) Default() interface{} { + return Companion_TransactWriteItemsInputTransformInput_.Default() +} + +func (_this type_TransactWriteItemsInputTransformInput_) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.TransactWriteItemsInputTransformInput" +} +func (_this TransactWriteItemsInputTransformInput) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = TransactWriteItemsInputTransformInput{} + +// End of datatype TransactWriteItemsInputTransformInput + +// Definition of datatype TransactWriteItemsInputTransformOutput +type TransactWriteItemsInputTransformOutput struct { + Data_TransactWriteItemsInputTransformOutput_ +} + +func (_this TransactWriteItemsInputTransformOutput) Get_() Data_TransactWriteItemsInputTransformOutput_ { + return _this.Data_TransactWriteItemsInputTransformOutput_ +} + +type Data_TransactWriteItemsInputTransformOutput_ interface { + isTransactWriteItemsInputTransformOutput() +} + +type CompanionStruct_TransactWriteItemsInputTransformOutput_ struct { +} + +var Companion_TransactWriteItemsInputTransformOutput_ = CompanionStruct_TransactWriteItemsInputTransformOutput_{} + +type TransactWriteItemsInputTransformOutput_TransactWriteItemsInputTransformOutput struct { + TransformedInput m_ComAmazonawsDynamodbTypes.TransactWriteItemsInput +} + +func (TransactWriteItemsInputTransformOutput_TransactWriteItemsInputTransformOutput) isTransactWriteItemsInputTransformOutput() { +} + +func (CompanionStruct_TransactWriteItemsInputTransformOutput_) Create_TransactWriteItemsInputTransformOutput_(TransformedInput m_ComAmazonawsDynamodbTypes.TransactWriteItemsInput) TransactWriteItemsInputTransformOutput { + return TransactWriteItemsInputTransformOutput{TransactWriteItemsInputTransformOutput_TransactWriteItemsInputTransformOutput{TransformedInput}} +} + +func (_this TransactWriteItemsInputTransformOutput) Is_TransactWriteItemsInputTransformOutput() bool { + _, ok := _this.Get_().(TransactWriteItemsInputTransformOutput_TransactWriteItemsInputTransformOutput) + return ok +} + +func (CompanionStruct_TransactWriteItemsInputTransformOutput_) Default() TransactWriteItemsInputTransformOutput { + return Companion_TransactWriteItemsInputTransformOutput_.Create_TransactWriteItemsInputTransformOutput_(m_ComAmazonawsDynamodbTypes.Companion_TransactWriteItemsInput_.Default()) +} + +func (_this TransactWriteItemsInputTransformOutput) Dtor_transformedInput() m_ComAmazonawsDynamodbTypes.TransactWriteItemsInput { + return _this.Get_().(TransactWriteItemsInputTransformOutput_TransactWriteItemsInputTransformOutput).TransformedInput +} + +func (_this TransactWriteItemsInputTransformOutput) String() string { + switch data := _this.Get_().(type) { + case nil: + return "null" + case TransactWriteItemsInputTransformOutput_TransactWriteItemsInputTransformOutput: + { + return "AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.TransactWriteItemsInputTransformOutput.TransactWriteItemsInputTransformOutput" + "(" + _dafny.String(data.TransformedInput) + ")" + } + default: + { + return "" + } + } +} + +func (_this TransactWriteItemsInputTransformOutput) Equals(other TransactWriteItemsInputTransformOutput) bool { + switch data1 := _this.Get_().(type) { + case TransactWriteItemsInputTransformOutput_TransactWriteItemsInputTransformOutput: + { + data2, ok := other.Get_().(TransactWriteItemsInputTransformOutput_TransactWriteItemsInputTransformOutput) + return ok && data1.TransformedInput.Equals(data2.TransformedInput) + } + default: + { + return false // unexpected + } + } +} + +func (_this TransactWriteItemsInputTransformOutput) EqualsGeneric(other interface{}) bool { + typed, ok := other.(TransactWriteItemsInputTransformOutput) + return ok && _this.Equals(typed) +} + +func Type_TransactWriteItemsInputTransformOutput_() _dafny.TypeDescriptor { + return type_TransactWriteItemsInputTransformOutput_{} +} + +type type_TransactWriteItemsInputTransformOutput_ struct { +} + +func (_this type_TransactWriteItemsInputTransformOutput_) Default() interface{} { + return Companion_TransactWriteItemsInputTransformOutput_.Default() +} + +func (_this type_TransactWriteItemsInputTransformOutput_) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.TransactWriteItemsInputTransformOutput" +} +func (_this TransactWriteItemsInputTransformOutput) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = TransactWriteItemsInputTransformOutput{} + +// End of datatype TransactWriteItemsInputTransformOutput + +// Definition of datatype TransactWriteItemsOutputTransformInput +type TransactWriteItemsOutputTransformInput struct { + Data_TransactWriteItemsOutputTransformInput_ +} + +func (_this TransactWriteItemsOutputTransformInput) Get_() Data_TransactWriteItemsOutputTransformInput_ { + return _this.Data_TransactWriteItemsOutputTransformInput_ +} + +type Data_TransactWriteItemsOutputTransformInput_ interface { + isTransactWriteItemsOutputTransformInput() +} + +type CompanionStruct_TransactWriteItemsOutputTransformInput_ struct { +} + +var Companion_TransactWriteItemsOutputTransformInput_ = CompanionStruct_TransactWriteItemsOutputTransformInput_{} + +type TransactWriteItemsOutputTransformInput_TransactWriteItemsOutputTransformInput struct { + SdkOutput m_ComAmazonawsDynamodbTypes.TransactWriteItemsOutput + OriginalInput m_ComAmazonawsDynamodbTypes.TransactWriteItemsInput +} + +func (TransactWriteItemsOutputTransformInput_TransactWriteItemsOutputTransformInput) isTransactWriteItemsOutputTransformInput() { +} + +func (CompanionStruct_TransactWriteItemsOutputTransformInput_) Create_TransactWriteItemsOutputTransformInput_(SdkOutput m_ComAmazonawsDynamodbTypes.TransactWriteItemsOutput, OriginalInput m_ComAmazonawsDynamodbTypes.TransactWriteItemsInput) TransactWriteItemsOutputTransformInput { + return TransactWriteItemsOutputTransformInput{TransactWriteItemsOutputTransformInput_TransactWriteItemsOutputTransformInput{SdkOutput, OriginalInput}} +} + +func (_this TransactWriteItemsOutputTransformInput) Is_TransactWriteItemsOutputTransformInput() bool { + _, ok := _this.Get_().(TransactWriteItemsOutputTransformInput_TransactWriteItemsOutputTransformInput) + return ok +} + +func (CompanionStruct_TransactWriteItemsOutputTransformInput_) Default() TransactWriteItemsOutputTransformInput { + return Companion_TransactWriteItemsOutputTransformInput_.Create_TransactWriteItemsOutputTransformInput_(m_ComAmazonawsDynamodbTypes.Companion_TransactWriteItemsOutput_.Default(), m_ComAmazonawsDynamodbTypes.Companion_TransactWriteItemsInput_.Default()) +} + +func (_this TransactWriteItemsOutputTransformInput) Dtor_sdkOutput() m_ComAmazonawsDynamodbTypes.TransactWriteItemsOutput { + return _this.Get_().(TransactWriteItemsOutputTransformInput_TransactWriteItemsOutputTransformInput).SdkOutput +} + +func (_this TransactWriteItemsOutputTransformInput) Dtor_originalInput() m_ComAmazonawsDynamodbTypes.TransactWriteItemsInput { + return _this.Get_().(TransactWriteItemsOutputTransformInput_TransactWriteItemsOutputTransformInput).OriginalInput +} + +func (_this TransactWriteItemsOutputTransformInput) String() string { + switch data := _this.Get_().(type) { + case nil: + return "null" + case TransactWriteItemsOutputTransformInput_TransactWriteItemsOutputTransformInput: + { + return "AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.TransactWriteItemsOutputTransformInput.TransactWriteItemsOutputTransformInput" + "(" + _dafny.String(data.SdkOutput) + ", " + _dafny.String(data.OriginalInput) + ")" + } + default: + { + return "" + } + } +} + +func (_this TransactWriteItemsOutputTransformInput) Equals(other TransactWriteItemsOutputTransformInput) bool { + switch data1 := _this.Get_().(type) { + case TransactWriteItemsOutputTransformInput_TransactWriteItemsOutputTransformInput: + { + data2, ok := other.Get_().(TransactWriteItemsOutputTransformInput_TransactWriteItemsOutputTransformInput) + return ok && data1.SdkOutput.Equals(data2.SdkOutput) && data1.OriginalInput.Equals(data2.OriginalInput) + } + default: + { + return false // unexpected + } + } +} + +func (_this TransactWriteItemsOutputTransformInput) EqualsGeneric(other interface{}) bool { + typed, ok := other.(TransactWriteItemsOutputTransformInput) + return ok && _this.Equals(typed) +} + +func Type_TransactWriteItemsOutputTransformInput_() _dafny.TypeDescriptor { + return type_TransactWriteItemsOutputTransformInput_{} +} + +type type_TransactWriteItemsOutputTransformInput_ struct { +} + +func (_this type_TransactWriteItemsOutputTransformInput_) Default() interface{} { + return Companion_TransactWriteItemsOutputTransformInput_.Default() +} + +func (_this type_TransactWriteItemsOutputTransformInput_) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.TransactWriteItemsOutputTransformInput" +} +func (_this TransactWriteItemsOutputTransformInput) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = TransactWriteItemsOutputTransformInput{} + +// End of datatype TransactWriteItemsOutputTransformInput + +// Definition of datatype TransactWriteItemsOutputTransformOutput +type TransactWriteItemsOutputTransformOutput struct { + Data_TransactWriteItemsOutputTransformOutput_ +} + +func (_this TransactWriteItemsOutputTransformOutput) Get_() Data_TransactWriteItemsOutputTransformOutput_ { + return _this.Data_TransactWriteItemsOutputTransformOutput_ +} + +type Data_TransactWriteItemsOutputTransformOutput_ interface { + isTransactWriteItemsOutputTransformOutput() +} + +type CompanionStruct_TransactWriteItemsOutputTransformOutput_ struct { +} + +var Companion_TransactWriteItemsOutputTransformOutput_ = CompanionStruct_TransactWriteItemsOutputTransformOutput_{} + +type TransactWriteItemsOutputTransformOutput_TransactWriteItemsOutputTransformOutput struct { + TransformedOutput m_ComAmazonawsDynamodbTypes.TransactWriteItemsOutput +} + +func (TransactWriteItemsOutputTransformOutput_TransactWriteItemsOutputTransformOutput) isTransactWriteItemsOutputTransformOutput() { +} + +func (CompanionStruct_TransactWriteItemsOutputTransformOutput_) Create_TransactWriteItemsOutputTransformOutput_(TransformedOutput m_ComAmazonawsDynamodbTypes.TransactWriteItemsOutput) TransactWriteItemsOutputTransformOutput { + return TransactWriteItemsOutputTransformOutput{TransactWriteItemsOutputTransformOutput_TransactWriteItemsOutputTransformOutput{TransformedOutput}} +} + +func (_this TransactWriteItemsOutputTransformOutput) Is_TransactWriteItemsOutputTransformOutput() bool { + _, ok := _this.Get_().(TransactWriteItemsOutputTransformOutput_TransactWriteItemsOutputTransformOutput) + return ok +} + +func (CompanionStruct_TransactWriteItemsOutputTransformOutput_) Default() TransactWriteItemsOutputTransformOutput { + return Companion_TransactWriteItemsOutputTransformOutput_.Create_TransactWriteItemsOutputTransformOutput_(m_ComAmazonawsDynamodbTypes.Companion_TransactWriteItemsOutput_.Default()) +} + +func (_this TransactWriteItemsOutputTransformOutput) Dtor_transformedOutput() m_ComAmazonawsDynamodbTypes.TransactWriteItemsOutput { + return _this.Get_().(TransactWriteItemsOutputTransformOutput_TransactWriteItemsOutputTransformOutput).TransformedOutput +} + +func (_this TransactWriteItemsOutputTransformOutput) String() string { + switch data := _this.Get_().(type) { + case nil: + return "null" + case TransactWriteItemsOutputTransformOutput_TransactWriteItemsOutputTransformOutput: + { + return "AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.TransactWriteItemsOutputTransformOutput.TransactWriteItemsOutputTransformOutput" + "(" + _dafny.String(data.TransformedOutput) + ")" + } + default: + { + return "" + } + } +} + +func (_this TransactWriteItemsOutputTransformOutput) Equals(other TransactWriteItemsOutputTransformOutput) bool { + switch data1 := _this.Get_().(type) { + case TransactWriteItemsOutputTransformOutput_TransactWriteItemsOutputTransformOutput: + { + data2, ok := other.Get_().(TransactWriteItemsOutputTransformOutput_TransactWriteItemsOutputTransformOutput) + return ok && data1.TransformedOutput.Equals(data2.TransformedOutput) + } + default: + { + return false // unexpected + } + } +} + +func (_this TransactWriteItemsOutputTransformOutput) EqualsGeneric(other interface{}) bool { + typed, ok := other.(TransactWriteItemsOutputTransformOutput) + return ok && _this.Equals(typed) +} + +func Type_TransactWriteItemsOutputTransformOutput_() _dafny.TypeDescriptor { + return type_TransactWriteItemsOutputTransformOutput_{} +} + +type type_TransactWriteItemsOutputTransformOutput_ struct { +} + +func (_this type_TransactWriteItemsOutputTransformOutput_) Default() interface{} { + return Companion_TransactWriteItemsOutputTransformOutput_.Default() +} + +func (_this type_TransactWriteItemsOutputTransformOutput_) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.TransactWriteItemsOutputTransformOutput" +} +func (_this TransactWriteItemsOutputTransformOutput) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = TransactWriteItemsOutputTransformOutput{} + +// End of datatype TransactWriteItemsOutputTransformOutput + +// Definition of datatype UpdateItemInputTransformInput +type UpdateItemInputTransformInput struct { + Data_UpdateItemInputTransformInput_ +} + +func (_this UpdateItemInputTransformInput) Get_() Data_UpdateItemInputTransformInput_ { + return _this.Data_UpdateItemInputTransformInput_ +} + +type Data_UpdateItemInputTransformInput_ interface { + isUpdateItemInputTransformInput() +} + +type CompanionStruct_UpdateItemInputTransformInput_ struct { +} + +var Companion_UpdateItemInputTransformInput_ = CompanionStruct_UpdateItemInputTransformInput_{} + +type UpdateItemInputTransformInput_UpdateItemInputTransformInput struct { + SdkInput m_ComAmazonawsDynamodbTypes.UpdateItemInput +} + +func (UpdateItemInputTransformInput_UpdateItemInputTransformInput) isUpdateItemInputTransformInput() { +} + +func (CompanionStruct_UpdateItemInputTransformInput_) Create_UpdateItemInputTransformInput_(SdkInput m_ComAmazonawsDynamodbTypes.UpdateItemInput) UpdateItemInputTransformInput { + return UpdateItemInputTransformInput{UpdateItemInputTransformInput_UpdateItemInputTransformInput{SdkInput}} +} + +func (_this UpdateItemInputTransformInput) Is_UpdateItemInputTransformInput() bool { + _, ok := _this.Get_().(UpdateItemInputTransformInput_UpdateItemInputTransformInput) + return ok +} + +func (CompanionStruct_UpdateItemInputTransformInput_) Default() UpdateItemInputTransformInput { + return Companion_UpdateItemInputTransformInput_.Create_UpdateItemInputTransformInput_(m_ComAmazonawsDynamodbTypes.Companion_UpdateItemInput_.Default()) +} + +func (_this UpdateItemInputTransformInput) Dtor_sdkInput() m_ComAmazonawsDynamodbTypes.UpdateItemInput { + return _this.Get_().(UpdateItemInputTransformInput_UpdateItemInputTransformInput).SdkInput +} + +func (_this UpdateItemInputTransformInput) String() string { + switch data := _this.Get_().(type) { + case nil: + return "null" + case UpdateItemInputTransformInput_UpdateItemInputTransformInput: + { + return "AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.UpdateItemInputTransformInput.UpdateItemInputTransformInput" + "(" + _dafny.String(data.SdkInput) + ")" + } + default: + { + return "" + } + } +} + +func (_this UpdateItemInputTransformInput) Equals(other UpdateItemInputTransformInput) bool { + switch data1 := _this.Get_().(type) { + case UpdateItemInputTransformInput_UpdateItemInputTransformInput: + { + data2, ok := other.Get_().(UpdateItemInputTransformInput_UpdateItemInputTransformInput) + return ok && data1.SdkInput.Equals(data2.SdkInput) + } + default: + { + return false // unexpected + } + } +} + +func (_this UpdateItemInputTransformInput) EqualsGeneric(other interface{}) bool { + typed, ok := other.(UpdateItemInputTransformInput) + return ok && _this.Equals(typed) +} + +func Type_UpdateItemInputTransformInput_() _dafny.TypeDescriptor { + return type_UpdateItemInputTransformInput_{} +} + +type type_UpdateItemInputTransformInput_ struct { +} + +func (_this type_UpdateItemInputTransformInput_) Default() interface{} { + return Companion_UpdateItemInputTransformInput_.Default() +} + +func (_this type_UpdateItemInputTransformInput_) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.UpdateItemInputTransformInput" +} +func (_this UpdateItemInputTransformInput) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = UpdateItemInputTransformInput{} + +// End of datatype UpdateItemInputTransformInput + +// Definition of datatype UpdateItemInputTransformOutput +type UpdateItemInputTransformOutput struct { + Data_UpdateItemInputTransformOutput_ +} + +func (_this UpdateItemInputTransformOutput) Get_() Data_UpdateItemInputTransformOutput_ { + return _this.Data_UpdateItemInputTransformOutput_ +} + +type Data_UpdateItemInputTransformOutput_ interface { + isUpdateItemInputTransformOutput() +} + +type CompanionStruct_UpdateItemInputTransformOutput_ struct { +} + +var Companion_UpdateItemInputTransformOutput_ = CompanionStruct_UpdateItemInputTransformOutput_{} + +type UpdateItemInputTransformOutput_UpdateItemInputTransformOutput struct { + TransformedInput m_ComAmazonawsDynamodbTypes.UpdateItemInput +} + +func (UpdateItemInputTransformOutput_UpdateItemInputTransformOutput) isUpdateItemInputTransformOutput() { +} + +func (CompanionStruct_UpdateItemInputTransformOutput_) Create_UpdateItemInputTransformOutput_(TransformedInput m_ComAmazonawsDynamodbTypes.UpdateItemInput) UpdateItemInputTransformOutput { + return UpdateItemInputTransformOutput{UpdateItemInputTransformOutput_UpdateItemInputTransformOutput{TransformedInput}} +} + +func (_this UpdateItemInputTransformOutput) Is_UpdateItemInputTransformOutput() bool { + _, ok := _this.Get_().(UpdateItemInputTransformOutput_UpdateItemInputTransformOutput) + return ok +} + +func (CompanionStruct_UpdateItemInputTransformOutput_) Default() UpdateItemInputTransformOutput { + return Companion_UpdateItemInputTransformOutput_.Create_UpdateItemInputTransformOutput_(m_ComAmazonawsDynamodbTypes.Companion_UpdateItemInput_.Default()) +} + +func (_this UpdateItemInputTransformOutput) Dtor_transformedInput() m_ComAmazonawsDynamodbTypes.UpdateItemInput { + return _this.Get_().(UpdateItemInputTransformOutput_UpdateItemInputTransformOutput).TransformedInput +} + +func (_this UpdateItemInputTransformOutput) String() string { + switch data := _this.Get_().(type) { + case nil: + return "null" + case UpdateItemInputTransformOutput_UpdateItemInputTransformOutput: + { + return "AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.UpdateItemInputTransformOutput.UpdateItemInputTransformOutput" + "(" + _dafny.String(data.TransformedInput) + ")" + } + default: + { + return "" + } + } +} + +func (_this UpdateItemInputTransformOutput) Equals(other UpdateItemInputTransformOutput) bool { + switch data1 := _this.Get_().(type) { + case UpdateItemInputTransformOutput_UpdateItemInputTransformOutput: + { + data2, ok := other.Get_().(UpdateItemInputTransformOutput_UpdateItemInputTransformOutput) + return ok && data1.TransformedInput.Equals(data2.TransformedInput) + } + default: + { + return false // unexpected + } + } +} + +func (_this UpdateItemInputTransformOutput) EqualsGeneric(other interface{}) bool { + typed, ok := other.(UpdateItemInputTransformOutput) + return ok && _this.Equals(typed) +} + +func Type_UpdateItemInputTransformOutput_() _dafny.TypeDescriptor { + return type_UpdateItemInputTransformOutput_{} +} + +type type_UpdateItemInputTransformOutput_ struct { +} + +func (_this type_UpdateItemInputTransformOutput_) Default() interface{} { + return Companion_UpdateItemInputTransformOutput_.Default() +} + +func (_this type_UpdateItemInputTransformOutput_) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.UpdateItemInputTransformOutput" +} +func (_this UpdateItemInputTransformOutput) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = UpdateItemInputTransformOutput{} + +// End of datatype UpdateItemInputTransformOutput + +// Definition of datatype UpdateItemOutputTransformInput +type UpdateItemOutputTransformInput struct { + Data_UpdateItemOutputTransformInput_ +} + +func (_this UpdateItemOutputTransformInput) Get_() Data_UpdateItemOutputTransformInput_ { + return _this.Data_UpdateItemOutputTransformInput_ +} + +type Data_UpdateItemOutputTransformInput_ interface { + isUpdateItemOutputTransformInput() +} + +type CompanionStruct_UpdateItemOutputTransformInput_ struct { +} + +var Companion_UpdateItemOutputTransformInput_ = CompanionStruct_UpdateItemOutputTransformInput_{} + +type UpdateItemOutputTransformInput_UpdateItemOutputTransformInput struct { + SdkOutput m_ComAmazonawsDynamodbTypes.UpdateItemOutput + OriginalInput m_ComAmazonawsDynamodbTypes.UpdateItemInput +} + +func (UpdateItemOutputTransformInput_UpdateItemOutputTransformInput) isUpdateItemOutputTransformInput() { +} + +func (CompanionStruct_UpdateItemOutputTransformInput_) Create_UpdateItemOutputTransformInput_(SdkOutput m_ComAmazonawsDynamodbTypes.UpdateItemOutput, OriginalInput m_ComAmazonawsDynamodbTypes.UpdateItemInput) UpdateItemOutputTransformInput { + return UpdateItemOutputTransformInput{UpdateItemOutputTransformInput_UpdateItemOutputTransformInput{SdkOutput, OriginalInput}} +} + +func (_this UpdateItemOutputTransformInput) Is_UpdateItemOutputTransformInput() bool { + _, ok := _this.Get_().(UpdateItemOutputTransformInput_UpdateItemOutputTransformInput) + return ok +} + +func (CompanionStruct_UpdateItemOutputTransformInput_) Default() UpdateItemOutputTransformInput { + return Companion_UpdateItemOutputTransformInput_.Create_UpdateItemOutputTransformInput_(m_ComAmazonawsDynamodbTypes.Companion_UpdateItemOutput_.Default(), m_ComAmazonawsDynamodbTypes.Companion_UpdateItemInput_.Default()) +} + +func (_this UpdateItemOutputTransformInput) Dtor_sdkOutput() m_ComAmazonawsDynamodbTypes.UpdateItemOutput { + return _this.Get_().(UpdateItemOutputTransformInput_UpdateItemOutputTransformInput).SdkOutput +} + +func (_this UpdateItemOutputTransformInput) Dtor_originalInput() m_ComAmazonawsDynamodbTypes.UpdateItemInput { + return _this.Get_().(UpdateItemOutputTransformInput_UpdateItemOutputTransformInput).OriginalInput +} + +func (_this UpdateItemOutputTransformInput) String() string { + switch data := _this.Get_().(type) { + case nil: + return "null" + case UpdateItemOutputTransformInput_UpdateItemOutputTransformInput: + { + return "AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.UpdateItemOutputTransformInput.UpdateItemOutputTransformInput" + "(" + _dafny.String(data.SdkOutput) + ", " + _dafny.String(data.OriginalInput) + ")" + } + default: + { + return "" + } + } +} + +func (_this UpdateItemOutputTransformInput) Equals(other UpdateItemOutputTransformInput) bool { + switch data1 := _this.Get_().(type) { + case UpdateItemOutputTransformInput_UpdateItemOutputTransformInput: + { + data2, ok := other.Get_().(UpdateItemOutputTransformInput_UpdateItemOutputTransformInput) + return ok && data1.SdkOutput.Equals(data2.SdkOutput) && data1.OriginalInput.Equals(data2.OriginalInput) + } + default: + { + return false // unexpected + } + } +} + +func (_this UpdateItemOutputTransformInput) EqualsGeneric(other interface{}) bool { + typed, ok := other.(UpdateItemOutputTransformInput) + return ok && _this.Equals(typed) +} + +func Type_UpdateItemOutputTransformInput_() _dafny.TypeDescriptor { + return type_UpdateItemOutputTransformInput_{} +} + +type type_UpdateItemOutputTransformInput_ struct { +} + +func (_this type_UpdateItemOutputTransformInput_) Default() interface{} { + return Companion_UpdateItemOutputTransformInput_.Default() +} + +func (_this type_UpdateItemOutputTransformInput_) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.UpdateItemOutputTransformInput" +} +func (_this UpdateItemOutputTransformInput) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = UpdateItemOutputTransformInput{} + +// End of datatype UpdateItemOutputTransformInput + +// Definition of datatype UpdateItemOutputTransformOutput +type UpdateItemOutputTransformOutput struct { + Data_UpdateItemOutputTransformOutput_ +} + +func (_this UpdateItemOutputTransformOutput) Get_() Data_UpdateItemOutputTransformOutput_ { + return _this.Data_UpdateItemOutputTransformOutput_ +} + +type Data_UpdateItemOutputTransformOutput_ interface { + isUpdateItemOutputTransformOutput() +} + +type CompanionStruct_UpdateItemOutputTransformOutput_ struct { +} + +var Companion_UpdateItemOutputTransformOutput_ = CompanionStruct_UpdateItemOutputTransformOutput_{} + +type UpdateItemOutputTransformOutput_UpdateItemOutputTransformOutput struct { + TransformedOutput m_ComAmazonawsDynamodbTypes.UpdateItemOutput +} + +func (UpdateItemOutputTransformOutput_UpdateItemOutputTransformOutput) isUpdateItemOutputTransformOutput() { +} + +func (CompanionStruct_UpdateItemOutputTransformOutput_) Create_UpdateItemOutputTransformOutput_(TransformedOutput m_ComAmazonawsDynamodbTypes.UpdateItemOutput) UpdateItemOutputTransformOutput { + return UpdateItemOutputTransformOutput{UpdateItemOutputTransformOutput_UpdateItemOutputTransformOutput{TransformedOutput}} +} + +func (_this UpdateItemOutputTransformOutput) Is_UpdateItemOutputTransformOutput() bool { + _, ok := _this.Get_().(UpdateItemOutputTransformOutput_UpdateItemOutputTransformOutput) + return ok +} + +func (CompanionStruct_UpdateItemOutputTransformOutput_) Default() UpdateItemOutputTransformOutput { + return Companion_UpdateItemOutputTransformOutput_.Create_UpdateItemOutputTransformOutput_(m_ComAmazonawsDynamodbTypes.Companion_UpdateItemOutput_.Default()) +} + +func (_this UpdateItemOutputTransformOutput) Dtor_transformedOutput() m_ComAmazonawsDynamodbTypes.UpdateItemOutput { + return _this.Get_().(UpdateItemOutputTransformOutput_UpdateItemOutputTransformOutput).TransformedOutput +} + +func (_this UpdateItemOutputTransformOutput) String() string { + switch data := _this.Get_().(type) { + case nil: + return "null" + case UpdateItemOutputTransformOutput_UpdateItemOutputTransformOutput: + { + return "AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.UpdateItemOutputTransformOutput.UpdateItemOutputTransformOutput" + "(" + _dafny.String(data.TransformedOutput) + ")" + } + default: + { + return "" + } + } +} + +func (_this UpdateItemOutputTransformOutput) Equals(other UpdateItemOutputTransformOutput) bool { + switch data1 := _this.Get_().(type) { + case UpdateItemOutputTransformOutput_UpdateItemOutputTransformOutput: + { + data2, ok := other.Get_().(UpdateItemOutputTransformOutput_UpdateItemOutputTransformOutput) + return ok && data1.TransformedOutput.Equals(data2.TransformedOutput) + } + default: + { + return false // unexpected + } + } +} + +func (_this UpdateItemOutputTransformOutput) EqualsGeneric(other interface{}) bool { + typed, ok := other.(UpdateItemOutputTransformOutput) + return ok && _this.Equals(typed) +} + +func Type_UpdateItemOutputTransformOutput_() _dafny.TypeDescriptor { + return type_UpdateItemOutputTransformOutput_{} +} + +type type_UpdateItemOutputTransformOutput_ struct { +} + +func (_this type_UpdateItemOutputTransformOutput_) Default() interface{} { + return Companion_UpdateItemOutputTransformOutput_.Default() +} + +func (_this type_UpdateItemOutputTransformOutput_) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.UpdateItemOutputTransformOutput" +} +func (_this UpdateItemOutputTransformOutput) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = UpdateItemOutputTransformOutput{} + +// End of datatype UpdateItemOutputTransformOutput + +// Definition of datatype Error +type Error struct { + Data_Error_ +} + +func (_this Error) Get_() Data_Error_ { + return _this.Data_Error_ +} + +type Data_Error_ interface { + isError() +} + +type CompanionStruct_Error_ struct { +} + +var Companion_Error_ = CompanionStruct_Error_{} + +type Error_DynamoDbEncryptionTransformsException struct { + Message _dafny.Sequence +} + +func (Error_DynamoDbEncryptionTransformsException) isError() {} + +func (CompanionStruct_Error_) Create_DynamoDbEncryptionTransformsException_(Message _dafny.Sequence) Error { + return Error{Error_DynamoDbEncryptionTransformsException{Message}} +} + +func (_this Error) Is_DynamoDbEncryptionTransformsException() bool { + _, ok := _this.Get_().(Error_DynamoDbEncryptionTransformsException) + return ok +} + +type Error_AwsCryptographyDbEncryptionSdkDynamoDb struct { + AwsCryptographyDbEncryptionSdkDynamoDb m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Error +} + +func (Error_AwsCryptographyDbEncryptionSdkDynamoDb) isError() {} + +func (CompanionStruct_Error_) Create_AwsCryptographyDbEncryptionSdkDynamoDb_(AwsCryptographyDbEncryptionSdkDynamoDb m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Error) Error { + return Error{Error_AwsCryptographyDbEncryptionSdkDynamoDb{AwsCryptographyDbEncryptionSdkDynamoDb}} +} + +func (_this Error) Is_AwsCryptographyDbEncryptionSdkDynamoDb() bool { + _, ok := _this.Get_().(Error_AwsCryptographyDbEncryptionSdkDynamoDb) + return ok +} + +type Error_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptor struct { + AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptor m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Error +} + +func (Error_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptor) isError() {} + +func (CompanionStruct_Error_) Create_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptor_(AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptor m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Error) Error { + return Error{Error_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptor{AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptor}} +} + +func (_this Error) Is_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptor() bool { + _, ok := _this.Get_().(Error_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptor) + return ok +} + +type Error_AwsCryptographyDbEncryptionSdkStructuredEncryption struct { + AwsCryptographyDbEncryptionSdkStructuredEncryption m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Error +} + +func (Error_AwsCryptographyDbEncryptionSdkStructuredEncryption) isError() {} + +func (CompanionStruct_Error_) Create_AwsCryptographyDbEncryptionSdkStructuredEncryption_(AwsCryptographyDbEncryptionSdkStructuredEncryption m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Error) Error { + return Error{Error_AwsCryptographyDbEncryptionSdkStructuredEncryption{AwsCryptographyDbEncryptionSdkStructuredEncryption}} +} + +func (_this Error) Is_AwsCryptographyDbEncryptionSdkStructuredEncryption() bool { + _, ok := _this.Get_().(Error_AwsCryptographyDbEncryptionSdkStructuredEncryption) + return ok +} + +type Error_AwsCryptographyMaterialProviders struct { + AwsCryptographyMaterialProviders m_AwsCryptographyMaterialProvidersTypes.Error +} + +func (Error_AwsCryptographyMaterialProviders) isError() {} + +func (CompanionStruct_Error_) Create_AwsCryptographyMaterialProviders_(AwsCryptographyMaterialProviders m_AwsCryptographyMaterialProvidersTypes.Error) Error { + return Error{Error_AwsCryptographyMaterialProviders{AwsCryptographyMaterialProviders}} +} + +func (_this Error) Is_AwsCryptographyMaterialProviders() bool { + _, ok := _this.Get_().(Error_AwsCryptographyMaterialProviders) + return ok +} + +type Error_ComAmazonawsDynamodb struct { + ComAmazonawsDynamodb m_ComAmazonawsDynamodbTypes.Error +} + +func (Error_ComAmazonawsDynamodb) isError() {} + +func (CompanionStruct_Error_) Create_ComAmazonawsDynamodb_(ComAmazonawsDynamodb m_ComAmazonawsDynamodbTypes.Error) Error { + return Error{Error_ComAmazonawsDynamodb{ComAmazonawsDynamodb}} +} + +func (_this Error) Is_ComAmazonawsDynamodb() bool { + _, ok := _this.Get_().(Error_ComAmazonawsDynamodb) + return ok +} + +type Error_CollectionOfErrors struct { + List _dafny.Sequence + Message _dafny.Sequence +} + +func (Error_CollectionOfErrors) isError() {} + +func (CompanionStruct_Error_) Create_CollectionOfErrors_(List _dafny.Sequence, Message _dafny.Sequence) Error { + return Error{Error_CollectionOfErrors{List, Message}} +} + +func (_this Error) Is_CollectionOfErrors() bool { + _, ok := _this.Get_().(Error_CollectionOfErrors) + return ok +} + +type Error_Opaque struct { + Obj interface{} +} + +func (Error_Opaque) isError() {} + +func (CompanionStruct_Error_) Create_Opaque_(Obj interface{}) Error { + return Error{Error_Opaque{Obj}} +} + +func (_this Error) Is_Opaque() bool { + _, ok := _this.Get_().(Error_Opaque) + return ok +} + +type Error_OpaqueWithText struct { + Obj interface{} + ObjMessage _dafny.Sequence +} + +func (Error_OpaqueWithText) isError() {} + +func (CompanionStruct_Error_) Create_OpaqueWithText_(Obj interface{}, ObjMessage _dafny.Sequence) Error { + return Error{Error_OpaqueWithText{Obj, ObjMessage}} +} + +func (_this Error) Is_OpaqueWithText() bool { + _, ok := _this.Get_().(Error_OpaqueWithText) + return ok +} + +func (CompanionStruct_Error_) Default() Error { + return Companion_Error_.Create_DynamoDbEncryptionTransformsException_(_dafny.EmptySeq.SetString()) +} + +func (_this Error) Dtor_message() _dafny.Sequence { + switch data := _this.Get_().(type) { + case Error_DynamoDbEncryptionTransformsException: + return data.Message + default: + return data.(Error_CollectionOfErrors).Message + } +} + +func (_this Error) Dtor_AwsCryptographyDbEncryptionSdkDynamoDb() m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Error { + return _this.Get_().(Error_AwsCryptographyDbEncryptionSdkDynamoDb).AwsCryptographyDbEncryptionSdkDynamoDb +} + +func (_this Error) Dtor_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptor() m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Error { + return _this.Get_().(Error_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptor).AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptor +} + +func (_this Error) Dtor_AwsCryptographyDbEncryptionSdkStructuredEncryption() m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Error { + return _this.Get_().(Error_AwsCryptographyDbEncryptionSdkStructuredEncryption).AwsCryptographyDbEncryptionSdkStructuredEncryption +} + +func (_this Error) Dtor_AwsCryptographyMaterialProviders() m_AwsCryptographyMaterialProvidersTypes.Error { + return _this.Get_().(Error_AwsCryptographyMaterialProviders).AwsCryptographyMaterialProviders +} + +func (_this Error) Dtor_ComAmazonawsDynamodb() m_ComAmazonawsDynamodbTypes.Error { + return _this.Get_().(Error_ComAmazonawsDynamodb).ComAmazonawsDynamodb +} + +func (_this Error) Dtor_list() _dafny.Sequence { + return _this.Get_().(Error_CollectionOfErrors).List +} + +func (_this Error) Dtor_obj() interface{} { + switch data := _this.Get_().(type) { + case Error_Opaque: + return data.Obj + default: + return data.(Error_OpaqueWithText).Obj + } +} + +func (_this Error) Dtor_objMessage() _dafny.Sequence { + return _this.Get_().(Error_OpaqueWithText).ObjMessage +} + +func (_this Error) String() string { + switch data := _this.Get_().(type) { + case nil: + return "null" + case Error_DynamoDbEncryptionTransformsException: + { + return "AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Error.DynamoDbEncryptionTransformsException" + "(" + _dafny.String(data.Message) + ")" + } + case Error_AwsCryptographyDbEncryptionSdkDynamoDb: + { + return "AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Error.AwsCryptographyDbEncryptionSdkDynamoDb" + "(" + _dafny.String(data.AwsCryptographyDbEncryptionSdkDynamoDb) + ")" + } + case Error_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptor: + { + return "AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Error.AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptor" + "(" + _dafny.String(data.AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptor) + ")" + } + case Error_AwsCryptographyDbEncryptionSdkStructuredEncryption: + { + return "AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Error.AwsCryptographyDbEncryptionSdkStructuredEncryption" + "(" + _dafny.String(data.AwsCryptographyDbEncryptionSdkStructuredEncryption) + ")" + } + case Error_AwsCryptographyMaterialProviders: + { + return "AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Error.AwsCryptographyMaterialProviders" + "(" + _dafny.String(data.AwsCryptographyMaterialProviders) + ")" + } + case Error_ComAmazonawsDynamodb: + { + return "AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Error.ComAmazonawsDynamodb" + "(" + _dafny.String(data.ComAmazonawsDynamodb) + ")" + } + case Error_CollectionOfErrors: + { + return "AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Error.CollectionOfErrors" + "(" + _dafny.String(data.List) + ", " + _dafny.String(data.Message) + ")" + } + case Error_Opaque: + { + return "AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Error.Opaque" + "(" + _dafny.String(data.Obj) + ")" + } + case Error_OpaqueWithText: + { + return "AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Error.OpaqueWithText" + "(" + _dafny.String(data.Obj) + ", " + _dafny.String(data.ObjMessage) + ")" + } + default: + { + return "" + } + } +} + +func (_this Error) Equals(other Error) bool { + switch data1 := _this.Get_().(type) { + case Error_DynamoDbEncryptionTransformsException: + { + data2, ok := other.Get_().(Error_DynamoDbEncryptionTransformsException) + return ok && data1.Message.Equals(data2.Message) + } + case Error_AwsCryptographyDbEncryptionSdkDynamoDb: + { + data2, ok := other.Get_().(Error_AwsCryptographyDbEncryptionSdkDynamoDb) + return ok && data1.AwsCryptographyDbEncryptionSdkDynamoDb.Equals(data2.AwsCryptographyDbEncryptionSdkDynamoDb) + } + case Error_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptor: + { + data2, ok := other.Get_().(Error_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptor) + return ok && data1.AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptor.Equals(data2.AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptor) + } + case Error_AwsCryptographyDbEncryptionSdkStructuredEncryption: + { + data2, ok := other.Get_().(Error_AwsCryptographyDbEncryptionSdkStructuredEncryption) + return ok && data1.AwsCryptographyDbEncryptionSdkStructuredEncryption.Equals(data2.AwsCryptographyDbEncryptionSdkStructuredEncryption) + } + case Error_AwsCryptographyMaterialProviders: + { + data2, ok := other.Get_().(Error_AwsCryptographyMaterialProviders) + return ok && data1.AwsCryptographyMaterialProviders.Equals(data2.AwsCryptographyMaterialProviders) + } + case Error_ComAmazonawsDynamodb: + { + data2, ok := other.Get_().(Error_ComAmazonawsDynamodb) + return ok && data1.ComAmazonawsDynamodb.Equals(data2.ComAmazonawsDynamodb) + } + case Error_CollectionOfErrors: + { + data2, ok := other.Get_().(Error_CollectionOfErrors) + return ok && data1.List.Equals(data2.List) && data1.Message.Equals(data2.Message) + } + case Error_Opaque: + { + data2, ok := other.Get_().(Error_Opaque) + return ok && _dafny.AreEqual(data1.Obj, data2.Obj) + } + case Error_OpaqueWithText: + { + data2, ok := other.Get_().(Error_OpaqueWithText) + return ok && _dafny.AreEqual(data1.Obj, data2.Obj) && data1.ObjMessage.Equals(data2.ObjMessage) + } + default: + { + return false // unexpected + } + } +} + +func (_this Error) EqualsGeneric(other interface{}) bool { + typed, ok := other.(Error) + return ok && _this.Equals(typed) +} + +func Type_Error_() _dafny.TypeDescriptor { + return type_Error_{} +} + +type type_Error_ struct { +} + +func (_this type_Error_) Default() interface{} { + return Companion_Error_.Default() +} + +func (_this type_Error_) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Error" +} +func (_this Error) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = Error{} + +// End of datatype Error + +// Definition of class OpaqueError +type OpaqueError struct { +} + +func New_OpaqueError_() *OpaqueError { + _this := OpaqueError{} + + return &_this +} + +type CompanionStruct_OpaqueError_ struct { +} + +var Companion_OpaqueError_ = CompanionStruct_OpaqueError_{} + +func (*OpaqueError) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.OpaqueError" +} + +// End of class OpaqueError + +func Type_OpaqueError_() _dafny.TypeDescriptor { + return type_OpaqueError_{} +} + +type type_OpaqueError_ struct { +} + +func (_this type_OpaqueError_) Default() interface{} { + return Companion_Error_.Default() +} + +func (_this type_OpaqueError_) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.OpaqueError" +} +func (_this *CompanionStruct_OpaqueError_) Is_(__source Error) bool { + var _0_e Error = (__source) + _ = _0_e + return ((_0_e).Is_Opaque()) || ((_0_e).Is_OpaqueWithText()) +} + +// Definition of class DummySubsetType +type DummySubsetType struct { +} + +func New_DummySubsetType_() *DummySubsetType { + _this := DummySubsetType{} + + return &_this +} + +type CompanionStruct_DummySubsetType_ struct { +} + +var Companion_DummySubsetType_ = CompanionStruct_DummySubsetType_{} + +func (*DummySubsetType) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.DummySubsetType" +} +func (_this *CompanionStruct_DummySubsetType_) Witness() _dafny.Int { + return _dafny.One +} + +// End of class DummySubsetType + +func Type_DummySubsetType_() _dafny.TypeDescriptor { + return type_DummySubsetType_{} +} + +type type_DummySubsetType_ struct { +} + +func (_this type_DummySubsetType_) Default() interface{} { + return Companion_DummySubsetType_.Witness() +} + +func (_this type_DummySubsetType_) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.DummySubsetType" +} +func (_this *CompanionStruct_DummySubsetType_) Is_(__source _dafny.Int) bool { + var _1_x _dafny.Int = (__source) + _ = _1_x + return Companion_Default___.IsDummySubsetType(_1_x) +} diff --git a/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbTypes/AwsCryptographyDbEncryptionSdkDynamoDbTypes.go b/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbTypes/AwsCryptographyDbEncryptionSdkDynamoDbTypes.go new file mode 100644 index 000000000..b8e2f5040 --- /dev/null +++ b/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbTypes/AwsCryptographyDbEncryptionSdkDynamoDbTypes.go @@ -0,0 +1,6432 @@ +// Package AwsCryptographyDbEncryptionSdkDynamoDbTypes +// Dafny module AwsCryptographyDbEncryptionSdkDynamoDbTypes compiled into Go + +package AwsCryptographyDbEncryptionSdkDynamoDbTypes + +import ( + os "os" + + m_ComAmazonawsDynamodbTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/dynamodb/ComAmazonawsDynamodbTypes" + m_Com_Amazonaws_Dynamodb "github.com/aws/aws-cryptographic-material-providers-library/releases/go/dynamodb/Com_Amazonaws_Dynamodb" + m_ComAmazonawsKmsTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/kms/ComAmazonawsKmsTypes" + m_Com_Amazonaws_Kms "github.com/aws/aws-cryptographic-material-providers-library/releases/go/kms/Com_Amazonaws_Kms" + m_AlgorithmSuites "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AlgorithmSuites" + m_AwsArnParsing "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsArnParsing" + m_AwsCryptographyKeyStoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyKeyStoreOperations" + m_AwsCryptographyKeyStoreTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyKeyStoreTypes" + m_AwsCryptographyMaterialProvidersOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyMaterialProvidersOperations" + m_AwsCryptographyMaterialProvidersTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyMaterialProvidersTypes" + m_AwsKmsDiscoveryKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsDiscoveryKeyring" + m_AwsKmsEcdhKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsEcdhKeyring" + m_AwsKmsHierarchicalKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsHierarchicalKeyring" + m_AwsKmsKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsKeyring" + m_AwsKmsMrkAreUnique "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkAreUnique" + m_AwsKmsMrkDiscoveryKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkDiscoveryKeyring" + m_AwsKmsMrkKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkKeyring" + m_AwsKmsMrkMatchForDecrypt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkMatchForDecrypt" + m_AwsKmsRsaKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsRsaKeyring" + m_AwsKmsUtils "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsUtils" + m_CMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CMM" + m_CacheConstants "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CacheConstants" + m_CanonicalEncryptionContext "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CanonicalEncryptionContext" + m_Commitment "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Commitment" + m_Constants "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Constants" + m_CreateKeyStoreTable "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CreateKeyStoreTable" + m_CreateKeys "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CreateKeys" + m_DDBKeystoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DDBKeystoreOperations" + m_DefaultCMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DefaultCMM" + m_DefaultClientSupplier "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DefaultClientSupplier" + m_Defaults "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Defaults" + m_DiscoveryMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DiscoveryMultiKeyring" + m_EcdhEdkWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/EcdhEdkWrapping" + m_EdkWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/EdkWrapping" + m_ErrorMessages "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/ErrorMessages" + m_GetKeys "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/GetKeys" + m_IntermediateKeyWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/IntermediateKeyWrapping" + m_KMSKeystoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KMSKeystoreOperations" + m_KeyStore "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KeyStore" + m_KeyStoreErrorMessages "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KeyStoreErrorMessages" + m_Keyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Keyring" + m_KmsArn "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KmsArn" + m_LocalCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/LocalCMC" + m_MaterialProviders "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MaterialProviders" + m_MaterialWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MaterialWrapping" + m_Materials "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Materials" + m_MrkAwareDiscoveryMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MrkAwareDiscoveryMultiKeyring" + m_MrkAwareStrictMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MrkAwareStrictMultiKeyring" + m_MultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MultiKeyring" + m_RawAESKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawAESKeyring" + m_RawECDHKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawECDHKeyring" + m_RawRSAKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawRSAKeyring" + m_RequiredEncryptionContextCMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RequiredEncryptionContextCMM" + m_StormTracker "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StormTracker" + m_StormTrackingCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StormTrackingCMC" + m_StrictMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StrictMultiKeyring" + m_Structure "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Structure" + m_SynchronizedLocalCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/SynchronizedLocalCMC" + m_Utils "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Utils" + m_AtomicPrimitives "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AtomicPrimitives" + m_AwsCryptographyPrimitivesOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AwsCryptographyPrimitivesOperations" + m_AwsCryptographyPrimitivesTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AwsCryptographyPrimitivesTypes" + m_Digest "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/Digest" + m_HKDF "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/HKDF" + m_KdfCtr "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/KdfCtr" + m_Random "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/Random" + m_WrappedHKDF "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/WrappedHKDF" + m_WrappedHMAC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/WrappedHMAC" + m_Actions "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Actions" + m_Base64 "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Base64" + m_Base64Lemmas "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Base64Lemmas" + m_BoundedInts "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/BoundedInts" + m_DivInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivInternals" + m_DivInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivInternalsNonlinear" + m_DivMod "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivMod" + m_FileIO "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/FileIO" + m_FloatCompare "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/FloatCompare" + m_Functions "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Functions" + m_GeneralInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/GeneralInternals" + m_GetOpt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/GetOpt" + m_HexStrings "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/HexStrings" + m_Logarithm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Logarithm" + m__Math "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Math_" + m_ModInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/ModInternals" + m_ModInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/ModInternalsNonlinear" + m_Mul "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Mul" + m_MulInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/MulInternals" + m_MulInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/MulInternalsNonlinear" + m_Power "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Power" + m_Relations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Relations" + m_Seq "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Seq" + m_Seq_MergeSort "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Seq_MergeSort" + m_Sorting "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Sorting" + m_StandardLibrary "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary" + m_StandardLibraryInterop "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibraryInterop" + m_StandardLibrary_MemoryMath "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_MemoryMath" + m_StandardLibrary_Sequence "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_Sequence" + m_StandardLibrary_String "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_String" + m_StandardLibrary_UInt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_UInt" + m_Streams "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Streams" + m_UnicodeStrings "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/UnicodeStrings" + m__Unicode "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Unicode_" + m_Utf16EncodingForm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Utf16EncodingForm" + m_Utf8EncodingForm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Utf8EncodingForm" + m_Wrappers "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Wrappers" + m_AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations" + m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes" + m_Canonize "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/Canonize" + m__Maps "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/Maps_" + m_OptimizedMergeSort "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/OptimizedMergeSort" + m_Sets "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/Sets" + m_SortCanon "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/SortCanon" + m_StructuredEncryption "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryption" + m_StructuredEncryptionCrypt "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionCrypt" + m_StructuredEncryptionFooter "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionFooter" + m_StructuredEncryptionHeader "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionHeader" + m_StructuredEncryptionPaths "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionPaths" + m_StructuredEncryptionUtil "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionUtil" + m__System "github.com/dafny-lang/DafnyRuntimeGo/v4/System_" + _dafny "github.com/dafny-lang/DafnyRuntimeGo/v4/dafny" +) + +var _ = os.Args +var _ _dafny.Dummy__ +var _ m__System.Dummy__ +var _ m_Wrappers.Dummy__ +var _ m_BoundedInts.Dummy__ +var _ m_StandardLibrary_UInt.Dummy__ +var _ m_StandardLibrary_MemoryMath.Dummy__ +var _ m_StandardLibrary_Sequence.Dummy__ +var _ m_StandardLibrary_String.Dummy__ +var _ m_StandardLibrary.Dummy__ +var _ m_AwsCryptographyPrimitivesTypes.Dummy__ +var _ m_Random.Dummy__ +var _ m_Digest.Dummy__ +var _ m_WrappedHMAC.Dummy__ +var _ m_HKDF.Dummy__ +var _ m_WrappedHKDF.Dummy__ +var _ m_KdfCtr.Dummy__ +var _ m_AwsCryptographyPrimitivesOperations.Dummy__ +var _ m_AtomicPrimitives.Dummy__ +var _ m_ComAmazonawsDynamodbTypes.Dummy__ +var _ m_ComAmazonawsKmsTypes.Dummy__ +var _ m_AwsCryptographyKeyStoreTypes.Dummy__ +var _ m_AwsCryptographyMaterialProvidersTypes.Dummy__ +var _ m_Base64.Dummy__ +var _ m_AlgorithmSuites.Dummy__ +var _ m_Materials.Dummy__ +var _ m_Keyring.Dummy__ +var _ m_Relations.Dummy__ +var _ m_Seq_MergeSort.Dummy__ +var _ m__Math.Dummy__ +var _ m_Seq.Dummy__ +var _ m_Actions.Dummy__ +var _ m_CanonicalEncryptionContext.Dummy__ +var _ m_MaterialWrapping.Dummy__ +var _ m_IntermediateKeyWrapping.Dummy__ +var _ m_EdkWrapping.Dummy__ +var _ m_ErrorMessages.Dummy__ +var _ m_RawAESKeyring.Dummy__ +var _ m_AwsArnParsing.Dummy__ +var _ m_Constants.Dummy__ +var _ m_EcdhEdkWrapping.Dummy__ +var _ m_RawECDHKeyring.Dummy__ +var _ m_RawRSAKeyring.Dummy__ +var _ m_AwsKmsMrkMatchForDecrypt.Dummy__ +var _ m_AwsKmsUtils.Dummy__ +var _ m_AwsKmsKeyring.Dummy__ +var _ m_AwsKmsDiscoveryKeyring.Dummy__ +var _ m_AwsKmsEcdhKeyring.Dummy__ +var _ m_FileIO.Dummy__ +var _ m_LocalCMC.Dummy__ +var _ m_SynchronizedLocalCMC.Dummy__ +var _ m_StormTracker.Dummy__ +var _ m_StormTrackingCMC.Dummy__ +var _ m_CacheConstants.Dummy__ +var _ m_AwsKmsHierarchicalKeyring.Dummy__ +var _ m_AwsKmsMrkDiscoveryKeyring.Dummy__ +var _ m_AwsKmsMrkKeyring.Dummy__ +var _ m_AwsKmsRsaKeyring.Dummy__ +var _ m_MultiKeyring.Dummy__ +var _ m_AwsKmsMrkAreUnique.Dummy__ +var _ m_StrictMultiKeyring.Dummy__ +var _ m_Com_Amazonaws_Kms.Dummy__ +var _ m_Com_Amazonaws_Dynamodb.Dummy__ +var _ m_DiscoveryMultiKeyring.Dummy__ +var _ m_MrkAwareDiscoveryMultiKeyring.Dummy__ +var _ m_MrkAwareStrictMultiKeyring.Dummy__ +var _ m_CMM.Dummy__ +var _ m_Defaults.Dummy__ +var _ m_Commitment.Dummy__ +var _ m_DefaultCMM.Dummy__ +var _ m_DefaultClientSupplier.Dummy__ +var _ m_Utils.Dummy__ +var _ m_RequiredEncryptionContextCMM.Dummy__ +var _ m_AwsCryptographyMaterialProvidersOperations.Dummy__ +var _ m_MaterialProviders.Dummy__ +var _ m_KeyStoreErrorMessages.Dummy__ +var _ m_KmsArn.Dummy__ +var _ m_Structure.Dummy__ +var _ m_KMSKeystoreOperations.Dummy__ +var _ m_DDBKeystoreOperations.Dummy__ +var _ m_CreateKeys.Dummy__ +var _ m_CreateKeyStoreTable.Dummy__ +var _ m_GetKeys.Dummy__ +var _ m_AwsCryptographyKeyStoreOperations.Dummy__ +var _ m_KeyStore.Dummy__ +var _ m__Unicode.Dummy__ +var _ m_Functions.Dummy__ +var _ m_Utf8EncodingForm.Dummy__ +var _ m_Utf16EncodingForm.Dummy__ +var _ m_UnicodeStrings.Dummy__ +var _ m_GeneralInternals.Dummy__ +var _ m_MulInternalsNonlinear.Dummy__ +var _ m_MulInternals.Dummy__ +var _ m_Mul.Dummy__ +var _ m_ModInternalsNonlinear.Dummy__ +var _ m_DivInternalsNonlinear.Dummy__ +var _ m_ModInternals.Dummy__ +var _ m_DivInternals.Dummy__ +var _ m_DivMod.Dummy__ +var _ m_Power.Dummy__ +var _ m_Logarithm.Dummy__ +var _ m_StandardLibraryInterop.Dummy__ +var _ m_Streams.Dummy__ +var _ m_Sorting.Dummy__ +var _ m_HexStrings.Dummy__ +var _ m_GetOpt.Dummy__ +var _ m_FloatCompare.Dummy__ +var _ m_Base64Lemmas.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Dummy__ +var _ m_StructuredEncryptionUtil.Dummy__ +var _ m_Sets.Dummy__ +var _ m_StructuredEncryptionPaths.Dummy__ +var _ m_StructuredEncryptionHeader.Dummy__ +var _ m_StructuredEncryptionFooter.Dummy__ +var _ m_OptimizedMergeSort.Dummy__ +var _ m_SortCanon.Dummy__ +var _ m_Canonize.Dummy__ +var _ m_StructuredEncryptionCrypt.Dummy__ +var _ m__Maps.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations.Dummy__ +var _ m_StructuredEncryption.Dummy__ + +type Dummy__ struct{} + +// Definition of class Default__ +type Default__ struct { + dummy byte +} + +func New_Default___() *Default__ { + _this := Default__{} + + return &_this +} + +type CompanionStruct_Default___ struct { +} + +var Companion_Default___ = CompanionStruct_Default___{} + +func (_this *Default__) Equals(other *Default__) bool { + return _this == other +} + +func (_this *Default__) EqualsGeneric(x interface{}) bool { + other, ok := x.(*Default__) + return ok && _this.Equals(other) +} + +func (*Default__) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbTypes.Default__" +} +func (_this *Default__) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = &Default__{} + +func (_static *CompanionStruct_Default___) IsValid__BeaconBitLength(x int32) bool { + return ((int32(1)) <= (x)) && ((x) <= (int32(63))) +} +func (_static *CompanionStruct_Default___) IsValid__BeaconVersionList(x _dafny.Sequence) bool { + return ((_dafny.One).Cmp(_dafny.IntOfUint32((x).Cardinality())) <= 0) && ((_dafny.IntOfUint32((x).Cardinality())).Cmp(_dafny.One) <= 0) +} +func (_static *CompanionStruct_Default___) IsValid__Char(x _dafny.Sequence) bool { + return ((_dafny.One).Cmp(_dafny.IntOfUint32((x).Cardinality())) <= 0) && ((_dafny.IntOfUint32((x).Cardinality())).Cmp(_dafny.One) <= 0) +} +func (_static *CompanionStruct_Default___) IsValid__CompoundBeaconList(x _dafny.Sequence) bool { + return (_dafny.One).Cmp(_dafny.IntOfUint32((x).Cardinality())) <= 0 +} +func (_static *CompanionStruct_Default___) IsValid__ConstructorList(x _dafny.Sequence) bool { + return (_dafny.One).Cmp(_dafny.IntOfUint32((x).Cardinality())) <= 0 +} +func (_static *CompanionStruct_Default___) IsValid__ConstructorPartList(x _dafny.Sequence) bool { + return (_dafny.One).Cmp(_dafny.IntOfUint32((x).Cardinality())) <= 0 +} +func (_static *CompanionStruct_Default___) IsValid__EncryptedPartsList(x _dafny.Sequence) bool { + return (_dafny.One).Cmp(_dafny.IntOfUint32((x).Cardinality())) <= 0 +} +func (_static *CompanionStruct_Default___) IsValid__Prefix(x _dafny.Sequence) bool { + return (_dafny.One).Cmp(_dafny.IntOfUint32((x).Cardinality())) <= 0 +} +func (_static *CompanionStruct_Default___) IsValid__SignedPartsList(x _dafny.Sequence) bool { + return (_dafny.One).Cmp(_dafny.IntOfUint32((x).Cardinality())) <= 0 +} +func (_static *CompanionStruct_Default___) IsValid__StandardBeaconList(x _dafny.Sequence) bool { + return (_dafny.One).Cmp(_dafny.IntOfUint32((x).Cardinality())) <= 0 +} +func (_static *CompanionStruct_Default___) IsValid__TerminalLocation(x _dafny.Sequence) bool { + return (_dafny.One).Cmp(_dafny.IntOfUint32((x).Cardinality())) <= 0 +} +func (_static *CompanionStruct_Default___) IsValid__VersionNumber(x int32) bool { + return (int32(1)) <= (x) +} +func (_static *CompanionStruct_Default___) IsValid__VirtualFieldList(x _dafny.Sequence) bool { + return (_dafny.One).Cmp(_dafny.IntOfUint32((x).Cardinality())) <= 0 +} +func (_static *CompanionStruct_Default___) IsValid__VirtualPartList(x _dafny.Sequence) bool { + return (_dafny.One).Cmp(_dafny.IntOfUint32((x).Cardinality())) <= 0 +} +func (_static *CompanionStruct_Default___) IsValid__VirtualTransformList(x _dafny.Sequence) bool { + return (_dafny.One).Cmp(_dafny.IntOfUint32((x).Cardinality())) <= 0 +} +func (_static *CompanionStruct_Default___) IsDummySubsetType(x _dafny.Int) bool { + return (x).Sign() == 1 +} + +// End of class Default__ + +// Definition of datatype DafnyCallEvent +type DafnyCallEvent struct { + Data_DafnyCallEvent_ +} + +func (_this DafnyCallEvent) Get_() Data_DafnyCallEvent_ { + return _this.Data_DafnyCallEvent_ +} + +type Data_DafnyCallEvent_ interface { + isDafnyCallEvent() +} + +type CompanionStruct_DafnyCallEvent_ struct { +} + +var Companion_DafnyCallEvent_ = CompanionStruct_DafnyCallEvent_{} + +type DafnyCallEvent_DafnyCallEvent struct { + Input interface{} + Output interface{} +} + +func (DafnyCallEvent_DafnyCallEvent) isDafnyCallEvent() {} + +func (CompanionStruct_DafnyCallEvent_) Create_DafnyCallEvent_(Input interface{}, Output interface{}) DafnyCallEvent { + return DafnyCallEvent{DafnyCallEvent_DafnyCallEvent{Input, Output}} +} + +func (_this DafnyCallEvent) Is_DafnyCallEvent() bool { + _, ok := _this.Get_().(DafnyCallEvent_DafnyCallEvent) + return ok +} + +func (CompanionStruct_DafnyCallEvent_) Default(_default_I interface{}, _default_O interface{}) DafnyCallEvent { + return Companion_DafnyCallEvent_.Create_DafnyCallEvent_(_default_I, _default_O) +} + +func (_this DafnyCallEvent) Dtor_input() interface{} { + return _this.Get_().(DafnyCallEvent_DafnyCallEvent).Input +} + +func (_this DafnyCallEvent) Dtor_output() interface{} { + return _this.Get_().(DafnyCallEvent_DafnyCallEvent).Output +} + +func (_this DafnyCallEvent) String() string { + switch data := _this.Get_().(type) { + case nil: + return "null" + case DafnyCallEvent_DafnyCallEvent: + { + return "AwsCryptographyDbEncryptionSdkDynamoDbTypes.DafnyCallEvent.DafnyCallEvent" + "(" + _dafny.String(data.Input) + ", " + _dafny.String(data.Output) + ")" + } + default: + { + return "" + } + } +} + +func (_this DafnyCallEvent) Equals(other DafnyCallEvent) bool { + switch data1 := _this.Get_().(type) { + case DafnyCallEvent_DafnyCallEvent: + { + data2, ok := other.Get_().(DafnyCallEvent_DafnyCallEvent) + return ok && _dafny.AreEqual(data1.Input, data2.Input) && _dafny.AreEqual(data1.Output, data2.Output) + } + default: + { + return false // unexpected + } + } +} + +func (_this DafnyCallEvent) EqualsGeneric(other interface{}) bool { + typed, ok := other.(DafnyCallEvent) + return ok && _this.Equals(typed) +} + +func Type_DafnyCallEvent_(Type_I_ _dafny.TypeDescriptor, Type_O_ _dafny.TypeDescriptor) _dafny.TypeDescriptor { + return type_DafnyCallEvent_{Type_I_, Type_O_} +} + +type type_DafnyCallEvent_ struct { + Type_I_ _dafny.TypeDescriptor + Type_O_ _dafny.TypeDescriptor +} + +func (_this type_DafnyCallEvent_) Default() interface{} { + Type_I_ := _this.Type_I_ + _ = Type_I_ + Type_O_ := _this.Type_O_ + _ = Type_O_ + return Companion_DafnyCallEvent_.Default(Type_I_.Default(), Type_O_.Default()) +} + +func (_this type_DafnyCallEvent_) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbTypes.DafnyCallEvent" +} +func (_this DafnyCallEvent) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = DafnyCallEvent{} + +// End of datatype DafnyCallEvent + +// Definition of datatype AsSet +type AsSet struct { + Data_AsSet_ +} + +func (_this AsSet) Get_() Data_AsSet_ { + return _this.Data_AsSet_ +} + +type Data_AsSet_ interface { + isAsSet() +} + +type CompanionStruct_AsSet_ struct { +} + +var Companion_AsSet_ = CompanionStruct_AsSet_{} + +type AsSet_AsSet struct { +} + +func (AsSet_AsSet) isAsSet() {} + +func (CompanionStruct_AsSet_) Create_AsSet_() AsSet { + return AsSet{AsSet_AsSet{}} +} + +func (_this AsSet) Is_AsSet() bool { + _, ok := _this.Get_().(AsSet_AsSet) + return ok +} + +func (CompanionStruct_AsSet_) Default() AsSet { + return Companion_AsSet_.Create_AsSet_() +} + +func (_ CompanionStruct_AsSet_) AllSingletonConstructors() _dafny.Iterator { + i := -1 + return func() (interface{}, bool) { + i++ + switch i { + case 0: + return Companion_AsSet_.Create_AsSet_(), true + default: + return AsSet{}, false + } + } +} + +func (_this AsSet) String() string { + switch _this.Get_().(type) { + case nil: + return "null" + case AsSet_AsSet: + { + return "AwsCryptographyDbEncryptionSdkDynamoDbTypes.AsSet.AsSet" + } + default: + { + return "" + } + } +} + +func (_this AsSet) Equals(other AsSet) bool { + switch _this.Get_().(type) { + case AsSet_AsSet: + { + _, ok := other.Get_().(AsSet_AsSet) + return ok + } + default: + { + return false // unexpected + } + } +} + +func (_this AsSet) EqualsGeneric(other interface{}) bool { + typed, ok := other.(AsSet) + return ok && _this.Equals(typed) +} + +func Type_AsSet_() _dafny.TypeDescriptor { + return type_AsSet_{} +} + +type type_AsSet_ struct { +} + +func (_this type_AsSet_) Default() interface{} { + return Companion_AsSet_.Default() +} + +func (_this type_AsSet_) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbTypes.AsSet" +} +func (_this AsSet) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = AsSet{} + +// End of datatype AsSet + +// Definition of class BeaconBitLength +type BeaconBitLength struct { +} + +func New_BeaconBitLength_() *BeaconBitLength { + _this := BeaconBitLength{} + + return &_this +} + +type CompanionStruct_BeaconBitLength_ struct { +} + +var Companion_BeaconBitLength_ = CompanionStruct_BeaconBitLength_{} + +func (*BeaconBitLength) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbTypes.BeaconBitLength" +} + +// End of class BeaconBitLength + +func Type_BeaconBitLength_() _dafny.TypeDescriptor { + return type_BeaconBitLength_{} +} + +type type_BeaconBitLength_ struct { +} + +func (_this type_BeaconBitLength_) Default() interface{} { + return int32(0) +} + +func (_this type_BeaconBitLength_) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbTypes.BeaconBitLength" +} +func (_this *CompanionStruct_BeaconBitLength_) Is_(__source int32) bool { + var _0_x int32 = (__source) + _ = _0_x + if true { + return Companion_Default___.IsValid__BeaconBitLength(_0_x) + } + return false +} + +// Definition of datatype BeaconKeySource +type BeaconKeySource struct { + Data_BeaconKeySource_ +} + +func (_this BeaconKeySource) Get_() Data_BeaconKeySource_ { + return _this.Data_BeaconKeySource_ +} + +type Data_BeaconKeySource_ interface { + isBeaconKeySource() +} + +type CompanionStruct_BeaconKeySource_ struct { +} + +var Companion_BeaconKeySource_ = CompanionStruct_BeaconKeySource_{} + +type BeaconKeySource_single struct { + Single SingleKeyStore +} + +func (BeaconKeySource_single) isBeaconKeySource() {} + +func (CompanionStruct_BeaconKeySource_) Create_single_(Single SingleKeyStore) BeaconKeySource { + return BeaconKeySource{BeaconKeySource_single{Single}} +} + +func (_this BeaconKeySource) Is_single() bool { + _, ok := _this.Get_().(BeaconKeySource_single) + return ok +} + +type BeaconKeySource_multi struct { + Multi MultiKeyStore +} + +func (BeaconKeySource_multi) isBeaconKeySource() {} + +func (CompanionStruct_BeaconKeySource_) Create_multi_(Multi MultiKeyStore) BeaconKeySource { + return BeaconKeySource{BeaconKeySource_multi{Multi}} +} + +func (_this BeaconKeySource) Is_multi() bool { + _, ok := _this.Get_().(BeaconKeySource_multi) + return ok +} + +func (CompanionStruct_BeaconKeySource_) Default() BeaconKeySource { + return Companion_BeaconKeySource_.Create_single_(Companion_SingleKeyStore_.Default()) +} + +func (_this BeaconKeySource) Dtor_single() SingleKeyStore { + return _this.Get_().(BeaconKeySource_single).Single +} + +func (_this BeaconKeySource) Dtor_multi() MultiKeyStore { + return _this.Get_().(BeaconKeySource_multi).Multi +} + +func (_this BeaconKeySource) String() string { + switch data := _this.Get_().(type) { + case nil: + return "null" + case BeaconKeySource_single: + { + return "AwsCryptographyDbEncryptionSdkDynamoDbTypes.BeaconKeySource.single" + "(" + _dafny.String(data.Single) + ")" + } + case BeaconKeySource_multi: + { + return "AwsCryptographyDbEncryptionSdkDynamoDbTypes.BeaconKeySource.multi" + "(" + _dafny.String(data.Multi) + ")" + } + default: + { + return "" + } + } +} + +func (_this BeaconKeySource) Equals(other BeaconKeySource) bool { + switch data1 := _this.Get_().(type) { + case BeaconKeySource_single: + { + data2, ok := other.Get_().(BeaconKeySource_single) + return ok && data1.Single.Equals(data2.Single) + } + case BeaconKeySource_multi: + { + data2, ok := other.Get_().(BeaconKeySource_multi) + return ok && data1.Multi.Equals(data2.Multi) + } + default: + { + return false // unexpected + } + } +} + +func (_this BeaconKeySource) EqualsGeneric(other interface{}) bool { + typed, ok := other.(BeaconKeySource) + return ok && _this.Equals(typed) +} + +func Type_BeaconKeySource_() _dafny.TypeDescriptor { + return type_BeaconKeySource_{} +} + +type type_BeaconKeySource_ struct { +} + +func (_this type_BeaconKeySource_) Default() interface{} { + return Companion_BeaconKeySource_.Default() +} + +func (_this type_BeaconKeySource_) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbTypes.BeaconKeySource" +} +func (_this BeaconKeySource) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = BeaconKeySource{} + +// End of datatype BeaconKeySource + +// Definition of datatype BeaconStyle +type BeaconStyle struct { + Data_BeaconStyle_ +} + +func (_this BeaconStyle) Get_() Data_BeaconStyle_ { + return _this.Data_BeaconStyle_ +} + +type Data_BeaconStyle_ interface { + isBeaconStyle() +} + +type CompanionStruct_BeaconStyle_ struct { +} + +var Companion_BeaconStyle_ = CompanionStruct_BeaconStyle_{} + +type BeaconStyle_partOnly struct { + PartOnly PartOnly +} + +func (BeaconStyle_partOnly) isBeaconStyle() {} + +func (CompanionStruct_BeaconStyle_) Create_partOnly_(PartOnly PartOnly) BeaconStyle { + return BeaconStyle{BeaconStyle_partOnly{PartOnly}} +} + +func (_this BeaconStyle) Is_partOnly() bool { + _, ok := _this.Get_().(BeaconStyle_partOnly) + return ok +} + +type BeaconStyle_shared struct { + Shared Shared +} + +func (BeaconStyle_shared) isBeaconStyle() {} + +func (CompanionStruct_BeaconStyle_) Create_shared_(Shared Shared) BeaconStyle { + return BeaconStyle{BeaconStyle_shared{Shared}} +} + +func (_this BeaconStyle) Is_shared() bool { + _, ok := _this.Get_().(BeaconStyle_shared) + return ok +} + +type BeaconStyle_asSet struct { + AsSet AsSet +} + +func (BeaconStyle_asSet) isBeaconStyle() {} + +func (CompanionStruct_BeaconStyle_) Create_asSet_(AsSet AsSet) BeaconStyle { + return BeaconStyle{BeaconStyle_asSet{AsSet}} +} + +func (_this BeaconStyle) Is_asSet() bool { + _, ok := _this.Get_().(BeaconStyle_asSet) + return ok +} + +type BeaconStyle_sharedSet struct { + SharedSet SharedSet +} + +func (BeaconStyle_sharedSet) isBeaconStyle() {} + +func (CompanionStruct_BeaconStyle_) Create_sharedSet_(SharedSet SharedSet) BeaconStyle { + return BeaconStyle{BeaconStyle_sharedSet{SharedSet}} +} + +func (_this BeaconStyle) Is_sharedSet() bool { + _, ok := _this.Get_().(BeaconStyle_sharedSet) + return ok +} + +func (CompanionStruct_BeaconStyle_) Default() BeaconStyle { + return Companion_BeaconStyle_.Create_partOnly_(Companion_PartOnly_.Default()) +} + +func (_this BeaconStyle) Dtor_partOnly() PartOnly { + return _this.Get_().(BeaconStyle_partOnly).PartOnly +} + +func (_this BeaconStyle) Dtor_shared() Shared { + return _this.Get_().(BeaconStyle_shared).Shared +} + +func (_this BeaconStyle) Dtor_asSet() AsSet { + return _this.Get_().(BeaconStyle_asSet).AsSet +} + +func (_this BeaconStyle) Dtor_sharedSet() SharedSet { + return _this.Get_().(BeaconStyle_sharedSet).SharedSet +} + +func (_this BeaconStyle) String() string { + switch data := _this.Get_().(type) { + case nil: + return "null" + case BeaconStyle_partOnly: + { + return "AwsCryptographyDbEncryptionSdkDynamoDbTypes.BeaconStyle.partOnly" + "(" + _dafny.String(data.PartOnly) + ")" + } + case BeaconStyle_shared: + { + return "AwsCryptographyDbEncryptionSdkDynamoDbTypes.BeaconStyle.shared" + "(" + _dafny.String(data.Shared) + ")" + } + case BeaconStyle_asSet: + { + return "AwsCryptographyDbEncryptionSdkDynamoDbTypes.BeaconStyle.asSet" + "(" + _dafny.String(data.AsSet) + ")" + } + case BeaconStyle_sharedSet: + { + return "AwsCryptographyDbEncryptionSdkDynamoDbTypes.BeaconStyle.sharedSet" + "(" + _dafny.String(data.SharedSet) + ")" + } + default: + { + return "" + } + } +} + +func (_this BeaconStyle) Equals(other BeaconStyle) bool { + switch data1 := _this.Get_().(type) { + case BeaconStyle_partOnly: + { + data2, ok := other.Get_().(BeaconStyle_partOnly) + return ok && data1.PartOnly.Equals(data2.PartOnly) + } + case BeaconStyle_shared: + { + data2, ok := other.Get_().(BeaconStyle_shared) + return ok && data1.Shared.Equals(data2.Shared) + } + case BeaconStyle_asSet: + { + data2, ok := other.Get_().(BeaconStyle_asSet) + return ok && data1.AsSet.Equals(data2.AsSet) + } + case BeaconStyle_sharedSet: + { + data2, ok := other.Get_().(BeaconStyle_sharedSet) + return ok && data1.SharedSet.Equals(data2.SharedSet) + } + default: + { + return false // unexpected + } + } +} + +func (_this BeaconStyle) EqualsGeneric(other interface{}) bool { + typed, ok := other.(BeaconStyle) + return ok && _this.Equals(typed) +} + +func Type_BeaconStyle_() _dafny.TypeDescriptor { + return type_BeaconStyle_{} +} + +type type_BeaconStyle_ struct { +} + +func (_this type_BeaconStyle_) Default() interface{} { + return Companion_BeaconStyle_.Default() +} + +func (_this type_BeaconStyle_) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbTypes.BeaconStyle" +} +func (_this BeaconStyle) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = BeaconStyle{} + +// End of datatype BeaconStyle + +// Definition of datatype BeaconVersion +type BeaconVersion struct { + Data_BeaconVersion_ +} + +func (_this BeaconVersion) Get_() Data_BeaconVersion_ { + return _this.Data_BeaconVersion_ +} + +type Data_BeaconVersion_ interface { + isBeaconVersion() +} + +type CompanionStruct_BeaconVersion_ struct { +} + +var Companion_BeaconVersion_ = CompanionStruct_BeaconVersion_{} + +type BeaconVersion_BeaconVersion struct { + Version int32 + KeyStore m_AwsCryptographyKeyStoreTypes.IKeyStoreClient + KeySource BeaconKeySource + StandardBeacons _dafny.Sequence + CompoundBeacons m_Wrappers.Option + VirtualFields m_Wrappers.Option + EncryptedParts m_Wrappers.Option + SignedParts m_Wrappers.Option +} + +func (BeaconVersion_BeaconVersion) isBeaconVersion() {} + +func (CompanionStruct_BeaconVersion_) Create_BeaconVersion_(Version int32, KeyStore m_AwsCryptographyKeyStoreTypes.IKeyStoreClient, KeySource BeaconKeySource, StandardBeacons _dafny.Sequence, CompoundBeacons m_Wrappers.Option, VirtualFields m_Wrappers.Option, EncryptedParts m_Wrappers.Option, SignedParts m_Wrappers.Option) BeaconVersion { + return BeaconVersion{BeaconVersion_BeaconVersion{Version, KeyStore, KeySource, StandardBeacons, CompoundBeacons, VirtualFields, EncryptedParts, SignedParts}} +} + +func (_this BeaconVersion) Is_BeaconVersion() bool { + _, ok := _this.Get_().(BeaconVersion_BeaconVersion) + return ok +} + +func (CompanionStruct_BeaconVersion_) Default() BeaconVersion { + return Companion_BeaconVersion_.Create_BeaconVersion_(int32(0), (m_AwsCryptographyKeyStoreTypes.IKeyStoreClient)(nil), Companion_BeaconKeySource_.Default(), _dafny.EmptySeq, m_Wrappers.Companion_Option_.Default(), m_Wrappers.Companion_Option_.Default(), m_Wrappers.Companion_Option_.Default(), m_Wrappers.Companion_Option_.Default()) +} + +func (_this BeaconVersion) Dtor_version() int32 { + return _this.Get_().(BeaconVersion_BeaconVersion).Version +} + +func (_this BeaconVersion) Dtor_keyStore() m_AwsCryptographyKeyStoreTypes.IKeyStoreClient { + return _this.Get_().(BeaconVersion_BeaconVersion).KeyStore +} + +func (_this BeaconVersion) Dtor_keySource() BeaconKeySource { + return _this.Get_().(BeaconVersion_BeaconVersion).KeySource +} + +func (_this BeaconVersion) Dtor_standardBeacons() _dafny.Sequence { + return _this.Get_().(BeaconVersion_BeaconVersion).StandardBeacons +} + +func (_this BeaconVersion) Dtor_compoundBeacons() m_Wrappers.Option { + return _this.Get_().(BeaconVersion_BeaconVersion).CompoundBeacons +} + +func (_this BeaconVersion) Dtor_virtualFields() m_Wrappers.Option { + return _this.Get_().(BeaconVersion_BeaconVersion).VirtualFields +} + +func (_this BeaconVersion) Dtor_encryptedParts() m_Wrappers.Option { + return _this.Get_().(BeaconVersion_BeaconVersion).EncryptedParts +} + +func (_this BeaconVersion) Dtor_signedParts() m_Wrappers.Option { + return _this.Get_().(BeaconVersion_BeaconVersion).SignedParts +} + +func (_this BeaconVersion) String() string { + switch data := _this.Get_().(type) { + case nil: + return "null" + case BeaconVersion_BeaconVersion: + { + return "AwsCryptographyDbEncryptionSdkDynamoDbTypes.BeaconVersion.BeaconVersion" + "(" + _dafny.String(data.Version) + ", " + _dafny.String(data.KeyStore) + ", " + _dafny.String(data.KeySource) + ", " + _dafny.String(data.StandardBeacons) + ", " + _dafny.String(data.CompoundBeacons) + ", " + _dafny.String(data.VirtualFields) + ", " + _dafny.String(data.EncryptedParts) + ", " + _dafny.String(data.SignedParts) + ")" + } + default: + { + return "" + } + } +} + +func (_this BeaconVersion) Equals(other BeaconVersion) bool { + switch data1 := _this.Get_().(type) { + case BeaconVersion_BeaconVersion: + { + data2, ok := other.Get_().(BeaconVersion_BeaconVersion) + return ok && data1.Version == data2.Version && _dafny.AreEqual(data1.KeyStore, data2.KeyStore) && data1.KeySource.Equals(data2.KeySource) && data1.StandardBeacons.Equals(data2.StandardBeacons) && data1.CompoundBeacons.Equals(data2.CompoundBeacons) && data1.VirtualFields.Equals(data2.VirtualFields) && data1.EncryptedParts.Equals(data2.EncryptedParts) && data1.SignedParts.Equals(data2.SignedParts) + } + default: + { + return false // unexpected + } + } +} + +func (_this BeaconVersion) EqualsGeneric(other interface{}) bool { + typed, ok := other.(BeaconVersion) + return ok && _this.Equals(typed) +} + +func Type_BeaconVersion_() _dafny.TypeDescriptor { + return type_BeaconVersion_{} +} + +type type_BeaconVersion_ struct { +} + +func (_this type_BeaconVersion_) Default() interface{} { + return Companion_BeaconVersion_.Default() +} + +func (_this type_BeaconVersion_) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbTypes.BeaconVersion" +} +func (_this BeaconVersion) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = BeaconVersion{} + +// End of datatype BeaconVersion + +// Definition of class BeaconVersionList +type BeaconVersionList struct { +} + +func New_BeaconVersionList_() *BeaconVersionList { + _this := BeaconVersionList{} + + return &_this +} + +type CompanionStruct_BeaconVersionList_ struct { +} + +var Companion_BeaconVersionList_ = CompanionStruct_BeaconVersionList_{} + +func (*BeaconVersionList) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbTypes.BeaconVersionList" +} + +// End of class BeaconVersionList + +func Type_BeaconVersionList_() _dafny.TypeDescriptor { + return type_BeaconVersionList_{} +} + +type type_BeaconVersionList_ struct { +} + +func (_this type_BeaconVersionList_) Default() interface{} { + return _dafny.EmptySeq +} + +func (_this type_BeaconVersionList_) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbTypes.BeaconVersionList" +} +func (_this *CompanionStruct_BeaconVersionList_) Is_(__source _dafny.Sequence) bool { + var _1_x _dafny.Sequence = (__source) + _ = _1_x + return Companion_Default___.IsValid__BeaconVersionList(_1_x) +} + +// Definition of class Char +type Char struct { +} + +func New_Char_() *Char { + _this := Char{} + + return &_this +} + +type CompanionStruct_Char_ struct { +} + +var Companion_Char_ = CompanionStruct_Char_{} + +func (*Char) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbTypes.Char" +} + +// End of class Char + +func Type_Char_() _dafny.TypeDescriptor { + return type_Char_{} +} + +type type_Char_ struct { +} + +func (_this type_Char_) Default() interface{} { + return _dafny.EmptySeq.SetString() +} + +func (_this type_Char_) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbTypes.Char" +} +func (_this *CompanionStruct_Char_) Is_(__source _dafny.Sequence) bool { + var _2_x _dafny.Sequence = (__source) + _ = _2_x + return Companion_Default___.IsValid__Char(_2_x) +} + +// Definition of datatype CompoundBeacon +type CompoundBeacon struct { + Data_CompoundBeacon_ +} + +func (_this CompoundBeacon) Get_() Data_CompoundBeacon_ { + return _this.Data_CompoundBeacon_ +} + +type Data_CompoundBeacon_ interface { + isCompoundBeacon() +} + +type CompanionStruct_CompoundBeacon_ struct { +} + +var Companion_CompoundBeacon_ = CompanionStruct_CompoundBeacon_{} + +type CompoundBeacon_CompoundBeacon struct { + Name _dafny.Sequence + Split _dafny.Sequence + Encrypted m_Wrappers.Option + Signed m_Wrappers.Option + Constructors m_Wrappers.Option +} + +func (CompoundBeacon_CompoundBeacon) isCompoundBeacon() {} + +func (CompanionStruct_CompoundBeacon_) Create_CompoundBeacon_(Name _dafny.Sequence, Split _dafny.Sequence, Encrypted m_Wrappers.Option, Signed m_Wrappers.Option, Constructors m_Wrappers.Option) CompoundBeacon { + return CompoundBeacon{CompoundBeacon_CompoundBeacon{Name, Split, Encrypted, Signed, Constructors}} +} + +func (_this CompoundBeacon) Is_CompoundBeacon() bool { + _, ok := _this.Get_().(CompoundBeacon_CompoundBeacon) + return ok +} + +func (CompanionStruct_CompoundBeacon_) Default() CompoundBeacon { + return Companion_CompoundBeacon_.Create_CompoundBeacon_(_dafny.EmptySeq.SetString(), _dafny.EmptySeq.SetString(), m_Wrappers.Companion_Option_.Default(), m_Wrappers.Companion_Option_.Default(), m_Wrappers.Companion_Option_.Default()) +} + +func (_this CompoundBeacon) Dtor_name() _dafny.Sequence { + return _this.Get_().(CompoundBeacon_CompoundBeacon).Name +} + +func (_this CompoundBeacon) Dtor_split() _dafny.Sequence { + return _this.Get_().(CompoundBeacon_CompoundBeacon).Split +} + +func (_this CompoundBeacon) Dtor_encrypted() m_Wrappers.Option { + return _this.Get_().(CompoundBeacon_CompoundBeacon).Encrypted +} + +func (_this CompoundBeacon) Dtor_signed() m_Wrappers.Option { + return _this.Get_().(CompoundBeacon_CompoundBeacon).Signed +} + +func (_this CompoundBeacon) Dtor_constructors() m_Wrappers.Option { + return _this.Get_().(CompoundBeacon_CompoundBeacon).Constructors +} + +func (_this CompoundBeacon) String() string { + switch data := _this.Get_().(type) { + case nil: + return "null" + case CompoundBeacon_CompoundBeacon: + { + return "AwsCryptographyDbEncryptionSdkDynamoDbTypes.CompoundBeacon.CompoundBeacon" + "(" + _dafny.String(data.Name) + ", " + _dafny.String(data.Split) + ", " + _dafny.String(data.Encrypted) + ", " + _dafny.String(data.Signed) + ", " + _dafny.String(data.Constructors) + ")" + } + default: + { + return "" + } + } +} + +func (_this CompoundBeacon) Equals(other CompoundBeacon) bool { + switch data1 := _this.Get_().(type) { + case CompoundBeacon_CompoundBeacon: + { + data2, ok := other.Get_().(CompoundBeacon_CompoundBeacon) + return ok && data1.Name.Equals(data2.Name) && data1.Split.Equals(data2.Split) && data1.Encrypted.Equals(data2.Encrypted) && data1.Signed.Equals(data2.Signed) && data1.Constructors.Equals(data2.Constructors) + } + default: + { + return false // unexpected + } + } +} + +func (_this CompoundBeacon) EqualsGeneric(other interface{}) bool { + typed, ok := other.(CompoundBeacon) + return ok && _this.Equals(typed) +} + +func Type_CompoundBeacon_() _dafny.TypeDescriptor { + return type_CompoundBeacon_{} +} + +type type_CompoundBeacon_ struct { +} + +func (_this type_CompoundBeacon_) Default() interface{} { + return Companion_CompoundBeacon_.Default() +} + +func (_this type_CompoundBeacon_) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbTypes.CompoundBeacon" +} +func (_this CompoundBeacon) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = CompoundBeacon{} + +// End of datatype CompoundBeacon + +// Definition of class CompoundBeaconList +type CompoundBeaconList struct { +} + +func New_CompoundBeaconList_() *CompoundBeaconList { + _this := CompoundBeaconList{} + + return &_this +} + +type CompanionStruct_CompoundBeaconList_ struct { +} + +var Companion_CompoundBeaconList_ = CompanionStruct_CompoundBeaconList_{} + +func (*CompoundBeaconList) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbTypes.CompoundBeaconList" +} + +// End of class CompoundBeaconList + +func Type_CompoundBeaconList_() _dafny.TypeDescriptor { + return type_CompoundBeaconList_{} +} + +type type_CompoundBeaconList_ struct { +} + +func (_this type_CompoundBeaconList_) Default() interface{} { + return _dafny.EmptySeq +} + +func (_this type_CompoundBeaconList_) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbTypes.CompoundBeaconList" +} +func (_this *CompanionStruct_CompoundBeaconList_) Is_(__source _dafny.Sequence) bool { + var _3_x _dafny.Sequence = (__source) + _ = _3_x + return Companion_Default___.IsValid__CompoundBeaconList(_3_x) +} + +// Definition of datatype Constructor +type Constructor struct { + Data_Constructor_ +} + +func (_this Constructor) Get_() Data_Constructor_ { + return _this.Data_Constructor_ +} + +type Data_Constructor_ interface { + isConstructor() +} + +type CompanionStruct_Constructor_ struct { +} + +var Companion_Constructor_ = CompanionStruct_Constructor_{} + +type Constructor_Constructor struct { + Parts _dafny.Sequence +} + +func (Constructor_Constructor) isConstructor() {} + +func (CompanionStruct_Constructor_) Create_Constructor_(Parts _dafny.Sequence) Constructor { + return Constructor{Constructor_Constructor{Parts}} +} + +func (_this Constructor) Is_Constructor() bool { + _, ok := _this.Get_().(Constructor_Constructor) + return ok +} + +func (CompanionStruct_Constructor_) Default() Constructor { + return Companion_Constructor_.Create_Constructor_(_dafny.EmptySeq) +} + +func (_this Constructor) Dtor_parts() _dafny.Sequence { + return _this.Get_().(Constructor_Constructor).Parts +} + +func (_this Constructor) String() string { + switch data := _this.Get_().(type) { + case nil: + return "null" + case Constructor_Constructor: + { + return "AwsCryptographyDbEncryptionSdkDynamoDbTypes.Constructor.Constructor" + "(" + _dafny.String(data.Parts) + ")" + } + default: + { + return "" + } + } +} + +func (_this Constructor) Equals(other Constructor) bool { + switch data1 := _this.Get_().(type) { + case Constructor_Constructor: + { + data2, ok := other.Get_().(Constructor_Constructor) + return ok && data1.Parts.Equals(data2.Parts) + } + default: + { + return false // unexpected + } + } +} + +func (_this Constructor) EqualsGeneric(other interface{}) bool { + typed, ok := other.(Constructor) + return ok && _this.Equals(typed) +} + +func Type_Constructor_() _dafny.TypeDescriptor { + return type_Constructor_{} +} + +type type_Constructor_ struct { +} + +func (_this type_Constructor_) Default() interface{} { + return Companion_Constructor_.Default() +} + +func (_this type_Constructor_) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbTypes.Constructor" +} +func (_this Constructor) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = Constructor{} + +// End of datatype Constructor + +// Definition of class ConstructorList +type ConstructorList struct { +} + +func New_ConstructorList_() *ConstructorList { + _this := ConstructorList{} + + return &_this +} + +type CompanionStruct_ConstructorList_ struct { +} + +var Companion_ConstructorList_ = CompanionStruct_ConstructorList_{} + +func (*ConstructorList) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbTypes.ConstructorList" +} + +// End of class ConstructorList + +func Type_ConstructorList_() _dafny.TypeDescriptor { + return type_ConstructorList_{} +} + +type type_ConstructorList_ struct { +} + +func (_this type_ConstructorList_) Default() interface{} { + return _dafny.EmptySeq +} + +func (_this type_ConstructorList_) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbTypes.ConstructorList" +} +func (_this *CompanionStruct_ConstructorList_) Is_(__source _dafny.Sequence) bool { + var _4_x _dafny.Sequence = (__source) + _ = _4_x + return Companion_Default___.IsValid__ConstructorList(_4_x) +} + +// Definition of datatype ConstructorPart +type ConstructorPart struct { + Data_ConstructorPart_ +} + +func (_this ConstructorPart) Get_() Data_ConstructorPart_ { + return _this.Data_ConstructorPart_ +} + +type Data_ConstructorPart_ interface { + isConstructorPart() +} + +type CompanionStruct_ConstructorPart_ struct { +} + +var Companion_ConstructorPart_ = CompanionStruct_ConstructorPart_{} + +type ConstructorPart_ConstructorPart struct { + Name _dafny.Sequence + Required bool +} + +func (ConstructorPart_ConstructorPart) isConstructorPart() {} + +func (CompanionStruct_ConstructorPart_) Create_ConstructorPart_(Name _dafny.Sequence, Required bool) ConstructorPart { + return ConstructorPart{ConstructorPart_ConstructorPart{Name, Required}} +} + +func (_this ConstructorPart) Is_ConstructorPart() bool { + _, ok := _this.Get_().(ConstructorPart_ConstructorPart) + return ok +} + +func (CompanionStruct_ConstructorPart_) Default() ConstructorPart { + return Companion_ConstructorPart_.Create_ConstructorPart_(_dafny.EmptySeq.SetString(), false) +} + +func (_this ConstructorPart) Dtor_name() _dafny.Sequence { + return _this.Get_().(ConstructorPart_ConstructorPart).Name +} + +func (_this ConstructorPart) Dtor_required() bool { + return _this.Get_().(ConstructorPart_ConstructorPart).Required +} + +func (_this ConstructorPart) String() string { + switch data := _this.Get_().(type) { + case nil: + return "null" + case ConstructorPart_ConstructorPart: + { + return "AwsCryptographyDbEncryptionSdkDynamoDbTypes.ConstructorPart.ConstructorPart" + "(" + _dafny.String(data.Name) + ", " + _dafny.String(data.Required) + ")" + } + default: + { + return "" + } + } +} + +func (_this ConstructorPart) Equals(other ConstructorPart) bool { + switch data1 := _this.Get_().(type) { + case ConstructorPart_ConstructorPart: + { + data2, ok := other.Get_().(ConstructorPart_ConstructorPart) + return ok && data1.Name.Equals(data2.Name) && data1.Required == data2.Required + } + default: + { + return false // unexpected + } + } +} + +func (_this ConstructorPart) EqualsGeneric(other interface{}) bool { + typed, ok := other.(ConstructorPart) + return ok && _this.Equals(typed) +} + +func Type_ConstructorPart_() _dafny.TypeDescriptor { + return type_ConstructorPart_{} +} + +type type_ConstructorPart_ struct { +} + +func (_this type_ConstructorPart_) Default() interface{} { + return Companion_ConstructorPart_.Default() +} + +func (_this type_ConstructorPart_) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbTypes.ConstructorPart" +} +func (_this ConstructorPart) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = ConstructorPart{} + +// End of datatype ConstructorPart + +// Definition of class ConstructorPartList +type ConstructorPartList struct { +} + +func New_ConstructorPartList_() *ConstructorPartList { + _this := ConstructorPartList{} + + return &_this +} + +type CompanionStruct_ConstructorPartList_ struct { +} + +var Companion_ConstructorPartList_ = CompanionStruct_ConstructorPartList_{} + +func (*ConstructorPartList) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbTypes.ConstructorPartList" +} + +// End of class ConstructorPartList + +func Type_ConstructorPartList_() _dafny.TypeDescriptor { + return type_ConstructorPartList_{} +} + +type type_ConstructorPartList_ struct { +} + +func (_this type_ConstructorPartList_) Default() interface{} { + return _dafny.EmptySeq +} + +func (_this type_ConstructorPartList_) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbTypes.ConstructorPartList" +} +func (_this *CompanionStruct_ConstructorPartList_) Is_(__source _dafny.Sequence) bool { + var _5_x _dafny.Sequence = (__source) + _ = _5_x + return Companion_Default___.IsValid__ConstructorPartList(_5_x) +} + +// Definition of datatype CreateDynamoDbEncryptionBranchKeyIdSupplierInput +type CreateDynamoDbEncryptionBranchKeyIdSupplierInput struct { + Data_CreateDynamoDbEncryptionBranchKeyIdSupplierInput_ +} + +func (_this CreateDynamoDbEncryptionBranchKeyIdSupplierInput) Get_() Data_CreateDynamoDbEncryptionBranchKeyIdSupplierInput_ { + return _this.Data_CreateDynamoDbEncryptionBranchKeyIdSupplierInput_ +} + +type Data_CreateDynamoDbEncryptionBranchKeyIdSupplierInput_ interface { + isCreateDynamoDbEncryptionBranchKeyIdSupplierInput() +} + +type CompanionStruct_CreateDynamoDbEncryptionBranchKeyIdSupplierInput_ struct { +} + +var Companion_CreateDynamoDbEncryptionBranchKeyIdSupplierInput_ = CompanionStruct_CreateDynamoDbEncryptionBranchKeyIdSupplierInput_{} + +type CreateDynamoDbEncryptionBranchKeyIdSupplierInput_CreateDynamoDbEncryptionBranchKeyIdSupplierInput struct { + DdbKeyBranchKeyIdSupplier IDynamoDbKeyBranchKeyIdSupplier +} + +func (CreateDynamoDbEncryptionBranchKeyIdSupplierInput_CreateDynamoDbEncryptionBranchKeyIdSupplierInput) isCreateDynamoDbEncryptionBranchKeyIdSupplierInput() { +} + +func (CompanionStruct_CreateDynamoDbEncryptionBranchKeyIdSupplierInput_) Create_CreateDynamoDbEncryptionBranchKeyIdSupplierInput_(DdbKeyBranchKeyIdSupplier IDynamoDbKeyBranchKeyIdSupplier) CreateDynamoDbEncryptionBranchKeyIdSupplierInput { + return CreateDynamoDbEncryptionBranchKeyIdSupplierInput{CreateDynamoDbEncryptionBranchKeyIdSupplierInput_CreateDynamoDbEncryptionBranchKeyIdSupplierInput{DdbKeyBranchKeyIdSupplier}} +} + +func (_this CreateDynamoDbEncryptionBranchKeyIdSupplierInput) Is_CreateDynamoDbEncryptionBranchKeyIdSupplierInput() bool { + _, ok := _this.Get_().(CreateDynamoDbEncryptionBranchKeyIdSupplierInput_CreateDynamoDbEncryptionBranchKeyIdSupplierInput) + return ok +} + +func (CompanionStruct_CreateDynamoDbEncryptionBranchKeyIdSupplierInput_) Default() CreateDynamoDbEncryptionBranchKeyIdSupplierInput { + return Companion_CreateDynamoDbEncryptionBranchKeyIdSupplierInput_.Create_CreateDynamoDbEncryptionBranchKeyIdSupplierInput_((IDynamoDbKeyBranchKeyIdSupplier)(nil)) +} + +func (_this CreateDynamoDbEncryptionBranchKeyIdSupplierInput) Dtor_ddbKeyBranchKeyIdSupplier() IDynamoDbKeyBranchKeyIdSupplier { + return _this.Get_().(CreateDynamoDbEncryptionBranchKeyIdSupplierInput_CreateDynamoDbEncryptionBranchKeyIdSupplierInput).DdbKeyBranchKeyIdSupplier +} + +func (_this CreateDynamoDbEncryptionBranchKeyIdSupplierInput) String() string { + switch data := _this.Get_().(type) { + case nil: + return "null" + case CreateDynamoDbEncryptionBranchKeyIdSupplierInput_CreateDynamoDbEncryptionBranchKeyIdSupplierInput: + { + return "AwsCryptographyDbEncryptionSdkDynamoDbTypes.CreateDynamoDbEncryptionBranchKeyIdSupplierInput.CreateDynamoDbEncryptionBranchKeyIdSupplierInput" + "(" + _dafny.String(data.DdbKeyBranchKeyIdSupplier) + ")" + } + default: + { + return "" + } + } +} + +func (_this CreateDynamoDbEncryptionBranchKeyIdSupplierInput) Equals(other CreateDynamoDbEncryptionBranchKeyIdSupplierInput) bool { + switch data1 := _this.Get_().(type) { + case CreateDynamoDbEncryptionBranchKeyIdSupplierInput_CreateDynamoDbEncryptionBranchKeyIdSupplierInput: + { + data2, ok := other.Get_().(CreateDynamoDbEncryptionBranchKeyIdSupplierInput_CreateDynamoDbEncryptionBranchKeyIdSupplierInput) + return ok && _dafny.AreEqual(data1.DdbKeyBranchKeyIdSupplier, data2.DdbKeyBranchKeyIdSupplier) + } + default: + { + return false // unexpected + } + } +} + +func (_this CreateDynamoDbEncryptionBranchKeyIdSupplierInput) EqualsGeneric(other interface{}) bool { + typed, ok := other.(CreateDynamoDbEncryptionBranchKeyIdSupplierInput) + return ok && _this.Equals(typed) +} + +func Type_CreateDynamoDbEncryptionBranchKeyIdSupplierInput_() _dafny.TypeDescriptor { + return type_CreateDynamoDbEncryptionBranchKeyIdSupplierInput_{} +} + +type type_CreateDynamoDbEncryptionBranchKeyIdSupplierInput_ struct { +} + +func (_this type_CreateDynamoDbEncryptionBranchKeyIdSupplierInput_) Default() interface{} { + return Companion_CreateDynamoDbEncryptionBranchKeyIdSupplierInput_.Default() +} + +func (_this type_CreateDynamoDbEncryptionBranchKeyIdSupplierInput_) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbTypes.CreateDynamoDbEncryptionBranchKeyIdSupplierInput" +} +func (_this CreateDynamoDbEncryptionBranchKeyIdSupplierInput) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = CreateDynamoDbEncryptionBranchKeyIdSupplierInput{} + +// End of datatype CreateDynamoDbEncryptionBranchKeyIdSupplierInput + +// Definition of datatype CreateDynamoDbEncryptionBranchKeyIdSupplierOutput +type CreateDynamoDbEncryptionBranchKeyIdSupplierOutput struct { + Data_CreateDynamoDbEncryptionBranchKeyIdSupplierOutput_ +} + +func (_this CreateDynamoDbEncryptionBranchKeyIdSupplierOutput) Get_() Data_CreateDynamoDbEncryptionBranchKeyIdSupplierOutput_ { + return _this.Data_CreateDynamoDbEncryptionBranchKeyIdSupplierOutput_ +} + +type Data_CreateDynamoDbEncryptionBranchKeyIdSupplierOutput_ interface { + isCreateDynamoDbEncryptionBranchKeyIdSupplierOutput() +} + +type CompanionStruct_CreateDynamoDbEncryptionBranchKeyIdSupplierOutput_ struct { +} + +var Companion_CreateDynamoDbEncryptionBranchKeyIdSupplierOutput_ = CompanionStruct_CreateDynamoDbEncryptionBranchKeyIdSupplierOutput_{} + +type CreateDynamoDbEncryptionBranchKeyIdSupplierOutput_CreateDynamoDbEncryptionBranchKeyIdSupplierOutput struct { + BranchKeyIdSupplier m_AwsCryptographyMaterialProvidersTypes.IBranchKeyIdSupplier +} + +func (CreateDynamoDbEncryptionBranchKeyIdSupplierOutput_CreateDynamoDbEncryptionBranchKeyIdSupplierOutput) isCreateDynamoDbEncryptionBranchKeyIdSupplierOutput() { +} + +func (CompanionStruct_CreateDynamoDbEncryptionBranchKeyIdSupplierOutput_) Create_CreateDynamoDbEncryptionBranchKeyIdSupplierOutput_(BranchKeyIdSupplier m_AwsCryptographyMaterialProvidersTypes.IBranchKeyIdSupplier) CreateDynamoDbEncryptionBranchKeyIdSupplierOutput { + return CreateDynamoDbEncryptionBranchKeyIdSupplierOutput{CreateDynamoDbEncryptionBranchKeyIdSupplierOutput_CreateDynamoDbEncryptionBranchKeyIdSupplierOutput{BranchKeyIdSupplier}} +} + +func (_this CreateDynamoDbEncryptionBranchKeyIdSupplierOutput) Is_CreateDynamoDbEncryptionBranchKeyIdSupplierOutput() bool { + _, ok := _this.Get_().(CreateDynamoDbEncryptionBranchKeyIdSupplierOutput_CreateDynamoDbEncryptionBranchKeyIdSupplierOutput) + return ok +} + +func (CompanionStruct_CreateDynamoDbEncryptionBranchKeyIdSupplierOutput_) Default() CreateDynamoDbEncryptionBranchKeyIdSupplierOutput { + return Companion_CreateDynamoDbEncryptionBranchKeyIdSupplierOutput_.Create_CreateDynamoDbEncryptionBranchKeyIdSupplierOutput_((m_AwsCryptographyMaterialProvidersTypes.IBranchKeyIdSupplier)(nil)) +} + +func (_this CreateDynamoDbEncryptionBranchKeyIdSupplierOutput) Dtor_branchKeyIdSupplier() m_AwsCryptographyMaterialProvidersTypes.IBranchKeyIdSupplier { + return _this.Get_().(CreateDynamoDbEncryptionBranchKeyIdSupplierOutput_CreateDynamoDbEncryptionBranchKeyIdSupplierOutput).BranchKeyIdSupplier +} + +func (_this CreateDynamoDbEncryptionBranchKeyIdSupplierOutput) String() string { + switch data := _this.Get_().(type) { + case nil: + return "null" + case CreateDynamoDbEncryptionBranchKeyIdSupplierOutput_CreateDynamoDbEncryptionBranchKeyIdSupplierOutput: + { + return "AwsCryptographyDbEncryptionSdkDynamoDbTypes.CreateDynamoDbEncryptionBranchKeyIdSupplierOutput.CreateDynamoDbEncryptionBranchKeyIdSupplierOutput" + "(" + _dafny.String(data.BranchKeyIdSupplier) + ")" + } + default: + { + return "" + } + } +} + +func (_this CreateDynamoDbEncryptionBranchKeyIdSupplierOutput) Equals(other CreateDynamoDbEncryptionBranchKeyIdSupplierOutput) bool { + switch data1 := _this.Get_().(type) { + case CreateDynamoDbEncryptionBranchKeyIdSupplierOutput_CreateDynamoDbEncryptionBranchKeyIdSupplierOutput: + { + data2, ok := other.Get_().(CreateDynamoDbEncryptionBranchKeyIdSupplierOutput_CreateDynamoDbEncryptionBranchKeyIdSupplierOutput) + return ok && _dafny.AreEqual(data1.BranchKeyIdSupplier, data2.BranchKeyIdSupplier) + } + default: + { + return false // unexpected + } + } +} + +func (_this CreateDynamoDbEncryptionBranchKeyIdSupplierOutput) EqualsGeneric(other interface{}) bool { + typed, ok := other.(CreateDynamoDbEncryptionBranchKeyIdSupplierOutput) + return ok && _this.Equals(typed) +} + +func Type_CreateDynamoDbEncryptionBranchKeyIdSupplierOutput_() _dafny.TypeDescriptor { + return type_CreateDynamoDbEncryptionBranchKeyIdSupplierOutput_{} +} + +type type_CreateDynamoDbEncryptionBranchKeyIdSupplierOutput_ struct { +} + +func (_this type_CreateDynamoDbEncryptionBranchKeyIdSupplierOutput_) Default() interface{} { + return Companion_CreateDynamoDbEncryptionBranchKeyIdSupplierOutput_.Default() +} + +func (_this type_CreateDynamoDbEncryptionBranchKeyIdSupplierOutput_) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbTypes.CreateDynamoDbEncryptionBranchKeyIdSupplierOutput" +} +func (_this CreateDynamoDbEncryptionBranchKeyIdSupplierOutput) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = CreateDynamoDbEncryptionBranchKeyIdSupplierOutput{} + +// End of datatype CreateDynamoDbEncryptionBranchKeyIdSupplierOutput + +// Definition of class IDynamoDbEncryptionClientCallHistory +type IDynamoDbEncryptionClientCallHistory struct { + dummy byte +} + +func New_IDynamoDbEncryptionClientCallHistory_() *IDynamoDbEncryptionClientCallHistory { + _this := IDynamoDbEncryptionClientCallHistory{} + + return &_this +} + +type CompanionStruct_IDynamoDbEncryptionClientCallHistory_ struct { +} + +var Companion_IDynamoDbEncryptionClientCallHistory_ = CompanionStruct_IDynamoDbEncryptionClientCallHistory_{} + +func (_this *IDynamoDbEncryptionClientCallHistory) Equals(other *IDynamoDbEncryptionClientCallHistory) bool { + return _this == other +} + +func (_this *IDynamoDbEncryptionClientCallHistory) EqualsGeneric(x interface{}) bool { + other, ok := x.(*IDynamoDbEncryptionClientCallHistory) + return ok && _this.Equals(other) +} + +func (*IDynamoDbEncryptionClientCallHistory) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbTypes.IDynamoDbEncryptionClientCallHistory" +} + +func Type_IDynamoDbEncryptionClientCallHistory_() _dafny.TypeDescriptor { + return type_IDynamoDbEncryptionClientCallHistory_{} +} + +type type_IDynamoDbEncryptionClientCallHistory_ struct { +} + +func (_this type_IDynamoDbEncryptionClientCallHistory_) Default() interface{} { + return (*IDynamoDbEncryptionClientCallHistory)(nil) +} + +func (_this type_IDynamoDbEncryptionClientCallHistory_) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbTypes.IDynamoDbEncryptionClientCallHistory" +} +func (_this *IDynamoDbEncryptionClientCallHistory) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = &IDynamoDbEncryptionClientCallHistory{} + +// End of class IDynamoDbEncryptionClientCallHistory + +// Definition of trait IDynamoDbEncryptionClient +type IDynamoDbEncryptionClient interface { + String() string + CreateDynamoDbEncryptionBranchKeyIdSupplier(input CreateDynamoDbEncryptionBranchKeyIdSupplierInput) m_Wrappers.Result + GetEncryptedDataKeyDescription(input GetEncryptedDataKeyDescriptionInput) m_Wrappers.Result +} +type CompanionStruct_IDynamoDbEncryptionClient_ struct { + TraitID_ *_dafny.TraitID +} + +var Companion_IDynamoDbEncryptionClient_ = CompanionStruct_IDynamoDbEncryptionClient_{ + TraitID_: &_dafny.TraitID{}, +} + +func (CompanionStruct_IDynamoDbEncryptionClient_) CastTo_(x interface{}) IDynamoDbEncryptionClient { + var t IDynamoDbEncryptionClient + t, _ = x.(IDynamoDbEncryptionClient) + return t +} + +// End of trait IDynamoDbEncryptionClient + +// Definition of datatype DynamoDbEncryptionConfig +type DynamoDbEncryptionConfig struct { + Data_DynamoDbEncryptionConfig_ +} + +func (_this DynamoDbEncryptionConfig) Get_() Data_DynamoDbEncryptionConfig_ { + return _this.Data_DynamoDbEncryptionConfig_ +} + +type Data_DynamoDbEncryptionConfig_ interface { + isDynamoDbEncryptionConfig() +} + +type CompanionStruct_DynamoDbEncryptionConfig_ struct { +} + +var Companion_DynamoDbEncryptionConfig_ = CompanionStruct_DynamoDbEncryptionConfig_{} + +type DynamoDbEncryptionConfig_DynamoDbEncryptionConfig struct { +} + +func (DynamoDbEncryptionConfig_DynamoDbEncryptionConfig) isDynamoDbEncryptionConfig() {} + +func (CompanionStruct_DynamoDbEncryptionConfig_) Create_DynamoDbEncryptionConfig_() DynamoDbEncryptionConfig { + return DynamoDbEncryptionConfig{DynamoDbEncryptionConfig_DynamoDbEncryptionConfig{}} +} + +func (_this DynamoDbEncryptionConfig) Is_DynamoDbEncryptionConfig() bool { + _, ok := _this.Get_().(DynamoDbEncryptionConfig_DynamoDbEncryptionConfig) + return ok +} + +func (CompanionStruct_DynamoDbEncryptionConfig_) Default() DynamoDbEncryptionConfig { + return Companion_DynamoDbEncryptionConfig_.Create_DynamoDbEncryptionConfig_() +} + +func (_ CompanionStruct_DynamoDbEncryptionConfig_) AllSingletonConstructors() _dafny.Iterator { + i := -1 + return func() (interface{}, bool) { + i++ + switch i { + case 0: + return Companion_DynamoDbEncryptionConfig_.Create_DynamoDbEncryptionConfig_(), true + default: + return DynamoDbEncryptionConfig{}, false + } + } +} + +func (_this DynamoDbEncryptionConfig) String() string { + switch _this.Get_().(type) { + case nil: + return "null" + case DynamoDbEncryptionConfig_DynamoDbEncryptionConfig: + { + return "AwsCryptographyDbEncryptionSdkDynamoDbTypes.DynamoDbEncryptionConfig.DynamoDbEncryptionConfig" + } + default: + { + return "" + } + } +} + +func (_this DynamoDbEncryptionConfig) Equals(other DynamoDbEncryptionConfig) bool { + switch _this.Get_().(type) { + case DynamoDbEncryptionConfig_DynamoDbEncryptionConfig: + { + _, ok := other.Get_().(DynamoDbEncryptionConfig_DynamoDbEncryptionConfig) + return ok + } + default: + { + return false // unexpected + } + } +} + +func (_this DynamoDbEncryptionConfig) EqualsGeneric(other interface{}) bool { + typed, ok := other.(DynamoDbEncryptionConfig) + return ok && _this.Equals(typed) +} + +func Type_DynamoDbEncryptionConfig_() _dafny.TypeDescriptor { + return type_DynamoDbEncryptionConfig_{} +} + +type type_DynamoDbEncryptionConfig_ struct { +} + +func (_this type_DynamoDbEncryptionConfig_) Default() interface{} { + return Companion_DynamoDbEncryptionConfig_.Default() +} + +func (_this type_DynamoDbEncryptionConfig_) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbTypes.DynamoDbEncryptionConfig" +} +func (_this DynamoDbEncryptionConfig) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = DynamoDbEncryptionConfig{} + +// End of datatype DynamoDbEncryptionConfig + +// Definition of class IDynamoDbKeyBranchKeyIdSupplierCallHistory +type IDynamoDbKeyBranchKeyIdSupplierCallHistory struct { + dummy byte +} + +func New_IDynamoDbKeyBranchKeyIdSupplierCallHistory_() *IDynamoDbKeyBranchKeyIdSupplierCallHistory { + _this := IDynamoDbKeyBranchKeyIdSupplierCallHistory{} + + return &_this +} + +type CompanionStruct_IDynamoDbKeyBranchKeyIdSupplierCallHistory_ struct { +} + +var Companion_IDynamoDbKeyBranchKeyIdSupplierCallHistory_ = CompanionStruct_IDynamoDbKeyBranchKeyIdSupplierCallHistory_{} + +func (_this *IDynamoDbKeyBranchKeyIdSupplierCallHistory) Equals(other *IDynamoDbKeyBranchKeyIdSupplierCallHistory) bool { + return _this == other +} + +func (_this *IDynamoDbKeyBranchKeyIdSupplierCallHistory) EqualsGeneric(x interface{}) bool { + other, ok := x.(*IDynamoDbKeyBranchKeyIdSupplierCallHistory) + return ok && _this.Equals(other) +} + +func (*IDynamoDbKeyBranchKeyIdSupplierCallHistory) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbTypes.IDynamoDbKeyBranchKeyIdSupplierCallHistory" +} + +func Type_IDynamoDbKeyBranchKeyIdSupplierCallHistory_() _dafny.TypeDescriptor { + return type_IDynamoDbKeyBranchKeyIdSupplierCallHistory_{} +} + +type type_IDynamoDbKeyBranchKeyIdSupplierCallHistory_ struct { +} + +func (_this type_IDynamoDbKeyBranchKeyIdSupplierCallHistory_) Default() interface{} { + return (*IDynamoDbKeyBranchKeyIdSupplierCallHistory)(nil) +} + +func (_this type_IDynamoDbKeyBranchKeyIdSupplierCallHistory_) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbTypes.IDynamoDbKeyBranchKeyIdSupplierCallHistory" +} +func (_this *IDynamoDbKeyBranchKeyIdSupplierCallHistory) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = &IDynamoDbKeyBranchKeyIdSupplierCallHistory{} + +// End of class IDynamoDbKeyBranchKeyIdSupplierCallHistory + +// Definition of trait IDynamoDbKeyBranchKeyIdSupplier +type IDynamoDbKeyBranchKeyIdSupplier interface { + String() string + GetBranchKeyIdFromDdbKey(input GetBranchKeyIdFromDdbKeyInput) m_Wrappers.Result + GetBranchKeyIdFromDdbKey_k(input GetBranchKeyIdFromDdbKeyInput) m_Wrappers.Result +} + +func (_static *CompanionStruct_IDynamoDbKeyBranchKeyIdSupplier_) GetBranchKeyIdFromDdbKey(_this IDynamoDbKeyBranchKeyIdSupplier, input GetBranchKeyIdFromDdbKeyInput) m_Wrappers.Result { + { + var output m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(Companion_GetBranchKeyIdFromDdbKeyOutput_.Default()) + _ = output + var _out0 m_Wrappers.Result + _ = _out0 + _out0 = (_this).GetBranchKeyIdFromDdbKey_k(input) + output = _out0 + return output + } +} + +type CompanionStruct_IDynamoDbKeyBranchKeyIdSupplier_ struct { + TraitID_ *_dafny.TraitID +} + +var Companion_IDynamoDbKeyBranchKeyIdSupplier_ = CompanionStruct_IDynamoDbKeyBranchKeyIdSupplier_{ + TraitID_: &_dafny.TraitID{}, +} + +func (CompanionStruct_IDynamoDbKeyBranchKeyIdSupplier_) CastTo_(x interface{}) IDynamoDbKeyBranchKeyIdSupplier { + var t IDynamoDbKeyBranchKeyIdSupplier + t, _ = x.(IDynamoDbKeyBranchKeyIdSupplier) + return t +} + +// End of trait IDynamoDbKeyBranchKeyIdSupplier + +// Definition of datatype DynamoDbTableEncryptionConfig +type DynamoDbTableEncryptionConfig struct { + Data_DynamoDbTableEncryptionConfig_ +} + +func (_this DynamoDbTableEncryptionConfig) Get_() Data_DynamoDbTableEncryptionConfig_ { + return _this.Data_DynamoDbTableEncryptionConfig_ +} + +type Data_DynamoDbTableEncryptionConfig_ interface { + isDynamoDbTableEncryptionConfig() +} + +type CompanionStruct_DynamoDbTableEncryptionConfig_ struct { +} + +var Companion_DynamoDbTableEncryptionConfig_ = CompanionStruct_DynamoDbTableEncryptionConfig_{} + +type DynamoDbTableEncryptionConfig_DynamoDbTableEncryptionConfig struct { + LogicalTableName _dafny.Sequence + PartitionKeyName _dafny.Sequence + SortKeyName m_Wrappers.Option + Search m_Wrappers.Option + AttributeActionsOnEncrypt _dafny.Map + AllowedUnsignedAttributes m_Wrappers.Option + AllowedUnsignedAttributePrefix m_Wrappers.Option + AlgorithmSuiteId m_Wrappers.Option + Keyring m_Wrappers.Option + Cmm m_Wrappers.Option + LegacyOverride m_Wrappers.Option + PlaintextOverride m_Wrappers.Option +} + +func (DynamoDbTableEncryptionConfig_DynamoDbTableEncryptionConfig) isDynamoDbTableEncryptionConfig() { +} + +func (CompanionStruct_DynamoDbTableEncryptionConfig_) Create_DynamoDbTableEncryptionConfig_(LogicalTableName _dafny.Sequence, PartitionKeyName _dafny.Sequence, SortKeyName m_Wrappers.Option, Search m_Wrappers.Option, AttributeActionsOnEncrypt _dafny.Map, AllowedUnsignedAttributes m_Wrappers.Option, AllowedUnsignedAttributePrefix m_Wrappers.Option, AlgorithmSuiteId m_Wrappers.Option, Keyring m_Wrappers.Option, Cmm m_Wrappers.Option, LegacyOverride m_Wrappers.Option, PlaintextOverride m_Wrappers.Option) DynamoDbTableEncryptionConfig { + return DynamoDbTableEncryptionConfig{DynamoDbTableEncryptionConfig_DynamoDbTableEncryptionConfig{LogicalTableName, PartitionKeyName, SortKeyName, Search, AttributeActionsOnEncrypt, AllowedUnsignedAttributes, AllowedUnsignedAttributePrefix, AlgorithmSuiteId, Keyring, Cmm, LegacyOverride, PlaintextOverride}} +} + +func (_this DynamoDbTableEncryptionConfig) Is_DynamoDbTableEncryptionConfig() bool { + _, ok := _this.Get_().(DynamoDbTableEncryptionConfig_DynamoDbTableEncryptionConfig) + return ok +} + +func (CompanionStruct_DynamoDbTableEncryptionConfig_) Default() DynamoDbTableEncryptionConfig { + return Companion_DynamoDbTableEncryptionConfig_.Create_DynamoDbTableEncryptionConfig_(_dafny.EmptySeq.SetString(), _dafny.EmptySeq.SetString(), m_Wrappers.Companion_Option_.Default(), m_Wrappers.Companion_Option_.Default(), _dafny.EmptyMap, m_Wrappers.Companion_Option_.Default(), m_Wrappers.Companion_Option_.Default(), m_Wrappers.Companion_Option_.Default(), m_Wrappers.Companion_Option_.Default(), m_Wrappers.Companion_Option_.Default(), m_Wrappers.Companion_Option_.Default(), m_Wrappers.Companion_Option_.Default()) +} + +func (_this DynamoDbTableEncryptionConfig) Dtor_logicalTableName() _dafny.Sequence { + return _this.Get_().(DynamoDbTableEncryptionConfig_DynamoDbTableEncryptionConfig).LogicalTableName +} + +func (_this DynamoDbTableEncryptionConfig) Dtor_partitionKeyName() _dafny.Sequence { + return _this.Get_().(DynamoDbTableEncryptionConfig_DynamoDbTableEncryptionConfig).PartitionKeyName +} + +func (_this DynamoDbTableEncryptionConfig) Dtor_sortKeyName() m_Wrappers.Option { + return _this.Get_().(DynamoDbTableEncryptionConfig_DynamoDbTableEncryptionConfig).SortKeyName +} + +func (_this DynamoDbTableEncryptionConfig) Dtor_search() m_Wrappers.Option { + return _this.Get_().(DynamoDbTableEncryptionConfig_DynamoDbTableEncryptionConfig).Search +} + +func (_this DynamoDbTableEncryptionConfig) Dtor_attributeActionsOnEncrypt() _dafny.Map { + return _this.Get_().(DynamoDbTableEncryptionConfig_DynamoDbTableEncryptionConfig).AttributeActionsOnEncrypt +} + +func (_this DynamoDbTableEncryptionConfig) Dtor_allowedUnsignedAttributes() m_Wrappers.Option { + return _this.Get_().(DynamoDbTableEncryptionConfig_DynamoDbTableEncryptionConfig).AllowedUnsignedAttributes +} + +func (_this DynamoDbTableEncryptionConfig) Dtor_allowedUnsignedAttributePrefix() m_Wrappers.Option { + return _this.Get_().(DynamoDbTableEncryptionConfig_DynamoDbTableEncryptionConfig).AllowedUnsignedAttributePrefix +} + +func (_this DynamoDbTableEncryptionConfig) Dtor_algorithmSuiteId() m_Wrappers.Option { + return _this.Get_().(DynamoDbTableEncryptionConfig_DynamoDbTableEncryptionConfig).AlgorithmSuiteId +} + +func (_this DynamoDbTableEncryptionConfig) Dtor_keyring() m_Wrappers.Option { + return _this.Get_().(DynamoDbTableEncryptionConfig_DynamoDbTableEncryptionConfig).Keyring +} + +func (_this DynamoDbTableEncryptionConfig) Dtor_cmm() m_Wrappers.Option { + return _this.Get_().(DynamoDbTableEncryptionConfig_DynamoDbTableEncryptionConfig).Cmm +} + +func (_this DynamoDbTableEncryptionConfig) Dtor_legacyOverride() m_Wrappers.Option { + return _this.Get_().(DynamoDbTableEncryptionConfig_DynamoDbTableEncryptionConfig).LegacyOverride +} + +func (_this DynamoDbTableEncryptionConfig) Dtor_plaintextOverride() m_Wrappers.Option { + return _this.Get_().(DynamoDbTableEncryptionConfig_DynamoDbTableEncryptionConfig).PlaintextOverride +} + +func (_this DynamoDbTableEncryptionConfig) String() string { + switch data := _this.Get_().(type) { + case nil: + return "null" + case DynamoDbTableEncryptionConfig_DynamoDbTableEncryptionConfig: + { + return "AwsCryptographyDbEncryptionSdkDynamoDbTypes.DynamoDbTableEncryptionConfig.DynamoDbTableEncryptionConfig" + "(" + _dafny.String(data.LogicalTableName) + ", " + _dafny.String(data.PartitionKeyName) + ", " + _dafny.String(data.SortKeyName) + ", " + _dafny.String(data.Search) + ", " + _dafny.String(data.AttributeActionsOnEncrypt) + ", " + _dafny.String(data.AllowedUnsignedAttributes) + ", " + _dafny.String(data.AllowedUnsignedAttributePrefix) + ", " + _dafny.String(data.AlgorithmSuiteId) + ", " + _dafny.String(data.Keyring) + ", " + _dafny.String(data.Cmm) + ", " + _dafny.String(data.LegacyOverride) + ", " + _dafny.String(data.PlaintextOverride) + ")" + } + default: + { + return "" + } + } +} + +func (_this DynamoDbTableEncryptionConfig) Equals(other DynamoDbTableEncryptionConfig) bool { + switch data1 := _this.Get_().(type) { + case DynamoDbTableEncryptionConfig_DynamoDbTableEncryptionConfig: + { + data2, ok := other.Get_().(DynamoDbTableEncryptionConfig_DynamoDbTableEncryptionConfig) + return ok && data1.LogicalTableName.Equals(data2.LogicalTableName) && data1.PartitionKeyName.Equals(data2.PartitionKeyName) && data1.SortKeyName.Equals(data2.SortKeyName) && data1.Search.Equals(data2.Search) && data1.AttributeActionsOnEncrypt.Equals(data2.AttributeActionsOnEncrypt) && data1.AllowedUnsignedAttributes.Equals(data2.AllowedUnsignedAttributes) && data1.AllowedUnsignedAttributePrefix.Equals(data2.AllowedUnsignedAttributePrefix) && data1.AlgorithmSuiteId.Equals(data2.AlgorithmSuiteId) && data1.Keyring.Equals(data2.Keyring) && data1.Cmm.Equals(data2.Cmm) && data1.LegacyOverride.Equals(data2.LegacyOverride) && data1.PlaintextOverride.Equals(data2.PlaintextOverride) + } + default: + { + return false // unexpected + } + } +} + +func (_this DynamoDbTableEncryptionConfig) EqualsGeneric(other interface{}) bool { + typed, ok := other.(DynamoDbTableEncryptionConfig) + return ok && _this.Equals(typed) +} + +func Type_DynamoDbTableEncryptionConfig_() _dafny.TypeDescriptor { + return type_DynamoDbTableEncryptionConfig_{} +} + +type type_DynamoDbTableEncryptionConfig_ struct { +} + +func (_this type_DynamoDbTableEncryptionConfig_) Default() interface{} { + return Companion_DynamoDbTableEncryptionConfig_.Default() +} + +func (_this type_DynamoDbTableEncryptionConfig_) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbTypes.DynamoDbTableEncryptionConfig" +} +func (_this DynamoDbTableEncryptionConfig) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = DynamoDbTableEncryptionConfig{} + +// End of datatype DynamoDbTableEncryptionConfig + +// Definition of datatype DynamoDbTablesEncryptionConfig +type DynamoDbTablesEncryptionConfig struct { + Data_DynamoDbTablesEncryptionConfig_ +} + +func (_this DynamoDbTablesEncryptionConfig) Get_() Data_DynamoDbTablesEncryptionConfig_ { + return _this.Data_DynamoDbTablesEncryptionConfig_ +} + +type Data_DynamoDbTablesEncryptionConfig_ interface { + isDynamoDbTablesEncryptionConfig() +} + +type CompanionStruct_DynamoDbTablesEncryptionConfig_ struct { +} + +var Companion_DynamoDbTablesEncryptionConfig_ = CompanionStruct_DynamoDbTablesEncryptionConfig_{} + +type DynamoDbTablesEncryptionConfig_DynamoDbTablesEncryptionConfig struct { + TableEncryptionConfigs _dafny.Map +} + +func (DynamoDbTablesEncryptionConfig_DynamoDbTablesEncryptionConfig) isDynamoDbTablesEncryptionConfig() { +} + +func (CompanionStruct_DynamoDbTablesEncryptionConfig_) Create_DynamoDbTablesEncryptionConfig_(TableEncryptionConfigs _dafny.Map) DynamoDbTablesEncryptionConfig { + return DynamoDbTablesEncryptionConfig{DynamoDbTablesEncryptionConfig_DynamoDbTablesEncryptionConfig{TableEncryptionConfigs}} +} + +func (_this DynamoDbTablesEncryptionConfig) Is_DynamoDbTablesEncryptionConfig() bool { + _, ok := _this.Get_().(DynamoDbTablesEncryptionConfig_DynamoDbTablesEncryptionConfig) + return ok +} + +func (CompanionStruct_DynamoDbTablesEncryptionConfig_) Default() DynamoDbTablesEncryptionConfig { + return Companion_DynamoDbTablesEncryptionConfig_.Create_DynamoDbTablesEncryptionConfig_(_dafny.EmptyMap) +} + +func (_this DynamoDbTablesEncryptionConfig) Dtor_tableEncryptionConfigs() _dafny.Map { + return _this.Get_().(DynamoDbTablesEncryptionConfig_DynamoDbTablesEncryptionConfig).TableEncryptionConfigs +} + +func (_this DynamoDbTablesEncryptionConfig) String() string { + switch data := _this.Get_().(type) { + case nil: + return "null" + case DynamoDbTablesEncryptionConfig_DynamoDbTablesEncryptionConfig: + { + return "AwsCryptographyDbEncryptionSdkDynamoDbTypes.DynamoDbTablesEncryptionConfig.DynamoDbTablesEncryptionConfig" + "(" + _dafny.String(data.TableEncryptionConfigs) + ")" + } + default: + { + return "" + } + } +} + +func (_this DynamoDbTablesEncryptionConfig) Equals(other DynamoDbTablesEncryptionConfig) bool { + switch data1 := _this.Get_().(type) { + case DynamoDbTablesEncryptionConfig_DynamoDbTablesEncryptionConfig: + { + data2, ok := other.Get_().(DynamoDbTablesEncryptionConfig_DynamoDbTablesEncryptionConfig) + return ok && data1.TableEncryptionConfigs.Equals(data2.TableEncryptionConfigs) + } + default: + { + return false // unexpected + } + } +} + +func (_this DynamoDbTablesEncryptionConfig) EqualsGeneric(other interface{}) bool { + typed, ok := other.(DynamoDbTablesEncryptionConfig) + return ok && _this.Equals(typed) +} + +func Type_DynamoDbTablesEncryptionConfig_() _dafny.TypeDescriptor { + return type_DynamoDbTablesEncryptionConfig_{} +} + +type type_DynamoDbTablesEncryptionConfig_ struct { +} + +func (_this type_DynamoDbTablesEncryptionConfig_) Default() interface{} { + return Companion_DynamoDbTablesEncryptionConfig_.Default() +} + +func (_this type_DynamoDbTablesEncryptionConfig_) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbTypes.DynamoDbTablesEncryptionConfig" +} +func (_this DynamoDbTablesEncryptionConfig) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = DynamoDbTablesEncryptionConfig{} + +// End of datatype DynamoDbTablesEncryptionConfig + +// Definition of datatype EncryptedDataKeyDescription +type EncryptedDataKeyDescription struct { + Data_EncryptedDataKeyDescription_ +} + +func (_this EncryptedDataKeyDescription) Get_() Data_EncryptedDataKeyDescription_ { + return _this.Data_EncryptedDataKeyDescription_ +} + +type Data_EncryptedDataKeyDescription_ interface { + isEncryptedDataKeyDescription() +} + +type CompanionStruct_EncryptedDataKeyDescription_ struct { +} + +var Companion_EncryptedDataKeyDescription_ = CompanionStruct_EncryptedDataKeyDescription_{} + +type EncryptedDataKeyDescription_EncryptedDataKeyDescription struct { + KeyProviderId _dafny.Sequence + KeyProviderInfo m_Wrappers.Option + BranchKeyId m_Wrappers.Option + BranchKeyVersion m_Wrappers.Option +} + +func (EncryptedDataKeyDescription_EncryptedDataKeyDescription) isEncryptedDataKeyDescription() {} + +func (CompanionStruct_EncryptedDataKeyDescription_) Create_EncryptedDataKeyDescription_(KeyProviderId _dafny.Sequence, KeyProviderInfo m_Wrappers.Option, BranchKeyId m_Wrappers.Option, BranchKeyVersion m_Wrappers.Option) EncryptedDataKeyDescription { + return EncryptedDataKeyDescription{EncryptedDataKeyDescription_EncryptedDataKeyDescription{KeyProviderId, KeyProviderInfo, BranchKeyId, BranchKeyVersion}} +} + +func (_this EncryptedDataKeyDescription) Is_EncryptedDataKeyDescription() bool { + _, ok := _this.Get_().(EncryptedDataKeyDescription_EncryptedDataKeyDescription) + return ok +} + +func (CompanionStruct_EncryptedDataKeyDescription_) Default() EncryptedDataKeyDescription { + return Companion_EncryptedDataKeyDescription_.Create_EncryptedDataKeyDescription_(_dafny.EmptySeq.SetString(), m_Wrappers.Companion_Option_.Default(), m_Wrappers.Companion_Option_.Default(), m_Wrappers.Companion_Option_.Default()) +} + +func (_this EncryptedDataKeyDescription) Dtor_keyProviderId() _dafny.Sequence { + return _this.Get_().(EncryptedDataKeyDescription_EncryptedDataKeyDescription).KeyProviderId +} + +func (_this EncryptedDataKeyDescription) Dtor_keyProviderInfo() m_Wrappers.Option { + return _this.Get_().(EncryptedDataKeyDescription_EncryptedDataKeyDescription).KeyProviderInfo +} + +func (_this EncryptedDataKeyDescription) Dtor_branchKeyId() m_Wrappers.Option { + return _this.Get_().(EncryptedDataKeyDescription_EncryptedDataKeyDescription).BranchKeyId +} + +func (_this EncryptedDataKeyDescription) Dtor_branchKeyVersion() m_Wrappers.Option { + return _this.Get_().(EncryptedDataKeyDescription_EncryptedDataKeyDescription).BranchKeyVersion +} + +func (_this EncryptedDataKeyDescription) String() string { + switch data := _this.Get_().(type) { + case nil: + return "null" + case EncryptedDataKeyDescription_EncryptedDataKeyDescription: + { + return "AwsCryptographyDbEncryptionSdkDynamoDbTypes.EncryptedDataKeyDescription.EncryptedDataKeyDescription" + "(" + _dafny.String(data.KeyProviderId) + ", " + _dafny.String(data.KeyProviderInfo) + ", " + _dafny.String(data.BranchKeyId) + ", " + _dafny.String(data.BranchKeyVersion) + ")" + } + default: + { + return "" + } + } +} + +func (_this EncryptedDataKeyDescription) Equals(other EncryptedDataKeyDescription) bool { + switch data1 := _this.Get_().(type) { + case EncryptedDataKeyDescription_EncryptedDataKeyDescription: + { + data2, ok := other.Get_().(EncryptedDataKeyDescription_EncryptedDataKeyDescription) + return ok && data1.KeyProviderId.Equals(data2.KeyProviderId) && data1.KeyProviderInfo.Equals(data2.KeyProviderInfo) && data1.BranchKeyId.Equals(data2.BranchKeyId) && data1.BranchKeyVersion.Equals(data2.BranchKeyVersion) + } + default: + { + return false // unexpected + } + } +} + +func (_this EncryptedDataKeyDescription) EqualsGeneric(other interface{}) bool { + typed, ok := other.(EncryptedDataKeyDescription) + return ok && _this.Equals(typed) +} + +func Type_EncryptedDataKeyDescription_() _dafny.TypeDescriptor { + return type_EncryptedDataKeyDescription_{} +} + +type type_EncryptedDataKeyDescription_ struct { +} + +func (_this type_EncryptedDataKeyDescription_) Default() interface{} { + return Companion_EncryptedDataKeyDescription_.Default() +} + +func (_this type_EncryptedDataKeyDescription_) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbTypes.EncryptedDataKeyDescription" +} +func (_this EncryptedDataKeyDescription) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = EncryptedDataKeyDescription{} + +// End of datatype EncryptedDataKeyDescription + +// Definition of datatype EncryptedPart +type EncryptedPart struct { + Data_EncryptedPart_ +} + +func (_this EncryptedPart) Get_() Data_EncryptedPart_ { + return _this.Data_EncryptedPart_ +} + +type Data_EncryptedPart_ interface { + isEncryptedPart() +} + +type CompanionStruct_EncryptedPart_ struct { +} + +var Companion_EncryptedPart_ = CompanionStruct_EncryptedPart_{} + +type EncryptedPart_EncryptedPart struct { + Name _dafny.Sequence + Prefix _dafny.Sequence +} + +func (EncryptedPart_EncryptedPart) isEncryptedPart() {} + +func (CompanionStruct_EncryptedPart_) Create_EncryptedPart_(Name _dafny.Sequence, Prefix _dafny.Sequence) EncryptedPart { + return EncryptedPart{EncryptedPart_EncryptedPart{Name, Prefix}} +} + +func (_this EncryptedPart) Is_EncryptedPart() bool { + _, ok := _this.Get_().(EncryptedPart_EncryptedPart) + return ok +} + +func (CompanionStruct_EncryptedPart_) Default() EncryptedPart { + return Companion_EncryptedPart_.Create_EncryptedPart_(_dafny.EmptySeq.SetString(), _dafny.EmptySeq.SetString()) +} + +func (_this EncryptedPart) Dtor_name() _dafny.Sequence { + return _this.Get_().(EncryptedPart_EncryptedPart).Name +} + +func (_this EncryptedPart) Dtor_prefix() _dafny.Sequence { + return _this.Get_().(EncryptedPart_EncryptedPart).Prefix +} + +func (_this EncryptedPart) String() string { + switch data := _this.Get_().(type) { + case nil: + return "null" + case EncryptedPart_EncryptedPart: + { + return "AwsCryptographyDbEncryptionSdkDynamoDbTypes.EncryptedPart.EncryptedPart" + "(" + _dafny.String(data.Name) + ", " + _dafny.String(data.Prefix) + ")" + } + default: + { + return "" + } + } +} + +func (_this EncryptedPart) Equals(other EncryptedPart) bool { + switch data1 := _this.Get_().(type) { + case EncryptedPart_EncryptedPart: + { + data2, ok := other.Get_().(EncryptedPart_EncryptedPart) + return ok && data1.Name.Equals(data2.Name) && data1.Prefix.Equals(data2.Prefix) + } + default: + { + return false // unexpected + } + } +} + +func (_this EncryptedPart) EqualsGeneric(other interface{}) bool { + typed, ok := other.(EncryptedPart) + return ok && _this.Equals(typed) +} + +func Type_EncryptedPart_() _dafny.TypeDescriptor { + return type_EncryptedPart_{} +} + +type type_EncryptedPart_ struct { +} + +func (_this type_EncryptedPart_) Default() interface{} { + return Companion_EncryptedPart_.Default() +} + +func (_this type_EncryptedPart_) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbTypes.EncryptedPart" +} +func (_this EncryptedPart) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = EncryptedPart{} + +// End of datatype EncryptedPart + +// Definition of class EncryptedPartsList +type EncryptedPartsList struct { +} + +func New_EncryptedPartsList_() *EncryptedPartsList { + _this := EncryptedPartsList{} + + return &_this +} + +type CompanionStruct_EncryptedPartsList_ struct { +} + +var Companion_EncryptedPartsList_ = CompanionStruct_EncryptedPartsList_{} + +func (*EncryptedPartsList) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbTypes.EncryptedPartsList" +} + +// End of class EncryptedPartsList + +func Type_EncryptedPartsList_() _dafny.TypeDescriptor { + return type_EncryptedPartsList_{} +} + +type type_EncryptedPartsList_ struct { +} + +func (_this type_EncryptedPartsList_) Default() interface{} { + return _dafny.EmptySeq +} + +func (_this type_EncryptedPartsList_) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbTypes.EncryptedPartsList" +} +func (_this *CompanionStruct_EncryptedPartsList_) Is_(__source _dafny.Sequence) bool { + var _0_x _dafny.Sequence = (__source) + _ = _0_x + return Companion_Default___.IsValid__EncryptedPartsList(_0_x) +} + +// Definition of datatype GetBranchKeyIdFromDdbKeyInput +type GetBranchKeyIdFromDdbKeyInput struct { + Data_GetBranchKeyIdFromDdbKeyInput_ +} + +func (_this GetBranchKeyIdFromDdbKeyInput) Get_() Data_GetBranchKeyIdFromDdbKeyInput_ { + return _this.Data_GetBranchKeyIdFromDdbKeyInput_ +} + +type Data_GetBranchKeyIdFromDdbKeyInput_ interface { + isGetBranchKeyIdFromDdbKeyInput() +} + +type CompanionStruct_GetBranchKeyIdFromDdbKeyInput_ struct { +} + +var Companion_GetBranchKeyIdFromDdbKeyInput_ = CompanionStruct_GetBranchKeyIdFromDdbKeyInput_{} + +type GetBranchKeyIdFromDdbKeyInput_GetBranchKeyIdFromDdbKeyInput struct { + DdbKey _dafny.Map +} + +func (GetBranchKeyIdFromDdbKeyInput_GetBranchKeyIdFromDdbKeyInput) isGetBranchKeyIdFromDdbKeyInput() { +} + +func (CompanionStruct_GetBranchKeyIdFromDdbKeyInput_) Create_GetBranchKeyIdFromDdbKeyInput_(DdbKey _dafny.Map) GetBranchKeyIdFromDdbKeyInput { + return GetBranchKeyIdFromDdbKeyInput{GetBranchKeyIdFromDdbKeyInput_GetBranchKeyIdFromDdbKeyInput{DdbKey}} +} + +func (_this GetBranchKeyIdFromDdbKeyInput) Is_GetBranchKeyIdFromDdbKeyInput() bool { + _, ok := _this.Get_().(GetBranchKeyIdFromDdbKeyInput_GetBranchKeyIdFromDdbKeyInput) + return ok +} + +func (CompanionStruct_GetBranchKeyIdFromDdbKeyInput_) Default() GetBranchKeyIdFromDdbKeyInput { + return Companion_GetBranchKeyIdFromDdbKeyInput_.Create_GetBranchKeyIdFromDdbKeyInput_(_dafny.EmptyMap) +} + +func (_this GetBranchKeyIdFromDdbKeyInput) Dtor_ddbKey() _dafny.Map { + return _this.Get_().(GetBranchKeyIdFromDdbKeyInput_GetBranchKeyIdFromDdbKeyInput).DdbKey +} + +func (_this GetBranchKeyIdFromDdbKeyInput) String() string { + switch data := _this.Get_().(type) { + case nil: + return "null" + case GetBranchKeyIdFromDdbKeyInput_GetBranchKeyIdFromDdbKeyInput: + { + return "AwsCryptographyDbEncryptionSdkDynamoDbTypes.GetBranchKeyIdFromDdbKeyInput.GetBranchKeyIdFromDdbKeyInput" + "(" + _dafny.String(data.DdbKey) + ")" + } + default: + { + return "" + } + } +} + +func (_this GetBranchKeyIdFromDdbKeyInput) Equals(other GetBranchKeyIdFromDdbKeyInput) bool { + switch data1 := _this.Get_().(type) { + case GetBranchKeyIdFromDdbKeyInput_GetBranchKeyIdFromDdbKeyInput: + { + data2, ok := other.Get_().(GetBranchKeyIdFromDdbKeyInput_GetBranchKeyIdFromDdbKeyInput) + return ok && data1.DdbKey.Equals(data2.DdbKey) + } + default: + { + return false // unexpected + } + } +} + +func (_this GetBranchKeyIdFromDdbKeyInput) EqualsGeneric(other interface{}) bool { + typed, ok := other.(GetBranchKeyIdFromDdbKeyInput) + return ok && _this.Equals(typed) +} + +func Type_GetBranchKeyIdFromDdbKeyInput_() _dafny.TypeDescriptor { + return type_GetBranchKeyIdFromDdbKeyInput_{} +} + +type type_GetBranchKeyIdFromDdbKeyInput_ struct { +} + +func (_this type_GetBranchKeyIdFromDdbKeyInput_) Default() interface{} { + return Companion_GetBranchKeyIdFromDdbKeyInput_.Default() +} + +func (_this type_GetBranchKeyIdFromDdbKeyInput_) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbTypes.GetBranchKeyIdFromDdbKeyInput" +} +func (_this GetBranchKeyIdFromDdbKeyInput) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = GetBranchKeyIdFromDdbKeyInput{} + +// End of datatype GetBranchKeyIdFromDdbKeyInput + +// Definition of datatype GetBranchKeyIdFromDdbKeyOutput +type GetBranchKeyIdFromDdbKeyOutput struct { + Data_GetBranchKeyIdFromDdbKeyOutput_ +} + +func (_this GetBranchKeyIdFromDdbKeyOutput) Get_() Data_GetBranchKeyIdFromDdbKeyOutput_ { + return _this.Data_GetBranchKeyIdFromDdbKeyOutput_ +} + +type Data_GetBranchKeyIdFromDdbKeyOutput_ interface { + isGetBranchKeyIdFromDdbKeyOutput() +} + +type CompanionStruct_GetBranchKeyIdFromDdbKeyOutput_ struct { +} + +var Companion_GetBranchKeyIdFromDdbKeyOutput_ = CompanionStruct_GetBranchKeyIdFromDdbKeyOutput_{} + +type GetBranchKeyIdFromDdbKeyOutput_GetBranchKeyIdFromDdbKeyOutput struct { + BranchKeyId _dafny.Sequence +} + +func (GetBranchKeyIdFromDdbKeyOutput_GetBranchKeyIdFromDdbKeyOutput) isGetBranchKeyIdFromDdbKeyOutput() { +} + +func (CompanionStruct_GetBranchKeyIdFromDdbKeyOutput_) Create_GetBranchKeyIdFromDdbKeyOutput_(BranchKeyId _dafny.Sequence) GetBranchKeyIdFromDdbKeyOutput { + return GetBranchKeyIdFromDdbKeyOutput{GetBranchKeyIdFromDdbKeyOutput_GetBranchKeyIdFromDdbKeyOutput{BranchKeyId}} +} + +func (_this GetBranchKeyIdFromDdbKeyOutput) Is_GetBranchKeyIdFromDdbKeyOutput() bool { + _, ok := _this.Get_().(GetBranchKeyIdFromDdbKeyOutput_GetBranchKeyIdFromDdbKeyOutput) + return ok +} + +func (CompanionStruct_GetBranchKeyIdFromDdbKeyOutput_) Default() GetBranchKeyIdFromDdbKeyOutput { + return Companion_GetBranchKeyIdFromDdbKeyOutput_.Create_GetBranchKeyIdFromDdbKeyOutput_(_dafny.EmptySeq.SetString()) +} + +func (_this GetBranchKeyIdFromDdbKeyOutput) Dtor_branchKeyId() _dafny.Sequence { + return _this.Get_().(GetBranchKeyIdFromDdbKeyOutput_GetBranchKeyIdFromDdbKeyOutput).BranchKeyId +} + +func (_this GetBranchKeyIdFromDdbKeyOutput) String() string { + switch data := _this.Get_().(type) { + case nil: + return "null" + case GetBranchKeyIdFromDdbKeyOutput_GetBranchKeyIdFromDdbKeyOutput: + { + return "AwsCryptographyDbEncryptionSdkDynamoDbTypes.GetBranchKeyIdFromDdbKeyOutput.GetBranchKeyIdFromDdbKeyOutput" + "(" + _dafny.String(data.BranchKeyId) + ")" + } + default: + { + return "" + } + } +} + +func (_this GetBranchKeyIdFromDdbKeyOutput) Equals(other GetBranchKeyIdFromDdbKeyOutput) bool { + switch data1 := _this.Get_().(type) { + case GetBranchKeyIdFromDdbKeyOutput_GetBranchKeyIdFromDdbKeyOutput: + { + data2, ok := other.Get_().(GetBranchKeyIdFromDdbKeyOutput_GetBranchKeyIdFromDdbKeyOutput) + return ok && data1.BranchKeyId.Equals(data2.BranchKeyId) + } + default: + { + return false // unexpected + } + } +} + +func (_this GetBranchKeyIdFromDdbKeyOutput) EqualsGeneric(other interface{}) bool { + typed, ok := other.(GetBranchKeyIdFromDdbKeyOutput) + return ok && _this.Equals(typed) +} + +func Type_GetBranchKeyIdFromDdbKeyOutput_() _dafny.TypeDescriptor { + return type_GetBranchKeyIdFromDdbKeyOutput_{} +} + +type type_GetBranchKeyIdFromDdbKeyOutput_ struct { +} + +func (_this type_GetBranchKeyIdFromDdbKeyOutput_) Default() interface{} { + return Companion_GetBranchKeyIdFromDdbKeyOutput_.Default() +} + +func (_this type_GetBranchKeyIdFromDdbKeyOutput_) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbTypes.GetBranchKeyIdFromDdbKeyOutput" +} +func (_this GetBranchKeyIdFromDdbKeyOutput) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = GetBranchKeyIdFromDdbKeyOutput{} + +// End of datatype GetBranchKeyIdFromDdbKeyOutput + +// Definition of datatype GetEncryptedDataKeyDescriptionInput +type GetEncryptedDataKeyDescriptionInput struct { + Data_GetEncryptedDataKeyDescriptionInput_ +} + +func (_this GetEncryptedDataKeyDescriptionInput) Get_() Data_GetEncryptedDataKeyDescriptionInput_ { + return _this.Data_GetEncryptedDataKeyDescriptionInput_ +} + +type Data_GetEncryptedDataKeyDescriptionInput_ interface { + isGetEncryptedDataKeyDescriptionInput() +} + +type CompanionStruct_GetEncryptedDataKeyDescriptionInput_ struct { +} + +var Companion_GetEncryptedDataKeyDescriptionInput_ = CompanionStruct_GetEncryptedDataKeyDescriptionInput_{} + +type GetEncryptedDataKeyDescriptionInput_GetEncryptedDataKeyDescriptionInput struct { + Input GetEncryptedDataKeyDescriptionUnion +} + +func (GetEncryptedDataKeyDescriptionInput_GetEncryptedDataKeyDescriptionInput) isGetEncryptedDataKeyDescriptionInput() { +} + +func (CompanionStruct_GetEncryptedDataKeyDescriptionInput_) Create_GetEncryptedDataKeyDescriptionInput_(Input GetEncryptedDataKeyDescriptionUnion) GetEncryptedDataKeyDescriptionInput { + return GetEncryptedDataKeyDescriptionInput{GetEncryptedDataKeyDescriptionInput_GetEncryptedDataKeyDescriptionInput{Input}} +} + +func (_this GetEncryptedDataKeyDescriptionInput) Is_GetEncryptedDataKeyDescriptionInput() bool { + _, ok := _this.Get_().(GetEncryptedDataKeyDescriptionInput_GetEncryptedDataKeyDescriptionInput) + return ok +} + +func (CompanionStruct_GetEncryptedDataKeyDescriptionInput_) Default() GetEncryptedDataKeyDescriptionInput { + return Companion_GetEncryptedDataKeyDescriptionInput_.Create_GetEncryptedDataKeyDescriptionInput_(Companion_GetEncryptedDataKeyDescriptionUnion_.Default()) +} + +func (_this GetEncryptedDataKeyDescriptionInput) Dtor_input() GetEncryptedDataKeyDescriptionUnion { + return _this.Get_().(GetEncryptedDataKeyDescriptionInput_GetEncryptedDataKeyDescriptionInput).Input +} + +func (_this GetEncryptedDataKeyDescriptionInput) String() string { + switch data := _this.Get_().(type) { + case nil: + return "null" + case GetEncryptedDataKeyDescriptionInput_GetEncryptedDataKeyDescriptionInput: + { + return "AwsCryptographyDbEncryptionSdkDynamoDbTypes.GetEncryptedDataKeyDescriptionInput.GetEncryptedDataKeyDescriptionInput" + "(" + _dafny.String(data.Input) + ")" + } + default: + { + return "" + } + } +} + +func (_this GetEncryptedDataKeyDescriptionInput) Equals(other GetEncryptedDataKeyDescriptionInput) bool { + switch data1 := _this.Get_().(type) { + case GetEncryptedDataKeyDescriptionInput_GetEncryptedDataKeyDescriptionInput: + { + data2, ok := other.Get_().(GetEncryptedDataKeyDescriptionInput_GetEncryptedDataKeyDescriptionInput) + return ok && data1.Input.Equals(data2.Input) + } + default: + { + return false // unexpected + } + } +} + +func (_this GetEncryptedDataKeyDescriptionInput) EqualsGeneric(other interface{}) bool { + typed, ok := other.(GetEncryptedDataKeyDescriptionInput) + return ok && _this.Equals(typed) +} + +func Type_GetEncryptedDataKeyDescriptionInput_() _dafny.TypeDescriptor { + return type_GetEncryptedDataKeyDescriptionInput_{} +} + +type type_GetEncryptedDataKeyDescriptionInput_ struct { +} + +func (_this type_GetEncryptedDataKeyDescriptionInput_) Default() interface{} { + return Companion_GetEncryptedDataKeyDescriptionInput_.Default() +} + +func (_this type_GetEncryptedDataKeyDescriptionInput_) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbTypes.GetEncryptedDataKeyDescriptionInput" +} +func (_this GetEncryptedDataKeyDescriptionInput) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = GetEncryptedDataKeyDescriptionInput{} + +// End of datatype GetEncryptedDataKeyDescriptionInput + +// Definition of datatype GetEncryptedDataKeyDescriptionOutput +type GetEncryptedDataKeyDescriptionOutput struct { + Data_GetEncryptedDataKeyDescriptionOutput_ +} + +func (_this GetEncryptedDataKeyDescriptionOutput) Get_() Data_GetEncryptedDataKeyDescriptionOutput_ { + return _this.Data_GetEncryptedDataKeyDescriptionOutput_ +} + +type Data_GetEncryptedDataKeyDescriptionOutput_ interface { + isGetEncryptedDataKeyDescriptionOutput() +} + +type CompanionStruct_GetEncryptedDataKeyDescriptionOutput_ struct { +} + +var Companion_GetEncryptedDataKeyDescriptionOutput_ = CompanionStruct_GetEncryptedDataKeyDescriptionOutput_{} + +type GetEncryptedDataKeyDescriptionOutput_GetEncryptedDataKeyDescriptionOutput struct { + EncryptedDataKeyDescriptionOutput _dafny.Sequence +} + +func (GetEncryptedDataKeyDescriptionOutput_GetEncryptedDataKeyDescriptionOutput) isGetEncryptedDataKeyDescriptionOutput() { +} + +func (CompanionStruct_GetEncryptedDataKeyDescriptionOutput_) Create_GetEncryptedDataKeyDescriptionOutput_(EncryptedDataKeyDescriptionOutput _dafny.Sequence) GetEncryptedDataKeyDescriptionOutput { + return GetEncryptedDataKeyDescriptionOutput{GetEncryptedDataKeyDescriptionOutput_GetEncryptedDataKeyDescriptionOutput{EncryptedDataKeyDescriptionOutput}} +} + +func (_this GetEncryptedDataKeyDescriptionOutput) Is_GetEncryptedDataKeyDescriptionOutput() bool { + _, ok := _this.Get_().(GetEncryptedDataKeyDescriptionOutput_GetEncryptedDataKeyDescriptionOutput) + return ok +} + +func (CompanionStruct_GetEncryptedDataKeyDescriptionOutput_) Default() GetEncryptedDataKeyDescriptionOutput { + return Companion_GetEncryptedDataKeyDescriptionOutput_.Create_GetEncryptedDataKeyDescriptionOutput_(_dafny.EmptySeq) +} + +func (_this GetEncryptedDataKeyDescriptionOutput) Dtor_EncryptedDataKeyDescriptionOutput() _dafny.Sequence { + return _this.Get_().(GetEncryptedDataKeyDescriptionOutput_GetEncryptedDataKeyDescriptionOutput).EncryptedDataKeyDescriptionOutput +} + +func (_this GetEncryptedDataKeyDescriptionOutput) String() string { + switch data := _this.Get_().(type) { + case nil: + return "null" + case GetEncryptedDataKeyDescriptionOutput_GetEncryptedDataKeyDescriptionOutput: + { + return "AwsCryptographyDbEncryptionSdkDynamoDbTypes.GetEncryptedDataKeyDescriptionOutput.GetEncryptedDataKeyDescriptionOutput" + "(" + _dafny.String(data.EncryptedDataKeyDescriptionOutput) + ")" + } + default: + { + return "" + } + } +} + +func (_this GetEncryptedDataKeyDescriptionOutput) Equals(other GetEncryptedDataKeyDescriptionOutput) bool { + switch data1 := _this.Get_().(type) { + case GetEncryptedDataKeyDescriptionOutput_GetEncryptedDataKeyDescriptionOutput: + { + data2, ok := other.Get_().(GetEncryptedDataKeyDescriptionOutput_GetEncryptedDataKeyDescriptionOutput) + return ok && data1.EncryptedDataKeyDescriptionOutput.Equals(data2.EncryptedDataKeyDescriptionOutput) + } + default: + { + return false // unexpected + } + } +} + +func (_this GetEncryptedDataKeyDescriptionOutput) EqualsGeneric(other interface{}) bool { + typed, ok := other.(GetEncryptedDataKeyDescriptionOutput) + return ok && _this.Equals(typed) +} + +func Type_GetEncryptedDataKeyDescriptionOutput_() _dafny.TypeDescriptor { + return type_GetEncryptedDataKeyDescriptionOutput_{} +} + +type type_GetEncryptedDataKeyDescriptionOutput_ struct { +} + +func (_this type_GetEncryptedDataKeyDescriptionOutput_) Default() interface{} { + return Companion_GetEncryptedDataKeyDescriptionOutput_.Default() +} + +func (_this type_GetEncryptedDataKeyDescriptionOutput_) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbTypes.GetEncryptedDataKeyDescriptionOutput" +} +func (_this GetEncryptedDataKeyDescriptionOutput) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = GetEncryptedDataKeyDescriptionOutput{} + +// End of datatype GetEncryptedDataKeyDescriptionOutput + +// Definition of datatype GetEncryptedDataKeyDescriptionUnion +type GetEncryptedDataKeyDescriptionUnion struct { + Data_GetEncryptedDataKeyDescriptionUnion_ +} + +func (_this GetEncryptedDataKeyDescriptionUnion) Get_() Data_GetEncryptedDataKeyDescriptionUnion_ { + return _this.Data_GetEncryptedDataKeyDescriptionUnion_ +} + +type Data_GetEncryptedDataKeyDescriptionUnion_ interface { + isGetEncryptedDataKeyDescriptionUnion() +} + +type CompanionStruct_GetEncryptedDataKeyDescriptionUnion_ struct { +} + +var Companion_GetEncryptedDataKeyDescriptionUnion_ = CompanionStruct_GetEncryptedDataKeyDescriptionUnion_{} + +type GetEncryptedDataKeyDescriptionUnion_header struct { + Header _dafny.Sequence +} + +func (GetEncryptedDataKeyDescriptionUnion_header) isGetEncryptedDataKeyDescriptionUnion() {} + +func (CompanionStruct_GetEncryptedDataKeyDescriptionUnion_) Create_header_(Header _dafny.Sequence) GetEncryptedDataKeyDescriptionUnion { + return GetEncryptedDataKeyDescriptionUnion{GetEncryptedDataKeyDescriptionUnion_header{Header}} +} + +func (_this GetEncryptedDataKeyDescriptionUnion) Is_header() bool { + _, ok := _this.Get_().(GetEncryptedDataKeyDescriptionUnion_header) + return ok +} + +type GetEncryptedDataKeyDescriptionUnion_item struct { + Item _dafny.Map +} + +func (GetEncryptedDataKeyDescriptionUnion_item) isGetEncryptedDataKeyDescriptionUnion() {} + +func (CompanionStruct_GetEncryptedDataKeyDescriptionUnion_) Create_item_(Item _dafny.Map) GetEncryptedDataKeyDescriptionUnion { + return GetEncryptedDataKeyDescriptionUnion{GetEncryptedDataKeyDescriptionUnion_item{Item}} +} + +func (_this GetEncryptedDataKeyDescriptionUnion) Is_item() bool { + _, ok := _this.Get_().(GetEncryptedDataKeyDescriptionUnion_item) + return ok +} + +func (CompanionStruct_GetEncryptedDataKeyDescriptionUnion_) Default() GetEncryptedDataKeyDescriptionUnion { + return Companion_GetEncryptedDataKeyDescriptionUnion_.Create_header_(_dafny.EmptySeq) +} + +func (_this GetEncryptedDataKeyDescriptionUnion) Dtor_header() _dafny.Sequence { + return _this.Get_().(GetEncryptedDataKeyDescriptionUnion_header).Header +} + +func (_this GetEncryptedDataKeyDescriptionUnion) Dtor_item() _dafny.Map { + return _this.Get_().(GetEncryptedDataKeyDescriptionUnion_item).Item +} + +func (_this GetEncryptedDataKeyDescriptionUnion) String() string { + switch data := _this.Get_().(type) { + case nil: + return "null" + case GetEncryptedDataKeyDescriptionUnion_header: + { + return "AwsCryptographyDbEncryptionSdkDynamoDbTypes.GetEncryptedDataKeyDescriptionUnion.header" + "(" + _dafny.String(data.Header) + ")" + } + case GetEncryptedDataKeyDescriptionUnion_item: + { + return "AwsCryptographyDbEncryptionSdkDynamoDbTypes.GetEncryptedDataKeyDescriptionUnion.item" + "(" + _dafny.String(data.Item) + ")" + } + default: + { + return "" + } + } +} + +func (_this GetEncryptedDataKeyDescriptionUnion) Equals(other GetEncryptedDataKeyDescriptionUnion) bool { + switch data1 := _this.Get_().(type) { + case GetEncryptedDataKeyDescriptionUnion_header: + { + data2, ok := other.Get_().(GetEncryptedDataKeyDescriptionUnion_header) + return ok && data1.Header.Equals(data2.Header) + } + case GetEncryptedDataKeyDescriptionUnion_item: + { + data2, ok := other.Get_().(GetEncryptedDataKeyDescriptionUnion_item) + return ok && data1.Item.Equals(data2.Item) + } + default: + { + return false // unexpected + } + } +} + +func (_this GetEncryptedDataKeyDescriptionUnion) EqualsGeneric(other interface{}) bool { + typed, ok := other.(GetEncryptedDataKeyDescriptionUnion) + return ok && _this.Equals(typed) +} + +func Type_GetEncryptedDataKeyDescriptionUnion_() _dafny.TypeDescriptor { + return type_GetEncryptedDataKeyDescriptionUnion_{} +} + +type type_GetEncryptedDataKeyDescriptionUnion_ struct { +} + +func (_this type_GetEncryptedDataKeyDescriptionUnion_) Default() interface{} { + return Companion_GetEncryptedDataKeyDescriptionUnion_.Default() +} + +func (_this type_GetEncryptedDataKeyDescriptionUnion_) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbTypes.GetEncryptedDataKeyDescriptionUnion" +} +func (_this GetEncryptedDataKeyDescriptionUnion) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = GetEncryptedDataKeyDescriptionUnion{} + +// End of datatype GetEncryptedDataKeyDescriptionUnion + +// Definition of datatype GetPrefix +type GetPrefix struct { + Data_GetPrefix_ +} + +func (_this GetPrefix) Get_() Data_GetPrefix_ { + return _this.Data_GetPrefix_ +} + +type Data_GetPrefix_ interface { + isGetPrefix() +} + +type CompanionStruct_GetPrefix_ struct { +} + +var Companion_GetPrefix_ = CompanionStruct_GetPrefix_{} + +type GetPrefix_GetPrefix struct { + Length int32 +} + +func (GetPrefix_GetPrefix) isGetPrefix() {} + +func (CompanionStruct_GetPrefix_) Create_GetPrefix_(Length int32) GetPrefix { + return GetPrefix{GetPrefix_GetPrefix{Length}} +} + +func (_this GetPrefix) Is_GetPrefix() bool { + _, ok := _this.Get_().(GetPrefix_GetPrefix) + return ok +} + +func (CompanionStruct_GetPrefix_) Default() GetPrefix { + return Companion_GetPrefix_.Create_GetPrefix_(int32(0)) +} + +func (_this GetPrefix) Dtor_length() int32 { + return _this.Get_().(GetPrefix_GetPrefix).Length +} + +func (_this GetPrefix) String() string { + switch data := _this.Get_().(type) { + case nil: + return "null" + case GetPrefix_GetPrefix: + { + return "AwsCryptographyDbEncryptionSdkDynamoDbTypes.GetPrefix.GetPrefix" + "(" + _dafny.String(data.Length) + ")" + } + default: + { + return "" + } + } +} + +func (_this GetPrefix) Equals(other GetPrefix) bool { + switch data1 := _this.Get_().(type) { + case GetPrefix_GetPrefix: + { + data2, ok := other.Get_().(GetPrefix_GetPrefix) + return ok && data1.Length == data2.Length + } + default: + { + return false // unexpected + } + } +} + +func (_this GetPrefix) EqualsGeneric(other interface{}) bool { + typed, ok := other.(GetPrefix) + return ok && _this.Equals(typed) +} + +func Type_GetPrefix_() _dafny.TypeDescriptor { + return type_GetPrefix_{} +} + +type type_GetPrefix_ struct { +} + +func (_this type_GetPrefix_) Default() interface{} { + return Companion_GetPrefix_.Default() +} + +func (_this type_GetPrefix_) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbTypes.GetPrefix" +} +func (_this GetPrefix) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = GetPrefix{} + +// End of datatype GetPrefix + +// Definition of datatype GetSegment +type GetSegment struct { + Data_GetSegment_ +} + +func (_this GetSegment) Get_() Data_GetSegment_ { + return _this.Data_GetSegment_ +} + +type Data_GetSegment_ interface { + isGetSegment() +} + +type CompanionStruct_GetSegment_ struct { +} + +var Companion_GetSegment_ = CompanionStruct_GetSegment_{} + +type GetSegment_GetSegment struct { + Split _dafny.Sequence + Index int32 +} + +func (GetSegment_GetSegment) isGetSegment() {} + +func (CompanionStruct_GetSegment_) Create_GetSegment_(Split _dafny.Sequence, Index int32) GetSegment { + return GetSegment{GetSegment_GetSegment{Split, Index}} +} + +func (_this GetSegment) Is_GetSegment() bool { + _, ok := _this.Get_().(GetSegment_GetSegment) + return ok +} + +func (CompanionStruct_GetSegment_) Default() GetSegment { + return Companion_GetSegment_.Create_GetSegment_(_dafny.EmptySeq.SetString(), int32(0)) +} + +func (_this GetSegment) Dtor_split() _dafny.Sequence { + return _this.Get_().(GetSegment_GetSegment).Split +} + +func (_this GetSegment) Dtor_index() int32 { + return _this.Get_().(GetSegment_GetSegment).Index +} + +func (_this GetSegment) String() string { + switch data := _this.Get_().(type) { + case nil: + return "null" + case GetSegment_GetSegment: + { + return "AwsCryptographyDbEncryptionSdkDynamoDbTypes.GetSegment.GetSegment" + "(" + _dafny.String(data.Split) + ", " + _dafny.String(data.Index) + ")" + } + default: + { + return "" + } + } +} + +func (_this GetSegment) Equals(other GetSegment) bool { + switch data1 := _this.Get_().(type) { + case GetSegment_GetSegment: + { + data2, ok := other.Get_().(GetSegment_GetSegment) + return ok && data1.Split.Equals(data2.Split) && data1.Index == data2.Index + } + default: + { + return false // unexpected + } + } +} + +func (_this GetSegment) EqualsGeneric(other interface{}) bool { + typed, ok := other.(GetSegment) + return ok && _this.Equals(typed) +} + +func Type_GetSegment_() _dafny.TypeDescriptor { + return type_GetSegment_{} +} + +type type_GetSegment_ struct { +} + +func (_this type_GetSegment_) Default() interface{} { + return Companion_GetSegment_.Default() +} + +func (_this type_GetSegment_) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbTypes.GetSegment" +} +func (_this GetSegment) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = GetSegment{} + +// End of datatype GetSegment + +// Definition of datatype GetSegments +type GetSegments struct { + Data_GetSegments_ +} + +func (_this GetSegments) Get_() Data_GetSegments_ { + return _this.Data_GetSegments_ +} + +type Data_GetSegments_ interface { + isGetSegments() +} + +type CompanionStruct_GetSegments_ struct { +} + +var Companion_GetSegments_ = CompanionStruct_GetSegments_{} + +type GetSegments_GetSegments struct { + Split _dafny.Sequence + Low int32 + High int32 +} + +func (GetSegments_GetSegments) isGetSegments() {} + +func (CompanionStruct_GetSegments_) Create_GetSegments_(Split _dafny.Sequence, Low int32, High int32) GetSegments { + return GetSegments{GetSegments_GetSegments{Split, Low, High}} +} + +func (_this GetSegments) Is_GetSegments() bool { + _, ok := _this.Get_().(GetSegments_GetSegments) + return ok +} + +func (CompanionStruct_GetSegments_) Default() GetSegments { + return Companion_GetSegments_.Create_GetSegments_(_dafny.EmptySeq.SetString(), int32(0), int32(0)) +} + +func (_this GetSegments) Dtor_split() _dafny.Sequence { + return _this.Get_().(GetSegments_GetSegments).Split +} + +func (_this GetSegments) Dtor_low() int32 { + return _this.Get_().(GetSegments_GetSegments).Low +} + +func (_this GetSegments) Dtor_high() int32 { + return _this.Get_().(GetSegments_GetSegments).High +} + +func (_this GetSegments) String() string { + switch data := _this.Get_().(type) { + case nil: + return "null" + case GetSegments_GetSegments: + { + return "AwsCryptographyDbEncryptionSdkDynamoDbTypes.GetSegments.GetSegments" + "(" + _dafny.String(data.Split) + ", " + _dafny.String(data.Low) + ", " + _dafny.String(data.High) + ")" + } + default: + { + return "" + } + } +} + +func (_this GetSegments) Equals(other GetSegments) bool { + switch data1 := _this.Get_().(type) { + case GetSegments_GetSegments: + { + data2, ok := other.Get_().(GetSegments_GetSegments) + return ok && data1.Split.Equals(data2.Split) && data1.Low == data2.Low && data1.High == data2.High + } + default: + { + return false // unexpected + } + } +} + +func (_this GetSegments) EqualsGeneric(other interface{}) bool { + typed, ok := other.(GetSegments) + return ok && _this.Equals(typed) +} + +func Type_GetSegments_() _dafny.TypeDescriptor { + return type_GetSegments_{} +} + +type type_GetSegments_ struct { +} + +func (_this type_GetSegments_) Default() interface{} { + return Companion_GetSegments_.Default() +} + +func (_this type_GetSegments_) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbTypes.GetSegments" +} +func (_this GetSegments) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = GetSegments{} + +// End of datatype GetSegments + +// Definition of datatype GetSubstring +type GetSubstring struct { + Data_GetSubstring_ +} + +func (_this GetSubstring) Get_() Data_GetSubstring_ { + return _this.Data_GetSubstring_ +} + +type Data_GetSubstring_ interface { + isGetSubstring() +} + +type CompanionStruct_GetSubstring_ struct { +} + +var Companion_GetSubstring_ = CompanionStruct_GetSubstring_{} + +type GetSubstring_GetSubstring struct { + Low int32 + High int32 +} + +func (GetSubstring_GetSubstring) isGetSubstring() {} + +func (CompanionStruct_GetSubstring_) Create_GetSubstring_(Low int32, High int32) GetSubstring { + return GetSubstring{GetSubstring_GetSubstring{Low, High}} +} + +func (_this GetSubstring) Is_GetSubstring() bool { + _, ok := _this.Get_().(GetSubstring_GetSubstring) + return ok +} + +func (CompanionStruct_GetSubstring_) Default() GetSubstring { + return Companion_GetSubstring_.Create_GetSubstring_(int32(0), int32(0)) +} + +func (_this GetSubstring) Dtor_low() int32 { + return _this.Get_().(GetSubstring_GetSubstring).Low +} + +func (_this GetSubstring) Dtor_high() int32 { + return _this.Get_().(GetSubstring_GetSubstring).High +} + +func (_this GetSubstring) String() string { + switch data := _this.Get_().(type) { + case nil: + return "null" + case GetSubstring_GetSubstring: + { + return "AwsCryptographyDbEncryptionSdkDynamoDbTypes.GetSubstring.GetSubstring" + "(" + _dafny.String(data.Low) + ", " + _dafny.String(data.High) + ")" + } + default: + { + return "" + } + } +} + +func (_this GetSubstring) Equals(other GetSubstring) bool { + switch data1 := _this.Get_().(type) { + case GetSubstring_GetSubstring: + { + data2, ok := other.Get_().(GetSubstring_GetSubstring) + return ok && data1.Low == data2.Low && data1.High == data2.High + } + default: + { + return false // unexpected + } + } +} + +func (_this GetSubstring) EqualsGeneric(other interface{}) bool { + typed, ok := other.(GetSubstring) + return ok && _this.Equals(typed) +} + +func Type_GetSubstring_() _dafny.TypeDescriptor { + return type_GetSubstring_{} +} + +type type_GetSubstring_ struct { +} + +func (_this type_GetSubstring_) Default() interface{} { + return Companion_GetSubstring_.Default() +} + +func (_this type_GetSubstring_) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbTypes.GetSubstring" +} +func (_this GetSubstring) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = GetSubstring{} + +// End of datatype GetSubstring + +// Definition of datatype GetSuffix +type GetSuffix struct { + Data_GetSuffix_ +} + +func (_this GetSuffix) Get_() Data_GetSuffix_ { + return _this.Data_GetSuffix_ +} + +type Data_GetSuffix_ interface { + isGetSuffix() +} + +type CompanionStruct_GetSuffix_ struct { +} + +var Companion_GetSuffix_ = CompanionStruct_GetSuffix_{} + +type GetSuffix_GetSuffix struct { + Length int32 +} + +func (GetSuffix_GetSuffix) isGetSuffix() {} + +func (CompanionStruct_GetSuffix_) Create_GetSuffix_(Length int32) GetSuffix { + return GetSuffix{GetSuffix_GetSuffix{Length}} +} + +func (_this GetSuffix) Is_GetSuffix() bool { + _, ok := _this.Get_().(GetSuffix_GetSuffix) + return ok +} + +func (CompanionStruct_GetSuffix_) Default() GetSuffix { + return Companion_GetSuffix_.Create_GetSuffix_(int32(0)) +} + +func (_this GetSuffix) Dtor_length() int32 { + return _this.Get_().(GetSuffix_GetSuffix).Length +} + +func (_this GetSuffix) String() string { + switch data := _this.Get_().(type) { + case nil: + return "null" + case GetSuffix_GetSuffix: + { + return "AwsCryptographyDbEncryptionSdkDynamoDbTypes.GetSuffix.GetSuffix" + "(" + _dafny.String(data.Length) + ")" + } + default: + { + return "" + } + } +} + +func (_this GetSuffix) Equals(other GetSuffix) bool { + switch data1 := _this.Get_().(type) { + case GetSuffix_GetSuffix: + { + data2, ok := other.Get_().(GetSuffix_GetSuffix) + return ok && data1.Length == data2.Length + } + default: + { + return false // unexpected + } + } +} + +func (_this GetSuffix) EqualsGeneric(other interface{}) bool { + typed, ok := other.(GetSuffix) + return ok && _this.Equals(typed) +} + +func Type_GetSuffix_() _dafny.TypeDescriptor { + return type_GetSuffix_{} +} + +type type_GetSuffix_ struct { +} + +func (_this type_GetSuffix_) Default() interface{} { + return Companion_GetSuffix_.Default() +} + +func (_this type_GetSuffix_) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbTypes.GetSuffix" +} +func (_this GetSuffix) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = GetSuffix{} + +// End of datatype GetSuffix + +// Definition of datatype Insert +type Insert struct { + Data_Insert_ +} + +func (_this Insert) Get_() Data_Insert_ { + return _this.Data_Insert_ +} + +type Data_Insert_ interface { + isInsert() +} + +type CompanionStruct_Insert_ struct { +} + +var Companion_Insert_ = CompanionStruct_Insert_{} + +type Insert_Insert struct { + Literal _dafny.Sequence +} + +func (Insert_Insert) isInsert() {} + +func (CompanionStruct_Insert_) Create_Insert_(Literal _dafny.Sequence) Insert { + return Insert{Insert_Insert{Literal}} +} + +func (_this Insert) Is_Insert() bool { + _, ok := _this.Get_().(Insert_Insert) + return ok +} + +func (CompanionStruct_Insert_) Default() Insert { + return Companion_Insert_.Create_Insert_(_dafny.EmptySeq.SetString()) +} + +func (_this Insert) Dtor_literal() _dafny.Sequence { + return _this.Get_().(Insert_Insert).Literal +} + +func (_this Insert) String() string { + switch data := _this.Get_().(type) { + case nil: + return "null" + case Insert_Insert: + { + return "AwsCryptographyDbEncryptionSdkDynamoDbTypes.Insert.Insert" + "(" + _dafny.String(data.Literal) + ")" + } + default: + { + return "" + } + } +} + +func (_this Insert) Equals(other Insert) bool { + switch data1 := _this.Get_().(type) { + case Insert_Insert: + { + data2, ok := other.Get_().(Insert_Insert) + return ok && data1.Literal.Equals(data2.Literal) + } + default: + { + return false // unexpected + } + } +} + +func (_this Insert) EqualsGeneric(other interface{}) bool { + typed, ok := other.(Insert) + return ok && _this.Equals(typed) +} + +func Type_Insert_() _dafny.TypeDescriptor { + return type_Insert_{} +} + +type type_Insert_ struct { +} + +func (_this type_Insert_) Default() interface{} { + return Companion_Insert_.Default() +} + +func (_this type_Insert_) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbTypes.Insert" +} +func (_this Insert) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = Insert{} + +// End of datatype Insert + +// Definition of class ILegacyDynamoDbEncryptorCallHistory +type ILegacyDynamoDbEncryptorCallHistory struct { + dummy byte +} + +func New_ILegacyDynamoDbEncryptorCallHistory_() *ILegacyDynamoDbEncryptorCallHistory { + _this := ILegacyDynamoDbEncryptorCallHistory{} + + return &_this +} + +type CompanionStruct_ILegacyDynamoDbEncryptorCallHistory_ struct { +} + +var Companion_ILegacyDynamoDbEncryptorCallHistory_ = CompanionStruct_ILegacyDynamoDbEncryptorCallHistory_{} + +func (_this *ILegacyDynamoDbEncryptorCallHistory) Equals(other *ILegacyDynamoDbEncryptorCallHistory) bool { + return _this == other +} + +func (_this *ILegacyDynamoDbEncryptorCallHistory) EqualsGeneric(x interface{}) bool { + other, ok := x.(*ILegacyDynamoDbEncryptorCallHistory) + return ok && _this.Equals(other) +} + +func (*ILegacyDynamoDbEncryptorCallHistory) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbTypes.ILegacyDynamoDbEncryptorCallHistory" +} + +func Type_ILegacyDynamoDbEncryptorCallHistory_() _dafny.TypeDescriptor { + return type_ILegacyDynamoDbEncryptorCallHistory_{} +} + +type type_ILegacyDynamoDbEncryptorCallHistory_ struct { +} + +func (_this type_ILegacyDynamoDbEncryptorCallHistory_) Default() interface{} { + return (*ILegacyDynamoDbEncryptorCallHistory)(nil) +} + +func (_this type_ILegacyDynamoDbEncryptorCallHistory_) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbTypes.ILegacyDynamoDbEncryptorCallHistory" +} +func (_this *ILegacyDynamoDbEncryptorCallHistory) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = &ILegacyDynamoDbEncryptorCallHistory{} + +// End of class ILegacyDynamoDbEncryptorCallHistory + +// Definition of trait ILegacyDynamoDbEncryptor +type ILegacyDynamoDbEncryptor interface { + String() string +} +type CompanionStruct_ILegacyDynamoDbEncryptor_ struct { + TraitID_ *_dafny.TraitID +} + +var Companion_ILegacyDynamoDbEncryptor_ = CompanionStruct_ILegacyDynamoDbEncryptor_{ + TraitID_: &_dafny.TraitID{}, +} + +func (CompanionStruct_ILegacyDynamoDbEncryptor_) CastTo_(x interface{}) ILegacyDynamoDbEncryptor { + var t ILegacyDynamoDbEncryptor + t, _ = x.(ILegacyDynamoDbEncryptor) + return t +} + +// End of trait ILegacyDynamoDbEncryptor + +// Definition of datatype LegacyOverride +type LegacyOverride struct { + Data_LegacyOverride_ +} + +func (_this LegacyOverride) Get_() Data_LegacyOverride_ { + return _this.Data_LegacyOverride_ +} + +type Data_LegacyOverride_ interface { + isLegacyOverride() +} + +type CompanionStruct_LegacyOverride_ struct { +} + +var Companion_LegacyOverride_ = CompanionStruct_LegacyOverride_{} + +type LegacyOverride_LegacyOverride struct { + Policy LegacyPolicy + Encryptor ILegacyDynamoDbEncryptor + AttributeActionsOnEncrypt _dafny.Map + DefaultAttributeFlag m_Wrappers.Option +} + +func (LegacyOverride_LegacyOverride) isLegacyOverride() {} + +func (CompanionStruct_LegacyOverride_) Create_LegacyOverride_(Policy LegacyPolicy, Encryptor ILegacyDynamoDbEncryptor, AttributeActionsOnEncrypt _dafny.Map, DefaultAttributeFlag m_Wrappers.Option) LegacyOverride { + return LegacyOverride{LegacyOverride_LegacyOverride{Policy, Encryptor, AttributeActionsOnEncrypt, DefaultAttributeFlag}} +} + +func (_this LegacyOverride) Is_LegacyOverride() bool { + _, ok := _this.Get_().(LegacyOverride_LegacyOverride) + return ok +} + +func (CompanionStruct_LegacyOverride_) Default() LegacyOverride { + return Companion_LegacyOverride_.Create_LegacyOverride_(Companion_LegacyPolicy_.Default(), (ILegacyDynamoDbEncryptor)(nil), _dafny.EmptyMap, m_Wrappers.Companion_Option_.Default()) +} + +func (_this LegacyOverride) Dtor_policy() LegacyPolicy { + return _this.Get_().(LegacyOverride_LegacyOverride).Policy +} + +func (_this LegacyOverride) Dtor_encryptor() ILegacyDynamoDbEncryptor { + return _this.Get_().(LegacyOverride_LegacyOverride).Encryptor +} + +func (_this LegacyOverride) Dtor_attributeActionsOnEncrypt() _dafny.Map { + return _this.Get_().(LegacyOverride_LegacyOverride).AttributeActionsOnEncrypt +} + +func (_this LegacyOverride) Dtor_defaultAttributeFlag() m_Wrappers.Option { + return _this.Get_().(LegacyOverride_LegacyOverride).DefaultAttributeFlag +} + +func (_this LegacyOverride) String() string { + switch data := _this.Get_().(type) { + case nil: + return "null" + case LegacyOverride_LegacyOverride: + { + return "AwsCryptographyDbEncryptionSdkDynamoDbTypes.LegacyOverride.LegacyOverride" + "(" + _dafny.String(data.Policy) + ", " + _dafny.String(data.Encryptor) + ", " + _dafny.String(data.AttributeActionsOnEncrypt) + ", " + _dafny.String(data.DefaultAttributeFlag) + ")" + } + default: + { + return "" + } + } +} + +func (_this LegacyOverride) Equals(other LegacyOverride) bool { + switch data1 := _this.Get_().(type) { + case LegacyOverride_LegacyOverride: + { + data2, ok := other.Get_().(LegacyOverride_LegacyOverride) + return ok && data1.Policy.Equals(data2.Policy) && _dafny.AreEqual(data1.Encryptor, data2.Encryptor) && data1.AttributeActionsOnEncrypt.Equals(data2.AttributeActionsOnEncrypt) && data1.DefaultAttributeFlag.Equals(data2.DefaultAttributeFlag) + } + default: + { + return false // unexpected + } + } +} + +func (_this LegacyOverride) EqualsGeneric(other interface{}) bool { + typed, ok := other.(LegacyOverride) + return ok && _this.Equals(typed) +} + +func Type_LegacyOverride_() _dafny.TypeDescriptor { + return type_LegacyOverride_{} +} + +type type_LegacyOverride_ struct { +} + +func (_this type_LegacyOverride_) Default() interface{} { + return Companion_LegacyOverride_.Default() +} + +func (_this type_LegacyOverride_) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbTypes.LegacyOverride" +} +func (_this LegacyOverride) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = LegacyOverride{} + +// End of datatype LegacyOverride + +// Definition of datatype LegacyPolicy +type LegacyPolicy struct { + Data_LegacyPolicy_ +} + +func (_this LegacyPolicy) Get_() Data_LegacyPolicy_ { + return _this.Data_LegacyPolicy_ +} + +type Data_LegacyPolicy_ interface { + isLegacyPolicy() +} + +type CompanionStruct_LegacyPolicy_ struct { +} + +var Companion_LegacyPolicy_ = CompanionStruct_LegacyPolicy_{} + +type LegacyPolicy_FORCE__LEGACY__ENCRYPT__ALLOW__LEGACY__DECRYPT struct { +} + +func (LegacyPolicy_FORCE__LEGACY__ENCRYPT__ALLOW__LEGACY__DECRYPT) isLegacyPolicy() {} + +func (CompanionStruct_LegacyPolicy_) Create_FORCE__LEGACY__ENCRYPT__ALLOW__LEGACY__DECRYPT_() LegacyPolicy { + return LegacyPolicy{LegacyPolicy_FORCE__LEGACY__ENCRYPT__ALLOW__LEGACY__DECRYPT{}} +} + +func (_this LegacyPolicy) Is_FORCE__LEGACY__ENCRYPT__ALLOW__LEGACY__DECRYPT() bool { + _, ok := _this.Get_().(LegacyPolicy_FORCE__LEGACY__ENCRYPT__ALLOW__LEGACY__DECRYPT) + return ok +} + +type LegacyPolicy_FORBID__LEGACY__ENCRYPT__ALLOW__LEGACY__DECRYPT struct { +} + +func (LegacyPolicy_FORBID__LEGACY__ENCRYPT__ALLOW__LEGACY__DECRYPT) isLegacyPolicy() {} + +func (CompanionStruct_LegacyPolicy_) Create_FORBID__LEGACY__ENCRYPT__ALLOW__LEGACY__DECRYPT_() LegacyPolicy { + return LegacyPolicy{LegacyPolicy_FORBID__LEGACY__ENCRYPT__ALLOW__LEGACY__DECRYPT{}} +} + +func (_this LegacyPolicy) Is_FORBID__LEGACY__ENCRYPT__ALLOW__LEGACY__DECRYPT() bool { + _, ok := _this.Get_().(LegacyPolicy_FORBID__LEGACY__ENCRYPT__ALLOW__LEGACY__DECRYPT) + return ok +} + +type LegacyPolicy_FORBID__LEGACY__ENCRYPT__FORBID__LEGACY__DECRYPT struct { +} + +func (LegacyPolicy_FORBID__LEGACY__ENCRYPT__FORBID__LEGACY__DECRYPT) isLegacyPolicy() {} + +func (CompanionStruct_LegacyPolicy_) Create_FORBID__LEGACY__ENCRYPT__FORBID__LEGACY__DECRYPT_() LegacyPolicy { + return LegacyPolicy{LegacyPolicy_FORBID__LEGACY__ENCRYPT__FORBID__LEGACY__DECRYPT{}} +} + +func (_this LegacyPolicy) Is_FORBID__LEGACY__ENCRYPT__FORBID__LEGACY__DECRYPT() bool { + _, ok := _this.Get_().(LegacyPolicy_FORBID__LEGACY__ENCRYPT__FORBID__LEGACY__DECRYPT) + return ok +} + +func (CompanionStruct_LegacyPolicy_) Default() LegacyPolicy { + return Companion_LegacyPolicy_.Create_FORCE__LEGACY__ENCRYPT__ALLOW__LEGACY__DECRYPT_() +} + +func (_ CompanionStruct_LegacyPolicy_) AllSingletonConstructors() _dafny.Iterator { + i := -1 + return func() (interface{}, bool) { + i++ + switch i { + case 0: + return Companion_LegacyPolicy_.Create_FORCE__LEGACY__ENCRYPT__ALLOW__LEGACY__DECRYPT_(), true + case 1: + return Companion_LegacyPolicy_.Create_FORBID__LEGACY__ENCRYPT__ALLOW__LEGACY__DECRYPT_(), true + case 2: + return Companion_LegacyPolicy_.Create_FORBID__LEGACY__ENCRYPT__FORBID__LEGACY__DECRYPT_(), true + default: + return LegacyPolicy{}, false + } + } +} + +func (_this LegacyPolicy) String() string { + switch _this.Get_().(type) { + case nil: + return "null" + case LegacyPolicy_FORCE__LEGACY__ENCRYPT__ALLOW__LEGACY__DECRYPT: + { + return "AwsCryptographyDbEncryptionSdkDynamoDbTypes.LegacyPolicy.FORCE_LEGACY_ENCRYPT_ALLOW_LEGACY_DECRYPT" + } + case LegacyPolicy_FORBID__LEGACY__ENCRYPT__ALLOW__LEGACY__DECRYPT: + { + return "AwsCryptographyDbEncryptionSdkDynamoDbTypes.LegacyPolicy.FORBID_LEGACY_ENCRYPT_ALLOW_LEGACY_DECRYPT" + } + case LegacyPolicy_FORBID__LEGACY__ENCRYPT__FORBID__LEGACY__DECRYPT: + { + return "AwsCryptographyDbEncryptionSdkDynamoDbTypes.LegacyPolicy.FORBID_LEGACY_ENCRYPT_FORBID_LEGACY_DECRYPT" + } + default: + { + return "" + } + } +} + +func (_this LegacyPolicy) Equals(other LegacyPolicy) bool { + switch _this.Get_().(type) { + case LegacyPolicy_FORCE__LEGACY__ENCRYPT__ALLOW__LEGACY__DECRYPT: + { + _, ok := other.Get_().(LegacyPolicy_FORCE__LEGACY__ENCRYPT__ALLOW__LEGACY__DECRYPT) + return ok + } + case LegacyPolicy_FORBID__LEGACY__ENCRYPT__ALLOW__LEGACY__DECRYPT: + { + _, ok := other.Get_().(LegacyPolicy_FORBID__LEGACY__ENCRYPT__ALLOW__LEGACY__DECRYPT) + return ok + } + case LegacyPolicy_FORBID__LEGACY__ENCRYPT__FORBID__LEGACY__DECRYPT: + { + _, ok := other.Get_().(LegacyPolicy_FORBID__LEGACY__ENCRYPT__FORBID__LEGACY__DECRYPT) + return ok + } + default: + { + return false // unexpected + } + } +} + +func (_this LegacyPolicy) EqualsGeneric(other interface{}) bool { + typed, ok := other.(LegacyPolicy) + return ok && _this.Equals(typed) +} + +func Type_LegacyPolicy_() _dafny.TypeDescriptor { + return type_LegacyPolicy_{} +} + +type type_LegacyPolicy_ struct { +} + +func (_this type_LegacyPolicy_) Default() interface{} { + return Companion_LegacyPolicy_.Default() +} + +func (_this type_LegacyPolicy_) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbTypes.LegacyPolicy" +} +func (_this LegacyPolicy) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = LegacyPolicy{} + +// End of datatype LegacyPolicy + +// Definition of datatype Lower +type Lower struct { + Data_Lower_ +} + +func (_this Lower) Get_() Data_Lower_ { + return _this.Data_Lower_ +} + +type Data_Lower_ interface { + isLower() +} + +type CompanionStruct_Lower_ struct { +} + +var Companion_Lower_ = CompanionStruct_Lower_{} + +type Lower_Lower struct { +} + +func (Lower_Lower) isLower() {} + +func (CompanionStruct_Lower_) Create_Lower_() Lower { + return Lower{Lower_Lower{}} +} + +func (_this Lower) Is_Lower() bool { + _, ok := _this.Get_().(Lower_Lower) + return ok +} + +func (CompanionStruct_Lower_) Default() Lower { + return Companion_Lower_.Create_Lower_() +} + +func (_ CompanionStruct_Lower_) AllSingletonConstructors() _dafny.Iterator { + i := -1 + return func() (interface{}, bool) { + i++ + switch i { + case 0: + return Companion_Lower_.Create_Lower_(), true + default: + return Lower{}, false + } + } +} + +func (_this Lower) String() string { + switch _this.Get_().(type) { + case nil: + return "null" + case Lower_Lower: + { + return "AwsCryptographyDbEncryptionSdkDynamoDbTypes.Lower.Lower" + } + default: + { + return "" + } + } +} + +func (_this Lower) Equals(other Lower) bool { + switch _this.Get_().(type) { + case Lower_Lower: + { + _, ok := other.Get_().(Lower_Lower) + return ok + } + default: + { + return false // unexpected + } + } +} + +func (_this Lower) EqualsGeneric(other interface{}) bool { + typed, ok := other.(Lower) + return ok && _this.Equals(typed) +} + +func Type_Lower_() _dafny.TypeDescriptor { + return type_Lower_{} +} + +type type_Lower_ struct { +} + +func (_this type_Lower_) Default() interface{} { + return Companion_Lower_.Default() +} + +func (_this type_Lower_) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbTypes.Lower" +} +func (_this Lower) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = Lower{} + +// End of datatype Lower + +// Definition of datatype MultiKeyStore +type MultiKeyStore struct { + Data_MultiKeyStore_ +} + +func (_this MultiKeyStore) Get_() Data_MultiKeyStore_ { + return _this.Data_MultiKeyStore_ +} + +type Data_MultiKeyStore_ interface { + isMultiKeyStore() +} + +type CompanionStruct_MultiKeyStore_ struct { +} + +var Companion_MultiKeyStore_ = CompanionStruct_MultiKeyStore_{} + +type MultiKeyStore_MultiKeyStore struct { + KeyFieldName _dafny.Sequence + CacheTTL int32 + Cache m_Wrappers.Option + PartitionId m_Wrappers.Option +} + +func (MultiKeyStore_MultiKeyStore) isMultiKeyStore() {} + +func (CompanionStruct_MultiKeyStore_) Create_MultiKeyStore_(KeyFieldName _dafny.Sequence, CacheTTL int32, Cache m_Wrappers.Option, PartitionId m_Wrappers.Option) MultiKeyStore { + return MultiKeyStore{MultiKeyStore_MultiKeyStore{KeyFieldName, CacheTTL, Cache, PartitionId}} +} + +func (_this MultiKeyStore) Is_MultiKeyStore() bool { + _, ok := _this.Get_().(MultiKeyStore_MultiKeyStore) + return ok +} + +func (CompanionStruct_MultiKeyStore_) Default() MultiKeyStore { + return Companion_MultiKeyStore_.Create_MultiKeyStore_(_dafny.EmptySeq.SetString(), int32(0), m_Wrappers.Companion_Option_.Default(), m_Wrappers.Companion_Option_.Default()) +} + +func (_this MultiKeyStore) Dtor_keyFieldName() _dafny.Sequence { + return _this.Get_().(MultiKeyStore_MultiKeyStore).KeyFieldName +} + +func (_this MultiKeyStore) Dtor_cacheTTL() int32 { + return _this.Get_().(MultiKeyStore_MultiKeyStore).CacheTTL +} + +func (_this MultiKeyStore) Dtor_cache() m_Wrappers.Option { + return _this.Get_().(MultiKeyStore_MultiKeyStore).Cache +} + +func (_this MultiKeyStore) Dtor_partitionId() m_Wrappers.Option { + return _this.Get_().(MultiKeyStore_MultiKeyStore).PartitionId +} + +func (_this MultiKeyStore) String() string { + switch data := _this.Get_().(type) { + case nil: + return "null" + case MultiKeyStore_MultiKeyStore: + { + return "AwsCryptographyDbEncryptionSdkDynamoDbTypes.MultiKeyStore.MultiKeyStore" + "(" + _dafny.String(data.KeyFieldName) + ", " + _dafny.String(data.CacheTTL) + ", " + _dafny.String(data.Cache) + ", " + _dafny.String(data.PartitionId) + ")" + } + default: + { + return "" + } + } +} + +func (_this MultiKeyStore) Equals(other MultiKeyStore) bool { + switch data1 := _this.Get_().(type) { + case MultiKeyStore_MultiKeyStore: + { + data2, ok := other.Get_().(MultiKeyStore_MultiKeyStore) + return ok && data1.KeyFieldName.Equals(data2.KeyFieldName) && data1.CacheTTL == data2.CacheTTL && data1.Cache.Equals(data2.Cache) && data1.PartitionId.Equals(data2.PartitionId) + } + default: + { + return false // unexpected + } + } +} + +func (_this MultiKeyStore) EqualsGeneric(other interface{}) bool { + typed, ok := other.(MultiKeyStore) + return ok && _this.Equals(typed) +} + +func Type_MultiKeyStore_() _dafny.TypeDescriptor { + return type_MultiKeyStore_{} +} + +type type_MultiKeyStore_ struct { +} + +func (_this type_MultiKeyStore_) Default() interface{} { + return Companion_MultiKeyStore_.Default() +} + +func (_this type_MultiKeyStore_) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbTypes.MultiKeyStore" +} +func (_this MultiKeyStore) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = MultiKeyStore{} + +// End of datatype MultiKeyStore + +// Definition of datatype PartOnly +type PartOnly struct { + Data_PartOnly_ +} + +func (_this PartOnly) Get_() Data_PartOnly_ { + return _this.Data_PartOnly_ +} + +type Data_PartOnly_ interface { + isPartOnly() +} + +type CompanionStruct_PartOnly_ struct { +} + +var Companion_PartOnly_ = CompanionStruct_PartOnly_{} + +type PartOnly_PartOnly struct { +} + +func (PartOnly_PartOnly) isPartOnly() {} + +func (CompanionStruct_PartOnly_) Create_PartOnly_() PartOnly { + return PartOnly{PartOnly_PartOnly{}} +} + +func (_this PartOnly) Is_PartOnly() bool { + _, ok := _this.Get_().(PartOnly_PartOnly) + return ok +} + +func (CompanionStruct_PartOnly_) Default() PartOnly { + return Companion_PartOnly_.Create_PartOnly_() +} + +func (_ CompanionStruct_PartOnly_) AllSingletonConstructors() _dafny.Iterator { + i := -1 + return func() (interface{}, bool) { + i++ + switch i { + case 0: + return Companion_PartOnly_.Create_PartOnly_(), true + default: + return PartOnly{}, false + } + } +} + +func (_this PartOnly) String() string { + switch _this.Get_().(type) { + case nil: + return "null" + case PartOnly_PartOnly: + { + return "AwsCryptographyDbEncryptionSdkDynamoDbTypes.PartOnly.PartOnly" + } + default: + { + return "" + } + } +} + +func (_this PartOnly) Equals(other PartOnly) bool { + switch _this.Get_().(type) { + case PartOnly_PartOnly: + { + _, ok := other.Get_().(PartOnly_PartOnly) + return ok + } + default: + { + return false // unexpected + } + } +} + +func (_this PartOnly) EqualsGeneric(other interface{}) bool { + typed, ok := other.(PartOnly) + return ok && _this.Equals(typed) +} + +func Type_PartOnly_() _dafny.TypeDescriptor { + return type_PartOnly_{} +} + +type type_PartOnly_ struct { +} + +func (_this type_PartOnly_) Default() interface{} { + return Companion_PartOnly_.Default() +} + +func (_this type_PartOnly_) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbTypes.PartOnly" +} +func (_this PartOnly) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = PartOnly{} + +// End of datatype PartOnly + +// Definition of datatype PlaintextOverride +type PlaintextOverride struct { + Data_PlaintextOverride_ +} + +func (_this PlaintextOverride) Get_() Data_PlaintextOverride_ { + return _this.Data_PlaintextOverride_ +} + +type Data_PlaintextOverride_ interface { + isPlaintextOverride() +} + +type CompanionStruct_PlaintextOverride_ struct { +} + +var Companion_PlaintextOverride_ = CompanionStruct_PlaintextOverride_{} + +type PlaintextOverride_FORCE__PLAINTEXT__WRITE__ALLOW__PLAINTEXT__READ struct { +} + +func (PlaintextOverride_FORCE__PLAINTEXT__WRITE__ALLOW__PLAINTEXT__READ) isPlaintextOverride() {} + +func (CompanionStruct_PlaintextOverride_) Create_FORCE__PLAINTEXT__WRITE__ALLOW__PLAINTEXT__READ_() PlaintextOverride { + return PlaintextOverride{PlaintextOverride_FORCE__PLAINTEXT__WRITE__ALLOW__PLAINTEXT__READ{}} +} + +func (_this PlaintextOverride) Is_FORCE__PLAINTEXT__WRITE__ALLOW__PLAINTEXT__READ() bool { + _, ok := _this.Get_().(PlaintextOverride_FORCE__PLAINTEXT__WRITE__ALLOW__PLAINTEXT__READ) + return ok +} + +type PlaintextOverride_FORBID__PLAINTEXT__WRITE__ALLOW__PLAINTEXT__READ struct { +} + +func (PlaintextOverride_FORBID__PLAINTEXT__WRITE__ALLOW__PLAINTEXT__READ) isPlaintextOverride() {} + +func (CompanionStruct_PlaintextOverride_) Create_FORBID__PLAINTEXT__WRITE__ALLOW__PLAINTEXT__READ_() PlaintextOverride { + return PlaintextOverride{PlaintextOverride_FORBID__PLAINTEXT__WRITE__ALLOW__PLAINTEXT__READ{}} +} + +func (_this PlaintextOverride) Is_FORBID__PLAINTEXT__WRITE__ALLOW__PLAINTEXT__READ() bool { + _, ok := _this.Get_().(PlaintextOverride_FORBID__PLAINTEXT__WRITE__ALLOW__PLAINTEXT__READ) + return ok +} + +type PlaintextOverride_FORBID__PLAINTEXT__WRITE__FORBID__PLAINTEXT__READ struct { +} + +func (PlaintextOverride_FORBID__PLAINTEXT__WRITE__FORBID__PLAINTEXT__READ) isPlaintextOverride() {} + +func (CompanionStruct_PlaintextOverride_) Create_FORBID__PLAINTEXT__WRITE__FORBID__PLAINTEXT__READ_() PlaintextOverride { + return PlaintextOverride{PlaintextOverride_FORBID__PLAINTEXT__WRITE__FORBID__PLAINTEXT__READ{}} +} + +func (_this PlaintextOverride) Is_FORBID__PLAINTEXT__WRITE__FORBID__PLAINTEXT__READ() bool { + _, ok := _this.Get_().(PlaintextOverride_FORBID__PLAINTEXT__WRITE__FORBID__PLAINTEXT__READ) + return ok +} + +func (CompanionStruct_PlaintextOverride_) Default() PlaintextOverride { + return Companion_PlaintextOverride_.Create_FORCE__PLAINTEXT__WRITE__ALLOW__PLAINTEXT__READ_() +} + +func (_ CompanionStruct_PlaintextOverride_) AllSingletonConstructors() _dafny.Iterator { + i := -1 + return func() (interface{}, bool) { + i++ + switch i { + case 0: + return Companion_PlaintextOverride_.Create_FORCE__PLAINTEXT__WRITE__ALLOW__PLAINTEXT__READ_(), true + case 1: + return Companion_PlaintextOverride_.Create_FORBID__PLAINTEXT__WRITE__ALLOW__PLAINTEXT__READ_(), true + case 2: + return Companion_PlaintextOverride_.Create_FORBID__PLAINTEXT__WRITE__FORBID__PLAINTEXT__READ_(), true + default: + return PlaintextOverride{}, false + } + } +} + +func (_this PlaintextOverride) String() string { + switch _this.Get_().(type) { + case nil: + return "null" + case PlaintextOverride_FORCE__PLAINTEXT__WRITE__ALLOW__PLAINTEXT__READ: + { + return "AwsCryptographyDbEncryptionSdkDynamoDbTypes.PlaintextOverride.FORCE_PLAINTEXT_WRITE_ALLOW_PLAINTEXT_READ" + } + case PlaintextOverride_FORBID__PLAINTEXT__WRITE__ALLOW__PLAINTEXT__READ: + { + return "AwsCryptographyDbEncryptionSdkDynamoDbTypes.PlaintextOverride.FORBID_PLAINTEXT_WRITE_ALLOW_PLAINTEXT_READ" + } + case PlaintextOverride_FORBID__PLAINTEXT__WRITE__FORBID__PLAINTEXT__READ: + { + return "AwsCryptographyDbEncryptionSdkDynamoDbTypes.PlaintextOverride.FORBID_PLAINTEXT_WRITE_FORBID_PLAINTEXT_READ" + } + default: + { + return "" + } + } +} + +func (_this PlaintextOverride) Equals(other PlaintextOverride) bool { + switch _this.Get_().(type) { + case PlaintextOverride_FORCE__PLAINTEXT__WRITE__ALLOW__PLAINTEXT__READ: + { + _, ok := other.Get_().(PlaintextOverride_FORCE__PLAINTEXT__WRITE__ALLOW__PLAINTEXT__READ) + return ok + } + case PlaintextOverride_FORBID__PLAINTEXT__WRITE__ALLOW__PLAINTEXT__READ: + { + _, ok := other.Get_().(PlaintextOverride_FORBID__PLAINTEXT__WRITE__ALLOW__PLAINTEXT__READ) + return ok + } + case PlaintextOverride_FORBID__PLAINTEXT__WRITE__FORBID__PLAINTEXT__READ: + { + _, ok := other.Get_().(PlaintextOverride_FORBID__PLAINTEXT__WRITE__FORBID__PLAINTEXT__READ) + return ok + } + default: + { + return false // unexpected + } + } +} + +func (_this PlaintextOverride) EqualsGeneric(other interface{}) bool { + typed, ok := other.(PlaintextOverride) + return ok && _this.Equals(typed) +} + +func Type_PlaintextOverride_() _dafny.TypeDescriptor { + return type_PlaintextOverride_{} +} + +type type_PlaintextOverride_ struct { +} + +func (_this type_PlaintextOverride_) Default() interface{} { + return Companion_PlaintextOverride_.Default() +} + +func (_this type_PlaintextOverride_) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbTypes.PlaintextOverride" +} +func (_this PlaintextOverride) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = PlaintextOverride{} + +// End of datatype PlaintextOverride + +// Definition of class Prefix +type Prefix struct { +} + +func New_Prefix_() *Prefix { + _this := Prefix{} + + return &_this +} + +type CompanionStruct_Prefix_ struct { +} + +var Companion_Prefix_ = CompanionStruct_Prefix_{} + +func (*Prefix) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbTypes.Prefix" +} + +// End of class Prefix + +func Type_Prefix_() _dafny.TypeDescriptor { + return type_Prefix_{} +} + +type type_Prefix_ struct { +} + +func (_this type_Prefix_) Default() interface{} { + return _dafny.EmptySeq.SetString() +} + +func (_this type_Prefix_) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbTypes.Prefix" +} +func (_this *CompanionStruct_Prefix_) Is_(__source _dafny.Sequence) bool { + var _0_x _dafny.Sequence = (__source) + _ = _0_x + return Companion_Default___.IsValid__Prefix(_0_x) +} + +// Definition of datatype SearchConfig +type SearchConfig struct { + Data_SearchConfig_ +} + +func (_this SearchConfig) Get_() Data_SearchConfig_ { + return _this.Data_SearchConfig_ +} + +type Data_SearchConfig_ interface { + isSearchConfig() +} + +type CompanionStruct_SearchConfig_ struct { +} + +var Companion_SearchConfig_ = CompanionStruct_SearchConfig_{} + +type SearchConfig_SearchConfig struct { + Versions _dafny.Sequence + WriteVersion int32 +} + +func (SearchConfig_SearchConfig) isSearchConfig() {} + +func (CompanionStruct_SearchConfig_) Create_SearchConfig_(Versions _dafny.Sequence, WriteVersion int32) SearchConfig { + return SearchConfig{SearchConfig_SearchConfig{Versions, WriteVersion}} +} + +func (_this SearchConfig) Is_SearchConfig() bool { + _, ok := _this.Get_().(SearchConfig_SearchConfig) + return ok +} + +func (CompanionStruct_SearchConfig_) Default() SearchConfig { + return Companion_SearchConfig_.Create_SearchConfig_(_dafny.EmptySeq, int32(0)) +} + +func (_this SearchConfig) Dtor_versions() _dafny.Sequence { + return _this.Get_().(SearchConfig_SearchConfig).Versions +} + +func (_this SearchConfig) Dtor_writeVersion() int32 { + return _this.Get_().(SearchConfig_SearchConfig).WriteVersion +} + +func (_this SearchConfig) String() string { + switch data := _this.Get_().(type) { + case nil: + return "null" + case SearchConfig_SearchConfig: + { + return "AwsCryptographyDbEncryptionSdkDynamoDbTypes.SearchConfig.SearchConfig" + "(" + _dafny.String(data.Versions) + ", " + _dafny.String(data.WriteVersion) + ")" + } + default: + { + return "" + } + } +} + +func (_this SearchConfig) Equals(other SearchConfig) bool { + switch data1 := _this.Get_().(type) { + case SearchConfig_SearchConfig: + { + data2, ok := other.Get_().(SearchConfig_SearchConfig) + return ok && data1.Versions.Equals(data2.Versions) && data1.WriteVersion == data2.WriteVersion + } + default: + { + return false // unexpected + } + } +} + +func (_this SearchConfig) EqualsGeneric(other interface{}) bool { + typed, ok := other.(SearchConfig) + return ok && _this.Equals(typed) +} + +func Type_SearchConfig_() _dafny.TypeDescriptor { + return type_SearchConfig_{} +} + +type type_SearchConfig_ struct { +} + +func (_this type_SearchConfig_) Default() interface{} { + return Companion_SearchConfig_.Default() +} + +func (_this type_SearchConfig_) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbTypes.SearchConfig" +} +func (_this SearchConfig) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = SearchConfig{} + +// End of datatype SearchConfig + +// Definition of datatype Shared +type Shared struct { + Data_Shared_ +} + +func (_this Shared) Get_() Data_Shared_ { + return _this.Data_Shared_ +} + +type Data_Shared_ interface { + isShared() +} + +type CompanionStruct_Shared_ struct { +} + +var Companion_Shared_ = CompanionStruct_Shared_{} + +type Shared_Shared struct { + Other _dafny.Sequence +} + +func (Shared_Shared) isShared() {} + +func (CompanionStruct_Shared_) Create_Shared_(Other _dafny.Sequence) Shared { + return Shared{Shared_Shared{Other}} +} + +func (_this Shared) Is_Shared() bool { + _, ok := _this.Get_().(Shared_Shared) + return ok +} + +func (CompanionStruct_Shared_) Default() Shared { + return Companion_Shared_.Create_Shared_(_dafny.EmptySeq.SetString()) +} + +func (_this Shared) Dtor_other() _dafny.Sequence { + return _this.Get_().(Shared_Shared).Other +} + +func (_this Shared) String() string { + switch data := _this.Get_().(type) { + case nil: + return "null" + case Shared_Shared: + { + return "AwsCryptographyDbEncryptionSdkDynamoDbTypes.Shared.Shared" + "(" + _dafny.String(data.Other) + ")" + } + default: + { + return "" + } + } +} + +func (_this Shared) Equals(other Shared) bool { + switch data1 := _this.Get_().(type) { + case Shared_Shared: + { + data2, ok := other.Get_().(Shared_Shared) + return ok && data1.Other.Equals(data2.Other) + } + default: + { + return false // unexpected + } + } +} + +func (_this Shared) EqualsGeneric(other interface{}) bool { + typed, ok := other.(Shared) + return ok && _this.Equals(typed) +} + +func Type_Shared_() _dafny.TypeDescriptor { + return type_Shared_{} +} + +type type_Shared_ struct { +} + +func (_this type_Shared_) Default() interface{} { + return Companion_Shared_.Default() +} + +func (_this type_Shared_) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbTypes.Shared" +} +func (_this Shared) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = Shared{} + +// End of datatype Shared + +// Definition of datatype SharedSet +type SharedSet struct { + Data_SharedSet_ +} + +func (_this SharedSet) Get_() Data_SharedSet_ { + return _this.Data_SharedSet_ +} + +type Data_SharedSet_ interface { + isSharedSet() +} + +type CompanionStruct_SharedSet_ struct { +} + +var Companion_SharedSet_ = CompanionStruct_SharedSet_{} + +type SharedSet_SharedSet struct { + Other _dafny.Sequence +} + +func (SharedSet_SharedSet) isSharedSet() {} + +func (CompanionStruct_SharedSet_) Create_SharedSet_(Other _dafny.Sequence) SharedSet { + return SharedSet{SharedSet_SharedSet{Other}} +} + +func (_this SharedSet) Is_SharedSet() bool { + _, ok := _this.Get_().(SharedSet_SharedSet) + return ok +} + +func (CompanionStruct_SharedSet_) Default() SharedSet { + return Companion_SharedSet_.Create_SharedSet_(_dafny.EmptySeq.SetString()) +} + +func (_this SharedSet) Dtor_other() _dafny.Sequence { + return _this.Get_().(SharedSet_SharedSet).Other +} + +func (_this SharedSet) String() string { + switch data := _this.Get_().(type) { + case nil: + return "null" + case SharedSet_SharedSet: + { + return "AwsCryptographyDbEncryptionSdkDynamoDbTypes.SharedSet.SharedSet" + "(" + _dafny.String(data.Other) + ")" + } + default: + { + return "" + } + } +} + +func (_this SharedSet) Equals(other SharedSet) bool { + switch data1 := _this.Get_().(type) { + case SharedSet_SharedSet: + { + data2, ok := other.Get_().(SharedSet_SharedSet) + return ok && data1.Other.Equals(data2.Other) + } + default: + { + return false // unexpected + } + } +} + +func (_this SharedSet) EqualsGeneric(other interface{}) bool { + typed, ok := other.(SharedSet) + return ok && _this.Equals(typed) +} + +func Type_SharedSet_() _dafny.TypeDescriptor { + return type_SharedSet_{} +} + +type type_SharedSet_ struct { +} + +func (_this type_SharedSet_) Default() interface{} { + return Companion_SharedSet_.Default() +} + +func (_this type_SharedSet_) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbTypes.SharedSet" +} +func (_this SharedSet) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = SharedSet{} + +// End of datatype SharedSet + +// Definition of datatype SignedPart +type SignedPart struct { + Data_SignedPart_ +} + +func (_this SignedPart) Get_() Data_SignedPart_ { + return _this.Data_SignedPart_ +} + +type Data_SignedPart_ interface { + isSignedPart() +} + +type CompanionStruct_SignedPart_ struct { +} + +var Companion_SignedPart_ = CompanionStruct_SignedPart_{} + +type SignedPart_SignedPart struct { + Name _dafny.Sequence + Prefix _dafny.Sequence + Loc m_Wrappers.Option +} + +func (SignedPart_SignedPart) isSignedPart() {} + +func (CompanionStruct_SignedPart_) Create_SignedPart_(Name _dafny.Sequence, Prefix _dafny.Sequence, Loc m_Wrappers.Option) SignedPart { + return SignedPart{SignedPart_SignedPart{Name, Prefix, Loc}} +} + +func (_this SignedPart) Is_SignedPart() bool { + _, ok := _this.Get_().(SignedPart_SignedPart) + return ok +} + +func (CompanionStruct_SignedPart_) Default() SignedPart { + return Companion_SignedPart_.Create_SignedPart_(_dafny.EmptySeq.SetString(), _dafny.EmptySeq.SetString(), m_Wrappers.Companion_Option_.Default()) +} + +func (_this SignedPart) Dtor_name() _dafny.Sequence { + return _this.Get_().(SignedPart_SignedPart).Name +} + +func (_this SignedPart) Dtor_prefix() _dafny.Sequence { + return _this.Get_().(SignedPart_SignedPart).Prefix +} + +func (_this SignedPart) Dtor_loc() m_Wrappers.Option { + return _this.Get_().(SignedPart_SignedPart).Loc +} + +func (_this SignedPart) String() string { + switch data := _this.Get_().(type) { + case nil: + return "null" + case SignedPart_SignedPart: + { + return "AwsCryptographyDbEncryptionSdkDynamoDbTypes.SignedPart.SignedPart" + "(" + _dafny.String(data.Name) + ", " + _dafny.String(data.Prefix) + ", " + _dafny.String(data.Loc) + ")" + } + default: + { + return "" + } + } +} + +func (_this SignedPart) Equals(other SignedPart) bool { + switch data1 := _this.Get_().(type) { + case SignedPart_SignedPart: + { + data2, ok := other.Get_().(SignedPart_SignedPart) + return ok && data1.Name.Equals(data2.Name) && data1.Prefix.Equals(data2.Prefix) && data1.Loc.Equals(data2.Loc) + } + default: + { + return false // unexpected + } + } +} + +func (_this SignedPart) EqualsGeneric(other interface{}) bool { + typed, ok := other.(SignedPart) + return ok && _this.Equals(typed) +} + +func Type_SignedPart_() _dafny.TypeDescriptor { + return type_SignedPart_{} +} + +type type_SignedPart_ struct { +} + +func (_this type_SignedPart_) Default() interface{} { + return Companion_SignedPart_.Default() +} + +func (_this type_SignedPart_) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbTypes.SignedPart" +} +func (_this SignedPart) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = SignedPart{} + +// End of datatype SignedPart + +// Definition of class SignedPartsList +type SignedPartsList struct { +} + +func New_SignedPartsList_() *SignedPartsList { + _this := SignedPartsList{} + + return &_this +} + +type CompanionStruct_SignedPartsList_ struct { +} + +var Companion_SignedPartsList_ = CompanionStruct_SignedPartsList_{} + +func (*SignedPartsList) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbTypes.SignedPartsList" +} + +// End of class SignedPartsList + +func Type_SignedPartsList_() _dafny.TypeDescriptor { + return type_SignedPartsList_{} +} + +type type_SignedPartsList_ struct { +} + +func (_this type_SignedPartsList_) Default() interface{} { + return _dafny.EmptySeq +} + +func (_this type_SignedPartsList_) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbTypes.SignedPartsList" +} +func (_this *CompanionStruct_SignedPartsList_) Is_(__source _dafny.Sequence) bool { + var _1_x _dafny.Sequence = (__source) + _ = _1_x + return Companion_Default___.IsValid__SignedPartsList(_1_x) +} + +// Definition of datatype SingleKeyStore +type SingleKeyStore struct { + Data_SingleKeyStore_ +} + +func (_this SingleKeyStore) Get_() Data_SingleKeyStore_ { + return _this.Data_SingleKeyStore_ +} + +type Data_SingleKeyStore_ interface { + isSingleKeyStore() +} + +type CompanionStruct_SingleKeyStore_ struct { +} + +var Companion_SingleKeyStore_ = CompanionStruct_SingleKeyStore_{} + +type SingleKeyStore_SingleKeyStore struct { + KeyId _dafny.Sequence + CacheTTL int32 + Cache m_Wrappers.Option + PartitionId m_Wrappers.Option +} + +func (SingleKeyStore_SingleKeyStore) isSingleKeyStore() {} + +func (CompanionStruct_SingleKeyStore_) Create_SingleKeyStore_(KeyId _dafny.Sequence, CacheTTL int32, Cache m_Wrappers.Option, PartitionId m_Wrappers.Option) SingleKeyStore { + return SingleKeyStore{SingleKeyStore_SingleKeyStore{KeyId, CacheTTL, Cache, PartitionId}} +} + +func (_this SingleKeyStore) Is_SingleKeyStore() bool { + _, ok := _this.Get_().(SingleKeyStore_SingleKeyStore) + return ok +} + +func (CompanionStruct_SingleKeyStore_) Default() SingleKeyStore { + return Companion_SingleKeyStore_.Create_SingleKeyStore_(_dafny.EmptySeq.SetString(), int32(0), m_Wrappers.Companion_Option_.Default(), m_Wrappers.Companion_Option_.Default()) +} + +func (_this SingleKeyStore) Dtor_keyId() _dafny.Sequence { + return _this.Get_().(SingleKeyStore_SingleKeyStore).KeyId +} + +func (_this SingleKeyStore) Dtor_cacheTTL() int32 { + return _this.Get_().(SingleKeyStore_SingleKeyStore).CacheTTL +} + +func (_this SingleKeyStore) Dtor_cache() m_Wrappers.Option { + return _this.Get_().(SingleKeyStore_SingleKeyStore).Cache +} + +func (_this SingleKeyStore) Dtor_partitionId() m_Wrappers.Option { + return _this.Get_().(SingleKeyStore_SingleKeyStore).PartitionId +} + +func (_this SingleKeyStore) String() string { + switch data := _this.Get_().(type) { + case nil: + return "null" + case SingleKeyStore_SingleKeyStore: + { + return "AwsCryptographyDbEncryptionSdkDynamoDbTypes.SingleKeyStore.SingleKeyStore" + "(" + _dafny.String(data.KeyId) + ", " + _dafny.String(data.CacheTTL) + ", " + _dafny.String(data.Cache) + ", " + _dafny.String(data.PartitionId) + ")" + } + default: + { + return "" + } + } +} + +func (_this SingleKeyStore) Equals(other SingleKeyStore) bool { + switch data1 := _this.Get_().(type) { + case SingleKeyStore_SingleKeyStore: + { + data2, ok := other.Get_().(SingleKeyStore_SingleKeyStore) + return ok && data1.KeyId.Equals(data2.KeyId) && data1.CacheTTL == data2.CacheTTL && data1.Cache.Equals(data2.Cache) && data1.PartitionId.Equals(data2.PartitionId) + } + default: + { + return false // unexpected + } + } +} + +func (_this SingleKeyStore) EqualsGeneric(other interface{}) bool { + typed, ok := other.(SingleKeyStore) + return ok && _this.Equals(typed) +} + +func Type_SingleKeyStore_() _dafny.TypeDescriptor { + return type_SingleKeyStore_{} +} + +type type_SingleKeyStore_ struct { +} + +func (_this type_SingleKeyStore_) Default() interface{} { + return Companion_SingleKeyStore_.Default() +} + +func (_this type_SingleKeyStore_) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbTypes.SingleKeyStore" +} +func (_this SingleKeyStore) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = SingleKeyStore{} + +// End of datatype SingleKeyStore + +// Definition of datatype StandardBeacon +type StandardBeacon struct { + Data_StandardBeacon_ +} + +func (_this StandardBeacon) Get_() Data_StandardBeacon_ { + return _this.Data_StandardBeacon_ +} + +type Data_StandardBeacon_ interface { + isStandardBeacon() +} + +type CompanionStruct_StandardBeacon_ struct { +} + +var Companion_StandardBeacon_ = CompanionStruct_StandardBeacon_{} + +type StandardBeacon_StandardBeacon struct { + Name _dafny.Sequence + Length int32 + Loc m_Wrappers.Option + Style m_Wrappers.Option +} + +func (StandardBeacon_StandardBeacon) isStandardBeacon() {} + +func (CompanionStruct_StandardBeacon_) Create_StandardBeacon_(Name _dafny.Sequence, Length int32, Loc m_Wrappers.Option, Style m_Wrappers.Option) StandardBeacon { + return StandardBeacon{StandardBeacon_StandardBeacon{Name, Length, Loc, Style}} +} + +func (_this StandardBeacon) Is_StandardBeacon() bool { + _, ok := _this.Get_().(StandardBeacon_StandardBeacon) + return ok +} + +func (CompanionStruct_StandardBeacon_) Default() StandardBeacon { + return Companion_StandardBeacon_.Create_StandardBeacon_(_dafny.EmptySeq.SetString(), int32(0), m_Wrappers.Companion_Option_.Default(), m_Wrappers.Companion_Option_.Default()) +} + +func (_this StandardBeacon) Dtor_name() _dafny.Sequence { + return _this.Get_().(StandardBeacon_StandardBeacon).Name +} + +func (_this StandardBeacon) Dtor_length() int32 { + return _this.Get_().(StandardBeacon_StandardBeacon).Length +} + +func (_this StandardBeacon) Dtor_loc() m_Wrappers.Option { + return _this.Get_().(StandardBeacon_StandardBeacon).Loc +} + +func (_this StandardBeacon) Dtor_style() m_Wrappers.Option { + return _this.Get_().(StandardBeacon_StandardBeacon).Style +} + +func (_this StandardBeacon) String() string { + switch data := _this.Get_().(type) { + case nil: + return "null" + case StandardBeacon_StandardBeacon: + { + return "AwsCryptographyDbEncryptionSdkDynamoDbTypes.StandardBeacon.StandardBeacon" + "(" + _dafny.String(data.Name) + ", " + _dafny.String(data.Length) + ", " + _dafny.String(data.Loc) + ", " + _dafny.String(data.Style) + ")" + } + default: + { + return "" + } + } +} + +func (_this StandardBeacon) Equals(other StandardBeacon) bool { + switch data1 := _this.Get_().(type) { + case StandardBeacon_StandardBeacon: + { + data2, ok := other.Get_().(StandardBeacon_StandardBeacon) + return ok && data1.Name.Equals(data2.Name) && data1.Length == data2.Length && data1.Loc.Equals(data2.Loc) && data1.Style.Equals(data2.Style) + } + default: + { + return false // unexpected + } + } +} + +func (_this StandardBeacon) EqualsGeneric(other interface{}) bool { + typed, ok := other.(StandardBeacon) + return ok && _this.Equals(typed) +} + +func Type_StandardBeacon_() _dafny.TypeDescriptor { + return type_StandardBeacon_{} +} + +type type_StandardBeacon_ struct { +} + +func (_this type_StandardBeacon_) Default() interface{} { + return Companion_StandardBeacon_.Default() +} + +func (_this type_StandardBeacon_) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbTypes.StandardBeacon" +} +func (_this StandardBeacon) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = StandardBeacon{} + +// End of datatype StandardBeacon + +// Definition of class StandardBeaconList +type StandardBeaconList struct { +} + +func New_StandardBeaconList_() *StandardBeaconList { + _this := StandardBeaconList{} + + return &_this +} + +type CompanionStruct_StandardBeaconList_ struct { +} + +var Companion_StandardBeaconList_ = CompanionStruct_StandardBeaconList_{} + +func (*StandardBeaconList) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbTypes.StandardBeaconList" +} + +// End of class StandardBeaconList + +func Type_StandardBeaconList_() _dafny.TypeDescriptor { + return type_StandardBeaconList_{} +} + +type type_StandardBeaconList_ struct { +} + +func (_this type_StandardBeaconList_) Default() interface{} { + return _dafny.EmptySeq +} + +func (_this type_StandardBeaconList_) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbTypes.StandardBeaconList" +} +func (_this *CompanionStruct_StandardBeaconList_) Is_(__source _dafny.Sequence) bool { + var _2_x _dafny.Sequence = (__source) + _ = _2_x + return Companion_Default___.IsValid__StandardBeaconList(_2_x) +} + +// Definition of class TerminalLocation +type TerminalLocation struct { +} + +func New_TerminalLocation_() *TerminalLocation { + _this := TerminalLocation{} + + return &_this +} + +type CompanionStruct_TerminalLocation_ struct { +} + +var Companion_TerminalLocation_ = CompanionStruct_TerminalLocation_{} + +func (*TerminalLocation) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbTypes.TerminalLocation" +} + +// End of class TerminalLocation + +func Type_TerminalLocation_() _dafny.TypeDescriptor { + return type_TerminalLocation_{} +} + +type type_TerminalLocation_ struct { +} + +func (_this type_TerminalLocation_) Default() interface{} { + return _dafny.EmptySeq.SetString() +} + +func (_this type_TerminalLocation_) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbTypes.TerminalLocation" +} +func (_this *CompanionStruct_TerminalLocation_) Is_(__source _dafny.Sequence) bool { + var _3_x _dafny.Sequence = (__source) + _ = _3_x + return Companion_Default___.IsValid__TerminalLocation(_3_x) +} + +// Definition of datatype Upper +type Upper struct { + Data_Upper_ +} + +func (_this Upper) Get_() Data_Upper_ { + return _this.Data_Upper_ +} + +type Data_Upper_ interface { + isUpper() +} + +type CompanionStruct_Upper_ struct { +} + +var Companion_Upper_ = CompanionStruct_Upper_{} + +type Upper_Upper struct { +} + +func (Upper_Upper) isUpper() {} + +func (CompanionStruct_Upper_) Create_Upper_() Upper { + return Upper{Upper_Upper{}} +} + +func (_this Upper) Is_Upper() bool { + _, ok := _this.Get_().(Upper_Upper) + return ok +} + +func (CompanionStruct_Upper_) Default() Upper { + return Companion_Upper_.Create_Upper_() +} + +func (_ CompanionStruct_Upper_) AllSingletonConstructors() _dafny.Iterator { + i := -1 + return func() (interface{}, bool) { + i++ + switch i { + case 0: + return Companion_Upper_.Create_Upper_(), true + default: + return Upper{}, false + } + } +} + +func (_this Upper) String() string { + switch _this.Get_().(type) { + case nil: + return "null" + case Upper_Upper: + { + return "AwsCryptographyDbEncryptionSdkDynamoDbTypes.Upper.Upper" + } + default: + { + return "" + } + } +} + +func (_this Upper) Equals(other Upper) bool { + switch _this.Get_().(type) { + case Upper_Upper: + { + _, ok := other.Get_().(Upper_Upper) + return ok + } + default: + { + return false // unexpected + } + } +} + +func (_this Upper) EqualsGeneric(other interface{}) bool { + typed, ok := other.(Upper) + return ok && _this.Equals(typed) +} + +func Type_Upper_() _dafny.TypeDescriptor { + return type_Upper_{} +} + +type type_Upper_ struct { +} + +func (_this type_Upper_) Default() interface{} { + return Companion_Upper_.Default() +} + +func (_this type_Upper_) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbTypes.Upper" +} +func (_this Upper) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = Upper{} + +// End of datatype Upper + +// Definition of class VersionNumber +type VersionNumber struct { +} + +func New_VersionNumber_() *VersionNumber { + _this := VersionNumber{} + + return &_this +} + +type CompanionStruct_VersionNumber_ struct { +} + +var Companion_VersionNumber_ = CompanionStruct_VersionNumber_{} + +func (*VersionNumber) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbTypes.VersionNumber" +} + +// End of class VersionNumber + +func Type_VersionNumber_() _dafny.TypeDescriptor { + return type_VersionNumber_{} +} + +type type_VersionNumber_ struct { +} + +func (_this type_VersionNumber_) Default() interface{} { + return int32(0) +} + +func (_this type_VersionNumber_) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbTypes.VersionNumber" +} +func (_this *CompanionStruct_VersionNumber_) Is_(__source int32) bool { + var _4_x int32 = (__source) + _ = _4_x + if true { + return Companion_Default___.IsValid__VersionNumber(_4_x) + } + return false +} + +// Definition of datatype VirtualField +type VirtualField struct { + Data_VirtualField_ +} + +func (_this VirtualField) Get_() Data_VirtualField_ { + return _this.Data_VirtualField_ +} + +type Data_VirtualField_ interface { + isVirtualField() +} + +type CompanionStruct_VirtualField_ struct { +} + +var Companion_VirtualField_ = CompanionStruct_VirtualField_{} + +type VirtualField_VirtualField struct { + Name _dafny.Sequence + Parts _dafny.Sequence +} + +func (VirtualField_VirtualField) isVirtualField() {} + +func (CompanionStruct_VirtualField_) Create_VirtualField_(Name _dafny.Sequence, Parts _dafny.Sequence) VirtualField { + return VirtualField{VirtualField_VirtualField{Name, Parts}} +} + +func (_this VirtualField) Is_VirtualField() bool { + _, ok := _this.Get_().(VirtualField_VirtualField) + return ok +} + +func (CompanionStruct_VirtualField_) Default() VirtualField { + return Companion_VirtualField_.Create_VirtualField_(_dafny.EmptySeq.SetString(), _dafny.EmptySeq) +} + +func (_this VirtualField) Dtor_name() _dafny.Sequence { + return _this.Get_().(VirtualField_VirtualField).Name +} + +func (_this VirtualField) Dtor_parts() _dafny.Sequence { + return _this.Get_().(VirtualField_VirtualField).Parts +} + +func (_this VirtualField) String() string { + switch data := _this.Get_().(type) { + case nil: + return "null" + case VirtualField_VirtualField: + { + return "AwsCryptographyDbEncryptionSdkDynamoDbTypes.VirtualField.VirtualField" + "(" + _dafny.String(data.Name) + ", " + _dafny.String(data.Parts) + ")" + } + default: + { + return "" + } + } +} + +func (_this VirtualField) Equals(other VirtualField) bool { + switch data1 := _this.Get_().(type) { + case VirtualField_VirtualField: + { + data2, ok := other.Get_().(VirtualField_VirtualField) + return ok && data1.Name.Equals(data2.Name) && data1.Parts.Equals(data2.Parts) + } + default: + { + return false // unexpected + } + } +} + +func (_this VirtualField) EqualsGeneric(other interface{}) bool { + typed, ok := other.(VirtualField) + return ok && _this.Equals(typed) +} + +func Type_VirtualField_() _dafny.TypeDescriptor { + return type_VirtualField_{} +} + +type type_VirtualField_ struct { +} + +func (_this type_VirtualField_) Default() interface{} { + return Companion_VirtualField_.Default() +} + +func (_this type_VirtualField_) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbTypes.VirtualField" +} +func (_this VirtualField) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = VirtualField{} + +// End of datatype VirtualField + +// Definition of class VirtualFieldList +type VirtualFieldList struct { +} + +func New_VirtualFieldList_() *VirtualFieldList { + _this := VirtualFieldList{} + + return &_this +} + +type CompanionStruct_VirtualFieldList_ struct { +} + +var Companion_VirtualFieldList_ = CompanionStruct_VirtualFieldList_{} + +func (*VirtualFieldList) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbTypes.VirtualFieldList" +} + +// End of class VirtualFieldList + +func Type_VirtualFieldList_() _dafny.TypeDescriptor { + return type_VirtualFieldList_{} +} + +type type_VirtualFieldList_ struct { +} + +func (_this type_VirtualFieldList_) Default() interface{} { + return _dafny.EmptySeq +} + +func (_this type_VirtualFieldList_) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbTypes.VirtualFieldList" +} +func (_this *CompanionStruct_VirtualFieldList_) Is_(__source _dafny.Sequence) bool { + var _5_x _dafny.Sequence = (__source) + _ = _5_x + return Companion_Default___.IsValid__VirtualFieldList(_5_x) +} + +// Definition of datatype VirtualPart +type VirtualPart struct { + Data_VirtualPart_ +} + +func (_this VirtualPart) Get_() Data_VirtualPart_ { + return _this.Data_VirtualPart_ +} + +type Data_VirtualPart_ interface { + isVirtualPart() +} + +type CompanionStruct_VirtualPart_ struct { +} + +var Companion_VirtualPart_ = CompanionStruct_VirtualPart_{} + +type VirtualPart_VirtualPart struct { + Loc _dafny.Sequence + Trans m_Wrappers.Option +} + +func (VirtualPart_VirtualPart) isVirtualPart() {} + +func (CompanionStruct_VirtualPart_) Create_VirtualPart_(Loc _dafny.Sequence, Trans m_Wrappers.Option) VirtualPart { + return VirtualPart{VirtualPart_VirtualPart{Loc, Trans}} +} + +func (_this VirtualPart) Is_VirtualPart() bool { + _, ok := _this.Get_().(VirtualPart_VirtualPart) + return ok +} + +func (CompanionStruct_VirtualPart_) Default() VirtualPart { + return Companion_VirtualPart_.Create_VirtualPart_(_dafny.EmptySeq.SetString(), m_Wrappers.Companion_Option_.Default()) +} + +func (_this VirtualPart) Dtor_loc() _dafny.Sequence { + return _this.Get_().(VirtualPart_VirtualPart).Loc +} + +func (_this VirtualPart) Dtor_trans() m_Wrappers.Option { + return _this.Get_().(VirtualPart_VirtualPart).Trans +} + +func (_this VirtualPart) String() string { + switch data := _this.Get_().(type) { + case nil: + return "null" + case VirtualPart_VirtualPart: + { + return "AwsCryptographyDbEncryptionSdkDynamoDbTypes.VirtualPart.VirtualPart" + "(" + _dafny.String(data.Loc) + ", " + _dafny.String(data.Trans) + ")" + } + default: + { + return "" + } + } +} + +func (_this VirtualPart) Equals(other VirtualPart) bool { + switch data1 := _this.Get_().(type) { + case VirtualPart_VirtualPart: + { + data2, ok := other.Get_().(VirtualPart_VirtualPart) + return ok && data1.Loc.Equals(data2.Loc) && data1.Trans.Equals(data2.Trans) + } + default: + { + return false // unexpected + } + } +} + +func (_this VirtualPart) EqualsGeneric(other interface{}) bool { + typed, ok := other.(VirtualPart) + return ok && _this.Equals(typed) +} + +func Type_VirtualPart_() _dafny.TypeDescriptor { + return type_VirtualPart_{} +} + +type type_VirtualPart_ struct { +} + +func (_this type_VirtualPart_) Default() interface{} { + return Companion_VirtualPart_.Default() +} + +func (_this type_VirtualPart_) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbTypes.VirtualPart" +} +func (_this VirtualPart) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = VirtualPart{} + +// End of datatype VirtualPart + +// Definition of class VirtualPartList +type VirtualPartList struct { +} + +func New_VirtualPartList_() *VirtualPartList { + _this := VirtualPartList{} + + return &_this +} + +type CompanionStruct_VirtualPartList_ struct { +} + +var Companion_VirtualPartList_ = CompanionStruct_VirtualPartList_{} + +func (*VirtualPartList) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbTypes.VirtualPartList" +} + +// End of class VirtualPartList + +func Type_VirtualPartList_() _dafny.TypeDescriptor { + return type_VirtualPartList_{} +} + +type type_VirtualPartList_ struct { +} + +func (_this type_VirtualPartList_) Default() interface{} { + return _dafny.EmptySeq +} + +func (_this type_VirtualPartList_) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbTypes.VirtualPartList" +} +func (_this *CompanionStruct_VirtualPartList_) Is_(__source _dafny.Sequence) bool { + var _6_x _dafny.Sequence = (__source) + _ = _6_x + return Companion_Default___.IsValid__VirtualPartList(_6_x) +} + +// Definition of datatype VirtualTransform +type VirtualTransform struct { + Data_VirtualTransform_ +} + +func (_this VirtualTransform) Get_() Data_VirtualTransform_ { + return _this.Data_VirtualTransform_ +} + +type Data_VirtualTransform_ interface { + isVirtualTransform() +} + +type CompanionStruct_VirtualTransform_ struct { +} + +var Companion_VirtualTransform_ = CompanionStruct_VirtualTransform_{} + +type VirtualTransform_upper struct { + Upper Upper +} + +func (VirtualTransform_upper) isVirtualTransform() {} + +func (CompanionStruct_VirtualTransform_) Create_upper_(Upper Upper) VirtualTransform { + return VirtualTransform{VirtualTransform_upper{Upper}} +} + +func (_this VirtualTransform) Is_upper() bool { + _, ok := _this.Get_().(VirtualTransform_upper) + return ok +} + +type VirtualTransform_lower struct { + Lower Lower +} + +func (VirtualTransform_lower) isVirtualTransform() {} + +func (CompanionStruct_VirtualTransform_) Create_lower_(Lower Lower) VirtualTransform { + return VirtualTransform{VirtualTransform_lower{Lower}} +} + +func (_this VirtualTransform) Is_lower() bool { + _, ok := _this.Get_().(VirtualTransform_lower) + return ok +} + +type VirtualTransform_insert struct { + Insert Insert +} + +func (VirtualTransform_insert) isVirtualTransform() {} + +func (CompanionStruct_VirtualTransform_) Create_insert_(Insert Insert) VirtualTransform { + return VirtualTransform{VirtualTransform_insert{Insert}} +} + +func (_this VirtualTransform) Is_insert() bool { + _, ok := _this.Get_().(VirtualTransform_insert) + return ok +} + +type VirtualTransform_prefix struct { + Prefix GetPrefix +} + +func (VirtualTransform_prefix) isVirtualTransform() {} + +func (CompanionStruct_VirtualTransform_) Create_prefix_(Prefix GetPrefix) VirtualTransform { + return VirtualTransform{VirtualTransform_prefix{Prefix}} +} + +func (_this VirtualTransform) Is_prefix() bool { + _, ok := _this.Get_().(VirtualTransform_prefix) + return ok +} + +type VirtualTransform_suffix struct { + Suffix GetSuffix +} + +func (VirtualTransform_suffix) isVirtualTransform() {} + +func (CompanionStruct_VirtualTransform_) Create_suffix_(Suffix GetSuffix) VirtualTransform { + return VirtualTransform{VirtualTransform_suffix{Suffix}} +} + +func (_this VirtualTransform) Is_suffix() bool { + _, ok := _this.Get_().(VirtualTransform_suffix) + return ok +} + +type VirtualTransform_substring struct { + Substring GetSubstring +} + +func (VirtualTransform_substring) isVirtualTransform() {} + +func (CompanionStruct_VirtualTransform_) Create_substring_(Substring GetSubstring) VirtualTransform { + return VirtualTransform{VirtualTransform_substring{Substring}} +} + +func (_this VirtualTransform) Is_substring() bool { + _, ok := _this.Get_().(VirtualTransform_substring) + return ok +} + +type VirtualTransform_segment struct { + Segment GetSegment +} + +func (VirtualTransform_segment) isVirtualTransform() {} + +func (CompanionStruct_VirtualTransform_) Create_segment_(Segment GetSegment) VirtualTransform { + return VirtualTransform{VirtualTransform_segment{Segment}} +} + +func (_this VirtualTransform) Is_segment() bool { + _, ok := _this.Get_().(VirtualTransform_segment) + return ok +} + +type VirtualTransform_segments struct { + Segments GetSegments +} + +func (VirtualTransform_segments) isVirtualTransform() {} + +func (CompanionStruct_VirtualTransform_) Create_segments_(Segments GetSegments) VirtualTransform { + return VirtualTransform{VirtualTransform_segments{Segments}} +} + +func (_this VirtualTransform) Is_segments() bool { + _, ok := _this.Get_().(VirtualTransform_segments) + return ok +} + +func (CompanionStruct_VirtualTransform_) Default() VirtualTransform { + return Companion_VirtualTransform_.Create_upper_(Companion_Upper_.Default()) +} + +func (_this VirtualTransform) Dtor_upper() Upper { + return _this.Get_().(VirtualTransform_upper).Upper +} + +func (_this VirtualTransform) Dtor_lower() Lower { + return _this.Get_().(VirtualTransform_lower).Lower +} + +func (_this VirtualTransform) Dtor_insert() Insert { + return _this.Get_().(VirtualTransform_insert).Insert +} + +func (_this VirtualTransform) Dtor_prefix() GetPrefix { + return _this.Get_().(VirtualTransform_prefix).Prefix +} + +func (_this VirtualTransform) Dtor_suffix() GetSuffix { + return _this.Get_().(VirtualTransform_suffix).Suffix +} + +func (_this VirtualTransform) Dtor_substring() GetSubstring { + return _this.Get_().(VirtualTransform_substring).Substring +} + +func (_this VirtualTransform) Dtor_segment() GetSegment { + return _this.Get_().(VirtualTransform_segment).Segment +} + +func (_this VirtualTransform) Dtor_segments() GetSegments { + return _this.Get_().(VirtualTransform_segments).Segments +} + +func (_this VirtualTransform) String() string { + switch data := _this.Get_().(type) { + case nil: + return "null" + case VirtualTransform_upper: + { + return "AwsCryptographyDbEncryptionSdkDynamoDbTypes.VirtualTransform.upper" + "(" + _dafny.String(data.Upper) + ")" + } + case VirtualTransform_lower: + { + return "AwsCryptographyDbEncryptionSdkDynamoDbTypes.VirtualTransform.lower" + "(" + _dafny.String(data.Lower) + ")" + } + case VirtualTransform_insert: + { + return "AwsCryptographyDbEncryptionSdkDynamoDbTypes.VirtualTransform.insert" + "(" + _dafny.String(data.Insert) + ")" + } + case VirtualTransform_prefix: + { + return "AwsCryptographyDbEncryptionSdkDynamoDbTypes.VirtualTransform.prefix" + "(" + _dafny.String(data.Prefix) + ")" + } + case VirtualTransform_suffix: + { + return "AwsCryptographyDbEncryptionSdkDynamoDbTypes.VirtualTransform.suffix" + "(" + _dafny.String(data.Suffix) + ")" + } + case VirtualTransform_substring: + { + return "AwsCryptographyDbEncryptionSdkDynamoDbTypes.VirtualTransform.substring" + "(" + _dafny.String(data.Substring) + ")" + } + case VirtualTransform_segment: + { + return "AwsCryptographyDbEncryptionSdkDynamoDbTypes.VirtualTransform.segment" + "(" + _dafny.String(data.Segment) + ")" + } + case VirtualTransform_segments: + { + return "AwsCryptographyDbEncryptionSdkDynamoDbTypes.VirtualTransform.segments" + "(" + _dafny.String(data.Segments) + ")" + } + default: + { + return "" + } + } +} + +func (_this VirtualTransform) Equals(other VirtualTransform) bool { + switch data1 := _this.Get_().(type) { + case VirtualTransform_upper: + { + data2, ok := other.Get_().(VirtualTransform_upper) + return ok && data1.Upper.Equals(data2.Upper) + } + case VirtualTransform_lower: + { + data2, ok := other.Get_().(VirtualTransform_lower) + return ok && data1.Lower.Equals(data2.Lower) + } + case VirtualTransform_insert: + { + data2, ok := other.Get_().(VirtualTransform_insert) + return ok && data1.Insert.Equals(data2.Insert) + } + case VirtualTransform_prefix: + { + data2, ok := other.Get_().(VirtualTransform_prefix) + return ok && data1.Prefix.Equals(data2.Prefix) + } + case VirtualTransform_suffix: + { + data2, ok := other.Get_().(VirtualTransform_suffix) + return ok && data1.Suffix.Equals(data2.Suffix) + } + case VirtualTransform_substring: + { + data2, ok := other.Get_().(VirtualTransform_substring) + return ok && data1.Substring.Equals(data2.Substring) + } + case VirtualTransform_segment: + { + data2, ok := other.Get_().(VirtualTransform_segment) + return ok && data1.Segment.Equals(data2.Segment) + } + case VirtualTransform_segments: + { + data2, ok := other.Get_().(VirtualTransform_segments) + return ok && data1.Segments.Equals(data2.Segments) + } + default: + { + return false // unexpected + } + } +} + +func (_this VirtualTransform) EqualsGeneric(other interface{}) bool { + typed, ok := other.(VirtualTransform) + return ok && _this.Equals(typed) +} + +func Type_VirtualTransform_() _dafny.TypeDescriptor { + return type_VirtualTransform_{} +} + +type type_VirtualTransform_ struct { +} + +func (_this type_VirtualTransform_) Default() interface{} { + return Companion_VirtualTransform_.Default() +} + +func (_this type_VirtualTransform_) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbTypes.VirtualTransform" +} +func (_this VirtualTransform) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = VirtualTransform{} + +// End of datatype VirtualTransform + +// Definition of class VirtualTransformList +type VirtualTransformList struct { +} + +func New_VirtualTransformList_() *VirtualTransformList { + _this := VirtualTransformList{} + + return &_this +} + +type CompanionStruct_VirtualTransformList_ struct { +} + +var Companion_VirtualTransformList_ = CompanionStruct_VirtualTransformList_{} + +func (*VirtualTransformList) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbTypes.VirtualTransformList" +} + +// End of class VirtualTransformList + +func Type_VirtualTransformList_() _dafny.TypeDescriptor { + return type_VirtualTransformList_{} +} + +type type_VirtualTransformList_ struct { +} + +func (_this type_VirtualTransformList_) Default() interface{} { + return _dafny.EmptySeq +} + +func (_this type_VirtualTransformList_) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbTypes.VirtualTransformList" +} +func (_this *CompanionStruct_VirtualTransformList_) Is_(__source _dafny.Sequence) bool { + var _7_x _dafny.Sequence = (__source) + _ = _7_x + return Companion_Default___.IsValid__VirtualTransformList(_7_x) +} + +// Definition of datatype Error +type Error struct { + Data_Error_ +} + +func (_this Error) Get_() Data_Error_ { + return _this.Data_Error_ +} + +type Data_Error_ interface { + isError() +} + +type CompanionStruct_Error_ struct { +} + +var Companion_Error_ = CompanionStruct_Error_{} + +type Error_DynamoDbEncryptionException struct { + Message _dafny.Sequence +} + +func (Error_DynamoDbEncryptionException) isError() {} + +func (CompanionStruct_Error_) Create_DynamoDbEncryptionException_(Message _dafny.Sequence) Error { + return Error{Error_DynamoDbEncryptionException{Message}} +} + +func (_this Error) Is_DynamoDbEncryptionException() bool { + _, ok := _this.Get_().(Error_DynamoDbEncryptionException) + return ok +} + +type Error_AwsCryptographyDbEncryptionSdkStructuredEncryption struct { + AwsCryptographyDbEncryptionSdkStructuredEncryption m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Error +} + +func (Error_AwsCryptographyDbEncryptionSdkStructuredEncryption) isError() {} + +func (CompanionStruct_Error_) Create_AwsCryptographyDbEncryptionSdkStructuredEncryption_(AwsCryptographyDbEncryptionSdkStructuredEncryption m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Error) Error { + return Error{Error_AwsCryptographyDbEncryptionSdkStructuredEncryption{AwsCryptographyDbEncryptionSdkStructuredEncryption}} +} + +func (_this Error) Is_AwsCryptographyDbEncryptionSdkStructuredEncryption() bool { + _, ok := _this.Get_().(Error_AwsCryptographyDbEncryptionSdkStructuredEncryption) + return ok +} + +type Error_AwsCryptographyMaterialProviders struct { + AwsCryptographyMaterialProviders m_AwsCryptographyMaterialProvidersTypes.Error +} + +func (Error_AwsCryptographyMaterialProviders) isError() {} + +func (CompanionStruct_Error_) Create_AwsCryptographyMaterialProviders_(AwsCryptographyMaterialProviders m_AwsCryptographyMaterialProvidersTypes.Error) Error { + return Error{Error_AwsCryptographyMaterialProviders{AwsCryptographyMaterialProviders}} +} + +func (_this Error) Is_AwsCryptographyMaterialProviders() bool { + _, ok := _this.Get_().(Error_AwsCryptographyMaterialProviders) + return ok +} + +type Error_AwsCryptographyKeyStore struct { + AwsCryptographyKeyStore m_AwsCryptographyKeyStoreTypes.Error +} + +func (Error_AwsCryptographyKeyStore) isError() {} + +func (CompanionStruct_Error_) Create_AwsCryptographyKeyStore_(AwsCryptographyKeyStore m_AwsCryptographyKeyStoreTypes.Error) Error { + return Error{Error_AwsCryptographyKeyStore{AwsCryptographyKeyStore}} +} + +func (_this Error) Is_AwsCryptographyKeyStore() bool { + _, ok := _this.Get_().(Error_AwsCryptographyKeyStore) + return ok +} + +type Error_AwsCryptographyPrimitives struct { + AwsCryptographyPrimitives m_AwsCryptographyPrimitivesTypes.Error +} + +func (Error_AwsCryptographyPrimitives) isError() {} + +func (CompanionStruct_Error_) Create_AwsCryptographyPrimitives_(AwsCryptographyPrimitives m_AwsCryptographyPrimitivesTypes.Error) Error { + return Error{Error_AwsCryptographyPrimitives{AwsCryptographyPrimitives}} +} + +func (_this Error) Is_AwsCryptographyPrimitives() bool { + _, ok := _this.Get_().(Error_AwsCryptographyPrimitives) + return ok +} + +type Error_ComAmazonawsDynamodb struct { + ComAmazonawsDynamodb m_ComAmazonawsDynamodbTypes.Error +} + +func (Error_ComAmazonawsDynamodb) isError() {} + +func (CompanionStruct_Error_) Create_ComAmazonawsDynamodb_(ComAmazonawsDynamodb m_ComAmazonawsDynamodbTypes.Error) Error { + return Error{Error_ComAmazonawsDynamodb{ComAmazonawsDynamodb}} +} + +func (_this Error) Is_ComAmazonawsDynamodb() bool { + _, ok := _this.Get_().(Error_ComAmazonawsDynamodb) + return ok +} + +type Error_CollectionOfErrors struct { + List _dafny.Sequence + Message _dafny.Sequence +} + +func (Error_CollectionOfErrors) isError() {} + +func (CompanionStruct_Error_) Create_CollectionOfErrors_(List _dafny.Sequence, Message _dafny.Sequence) Error { + return Error{Error_CollectionOfErrors{List, Message}} +} + +func (_this Error) Is_CollectionOfErrors() bool { + _, ok := _this.Get_().(Error_CollectionOfErrors) + return ok +} + +type Error_Opaque struct { + Obj interface{} +} + +func (Error_Opaque) isError() {} + +func (CompanionStruct_Error_) Create_Opaque_(Obj interface{}) Error { + return Error{Error_Opaque{Obj}} +} + +func (_this Error) Is_Opaque() bool { + _, ok := _this.Get_().(Error_Opaque) + return ok +} + +type Error_OpaqueWithText struct { + Obj interface{} + ObjMessage _dafny.Sequence +} + +func (Error_OpaqueWithText) isError() {} + +func (CompanionStruct_Error_) Create_OpaqueWithText_(Obj interface{}, ObjMessage _dafny.Sequence) Error { + return Error{Error_OpaqueWithText{Obj, ObjMessage}} +} + +func (_this Error) Is_OpaqueWithText() bool { + _, ok := _this.Get_().(Error_OpaqueWithText) + return ok +} + +func (CompanionStruct_Error_) Default() Error { + return Companion_Error_.Create_DynamoDbEncryptionException_(_dafny.EmptySeq.SetString()) +} + +func (_this Error) Dtor_message() _dafny.Sequence { + switch data := _this.Get_().(type) { + case Error_DynamoDbEncryptionException: + return data.Message + default: + return data.(Error_CollectionOfErrors).Message + } +} + +func (_this Error) Dtor_AwsCryptographyDbEncryptionSdkStructuredEncryption() m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Error { + return _this.Get_().(Error_AwsCryptographyDbEncryptionSdkStructuredEncryption).AwsCryptographyDbEncryptionSdkStructuredEncryption +} + +func (_this Error) Dtor_AwsCryptographyMaterialProviders() m_AwsCryptographyMaterialProvidersTypes.Error { + return _this.Get_().(Error_AwsCryptographyMaterialProviders).AwsCryptographyMaterialProviders +} + +func (_this Error) Dtor_AwsCryptographyKeyStore() m_AwsCryptographyKeyStoreTypes.Error { + return _this.Get_().(Error_AwsCryptographyKeyStore).AwsCryptographyKeyStore +} + +func (_this Error) Dtor_AwsCryptographyPrimitives() m_AwsCryptographyPrimitivesTypes.Error { + return _this.Get_().(Error_AwsCryptographyPrimitives).AwsCryptographyPrimitives +} + +func (_this Error) Dtor_ComAmazonawsDynamodb() m_ComAmazonawsDynamodbTypes.Error { + return _this.Get_().(Error_ComAmazonawsDynamodb).ComAmazonawsDynamodb +} + +func (_this Error) Dtor_list() _dafny.Sequence { + return _this.Get_().(Error_CollectionOfErrors).List +} + +func (_this Error) Dtor_obj() interface{} { + switch data := _this.Get_().(type) { + case Error_Opaque: + return data.Obj + default: + return data.(Error_OpaqueWithText).Obj + } +} + +func (_this Error) Dtor_objMessage() _dafny.Sequence { + return _this.Get_().(Error_OpaqueWithText).ObjMessage +} + +func (_this Error) String() string { + switch data := _this.Get_().(type) { + case nil: + return "null" + case Error_DynamoDbEncryptionException: + { + return "AwsCryptographyDbEncryptionSdkDynamoDbTypes.Error.DynamoDbEncryptionException" + "(" + _dafny.String(data.Message) + ")" + } + case Error_AwsCryptographyDbEncryptionSdkStructuredEncryption: + { + return "AwsCryptographyDbEncryptionSdkDynamoDbTypes.Error.AwsCryptographyDbEncryptionSdkStructuredEncryption" + "(" + _dafny.String(data.AwsCryptographyDbEncryptionSdkStructuredEncryption) + ")" + } + case Error_AwsCryptographyMaterialProviders: + { + return "AwsCryptographyDbEncryptionSdkDynamoDbTypes.Error.AwsCryptographyMaterialProviders" + "(" + _dafny.String(data.AwsCryptographyMaterialProviders) + ")" + } + case Error_AwsCryptographyKeyStore: + { + return "AwsCryptographyDbEncryptionSdkDynamoDbTypes.Error.AwsCryptographyKeyStore" + "(" + _dafny.String(data.AwsCryptographyKeyStore) + ")" + } + case Error_AwsCryptographyPrimitives: + { + return "AwsCryptographyDbEncryptionSdkDynamoDbTypes.Error.AwsCryptographyPrimitives" + "(" + _dafny.String(data.AwsCryptographyPrimitives) + ")" + } + case Error_ComAmazonawsDynamodb: + { + return "AwsCryptographyDbEncryptionSdkDynamoDbTypes.Error.ComAmazonawsDynamodb" + "(" + _dafny.String(data.ComAmazonawsDynamodb) + ")" + } + case Error_CollectionOfErrors: + { + return "AwsCryptographyDbEncryptionSdkDynamoDbTypes.Error.CollectionOfErrors" + "(" + _dafny.String(data.List) + ", " + _dafny.String(data.Message) + ")" + } + case Error_Opaque: + { + return "AwsCryptographyDbEncryptionSdkDynamoDbTypes.Error.Opaque" + "(" + _dafny.String(data.Obj) + ")" + } + case Error_OpaqueWithText: + { + return "AwsCryptographyDbEncryptionSdkDynamoDbTypes.Error.OpaqueWithText" + "(" + _dafny.String(data.Obj) + ", " + _dafny.String(data.ObjMessage) + ")" + } + default: + { + return "" + } + } +} + +func (_this Error) Equals(other Error) bool { + switch data1 := _this.Get_().(type) { + case Error_DynamoDbEncryptionException: + { + data2, ok := other.Get_().(Error_DynamoDbEncryptionException) + return ok && data1.Message.Equals(data2.Message) + } + case Error_AwsCryptographyDbEncryptionSdkStructuredEncryption: + { + data2, ok := other.Get_().(Error_AwsCryptographyDbEncryptionSdkStructuredEncryption) + return ok && data1.AwsCryptographyDbEncryptionSdkStructuredEncryption.Equals(data2.AwsCryptographyDbEncryptionSdkStructuredEncryption) + } + case Error_AwsCryptographyMaterialProviders: + { + data2, ok := other.Get_().(Error_AwsCryptographyMaterialProviders) + return ok && data1.AwsCryptographyMaterialProviders.Equals(data2.AwsCryptographyMaterialProviders) + } + case Error_AwsCryptographyKeyStore: + { + data2, ok := other.Get_().(Error_AwsCryptographyKeyStore) + return ok && data1.AwsCryptographyKeyStore.Equals(data2.AwsCryptographyKeyStore) + } + case Error_AwsCryptographyPrimitives: + { + data2, ok := other.Get_().(Error_AwsCryptographyPrimitives) + return ok && data1.AwsCryptographyPrimitives.Equals(data2.AwsCryptographyPrimitives) + } + case Error_ComAmazonawsDynamodb: + { + data2, ok := other.Get_().(Error_ComAmazonawsDynamodb) + return ok && data1.ComAmazonawsDynamodb.Equals(data2.ComAmazonawsDynamodb) + } + case Error_CollectionOfErrors: + { + data2, ok := other.Get_().(Error_CollectionOfErrors) + return ok && data1.List.Equals(data2.List) && data1.Message.Equals(data2.Message) + } + case Error_Opaque: + { + data2, ok := other.Get_().(Error_Opaque) + return ok && _dafny.AreEqual(data1.Obj, data2.Obj) + } + case Error_OpaqueWithText: + { + data2, ok := other.Get_().(Error_OpaqueWithText) + return ok && _dafny.AreEqual(data1.Obj, data2.Obj) && data1.ObjMessage.Equals(data2.ObjMessage) + } + default: + { + return false // unexpected + } + } +} + +func (_this Error) EqualsGeneric(other interface{}) bool { + typed, ok := other.(Error) + return ok && _this.Equals(typed) +} + +func Type_Error_() _dafny.TypeDescriptor { + return type_Error_{} +} + +type type_Error_ struct { +} + +func (_this type_Error_) Default() interface{} { + return Companion_Error_.Default() +} + +func (_this type_Error_) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbTypes.Error" +} +func (_this Error) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = Error{} + +// End of datatype Error + +// Definition of class OpaqueError +type OpaqueError struct { +} + +func New_OpaqueError_() *OpaqueError { + _this := OpaqueError{} + + return &_this +} + +type CompanionStruct_OpaqueError_ struct { +} + +var Companion_OpaqueError_ = CompanionStruct_OpaqueError_{} + +func (*OpaqueError) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbTypes.OpaqueError" +} + +// End of class OpaqueError + +func Type_OpaqueError_() _dafny.TypeDescriptor { + return type_OpaqueError_{} +} + +type type_OpaqueError_ struct { +} + +func (_this type_OpaqueError_) Default() interface{} { + return Companion_Error_.Default() +} + +func (_this type_OpaqueError_) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbTypes.OpaqueError" +} +func (_this *CompanionStruct_OpaqueError_) Is_(__source Error) bool { + var _8_e Error = (__source) + _ = _8_e + return ((_8_e).Is_Opaque()) || ((_8_e).Is_OpaqueWithText()) +} + +// Definition of class DummySubsetType +type DummySubsetType struct { +} + +func New_DummySubsetType_() *DummySubsetType { + _this := DummySubsetType{} + + return &_this +} + +type CompanionStruct_DummySubsetType_ struct { +} + +var Companion_DummySubsetType_ = CompanionStruct_DummySubsetType_{} + +func (*DummySubsetType) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbTypes.DummySubsetType" +} +func (_this *CompanionStruct_DummySubsetType_) Witness() _dafny.Int { + return _dafny.One +} + +// End of class DummySubsetType + +func Type_DummySubsetType_() _dafny.TypeDescriptor { + return type_DummySubsetType_{} +} + +type type_DummySubsetType_ struct { +} + +func (_this type_DummySubsetType_) Default() interface{} { + return Companion_DummySubsetType_.Witness() +} + +func (_this type_DummySubsetType_) String() string { + return "AwsCryptographyDbEncryptionSdkDynamoDbTypes.DummySubsetType" +} +func (_this *CompanionStruct_DummySubsetType_) Is_(__source _dafny.Int) bool { + var _9_x _dafny.Int = (__source) + _ = _9_x + return Companion_Default___.IsDummySubsetType(_9_x) +} diff --git a/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations/AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations.go b/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations/AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations.go new file mode 100644 index 000000000..bf1d8b278 --- /dev/null +++ b/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations/AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations.go @@ -0,0 +1,1685 @@ +// Package AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations +// Dafny module AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations compiled into Go + +package AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations + +import ( + os "os" + + m_ComAmazonawsDynamodbTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/dynamodb/ComAmazonawsDynamodbTypes" + m_Com_Amazonaws_Dynamodb "github.com/aws/aws-cryptographic-material-providers-library/releases/go/dynamodb/Com_Amazonaws_Dynamodb" + m_ComAmazonawsKmsTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/kms/ComAmazonawsKmsTypes" + m_Com_Amazonaws_Kms "github.com/aws/aws-cryptographic-material-providers-library/releases/go/kms/Com_Amazonaws_Kms" + m_AlgorithmSuites "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AlgorithmSuites" + m_AwsArnParsing "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsArnParsing" + m_AwsCryptographyKeyStoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyKeyStoreOperations" + m_AwsCryptographyKeyStoreTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyKeyStoreTypes" + m_AwsCryptographyMaterialProvidersOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyMaterialProvidersOperations" + m_AwsCryptographyMaterialProvidersTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyMaterialProvidersTypes" + m_AwsKmsDiscoveryKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsDiscoveryKeyring" + m_AwsKmsEcdhKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsEcdhKeyring" + m_AwsKmsHierarchicalKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsHierarchicalKeyring" + m_AwsKmsKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsKeyring" + m_AwsKmsMrkAreUnique "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkAreUnique" + m_AwsKmsMrkDiscoveryKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkDiscoveryKeyring" + m_AwsKmsMrkKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkKeyring" + m_AwsKmsMrkMatchForDecrypt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkMatchForDecrypt" + m_AwsKmsRsaKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsRsaKeyring" + m_AwsKmsUtils "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsUtils" + m_CMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CMM" + m_CacheConstants "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CacheConstants" + m_CanonicalEncryptionContext "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CanonicalEncryptionContext" + m_Commitment "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Commitment" + m_Constants "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Constants" + m_CreateKeyStoreTable "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CreateKeyStoreTable" + m_CreateKeys "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CreateKeys" + m_DDBKeystoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DDBKeystoreOperations" + m_DefaultCMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DefaultCMM" + m_DefaultClientSupplier "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DefaultClientSupplier" + m_Defaults "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Defaults" + m_DiscoveryMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DiscoveryMultiKeyring" + m_EcdhEdkWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/EcdhEdkWrapping" + m_EdkWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/EdkWrapping" + m_ErrorMessages "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/ErrorMessages" + m_GetKeys "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/GetKeys" + m_IntermediateKeyWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/IntermediateKeyWrapping" + m_KMSKeystoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KMSKeystoreOperations" + m_KeyStore "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KeyStore" + m_KeyStoreErrorMessages "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KeyStoreErrorMessages" + m_Keyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Keyring" + m_KmsArn "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KmsArn" + m_LocalCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/LocalCMC" + m_MaterialProviders "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MaterialProviders" + m_MaterialWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MaterialWrapping" + m_Materials "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Materials" + m_MrkAwareDiscoveryMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MrkAwareDiscoveryMultiKeyring" + m_MrkAwareStrictMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MrkAwareStrictMultiKeyring" + m_MultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MultiKeyring" + m_RawAESKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawAESKeyring" + m_RawECDHKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawECDHKeyring" + m_RawRSAKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawRSAKeyring" + m_RequiredEncryptionContextCMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RequiredEncryptionContextCMM" + m_StormTracker "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StormTracker" + m_StormTrackingCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StormTrackingCMC" + m_StrictMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StrictMultiKeyring" + m_Structure "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Structure" + m_SynchronizedLocalCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/SynchronizedLocalCMC" + m_Utils "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Utils" + m_AtomicPrimitives "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AtomicPrimitives" + m_AwsCryptographyPrimitivesOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AwsCryptographyPrimitivesOperations" + m_AwsCryptographyPrimitivesTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AwsCryptographyPrimitivesTypes" + m_Digest "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/Digest" + m_HKDF "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/HKDF" + m_KdfCtr "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/KdfCtr" + m_Random "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/Random" + m_WrappedHKDF "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/WrappedHKDF" + m_WrappedHMAC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/WrappedHMAC" + m_Actions "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Actions" + m_Base64 "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Base64" + m_Base64Lemmas "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Base64Lemmas" + m_BoundedInts "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/BoundedInts" + m_DivInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivInternals" + m_DivInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivInternalsNonlinear" + m_DivMod "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivMod" + m_FileIO "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/FileIO" + m_FloatCompare "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/FloatCompare" + m_Functions "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Functions" + m_GeneralInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/GeneralInternals" + m_GetOpt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/GetOpt" + m_HexStrings "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/HexStrings" + m_Logarithm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Logarithm" + m__Math "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Math_" + m_ModInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/ModInternals" + m_ModInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/ModInternalsNonlinear" + m_Mul "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Mul" + m_MulInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/MulInternals" + m_MulInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/MulInternalsNonlinear" + m_Power "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Power" + m_Relations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Relations" + m_Seq "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Seq" + m_Seq_MergeSort "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Seq_MergeSort" + m_SortedSets "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/SortedSets" + m_Sorting "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Sorting" + m_StandardLibrary "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary" + m_StandardLibraryInterop "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibraryInterop" + m_StandardLibrary_MemoryMath "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_MemoryMath" + m_StandardLibrary_Sequence "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_Sequence" + m_StandardLibrary_String "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_String" + m_StandardLibrary_UInt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_UInt" + m_Streams "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Streams" + m_UTF8 "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/UTF8" + m_UnicodeStrings "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/UnicodeStrings" + m__Unicode "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Unicode_" + m_Utf16EncodingForm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Utf16EncodingForm" + m_Utf8EncodingForm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Utf8EncodingForm" + m_Wrappers "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Wrappers" + m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes" + m_Canonize "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/Canonize" + m__Maps "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/Maps_" + m_OptimizedMergeSort "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/OptimizedMergeSort" + m_Sets "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/Sets" + m_SortCanon "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/SortCanon" + m_StructuredEncryptionCrypt "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionCrypt" + m_StructuredEncryptionFooter "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionFooter" + m_StructuredEncryptionHeader "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionHeader" + m_StructuredEncryptionPaths "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionPaths" + m_StructuredEncryptionUtil "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionUtil" + m__System "github.com/dafny-lang/DafnyRuntimeGo/v4/System_" + _dafny "github.com/dafny-lang/DafnyRuntimeGo/v4/dafny" +) + +var _ = os.Args +var _ _dafny.Dummy__ +var _ m__System.Dummy__ +var _ m_Wrappers.Dummy__ +var _ m_BoundedInts.Dummy__ +var _ m_StandardLibrary_UInt.Dummy__ +var _ m_StandardLibrary_MemoryMath.Dummy__ +var _ m_StandardLibrary_Sequence.Dummy__ +var _ m_StandardLibrary_String.Dummy__ +var _ m_StandardLibrary.Dummy__ +var _ m_AwsCryptographyPrimitivesTypes.Dummy__ +var _ m_Random.Dummy__ +var _ m_Digest.Dummy__ +var _ m_WrappedHMAC.Dummy__ +var _ m_HKDF.Dummy__ +var _ m_WrappedHKDF.Dummy__ +var _ m_KdfCtr.Dummy__ +var _ m_AwsCryptographyPrimitivesOperations.Dummy__ +var _ m_AtomicPrimitives.Dummy__ +var _ m_ComAmazonawsDynamodbTypes.Dummy__ +var _ m_ComAmazonawsKmsTypes.Dummy__ +var _ m_AwsCryptographyKeyStoreTypes.Dummy__ +var _ m_AwsCryptographyMaterialProvidersTypes.Dummy__ +var _ m_Base64.Dummy__ +var _ m_AlgorithmSuites.Dummy__ +var _ m_Materials.Dummy__ +var _ m_Keyring.Dummy__ +var _ m_Relations.Dummy__ +var _ m_Seq_MergeSort.Dummy__ +var _ m__Math.Dummy__ +var _ m_Seq.Dummy__ +var _ m_Actions.Dummy__ +var _ m_CanonicalEncryptionContext.Dummy__ +var _ m_MaterialWrapping.Dummy__ +var _ m_IntermediateKeyWrapping.Dummy__ +var _ m_EdkWrapping.Dummy__ +var _ m_ErrorMessages.Dummy__ +var _ m_RawAESKeyring.Dummy__ +var _ m_AwsArnParsing.Dummy__ +var _ m_Constants.Dummy__ +var _ m_EcdhEdkWrapping.Dummy__ +var _ m_RawECDHKeyring.Dummy__ +var _ m_RawRSAKeyring.Dummy__ +var _ m_AwsKmsMrkMatchForDecrypt.Dummy__ +var _ m_AwsKmsUtils.Dummy__ +var _ m_AwsKmsKeyring.Dummy__ +var _ m_AwsKmsDiscoveryKeyring.Dummy__ +var _ m_AwsKmsEcdhKeyring.Dummy__ +var _ m_FileIO.Dummy__ +var _ m_LocalCMC.Dummy__ +var _ m_SynchronizedLocalCMC.Dummy__ +var _ m_StormTracker.Dummy__ +var _ m_StormTrackingCMC.Dummy__ +var _ m_CacheConstants.Dummy__ +var _ m_AwsKmsHierarchicalKeyring.Dummy__ +var _ m_AwsKmsMrkDiscoveryKeyring.Dummy__ +var _ m_AwsKmsMrkKeyring.Dummy__ +var _ m_AwsKmsRsaKeyring.Dummy__ +var _ m_MultiKeyring.Dummy__ +var _ m_AwsKmsMrkAreUnique.Dummy__ +var _ m_StrictMultiKeyring.Dummy__ +var _ m_Com_Amazonaws_Kms.Dummy__ +var _ m_Com_Amazonaws_Dynamodb.Dummy__ +var _ m_DiscoveryMultiKeyring.Dummy__ +var _ m_MrkAwareDiscoveryMultiKeyring.Dummy__ +var _ m_MrkAwareStrictMultiKeyring.Dummy__ +var _ m_CMM.Dummy__ +var _ m_Defaults.Dummy__ +var _ m_Commitment.Dummy__ +var _ m_DefaultCMM.Dummy__ +var _ m_DefaultClientSupplier.Dummy__ +var _ m_Utils.Dummy__ +var _ m_RequiredEncryptionContextCMM.Dummy__ +var _ m_AwsCryptographyMaterialProvidersOperations.Dummy__ +var _ m_MaterialProviders.Dummy__ +var _ m_KeyStoreErrorMessages.Dummy__ +var _ m_KmsArn.Dummy__ +var _ m_Structure.Dummy__ +var _ m_KMSKeystoreOperations.Dummy__ +var _ m_DDBKeystoreOperations.Dummy__ +var _ m_CreateKeys.Dummy__ +var _ m_CreateKeyStoreTable.Dummy__ +var _ m_GetKeys.Dummy__ +var _ m_AwsCryptographyKeyStoreOperations.Dummy__ +var _ m_KeyStore.Dummy__ +var _ m__Unicode.Dummy__ +var _ m_Functions.Dummy__ +var _ m_Utf8EncodingForm.Dummy__ +var _ m_Utf16EncodingForm.Dummy__ +var _ m_UnicodeStrings.Dummy__ +var _ m_GeneralInternals.Dummy__ +var _ m_MulInternalsNonlinear.Dummy__ +var _ m_MulInternals.Dummy__ +var _ m_Mul.Dummy__ +var _ m_ModInternalsNonlinear.Dummy__ +var _ m_DivInternalsNonlinear.Dummy__ +var _ m_ModInternals.Dummy__ +var _ m_DivInternals.Dummy__ +var _ m_DivMod.Dummy__ +var _ m_Power.Dummy__ +var _ m_Logarithm.Dummy__ +var _ m_StandardLibraryInterop.Dummy__ +var _ m_Streams.Dummy__ +var _ m_Sorting.Dummy__ +var _ m_HexStrings.Dummy__ +var _ m_GetOpt.Dummy__ +var _ m_FloatCompare.Dummy__ +var _ m_Base64Lemmas.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Dummy__ +var _ m_StructuredEncryptionUtil.Dummy__ +var _ m_Sets.Dummy__ +var _ m_StructuredEncryptionPaths.Dummy__ +var _ m_StructuredEncryptionHeader.Dummy__ +var _ m_StructuredEncryptionFooter.Dummy__ +var _ m_OptimizedMergeSort.Dummy__ +var _ m_SortCanon.Dummy__ +var _ m_Canonize.Dummy__ +var _ m_StructuredEncryptionCrypt.Dummy__ +var _ m__Maps.Dummy__ + +type Dummy__ struct{} + +// Definition of class Default__ +type Default__ struct { + dummy byte +} + +func New_Default___() *Default__ { + _this := Default__{} + + return &_this +} + +type CompanionStruct_Default___ struct { +} + +var Companion_Default___ = CompanionStruct_Default___{} + +func (_this *Default__) Equals(other *Default__) bool { + return _this == other +} + +func (_this *Default__) EqualsGeneric(x interface{}) bool { + other, ok := x.(*Default__) + return ok && _this.Equals(other) +} + +func (*Default__) String() string { + return "AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations.Default__" +} +func (_this *Default__) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = &Default__{} + +func (_static *CompanionStruct_Default___) ResolveAuthActions(config Config, input m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.ResolveAuthActionsInput) m_Wrappers.Result { + var output m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Companion_ResolveAuthActionsOutput_.Default()) + _ = output + var _0_valueOrError0 m_Wrappers.Outcome = m_Wrappers.Companion_Outcome_.Default() + _ = _0_valueOrError0 + _0_valueOrError0 = m_Wrappers.Companion_Default___.Need(m_StructuredEncryptionUtil.Companion_Default___.AuthListHasNoDuplicatesFromSet((input).Dtor_authActions()), m_StructuredEncryptionUtil.Companion_Default___.E(_dafny.SeqOfString("Duplicate Paths"))) + if (_0_valueOrError0).IsFailure() { + output = (_0_valueOrError0).PropagateFailure() + return output + } + var _1_valueOrError1 m_Wrappers.Result = m_Wrappers.Result{} + _ = _1_valueOrError1 + _1_valueOrError1 = m_StructuredEncryptionHeader.Companion_Default___.PartialDeserialize((input).Dtor_headerBytes()) + if (_1_valueOrError1).IsFailure() { + output = (_1_valueOrError1).PropagateFailure() + return output + } + var _2_head m_StructuredEncryptionHeader.PartialHeader + _ = _2_head + _2_head = (_1_valueOrError1).Extract().(m_StructuredEncryptionHeader.PartialHeader) + var _3_valueOrError2 m_Wrappers.Outcome = m_Wrappers.Companion_Outcome_.Default() + _ = _3_valueOrError2 + _3_valueOrError2 = m_Wrappers.Companion_Default___.Need(m_StructuredEncryptionUtil.Companion_Default___.ValidString((input).Dtor_tableName()), m_StructuredEncryptionUtil.Companion_Default___.E(_dafny.SeqOfString("Bad Table Name"))) + if (_3_valueOrError2).IsFailure() { + output = (_3_valueOrError2).PropagateFailure() + return output + } + var _4_valueOrError3 m_Wrappers.Outcome = m_Wrappers.Companion_Outcome_.Default() + _ = _4_valueOrError3 + _4_valueOrError3 = m_Wrappers.Companion_Default___.Need(_dafny.Quantifier(((input).Dtor_authActions()).UniqueElements(), false, func(_exists_var_0 m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.AuthItem) bool { + var _5_x m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.AuthItem + _5_x = interface{}(_exists_var_0).(m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.AuthItem) + return (_dafny.Companion_Sequence_.Contains((input).Dtor_authActions(), _5_x)) && (_dafny.Companion_Sequence_.Equal((_5_x).Dtor_key(), m_StructuredEncryptionUtil.Companion_Default___.HeaderPath())) + }), m_StructuredEncryptionUtil.Companion_Default___.E(_dafny.SeqOfString("Header Required"))) + if (_4_valueOrError3).IsFailure() { + output = (_4_valueOrError3).PropagateFailure() + return output + } + var _6_valueOrError4 m_Wrappers.Outcome = m_Wrappers.Companion_Outcome_.Default() + _ = _6_valueOrError4 + _6_valueOrError4 = m_Wrappers.Companion_Default___.Need(_dafny.Quantifier(((input).Dtor_authActions()).UniqueElements(), false, func(_exists_var_1 m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.AuthItem) bool { + var _7_x m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.AuthItem + _7_x = interface{}(_exists_var_1).(m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.AuthItem) + return (_dafny.Companion_Sequence_.Contains((input).Dtor_authActions(), _7_x)) && (_dafny.Companion_Sequence_.Equal((_7_x).Dtor_key(), m_StructuredEncryptionUtil.Companion_Default___.FooterPath())) + }), m_StructuredEncryptionUtil.Companion_Default___.E(_dafny.SeqOfString("Footer Required"))) + if (_6_valueOrError4).IsFailure() { + output = (_6_valueOrError4).PropagateFailure() + return output + } + var _8_valueOrError5 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(_dafny.EmptySeq) + _ = _8_valueOrError5 + _8_valueOrError5 = m_Canonize.Companion_Default___.ForDecrypt((input).Dtor_tableName(), (input).Dtor_authActions(), (_2_head).Dtor_legend()) + if (_8_valueOrError5).IsFailure() { + output = (_8_valueOrError5).PropagateFailure() + return output + } + var _9_canonData _dafny.Sequence + _ = _9_canonData + _9_canonData = (_8_valueOrError5).Extract().(_dafny.Sequence) + output = m_Wrappers.Companion_Result_.Create_Success_(m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Companion_ResolveAuthActionsOutput_.Create_ResolveAuthActionsOutput_(m_Canonize.Companion_Default___.UnCanon(_9_canonData, uint64(0), _dafny.SeqOf()))) + return output + return output +} +func (_static *CompanionStruct_Default___) GetBinary(data _dafny.Sequence, path _dafny.Sequence) m_Wrappers.Result { + var _0_pos m_Wrappers.Option = Companion_Default___.FindAuth(data, path, uint64(0)) + _ = _0_pos + if (_0_pos).Is_None() { + return m_Wrappers.Companion_Result_.Create_Failure_(m_StructuredEncryptionUtil.Companion_Default___.E(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("The field name "), m_StructuredEncryptionPaths.Companion_Default___.PathToString(path)), _dafny.SeqOfString(" is required.")))) + } else if !_dafny.Companion_Sequence_.Equal((((data).Select(uint32((_0_pos).Dtor_value().(uint64))).(m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.AuthItem)).Dtor_data()).Dtor_typeId(), m_StructuredEncryptionUtil.Companion_Default___.BYTES__TYPE__ID()) { + return m_Wrappers.Companion_Result_.Create_Failure_(m_StructuredEncryptionUtil.Companion_Default___.E(_dafny.Companion_Sequence_.Concatenate(m_StructuredEncryptionPaths.Companion_Default___.PathToString(path), _dafny.SeqOfString(" must be a binary Terminal.")))) + } else if !(((data).Select(uint32((_0_pos).Dtor_value().(uint64))).(m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.AuthItem)).Dtor_action()).Equals(m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Companion_AuthenticateAction_.Create_DO__NOT__SIGN_()) { + return m_Wrappers.Companion_Result_.Create_Failure_(m_StructuredEncryptionUtil.Companion_Default___.E(_dafny.Companion_Sequence_.Concatenate(m_StructuredEncryptionPaths.Companion_Default___.PathToString(path), _dafny.SeqOfString(" must be DO_NOT_SIGN.")))) + } else { + return m_Wrappers.Companion_Result_.Create_Success_(((data).Select(uint32((_0_pos).Dtor_value().(uint64))).(m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.AuthItem)).Dtor_data()) + } +} +func (_static *CompanionStruct_Default___) SumValueSize(fields _dafny.Sequence) uint64 { + var _hresult uint64 = uint64(0) + _ = _hresult + var _0_sum uint64 + _ = _0_sum + _0_sum = uint64(0) + var _lo0 uint64 = uint64(0) + _ = _lo0 + for _1_i := uint64((fields).Cardinality()); _lo0 < _1_i; { + _1_i-- + if (((fields).Select(uint32(_1_i)).(m_StructuredEncryptionUtil.CanonCryptoItem)).Dtor_action()).Equals(m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Companion_CryptoAction_.Create_ENCRYPT__AND__SIGN_()) { + _0_sum = m_StandardLibrary_MemoryMath.Companion_Default___.Add(uint64(((((fields).Select(uint32(_1_i)).(m_StructuredEncryptionUtil.CanonCryptoItem)).Dtor_data()).Dtor_value()).Cardinality()), _0_sum) + } + } + _hresult = _0_sum + return _hresult + return _hresult +} +func (_static *CompanionStruct_Default___) GetAlgorithmSuiteId(alg m_Wrappers.Option) m_AwsCryptographyMaterialProvidersTypes.AlgorithmSuiteId { + if (alg).Is_Some() { + return m_AwsCryptographyMaterialProvidersTypes.Companion_AlgorithmSuiteId_.Create_DBE_((alg).Dtor_value().(m_AwsCryptographyMaterialProvidersTypes.DBEAlgorithmSuiteId)) + } else { + return m_AwsCryptographyMaterialProvidersTypes.Companion_AlgorithmSuiteId_.Create_DBE_(m_AwsCryptographyMaterialProvidersTypes.Companion_DBEAlgorithmSuiteId_.Create_ALG__AES__256__GCM__HKDF__SHA512__COMMIT__KEY__ECDSA__P384__SYMSIG__HMAC__SHA384_()) + } +} +func (_static *CompanionStruct_Default___) GetStructuredEncryptionMaterials(cmm m_AwsCryptographyMaterialProvidersTypes.ICryptographicMaterialsManager, encryptionContext m_Wrappers.Option, algorithmSuiteId m_Wrappers.Option, encryptedTerminalDataNum uint64, totalEncryptedTerminalValuesSize uint64) m_Wrappers.Result { + var ret m_Wrappers.Result = m_Wrappers.Result{} + _ = ret + var _0_maxLength uint64 + _ = _0_maxLength + _0_maxLength = m_StandardLibrary_MemoryMath.Companion_Default___.Add3(encryptedTerminalDataNum, encryptedTerminalDataNum, totalEncryptedTerminalValuesSize) + var _1_valueOrError0 m_Wrappers.Outcome = m_Wrappers.Companion_Outcome_.Default() + _ = _1_valueOrError0 + _1_valueOrError0 = m_Wrappers.Companion_Default___.Need((_0_maxLength) < ((m_StandardLibrary_UInt.Companion_Default___.INT64__MAX__LIMIT()).Uint64()), m_StructuredEncryptionUtil.Companion_Default___.E(_dafny.SeqOfString("Encrypted Size too long."))) + if (_1_valueOrError0).IsFailure() { + ret = (_1_valueOrError0).PropagateFailure() + return ret + } + var _2_algId m_AwsCryptographyMaterialProvidersTypes.AlgorithmSuiteId + _ = _2_algId + _2_algId = Companion_Default___.GetAlgorithmSuiteId(algorithmSuiteId) + var _3_matR m_Wrappers.Result + _ = _3_matR + var _out0 m_Wrappers.Result + _ = _out0 + _out0 = (cmm).GetEncryptionMaterials(m_AwsCryptographyMaterialProvidersTypes.Companion_GetEncryptionMaterialsInput_.Create_GetEncryptionMaterialsInput_((encryptionContext).UnwrapOr(_dafny.NewMapBuilder().ToMap()).(_dafny.Map), Companion_Default___.DBE__COMMITMENT__POLICY(), m_Wrappers.Companion_Option_.Create_Some_(_2_algId), m_Wrappers.Companion_Option_.Create_Some_(int64(_0_maxLength)), m_Wrappers.Companion_Option_.Create_None_())) + _3_matR = _out0 + var _4_valueOrError1 m_Wrappers.Result = m_Wrappers.Result{} + _ = _4_valueOrError1 + _4_valueOrError1 = (_3_matR).MapFailure(func(coer23 func(m_AwsCryptographyMaterialProvidersTypes.Error) m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Error) func(interface{}) interface{} { + return func(arg32 interface{}) interface{} { + return coer23(arg32.(m_AwsCryptographyMaterialProvidersTypes.Error)) + } + }(func(_5_e m_AwsCryptographyMaterialProvidersTypes.Error) m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Error { + return m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Companion_Error_.Create_AwsCryptographyMaterialProviders_(_5_e) + })) + if (_4_valueOrError1).IsFailure() { + ret = (_4_valueOrError1).PropagateFailure() + return ret + } + var _6_matOutput m_AwsCryptographyMaterialProvidersTypes.GetEncryptionMaterialsOutput + _ = _6_matOutput + _6_matOutput = (_4_valueOrError1).Extract().(m_AwsCryptographyMaterialProvidersTypes.GetEncryptionMaterialsOutput) + var _7_mat m_AwsCryptographyMaterialProvidersTypes.EncryptionMaterials + _ = _7_mat + _7_mat = (_6_matOutput).Dtor_encryptionMaterials() + var _8_valueOrError2 m_Wrappers.Outcome = m_Wrappers.Companion_Outcome_.Default() + _ = _8_valueOrError2 + _8_valueOrError2 = m_Wrappers.Companion_Default___.Need(m_Materials.Companion_Default___.EncryptionMaterialsHasPlaintextDataKey(_7_mat), m_StructuredEncryptionUtil.Companion_Default___.E(_dafny.SeqOfString("Encryption material has no key"))) + if (_8_valueOrError2).IsFailure() { + ret = (_8_valueOrError2).PropagateFailure() + return ret + } + var _9_alg m_AwsCryptographyMaterialProvidersTypes.AlgorithmSuiteInfo + _ = _9_alg + _9_alg = (_7_mat).Dtor_algorithmSuite() + var _10_valueOrError3 m_Wrappers.Outcome = m_Wrappers.Companion_Outcome_.Default() + _ = _10_valueOrError3 + _10_valueOrError3 = m_Wrappers.Companion_Default___.Need(m_StructuredEncryptionUtil.Companion_Default___.ValidSuite(_9_alg), m_StructuredEncryptionUtil.Companion_Default___.E(_dafny.SeqOfString("Invalid Algorithm Suite"))) + if (_10_valueOrError3).IsFailure() { + ret = (_10_valueOrError3).PropagateFailure() + return ret + } + var _11_key _dafny.Sequence + _ = _11_key + _11_key = ((_7_mat).Dtor_plaintextDataKey()).Dtor_value().(_dafny.Sequence) + ret = m_Wrappers.Companion_Result_.Create_Success_(_7_mat) + return ret + return ret +} +func (_static *CompanionStruct_Default___) GetV2EncryptionContextCanon(schema _dafny.Sequence) m_Wrappers.Result { + var output m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(_dafny.EmptyMap) + _ = output + var _0_canonAttrs _dafny.Sequence + _ = _0_canonAttrs + _0_canonAttrs = m_Seq.Companion_Default___.Filter(func(coer24 func(m_StructuredEncryptionUtil.CanonCryptoItem) bool) func(interface{}) bool { + return func(arg33 interface{}) bool { + return coer24(arg33.(m_StructuredEncryptionUtil.CanonCryptoItem)) + } + }(func(_1_s m_StructuredEncryptionUtil.CanonCryptoItem) bool { + return ((_1_s).Dtor_action()).Equals(m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Companion_CryptoAction_.Create_SIGN__AND__INCLUDE__IN__ENCRYPTION__CONTEXT_()) + }), schema) + var _2_contextAttrs _dafny.Sequence + _ = _2_contextAttrs + _2_contextAttrs = m_Seq.Companion_Default___.Map(func(coer25 func(m_StructuredEncryptionUtil.CanonCryptoItem) m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.CryptoItem) func(interface{}) interface{} { + return func(arg34 interface{}) interface{} { + return coer25(arg34.(m_StructuredEncryptionUtil.CanonCryptoItem)) + } + }(func(_3_s m_StructuredEncryptionUtil.CanonCryptoItem) m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.CryptoItem { + return m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Companion_CryptoItem_.Create_CryptoItem_((_3_s).Dtor_origKey(), (_3_s).Dtor_data(), (_3_s).Dtor_action()) + }), _0_canonAttrs) + var _out0 m_Wrappers.Result + _ = _out0 + _out0 = Companion_Default___.GetV2EncryptionContext2(_2_contextAttrs) + output = _out0 + return output +} +func (_static *CompanionStruct_Default___) GetV2EncryptionContext(schema _dafny.Sequence) m_Wrappers.Result { + var output m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(_dafny.EmptyMap) + _ = output + var _0_contextAttrs _dafny.Sequence + _ = _0_contextAttrs + _0_contextAttrs = m_Seq.Companion_Default___.Filter(func(coer26 func(m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.CryptoItem) bool) func(interface{}) bool { + return func(arg35 interface{}) bool { + return coer26(arg35.(m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.CryptoItem)) + } + }(func(_1_s m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.CryptoItem) bool { + return ((_1_s).Dtor_action()).Equals(m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Companion_CryptoAction_.Create_SIGN__AND__INCLUDE__IN__ENCRYPTION__CONTEXT_()) + }), schema) + var _out0 m_Wrappers.Result + _ = _out0 + _out0 = Companion_Default___.GetV2EncryptionContext2(_0_contextAttrs) + output = _out0 + return output +} +func (_static *CompanionStruct_Default___) Find(haystack _dafny.Sequence, needle _dafny.Sequence, start uint64) m_Wrappers.Result { + var res m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(uint64(0)) + _ = res + var _hi0 uint64 = uint64((haystack).Cardinality()) + _ = _hi0 + for _0_i := uint64(0); _0_i < _hi0; _0_i++ { + if _dafny.Companion_Sequence_.Equal(((haystack).Select(uint32(_0_i)).(m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.CryptoItem)).Dtor_key(), needle) { + res = m_Wrappers.Companion_Result_.Create_Success_(_0_i) + return res + } + } + res = m_Wrappers.Companion_Result_.Create_Failure_(m_StructuredEncryptionUtil.Companion_Default___.E(_dafny.SeqOfString("Not Found"))) + return res + return res +} +func (_static *CompanionStruct_Default___) FindAuth(haystack _dafny.Sequence, needle _dafny.Sequence, start uint64) m_Wrappers.Option { + var res m_Wrappers.Option = m_Wrappers.Companion_Option_.Default() + _ = res + var _hi0 uint64 = uint64((haystack).Cardinality()) + _ = _hi0 + for _0_i := uint64(0); _0_i < _hi0; _0_i++ { + if _dafny.Companion_Sequence_.Equal(((haystack).Select(uint32(_0_i)).(m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.AuthItem)).Dtor_key(), needle) { + res = m_Wrappers.Companion_Option_.Create_Some_(_0_i) + return res + } + } + res = m_Wrappers.Companion_Option_.Create_None_() + return res + return res +} +func (_static *CompanionStruct_Default___) CountEncrypted(list _dafny.Sequence) uint64 { + var _hresult uint64 = uint64(0) + _ = _hresult + var _0_result uint64 + _ = _0_result + _0_result = uint64(0) + var _lo0 uint64 = uint64(0) + _ = _lo0 + for _1_i := uint64((list).Cardinality()); _lo0 < _1_i; { + _1_i-- + if (((list).Select(uint32(_1_i)).(m_StructuredEncryptionUtil.CanonCryptoItem)).Dtor_action()).Equals(m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Companion_CryptoAction_.Create_ENCRYPT__AND__SIGN_()) { + _0_result = m_StandardLibrary_MemoryMath.Companion_Default___.Add(_0_result, uint64(1)) + } + } + _hresult = _0_result + return _hresult + return _hresult +} +func (_static *CompanionStruct_Default___) GetV2EncryptionContext2(fields _dafny.Sequence) m_Wrappers.Result { + var output m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(_dafny.EmptyMap) + _ = output + var _0_fieldMap _dafny.Map + _ = _0_fieldMap + _0_fieldMap = _dafny.NewMapBuilder().ToMap() + var _hi0 uint64 = uint64((fields).Cardinality()) + _ = _hi0 + for _1_i := uint64(0); _1_i < _hi0; _1_i++ { + var _2_keyVal _dafny.Sequence + _ = _2_keyVal + _2_keyVal = _dafny.Companion_Sequence_.Concatenate(m_StructuredEncryptionUtil.Companion_Default___.ATTR__PREFIX(), m_StructuredEncryptionPaths.Companion_Default___.PathToString(((fields).Select(uint32(_1_i)).(m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.CryptoItem)).Dtor_key())) + var _3_valueOrError0 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(m_UTF8.Companion_ValidUTF8Bytes_.Witness()) + _ = _3_valueOrError0 + _3_valueOrError0 = (m_UTF8.Encode(_2_keyVal)).MapFailure(func(coer27 func(_dafny.Sequence) m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Error) func(interface{}) interface{} { + return func(arg36 interface{}) interface{} { + return coer27(arg36.(_dafny.Sequence)) + } + }(func(_4_e _dafny.Sequence) m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Error { + return m_StructuredEncryptionUtil.Companion_Default___.E(_4_e) + })) + if (_3_valueOrError0).IsFailure() { + output = (_3_valueOrError0).PropagateFailure() + return output + } + var _5_utf8Value _dafny.Sequence + _ = _5_utf8Value + _5_utf8Value = (_3_valueOrError0).Extract().(_dafny.Sequence) + if (_0_fieldMap).Contains(_5_utf8Value) { + output = m_Wrappers.Companion_Result_.Create_Failure_(m_StructuredEncryptionUtil.Companion_Default___.E(_dafny.Companion_Sequence_.Concatenate(_2_keyVal, _dafny.SeqOfString(" appears twice in encryption context.")))) + return output + } + _0_fieldMap = (_0_fieldMap).Update(_5_utf8Value, ((fields).Select(uint32(_1_i)).(m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.CryptoItem)).Dtor_key()) + } + var _6_keys _dafny.Sequence + _ = _6_keys + _6_keys = m_SortedSets.SetToOrderedSequence2((_0_fieldMap).Keys(), func(coer28 func(uint8, uint8) bool) func(interface{}, interface{}) bool { + return func(arg37 interface{}, arg38 interface{}) bool { + return coer28(arg37.(uint8), arg38.(uint8)) + } + }(m_StructuredEncryptionUtil.Companion_Default___.ByteLess)) + var _7_newContext _dafny.Map + _ = _7_newContext + _7_newContext = _dafny.NewMapBuilder().ToMap() + var _8_legend _dafny.Sequence + _ = _8_legend + _8_legend = _dafny.SeqOfString("") + var _hi1 uint64 = uint64((_6_keys).Cardinality()) + _ = _hi1 + for _9_i := uint64(0); _9_i < _hi1; _9_i++ { + var _10_fieldUtf8 _dafny.Sequence + _ = _10_fieldUtf8 + _10_fieldUtf8 = (_6_keys).Select(uint32(_9_i)).(_dafny.Sequence) + var _11_fieldStr _dafny.Sequence + _ = _11_fieldStr + _11_fieldStr = (_0_fieldMap).Get(_10_fieldUtf8).(_dafny.Sequence) + var _12_valueOrError1 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(uint64(0)) + _ = _12_valueOrError1 + _12_valueOrError1 = Companion_Default___.Find(fields, (_0_fieldMap).Get(_10_fieldUtf8).(_dafny.Sequence), uint64(0)) + if (_12_valueOrError1).IsFailure() { + output = (_12_valueOrError1).PropagateFailure() + return output + } + var _13_item uint64 + _ = _13_item + _13_item = (_12_valueOrError1).Extract().(uint64) + var _14_attr m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.StructuredDataTerminal + _ = _14_attr + _14_attr = ((fields).Select(uint32(_13_item)).(m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.CryptoItem)).Dtor_data() + var _15_attrStr _dafny.Sequence = m_UTF8.Companion_ValidUTF8Bytes_.Witness() + _ = _15_attrStr + var _16_legendChar _dafny.Char = _dafny.Char('D') + _ = _16_legendChar + if _dafny.Companion_Sequence_.Equal((_14_attr).Dtor_typeId(), m_StructuredEncryptionUtil.Companion_Default___.NULL()) { + _16_legendChar = m_StructuredEncryptionUtil.Companion_Default___.LEGEND__LITERAL() + _15_attrStr = m_StructuredEncryptionUtil.Companion_Default___.NULL__UTF8() + } else if _dafny.Companion_Sequence_.Equal((_14_attr).Dtor_typeId(), m_StructuredEncryptionUtil.Companion_Default___.STRING()) { + _16_legendChar = m_StructuredEncryptionUtil.Companion_Default___.LEGEND__STRING() + var _17_valueOrError2 m_Wrappers.Outcome = m_Wrappers.Companion_Outcome_.Default() + _ = _17_valueOrError2 + _17_valueOrError2 = m_Wrappers.Companion_Default___.Need(m_UTF8.Companion_Default___.ValidUTF8Seq((_14_attr).Dtor_value()), m_StructuredEncryptionUtil.Companion_Default___.E(_dafny.SeqOfString("Internal Error : string was not UTF8."))) + if (_17_valueOrError2).IsFailure() { + output = (_17_valueOrError2).PropagateFailure() + return output + } + _15_attrStr = (_14_attr).Dtor_value() + var _18_valueOrError3 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(_dafny.EmptySeq.SetString()) + _ = _18_valueOrError3 + _18_valueOrError3 = m_UTF8.Decode(_15_attrStr) + if !(!((_18_valueOrError3).IsFailure())) { + panic("dafny/StructuredEncryption/src/AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations.dfy(428,18): " + (_18_valueOrError3).String()) + } + var _19_yy _dafny.Sequence + _ = _19_yy + _19_yy = (_18_valueOrError3).Extract().(_dafny.Sequence) + } else if _dafny.Companion_Sequence_.Equal((_14_attr).Dtor_typeId(), m_StructuredEncryptionUtil.Companion_Default___.NUMBER()) { + _16_legendChar = m_StructuredEncryptionUtil.Companion_Default___.LEGEND__NUMBER() + var _20_valueOrError4 m_Wrappers.Outcome = m_Wrappers.Companion_Outcome_.Default() + _ = _20_valueOrError4 + _20_valueOrError4 = m_Wrappers.Companion_Default___.Need(m_UTF8.Companion_Default___.ValidUTF8Seq((_14_attr).Dtor_value()), m_StructuredEncryptionUtil.Companion_Default___.E(_dafny.SeqOfString("Internal Error : number was not UTF8."))) + if (_20_valueOrError4).IsFailure() { + output = (_20_valueOrError4).PropagateFailure() + return output + } + _15_attrStr = (_14_attr).Dtor_value() + } else if _dafny.Companion_Sequence_.Equal((_14_attr).Dtor_typeId(), m_StructuredEncryptionUtil.Companion_Default___.BOOLEAN()) { + _16_legendChar = m_StructuredEncryptionUtil.Companion_Default___.LEGEND__LITERAL() + var _21_valueOrError5 m_Wrappers.Outcome = m_Wrappers.Companion_Outcome_.Default() + _ = _21_valueOrError5 + _21_valueOrError5 = m_Wrappers.Companion_Default___.Need((uint64(((_14_attr).Dtor_value()).Cardinality())) == (uint64(1)), m_StructuredEncryptionUtil.Companion_Default___.E(_dafny.SeqOfString("Internal Error : boolean was not of length 1."))) + if (_21_valueOrError5).IsFailure() { + output = (_21_valueOrError5).PropagateFailure() + return output + } + if (((_14_attr).Dtor_value()).Select(uint32(uint32(0))).(uint8)) == (uint8(0)) { + _15_attrStr = m_StructuredEncryptionUtil.Companion_Default___.FALSE__UTF8() + } else { + _15_attrStr = m_StructuredEncryptionUtil.Companion_Default___.TRUE__UTF8() + } + } else { + _16_legendChar = m_StructuredEncryptionUtil.Companion_Default___.LEGEND__BINARY() + _15_attrStr = m_StructuredEncryptionUtil.Companion_Default___.EncodeTerminal(_14_attr) + } + _7_newContext = (_7_newContext).Update(_10_fieldUtf8, _15_attrStr) + _8_legend = _dafny.Companion_Sequence_.Concatenate(_8_legend, _dafny.SeqOfChars(_16_legendChar)) + } + var _22_valueOrError6 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(m_UTF8.Companion_ValidUTF8Bytes_.Witness()) + _ = _22_valueOrError6 + _22_valueOrError6 = (m_UTF8.Encode(_8_legend)).MapFailure(func(coer29 func(_dafny.Sequence) m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Error) func(interface{}) interface{} { + return func(arg39 interface{}) interface{} { + return coer29(arg39.(_dafny.Sequence)) + } + }(func(_23_e _dafny.Sequence) m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Error { + return m_StructuredEncryptionUtil.Companion_Default___.E(_23_e) + })) + if (_22_valueOrError6).IsFailure() { + output = (_22_valueOrError6).PropagateFailure() + return output + } + var _24_utf8Legend _dafny.Sequence + _ = _24_utf8Legend + _24_utf8Legend = (_22_valueOrError6).Extract().(_dafny.Sequence) + _7_newContext = (_7_newContext).Update(m_StructuredEncryptionUtil.Companion_Default___.LEGEND__UTF8(), _24_utf8Legend) + output = m_Wrappers.Companion_Result_.Create_Success_(_7_newContext) + return output + return output +} +func (_static *CompanionStruct_Default___) BuildCryptoMap2(keys _dafny.Sequence, plaintextStructure _dafny.Map, cryptoSchema _dafny.Map, pos uint64, acc _dafny.Sequence) m_Wrappers.Result { + goto TAIL_CALL_START +TAIL_CALL_START: + if (uint64((keys).Cardinality())) == (pos) { + return m_Wrappers.Companion_Result_.Create_Success_(acc) + } else { + var _0_key _dafny.Sequence = (keys).Select(uint32(pos)).(_dafny.Sequence) + _ = _0_key + var _1_path _dafny.Sequence = m_StructuredEncryptionPaths.Companion_Default___.StringToUniPath(_0_key) + _ = _1_path + var _2_item m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.CryptoItem = m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Companion_CryptoItem_.Create_CryptoItem_(_1_path, (plaintextStructure).Get(_0_key).(m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.StructuredDataTerminal), (cryptoSchema).Get(_0_key).(m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.CryptoAction)) + _ = _2_item + var _3_newAcc _dafny.Sequence = _dafny.Companion_Sequence_.Concatenate(acc, _dafny.SeqOf(_2_item)) + _ = _3_newAcc + var _in0 _dafny.Sequence = keys + _ = _in0 + var _in1 _dafny.Map = plaintextStructure + _ = _in1 + var _in2 _dafny.Map = cryptoSchema + _ = _in2 + var _in3 uint64 = (pos) + (uint64(1)) + _ = _in3 + var _in4 _dafny.Sequence = _3_newAcc + _ = _in4 + keys = _in0 + plaintextStructure = _in1 + cryptoSchema = _in2 + pos = _in3 + acc = _in4 + goto TAIL_CALL_START + } +} +func (_static *CompanionStruct_Default___) BuildCryptoMap(plaintextStructure _dafny.Map, cryptoSchema _dafny.Map) m_Wrappers.Result { + var _0_keys _dafny.Sequence = m_SortedSets.SetToOrderedSequence2((plaintextStructure).Keys(), func(coer30 func(_dafny.Char, _dafny.Char) bool) func(interface{}, interface{}) bool { + return func(arg40 interface{}, arg41 interface{}) bool { + return coer30(arg40.(_dafny.Char), arg41.(_dafny.Char)) + } + }(m_StructuredEncryptionUtil.Companion_Default___.CharLess)) + _ = _0_keys + return Companion_Default___.BuildCryptoMap2(_0_keys, plaintextStructure, cryptoSchema, uint64(0), _dafny.SeqOf()) +} +func (_static *CompanionStruct_Default___) BuildAuthMap2(keys _dafny.Sequence, plaintextStructure _dafny.Map, authSchema _dafny.Map, pos uint64, acc _dafny.Sequence) m_Wrappers.Result { + goto TAIL_CALL_START +TAIL_CALL_START: + if (uint64((keys).Cardinality())) == (pos) { + return m_Wrappers.Companion_Result_.Create_Success_(acc) + } else { + var _0_key _dafny.Sequence = (keys).Select(uint32(pos)).(_dafny.Sequence) + _ = _0_key + var _1_path _dafny.Sequence = m_StructuredEncryptionPaths.Companion_Default___.StringToUniPath(_0_key) + _ = _1_path + var _2_item m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.AuthItem = m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Companion_AuthItem_.Create_AuthItem_(_1_path, (plaintextStructure).Get(_0_key).(m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.StructuredDataTerminal), (authSchema).Get(_0_key).(m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.AuthenticateAction)) + _ = _2_item + var _3_newAcc _dafny.Sequence = _dafny.Companion_Sequence_.Concatenate(acc, _dafny.SeqOf(_2_item)) + _ = _3_newAcc + var _in0 _dafny.Sequence = keys + _ = _in0 + var _in1 _dafny.Map = plaintextStructure + _ = _in1 + var _in2 _dafny.Map = authSchema + _ = _in2 + var _in3 uint64 = (pos) + (uint64(1)) + _ = _in3 + var _in4 _dafny.Sequence = _3_newAcc + _ = _in4 + keys = _in0 + plaintextStructure = _in1 + authSchema = _in2 + pos = _in3 + acc = _in4 + goto TAIL_CALL_START + } +} +func (_static *CompanionStruct_Default___) BuildAuthMap(plaintextStructure _dafny.Map, authSchema _dafny.Map) m_Wrappers.Result { + var _0_keys _dafny.Sequence = m_SortedSets.SetToOrderedSequence2((plaintextStructure).Keys(), func(coer31 func(_dafny.Char, _dafny.Char) bool) func(interface{}, interface{}) bool { + return func(arg42 interface{}, arg43 interface{}) bool { + return coer31(arg42.(_dafny.Char), arg43.(_dafny.Char)) + } + }(m_StructuredEncryptionUtil.Companion_Default___.CharLess)) + _ = _0_keys + return Companion_Default___.BuildAuthMap2(_0_keys, plaintextStructure, authSchema, uint64(0), _dafny.SeqOf()) +} +func (_static *CompanionStruct_Default___) UnBuildCryptoMap(list _dafny.Sequence, pos uint64, dataSoFar _dafny.Map, actionsSoFar _dafny.Map) m_Wrappers.Result { + goto TAIL_CALL_START +TAIL_CALL_START: + if (uint64((list).Cardinality())) == (pos) { + return m_Wrappers.Companion_Result_.Create_Success_(_dafny.TupleOf(dataSoFar, actionsSoFar)) + } else { + var _0_valueOrError0 m_Wrappers.Result = m_StructuredEncryptionPaths.Companion_Default___.UniPathToString(((list).Select(uint32(pos)).(m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.CryptoItem)).Dtor_key()) + _ = _0_valueOrError0 + if (_0_valueOrError0).IsFailure() { + return (_0_valueOrError0).PropagateFailure() + } else { + var _1_key _dafny.Sequence = (_0_valueOrError0).Extract().(_dafny.Sequence) + _ = _1_key + var _2_valueOrError1 m_Wrappers.Outcome = m_Wrappers.Companion_Default___.Need(!(dataSoFar).Contains(_1_key), m_StructuredEncryptionUtil.Companion_Default___.E(_dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("Duplicate Key "), _1_key))) + _ = _2_valueOrError1 + if (_2_valueOrError1).IsFailure() { + return (_2_valueOrError1).PropagateFailure() + } else if m_StructuredEncryptionUtil.Companion_Default___.IsAuthAttr(((list).Select(uint32(pos)).(m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.CryptoItem)).Dtor_action()) { + var _in0 _dafny.Sequence = list + _ = _in0 + var _in1 uint64 = (pos) + (uint64(1)) + _ = _in1 + var _in2 _dafny.Map = (dataSoFar).Update(_1_key, ((list).Select(uint32(pos)).(m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.CryptoItem)).Dtor_data()) + _ = _in2 + var _in3 _dafny.Map = (actionsSoFar).Update(_1_key, ((list).Select(uint32(pos)).(m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.CryptoItem)).Dtor_action()) + _ = _in3 + list = _in0 + pos = _in1 + dataSoFar = _in2 + actionsSoFar = _in3 + goto TAIL_CALL_START + } else { + var _in4 _dafny.Sequence = list + _ = _in4 + var _in5 uint64 = (pos) + (uint64(1)) + _ = _in5 + var _in6 _dafny.Map = (dataSoFar).Update(_1_key, ((list).Select(uint32(pos)).(m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.CryptoItem)).Dtor_data()) + _ = _in6 + var _in7 _dafny.Map = actionsSoFar + _ = _in7 + list = _in4 + pos = _in5 + dataSoFar = _in6 + actionsSoFar = _in7 + goto TAIL_CALL_START + } + } + } +} +func (_static *CompanionStruct_Default___) EncryptStructure(config Config, input m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.EncryptStructureInput) m_Wrappers.Result { + var output m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Companion_EncryptStructureOutput_.Default()) + _ = output + var _0_valueOrError0 m_Wrappers.Outcome = m_Wrappers.Companion_Outcome_.Default() + _ = _0_valueOrError0 + _0_valueOrError0 = m_Wrappers.Companion_Default___.Need((((input).Dtor_plaintextStructure()).Keys()).Equals(((input).Dtor_cryptoSchema()).Keys()), m_StructuredEncryptionUtil.Companion_Default___.E(_dafny.SeqOfString("Crypto Keys don't match."))) + if (_0_valueOrError0).IsFailure() { + output = (_0_valueOrError0).PropagateFailure() + return output + } + var _1_valueOrError1 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(_dafny.EmptySeq) + _ = _1_valueOrError1 + _1_valueOrError1 = Companion_Default___.BuildCryptoMap((input).Dtor_plaintextStructure(), (input).Dtor_cryptoSchema()) + if (_1_valueOrError1).IsFailure() { + output = (_1_valueOrError1).PropagateFailure() + return output + } + var _2_cryptoMap _dafny.Sequence + _ = _2_cryptoMap + _2_cryptoMap = (_1_valueOrError1).Extract().(_dafny.Sequence) + var _3_pathInput m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.EncryptPathStructureInput + _ = _3_pathInput + _3_pathInput = m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Companion_EncryptPathStructureInput_.Create_EncryptPathStructureInput_((input).Dtor_tableName(), _2_cryptoMap, (input).Dtor_cmm(), (input).Dtor_algorithmSuiteId(), (input).Dtor_encryptionContext()) + var _4_valueOrError2 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Companion_EncryptPathStructureOutput_.Default()) + _ = _4_valueOrError2 + var _out0 m_Wrappers.Result + _ = _out0 + _out0 = Companion_Default___.EncryptPathStructure(config, _3_pathInput) + _4_valueOrError2 = _out0 + if (_4_valueOrError2).IsFailure() { + output = (_4_valueOrError2).PropagateFailure() + return output + } + var _5_pathOutput m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.EncryptPathStructureOutput + _ = _5_pathOutput + _5_pathOutput = (_4_valueOrError2).Extract().(m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.EncryptPathStructureOutput) + var _6_valueOrError3 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(_dafny.TupleOf(_dafny.EmptyMap, _dafny.EmptyMap)) + _ = _6_valueOrError3 + _6_valueOrError3 = Companion_Default___.UnBuildCryptoMap((_5_pathOutput).Dtor_encryptedStructure(), uint64(0), _dafny.NewMapBuilder().ToMap(), _dafny.NewMapBuilder().ToMap()) + if (_6_valueOrError3).IsFailure() { + output = (_6_valueOrError3).PropagateFailure() + return output + } + var _7_parts _dafny.Tuple + _ = _7_parts + _7_parts = (_6_valueOrError3).Extract().(_dafny.Tuple) + var _8_plainOutput m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.EncryptStructureOutput + _ = _8_plainOutput + _8_plainOutput = m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Companion_EncryptStructureOutput_.Create_EncryptStructureOutput_((*(_7_parts).IndexInt(0)).(_dafny.Map), (*(_7_parts).IndexInt(1)).(_dafny.Map), (_5_pathOutput).Dtor_parsedHeader()) + output = m_Wrappers.Companion_Result_.Create_Success_(_8_plainOutput) + return output + return output +} +func (_static *CompanionStruct_Default___) EncryptPathStructure(config Config, input m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.EncryptPathStructureInput) m_Wrappers.Result { + var output m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Companion_EncryptPathStructureOutput_.Default()) + _ = output + var _0_valueOrError0 m_Wrappers.Outcome = m_Wrappers.Companion_Outcome_.Default() + _ = _0_valueOrError0 + _0_valueOrError0 = m_Wrappers.Companion_Default___.Need((((input).Dtor_encryptionContext()).Is_None()) || (!(_dafny.Quantifier((((input).Dtor_encryptionContext()).Dtor_value().(_dafny.Map)).Keys().Elements(), false, func(_exists_var_0 _dafny.Sequence) bool { + var _1_k _dafny.Sequence + _1_k = interface{}(_exists_var_0).(_dafny.Sequence) + return ((((input).Dtor_encryptionContext()).Dtor_value().(_dafny.Map)).Contains(_1_k)) && (_dafny.Companion_Sequence_.IsPrefixOf(m_StructuredEncryptionUtil.Companion_Default___.ReservedCryptoContextPrefixUTF8(), (((input).Dtor_encryptionContext()).Dtor_value().(_dafny.Map)).Get(_1_k).(_dafny.Sequence))) + }))), m_StructuredEncryptionUtil.Companion_Default___.E(_dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("Encryption Context must not contain members beginning with "), m_StructuredEncryptionUtil.Companion_Default___.ReservedCryptoContextPrefixString()))) + if (_0_valueOrError0).IsFailure() { + output = (_0_valueOrError0).PropagateFailure() + return output + } + var _2_valueOrError1 m_Wrappers.Outcome = m_Wrappers.Companion_Outcome_.Default() + _ = _2_valueOrError1 + _2_valueOrError1 = m_Wrappers.Companion_Default___.Need(_dafny.Quantifier(((input).Dtor_plaintextStructure()).UniqueElements(), false, func(_exists_var_1 m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.CryptoItem) bool { + var _3_k m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.CryptoItem + _3_k = interface{}(_exists_var_1).(m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.CryptoItem) + return (_dafny.Companion_Sequence_.Contains((input).Dtor_plaintextStructure(), _3_k)) && (m_StructuredEncryptionUtil.Companion_Default___.IsAuthAttr((_3_k).Dtor_action())) + }), m_StructuredEncryptionUtil.Companion_Default___.E(_dafny.SeqOfString("At least one field in the Crypto Schema must be ENCRYPT_AND_SIGN, SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT or SIGN_ONLY."))) + if (_2_valueOrError1).IsFailure() { + output = (_2_valueOrError1).PropagateFailure() + return output + } + var _4_valueOrError2 m_Wrappers.Outcome = m_Wrappers.Companion_Outcome_.Default() + _ = _4_valueOrError2 + _4_valueOrError2 = m_Wrappers.Companion_Default___.Need(!(_dafny.Quantifier(((input).Dtor_plaintextStructure()).UniqueElements(), false, func(_exists_var_2 m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.CryptoItem) bool { + var _5_x m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.CryptoItem + _5_x = interface{}(_exists_var_2).(m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.CryptoItem) + return (_dafny.Companion_Sequence_.Contains((input).Dtor_plaintextStructure(), _5_x)) && (_dafny.Companion_Sequence_.Contains(m_StructuredEncryptionUtil.Companion_Default___.HeaderPaths(), (_5_x).Dtor_key())) + })), m_StructuredEncryptionUtil.Companion_Default___.E(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("The paths "), m_StructuredEncryptionUtil.Companion_Default___.HeaderField()), _dafny.SeqOfString(" and ")), m_StructuredEncryptionUtil.Companion_Default___.FooterField()), _dafny.SeqOfString(" are reserved.")))) + if (_4_valueOrError2).IsFailure() { + output = (_4_valueOrError2).PropagateFailure() + return output + } + var _6_valueOrError3 m_Wrappers.Outcome = m_Wrappers.Companion_Outcome_.Default() + _ = _6_valueOrError3 + _6_valueOrError3 = m_Wrappers.Companion_Default___.Need(m_StructuredEncryptionUtil.Companion_Default___.CryptoListHasNoDuplicatesFromSet((input).Dtor_plaintextStructure()), m_StructuredEncryptionUtil.Companion_Default___.E(_dafny.SeqOfString("Duplicate Paths"))) + if (_6_valueOrError3).IsFailure() { + output = (_6_valueOrError3).PropagateFailure() + return output + } + var _7_valueOrError4 m_Wrappers.Outcome = m_Wrappers.Companion_Outcome_.Default() + _ = _7_valueOrError4 + _7_valueOrError4 = m_Wrappers.Companion_Default___.Need(m_StructuredEncryptionUtil.Companion_Default___.ValidString((input).Dtor_tableName()), m_StructuredEncryptionUtil.Companion_Default___.E(_dafny.SeqOfString("Bad Table Name"))) + if (_7_valueOrError4).IsFailure() { + output = (_7_valueOrError4).PropagateFailure() + return output + } + var _8_valueOrError5 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(_dafny.EmptySeq) + _ = _8_valueOrError5 + _8_valueOrError5 = m_Canonize.Companion_Default___.ForEncrypt((input).Dtor_tableName(), (input).Dtor_plaintextStructure()) + if (_8_valueOrError5).IsFailure() { + output = (_8_valueOrError5).PropagateFailure() + return output + } + var _9_canonData _dafny.Sequence + _ = _9_canonData + _9_canonData = (_8_valueOrError5).Extract().(_dafny.Sequence) + var _10_encryptionContext _dafny.Map + _ = _10_encryptionContext + _10_encryptionContext = ((input).Dtor_encryptionContext()).UnwrapOr(_dafny.NewMapBuilder().ToMap()).(_dafny.Map) + var _11_cmm m_AwsCryptographyMaterialProvidersTypes.ICryptographicMaterialsManager + _ = _11_cmm + _11_cmm = (input).Dtor_cmm() + if _dafny.Quantifier(((input).Dtor_plaintextStructure()).UniqueElements(), false, func(_exists_var_3 m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.CryptoItem) bool { + var _12_x m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.CryptoItem + _12_x = interface{}(_exists_var_3).(m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.CryptoItem) + return (_dafny.Companion_Sequence_.Contains((input).Dtor_plaintextStructure(), _12_x)) && (((_12_x).Dtor_action()).Equals(m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Companion_CryptoAction_.Create_SIGN__AND__INCLUDE__IN__ENCRYPTION__CONTEXT_())) + }) { + var _13_valueOrError6 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(_dafny.EmptyMap) + _ = _13_valueOrError6 + var _out0 m_Wrappers.Result + _ = _out0 + _out0 = Companion_Default___.GetV2EncryptionContext((input).Dtor_plaintextStructure()) + _13_valueOrError6 = _out0 + if (_13_valueOrError6).IsFailure() { + output = (_13_valueOrError6).PropagateFailure() + return output + } + var _14_newEncryptionContext _dafny.Map + _ = _14_newEncryptionContext + _14_newEncryptionContext = (_13_valueOrError6).Extract().(_dafny.Map) + if (uint64((_14_newEncryptionContext).CardinalityInt())) != (uint64(0)) /* dircomp */ { + var _15_valueOrError7 m_Wrappers.Outcome = m_Wrappers.Companion_Outcome_.Default() + _ = _15_valueOrError7 + _15_valueOrError7 = m_Wrappers.Companion_Default___.Need(((_10_encryptionContext).Keys()).IsDisjointFrom((_14_newEncryptionContext).Keys()), m_StructuredEncryptionUtil.Companion_Default___.E(_dafny.SeqOfString("Internal Error - Structured Encryption encryption context overlaps with Item Encryptor encryption context."))) + if (_15_valueOrError7).IsFailure() { + output = (_15_valueOrError7).PropagateFailure() + return output + } + _10_encryptionContext = (_10_encryptionContext).Merge(_14_newEncryptionContext) + var _16_contextKeysX _dafny.Sequence + _ = _16_contextKeysX + _16_contextKeysX = m_SortedSets.SetToOrderedSequence2((_14_newEncryptionContext).Keys(), func(coer32 func(uint8, uint8) bool) func(interface{}, interface{}) bool { + return func(arg44 interface{}, arg45 interface{}) bool { + return coer32(arg44.(uint8), arg45.(uint8)) + } + }(m_StructuredEncryptionUtil.Companion_Default___.ByteLess)) + var _17_contextKeys _dafny.Sequence + _ = _17_contextKeys + _17_contextKeys = _16_contextKeysX + var _18_cmmR m_Wrappers.Result + _ = _18_cmmR + var _out1 m_Wrappers.Result + _ = _out1 + _out1 = ((config).Dtor_materialProviders()).CreateRequiredEncryptionContextCMM(m_AwsCryptographyMaterialProvidersTypes.Companion_CreateRequiredEncryptionContextCMMInput_.Create_CreateRequiredEncryptionContextCMMInput_(m_Wrappers.Companion_Option_.Create_Some_((input).Dtor_cmm()), m_Wrappers.Companion_Option_.Create_None_(), _17_contextKeys)) + _18_cmmR = _out1 + var _19_valueOrError8 m_Wrappers.Result = m_Wrappers.Result{} + _ = _19_valueOrError8 + _19_valueOrError8 = (_18_cmmR).MapFailure(func(coer33 func(m_AwsCryptographyMaterialProvidersTypes.Error) m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Error) func(interface{}) interface{} { + return func(arg46 interface{}) interface{} { + return coer33(arg46.(m_AwsCryptographyMaterialProvidersTypes.Error)) + } + }(func(_20_e m_AwsCryptographyMaterialProvidersTypes.Error) m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Error { + return m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Companion_Error_.Create_AwsCryptographyMaterialProviders_(_20_e) + })) + if (_19_valueOrError8).IsFailure() { + output = (_19_valueOrError8).PropagateFailure() + return output + } + _11_cmm = m_AwsCryptographyMaterialProvidersTypes.Companion_ICryptographicMaterialsManager_.CastTo_((_19_valueOrError8).Extract()) + } + } + var _21_valueOrError9 m_Wrappers.Result = m_Wrappers.Result{} + _ = _21_valueOrError9 + var _out2 m_Wrappers.Result + _ = _out2 + _out2 = Companion_Default___.GetStructuredEncryptionMaterials(_11_cmm, m_Wrappers.Companion_Option_.Create_Some_(_10_encryptionContext), (input).Dtor_algorithmSuiteId(), Companion_Default___.CountEncrypted(_9_canonData), Companion_Default___.SumValueSize(_9_canonData)) + _21_valueOrError9 = _out2 + if (_21_valueOrError9).IsFailure() { + output = (_21_valueOrError9).PropagateFailure() + return output + } + var _22_mat m_AwsCryptographyMaterialProvidersTypes.EncryptionMaterials + _ = _22_mat + _22_mat = (_21_valueOrError9).Extract().(m_AwsCryptographyMaterialProvidersTypes.EncryptionMaterials) + var _23_key _dafny.Sequence + _ = _23_key + _23_key = ((_22_mat).Dtor_plaintextDataKey()).Dtor_value().(_dafny.Sequence) + var _24_alg m_AwsCryptographyMaterialProvidersTypes.AlgorithmSuiteInfo + _ = _24_alg + _24_alg = (_22_mat).Dtor_algorithmSuite() + var _25_valueOrError10 m_Wrappers.Outcome = m_Wrappers.Companion_Outcome_.Default() + _ = _25_valueOrError10 + _25_valueOrError10 = m_Wrappers.Companion_Default___.Need(m_StructuredEncryptionHeader.Companion_Default___.ValidEncryptionContext((_22_mat).Dtor_encryptionContext()), m_StructuredEncryptionUtil.Companion_Default___.E(_dafny.SeqOfString("Bad encryption context"))) + if (_25_valueOrError10).IsFailure() { + output = (_25_valueOrError10).PropagateFailure() + return output + } + var _26_randBytes m_Wrappers.Result + _ = _26_randBytes + var _out3 m_Wrappers.Result + _ = _out3 + _out3 = m_Random.Companion_Default___.GenerateBytes(int32(m_StructuredEncryptionUtil.Companion_Default___.MSGID__LEN64())) + _26_randBytes = _out3 + var _27_valueOrError11 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(_dafny.EmptySeq) + _ = _27_valueOrError11 + _27_valueOrError11 = (_26_randBytes).MapFailure(func(coer34 func(m_AwsCryptographyPrimitivesTypes.Error) m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Error) func(interface{}) interface{} { + return func(arg47 interface{}) interface{} { + return coer34(arg47.(m_AwsCryptographyPrimitivesTypes.Error)) + } + }(func(_28_e m_AwsCryptographyPrimitivesTypes.Error) m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Error { + return m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Companion_Error_.Create_AwsCryptographyPrimitives_(_28_e) + })) + if (_27_valueOrError11).IsFailure() { + output = (_27_valueOrError11).PropagateFailure() + return output + } + var _29_msgID _dafny.Sequence + _ = _29_msgID + _29_msgID = (_27_valueOrError11).Extract().(_dafny.Sequence) + var _30_valueOrError12 m_Wrappers.Result = m_Wrappers.Result{} + _ = _30_valueOrError12 + _30_valueOrError12 = m_StructuredEncryptionHeader.Companion_Default___.Create((input).Dtor_tableName(), _9_canonData, _29_msgID, _22_mat) + if (_30_valueOrError12).IsFailure() { + output = (_30_valueOrError12).PropagateFailure() + return output + } + var _31_head m_StructuredEncryptionHeader.PartialHeader + _ = _31_head + _31_head = (_30_valueOrError12).Extract().(m_StructuredEncryptionHeader.PartialHeader) + var _32_valueOrError13 m_Wrappers.Result = m_Wrappers.Result{} + _ = _32_valueOrError13 + var _out4 m_Wrappers.Result + _ = _out4 + _out4 = m_StructuredEncryptionCrypt.Companion_Default___.GetCommitKey((config).Dtor_primitives(), _24_alg, _23_key, (_31_head).Dtor_msgID()) + _32_valueOrError13 = _out4 + if (_32_valueOrError13).IsFailure() { + output = (_32_valueOrError13).PropagateFailure() + return output + } + var _33_commitKey _dafny.Sequence + _ = _33_commitKey + _33_commitKey = (_32_valueOrError13).Extract().(_dafny.Sequence) + var _34_valueOrError14 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(_dafny.EmptySeq) + _ = _34_valueOrError14 + _34_valueOrError14 = m_StructuredEncryptionHeader.Companion_Default___.Serialize((config).Dtor_primitives(), _24_alg, _33_commitKey, _31_head) + if (_34_valueOrError14).IsFailure() { + output = (_34_valueOrError14).PropagateFailure() + return output + } + var _35_headerSerialized _dafny.Sequence + _ = _35_headerSerialized + _35_headerSerialized = (_34_valueOrError14).Extract().(_dafny.Sequence) + var _36_headerAttribute m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.StructuredDataTerminal + _ = _36_headerAttribute + _36_headerAttribute = m_StructuredEncryptionUtil.Companion_Default___.ValueToData(_35_headerSerialized, m_StructuredEncryptionUtil.Companion_Default___.BYTES__TYPE__ID()) + var _37_valueOrError15 m_Wrappers.Outcome = m_Wrappers.Companion_Outcome_.Default() + _ = _37_valueOrError15 + _37_valueOrError15 = m_Wrappers.Companion_Default___.Need((uint64((_9_canonData).Cardinality())) < (uint64(m_StructuredEncryptionCrypt.Companion_Default___.ONE__THIRD__MAX__INT())), m_StructuredEncryptionUtil.Companion_Default___.E(_dafny.SeqOfString("Too many encrypted fields"))) + if (_37_valueOrError15).IsFailure() { + output = (_37_valueOrError15).PropagateFailure() + return output + } + var _38_valueOrError16 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(_dafny.EmptySeq) + _ = _38_valueOrError16 + var _out5 m_Wrappers.Result + _ = _out5 + _out5 = m_StructuredEncryptionCrypt.Companion_Default___.Encrypt((config).Dtor_primitives(), _24_alg, _23_key, _31_head, _9_canonData) + _38_valueOrError16 = _out5 + if (_38_valueOrError16).IsFailure() { + output = (_38_valueOrError16).PropagateFailure() + return output + } + var _39_encryptedItems _dafny.Sequence + _ = _39_encryptedItems + _39_encryptedItems = (_38_valueOrError16).Extract().(_dafny.Sequence) + var _40_smallResult _dafny.Sequence + _ = _40_smallResult + _40_smallResult = m_Canonize.Companion_Default___.UnCanonEncrypt(_39_encryptedItems) + var _41_valueOrError17 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(m_StructuredEncryptionFooter.Companion_Footer_.Default()) + _ = _41_valueOrError17 + var _out6 m_Wrappers.Result + _ = _out6 + _out6 = m_StructuredEncryptionFooter.Companion_Default___.CreateFooter((config).Dtor_primitives(), _22_mat, _39_encryptedItems, _35_headerSerialized) + _41_valueOrError17 = _out6 + if (_41_valueOrError17).IsFailure() { + output = (_41_valueOrError17).PropagateFailure() + return output + } + var _42_footer m_StructuredEncryptionFooter.Footer + _ = _42_footer + _42_footer = (_41_valueOrError17).Extract().(m_StructuredEncryptionFooter.Footer) + var _43_footerAttribute m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.StructuredDataTerminal + _ = _43_footerAttribute + _43_footerAttribute = (_42_footer).MakeTerminal() + var _44_largeResult _dafny.Sequence + _ = _44_largeResult + _44_largeResult = m_Canonize.Companion_Default___.AddHeaders(_40_smallResult, _36_headerAttribute, _43_footerAttribute) + var _45_valueOrError18 m_Wrappers.Result = m_Wrappers.Result{} + _ = _45_valueOrError18 + var _out7 m_Wrappers.Result + _ = _out7 + _out7 = (_31_head).GetAlgorithmSuite((config).Dtor_materialProviders()) + _45_valueOrError18 = _out7 + if (_45_valueOrError18).IsFailure() { + output = (_45_valueOrError18).PropagateFailure() + return output + } + var _46_headerAlgorithmSuite m_AwsCryptographyMaterialProvidersTypes.AlgorithmSuiteInfo + _ = _46_headerAlgorithmSuite + _46_headerAlgorithmSuite = (_45_valueOrError18).Extract().(m_AwsCryptographyMaterialProvidersTypes.AlgorithmSuiteInfo) + var _47_parsedHeader m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.ParsedHeader + _ = _47_parsedHeader + _47_parsedHeader = m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Companion_ParsedHeader_.Create_ParsedHeader_(((_46_headerAlgorithmSuite).Dtor_id()).Dtor_DBE(), (_31_head).Dtor_dataKeys(), (_31_head).Dtor_encContext(), (_22_mat).Dtor_encryptionContext()) + var _48_encryptOutput m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.EncryptPathStructureOutput + _ = _48_encryptOutput + _48_encryptOutput = m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Companion_EncryptPathStructureOutput_.Create_EncryptPathStructureOutput_(_44_largeResult, _47_parsedHeader) + output = m_Wrappers.Companion_Result_.Create_Success_(_48_encryptOutput) + return output + return output +} +func (_static *CompanionStruct_Default___) SafeDecode(data _dafny.Sequence) _dafny.Sequence { + var _0_x m_Wrappers.Result = m_UTF8.Decode(data) + _ = _0_x + if (_0_x).Is_Success() { + return (_0_x).Dtor_value().(_dafny.Sequence) + } else { + return _dafny.SeqOfString("[corrupt value]") + } +} +func (_static *CompanionStruct_Default___) DescribeMismatch(inputFields _dafny.Sequence, inputContext _dafny.Map, headContext _dafny.Map) _dafny.Sequence { + var _0___accumulator _dafny.Sequence = _dafny.SeqOfChars() + _ = _0___accumulator + goto TAIL_CALL_START +TAIL_CALL_START: + if (uint64((inputFields).Cardinality())) == (uint64(0)) { + return _dafny.Companion_Sequence_.Concatenate(_0___accumulator, _dafny.SeqOfString("")) + } else { + var _1_key _dafny.Sequence = (inputFields).Select(uint32(uint32(0))).(_dafny.Sequence) + _ = _1_key + if ((headContext).Contains(_1_key)) && (!_dafny.Companion_Sequence_.Equal((headContext).Get(_1_key).(_dafny.Sequence), (inputContext).Get(_1_key).(_dafny.Sequence))) { + var _2_keyStr _dafny.Sequence = Companion_Default___.SafeDecode(_1_key) + _ = _2_keyStr + var _3_headStr _dafny.Sequence = Companion_Default___.SafeDecode((headContext).Get(_1_key).(_dafny.Sequence)) + _ = _3_headStr + var _4_inputStr _dafny.Sequence = Companion_Default___.SafeDecode((inputContext).Get(_1_key).(_dafny.Sequence)) + _ = _4_inputStr + var _5_msg _dafny.Sequence = _dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("input context for "), _2_keyStr), _dafny.SeqOfString(" was ")), _4_inputStr), _dafny.SeqOfString(" but stored context had ")), _3_headStr), _dafny.SeqOfString("\n")) + _ = _5_msg + _0___accumulator = _dafny.Companion_Sequence_.Concatenate(_0___accumulator, _5_msg) + var _in0 _dafny.Sequence = (inputFields).Drop(uint32(uint32(1))) + _ = _in0 + var _in1 _dafny.Map = inputContext + _ = _in1 + var _in2 _dafny.Map = headContext + _ = _in2 + inputFields = _in0 + inputContext = _in1 + headContext = _in2 + goto TAIL_CALL_START + } else { + var _in3 _dafny.Sequence = (inputFields).Drop(uint32(uint32(1))) + _ = _in3 + var _in4 _dafny.Map = inputContext + _ = _in4 + var _in5 _dafny.Map = headContext + _ = _in5 + inputFields = _in3 + inputContext = _in4 + headContext = _in5 + goto TAIL_CALL_START + } + } +} +func (_static *CompanionStruct_Default___) DetectMismatch(inputContext _dafny.Map, headContext _dafny.Map) m_Wrappers.Outcome { + var _0_inputFields _dafny.Sequence = m_SortedSets.SetToOrderedSequence2((inputContext).Keys(), func(coer35 func(uint8, uint8) bool) func(interface{}, interface{}) bool { + return func(arg48 interface{}, arg49 interface{}) bool { + return coer35(arg48.(uint8), arg49.(uint8)) + } + }(m_StructuredEncryptionUtil.Companion_Default___.ByteLess)) + _ = _0_inputFields + var _1_str _dafny.Sequence = Companion_Default___.DescribeMismatch(_0_inputFields, inputContext, headContext) + _ = _1_str + if (uint64((_1_str).Cardinality())) == (uint64(0)) { + return m_Wrappers.Companion_Outcome_.Create_Pass_() + } else { + return m_Wrappers.Companion_Outcome_.Create_Fail_(m_StructuredEncryptionUtil.Companion_Default___.E(_dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("Encryption Context Mismatch\n"), _1_str))) + } +} +func (_static *CompanionStruct_Default___) NewCmm(config Config, cmm m_AwsCryptographyMaterialProvidersTypes.ICryptographicMaterialsManager, context _dafny.Map) m_Wrappers.Result { + var ret m_Wrappers.Result = m_Wrappers.Result{} + _ = ret + var _0_contextKeysX _dafny.Sequence + _ = _0_contextKeysX + _0_contextKeysX = m_SortedSets.SetToOrderedSequence2((context).Keys(), func(coer36 func(uint8, uint8) bool) func(interface{}, interface{}) bool { + return func(arg50 interface{}, arg51 interface{}) bool { + return coer36(arg50.(uint8), arg51.(uint8)) + } + }(m_StructuredEncryptionUtil.Companion_Default___.ByteLess)) + var _1_contextKeys _dafny.Sequence + _ = _1_contextKeys + _1_contextKeys = _0_contextKeysX + var _2_cmmR m_Wrappers.Result + _ = _2_cmmR + var _out0 m_Wrappers.Result + _ = _out0 + _out0 = ((config).Dtor_materialProviders()).CreateRequiredEncryptionContextCMM(m_AwsCryptographyMaterialProvidersTypes.Companion_CreateRequiredEncryptionContextCMMInput_.Create_CreateRequiredEncryptionContextCMMInput_(m_Wrappers.Companion_Option_.Create_Some_(cmm), m_Wrappers.Companion_Option_.Create_None_(), _1_contextKeys)) + _2_cmmR = _out0 + var _3_valueOrError0 m_Wrappers.Result = m_Wrappers.Result{} + _ = _3_valueOrError0 + _3_valueOrError0 = (_2_cmmR).MapFailure(func(coer37 func(m_AwsCryptographyMaterialProvidersTypes.Error) m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Error) func(interface{}) interface{} { + return func(arg52 interface{}) interface{} { + return coer37(arg52.(m_AwsCryptographyMaterialProvidersTypes.Error)) + } + }(func(_4_e m_AwsCryptographyMaterialProvidersTypes.Error) m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Error { + return m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Companion_Error_.Create_AwsCryptographyMaterialProviders_(_4_e) + })) + if (_3_valueOrError0).IsFailure() { + ret = (_3_valueOrError0).PropagateFailure() + return ret + } + var _5_newCmm m_AwsCryptographyMaterialProvidersTypes.ICryptographicMaterialsManager + _ = _5_newCmm + _5_newCmm = m_AwsCryptographyMaterialProvidersTypes.Companion_ICryptographicMaterialsManager_.CastTo_((_3_valueOrError0).Extract()) + ret = m_Wrappers.Companion_Result_.Create_Success_(_5_newCmm) + return ret + return ret +} +func (_static *CompanionStruct_Default___) DecryptStructure(config Config, input m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.DecryptStructureInput) m_Wrappers.Result { + var output m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Companion_DecryptStructureOutput_.Default()) + _ = output + var _0_valueOrError0 m_Wrappers.Outcome = m_Wrappers.Companion_Outcome_.Default() + _ = _0_valueOrError0 + _0_valueOrError0 = m_Wrappers.Companion_Default___.Need((((input).Dtor_encryptedStructure()).Keys()).Equals(((input).Dtor_authenticateSchema()).Keys()), m_StructuredEncryptionUtil.Companion_Default___.E(_dafny.SeqOfString("DecryptStructure requires encryptedStructure and authenticateSchema have the same keys."))) + if (_0_valueOrError0).IsFailure() { + output = (_0_valueOrError0).PropagateFailure() + return output + } + var _1_valueOrError1 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(_dafny.EmptySeq) + _ = _1_valueOrError1 + _1_valueOrError1 = Companion_Default___.BuildAuthMap((input).Dtor_encryptedStructure(), (input).Dtor_authenticateSchema()) + if (_1_valueOrError1).IsFailure() { + output = (_1_valueOrError1).PropagateFailure() + return output + } + var _2_cryptoMap _dafny.Sequence + _ = _2_cryptoMap + _2_cryptoMap = (_1_valueOrError1).Extract().(_dafny.Sequence) + var _3_pathInput m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.DecryptPathStructureInput + _ = _3_pathInput + _3_pathInput = m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Companion_DecryptPathStructureInput_.Create_DecryptPathStructureInput_((input).Dtor_tableName(), _2_cryptoMap, (input).Dtor_cmm(), (input).Dtor_encryptionContext()) + var _4_valueOrError2 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Companion_DecryptPathStructureOutput_.Default()) + _ = _4_valueOrError2 + var _out0 m_Wrappers.Result + _ = _out0 + _out0 = Companion_Default___.DecryptPathStructure(config, _3_pathInput) + _4_valueOrError2 = _out0 + if (_4_valueOrError2).IsFailure() { + output = (_4_valueOrError2).PropagateFailure() + return output + } + var _5_pathOutput m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.DecryptPathStructureOutput + _ = _5_pathOutput + _5_pathOutput = (_4_valueOrError2).Extract().(m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.DecryptPathStructureOutput) + var _6_valueOrError3 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(_dafny.TupleOf(_dafny.EmptyMap, _dafny.EmptyMap)) + _ = _6_valueOrError3 + _6_valueOrError3 = Companion_Default___.UnBuildCryptoMap((_5_pathOutput).Dtor_plaintextStructure(), uint64(0), _dafny.NewMapBuilder().ToMap(), _dafny.NewMapBuilder().ToMap()) + if (_6_valueOrError3).IsFailure() { + output = (_6_valueOrError3).PropagateFailure() + return output + } + var _7_parts _dafny.Tuple + _ = _7_parts + _7_parts = (_6_valueOrError3).Extract().(_dafny.Tuple) + var _8_plainOutput m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.DecryptStructureOutput + _ = _8_plainOutput + _8_plainOutput = m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Companion_DecryptStructureOutput_.Create_DecryptStructureOutput_((*(_7_parts).IndexInt(0)).(_dafny.Map), (*(_7_parts).IndexInt(1)).(_dafny.Map), (_5_pathOutput).Dtor_parsedHeader()) + output = m_Wrappers.Companion_Result_.Create_Success_(_8_plainOutput) + return output + return output +} +func (_static *CompanionStruct_Default___) DecryptPathStructure(config Config, input m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.DecryptPathStructureInput) m_Wrappers.Result { + var output m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Companion_DecryptPathStructureOutput_.Default()) + _ = output + var _0_valueOrError0 m_Wrappers.Outcome = m_Wrappers.Companion_Outcome_.Default() + _ = _0_valueOrError0 + _0_valueOrError0 = m_Wrappers.Companion_Default___.Need(_dafny.Quantifier(((input).Dtor_encryptedStructure()).UniqueElements(), false, func(_exists_var_0 m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.AuthItem) bool { + var _1_x m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.AuthItem + _1_x = interface{}(_exists_var_0).(m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.AuthItem) + return (_dafny.Companion_Sequence_.Contains((input).Dtor_encryptedStructure(), _1_x)) && (((_1_x).Dtor_action()).Equals(m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Companion_AuthenticateAction_.Create_SIGN_())) + }), m_StructuredEncryptionUtil.Companion_Default___.E(_dafny.SeqOfString("At least one Authenticate Action must be SIGN"))) + if (_0_valueOrError0).IsFailure() { + output = (_0_valueOrError0).PropagateFailure() + return output + } + var _2_valueOrError1 m_Wrappers.Outcome = m_Wrappers.Companion_Outcome_.Default() + _ = _2_valueOrError1 + _2_valueOrError1 = m_Wrappers.Companion_Default___.Need(m_StructuredEncryptionUtil.Companion_Default___.AuthListHasNoDuplicatesFromSet((input).Dtor_encryptedStructure()), m_StructuredEncryptionUtil.Companion_Default___.E(_dafny.SeqOfString("Duplicate Paths"))) + if (_2_valueOrError1).IsFailure() { + output = (_2_valueOrError1).PropagateFailure() + return output + } + var _3_valueOrError2 m_Wrappers.Result = m_Wrappers.Result{} + _ = _3_valueOrError2 + _3_valueOrError2 = Companion_Default___.GetBinary((input).Dtor_encryptedStructure(), m_StructuredEncryptionUtil.Companion_Default___.HeaderPath()) + if (_3_valueOrError2).IsFailure() { + output = (_3_valueOrError2).PropagateFailure() + return output + } + var _4_headerSerialized m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.StructuredDataTerminal + _ = _4_headerSerialized + _4_headerSerialized = (_3_valueOrError2).Extract().(m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.StructuredDataTerminal) + var _5_valueOrError3 m_Wrappers.Result = m_Wrappers.Result{} + _ = _5_valueOrError3 + _5_valueOrError3 = Companion_Default___.GetBinary((input).Dtor_encryptedStructure(), m_StructuredEncryptionUtil.Companion_Default___.FooterPath()) + if (_5_valueOrError3).IsFailure() { + output = (_5_valueOrError3).PropagateFailure() + return output + } + var _6_footerSerialized m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.StructuredDataTerminal + _ = _6_footerSerialized + _6_footerSerialized = (_5_valueOrError3).Extract().(m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.StructuredDataTerminal) + var _7_valueOrError4 m_Wrappers.Result = m_Wrappers.Result{} + _ = _7_valueOrError4 + _7_valueOrError4 = m_StructuredEncryptionHeader.Companion_Default___.PartialDeserialize((_4_headerSerialized).Dtor_value()) + if (_7_valueOrError4).IsFailure() { + output = (_7_valueOrError4).PropagateFailure() + return output + } + var _8_head m_StructuredEncryptionHeader.PartialHeader + _ = _8_head + _8_head = (_7_valueOrError4).Extract().(m_StructuredEncryptionHeader.PartialHeader) + var _9_valueOrError5 m_Wrappers.Result = m_Wrappers.Result{} + _ = _9_valueOrError5 + var _out0 m_Wrappers.Result + _ = _out0 + _out0 = (_8_head).GetAlgorithmSuite((config).Dtor_materialProviders()) + _9_valueOrError5 = _out0 + if (_9_valueOrError5).IsFailure() { + output = (_9_valueOrError5).PropagateFailure() + return output + } + var _10_headerAlgorithmSuite m_AwsCryptographyMaterialProvidersTypes.AlgorithmSuiteInfo + _ = _10_headerAlgorithmSuite + _10_headerAlgorithmSuite = (_9_valueOrError5).Extract().(m_AwsCryptographyMaterialProvidersTypes.AlgorithmSuiteInfo) + var _11_valueOrError6 m_Wrappers.Outcome = m_Wrappers.Companion_Outcome_.Default() + _ = _11_valueOrError6 + _11_valueOrError6 = m_Wrappers.Companion_Default___.Need(m_StructuredEncryptionUtil.Companion_Default___.ValidString((input).Dtor_tableName()), m_StructuredEncryptionUtil.Companion_Default___.E(_dafny.SeqOfString("Bad Table Name"))) + if (_11_valueOrError6).IsFailure() { + output = (_11_valueOrError6).PropagateFailure() + return output + } + var _12_valueOrError7 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(_dafny.EmptySeq) + _ = _12_valueOrError7 + _12_valueOrError7 = m_Canonize.Companion_Default___.ForDecrypt((input).Dtor_tableName(), (input).Dtor_encryptedStructure(), (_8_head).Dtor_legend()) + if (_12_valueOrError7).IsFailure() { + output = (_12_valueOrError7).PropagateFailure() + return output + } + var _13_canonData _dafny.Sequence + _ = _13_canonData + _13_canonData = (_12_valueOrError7).Extract().(_dafny.Sequence) + var _14_encryptionContext _dafny.Map + _ = _14_encryptionContext + _14_encryptionContext = ((input).Dtor_encryptionContext()).UnwrapOr(_dafny.NewMapBuilder().ToMap()).(_dafny.Map) + var _15_cmm m_AwsCryptographyMaterialProvidersTypes.ICryptographicMaterialsManager + _ = _15_cmm + _15_cmm = (input).Dtor_cmm() + if ((_8_head).Dtor_version()) == (uint8(2)) { + var _16_valueOrError8 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(_dafny.EmptyMap) + _ = _16_valueOrError8 + var _out1 m_Wrappers.Result + _ = _out1 + _out1 = Companion_Default___.GetV2EncryptionContext(m_Canonize.Companion_Default___.UnCanon(_13_canonData, uint64(0), _dafny.SeqOf())) + _16_valueOrError8 = _out1 + if (_16_valueOrError8).IsFailure() { + output = (_16_valueOrError8).PropagateFailure() + return output + } + var _17_newEncryptionContext _dafny.Map + _ = _17_newEncryptionContext + _17_newEncryptionContext = (_16_valueOrError8).Extract().(_dafny.Map) + if (uint64((_17_newEncryptionContext).CardinalityInt())) != (uint64(0)) /* dircomp */ { + var _18_valueOrError9 m_Wrappers.Outcome = m_Wrappers.Companion_Outcome_.Default() + _ = _18_valueOrError9 + _18_valueOrError9 = m_Wrappers.Companion_Default___.Need(((_14_encryptionContext).Keys()).IsDisjointFrom((_17_newEncryptionContext).Keys()), m_StructuredEncryptionUtil.Companion_Default___.E(_dafny.SeqOfString("Internal Error - Structured Encryption encryption context overlaps with Item Encryptor encryption context."))) + if (_18_valueOrError9).IsFailure() { + output = (_18_valueOrError9).PropagateFailure() + return output + } + _14_encryptionContext = (_14_encryptionContext).Merge(_17_newEncryptionContext) + var _19_contextKeysX _dafny.Sequence + _ = _19_contextKeysX + _19_contextKeysX = m_SortedSets.SetToOrderedSequence2((_17_newEncryptionContext).Keys(), func(coer38 func(uint8, uint8) bool) func(interface{}, interface{}) bool { + return func(arg53 interface{}, arg54 interface{}) bool { + return coer38(arg53.(uint8), arg54.(uint8)) + } + }(m_StructuredEncryptionUtil.Companion_Default___.ByteLess)) + var _20_contextKeys _dafny.Sequence + _ = _20_contextKeys + _20_contextKeys = _19_contextKeysX + var _21_cmmR m_Wrappers.Result + _ = _21_cmmR + var _out2 m_Wrappers.Result + _ = _out2 + _out2 = ((config).Dtor_materialProviders()).CreateRequiredEncryptionContextCMM(m_AwsCryptographyMaterialProvidersTypes.Companion_CreateRequiredEncryptionContextCMMInput_.Create_CreateRequiredEncryptionContextCMMInput_(m_Wrappers.Companion_Option_.Create_Some_((input).Dtor_cmm()), m_Wrappers.Companion_Option_.Create_None_(), _20_contextKeys)) + _21_cmmR = _out2 + var _22_valueOrError10 m_Wrappers.Result = m_Wrappers.Result{} + _ = _22_valueOrError10 + _22_valueOrError10 = (_21_cmmR).MapFailure(func(coer39 func(m_AwsCryptographyMaterialProvidersTypes.Error) m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Error) func(interface{}) interface{} { + return func(arg55 interface{}) interface{} { + return coer39(arg55.(m_AwsCryptographyMaterialProvidersTypes.Error)) + } + }(func(_23_e m_AwsCryptographyMaterialProvidersTypes.Error) m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Error { + return m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Companion_Error_.Create_AwsCryptographyMaterialProviders_(_23_e) + })) + if (_22_valueOrError10).IsFailure() { + output = (_22_valueOrError10).PropagateFailure() + return output + } + _15_cmm = m_AwsCryptographyMaterialProvidersTypes.Companion_ICryptographicMaterialsManager_.CastTo_((_22_valueOrError10).Extract()) + } + } + var _24_matR m_Wrappers.Result + _ = _24_matR + var _out3 m_Wrappers.Result + _ = _out3 + _out3 = (_15_cmm).DecryptMaterials(m_AwsCryptographyMaterialProvidersTypes.Companion_DecryptMaterialsInput_.Create_DecryptMaterialsInput_((_10_headerAlgorithmSuite).Dtor_id(), Companion_Default___.DBE__COMMITMENT__POLICY(), (_8_head).Dtor_dataKeys(), (_8_head).Dtor_encContext(), m_Wrappers.Companion_Option_.Create_Some_(_14_encryptionContext))) + _24_matR = _out3 + var _25_valueOrError11 m_Wrappers.Result = m_Wrappers.Result{} + _ = _25_valueOrError11 + _25_valueOrError11 = (_24_matR).MapFailure(func(coer40 func(m_AwsCryptographyMaterialProvidersTypes.Error) m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Error) func(interface{}) interface{} { + return func(arg56 interface{}) interface{} { + return coer40(arg56.(m_AwsCryptographyMaterialProvidersTypes.Error)) + } + }(func(_26_e m_AwsCryptographyMaterialProvidersTypes.Error) m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Error { + return m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Companion_Error_.Create_AwsCryptographyMaterialProviders_(_26_e) + })) + if (_25_valueOrError11).IsFailure() { + output = (_25_valueOrError11).PropagateFailure() + return output + } + var _27_matOutput m_AwsCryptographyMaterialProvidersTypes.DecryptMaterialsOutput + _ = _27_matOutput + _27_matOutput = (_25_valueOrError11).Extract().(m_AwsCryptographyMaterialProvidersTypes.DecryptMaterialsOutput) + var _28_mat m_AwsCryptographyMaterialProvidersTypes.DecryptionMaterials + _ = _28_mat + _28_mat = (_27_matOutput).Dtor_decryptionMaterials() + var _29_valueOrError12 m_Wrappers.Outcome = m_Wrappers.Companion_Outcome_.Default() + _ = _29_valueOrError12 + _29_valueOrError12 = m_Wrappers.Companion_Default___.Need(m_StructuredEncryptionHeader.Companion_Default___.ValidEncryptionContext((_28_mat).Dtor_encryptionContext()), m_StructuredEncryptionUtil.Companion_Default___.E(_dafny.SeqOfString("Bad encryption context"))) + if (_29_valueOrError12).IsFailure() { + output = (_29_valueOrError12).PropagateFailure() + return output + } + var _30_valueOrError13 m_Wrappers.Outcome = m_Wrappers.Companion_Outcome_.Default() + _ = _30_valueOrError13 + _30_valueOrError13 = m_Wrappers.Companion_Default___.Need(m_Materials.Companion_Default___.DecryptionMaterialsWithPlaintextDataKey(_28_mat), m_StructuredEncryptionUtil.Companion_Default___.E(_dafny.SeqOfString("Encryption material has no key"))) + if (_30_valueOrError13).IsFailure() { + output = (_30_valueOrError13).PropagateFailure() + return output + } + var _31_valueOrError14 m_Wrappers.Outcome = m_Wrappers.Companion_Outcome_.Default() + _ = _31_valueOrError14 + _31_valueOrError14 = m_Wrappers.Companion_Default___.Need(m_StructuredEncryptionUtil.Companion_Default___.ValidSuite((_28_mat).Dtor_algorithmSuite()), m_StructuredEncryptionUtil.Companion_Default___.E(_dafny.SeqOfString("Invalid Algorithm Suite"))) + if (_31_valueOrError14).IsFailure() { + output = (_31_valueOrError14).PropagateFailure() + return output + } + var _32_postCMMAlg m_AwsCryptographyMaterialProvidersTypes.AlgorithmSuiteInfo + _ = _32_postCMMAlg + _32_postCMMAlg = (_28_mat).Dtor_algorithmSuite() + var _33_key _dafny.Sequence + _ = _33_key + _33_key = ((_28_mat).Dtor_plaintextDataKey()).Dtor_value().(_dafny.Sequence) + var _34_valueOrError15 m_Wrappers.Result = m_Wrappers.Result{} + _ = _34_valueOrError15 + var _out4 m_Wrappers.Result + _ = _out4 + _out4 = m_StructuredEncryptionCrypt.Companion_Default___.GetCommitKey((config).Dtor_primitives(), _32_postCMMAlg, _33_key, (_8_head).Dtor_msgID()) + _34_valueOrError15 = _out4 + if (_34_valueOrError15).IsFailure() { + output = (_34_valueOrError15).PropagateFailure() + return output + } + var _35_commitKey _dafny.Sequence + _ = _35_commitKey + _35_commitKey = (_34_valueOrError15).Extract().(_dafny.Sequence) + var _36_valueOrError16 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(false) + _ = _36_valueOrError16 + _36_valueOrError16 = (_8_head).VerifyCommitment((config).Dtor_primitives(), _32_postCMMAlg, _35_commitKey, (_4_headerSerialized).Dtor_value()) + if (_36_valueOrError16).IsFailure() { + output = (_36_valueOrError16).PropagateFailure() + return output + } + var _37_ok bool + _ = _37_ok + _37_ok = (_36_valueOrError16).Extract().(bool) + var _38_valueOrError17 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(m_StructuredEncryptionFooter.Companion_Footer_.Default()) + _ = _38_valueOrError17 + _38_valueOrError17 = m_StructuredEncryptionFooter.Companion_Default___.DeserializeFooter((_6_footerSerialized).Dtor_value(), ((_32_postCMMAlg).Dtor_signature()).Is_ECDSA()) + if (_38_valueOrError17).IsFailure() { + output = (_38_valueOrError17).PropagateFailure() + return output + } + var _39_footer m_StructuredEncryptionFooter.Footer + _ = _39_footer + _39_footer = (_38_valueOrError17).Extract().(m_StructuredEncryptionFooter.Footer) + var _40_valueOrError18 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(false) + _ = _40_valueOrError18 + var _out5 m_Wrappers.Result + _ = _out5 + _out5 = (_39_footer).Validate((config).Dtor_primitives(), _28_mat, (_8_head).Dtor_dataKeys(), _13_canonData, (_4_headerSerialized).Dtor_value()) + _40_valueOrError18 = _out5 + if (_40_valueOrError18).IsFailure() { + output = (_40_valueOrError18).PropagateFailure() + return output + } + var _41___v0 bool + _ = _41___v0 + _41___v0 = (_40_valueOrError18).Extract().(bool) + var _42_valueOrError19 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(_dafny.EmptySeq) + _ = _42_valueOrError19 + var _out6 m_Wrappers.Result + _ = _out6 + _out6 = m_StructuredEncryptionCrypt.Companion_Default___.Decrypt((config).Dtor_primitives(), _32_postCMMAlg, _33_key, _8_head, _13_canonData) + _42_valueOrError19 = _out6 + if (_42_valueOrError19).IsFailure() { + output = (_42_valueOrError19).PropagateFailure() + return output + } + var _43_decryptedItems _dafny.Sequence + _ = _43_decryptedItems + _43_decryptedItems = (_42_valueOrError19).Extract().(_dafny.Sequence) + var _44_largeResult _dafny.Sequence + _ = _44_largeResult + _44_largeResult = m_Canonize.Companion_Default___.UnCanonDecrypt(_43_decryptedItems) + var _45_smallResult _dafny.Sequence + _ = _45_smallResult + _45_smallResult = m_Canonize.Companion_Default___.RemoveHeaders(_44_largeResult) + var _46_parsedHeader m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.ParsedHeader + _ = _46_parsedHeader + _46_parsedHeader = m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Companion_ParsedHeader_.Create_ParsedHeader_(((_10_headerAlgorithmSuite).Dtor_id()).Dtor_DBE(), (_8_head).Dtor_dataKeys(), (_8_head).Dtor_encContext(), (_28_mat).Dtor_encryptionContext()) + var _47_decryptOutput m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.DecryptPathStructureOutput + _ = _47_decryptOutput + _47_decryptOutput = m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Companion_DecryptPathStructureOutput_.Create_DecryptPathStructureOutput_(_45_smallResult, _46_parsedHeader) + output = m_Wrappers.Companion_Result_.Create_Success_(_47_decryptOutput) + return output +} +func (_static *CompanionStruct_Default___) DBE__COMMITMENT__POLICY() m_AwsCryptographyMaterialProvidersTypes.CommitmentPolicy { + return m_AwsCryptographyMaterialProvidersTypes.Companion_CommitmentPolicy_.Create_DBE_(m_AwsCryptographyMaterialProvidersTypes.Companion_DBECommitmentPolicy_.Create_REQUIRE__ENCRYPT__REQUIRE__DECRYPT_()) +} + +// End of class Default__ + +// Definition of datatype Config +type Config struct { + Data_Config_ +} + +func (_this Config) Get_() Data_Config_ { + return _this.Data_Config_ +} + +type Data_Config_ interface { + isConfig() +} + +type CompanionStruct_Config_ struct { +} + +var Companion_Config_ = CompanionStruct_Config_{} + +type Config_Config struct { + Primitives *m_AtomicPrimitives.AtomicPrimitivesClient + MaterialProviders *m_MaterialProviders.MaterialProvidersClient +} + +func (Config_Config) isConfig() {} + +func (CompanionStruct_Config_) Create_Config_(Primitives *m_AtomicPrimitives.AtomicPrimitivesClient, MaterialProviders *m_MaterialProviders.MaterialProvidersClient) Config { + return Config{Config_Config{Primitives, MaterialProviders}} +} + +func (_this Config) Is_Config() bool { + _, ok := _this.Get_().(Config_Config) + return ok +} + +func (CompanionStruct_Config_) Default() Config { + return Companion_Config_.Create_Config_((*m_AtomicPrimitives.AtomicPrimitivesClient)(nil), (*m_MaterialProviders.MaterialProvidersClient)(nil)) +} + +func (_this Config) Dtor_primitives() *m_AtomicPrimitives.AtomicPrimitivesClient { + return _this.Get_().(Config_Config).Primitives +} + +func (_this Config) Dtor_materialProviders() *m_MaterialProviders.MaterialProvidersClient { + return _this.Get_().(Config_Config).MaterialProviders +} + +func (_this Config) String() string { + switch data := _this.Get_().(type) { + case nil: + return "null" + case Config_Config: + { + return "AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations.Config.Config" + "(" + _dafny.String(data.Primitives) + ", " + _dafny.String(data.MaterialProviders) + ")" + } + default: + { + return "" + } + } +} + +func (_this Config) Equals(other Config) bool { + switch data1 := _this.Get_().(type) { + case Config_Config: + { + data2, ok := other.Get_().(Config_Config) + return ok && data1.Primitives == data2.Primitives && data1.MaterialProviders == data2.MaterialProviders + } + default: + { + return false // unexpected + } + } +} + +func (_this Config) EqualsGeneric(other interface{}) bool { + typed, ok := other.(Config) + return ok && _this.Equals(typed) +} + +func Type_Config_() _dafny.TypeDescriptor { + return type_Config_{} +} + +type type_Config_ struct { +} + +func (_this type_Config_) Default() interface{} { + return Companion_Config_.Default() +} + +func (_this type_Config_) String() string { + return "AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations.Config" +} +func (_this Config) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = Config{} + +// End of datatype Config diff --git a/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes/AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.go b/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes/AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.go new file mode 100644 index 000000000..a79cf0d68 --- /dev/null +++ b/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes/AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.go @@ -0,0 +1,2956 @@ +// Package AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes +// Dafny module AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes compiled into Go + +package AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes + +import ( + os "os" + + m_ComAmazonawsDynamodbTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/dynamodb/ComAmazonawsDynamodbTypes" + m_Com_Amazonaws_Dynamodb "github.com/aws/aws-cryptographic-material-providers-library/releases/go/dynamodb/Com_Amazonaws_Dynamodb" + m_ComAmazonawsKmsTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/kms/ComAmazonawsKmsTypes" + m_Com_Amazonaws_Kms "github.com/aws/aws-cryptographic-material-providers-library/releases/go/kms/Com_Amazonaws_Kms" + m_AlgorithmSuites "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AlgorithmSuites" + m_AwsArnParsing "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsArnParsing" + m_AwsCryptographyKeyStoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyKeyStoreOperations" + m_AwsCryptographyKeyStoreTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyKeyStoreTypes" + m_AwsCryptographyMaterialProvidersOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyMaterialProvidersOperations" + m_AwsCryptographyMaterialProvidersTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyMaterialProvidersTypes" + m_AwsKmsDiscoveryKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsDiscoveryKeyring" + m_AwsKmsEcdhKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsEcdhKeyring" + m_AwsKmsHierarchicalKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsHierarchicalKeyring" + m_AwsKmsKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsKeyring" + m_AwsKmsMrkAreUnique "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkAreUnique" + m_AwsKmsMrkDiscoveryKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkDiscoveryKeyring" + m_AwsKmsMrkKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkKeyring" + m_AwsKmsMrkMatchForDecrypt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkMatchForDecrypt" + m_AwsKmsRsaKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsRsaKeyring" + m_AwsKmsUtils "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsUtils" + m_CMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CMM" + m_CacheConstants "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CacheConstants" + m_CanonicalEncryptionContext "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CanonicalEncryptionContext" + m_Commitment "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Commitment" + m_Constants "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Constants" + m_CreateKeyStoreTable "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CreateKeyStoreTable" + m_CreateKeys "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CreateKeys" + m_DDBKeystoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DDBKeystoreOperations" + m_DefaultCMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DefaultCMM" + m_DefaultClientSupplier "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DefaultClientSupplier" + m_Defaults "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Defaults" + m_DiscoveryMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DiscoveryMultiKeyring" + m_EcdhEdkWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/EcdhEdkWrapping" + m_EdkWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/EdkWrapping" + m_ErrorMessages "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/ErrorMessages" + m_GetKeys "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/GetKeys" + m_IntermediateKeyWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/IntermediateKeyWrapping" + m_KMSKeystoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KMSKeystoreOperations" + m_KeyStore "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KeyStore" + m_KeyStoreErrorMessages "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KeyStoreErrorMessages" + m_Keyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Keyring" + m_KmsArn "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KmsArn" + m_LocalCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/LocalCMC" + m_MaterialProviders "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MaterialProviders" + m_MaterialWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MaterialWrapping" + m_Materials "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Materials" + m_MrkAwareDiscoveryMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MrkAwareDiscoveryMultiKeyring" + m_MrkAwareStrictMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MrkAwareStrictMultiKeyring" + m_MultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MultiKeyring" + m_RawAESKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawAESKeyring" + m_RawECDHKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawECDHKeyring" + m_RawRSAKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawRSAKeyring" + m_RequiredEncryptionContextCMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RequiredEncryptionContextCMM" + m_StormTracker "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StormTracker" + m_StormTrackingCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StormTrackingCMC" + m_StrictMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StrictMultiKeyring" + m_Structure "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Structure" + m_SynchronizedLocalCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/SynchronizedLocalCMC" + m_Utils "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Utils" + m_AtomicPrimitives "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AtomicPrimitives" + m_AwsCryptographyPrimitivesOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AwsCryptographyPrimitivesOperations" + m_AwsCryptographyPrimitivesTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AwsCryptographyPrimitivesTypes" + m_Digest "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/Digest" + m_HKDF "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/HKDF" + m_KdfCtr "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/KdfCtr" + m_Random "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/Random" + m_WrappedHKDF "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/WrappedHKDF" + m_WrappedHMAC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/WrappedHMAC" + m_Actions "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Actions" + m_Base64 "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Base64" + m_Base64Lemmas "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Base64Lemmas" + m_BoundedInts "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/BoundedInts" + m_DivInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivInternals" + m_DivInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivInternalsNonlinear" + m_DivMod "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivMod" + m_FileIO "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/FileIO" + m_FloatCompare "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/FloatCompare" + m_Functions "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Functions" + m_GeneralInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/GeneralInternals" + m_GetOpt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/GetOpt" + m_HexStrings "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/HexStrings" + m_Logarithm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Logarithm" + m__Math "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Math_" + m_ModInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/ModInternals" + m_ModInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/ModInternalsNonlinear" + m_Mul "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Mul" + m_MulInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/MulInternals" + m_MulInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/MulInternalsNonlinear" + m_Power "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Power" + m_Relations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Relations" + m_Seq "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Seq" + m_Seq_MergeSort "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Seq_MergeSort" + m_Sorting "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Sorting" + m_StandardLibrary "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary" + m_StandardLibraryInterop "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibraryInterop" + m_StandardLibrary_MemoryMath "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_MemoryMath" + m_StandardLibrary_Sequence "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_Sequence" + m_StandardLibrary_String "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_String" + m_StandardLibrary_UInt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_UInt" + m_Streams "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Streams" + m_UnicodeStrings "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/UnicodeStrings" + m__Unicode "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Unicode_" + m_Utf16EncodingForm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Utf16EncodingForm" + m_Utf8EncodingForm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Utf8EncodingForm" + m_Wrappers "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Wrappers" + m__System "github.com/dafny-lang/DafnyRuntimeGo/v4/System_" + _dafny "github.com/dafny-lang/DafnyRuntimeGo/v4/dafny" +) + +var _ = os.Args +var _ _dafny.Dummy__ +var _ m__System.Dummy__ +var _ m_Wrappers.Dummy__ +var _ m_BoundedInts.Dummy__ +var _ m_StandardLibrary_UInt.Dummy__ +var _ m_StandardLibrary_MemoryMath.Dummy__ +var _ m_StandardLibrary_Sequence.Dummy__ +var _ m_StandardLibrary_String.Dummy__ +var _ m_StandardLibrary.Dummy__ +var _ m_AwsCryptographyPrimitivesTypes.Dummy__ +var _ m_Random.Dummy__ +var _ m_Digest.Dummy__ +var _ m_WrappedHMAC.Dummy__ +var _ m_HKDF.Dummy__ +var _ m_WrappedHKDF.Dummy__ +var _ m_KdfCtr.Dummy__ +var _ m_AwsCryptographyPrimitivesOperations.Dummy__ +var _ m_AtomicPrimitives.Dummy__ +var _ m_ComAmazonawsDynamodbTypes.Dummy__ +var _ m_ComAmazonawsKmsTypes.Dummy__ +var _ m_AwsCryptographyKeyStoreTypes.Dummy__ +var _ m_AwsCryptographyMaterialProvidersTypes.Dummy__ +var _ m_Base64.Dummy__ +var _ m_AlgorithmSuites.Dummy__ +var _ m_Materials.Dummy__ +var _ m_Keyring.Dummy__ +var _ m_Relations.Dummy__ +var _ m_Seq_MergeSort.Dummy__ +var _ m__Math.Dummy__ +var _ m_Seq.Dummy__ +var _ m_Actions.Dummy__ +var _ m_CanonicalEncryptionContext.Dummy__ +var _ m_MaterialWrapping.Dummy__ +var _ m_IntermediateKeyWrapping.Dummy__ +var _ m_EdkWrapping.Dummy__ +var _ m_ErrorMessages.Dummy__ +var _ m_RawAESKeyring.Dummy__ +var _ m_AwsArnParsing.Dummy__ +var _ m_Constants.Dummy__ +var _ m_EcdhEdkWrapping.Dummy__ +var _ m_RawECDHKeyring.Dummy__ +var _ m_RawRSAKeyring.Dummy__ +var _ m_AwsKmsMrkMatchForDecrypt.Dummy__ +var _ m_AwsKmsUtils.Dummy__ +var _ m_AwsKmsKeyring.Dummy__ +var _ m_AwsKmsDiscoveryKeyring.Dummy__ +var _ m_AwsKmsEcdhKeyring.Dummy__ +var _ m_FileIO.Dummy__ +var _ m_LocalCMC.Dummy__ +var _ m_SynchronizedLocalCMC.Dummy__ +var _ m_StormTracker.Dummy__ +var _ m_StormTrackingCMC.Dummy__ +var _ m_CacheConstants.Dummy__ +var _ m_AwsKmsHierarchicalKeyring.Dummy__ +var _ m_AwsKmsMrkDiscoveryKeyring.Dummy__ +var _ m_AwsKmsMrkKeyring.Dummy__ +var _ m_AwsKmsRsaKeyring.Dummy__ +var _ m_MultiKeyring.Dummy__ +var _ m_AwsKmsMrkAreUnique.Dummy__ +var _ m_StrictMultiKeyring.Dummy__ +var _ m_Com_Amazonaws_Kms.Dummy__ +var _ m_Com_Amazonaws_Dynamodb.Dummy__ +var _ m_DiscoveryMultiKeyring.Dummy__ +var _ m_MrkAwareDiscoveryMultiKeyring.Dummy__ +var _ m_MrkAwareStrictMultiKeyring.Dummy__ +var _ m_CMM.Dummy__ +var _ m_Defaults.Dummy__ +var _ m_Commitment.Dummy__ +var _ m_DefaultCMM.Dummy__ +var _ m_DefaultClientSupplier.Dummy__ +var _ m_Utils.Dummy__ +var _ m_RequiredEncryptionContextCMM.Dummy__ +var _ m_AwsCryptographyMaterialProvidersOperations.Dummy__ +var _ m_MaterialProviders.Dummy__ +var _ m_KeyStoreErrorMessages.Dummy__ +var _ m_KmsArn.Dummy__ +var _ m_Structure.Dummy__ +var _ m_KMSKeystoreOperations.Dummy__ +var _ m_DDBKeystoreOperations.Dummy__ +var _ m_CreateKeys.Dummy__ +var _ m_CreateKeyStoreTable.Dummy__ +var _ m_GetKeys.Dummy__ +var _ m_AwsCryptographyKeyStoreOperations.Dummy__ +var _ m_KeyStore.Dummy__ +var _ m__Unicode.Dummy__ +var _ m_Functions.Dummy__ +var _ m_Utf8EncodingForm.Dummy__ +var _ m_Utf16EncodingForm.Dummy__ +var _ m_UnicodeStrings.Dummy__ +var _ m_GeneralInternals.Dummy__ +var _ m_MulInternalsNonlinear.Dummy__ +var _ m_MulInternals.Dummy__ +var _ m_Mul.Dummy__ +var _ m_ModInternalsNonlinear.Dummy__ +var _ m_DivInternalsNonlinear.Dummy__ +var _ m_ModInternals.Dummy__ +var _ m_DivInternals.Dummy__ +var _ m_DivMod.Dummy__ +var _ m_Power.Dummy__ +var _ m_Logarithm.Dummy__ +var _ m_StandardLibraryInterop.Dummy__ +var _ m_Streams.Dummy__ +var _ m_Sorting.Dummy__ +var _ m_HexStrings.Dummy__ +var _ m_GetOpt.Dummy__ +var _ m_FloatCompare.Dummy__ +var _ m_Base64Lemmas.Dummy__ + +type Dummy__ struct{} + +// Definition of class Default__ +type Default__ struct { + dummy byte +} + +func New_Default___() *Default__ { + _this := Default__{} + + return &_this +} + +type CompanionStruct_Default___ struct { +} + +var Companion_Default___ = CompanionStruct_Default___{} + +func (_this *Default__) Equals(other *Default__) bool { + return _this == other +} + +func (_this *Default__) EqualsGeneric(x interface{}) bool { + other, ok := x.(*Default__) + return ok && _this.Equals(other) +} + +func (*Default__) String() string { + return "AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Default__" +} +func (_this *Default__) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = &Default__{} + +func (_static *CompanionStruct_Default___) IsValid__TerminalTypeId(x _dafny.Sequence) bool { + return ((_dafny.IntOfInt64(2)).Cmp(_dafny.IntOfUint32((x).Cardinality())) <= 0) && ((_dafny.IntOfUint32((x).Cardinality())).Cmp(_dafny.IntOfInt64(2)) <= 0) +} +func (_static *CompanionStruct_Default___) IsDummySubsetType(x _dafny.Int) bool { + return (x).Sign() == 1 +} + +// End of class Default__ + +// Definition of datatype DafnyCallEvent +type DafnyCallEvent struct { + Data_DafnyCallEvent_ +} + +func (_this DafnyCallEvent) Get_() Data_DafnyCallEvent_ { + return _this.Data_DafnyCallEvent_ +} + +type Data_DafnyCallEvent_ interface { + isDafnyCallEvent() +} + +type CompanionStruct_DafnyCallEvent_ struct { +} + +var Companion_DafnyCallEvent_ = CompanionStruct_DafnyCallEvent_{} + +type DafnyCallEvent_DafnyCallEvent struct { + Input interface{} + Output interface{} +} + +func (DafnyCallEvent_DafnyCallEvent) isDafnyCallEvent() {} + +func (CompanionStruct_DafnyCallEvent_) Create_DafnyCallEvent_(Input interface{}, Output interface{}) DafnyCallEvent { + return DafnyCallEvent{DafnyCallEvent_DafnyCallEvent{Input, Output}} +} + +func (_this DafnyCallEvent) Is_DafnyCallEvent() bool { + _, ok := _this.Get_().(DafnyCallEvent_DafnyCallEvent) + return ok +} + +func (CompanionStruct_DafnyCallEvent_) Default(_default_I interface{}, _default_O interface{}) DafnyCallEvent { + return Companion_DafnyCallEvent_.Create_DafnyCallEvent_(_default_I, _default_O) +} + +func (_this DafnyCallEvent) Dtor_input() interface{} { + return _this.Get_().(DafnyCallEvent_DafnyCallEvent).Input +} + +func (_this DafnyCallEvent) Dtor_output() interface{} { + return _this.Get_().(DafnyCallEvent_DafnyCallEvent).Output +} + +func (_this DafnyCallEvent) String() string { + switch data := _this.Get_().(type) { + case nil: + return "null" + case DafnyCallEvent_DafnyCallEvent: + { + return "AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.DafnyCallEvent.DafnyCallEvent" + "(" + _dafny.String(data.Input) + ", " + _dafny.String(data.Output) + ")" + } + default: + { + return "" + } + } +} + +func (_this DafnyCallEvent) Equals(other DafnyCallEvent) bool { + switch data1 := _this.Get_().(type) { + case DafnyCallEvent_DafnyCallEvent: + { + data2, ok := other.Get_().(DafnyCallEvent_DafnyCallEvent) + return ok && _dafny.AreEqual(data1.Input, data2.Input) && _dafny.AreEqual(data1.Output, data2.Output) + } + default: + { + return false // unexpected + } + } +} + +func (_this DafnyCallEvent) EqualsGeneric(other interface{}) bool { + typed, ok := other.(DafnyCallEvent) + return ok && _this.Equals(typed) +} + +func Type_DafnyCallEvent_(Type_I_ _dafny.TypeDescriptor, Type_O_ _dafny.TypeDescriptor) _dafny.TypeDescriptor { + return type_DafnyCallEvent_{Type_I_, Type_O_} +} + +type type_DafnyCallEvent_ struct { + Type_I_ _dafny.TypeDescriptor + Type_O_ _dafny.TypeDescriptor +} + +func (_this type_DafnyCallEvent_) Default() interface{} { + Type_I_ := _this.Type_I_ + _ = Type_I_ + Type_O_ := _this.Type_O_ + _ = Type_O_ + return Companion_DafnyCallEvent_.Default(Type_I_.Default(), Type_O_.Default()) +} + +func (_this type_DafnyCallEvent_) String() string { + return "AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.DafnyCallEvent" +} +func (_this DafnyCallEvent) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = DafnyCallEvent{} + +// End of datatype DafnyCallEvent + +// Definition of datatype AuthenticateAction +type AuthenticateAction struct { + Data_AuthenticateAction_ +} + +func (_this AuthenticateAction) Get_() Data_AuthenticateAction_ { + return _this.Data_AuthenticateAction_ +} + +type Data_AuthenticateAction_ interface { + isAuthenticateAction() +} + +type CompanionStruct_AuthenticateAction_ struct { +} + +var Companion_AuthenticateAction_ = CompanionStruct_AuthenticateAction_{} + +type AuthenticateAction_SIGN struct { +} + +func (AuthenticateAction_SIGN) isAuthenticateAction() {} + +func (CompanionStruct_AuthenticateAction_) Create_SIGN_() AuthenticateAction { + return AuthenticateAction{AuthenticateAction_SIGN{}} +} + +func (_this AuthenticateAction) Is_SIGN() bool { + _, ok := _this.Get_().(AuthenticateAction_SIGN) + return ok +} + +type AuthenticateAction_DO__NOT__SIGN struct { +} + +func (AuthenticateAction_DO__NOT__SIGN) isAuthenticateAction() {} + +func (CompanionStruct_AuthenticateAction_) Create_DO__NOT__SIGN_() AuthenticateAction { + return AuthenticateAction{AuthenticateAction_DO__NOT__SIGN{}} +} + +func (_this AuthenticateAction) Is_DO__NOT__SIGN() bool { + _, ok := _this.Get_().(AuthenticateAction_DO__NOT__SIGN) + return ok +} + +func (CompanionStruct_AuthenticateAction_) Default() AuthenticateAction { + return Companion_AuthenticateAction_.Create_SIGN_() +} + +func (_ CompanionStruct_AuthenticateAction_) AllSingletonConstructors() _dafny.Iterator { + i := -1 + return func() (interface{}, bool) { + i++ + switch i { + case 0: + return Companion_AuthenticateAction_.Create_SIGN_(), true + case 1: + return Companion_AuthenticateAction_.Create_DO__NOT__SIGN_(), true + default: + return AuthenticateAction{}, false + } + } +} + +func (_this AuthenticateAction) String() string { + switch _this.Get_().(type) { + case nil: + return "null" + case AuthenticateAction_SIGN: + { + return "AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.AuthenticateAction.SIGN" + } + case AuthenticateAction_DO__NOT__SIGN: + { + return "AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.AuthenticateAction.DO_NOT_SIGN" + } + default: + { + return "" + } + } +} + +func (_this AuthenticateAction) Equals(other AuthenticateAction) bool { + switch _this.Get_().(type) { + case AuthenticateAction_SIGN: + { + _, ok := other.Get_().(AuthenticateAction_SIGN) + return ok + } + case AuthenticateAction_DO__NOT__SIGN: + { + _, ok := other.Get_().(AuthenticateAction_DO__NOT__SIGN) + return ok + } + default: + { + return false // unexpected + } + } +} + +func (_this AuthenticateAction) EqualsGeneric(other interface{}) bool { + typed, ok := other.(AuthenticateAction) + return ok && _this.Equals(typed) +} + +func Type_AuthenticateAction_() _dafny.TypeDescriptor { + return type_AuthenticateAction_{} +} + +type type_AuthenticateAction_ struct { +} + +func (_this type_AuthenticateAction_) Default() interface{} { + return Companion_AuthenticateAction_.Default() +} + +func (_this type_AuthenticateAction_) String() string { + return "AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.AuthenticateAction" +} +func (_this AuthenticateAction) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = AuthenticateAction{} + +// End of datatype AuthenticateAction + +// Definition of datatype AuthItem +type AuthItem struct { + Data_AuthItem_ +} + +func (_this AuthItem) Get_() Data_AuthItem_ { + return _this.Data_AuthItem_ +} + +type Data_AuthItem_ interface { + isAuthItem() +} + +type CompanionStruct_AuthItem_ struct { +} + +var Companion_AuthItem_ = CompanionStruct_AuthItem_{} + +type AuthItem_AuthItem struct { + Key _dafny.Sequence + Data StructuredDataTerminal + Action AuthenticateAction +} + +func (AuthItem_AuthItem) isAuthItem() {} + +func (CompanionStruct_AuthItem_) Create_AuthItem_(Key _dafny.Sequence, Data StructuredDataTerminal, Action AuthenticateAction) AuthItem { + return AuthItem{AuthItem_AuthItem{Key, Data, Action}} +} + +func (_this AuthItem) Is_AuthItem() bool { + _, ok := _this.Get_().(AuthItem_AuthItem) + return ok +} + +func (CompanionStruct_AuthItem_) Default() AuthItem { + return Companion_AuthItem_.Create_AuthItem_(_dafny.EmptySeq, Companion_StructuredDataTerminal_.Default(), Companion_AuthenticateAction_.Default()) +} + +func (_this AuthItem) Dtor_key() _dafny.Sequence { + return _this.Get_().(AuthItem_AuthItem).Key +} + +func (_this AuthItem) Dtor_data() StructuredDataTerminal { + return _this.Get_().(AuthItem_AuthItem).Data +} + +func (_this AuthItem) Dtor_action() AuthenticateAction { + return _this.Get_().(AuthItem_AuthItem).Action +} + +func (_this AuthItem) String() string { + switch data := _this.Get_().(type) { + case nil: + return "null" + case AuthItem_AuthItem: + { + return "AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.AuthItem.AuthItem" + "(" + _dafny.String(data.Key) + ", " + _dafny.String(data.Data) + ", " + _dafny.String(data.Action) + ")" + } + default: + { + return "" + } + } +} + +func (_this AuthItem) Equals(other AuthItem) bool { + switch data1 := _this.Get_().(type) { + case AuthItem_AuthItem: + { + data2, ok := other.Get_().(AuthItem_AuthItem) + return ok && data1.Key.Equals(data2.Key) && data1.Data.Equals(data2.Data) && data1.Action.Equals(data2.Action) + } + default: + { + return false // unexpected + } + } +} + +func (_this AuthItem) EqualsGeneric(other interface{}) bool { + typed, ok := other.(AuthItem) + return ok && _this.Equals(typed) +} + +func Type_AuthItem_() _dafny.TypeDescriptor { + return type_AuthItem_{} +} + +type type_AuthItem_ struct { +} + +func (_this type_AuthItem_) Default() interface{} { + return Companion_AuthItem_.Default() +} + +func (_this type_AuthItem_) String() string { + return "AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.AuthItem" +} +func (_this AuthItem) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = AuthItem{} + +// End of datatype AuthItem + +// Definition of datatype CryptoAction +type CryptoAction struct { + Data_CryptoAction_ +} + +func (_this CryptoAction) Get_() Data_CryptoAction_ { + return _this.Data_CryptoAction_ +} + +type Data_CryptoAction_ interface { + isCryptoAction() +} + +type CompanionStruct_CryptoAction_ struct { +} + +var Companion_CryptoAction_ = CompanionStruct_CryptoAction_{} + +type CryptoAction_ENCRYPT__AND__SIGN struct { +} + +func (CryptoAction_ENCRYPT__AND__SIGN) isCryptoAction() {} + +func (CompanionStruct_CryptoAction_) Create_ENCRYPT__AND__SIGN_() CryptoAction { + return CryptoAction{CryptoAction_ENCRYPT__AND__SIGN{}} +} + +func (_this CryptoAction) Is_ENCRYPT__AND__SIGN() bool { + _, ok := _this.Get_().(CryptoAction_ENCRYPT__AND__SIGN) + return ok +} + +type CryptoAction_SIGN__AND__INCLUDE__IN__ENCRYPTION__CONTEXT struct { +} + +func (CryptoAction_SIGN__AND__INCLUDE__IN__ENCRYPTION__CONTEXT) isCryptoAction() {} + +func (CompanionStruct_CryptoAction_) Create_SIGN__AND__INCLUDE__IN__ENCRYPTION__CONTEXT_() CryptoAction { + return CryptoAction{CryptoAction_SIGN__AND__INCLUDE__IN__ENCRYPTION__CONTEXT{}} +} + +func (_this CryptoAction) Is_SIGN__AND__INCLUDE__IN__ENCRYPTION__CONTEXT() bool { + _, ok := _this.Get_().(CryptoAction_SIGN__AND__INCLUDE__IN__ENCRYPTION__CONTEXT) + return ok +} + +type CryptoAction_SIGN__ONLY struct { +} + +func (CryptoAction_SIGN__ONLY) isCryptoAction() {} + +func (CompanionStruct_CryptoAction_) Create_SIGN__ONLY_() CryptoAction { + return CryptoAction{CryptoAction_SIGN__ONLY{}} +} + +func (_this CryptoAction) Is_SIGN__ONLY() bool { + _, ok := _this.Get_().(CryptoAction_SIGN__ONLY) + return ok +} + +type CryptoAction_DO__NOTHING struct { +} + +func (CryptoAction_DO__NOTHING) isCryptoAction() {} + +func (CompanionStruct_CryptoAction_) Create_DO__NOTHING_() CryptoAction { + return CryptoAction{CryptoAction_DO__NOTHING{}} +} + +func (_this CryptoAction) Is_DO__NOTHING() bool { + _, ok := _this.Get_().(CryptoAction_DO__NOTHING) + return ok +} + +func (CompanionStruct_CryptoAction_) Default() CryptoAction { + return Companion_CryptoAction_.Create_ENCRYPT__AND__SIGN_() +} + +func (_ CompanionStruct_CryptoAction_) AllSingletonConstructors() _dafny.Iterator { + i := -1 + return func() (interface{}, bool) { + i++ + switch i { + case 0: + return Companion_CryptoAction_.Create_ENCRYPT__AND__SIGN_(), true + case 1: + return Companion_CryptoAction_.Create_SIGN__AND__INCLUDE__IN__ENCRYPTION__CONTEXT_(), true + case 2: + return Companion_CryptoAction_.Create_SIGN__ONLY_(), true + case 3: + return Companion_CryptoAction_.Create_DO__NOTHING_(), true + default: + return CryptoAction{}, false + } + } +} + +func (_this CryptoAction) String() string { + switch _this.Get_().(type) { + case nil: + return "null" + case CryptoAction_ENCRYPT__AND__SIGN: + { + return "AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.CryptoAction.ENCRYPT_AND_SIGN" + } + case CryptoAction_SIGN__AND__INCLUDE__IN__ENCRYPTION__CONTEXT: + { + return "AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.CryptoAction.SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT" + } + case CryptoAction_SIGN__ONLY: + { + return "AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.CryptoAction.SIGN_ONLY" + } + case CryptoAction_DO__NOTHING: + { + return "AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.CryptoAction.DO_NOTHING" + } + default: + { + return "" + } + } +} + +func (_this CryptoAction) Equals(other CryptoAction) bool { + switch _this.Get_().(type) { + case CryptoAction_ENCRYPT__AND__SIGN: + { + _, ok := other.Get_().(CryptoAction_ENCRYPT__AND__SIGN) + return ok + } + case CryptoAction_SIGN__AND__INCLUDE__IN__ENCRYPTION__CONTEXT: + { + _, ok := other.Get_().(CryptoAction_SIGN__AND__INCLUDE__IN__ENCRYPTION__CONTEXT) + return ok + } + case CryptoAction_SIGN__ONLY: + { + _, ok := other.Get_().(CryptoAction_SIGN__ONLY) + return ok + } + case CryptoAction_DO__NOTHING: + { + _, ok := other.Get_().(CryptoAction_DO__NOTHING) + return ok + } + default: + { + return false // unexpected + } + } +} + +func (_this CryptoAction) EqualsGeneric(other interface{}) bool { + typed, ok := other.(CryptoAction) + return ok && _this.Equals(typed) +} + +func Type_CryptoAction_() _dafny.TypeDescriptor { + return type_CryptoAction_{} +} + +type type_CryptoAction_ struct { +} + +func (_this type_CryptoAction_) Default() interface{} { + return Companion_CryptoAction_.Default() +} + +func (_this type_CryptoAction_) String() string { + return "AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.CryptoAction" +} +func (_this CryptoAction) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = CryptoAction{} + +// End of datatype CryptoAction + +// Definition of datatype CryptoItem +type CryptoItem struct { + Data_CryptoItem_ +} + +func (_this CryptoItem) Get_() Data_CryptoItem_ { + return _this.Data_CryptoItem_ +} + +type Data_CryptoItem_ interface { + isCryptoItem() +} + +type CompanionStruct_CryptoItem_ struct { +} + +var Companion_CryptoItem_ = CompanionStruct_CryptoItem_{} + +type CryptoItem_CryptoItem struct { + Key _dafny.Sequence + Data StructuredDataTerminal + Action CryptoAction +} + +func (CryptoItem_CryptoItem) isCryptoItem() {} + +func (CompanionStruct_CryptoItem_) Create_CryptoItem_(Key _dafny.Sequence, Data StructuredDataTerminal, Action CryptoAction) CryptoItem { + return CryptoItem{CryptoItem_CryptoItem{Key, Data, Action}} +} + +func (_this CryptoItem) Is_CryptoItem() bool { + _, ok := _this.Get_().(CryptoItem_CryptoItem) + return ok +} + +func (CompanionStruct_CryptoItem_) Default() CryptoItem { + return Companion_CryptoItem_.Create_CryptoItem_(_dafny.EmptySeq, Companion_StructuredDataTerminal_.Default(), Companion_CryptoAction_.Default()) +} + +func (_this CryptoItem) Dtor_key() _dafny.Sequence { + return _this.Get_().(CryptoItem_CryptoItem).Key +} + +func (_this CryptoItem) Dtor_data() StructuredDataTerminal { + return _this.Get_().(CryptoItem_CryptoItem).Data +} + +func (_this CryptoItem) Dtor_action() CryptoAction { + return _this.Get_().(CryptoItem_CryptoItem).Action +} + +func (_this CryptoItem) String() string { + switch data := _this.Get_().(type) { + case nil: + return "null" + case CryptoItem_CryptoItem: + { + return "AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.CryptoItem.CryptoItem" + "(" + _dafny.String(data.Key) + ", " + _dafny.String(data.Data) + ", " + _dafny.String(data.Action) + ")" + } + default: + { + return "" + } + } +} + +func (_this CryptoItem) Equals(other CryptoItem) bool { + switch data1 := _this.Get_().(type) { + case CryptoItem_CryptoItem: + { + data2, ok := other.Get_().(CryptoItem_CryptoItem) + return ok && data1.Key.Equals(data2.Key) && data1.Data.Equals(data2.Data) && data1.Action.Equals(data2.Action) + } + default: + { + return false // unexpected + } + } +} + +func (_this CryptoItem) EqualsGeneric(other interface{}) bool { + typed, ok := other.(CryptoItem) + return ok && _this.Equals(typed) +} + +func Type_CryptoItem_() _dafny.TypeDescriptor { + return type_CryptoItem_{} +} + +type type_CryptoItem_ struct { +} + +func (_this type_CryptoItem_) Default() interface{} { + return Companion_CryptoItem_.Default() +} + +func (_this type_CryptoItem_) String() string { + return "AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.CryptoItem" +} +func (_this CryptoItem) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = CryptoItem{} + +// End of datatype CryptoItem + +// Definition of datatype DecryptPathStructureInput +type DecryptPathStructureInput struct { + Data_DecryptPathStructureInput_ +} + +func (_this DecryptPathStructureInput) Get_() Data_DecryptPathStructureInput_ { + return _this.Data_DecryptPathStructureInput_ +} + +type Data_DecryptPathStructureInput_ interface { + isDecryptPathStructureInput() +} + +type CompanionStruct_DecryptPathStructureInput_ struct { +} + +var Companion_DecryptPathStructureInput_ = CompanionStruct_DecryptPathStructureInput_{} + +type DecryptPathStructureInput_DecryptPathStructureInput struct { + TableName _dafny.Sequence + EncryptedStructure _dafny.Sequence + Cmm m_AwsCryptographyMaterialProvidersTypes.ICryptographicMaterialsManager + EncryptionContext m_Wrappers.Option +} + +func (DecryptPathStructureInput_DecryptPathStructureInput) isDecryptPathStructureInput() {} + +func (CompanionStruct_DecryptPathStructureInput_) Create_DecryptPathStructureInput_(TableName _dafny.Sequence, EncryptedStructure _dafny.Sequence, Cmm m_AwsCryptographyMaterialProvidersTypes.ICryptographicMaterialsManager, EncryptionContext m_Wrappers.Option) DecryptPathStructureInput { + return DecryptPathStructureInput{DecryptPathStructureInput_DecryptPathStructureInput{TableName, EncryptedStructure, Cmm, EncryptionContext}} +} + +func (_this DecryptPathStructureInput) Is_DecryptPathStructureInput() bool { + _, ok := _this.Get_().(DecryptPathStructureInput_DecryptPathStructureInput) + return ok +} + +func (CompanionStruct_DecryptPathStructureInput_) Default() DecryptPathStructureInput { + return Companion_DecryptPathStructureInput_.Create_DecryptPathStructureInput_(_dafny.EmptySeq.SetString(), _dafny.EmptySeq, (m_AwsCryptographyMaterialProvidersTypes.ICryptographicMaterialsManager)(nil), m_Wrappers.Companion_Option_.Default()) +} + +func (_this DecryptPathStructureInput) Dtor_tableName() _dafny.Sequence { + return _this.Get_().(DecryptPathStructureInput_DecryptPathStructureInput).TableName +} + +func (_this DecryptPathStructureInput) Dtor_encryptedStructure() _dafny.Sequence { + return _this.Get_().(DecryptPathStructureInput_DecryptPathStructureInput).EncryptedStructure +} + +func (_this DecryptPathStructureInput) Dtor_cmm() m_AwsCryptographyMaterialProvidersTypes.ICryptographicMaterialsManager { + return _this.Get_().(DecryptPathStructureInput_DecryptPathStructureInput).Cmm +} + +func (_this DecryptPathStructureInput) Dtor_encryptionContext() m_Wrappers.Option { + return _this.Get_().(DecryptPathStructureInput_DecryptPathStructureInput).EncryptionContext +} + +func (_this DecryptPathStructureInput) String() string { + switch data := _this.Get_().(type) { + case nil: + return "null" + case DecryptPathStructureInput_DecryptPathStructureInput: + { + return "AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.DecryptPathStructureInput.DecryptPathStructureInput" + "(" + _dafny.String(data.TableName) + ", " + _dafny.String(data.EncryptedStructure) + ", " + _dafny.String(data.Cmm) + ", " + _dafny.String(data.EncryptionContext) + ")" + } + default: + { + return "" + } + } +} + +func (_this DecryptPathStructureInput) Equals(other DecryptPathStructureInput) bool { + switch data1 := _this.Get_().(type) { + case DecryptPathStructureInput_DecryptPathStructureInput: + { + data2, ok := other.Get_().(DecryptPathStructureInput_DecryptPathStructureInput) + return ok && data1.TableName.Equals(data2.TableName) && data1.EncryptedStructure.Equals(data2.EncryptedStructure) && _dafny.AreEqual(data1.Cmm, data2.Cmm) && data1.EncryptionContext.Equals(data2.EncryptionContext) + } + default: + { + return false // unexpected + } + } +} + +func (_this DecryptPathStructureInput) EqualsGeneric(other interface{}) bool { + typed, ok := other.(DecryptPathStructureInput) + return ok && _this.Equals(typed) +} + +func Type_DecryptPathStructureInput_() _dafny.TypeDescriptor { + return type_DecryptPathStructureInput_{} +} + +type type_DecryptPathStructureInput_ struct { +} + +func (_this type_DecryptPathStructureInput_) Default() interface{} { + return Companion_DecryptPathStructureInput_.Default() +} + +func (_this type_DecryptPathStructureInput_) String() string { + return "AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.DecryptPathStructureInput" +} +func (_this DecryptPathStructureInput) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = DecryptPathStructureInput{} + +// End of datatype DecryptPathStructureInput + +// Definition of datatype DecryptPathStructureOutput +type DecryptPathStructureOutput struct { + Data_DecryptPathStructureOutput_ +} + +func (_this DecryptPathStructureOutput) Get_() Data_DecryptPathStructureOutput_ { + return _this.Data_DecryptPathStructureOutput_ +} + +type Data_DecryptPathStructureOutput_ interface { + isDecryptPathStructureOutput() +} + +type CompanionStruct_DecryptPathStructureOutput_ struct { +} + +var Companion_DecryptPathStructureOutput_ = CompanionStruct_DecryptPathStructureOutput_{} + +type DecryptPathStructureOutput_DecryptPathStructureOutput struct { + PlaintextStructure _dafny.Sequence + ParsedHeader ParsedHeader +} + +func (DecryptPathStructureOutput_DecryptPathStructureOutput) isDecryptPathStructureOutput() {} + +func (CompanionStruct_DecryptPathStructureOutput_) Create_DecryptPathStructureOutput_(PlaintextStructure _dafny.Sequence, ParsedHeader ParsedHeader) DecryptPathStructureOutput { + return DecryptPathStructureOutput{DecryptPathStructureOutput_DecryptPathStructureOutput{PlaintextStructure, ParsedHeader}} +} + +func (_this DecryptPathStructureOutput) Is_DecryptPathStructureOutput() bool { + _, ok := _this.Get_().(DecryptPathStructureOutput_DecryptPathStructureOutput) + return ok +} + +func (CompanionStruct_DecryptPathStructureOutput_) Default() DecryptPathStructureOutput { + return Companion_DecryptPathStructureOutput_.Create_DecryptPathStructureOutput_(_dafny.EmptySeq, Companion_ParsedHeader_.Default()) +} + +func (_this DecryptPathStructureOutput) Dtor_plaintextStructure() _dafny.Sequence { + return _this.Get_().(DecryptPathStructureOutput_DecryptPathStructureOutput).PlaintextStructure +} + +func (_this DecryptPathStructureOutput) Dtor_parsedHeader() ParsedHeader { + return _this.Get_().(DecryptPathStructureOutput_DecryptPathStructureOutput).ParsedHeader +} + +func (_this DecryptPathStructureOutput) String() string { + switch data := _this.Get_().(type) { + case nil: + return "null" + case DecryptPathStructureOutput_DecryptPathStructureOutput: + { + return "AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.DecryptPathStructureOutput.DecryptPathStructureOutput" + "(" + _dafny.String(data.PlaintextStructure) + ", " + _dafny.String(data.ParsedHeader) + ")" + } + default: + { + return "" + } + } +} + +func (_this DecryptPathStructureOutput) Equals(other DecryptPathStructureOutput) bool { + switch data1 := _this.Get_().(type) { + case DecryptPathStructureOutput_DecryptPathStructureOutput: + { + data2, ok := other.Get_().(DecryptPathStructureOutput_DecryptPathStructureOutput) + return ok && data1.PlaintextStructure.Equals(data2.PlaintextStructure) && data1.ParsedHeader.Equals(data2.ParsedHeader) + } + default: + { + return false // unexpected + } + } +} + +func (_this DecryptPathStructureOutput) EqualsGeneric(other interface{}) bool { + typed, ok := other.(DecryptPathStructureOutput) + return ok && _this.Equals(typed) +} + +func Type_DecryptPathStructureOutput_() _dafny.TypeDescriptor { + return type_DecryptPathStructureOutput_{} +} + +type type_DecryptPathStructureOutput_ struct { +} + +func (_this type_DecryptPathStructureOutput_) Default() interface{} { + return Companion_DecryptPathStructureOutput_.Default() +} + +func (_this type_DecryptPathStructureOutput_) String() string { + return "AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.DecryptPathStructureOutput" +} +func (_this DecryptPathStructureOutput) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = DecryptPathStructureOutput{} + +// End of datatype DecryptPathStructureOutput + +// Definition of datatype DecryptStructureInput +type DecryptStructureInput struct { + Data_DecryptStructureInput_ +} + +func (_this DecryptStructureInput) Get_() Data_DecryptStructureInput_ { + return _this.Data_DecryptStructureInput_ +} + +type Data_DecryptStructureInput_ interface { + isDecryptStructureInput() +} + +type CompanionStruct_DecryptStructureInput_ struct { +} + +var Companion_DecryptStructureInput_ = CompanionStruct_DecryptStructureInput_{} + +type DecryptStructureInput_DecryptStructureInput struct { + TableName _dafny.Sequence + EncryptedStructure _dafny.Map + AuthenticateSchema _dafny.Map + Cmm m_AwsCryptographyMaterialProvidersTypes.ICryptographicMaterialsManager + EncryptionContext m_Wrappers.Option +} + +func (DecryptStructureInput_DecryptStructureInput) isDecryptStructureInput() {} + +func (CompanionStruct_DecryptStructureInput_) Create_DecryptStructureInput_(TableName _dafny.Sequence, EncryptedStructure _dafny.Map, AuthenticateSchema _dafny.Map, Cmm m_AwsCryptographyMaterialProvidersTypes.ICryptographicMaterialsManager, EncryptionContext m_Wrappers.Option) DecryptStructureInput { + return DecryptStructureInput{DecryptStructureInput_DecryptStructureInput{TableName, EncryptedStructure, AuthenticateSchema, Cmm, EncryptionContext}} +} + +func (_this DecryptStructureInput) Is_DecryptStructureInput() bool { + _, ok := _this.Get_().(DecryptStructureInput_DecryptStructureInput) + return ok +} + +func (CompanionStruct_DecryptStructureInput_) Default() DecryptStructureInput { + return Companion_DecryptStructureInput_.Create_DecryptStructureInput_(_dafny.EmptySeq.SetString(), _dafny.EmptyMap, _dafny.EmptyMap, (m_AwsCryptographyMaterialProvidersTypes.ICryptographicMaterialsManager)(nil), m_Wrappers.Companion_Option_.Default()) +} + +func (_this DecryptStructureInput) Dtor_tableName() _dafny.Sequence { + return _this.Get_().(DecryptStructureInput_DecryptStructureInput).TableName +} + +func (_this DecryptStructureInput) Dtor_encryptedStructure() _dafny.Map { + return _this.Get_().(DecryptStructureInput_DecryptStructureInput).EncryptedStructure +} + +func (_this DecryptStructureInput) Dtor_authenticateSchema() _dafny.Map { + return _this.Get_().(DecryptStructureInput_DecryptStructureInput).AuthenticateSchema +} + +func (_this DecryptStructureInput) Dtor_cmm() m_AwsCryptographyMaterialProvidersTypes.ICryptographicMaterialsManager { + return _this.Get_().(DecryptStructureInput_DecryptStructureInput).Cmm +} + +func (_this DecryptStructureInput) Dtor_encryptionContext() m_Wrappers.Option { + return _this.Get_().(DecryptStructureInput_DecryptStructureInput).EncryptionContext +} + +func (_this DecryptStructureInput) String() string { + switch data := _this.Get_().(type) { + case nil: + return "null" + case DecryptStructureInput_DecryptStructureInput: + { + return "AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.DecryptStructureInput.DecryptStructureInput" + "(" + _dafny.String(data.TableName) + ", " + _dafny.String(data.EncryptedStructure) + ", " + _dafny.String(data.AuthenticateSchema) + ", " + _dafny.String(data.Cmm) + ", " + _dafny.String(data.EncryptionContext) + ")" + } + default: + { + return "" + } + } +} + +func (_this DecryptStructureInput) Equals(other DecryptStructureInput) bool { + switch data1 := _this.Get_().(type) { + case DecryptStructureInput_DecryptStructureInput: + { + data2, ok := other.Get_().(DecryptStructureInput_DecryptStructureInput) + return ok && data1.TableName.Equals(data2.TableName) && data1.EncryptedStructure.Equals(data2.EncryptedStructure) && data1.AuthenticateSchema.Equals(data2.AuthenticateSchema) && _dafny.AreEqual(data1.Cmm, data2.Cmm) && data1.EncryptionContext.Equals(data2.EncryptionContext) + } + default: + { + return false // unexpected + } + } +} + +func (_this DecryptStructureInput) EqualsGeneric(other interface{}) bool { + typed, ok := other.(DecryptStructureInput) + return ok && _this.Equals(typed) +} + +func Type_DecryptStructureInput_() _dafny.TypeDescriptor { + return type_DecryptStructureInput_{} +} + +type type_DecryptStructureInput_ struct { +} + +func (_this type_DecryptStructureInput_) Default() interface{} { + return Companion_DecryptStructureInput_.Default() +} + +func (_this type_DecryptStructureInput_) String() string { + return "AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.DecryptStructureInput" +} +func (_this DecryptStructureInput) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = DecryptStructureInput{} + +// End of datatype DecryptStructureInput + +// Definition of datatype DecryptStructureOutput +type DecryptStructureOutput struct { + Data_DecryptStructureOutput_ +} + +func (_this DecryptStructureOutput) Get_() Data_DecryptStructureOutput_ { + return _this.Data_DecryptStructureOutput_ +} + +type Data_DecryptStructureOutput_ interface { + isDecryptStructureOutput() +} + +type CompanionStruct_DecryptStructureOutput_ struct { +} + +var Companion_DecryptStructureOutput_ = CompanionStruct_DecryptStructureOutput_{} + +type DecryptStructureOutput_DecryptStructureOutput struct { + PlaintextStructure _dafny.Map + CryptoSchema _dafny.Map + ParsedHeader ParsedHeader +} + +func (DecryptStructureOutput_DecryptStructureOutput) isDecryptStructureOutput() {} + +func (CompanionStruct_DecryptStructureOutput_) Create_DecryptStructureOutput_(PlaintextStructure _dafny.Map, CryptoSchema _dafny.Map, ParsedHeader ParsedHeader) DecryptStructureOutput { + return DecryptStructureOutput{DecryptStructureOutput_DecryptStructureOutput{PlaintextStructure, CryptoSchema, ParsedHeader}} +} + +func (_this DecryptStructureOutput) Is_DecryptStructureOutput() bool { + _, ok := _this.Get_().(DecryptStructureOutput_DecryptStructureOutput) + return ok +} + +func (CompanionStruct_DecryptStructureOutput_) Default() DecryptStructureOutput { + return Companion_DecryptStructureOutput_.Create_DecryptStructureOutput_(_dafny.EmptyMap, _dafny.EmptyMap, Companion_ParsedHeader_.Default()) +} + +func (_this DecryptStructureOutput) Dtor_plaintextStructure() _dafny.Map { + return _this.Get_().(DecryptStructureOutput_DecryptStructureOutput).PlaintextStructure +} + +func (_this DecryptStructureOutput) Dtor_cryptoSchema() _dafny.Map { + return _this.Get_().(DecryptStructureOutput_DecryptStructureOutput).CryptoSchema +} + +func (_this DecryptStructureOutput) Dtor_parsedHeader() ParsedHeader { + return _this.Get_().(DecryptStructureOutput_DecryptStructureOutput).ParsedHeader +} + +func (_this DecryptStructureOutput) String() string { + switch data := _this.Get_().(type) { + case nil: + return "null" + case DecryptStructureOutput_DecryptStructureOutput: + { + return "AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.DecryptStructureOutput.DecryptStructureOutput" + "(" + _dafny.String(data.PlaintextStructure) + ", " + _dafny.String(data.CryptoSchema) + ", " + _dafny.String(data.ParsedHeader) + ")" + } + default: + { + return "" + } + } +} + +func (_this DecryptStructureOutput) Equals(other DecryptStructureOutput) bool { + switch data1 := _this.Get_().(type) { + case DecryptStructureOutput_DecryptStructureOutput: + { + data2, ok := other.Get_().(DecryptStructureOutput_DecryptStructureOutput) + return ok && data1.PlaintextStructure.Equals(data2.PlaintextStructure) && data1.CryptoSchema.Equals(data2.CryptoSchema) && data1.ParsedHeader.Equals(data2.ParsedHeader) + } + default: + { + return false // unexpected + } + } +} + +func (_this DecryptStructureOutput) EqualsGeneric(other interface{}) bool { + typed, ok := other.(DecryptStructureOutput) + return ok && _this.Equals(typed) +} + +func Type_DecryptStructureOutput_() _dafny.TypeDescriptor { + return type_DecryptStructureOutput_{} +} + +type type_DecryptStructureOutput_ struct { +} + +func (_this type_DecryptStructureOutput_) Default() interface{} { + return Companion_DecryptStructureOutput_.Default() +} + +func (_this type_DecryptStructureOutput_) String() string { + return "AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.DecryptStructureOutput" +} +func (_this DecryptStructureOutput) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = DecryptStructureOutput{} + +// End of datatype DecryptStructureOutput + +// Definition of datatype EncryptPathStructureInput +type EncryptPathStructureInput struct { + Data_EncryptPathStructureInput_ +} + +func (_this EncryptPathStructureInput) Get_() Data_EncryptPathStructureInput_ { + return _this.Data_EncryptPathStructureInput_ +} + +type Data_EncryptPathStructureInput_ interface { + isEncryptPathStructureInput() +} + +type CompanionStruct_EncryptPathStructureInput_ struct { +} + +var Companion_EncryptPathStructureInput_ = CompanionStruct_EncryptPathStructureInput_{} + +type EncryptPathStructureInput_EncryptPathStructureInput struct { + TableName _dafny.Sequence + PlaintextStructure _dafny.Sequence + Cmm m_AwsCryptographyMaterialProvidersTypes.ICryptographicMaterialsManager + AlgorithmSuiteId m_Wrappers.Option + EncryptionContext m_Wrappers.Option +} + +func (EncryptPathStructureInput_EncryptPathStructureInput) isEncryptPathStructureInput() {} + +func (CompanionStruct_EncryptPathStructureInput_) Create_EncryptPathStructureInput_(TableName _dafny.Sequence, PlaintextStructure _dafny.Sequence, Cmm m_AwsCryptographyMaterialProvidersTypes.ICryptographicMaterialsManager, AlgorithmSuiteId m_Wrappers.Option, EncryptionContext m_Wrappers.Option) EncryptPathStructureInput { + return EncryptPathStructureInput{EncryptPathStructureInput_EncryptPathStructureInput{TableName, PlaintextStructure, Cmm, AlgorithmSuiteId, EncryptionContext}} +} + +func (_this EncryptPathStructureInput) Is_EncryptPathStructureInput() bool { + _, ok := _this.Get_().(EncryptPathStructureInput_EncryptPathStructureInput) + return ok +} + +func (CompanionStruct_EncryptPathStructureInput_) Default() EncryptPathStructureInput { + return Companion_EncryptPathStructureInput_.Create_EncryptPathStructureInput_(_dafny.EmptySeq.SetString(), _dafny.EmptySeq, (m_AwsCryptographyMaterialProvidersTypes.ICryptographicMaterialsManager)(nil), m_Wrappers.Companion_Option_.Default(), m_Wrappers.Companion_Option_.Default()) +} + +func (_this EncryptPathStructureInput) Dtor_tableName() _dafny.Sequence { + return _this.Get_().(EncryptPathStructureInput_EncryptPathStructureInput).TableName +} + +func (_this EncryptPathStructureInput) Dtor_plaintextStructure() _dafny.Sequence { + return _this.Get_().(EncryptPathStructureInput_EncryptPathStructureInput).PlaintextStructure +} + +func (_this EncryptPathStructureInput) Dtor_cmm() m_AwsCryptographyMaterialProvidersTypes.ICryptographicMaterialsManager { + return _this.Get_().(EncryptPathStructureInput_EncryptPathStructureInput).Cmm +} + +func (_this EncryptPathStructureInput) Dtor_algorithmSuiteId() m_Wrappers.Option { + return _this.Get_().(EncryptPathStructureInput_EncryptPathStructureInput).AlgorithmSuiteId +} + +func (_this EncryptPathStructureInput) Dtor_encryptionContext() m_Wrappers.Option { + return _this.Get_().(EncryptPathStructureInput_EncryptPathStructureInput).EncryptionContext +} + +func (_this EncryptPathStructureInput) String() string { + switch data := _this.Get_().(type) { + case nil: + return "null" + case EncryptPathStructureInput_EncryptPathStructureInput: + { + return "AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.EncryptPathStructureInput.EncryptPathStructureInput" + "(" + _dafny.String(data.TableName) + ", " + _dafny.String(data.PlaintextStructure) + ", " + _dafny.String(data.Cmm) + ", " + _dafny.String(data.AlgorithmSuiteId) + ", " + _dafny.String(data.EncryptionContext) + ")" + } + default: + { + return "" + } + } +} + +func (_this EncryptPathStructureInput) Equals(other EncryptPathStructureInput) bool { + switch data1 := _this.Get_().(type) { + case EncryptPathStructureInput_EncryptPathStructureInput: + { + data2, ok := other.Get_().(EncryptPathStructureInput_EncryptPathStructureInput) + return ok && data1.TableName.Equals(data2.TableName) && data1.PlaintextStructure.Equals(data2.PlaintextStructure) && _dafny.AreEqual(data1.Cmm, data2.Cmm) && data1.AlgorithmSuiteId.Equals(data2.AlgorithmSuiteId) && data1.EncryptionContext.Equals(data2.EncryptionContext) + } + default: + { + return false // unexpected + } + } +} + +func (_this EncryptPathStructureInput) EqualsGeneric(other interface{}) bool { + typed, ok := other.(EncryptPathStructureInput) + return ok && _this.Equals(typed) +} + +func Type_EncryptPathStructureInput_() _dafny.TypeDescriptor { + return type_EncryptPathStructureInput_{} +} + +type type_EncryptPathStructureInput_ struct { +} + +func (_this type_EncryptPathStructureInput_) Default() interface{} { + return Companion_EncryptPathStructureInput_.Default() +} + +func (_this type_EncryptPathStructureInput_) String() string { + return "AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.EncryptPathStructureInput" +} +func (_this EncryptPathStructureInput) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = EncryptPathStructureInput{} + +// End of datatype EncryptPathStructureInput + +// Definition of datatype EncryptPathStructureOutput +type EncryptPathStructureOutput struct { + Data_EncryptPathStructureOutput_ +} + +func (_this EncryptPathStructureOutput) Get_() Data_EncryptPathStructureOutput_ { + return _this.Data_EncryptPathStructureOutput_ +} + +type Data_EncryptPathStructureOutput_ interface { + isEncryptPathStructureOutput() +} + +type CompanionStruct_EncryptPathStructureOutput_ struct { +} + +var Companion_EncryptPathStructureOutput_ = CompanionStruct_EncryptPathStructureOutput_{} + +type EncryptPathStructureOutput_EncryptPathStructureOutput struct { + EncryptedStructure _dafny.Sequence + ParsedHeader ParsedHeader +} + +func (EncryptPathStructureOutput_EncryptPathStructureOutput) isEncryptPathStructureOutput() {} + +func (CompanionStruct_EncryptPathStructureOutput_) Create_EncryptPathStructureOutput_(EncryptedStructure _dafny.Sequence, ParsedHeader ParsedHeader) EncryptPathStructureOutput { + return EncryptPathStructureOutput{EncryptPathStructureOutput_EncryptPathStructureOutput{EncryptedStructure, ParsedHeader}} +} + +func (_this EncryptPathStructureOutput) Is_EncryptPathStructureOutput() bool { + _, ok := _this.Get_().(EncryptPathStructureOutput_EncryptPathStructureOutput) + return ok +} + +func (CompanionStruct_EncryptPathStructureOutput_) Default() EncryptPathStructureOutput { + return Companion_EncryptPathStructureOutput_.Create_EncryptPathStructureOutput_(_dafny.EmptySeq, Companion_ParsedHeader_.Default()) +} + +func (_this EncryptPathStructureOutput) Dtor_encryptedStructure() _dafny.Sequence { + return _this.Get_().(EncryptPathStructureOutput_EncryptPathStructureOutput).EncryptedStructure +} + +func (_this EncryptPathStructureOutput) Dtor_parsedHeader() ParsedHeader { + return _this.Get_().(EncryptPathStructureOutput_EncryptPathStructureOutput).ParsedHeader +} + +func (_this EncryptPathStructureOutput) String() string { + switch data := _this.Get_().(type) { + case nil: + return "null" + case EncryptPathStructureOutput_EncryptPathStructureOutput: + { + return "AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.EncryptPathStructureOutput.EncryptPathStructureOutput" + "(" + _dafny.String(data.EncryptedStructure) + ", " + _dafny.String(data.ParsedHeader) + ")" + } + default: + { + return "" + } + } +} + +func (_this EncryptPathStructureOutput) Equals(other EncryptPathStructureOutput) bool { + switch data1 := _this.Get_().(type) { + case EncryptPathStructureOutput_EncryptPathStructureOutput: + { + data2, ok := other.Get_().(EncryptPathStructureOutput_EncryptPathStructureOutput) + return ok && data1.EncryptedStructure.Equals(data2.EncryptedStructure) && data1.ParsedHeader.Equals(data2.ParsedHeader) + } + default: + { + return false // unexpected + } + } +} + +func (_this EncryptPathStructureOutput) EqualsGeneric(other interface{}) bool { + typed, ok := other.(EncryptPathStructureOutput) + return ok && _this.Equals(typed) +} + +func Type_EncryptPathStructureOutput_() _dafny.TypeDescriptor { + return type_EncryptPathStructureOutput_{} +} + +type type_EncryptPathStructureOutput_ struct { +} + +func (_this type_EncryptPathStructureOutput_) Default() interface{} { + return Companion_EncryptPathStructureOutput_.Default() +} + +func (_this type_EncryptPathStructureOutput_) String() string { + return "AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.EncryptPathStructureOutput" +} +func (_this EncryptPathStructureOutput) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = EncryptPathStructureOutput{} + +// End of datatype EncryptPathStructureOutput + +// Definition of datatype EncryptStructureInput +type EncryptStructureInput struct { + Data_EncryptStructureInput_ +} + +func (_this EncryptStructureInput) Get_() Data_EncryptStructureInput_ { + return _this.Data_EncryptStructureInput_ +} + +type Data_EncryptStructureInput_ interface { + isEncryptStructureInput() +} + +type CompanionStruct_EncryptStructureInput_ struct { +} + +var Companion_EncryptStructureInput_ = CompanionStruct_EncryptStructureInput_{} + +type EncryptStructureInput_EncryptStructureInput struct { + TableName _dafny.Sequence + PlaintextStructure _dafny.Map + CryptoSchema _dafny.Map + Cmm m_AwsCryptographyMaterialProvidersTypes.ICryptographicMaterialsManager + AlgorithmSuiteId m_Wrappers.Option + EncryptionContext m_Wrappers.Option +} + +func (EncryptStructureInput_EncryptStructureInput) isEncryptStructureInput() {} + +func (CompanionStruct_EncryptStructureInput_) Create_EncryptStructureInput_(TableName _dafny.Sequence, PlaintextStructure _dafny.Map, CryptoSchema _dafny.Map, Cmm m_AwsCryptographyMaterialProvidersTypes.ICryptographicMaterialsManager, AlgorithmSuiteId m_Wrappers.Option, EncryptionContext m_Wrappers.Option) EncryptStructureInput { + return EncryptStructureInput{EncryptStructureInput_EncryptStructureInput{TableName, PlaintextStructure, CryptoSchema, Cmm, AlgorithmSuiteId, EncryptionContext}} +} + +func (_this EncryptStructureInput) Is_EncryptStructureInput() bool { + _, ok := _this.Get_().(EncryptStructureInput_EncryptStructureInput) + return ok +} + +func (CompanionStruct_EncryptStructureInput_) Default() EncryptStructureInput { + return Companion_EncryptStructureInput_.Create_EncryptStructureInput_(_dafny.EmptySeq.SetString(), _dafny.EmptyMap, _dafny.EmptyMap, (m_AwsCryptographyMaterialProvidersTypes.ICryptographicMaterialsManager)(nil), m_Wrappers.Companion_Option_.Default(), m_Wrappers.Companion_Option_.Default()) +} + +func (_this EncryptStructureInput) Dtor_tableName() _dafny.Sequence { + return _this.Get_().(EncryptStructureInput_EncryptStructureInput).TableName +} + +func (_this EncryptStructureInput) Dtor_plaintextStructure() _dafny.Map { + return _this.Get_().(EncryptStructureInput_EncryptStructureInput).PlaintextStructure +} + +func (_this EncryptStructureInput) Dtor_cryptoSchema() _dafny.Map { + return _this.Get_().(EncryptStructureInput_EncryptStructureInput).CryptoSchema +} + +func (_this EncryptStructureInput) Dtor_cmm() m_AwsCryptographyMaterialProvidersTypes.ICryptographicMaterialsManager { + return _this.Get_().(EncryptStructureInput_EncryptStructureInput).Cmm +} + +func (_this EncryptStructureInput) Dtor_algorithmSuiteId() m_Wrappers.Option { + return _this.Get_().(EncryptStructureInput_EncryptStructureInput).AlgorithmSuiteId +} + +func (_this EncryptStructureInput) Dtor_encryptionContext() m_Wrappers.Option { + return _this.Get_().(EncryptStructureInput_EncryptStructureInput).EncryptionContext +} + +func (_this EncryptStructureInput) String() string { + switch data := _this.Get_().(type) { + case nil: + return "null" + case EncryptStructureInput_EncryptStructureInput: + { + return "AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.EncryptStructureInput.EncryptStructureInput" + "(" + _dafny.String(data.TableName) + ", " + _dafny.String(data.PlaintextStructure) + ", " + _dafny.String(data.CryptoSchema) + ", " + _dafny.String(data.Cmm) + ", " + _dafny.String(data.AlgorithmSuiteId) + ", " + _dafny.String(data.EncryptionContext) + ")" + } + default: + { + return "" + } + } +} + +func (_this EncryptStructureInput) Equals(other EncryptStructureInput) bool { + switch data1 := _this.Get_().(type) { + case EncryptStructureInput_EncryptStructureInput: + { + data2, ok := other.Get_().(EncryptStructureInput_EncryptStructureInput) + return ok && data1.TableName.Equals(data2.TableName) && data1.PlaintextStructure.Equals(data2.PlaintextStructure) && data1.CryptoSchema.Equals(data2.CryptoSchema) && _dafny.AreEqual(data1.Cmm, data2.Cmm) && data1.AlgorithmSuiteId.Equals(data2.AlgorithmSuiteId) && data1.EncryptionContext.Equals(data2.EncryptionContext) + } + default: + { + return false // unexpected + } + } +} + +func (_this EncryptStructureInput) EqualsGeneric(other interface{}) bool { + typed, ok := other.(EncryptStructureInput) + return ok && _this.Equals(typed) +} + +func Type_EncryptStructureInput_() _dafny.TypeDescriptor { + return type_EncryptStructureInput_{} +} + +type type_EncryptStructureInput_ struct { +} + +func (_this type_EncryptStructureInput_) Default() interface{} { + return Companion_EncryptStructureInput_.Default() +} + +func (_this type_EncryptStructureInput_) String() string { + return "AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.EncryptStructureInput" +} +func (_this EncryptStructureInput) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = EncryptStructureInput{} + +// End of datatype EncryptStructureInput + +// Definition of datatype EncryptStructureOutput +type EncryptStructureOutput struct { + Data_EncryptStructureOutput_ +} + +func (_this EncryptStructureOutput) Get_() Data_EncryptStructureOutput_ { + return _this.Data_EncryptStructureOutput_ +} + +type Data_EncryptStructureOutput_ interface { + isEncryptStructureOutput() +} + +type CompanionStruct_EncryptStructureOutput_ struct { +} + +var Companion_EncryptStructureOutput_ = CompanionStruct_EncryptStructureOutput_{} + +type EncryptStructureOutput_EncryptStructureOutput struct { + EncryptedStructure _dafny.Map + CryptoSchema _dafny.Map + ParsedHeader ParsedHeader +} + +func (EncryptStructureOutput_EncryptStructureOutput) isEncryptStructureOutput() {} + +func (CompanionStruct_EncryptStructureOutput_) Create_EncryptStructureOutput_(EncryptedStructure _dafny.Map, CryptoSchema _dafny.Map, ParsedHeader ParsedHeader) EncryptStructureOutput { + return EncryptStructureOutput{EncryptStructureOutput_EncryptStructureOutput{EncryptedStructure, CryptoSchema, ParsedHeader}} +} + +func (_this EncryptStructureOutput) Is_EncryptStructureOutput() bool { + _, ok := _this.Get_().(EncryptStructureOutput_EncryptStructureOutput) + return ok +} + +func (CompanionStruct_EncryptStructureOutput_) Default() EncryptStructureOutput { + return Companion_EncryptStructureOutput_.Create_EncryptStructureOutput_(_dafny.EmptyMap, _dafny.EmptyMap, Companion_ParsedHeader_.Default()) +} + +func (_this EncryptStructureOutput) Dtor_encryptedStructure() _dafny.Map { + return _this.Get_().(EncryptStructureOutput_EncryptStructureOutput).EncryptedStructure +} + +func (_this EncryptStructureOutput) Dtor_cryptoSchema() _dafny.Map { + return _this.Get_().(EncryptStructureOutput_EncryptStructureOutput).CryptoSchema +} + +func (_this EncryptStructureOutput) Dtor_parsedHeader() ParsedHeader { + return _this.Get_().(EncryptStructureOutput_EncryptStructureOutput).ParsedHeader +} + +func (_this EncryptStructureOutput) String() string { + switch data := _this.Get_().(type) { + case nil: + return "null" + case EncryptStructureOutput_EncryptStructureOutput: + { + return "AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.EncryptStructureOutput.EncryptStructureOutput" + "(" + _dafny.String(data.EncryptedStructure) + ", " + _dafny.String(data.CryptoSchema) + ", " + _dafny.String(data.ParsedHeader) + ")" + } + default: + { + return "" + } + } +} + +func (_this EncryptStructureOutput) Equals(other EncryptStructureOutput) bool { + switch data1 := _this.Get_().(type) { + case EncryptStructureOutput_EncryptStructureOutput: + { + data2, ok := other.Get_().(EncryptStructureOutput_EncryptStructureOutput) + return ok && data1.EncryptedStructure.Equals(data2.EncryptedStructure) && data1.CryptoSchema.Equals(data2.CryptoSchema) && data1.ParsedHeader.Equals(data2.ParsedHeader) + } + default: + { + return false // unexpected + } + } +} + +func (_this EncryptStructureOutput) EqualsGeneric(other interface{}) bool { + typed, ok := other.(EncryptStructureOutput) + return ok && _this.Equals(typed) +} + +func Type_EncryptStructureOutput_() _dafny.TypeDescriptor { + return type_EncryptStructureOutput_{} +} + +type type_EncryptStructureOutput_ struct { +} + +func (_this type_EncryptStructureOutput_) Default() interface{} { + return Companion_EncryptStructureOutput_.Default() +} + +func (_this type_EncryptStructureOutput_) String() string { + return "AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.EncryptStructureOutput" +} +func (_this EncryptStructureOutput) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = EncryptStructureOutput{} + +// End of datatype EncryptStructureOutput + +// Definition of datatype ParsedHeader +type ParsedHeader struct { + Data_ParsedHeader_ +} + +func (_this ParsedHeader) Get_() Data_ParsedHeader_ { + return _this.Data_ParsedHeader_ +} + +type Data_ParsedHeader_ interface { + isParsedHeader() +} + +type CompanionStruct_ParsedHeader_ struct { +} + +var Companion_ParsedHeader_ = CompanionStruct_ParsedHeader_{} + +type ParsedHeader_ParsedHeader struct { + AlgorithmSuiteId m_AwsCryptographyMaterialProvidersTypes.DBEAlgorithmSuiteId + EncryptedDataKeys _dafny.Sequence + StoredEncryptionContext _dafny.Map + EncryptionContext _dafny.Map +} + +func (ParsedHeader_ParsedHeader) isParsedHeader() {} + +func (CompanionStruct_ParsedHeader_) Create_ParsedHeader_(AlgorithmSuiteId m_AwsCryptographyMaterialProvidersTypes.DBEAlgorithmSuiteId, EncryptedDataKeys _dafny.Sequence, StoredEncryptionContext _dafny.Map, EncryptionContext _dafny.Map) ParsedHeader { + return ParsedHeader{ParsedHeader_ParsedHeader{AlgorithmSuiteId, EncryptedDataKeys, StoredEncryptionContext, EncryptionContext}} +} + +func (_this ParsedHeader) Is_ParsedHeader() bool { + _, ok := _this.Get_().(ParsedHeader_ParsedHeader) + return ok +} + +func (CompanionStruct_ParsedHeader_) Default() ParsedHeader { + return Companion_ParsedHeader_.Create_ParsedHeader_(m_AwsCryptographyMaterialProvidersTypes.Companion_DBEAlgorithmSuiteId_.Default(), _dafny.EmptySeq, _dafny.EmptyMap, _dafny.EmptyMap) +} + +func (_this ParsedHeader) Dtor_algorithmSuiteId() m_AwsCryptographyMaterialProvidersTypes.DBEAlgorithmSuiteId { + return _this.Get_().(ParsedHeader_ParsedHeader).AlgorithmSuiteId +} + +func (_this ParsedHeader) Dtor_encryptedDataKeys() _dafny.Sequence { + return _this.Get_().(ParsedHeader_ParsedHeader).EncryptedDataKeys +} + +func (_this ParsedHeader) Dtor_storedEncryptionContext() _dafny.Map { + return _this.Get_().(ParsedHeader_ParsedHeader).StoredEncryptionContext +} + +func (_this ParsedHeader) Dtor_encryptionContext() _dafny.Map { + return _this.Get_().(ParsedHeader_ParsedHeader).EncryptionContext +} + +func (_this ParsedHeader) String() string { + switch data := _this.Get_().(type) { + case nil: + return "null" + case ParsedHeader_ParsedHeader: + { + return "AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.ParsedHeader.ParsedHeader" + "(" + _dafny.String(data.AlgorithmSuiteId) + ", " + _dafny.String(data.EncryptedDataKeys) + ", " + _dafny.String(data.StoredEncryptionContext) + ", " + _dafny.String(data.EncryptionContext) + ")" + } + default: + { + return "" + } + } +} + +func (_this ParsedHeader) Equals(other ParsedHeader) bool { + switch data1 := _this.Get_().(type) { + case ParsedHeader_ParsedHeader: + { + data2, ok := other.Get_().(ParsedHeader_ParsedHeader) + return ok && data1.AlgorithmSuiteId.Equals(data2.AlgorithmSuiteId) && data1.EncryptedDataKeys.Equals(data2.EncryptedDataKeys) && data1.StoredEncryptionContext.Equals(data2.StoredEncryptionContext) && data1.EncryptionContext.Equals(data2.EncryptionContext) + } + default: + { + return false // unexpected + } + } +} + +func (_this ParsedHeader) EqualsGeneric(other interface{}) bool { + typed, ok := other.(ParsedHeader) + return ok && _this.Equals(typed) +} + +func Type_ParsedHeader_() _dafny.TypeDescriptor { + return type_ParsedHeader_{} +} + +type type_ParsedHeader_ struct { +} + +func (_this type_ParsedHeader_) Default() interface{} { + return Companion_ParsedHeader_.Default() +} + +func (_this type_ParsedHeader_) String() string { + return "AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.ParsedHeader" +} +func (_this ParsedHeader) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = ParsedHeader{} + +// End of datatype ParsedHeader + +// Definition of datatype PathSegment +type PathSegment struct { + Data_PathSegment_ +} + +func (_this PathSegment) Get_() Data_PathSegment_ { + return _this.Data_PathSegment_ +} + +type Data_PathSegment_ interface { + isPathSegment() +} + +type CompanionStruct_PathSegment_ struct { +} + +var Companion_PathSegment_ = CompanionStruct_PathSegment_{} + +type PathSegment_member struct { + Member StructureSegment +} + +func (PathSegment_member) isPathSegment() {} + +func (CompanionStruct_PathSegment_) Create_member_(Member StructureSegment) PathSegment { + return PathSegment{PathSegment_member{Member}} +} + +func (_this PathSegment) Is_member() bool { + _, ok := _this.Get_().(PathSegment_member) + return ok +} + +func (CompanionStruct_PathSegment_) Default() PathSegment { + return Companion_PathSegment_.Create_member_(Companion_StructureSegment_.Default()) +} + +func (_this PathSegment) Dtor_member() StructureSegment { + return _this.Get_().(PathSegment_member).Member +} + +func (_this PathSegment) String() string { + switch data := _this.Get_().(type) { + case nil: + return "null" + case PathSegment_member: + { + return "AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.PathSegment.member" + "(" + _dafny.String(data.Member) + ")" + } + default: + { + return "" + } + } +} + +func (_this PathSegment) Equals(other PathSegment) bool { + switch data1 := _this.Get_().(type) { + case PathSegment_member: + { + data2, ok := other.Get_().(PathSegment_member) + return ok && data1.Member.Equals(data2.Member) + } + default: + { + return false // unexpected + } + } +} + +func (_this PathSegment) EqualsGeneric(other interface{}) bool { + typed, ok := other.(PathSegment) + return ok && _this.Equals(typed) +} + +func Type_PathSegment_() _dafny.TypeDescriptor { + return type_PathSegment_{} +} + +type type_PathSegment_ struct { +} + +func (_this type_PathSegment_) Default() interface{} { + return Companion_PathSegment_.Default() +} + +func (_this type_PathSegment_) String() string { + return "AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.PathSegment" +} +func (_this PathSegment) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = PathSegment{} + +// End of datatype PathSegment + +// Definition of datatype ResolveAuthActionsInput +type ResolveAuthActionsInput struct { + Data_ResolveAuthActionsInput_ +} + +func (_this ResolveAuthActionsInput) Get_() Data_ResolveAuthActionsInput_ { + return _this.Data_ResolveAuthActionsInput_ +} + +type Data_ResolveAuthActionsInput_ interface { + isResolveAuthActionsInput() +} + +type CompanionStruct_ResolveAuthActionsInput_ struct { +} + +var Companion_ResolveAuthActionsInput_ = CompanionStruct_ResolveAuthActionsInput_{} + +type ResolveAuthActionsInput_ResolveAuthActionsInput struct { + TableName _dafny.Sequence + AuthActions _dafny.Sequence + HeaderBytes _dafny.Sequence +} + +func (ResolveAuthActionsInput_ResolveAuthActionsInput) isResolveAuthActionsInput() {} + +func (CompanionStruct_ResolveAuthActionsInput_) Create_ResolveAuthActionsInput_(TableName _dafny.Sequence, AuthActions _dafny.Sequence, HeaderBytes _dafny.Sequence) ResolveAuthActionsInput { + return ResolveAuthActionsInput{ResolveAuthActionsInput_ResolveAuthActionsInput{TableName, AuthActions, HeaderBytes}} +} + +func (_this ResolveAuthActionsInput) Is_ResolveAuthActionsInput() bool { + _, ok := _this.Get_().(ResolveAuthActionsInput_ResolveAuthActionsInput) + return ok +} + +func (CompanionStruct_ResolveAuthActionsInput_) Default() ResolveAuthActionsInput { + return Companion_ResolveAuthActionsInput_.Create_ResolveAuthActionsInput_(_dafny.EmptySeq.SetString(), _dafny.EmptySeq, _dafny.EmptySeq) +} + +func (_this ResolveAuthActionsInput) Dtor_tableName() _dafny.Sequence { + return _this.Get_().(ResolveAuthActionsInput_ResolveAuthActionsInput).TableName +} + +func (_this ResolveAuthActionsInput) Dtor_authActions() _dafny.Sequence { + return _this.Get_().(ResolveAuthActionsInput_ResolveAuthActionsInput).AuthActions +} + +func (_this ResolveAuthActionsInput) Dtor_headerBytes() _dafny.Sequence { + return _this.Get_().(ResolveAuthActionsInput_ResolveAuthActionsInput).HeaderBytes +} + +func (_this ResolveAuthActionsInput) String() string { + switch data := _this.Get_().(type) { + case nil: + return "null" + case ResolveAuthActionsInput_ResolveAuthActionsInput: + { + return "AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.ResolveAuthActionsInput.ResolveAuthActionsInput" + "(" + _dafny.String(data.TableName) + ", " + _dafny.String(data.AuthActions) + ", " + _dafny.String(data.HeaderBytes) + ")" + } + default: + { + return "" + } + } +} + +func (_this ResolveAuthActionsInput) Equals(other ResolveAuthActionsInput) bool { + switch data1 := _this.Get_().(type) { + case ResolveAuthActionsInput_ResolveAuthActionsInput: + { + data2, ok := other.Get_().(ResolveAuthActionsInput_ResolveAuthActionsInput) + return ok && data1.TableName.Equals(data2.TableName) && data1.AuthActions.Equals(data2.AuthActions) && data1.HeaderBytes.Equals(data2.HeaderBytes) + } + default: + { + return false // unexpected + } + } +} + +func (_this ResolveAuthActionsInput) EqualsGeneric(other interface{}) bool { + typed, ok := other.(ResolveAuthActionsInput) + return ok && _this.Equals(typed) +} + +func Type_ResolveAuthActionsInput_() _dafny.TypeDescriptor { + return type_ResolveAuthActionsInput_{} +} + +type type_ResolveAuthActionsInput_ struct { +} + +func (_this type_ResolveAuthActionsInput_) Default() interface{} { + return Companion_ResolveAuthActionsInput_.Default() +} + +func (_this type_ResolveAuthActionsInput_) String() string { + return "AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.ResolveAuthActionsInput" +} +func (_this ResolveAuthActionsInput) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = ResolveAuthActionsInput{} + +// End of datatype ResolveAuthActionsInput + +// Definition of datatype ResolveAuthActionsOutput +type ResolveAuthActionsOutput struct { + Data_ResolveAuthActionsOutput_ +} + +func (_this ResolveAuthActionsOutput) Get_() Data_ResolveAuthActionsOutput_ { + return _this.Data_ResolveAuthActionsOutput_ +} + +type Data_ResolveAuthActionsOutput_ interface { + isResolveAuthActionsOutput() +} + +type CompanionStruct_ResolveAuthActionsOutput_ struct { +} + +var Companion_ResolveAuthActionsOutput_ = CompanionStruct_ResolveAuthActionsOutput_{} + +type ResolveAuthActionsOutput_ResolveAuthActionsOutput struct { + CryptoActions _dafny.Sequence +} + +func (ResolveAuthActionsOutput_ResolveAuthActionsOutput) isResolveAuthActionsOutput() {} + +func (CompanionStruct_ResolveAuthActionsOutput_) Create_ResolveAuthActionsOutput_(CryptoActions _dafny.Sequence) ResolveAuthActionsOutput { + return ResolveAuthActionsOutput{ResolveAuthActionsOutput_ResolveAuthActionsOutput{CryptoActions}} +} + +func (_this ResolveAuthActionsOutput) Is_ResolveAuthActionsOutput() bool { + _, ok := _this.Get_().(ResolveAuthActionsOutput_ResolveAuthActionsOutput) + return ok +} + +func (CompanionStruct_ResolveAuthActionsOutput_) Default() ResolveAuthActionsOutput { + return Companion_ResolveAuthActionsOutput_.Create_ResolveAuthActionsOutput_(_dafny.EmptySeq) +} + +func (_this ResolveAuthActionsOutput) Dtor_cryptoActions() _dafny.Sequence { + return _this.Get_().(ResolveAuthActionsOutput_ResolveAuthActionsOutput).CryptoActions +} + +func (_this ResolveAuthActionsOutput) String() string { + switch data := _this.Get_().(type) { + case nil: + return "null" + case ResolveAuthActionsOutput_ResolveAuthActionsOutput: + { + return "AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.ResolveAuthActionsOutput.ResolveAuthActionsOutput" + "(" + _dafny.String(data.CryptoActions) + ")" + } + default: + { + return "" + } + } +} + +func (_this ResolveAuthActionsOutput) Equals(other ResolveAuthActionsOutput) bool { + switch data1 := _this.Get_().(type) { + case ResolveAuthActionsOutput_ResolveAuthActionsOutput: + { + data2, ok := other.Get_().(ResolveAuthActionsOutput_ResolveAuthActionsOutput) + return ok && data1.CryptoActions.Equals(data2.CryptoActions) + } + default: + { + return false // unexpected + } + } +} + +func (_this ResolveAuthActionsOutput) EqualsGeneric(other interface{}) bool { + typed, ok := other.(ResolveAuthActionsOutput) + return ok && _this.Equals(typed) +} + +func Type_ResolveAuthActionsOutput_() _dafny.TypeDescriptor { + return type_ResolveAuthActionsOutput_{} +} + +type type_ResolveAuthActionsOutput_ struct { +} + +func (_this type_ResolveAuthActionsOutput_) Default() interface{} { + return Companion_ResolveAuthActionsOutput_.Default() +} + +func (_this type_ResolveAuthActionsOutput_) String() string { + return "AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.ResolveAuthActionsOutput" +} +func (_this ResolveAuthActionsOutput) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = ResolveAuthActionsOutput{} + +// End of datatype ResolveAuthActionsOutput + +// Definition of datatype StructuredDataTerminal +type StructuredDataTerminal struct { + Data_StructuredDataTerminal_ +} + +func (_this StructuredDataTerminal) Get_() Data_StructuredDataTerminal_ { + return _this.Data_StructuredDataTerminal_ +} + +type Data_StructuredDataTerminal_ interface { + isStructuredDataTerminal() +} + +type CompanionStruct_StructuredDataTerminal_ struct { +} + +var Companion_StructuredDataTerminal_ = CompanionStruct_StructuredDataTerminal_{} + +type StructuredDataTerminal_StructuredDataTerminal struct { + Value _dafny.Sequence + TypeId _dafny.Sequence +} + +func (StructuredDataTerminal_StructuredDataTerminal) isStructuredDataTerminal() {} + +func (CompanionStruct_StructuredDataTerminal_) Create_StructuredDataTerminal_(Value _dafny.Sequence, TypeId _dafny.Sequence) StructuredDataTerminal { + return StructuredDataTerminal{StructuredDataTerminal_StructuredDataTerminal{Value, TypeId}} +} + +func (_this StructuredDataTerminal) Is_StructuredDataTerminal() bool { + _, ok := _this.Get_().(StructuredDataTerminal_StructuredDataTerminal) + return ok +} + +func (CompanionStruct_StructuredDataTerminal_) Default() StructuredDataTerminal { + return Companion_StructuredDataTerminal_.Create_StructuredDataTerminal_(_dafny.EmptySeq, _dafny.EmptySeq) +} + +func (_this StructuredDataTerminal) Dtor_value() _dafny.Sequence { + return _this.Get_().(StructuredDataTerminal_StructuredDataTerminal).Value +} + +func (_this StructuredDataTerminal) Dtor_typeId() _dafny.Sequence { + return _this.Get_().(StructuredDataTerminal_StructuredDataTerminal).TypeId +} + +func (_this StructuredDataTerminal) String() string { + switch data := _this.Get_().(type) { + case nil: + return "null" + case StructuredDataTerminal_StructuredDataTerminal: + { + return "AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.StructuredDataTerminal.StructuredDataTerminal" + "(" + _dafny.String(data.Value) + ", " + _dafny.String(data.TypeId) + ")" + } + default: + { + return "" + } + } +} + +func (_this StructuredDataTerminal) Equals(other StructuredDataTerminal) bool { + switch data1 := _this.Get_().(type) { + case StructuredDataTerminal_StructuredDataTerminal: + { + data2, ok := other.Get_().(StructuredDataTerminal_StructuredDataTerminal) + return ok && data1.Value.Equals(data2.Value) && data1.TypeId.Equals(data2.TypeId) + } + default: + { + return false // unexpected + } + } +} + +func (_this StructuredDataTerminal) EqualsGeneric(other interface{}) bool { + typed, ok := other.(StructuredDataTerminal) + return ok && _this.Equals(typed) +} + +func Type_StructuredDataTerminal_() _dafny.TypeDescriptor { + return type_StructuredDataTerminal_{} +} + +type type_StructuredDataTerminal_ struct { +} + +func (_this type_StructuredDataTerminal_) Default() interface{} { + return Companion_StructuredDataTerminal_.Default() +} + +func (_this type_StructuredDataTerminal_) String() string { + return "AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.StructuredDataTerminal" +} +func (_this StructuredDataTerminal) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = StructuredDataTerminal{} + +// End of datatype StructuredDataTerminal + +// Definition of class IStructuredEncryptionClientCallHistory +type IStructuredEncryptionClientCallHistory struct { + dummy byte +} + +func New_IStructuredEncryptionClientCallHistory_() *IStructuredEncryptionClientCallHistory { + _this := IStructuredEncryptionClientCallHistory{} + + return &_this +} + +type CompanionStruct_IStructuredEncryptionClientCallHistory_ struct { +} + +var Companion_IStructuredEncryptionClientCallHistory_ = CompanionStruct_IStructuredEncryptionClientCallHistory_{} + +func (_this *IStructuredEncryptionClientCallHistory) Equals(other *IStructuredEncryptionClientCallHistory) bool { + return _this == other +} + +func (_this *IStructuredEncryptionClientCallHistory) EqualsGeneric(x interface{}) bool { + other, ok := x.(*IStructuredEncryptionClientCallHistory) + return ok && _this.Equals(other) +} + +func (*IStructuredEncryptionClientCallHistory) String() string { + return "AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.IStructuredEncryptionClientCallHistory" +} + +func Type_IStructuredEncryptionClientCallHistory_() _dafny.TypeDescriptor { + return type_IStructuredEncryptionClientCallHistory_{} +} + +type type_IStructuredEncryptionClientCallHistory_ struct { +} + +func (_this type_IStructuredEncryptionClientCallHistory_) Default() interface{} { + return (*IStructuredEncryptionClientCallHistory)(nil) +} + +func (_this type_IStructuredEncryptionClientCallHistory_) String() string { + return "AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.IStructuredEncryptionClientCallHistory" +} +func (_this *IStructuredEncryptionClientCallHistory) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = &IStructuredEncryptionClientCallHistory{} + +// End of class IStructuredEncryptionClientCallHistory + +// Definition of trait IStructuredEncryptionClient +type IStructuredEncryptionClient interface { + String() string + EncryptStructure(input EncryptStructureInput) m_Wrappers.Result + DecryptStructure(input DecryptStructureInput) m_Wrappers.Result + EncryptPathStructure(input EncryptPathStructureInput) m_Wrappers.Result + DecryptPathStructure(input DecryptPathStructureInput) m_Wrappers.Result + ResolveAuthActions(input ResolveAuthActionsInput) m_Wrappers.Result +} +type CompanionStruct_IStructuredEncryptionClient_ struct { + TraitID_ *_dafny.TraitID +} + +var Companion_IStructuredEncryptionClient_ = CompanionStruct_IStructuredEncryptionClient_{ + TraitID_: &_dafny.TraitID{}, +} + +func (CompanionStruct_IStructuredEncryptionClient_) CastTo_(x interface{}) IStructuredEncryptionClient { + var t IStructuredEncryptionClient + t, _ = x.(IStructuredEncryptionClient) + return t +} + +// End of trait IStructuredEncryptionClient + +// Definition of datatype StructuredEncryptionConfig +type StructuredEncryptionConfig struct { + Data_StructuredEncryptionConfig_ +} + +func (_this StructuredEncryptionConfig) Get_() Data_StructuredEncryptionConfig_ { + return _this.Data_StructuredEncryptionConfig_ +} + +type Data_StructuredEncryptionConfig_ interface { + isStructuredEncryptionConfig() +} + +type CompanionStruct_StructuredEncryptionConfig_ struct { +} + +var Companion_StructuredEncryptionConfig_ = CompanionStruct_StructuredEncryptionConfig_{} + +type StructuredEncryptionConfig_StructuredEncryptionConfig struct { +} + +func (StructuredEncryptionConfig_StructuredEncryptionConfig) isStructuredEncryptionConfig() {} + +func (CompanionStruct_StructuredEncryptionConfig_) Create_StructuredEncryptionConfig_() StructuredEncryptionConfig { + return StructuredEncryptionConfig{StructuredEncryptionConfig_StructuredEncryptionConfig{}} +} + +func (_this StructuredEncryptionConfig) Is_StructuredEncryptionConfig() bool { + _, ok := _this.Get_().(StructuredEncryptionConfig_StructuredEncryptionConfig) + return ok +} + +func (CompanionStruct_StructuredEncryptionConfig_) Default() StructuredEncryptionConfig { + return Companion_StructuredEncryptionConfig_.Create_StructuredEncryptionConfig_() +} + +func (_ CompanionStruct_StructuredEncryptionConfig_) AllSingletonConstructors() _dafny.Iterator { + i := -1 + return func() (interface{}, bool) { + i++ + switch i { + case 0: + return Companion_StructuredEncryptionConfig_.Create_StructuredEncryptionConfig_(), true + default: + return StructuredEncryptionConfig{}, false + } + } +} + +func (_this StructuredEncryptionConfig) String() string { + switch _this.Get_().(type) { + case nil: + return "null" + case StructuredEncryptionConfig_StructuredEncryptionConfig: + { + return "AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.StructuredEncryptionConfig.StructuredEncryptionConfig" + } + default: + { + return "" + } + } +} + +func (_this StructuredEncryptionConfig) Equals(other StructuredEncryptionConfig) bool { + switch _this.Get_().(type) { + case StructuredEncryptionConfig_StructuredEncryptionConfig: + { + _, ok := other.Get_().(StructuredEncryptionConfig_StructuredEncryptionConfig) + return ok + } + default: + { + return false // unexpected + } + } +} + +func (_this StructuredEncryptionConfig) EqualsGeneric(other interface{}) bool { + typed, ok := other.(StructuredEncryptionConfig) + return ok && _this.Equals(typed) +} + +func Type_StructuredEncryptionConfig_() _dafny.TypeDescriptor { + return type_StructuredEncryptionConfig_{} +} + +type type_StructuredEncryptionConfig_ struct { +} + +func (_this type_StructuredEncryptionConfig_) Default() interface{} { + return Companion_StructuredEncryptionConfig_.Default() +} + +func (_this type_StructuredEncryptionConfig_) String() string { + return "AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.StructuredEncryptionConfig" +} +func (_this StructuredEncryptionConfig) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = StructuredEncryptionConfig{} + +// End of datatype StructuredEncryptionConfig + +// Definition of datatype StructureSegment +type StructureSegment struct { + Data_StructureSegment_ +} + +func (_this StructureSegment) Get_() Data_StructureSegment_ { + return _this.Data_StructureSegment_ +} + +type Data_StructureSegment_ interface { + isStructureSegment() +} + +type CompanionStruct_StructureSegment_ struct { +} + +var Companion_StructureSegment_ = CompanionStruct_StructureSegment_{} + +type StructureSegment_StructureSegment struct { + Key _dafny.Sequence +} + +func (StructureSegment_StructureSegment) isStructureSegment() {} + +func (CompanionStruct_StructureSegment_) Create_StructureSegment_(Key _dafny.Sequence) StructureSegment { + return StructureSegment{StructureSegment_StructureSegment{Key}} +} + +func (_this StructureSegment) Is_StructureSegment() bool { + _, ok := _this.Get_().(StructureSegment_StructureSegment) + return ok +} + +func (CompanionStruct_StructureSegment_) Default() StructureSegment { + return Companion_StructureSegment_.Create_StructureSegment_(_dafny.EmptySeq.SetString()) +} + +func (_this StructureSegment) Dtor_key() _dafny.Sequence { + return _this.Get_().(StructureSegment_StructureSegment).Key +} + +func (_this StructureSegment) String() string { + switch data := _this.Get_().(type) { + case nil: + return "null" + case StructureSegment_StructureSegment: + { + return "AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.StructureSegment.StructureSegment" + "(" + _dafny.String(data.Key) + ")" + } + default: + { + return "" + } + } +} + +func (_this StructureSegment) Equals(other StructureSegment) bool { + switch data1 := _this.Get_().(type) { + case StructureSegment_StructureSegment: + { + data2, ok := other.Get_().(StructureSegment_StructureSegment) + return ok && data1.Key.Equals(data2.Key) + } + default: + { + return false // unexpected + } + } +} + +func (_this StructureSegment) EqualsGeneric(other interface{}) bool { + typed, ok := other.(StructureSegment) + return ok && _this.Equals(typed) +} + +func Type_StructureSegment_() _dafny.TypeDescriptor { + return type_StructureSegment_{} +} + +type type_StructureSegment_ struct { +} + +func (_this type_StructureSegment_) Default() interface{} { + return Companion_StructureSegment_.Default() +} + +func (_this type_StructureSegment_) String() string { + return "AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.StructureSegment" +} +func (_this StructureSegment) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = StructureSegment{} + +// End of datatype StructureSegment + +// Definition of class TerminalTypeId +type TerminalTypeId struct { +} + +func New_TerminalTypeId_() *TerminalTypeId { + _this := TerminalTypeId{} + + return &_this +} + +type CompanionStruct_TerminalTypeId_ struct { +} + +var Companion_TerminalTypeId_ = CompanionStruct_TerminalTypeId_{} + +func (*TerminalTypeId) String() string { + return "AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.TerminalTypeId" +} + +// End of class TerminalTypeId + +func Type_TerminalTypeId_() _dafny.TypeDescriptor { + return type_TerminalTypeId_{} +} + +type type_TerminalTypeId_ struct { +} + +func (_this type_TerminalTypeId_) Default() interface{} { + return _dafny.EmptySeq +} + +func (_this type_TerminalTypeId_) String() string { + return "AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.TerminalTypeId" +} +func (_this *CompanionStruct_TerminalTypeId_) Is_(__source _dafny.Sequence) bool { + var _0_x _dafny.Sequence = (__source) + _ = _0_x + return Companion_Default___.IsValid__TerminalTypeId(_0_x) +} + +// Definition of datatype Error +type Error struct { + Data_Error_ +} + +func (_this Error) Get_() Data_Error_ { + return _this.Data_Error_ +} + +type Data_Error_ interface { + isError() +} + +type CompanionStruct_Error_ struct { +} + +var Companion_Error_ = CompanionStruct_Error_{} + +type Error_StructuredEncryptionException struct { + Message _dafny.Sequence +} + +func (Error_StructuredEncryptionException) isError() {} + +func (CompanionStruct_Error_) Create_StructuredEncryptionException_(Message _dafny.Sequence) Error { + return Error{Error_StructuredEncryptionException{Message}} +} + +func (_this Error) Is_StructuredEncryptionException() bool { + _, ok := _this.Get_().(Error_StructuredEncryptionException) + return ok +} + +type Error_AwsCryptographyMaterialProviders struct { + AwsCryptographyMaterialProviders m_AwsCryptographyMaterialProvidersTypes.Error +} + +func (Error_AwsCryptographyMaterialProviders) isError() {} + +func (CompanionStruct_Error_) Create_AwsCryptographyMaterialProviders_(AwsCryptographyMaterialProviders m_AwsCryptographyMaterialProvidersTypes.Error) Error { + return Error{Error_AwsCryptographyMaterialProviders{AwsCryptographyMaterialProviders}} +} + +func (_this Error) Is_AwsCryptographyMaterialProviders() bool { + _, ok := _this.Get_().(Error_AwsCryptographyMaterialProviders) + return ok +} + +type Error_AwsCryptographyPrimitives struct { + AwsCryptographyPrimitives m_AwsCryptographyPrimitivesTypes.Error +} + +func (Error_AwsCryptographyPrimitives) isError() {} + +func (CompanionStruct_Error_) Create_AwsCryptographyPrimitives_(AwsCryptographyPrimitives m_AwsCryptographyPrimitivesTypes.Error) Error { + return Error{Error_AwsCryptographyPrimitives{AwsCryptographyPrimitives}} +} + +func (_this Error) Is_AwsCryptographyPrimitives() bool { + _, ok := _this.Get_().(Error_AwsCryptographyPrimitives) + return ok +} + +type Error_CollectionOfErrors struct { + List _dafny.Sequence + Message _dafny.Sequence +} + +func (Error_CollectionOfErrors) isError() {} + +func (CompanionStruct_Error_) Create_CollectionOfErrors_(List _dafny.Sequence, Message _dafny.Sequence) Error { + return Error{Error_CollectionOfErrors{List, Message}} +} + +func (_this Error) Is_CollectionOfErrors() bool { + _, ok := _this.Get_().(Error_CollectionOfErrors) + return ok +} + +type Error_Opaque struct { + Obj interface{} +} + +func (Error_Opaque) isError() {} + +func (CompanionStruct_Error_) Create_Opaque_(Obj interface{}) Error { + return Error{Error_Opaque{Obj}} +} + +func (_this Error) Is_Opaque() bool { + _, ok := _this.Get_().(Error_Opaque) + return ok +} + +type Error_OpaqueWithText struct { + Obj interface{} + ObjMessage _dafny.Sequence +} + +func (Error_OpaqueWithText) isError() {} + +func (CompanionStruct_Error_) Create_OpaqueWithText_(Obj interface{}, ObjMessage _dafny.Sequence) Error { + return Error{Error_OpaqueWithText{Obj, ObjMessage}} +} + +func (_this Error) Is_OpaqueWithText() bool { + _, ok := _this.Get_().(Error_OpaqueWithText) + return ok +} + +func (CompanionStruct_Error_) Default() Error { + return Companion_Error_.Create_StructuredEncryptionException_(_dafny.EmptySeq.SetString()) +} + +func (_this Error) Dtor_message() _dafny.Sequence { + switch data := _this.Get_().(type) { + case Error_StructuredEncryptionException: + return data.Message + default: + return data.(Error_CollectionOfErrors).Message + } +} + +func (_this Error) Dtor_AwsCryptographyMaterialProviders() m_AwsCryptographyMaterialProvidersTypes.Error { + return _this.Get_().(Error_AwsCryptographyMaterialProviders).AwsCryptographyMaterialProviders +} + +func (_this Error) Dtor_AwsCryptographyPrimitives() m_AwsCryptographyPrimitivesTypes.Error { + return _this.Get_().(Error_AwsCryptographyPrimitives).AwsCryptographyPrimitives +} + +func (_this Error) Dtor_list() _dafny.Sequence { + return _this.Get_().(Error_CollectionOfErrors).List +} + +func (_this Error) Dtor_obj() interface{} { + switch data := _this.Get_().(type) { + case Error_Opaque: + return data.Obj + default: + return data.(Error_OpaqueWithText).Obj + } +} + +func (_this Error) Dtor_objMessage() _dafny.Sequence { + return _this.Get_().(Error_OpaqueWithText).ObjMessage +} + +func (_this Error) String() string { + switch data := _this.Get_().(type) { + case nil: + return "null" + case Error_StructuredEncryptionException: + { + return "AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Error.StructuredEncryptionException" + "(" + _dafny.String(data.Message) + ")" + } + case Error_AwsCryptographyMaterialProviders: + { + return "AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Error.AwsCryptographyMaterialProviders" + "(" + _dafny.String(data.AwsCryptographyMaterialProviders) + ")" + } + case Error_AwsCryptographyPrimitives: + { + return "AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Error.AwsCryptographyPrimitives" + "(" + _dafny.String(data.AwsCryptographyPrimitives) + ")" + } + case Error_CollectionOfErrors: + { + return "AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Error.CollectionOfErrors" + "(" + _dafny.String(data.List) + ", " + _dafny.String(data.Message) + ")" + } + case Error_Opaque: + { + return "AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Error.Opaque" + "(" + _dafny.String(data.Obj) + ")" + } + case Error_OpaqueWithText: + { + return "AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Error.OpaqueWithText" + "(" + _dafny.String(data.Obj) + ", " + _dafny.String(data.ObjMessage) + ")" + } + default: + { + return "" + } + } +} + +func (_this Error) Equals(other Error) bool { + switch data1 := _this.Get_().(type) { + case Error_StructuredEncryptionException: + { + data2, ok := other.Get_().(Error_StructuredEncryptionException) + return ok && data1.Message.Equals(data2.Message) + } + case Error_AwsCryptographyMaterialProviders: + { + data2, ok := other.Get_().(Error_AwsCryptographyMaterialProviders) + return ok && data1.AwsCryptographyMaterialProviders.Equals(data2.AwsCryptographyMaterialProviders) + } + case Error_AwsCryptographyPrimitives: + { + data2, ok := other.Get_().(Error_AwsCryptographyPrimitives) + return ok && data1.AwsCryptographyPrimitives.Equals(data2.AwsCryptographyPrimitives) + } + case Error_CollectionOfErrors: + { + data2, ok := other.Get_().(Error_CollectionOfErrors) + return ok && data1.List.Equals(data2.List) && data1.Message.Equals(data2.Message) + } + case Error_Opaque: + { + data2, ok := other.Get_().(Error_Opaque) + return ok && _dafny.AreEqual(data1.Obj, data2.Obj) + } + case Error_OpaqueWithText: + { + data2, ok := other.Get_().(Error_OpaqueWithText) + return ok && _dafny.AreEqual(data1.Obj, data2.Obj) && data1.ObjMessage.Equals(data2.ObjMessage) + } + default: + { + return false // unexpected + } + } +} + +func (_this Error) EqualsGeneric(other interface{}) bool { + typed, ok := other.(Error) + return ok && _this.Equals(typed) +} + +func Type_Error_() _dafny.TypeDescriptor { + return type_Error_{} +} + +type type_Error_ struct { +} + +func (_this type_Error_) Default() interface{} { + return Companion_Error_.Default() +} + +func (_this type_Error_) String() string { + return "AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Error" +} +func (_this Error) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = Error{} + +// End of datatype Error + +// Definition of class OpaqueError +type OpaqueError struct { +} + +func New_OpaqueError_() *OpaqueError { + _this := OpaqueError{} + + return &_this +} + +type CompanionStruct_OpaqueError_ struct { +} + +var Companion_OpaqueError_ = CompanionStruct_OpaqueError_{} + +func (*OpaqueError) String() string { + return "AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.OpaqueError" +} + +// End of class OpaqueError + +func Type_OpaqueError_() _dafny.TypeDescriptor { + return type_OpaqueError_{} +} + +type type_OpaqueError_ struct { +} + +func (_this type_OpaqueError_) Default() interface{} { + return Companion_Error_.Default() +} + +func (_this type_OpaqueError_) String() string { + return "AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.OpaqueError" +} +func (_this *CompanionStruct_OpaqueError_) Is_(__source Error) bool { + var _1_e Error = (__source) + _ = _1_e + return ((_1_e).Is_Opaque()) || ((_1_e).Is_OpaqueWithText()) +} + +// Definition of class DummySubsetType +type DummySubsetType struct { +} + +func New_DummySubsetType_() *DummySubsetType { + _this := DummySubsetType{} + + return &_this +} + +type CompanionStruct_DummySubsetType_ struct { +} + +var Companion_DummySubsetType_ = CompanionStruct_DummySubsetType_{} + +func (*DummySubsetType) String() string { + return "AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.DummySubsetType" +} +func (_this *CompanionStruct_DummySubsetType_) Witness() _dafny.Int { + return _dafny.One +} + +// End of class DummySubsetType + +func Type_DummySubsetType_() _dafny.TypeDescriptor { + return type_DummySubsetType_{} +} + +type type_DummySubsetType_ struct { +} + +func (_this type_DummySubsetType_) Default() interface{} { + return Companion_DummySubsetType_.Witness() +} + +func (_this type_DummySubsetType_) String() string { + return "AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.DummySubsetType" +} +func (_this *CompanionStruct_DummySubsetType_) Is_(__source _dafny.Int) bool { + var _2_x _dafny.Int = (__source) + _ = _2_x + return Companion_Default___.IsDummySubsetType(_2_x) +} diff --git a/releases/go/dynamodb-esdk/BaseBeacon/BaseBeacon.go b/releases/go/dynamodb-esdk/BaseBeacon/BaseBeacon.go new file mode 100644 index 000000000..5a64cbd44 --- /dev/null +++ b/releases/go/dynamodb-esdk/BaseBeacon/BaseBeacon.go @@ -0,0 +1,1172 @@ +// Package BaseBeacon +// Dafny module BaseBeacon compiled into Go + +package BaseBeacon + +import ( + os "os" + + m_ComAmazonawsDynamodbTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/dynamodb/ComAmazonawsDynamodbTypes" + m_Com_Amazonaws_Dynamodb "github.com/aws/aws-cryptographic-material-providers-library/releases/go/dynamodb/Com_Amazonaws_Dynamodb" + m_ComAmazonawsKmsTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/kms/ComAmazonawsKmsTypes" + m_Com_Amazonaws_Kms "github.com/aws/aws-cryptographic-material-providers-library/releases/go/kms/Com_Amazonaws_Kms" + m_AlgorithmSuites "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AlgorithmSuites" + m_AwsArnParsing "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsArnParsing" + m_AwsCryptographyKeyStoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyKeyStoreOperations" + m_AwsCryptographyKeyStoreTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyKeyStoreTypes" + m_AwsCryptographyMaterialProvidersOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyMaterialProvidersOperations" + m_AwsCryptographyMaterialProvidersTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyMaterialProvidersTypes" + m_AwsKmsDiscoveryKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsDiscoveryKeyring" + m_AwsKmsEcdhKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsEcdhKeyring" + m_AwsKmsHierarchicalKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsHierarchicalKeyring" + m_AwsKmsKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsKeyring" + m_AwsKmsMrkAreUnique "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkAreUnique" + m_AwsKmsMrkDiscoveryKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkDiscoveryKeyring" + m_AwsKmsMrkKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkKeyring" + m_AwsKmsMrkMatchForDecrypt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkMatchForDecrypt" + m_AwsKmsRsaKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsRsaKeyring" + m_AwsKmsUtils "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsUtils" + m_CMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CMM" + m_CacheConstants "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CacheConstants" + m_CanonicalEncryptionContext "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CanonicalEncryptionContext" + m_Commitment "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Commitment" + m_Constants "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Constants" + m_CreateKeyStoreTable "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CreateKeyStoreTable" + m_CreateKeys "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CreateKeys" + m_DDBKeystoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DDBKeystoreOperations" + m_DefaultCMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DefaultCMM" + m_DefaultClientSupplier "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DefaultClientSupplier" + m_Defaults "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Defaults" + m_DiscoveryMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DiscoveryMultiKeyring" + m_EcdhEdkWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/EcdhEdkWrapping" + m_EdkWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/EdkWrapping" + m_ErrorMessages "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/ErrorMessages" + m_GetKeys "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/GetKeys" + m_IntermediateKeyWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/IntermediateKeyWrapping" + m_KMSKeystoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KMSKeystoreOperations" + m_KeyStore "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KeyStore" + m_KeyStoreErrorMessages "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KeyStoreErrorMessages" + m_Keyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Keyring" + m_KmsArn "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KmsArn" + m_LocalCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/LocalCMC" + m_MaterialProviders "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MaterialProviders" + m_MaterialWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MaterialWrapping" + m_Materials "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Materials" + m_MrkAwareDiscoveryMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MrkAwareDiscoveryMultiKeyring" + m_MrkAwareStrictMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MrkAwareStrictMultiKeyring" + m_MultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MultiKeyring" + m_RawAESKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawAESKeyring" + m_RawECDHKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawECDHKeyring" + m_RawRSAKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawRSAKeyring" + m_RequiredEncryptionContextCMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RequiredEncryptionContextCMM" + m_StormTracker "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StormTracker" + m_StormTrackingCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StormTrackingCMC" + m_StrictMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StrictMultiKeyring" + m_Structure "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Structure" + m_SynchronizedLocalCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/SynchronizedLocalCMC" + m_Utils "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Utils" + m_AtomicPrimitives "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AtomicPrimitives" + m_AwsCryptographyPrimitivesOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AwsCryptographyPrimitivesOperations" + m_AwsCryptographyPrimitivesTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AwsCryptographyPrimitivesTypes" + m_Digest "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/Digest" + m_HKDF "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/HKDF" + m_KdfCtr "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/KdfCtr" + m_Random "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/Random" + m_WrappedHKDF "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/WrappedHKDF" + m_WrappedHMAC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/WrappedHMAC" + m_Actions "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Actions" + m_Base64 "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Base64" + m_Base64Lemmas "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Base64Lemmas" + m_BoundedInts "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/BoundedInts" + m_DivInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivInternals" + m_DivInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivInternalsNonlinear" + m_DivMod "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivMod" + m_FileIO "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/FileIO" + m_FloatCompare "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/FloatCompare" + m_Functions "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Functions" + m_GeneralInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/GeneralInternals" + m_GetOpt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/GetOpt" + m_HexStrings "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/HexStrings" + m_Logarithm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Logarithm" + m__Math "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Math_" + m_ModInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/ModInternals" + m_ModInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/ModInternalsNonlinear" + m_Mul "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Mul" + m_MulInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/MulInternals" + m_MulInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/MulInternalsNonlinear" + m_Power "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Power" + m_Relations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Relations" + m_Seq "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Seq" + m_Seq_MergeSort "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Seq_MergeSort" + m_Sorting "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Sorting" + m_StandardLibrary "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary" + m_StandardLibraryInterop "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibraryInterop" + m_StandardLibrary_MemoryMath "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_MemoryMath" + m_StandardLibrary_Sequence "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_Sequence" + m_StandardLibrary_String "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_String" + m_StandardLibrary_UInt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_UInt" + m_Streams "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Streams" + m_UTF8 "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/UTF8" + m_UnicodeStrings "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/UnicodeStrings" + m__Unicode "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Unicode_" + m_Utf16EncodingForm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Utf16EncodingForm" + m_Utf8EncodingForm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Utf8EncodingForm" + m_Wrappers "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Wrappers" + m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations" + m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes" + m_AwsCryptographyDbEncryptionSdkDynamoDbOperations "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbOperations" + m_AwsCryptographyDbEncryptionSdkDynamoDbTypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbTypes" + m_AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations" + m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes" + m_Canonize "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/Canonize" + m_DdbVirtualFields "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DdbVirtualFields" + m_DynamoDbEncryption "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbEncryption" + m_DynamoDbEncryptionBranchKeyIdSupplier "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbEncryptionBranchKeyIdSupplier" + m_DynamoDbEncryptionUtil "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbEncryptionUtil" + m_DynamoDbItemEncryptor "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbItemEncryptor" + m_DynamoDbItemEncryptorUtil "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbItemEncryptorUtil" + m_DynamoDbNormalizeNumber "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbNormalizeNumber" + m_DynamoDbUpdateExpr "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbUpdateExpr" + m_DynamoToStruct "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoToStruct" + m_InternalLegacyOverride "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/InternalLegacyOverride" + m__Maps "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/Maps_" + m_OptimizedMergeSort "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/OptimizedMergeSort" + m_Sets "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/Sets" + m_SortCanon "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/SortCanon" + m_StructuredEncryption "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryption" + m_StructuredEncryptionCrypt "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionCrypt" + m_StructuredEncryptionFooter "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionFooter" + m_StructuredEncryptionHeader "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionHeader" + m_StructuredEncryptionPaths "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionPaths" + m_StructuredEncryptionUtil "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionUtil" + m_TermLoc "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/TermLoc" + m__System "github.com/dafny-lang/DafnyRuntimeGo/v4/System_" + _dafny "github.com/dafny-lang/DafnyRuntimeGo/v4/dafny" +) + +var _ = os.Args +var _ _dafny.Dummy__ +var _ m__System.Dummy__ +var _ m_Wrappers.Dummy__ +var _ m_BoundedInts.Dummy__ +var _ m_StandardLibrary_UInt.Dummy__ +var _ m_StandardLibrary_MemoryMath.Dummy__ +var _ m_StandardLibrary_Sequence.Dummy__ +var _ m_StandardLibrary_String.Dummy__ +var _ m_StandardLibrary.Dummy__ +var _ m_AwsCryptographyPrimitivesTypes.Dummy__ +var _ m_Random.Dummy__ +var _ m_Digest.Dummy__ +var _ m_WrappedHMAC.Dummy__ +var _ m_HKDF.Dummy__ +var _ m_WrappedHKDF.Dummy__ +var _ m_KdfCtr.Dummy__ +var _ m_AwsCryptographyPrimitivesOperations.Dummy__ +var _ m_AtomicPrimitives.Dummy__ +var _ m_ComAmazonawsDynamodbTypes.Dummy__ +var _ m_ComAmazonawsKmsTypes.Dummy__ +var _ m_AwsCryptographyKeyStoreTypes.Dummy__ +var _ m_AwsCryptographyMaterialProvidersTypes.Dummy__ +var _ m_Base64.Dummy__ +var _ m_AlgorithmSuites.Dummy__ +var _ m_Materials.Dummy__ +var _ m_Keyring.Dummy__ +var _ m_Relations.Dummy__ +var _ m_Seq_MergeSort.Dummy__ +var _ m__Math.Dummy__ +var _ m_Seq.Dummy__ +var _ m_Actions.Dummy__ +var _ m_CanonicalEncryptionContext.Dummy__ +var _ m_MaterialWrapping.Dummy__ +var _ m_IntermediateKeyWrapping.Dummy__ +var _ m_EdkWrapping.Dummy__ +var _ m_ErrorMessages.Dummy__ +var _ m_RawAESKeyring.Dummy__ +var _ m_AwsArnParsing.Dummy__ +var _ m_Constants.Dummy__ +var _ m_EcdhEdkWrapping.Dummy__ +var _ m_RawECDHKeyring.Dummy__ +var _ m_RawRSAKeyring.Dummy__ +var _ m_AwsKmsMrkMatchForDecrypt.Dummy__ +var _ m_AwsKmsUtils.Dummy__ +var _ m_AwsKmsKeyring.Dummy__ +var _ m_AwsKmsDiscoveryKeyring.Dummy__ +var _ m_AwsKmsEcdhKeyring.Dummy__ +var _ m_FileIO.Dummy__ +var _ m_LocalCMC.Dummy__ +var _ m_SynchronizedLocalCMC.Dummy__ +var _ m_StormTracker.Dummy__ +var _ m_StormTrackingCMC.Dummy__ +var _ m_CacheConstants.Dummy__ +var _ m_AwsKmsHierarchicalKeyring.Dummy__ +var _ m_AwsKmsMrkDiscoveryKeyring.Dummy__ +var _ m_AwsKmsMrkKeyring.Dummy__ +var _ m_AwsKmsRsaKeyring.Dummy__ +var _ m_MultiKeyring.Dummy__ +var _ m_AwsKmsMrkAreUnique.Dummy__ +var _ m_StrictMultiKeyring.Dummy__ +var _ m_Com_Amazonaws_Kms.Dummy__ +var _ m_Com_Amazonaws_Dynamodb.Dummy__ +var _ m_DiscoveryMultiKeyring.Dummy__ +var _ m_MrkAwareDiscoveryMultiKeyring.Dummy__ +var _ m_MrkAwareStrictMultiKeyring.Dummy__ +var _ m_CMM.Dummy__ +var _ m_Defaults.Dummy__ +var _ m_Commitment.Dummy__ +var _ m_DefaultCMM.Dummy__ +var _ m_DefaultClientSupplier.Dummy__ +var _ m_Utils.Dummy__ +var _ m_RequiredEncryptionContextCMM.Dummy__ +var _ m_AwsCryptographyMaterialProvidersOperations.Dummy__ +var _ m_MaterialProviders.Dummy__ +var _ m_KeyStoreErrorMessages.Dummy__ +var _ m_KmsArn.Dummy__ +var _ m_Structure.Dummy__ +var _ m_KMSKeystoreOperations.Dummy__ +var _ m_DDBKeystoreOperations.Dummy__ +var _ m_CreateKeys.Dummy__ +var _ m_CreateKeyStoreTable.Dummy__ +var _ m_GetKeys.Dummy__ +var _ m_AwsCryptographyKeyStoreOperations.Dummy__ +var _ m_KeyStore.Dummy__ +var _ m__Unicode.Dummy__ +var _ m_Functions.Dummy__ +var _ m_Utf8EncodingForm.Dummy__ +var _ m_Utf16EncodingForm.Dummy__ +var _ m_UnicodeStrings.Dummy__ +var _ m_GeneralInternals.Dummy__ +var _ m_MulInternalsNonlinear.Dummy__ +var _ m_MulInternals.Dummy__ +var _ m_Mul.Dummy__ +var _ m_ModInternalsNonlinear.Dummy__ +var _ m_DivInternalsNonlinear.Dummy__ +var _ m_ModInternals.Dummy__ +var _ m_DivInternals.Dummy__ +var _ m_DivMod.Dummy__ +var _ m_Power.Dummy__ +var _ m_Logarithm.Dummy__ +var _ m_StandardLibraryInterop.Dummy__ +var _ m_Streams.Dummy__ +var _ m_Sorting.Dummy__ +var _ m_HexStrings.Dummy__ +var _ m_GetOpt.Dummy__ +var _ m_FloatCompare.Dummy__ +var _ m_Base64Lemmas.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Dummy__ +var _ m_StructuredEncryptionUtil.Dummy__ +var _ m_Sets.Dummy__ +var _ m_StructuredEncryptionPaths.Dummy__ +var _ m_StructuredEncryptionHeader.Dummy__ +var _ m_StructuredEncryptionFooter.Dummy__ +var _ m_OptimizedMergeSort.Dummy__ +var _ m_SortCanon.Dummy__ +var _ m_Canonize.Dummy__ +var _ m_StructuredEncryptionCrypt.Dummy__ +var _ m__Maps.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations.Dummy__ +var _ m_StructuredEncryption.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Dummy__ +var _ m_DynamoDbEncryptionUtil.Dummy__ +var _ m_DynamoDbNormalizeNumber.Dummy__ +var _ m_DynamoToStruct.Dummy__ +var _ m_DynamoDbItemEncryptorUtil.Dummy__ +var _ m_InternalLegacyOverride.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations.Dummy__ +var _ m_DynamoDbItemEncryptor.Dummy__ +var _ m_DynamoDbEncryptionBranchKeyIdSupplier.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbOperations.Dummy__ +var _ m_DynamoDbEncryption.Dummy__ +var _ m_TermLoc.Dummy__ +var _ m_DdbVirtualFields.Dummy__ +var _ m_DynamoDbUpdateExpr.Dummy__ + +type Dummy__ struct{} + +// Definition of class Default__ +type Default__ struct { + dummy byte +} + +func New_Default___() *Default__ { + _this := Default__{} + + return &_this +} + +type CompanionStruct_Default___ struct { +} + +var Companion_Default___ = CompanionStruct_Default___{} + +func (_this *Default__) Equals(other *Default__) bool { + return _this == other +} + +func (_this *Default__) EqualsGeneric(x interface{}) bool { + other, ok := x.(*Default__) + return ok && _this.Equals(other) +} + +func (*Default__) String() string { + return "BaseBeacon.Default__" +} +func (_this *Default__) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = &Default__{} + +func (_static *CompanionStruct_Default___) MakeStandardBeacon(client *m_AtomicPrimitives.AtomicPrimitivesClient, name _dafny.Sequence, length uint8, loc _dafny.Sequence, partOnly bool, asSet bool, share m_Wrappers.Option) m_Wrappers.Result { + var _0_valueOrError0 m_Wrappers.Result = m_TermLoc.Companion_Default___.MakeTermLoc(loc) + _ = _0_valueOrError0 + if (_0_valueOrError0).IsFailure() { + return (_0_valueOrError0).PropagateFailure() + } else { + var _1_termLoc _dafny.Sequence = (_0_valueOrError0).Extract().(_dafny.Sequence) + _ = _1_termLoc + var _2_beaconName _dafny.Sequence = _dafny.Companion_Sequence_.Concatenate(m_DynamoDbEncryptionUtil.Companion_Default___.BeaconPrefix(), name) + _ = _2_beaconName + var _3_valueOrError1 m_Wrappers.Outcome = m_Wrappers.Companion_Default___.Need(m_ComAmazonawsDynamodbTypes.Companion_Default___.IsValid__AttributeName(_2_beaconName), m_DynamoDbEncryptionUtil.Companion_Default___.E(_dafny.Companion_Sequence_.Concatenate(_2_beaconName, _dafny.SeqOfString(" is not a valid attribute name.")))) + _ = _3_valueOrError1 + if (_3_valueOrError1).IsFailure() { + return (_3_valueOrError1).PropagateFailure() + } else { + return m_Wrappers.Companion_Result_.Create_Success_(Companion_StandardBeacon_.Create_StandardBeacon_(Companion_BeaconBase_.Create_BeaconBase_(client, name, _2_beaconName), length, _1_termLoc, partOnly, asSet, share)) + } + } +} +func (_static *CompanionStruct_Default___) CharsFromBeaconLength(bits uint8) _dafny.Int { + return _dafny.IntOfUint8(((uint8(bits)) + (uint8(3))) / (uint8(4))) +} +func (_static *CompanionStruct_Default___) TopBits(bits uint8) uint8 { + var _0_x uint8 = (uint8(bits)) % (uint8(4)) + _ = _0_x + if (_0_x) == (uint8(0)) { + return uint8(4) + } else { + return _0_x + } +} +func (_static *CompanionStruct_Default___) BytesFromBeaconLength(bits uint8) _dafny.Int { + return _dafny.IntOfUint8(((uint8(bits)) + (uint8(7))) / (uint8(8))) +} +func (_static *CompanionStruct_Default___) TruncateNibble(nibble uint8, length uint8) uint8 { + if (length) == (uint8(4)) { + return nibble + } else if (length) == (uint8(3)) { + return (nibble) % (uint8(8)) + } else if (length) == (uint8(2)) { + return (nibble) % (uint8(4)) + } else { + return (nibble) % (uint8(2)) + } +} +func (_static *CompanionStruct_Default___) BytesToHex(bytes _dafny.Sequence, bits uint8) _dafny.Sequence { + var _0_numBytes _dafny.Int = Companion_Default___.BytesFromBeaconLength(bits) + _ = _0_numBytes + var _1_numChars _dafny.Int = Companion_Default___.CharsFromBeaconLength(bits) + _ = _1_numChars + var _2_topBits uint8 = Companion_Default___.TopBits(bits) + _ = _2_topBits + var _3_bytes _dafny.Sequence = (bytes).Drop(((_dafny.IntOfInt64(8)).Minus(_0_numBytes)).Uint32()) + _ = _3_bytes + if (_1_numChars).Cmp((_dafny.IntOfInt64(2)).Times(_0_numBytes)) == 0 { + var _4_topNibble uint8 = ((_3_bytes).Select(0).(uint8)) / (uint8(16)) + _ = _4_topNibble + var _5_bottomNibble uint8 = ((_3_bytes).Select(0).(uint8)) % (uint8(16)) + _ = _5_bottomNibble + return _dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfChars(m_HexStrings.Companion_Default___.HexChar(Companion_Default___.TruncateNibble(_4_topNibble, _2_topBits)), m_HexStrings.Companion_Default___.HexChar(_5_bottomNibble)), m_HexStrings.Companion_Default___.ToHexString((_3_bytes).Drop(1))) + } else { + return _dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfChars(m_HexStrings.Companion_Default___.HexChar(Companion_Default___.TruncateNibble(((_3_bytes).Select(0).(uint8))%(uint8(16)), _2_topBits))), m_HexStrings.Companion_Default___.ToHexString((_3_bytes).Drop(1))) + } +} + +// End of class Default__ + +// Definition of class BeaconLength +type BeaconLength struct { +} + +func New_BeaconLength_() *BeaconLength { + _this := BeaconLength{} + + return &_this +} + +type CompanionStruct_BeaconLength_ struct { +} + +var Companion_BeaconLength_ = CompanionStruct_BeaconLength_{} + +func (*BeaconLength) String() string { + return "BaseBeacon.BeaconLength" +} +func (_this *BeaconLength) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = &BeaconLength{} + +func (_this *CompanionStruct_BeaconLength_) IntegerRange(lo _dafny.Int, hi _dafny.Int) _dafny.Iterator { + iter := _dafny.IntegerRange(lo, hi) + return func() (interface{}, bool) { + next, ok := iter() + if !ok { + return uint8(0), false + } + return next.(_dafny.Int).Uint8(), true + } +} +func (_this *CompanionStruct_BeaconLength_) Witness() uint8 { + return (_dafny.One).Uint8() +} + +// End of class BeaconLength + +func Type_BeaconLength_() _dafny.TypeDescriptor { + return type_BeaconLength_{} +} + +type type_BeaconLength_ struct { +} + +func (_this type_BeaconLength_) Default() interface{} { + return Companion_BeaconLength_.Witness() +} + +func (_this type_BeaconLength_) String() string { + return "BaseBeacon.BeaconLength" +} +func (_this *CompanionStruct_BeaconLength_) Is_(__source uint8) bool { + var _6_x _dafny.Int = _dafny.IntOfUint8(__source) + _ = _6_x + return ((_dafny.One).Cmp(_6_x) <= 0) && ((_6_x).Cmp(_dafny.IntOfInt64(63)) <= 0) +} + +// Definition of class Nibble +type Nibble struct { +} + +func New_Nibble_() *Nibble { + _this := Nibble{} + + return &_this +} + +type CompanionStruct_Nibble_ struct { +} + +var Companion_Nibble_ = CompanionStruct_Nibble_{} + +func (*Nibble) String() string { + return "BaseBeacon.Nibble" +} + +// End of class Nibble + +func Type_Nibble_() _dafny.TypeDescriptor { + return type_Nibble_{} +} + +type type_Nibble_ struct { +} + +func (_this type_Nibble_) Default() interface{} { + return uint8(0) +} + +func (_this type_Nibble_) String() string { + return "BaseBeacon.Nibble" +} +func (_this *CompanionStruct_Nibble_) Is_(__source uint8) bool { + var _7_x uint8 = (__source) + _ = _7_x + if true { + return ((uint8(0)) <= (_7_x)) && ((_7_x) < (uint8(16))) + } + return false +} + +// Definition of datatype BeaconBase +type BeaconBase struct { + Data_BeaconBase_ +} + +func (_this BeaconBase) Get_() Data_BeaconBase_ { + return _this.Data_BeaconBase_ +} + +type Data_BeaconBase_ interface { + isBeaconBase() +} + +type CompanionStruct_BeaconBase_ struct { +} + +var Companion_BeaconBase_ = CompanionStruct_BeaconBase_{} + +type BeaconBase_BeaconBase struct { + Client *m_AtomicPrimitives.AtomicPrimitivesClient + Name _dafny.Sequence + BeaconName _dafny.Sequence +} + +func (BeaconBase_BeaconBase) isBeaconBase() {} + +func (CompanionStruct_BeaconBase_) Create_BeaconBase_(Client *m_AtomicPrimitives.AtomicPrimitivesClient, Name _dafny.Sequence, BeaconName _dafny.Sequence) BeaconBase { + return BeaconBase{BeaconBase_BeaconBase{Client, Name, BeaconName}} +} + +func (_this BeaconBase) Is_BeaconBase() bool { + _, ok := _this.Get_().(BeaconBase_BeaconBase) + return ok +} + +func (CompanionStruct_BeaconBase_) Default() BeaconBase { + return Companion_BeaconBase_.Create_BeaconBase_((*m_AtomicPrimitives.AtomicPrimitivesClient)(nil), _dafny.EmptySeq.SetString(), _dafny.EmptySeq.SetString()) +} + +func (_this BeaconBase) Dtor_client() *m_AtomicPrimitives.AtomicPrimitivesClient { + return _this.Get_().(BeaconBase_BeaconBase).Client +} + +func (_this BeaconBase) Dtor_name() _dafny.Sequence { + return _this.Get_().(BeaconBase_BeaconBase).Name +} + +func (_this BeaconBase) Dtor_beaconName() _dafny.Sequence { + return _this.Get_().(BeaconBase_BeaconBase).BeaconName +} + +func (_this BeaconBase) String() string { + switch data := _this.Get_().(type) { + case nil: + return "null" + case BeaconBase_BeaconBase: + { + return "BaseBeacon.BeaconBase.BeaconBase" + "(" + _dafny.String(data.Client) + ", " + _dafny.String(data.Name) + ", " + _dafny.String(data.BeaconName) + ")" + } + default: + { + return "" + } + } +} + +func (_this BeaconBase) Equals(other BeaconBase) bool { + switch data1 := _this.Get_().(type) { + case BeaconBase_BeaconBase: + { + data2, ok := other.Get_().(BeaconBase_BeaconBase) + return ok && data1.Client == data2.Client && data1.Name.Equals(data2.Name) && data1.BeaconName.Equals(data2.BeaconName) + } + default: + { + return false // unexpected + } + } +} + +func (_this BeaconBase) EqualsGeneric(other interface{}) bool { + typed, ok := other.(BeaconBase) + return ok && _this.Equals(typed) +} + +func Type_BeaconBase_() _dafny.TypeDescriptor { + return type_BeaconBase_{} +} + +type type_BeaconBase_ struct { +} + +func (_this type_BeaconBase_) Default() interface{} { + return Companion_BeaconBase_.Default() +} + +func (_this type_BeaconBase_) String() string { + return "BaseBeacon.BeaconBase" +} +func (_this BeaconBase) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = BeaconBase{} + +func (_this BeaconBase) Hash(val _dafny.Sequence, key _dafny.Sequence, length uint8) m_Wrappers.Result { + { + var _0_valueOrError0 m_Wrappers.Result = (_this).GetHmac(val, key) + _ = _0_valueOrError0 + if (_0_valueOrError0).IsFailure() { + return (_0_valueOrError0).PropagateFailure() + } else { + var _1_hash _dafny.Sequence = (_0_valueOrError0).Extract().(_dafny.Sequence) + _ = _1_hash + return m_Wrappers.Companion_Result_.Create_Success_(Companion_Default___.BytesToHex(_1_hash, length)) + } + } +} +func (_this BeaconBase) HashStr(val _dafny.Sequence, key _dafny.Sequence, length uint8) m_Wrappers.Result { + { + var _0_str m_Wrappers.Result = m_UTF8.Encode(val) + _ = _0_str + if (_0_str).Is_Failure() { + return m_Wrappers.Companion_Result_.Create_Failure_(m_DynamoDbEncryptionUtil.Companion_Default___.E((_0_str).Dtor_error().(_dafny.Sequence))) + } else { + return (_this).Hash((_0_str).Dtor_value().(_dafny.Sequence), key, length) + } + } +} +func (_this BeaconBase) GetHmac(data _dafny.Sequence, key _dafny.Sequence) m_Wrappers.Result { + { + var _0_input m_AwsCryptographyPrimitivesTypes.HMacInput = m_AwsCryptographyPrimitivesTypes.Companion_HMacInput_.Create_HMacInput_(m_AwsCryptographyPrimitivesTypes.Companion_DigestAlgorithm_.Create_SHA__384_(), key, data) + _ = _0_input + var _1_valueOrError0 m_Wrappers.Result = (((_this).Dtor_client()).HMac(_0_input)).MapFailure(func(coer87 func(m_AwsCryptographyPrimitivesTypes.Error) m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Error) func(interface{}) interface{} { + return func(arg115 interface{}) interface{} { + return coer87(arg115.(m_AwsCryptographyPrimitivesTypes.Error)) + } + }(func(_2_e m_AwsCryptographyPrimitivesTypes.Error) m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Error { + return m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Companion_Error_.Create_AwsCryptographyPrimitives_(_2_e) + })) + _ = _1_valueOrError0 + if (_1_valueOrError0).IsFailure() { + return (_1_valueOrError0).PropagateFailure() + } else { + var _3_output _dafny.Sequence = (_1_valueOrError0).Extract().(_dafny.Sequence) + _ = _3_output + return m_Wrappers.Companion_Result_.Create_Success_((_3_output).Take(8)) + } + } +} + +// End of datatype BeaconBase + +// Definition of class ValidStandardBeacon +type ValidStandardBeacon struct { +} + +func New_ValidStandardBeacon_() *ValidStandardBeacon { + _this := ValidStandardBeacon{} + + return &_this +} + +type CompanionStruct_ValidStandardBeacon_ struct { +} + +var Companion_ValidStandardBeacon_ = CompanionStruct_ValidStandardBeacon_{} + +func (*ValidStandardBeacon) String() string { + return "BaseBeacon.ValidStandardBeacon" +} + +// End of class ValidStandardBeacon + +func Type_ValidStandardBeacon_() _dafny.TypeDescriptor { + return type_ValidStandardBeacon_{} +} + +type type_ValidStandardBeacon_ struct { +} + +func (_this type_ValidStandardBeacon_) Default() interface{} { + return Companion_StandardBeacon_.Default() +} + +func (_this type_ValidStandardBeacon_) String() string { + return "BaseBeacon.ValidStandardBeacon" +} + +// Definition of datatype StandardBeacon +type StandardBeacon struct { + Data_StandardBeacon_ +} + +func (_this StandardBeacon) Get_() Data_StandardBeacon_ { + return _this.Data_StandardBeacon_ +} + +type Data_StandardBeacon_ interface { + isStandardBeacon() +} + +type CompanionStruct_StandardBeacon_ struct { +} + +var Companion_StandardBeacon_ = CompanionStruct_StandardBeacon_{} + +type StandardBeacon_StandardBeacon struct { + Base BeaconBase + Length uint8 + Loc _dafny.Sequence + PartOnly bool + AsSet bool + Share m_Wrappers.Option +} + +func (StandardBeacon_StandardBeacon) isStandardBeacon() {} + +func (CompanionStruct_StandardBeacon_) Create_StandardBeacon_(Base BeaconBase, Length uint8, Loc _dafny.Sequence, PartOnly bool, AsSet bool, Share m_Wrappers.Option) StandardBeacon { + return StandardBeacon{StandardBeacon_StandardBeacon{Base, Length, Loc, PartOnly, AsSet, Share}} +} + +func (_this StandardBeacon) Is_StandardBeacon() bool { + _, ok := _this.Get_().(StandardBeacon_StandardBeacon) + return ok +} + +func (CompanionStruct_StandardBeacon_) Default() StandardBeacon { + return Companion_StandardBeacon_.Create_StandardBeacon_(Companion_BeaconBase_.Default(), Companion_BeaconLength_.Witness(), _dafny.EmptySeq, false, false, m_Wrappers.Companion_Option_.Default()) +} + +func (_this StandardBeacon) Dtor_base() BeaconBase { + return _this.Get_().(StandardBeacon_StandardBeacon).Base +} + +func (_this StandardBeacon) Dtor_length() uint8 { + return _this.Get_().(StandardBeacon_StandardBeacon).Length +} + +func (_this StandardBeacon) Dtor_loc() _dafny.Sequence { + return _this.Get_().(StandardBeacon_StandardBeacon).Loc +} + +func (_this StandardBeacon) Dtor_partOnly() bool { + return _this.Get_().(StandardBeacon_StandardBeacon).PartOnly +} + +func (_this StandardBeacon) Dtor_asSet() bool { + return _this.Get_().(StandardBeacon_StandardBeacon).AsSet +} + +func (_this StandardBeacon) Dtor_share() m_Wrappers.Option { + return _this.Get_().(StandardBeacon_StandardBeacon).Share +} + +func (_this StandardBeacon) String() string { + switch data := _this.Get_().(type) { + case nil: + return "null" + case StandardBeacon_StandardBeacon: + { + return "BaseBeacon.StandardBeacon.StandardBeacon" + "(" + _dafny.String(data.Base) + ", " + _dafny.String(data.Length) + ", " + _dafny.String(data.Loc) + ", " + _dafny.String(data.PartOnly) + ", " + _dafny.String(data.AsSet) + ", " + _dafny.String(data.Share) + ")" + } + default: + { + return "" + } + } +} + +func (_this StandardBeacon) Equals(other StandardBeacon) bool { + switch data1 := _this.Get_().(type) { + case StandardBeacon_StandardBeacon: + { + data2, ok := other.Get_().(StandardBeacon_StandardBeacon) + return ok && data1.Base.Equals(data2.Base) && data1.Length == data2.Length && data1.Loc.Equals(data2.Loc) && data1.PartOnly == data2.PartOnly && data1.AsSet == data2.AsSet && data1.Share.Equals(data2.Share) + } + default: + { + return false // unexpected + } + } +} + +func (_this StandardBeacon) EqualsGeneric(other interface{}) bool { + typed, ok := other.(StandardBeacon) + return ok && _this.Equals(typed) +} + +func Type_StandardBeacon_() _dafny.TypeDescriptor { + return type_StandardBeacon_{} +} + +type type_StandardBeacon_ struct { +} + +func (_this type_StandardBeacon_) Default() interface{} { + return Companion_StandardBeacon_.Default() +} + +func (_this type_StandardBeacon_) String() string { + return "BaseBeacon.StandardBeacon" +} +func (_this StandardBeacon) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = StandardBeacon{} + +func (_this StandardBeacon) Hash(val _dafny.Sequence, key _dafny.Sequence) m_Wrappers.Result { + { + return ((_this).Dtor_base()).Hash(val, key, (_this).Dtor_length()) + } +} +func (_this StandardBeacon) KeyName() _dafny.Sequence { + { + if ((_this).Dtor_share()).Is_Some() { + return ((_this).Dtor_share()).Dtor_value().(_dafny.Sequence) + } else { + return ((_this).Dtor_base()).Dtor_name() + } + } +} +func (_this StandardBeacon) HashStr(val _dafny.Sequence, keys _dafny.Map) m_Wrappers.Result { + { + var _0_valueOrError0 m_Wrappers.Outcome = m_Wrappers.Companion_Default___.Need((keys).Contains((_this).KeyName()), m_DynamoDbEncryptionUtil.Companion_Default___.E(_dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("Internal Error, no key for "), (_this).KeyName()))) + _ = _0_valueOrError0 + if (_0_valueOrError0).IsFailure() { + return (_0_valueOrError0).PropagateFailure() + } else { + var _1_str m_Wrappers.Result = m_UTF8.Encode(val) + _ = _1_str + if (_1_str).Is_Failure() { + return m_Wrappers.Companion_Result_.Create_Failure_(m_DynamoDbEncryptionUtil.Companion_Default___.E((_1_str).Dtor_error().(_dafny.Sequence))) + } else { + return (_this).Hash((_1_str).Dtor_value().(_dafny.Sequence), (keys).Get((_this).KeyName()).(_dafny.Sequence)) + } + } + } +} +func (_this StandardBeacon) ValueToSet(value m_ComAmazonawsDynamodbTypes.AttributeValue, key _dafny.Sequence) m_Wrappers.Result { + { + var _0_valueOrError0 m_Wrappers.Result = func() m_Wrappers.Result { + var _source0 m_ComAmazonawsDynamodbTypes.AttributeValue = value + _ = _source0 + { + if _source0.Is_SS() { + var _1_n _dafny.Sequence = _source0.Get_().(m_ComAmazonawsDynamodbTypes.AttributeValue_SS).SS + _ = _1_n + return (_this).BeaconizeStringSet(_1_n, key, _dafny.SeqOf()) + } + } + { + if _source0.Is_NS() { + var _2_n _dafny.Sequence = _source0.Get_().(m_ComAmazonawsDynamodbTypes.AttributeValue_NS).NS + _ = _2_n + return (_this).BeaconizeNumberSet(_2_n, key, _dafny.SeqOf()) + } + } + { + if _source0.Is_BS() { + var _3_n _dafny.Sequence = _source0.Get_().(m_ComAmazonawsDynamodbTypes.AttributeValue_BS).BS + _ = _3_n + return (_this).BeaconizeBinarySet(_3_n, key, _dafny.SeqOf()) + } + } + { + return m_Wrappers.Companion_Result_.Create_Failure_(m_DynamoDbEncryptionUtil.Companion_Default___.E(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("Beacon "), ((_this).Dtor_base()).Dtor_name()), _dafny.SeqOfString(" has style AsSet, but attribute has type ")), m_DynamoDbEncryptionUtil.Companion_Default___.AttrTypeToStr(value)), _dafny.SeqOfString(".")))) + } + }() + _ = _0_valueOrError0 + if (_0_valueOrError0).IsFailure() { + return (_0_valueOrError0).PropagateFailure() + } else { + var _4_beaconSeq _dafny.Sequence = (_0_valueOrError0).Extract().(_dafny.Sequence) + _ = _4_beaconSeq + return m_Wrappers.Companion_Result_.Create_Success_(m_ComAmazonawsDynamodbTypes.Companion_AttributeValue_.Create_SS_(_4_beaconSeq)) + } + } +} +func (_this StandardBeacon) GetHash(item _dafny.Map, vf _dafny.Map, key _dafny.Sequence) m_Wrappers.Result { + { + if (_this).Dtor_asSet() { + return (_this).GetHashSet(item, key) + } else { + return (_this).GetHashNonSet(item, vf, key) + } + } +} +func (_this StandardBeacon) GetHashSet(item _dafny.Map, key _dafny.Sequence) m_Wrappers.Result { + { + var _0_value m_Wrappers.Option = m_TermLoc.Companion_Default___.TermToAttr((_this).Dtor_loc(), item, m_Wrappers.Companion_Option_.Create_None_()) + _ = _0_value + if (_0_value).Is_None() { + return m_Wrappers.Companion_Result_.Create_Success_(m_Wrappers.Companion_Option_.Create_None_()) + } else { + var _1_valueOrError0 m_Wrappers.Result = (_this).ValueToSet((_0_value).Dtor_value().(m_ComAmazonawsDynamodbTypes.AttributeValue), key) + _ = _1_valueOrError0 + if (_1_valueOrError0).IsFailure() { + return (_1_valueOrError0).PropagateFailure() + } else { + var _2_setValue m_ComAmazonawsDynamodbTypes.AttributeValue = (_1_valueOrError0).Extract().(m_ComAmazonawsDynamodbTypes.AttributeValue) + _ = _2_setValue + return m_Wrappers.Companion_Result_.Create_Success_(m_Wrappers.Companion_Option_.Create_Some_(_2_setValue)) + } + } + } +} +func (_this StandardBeacon) GetHashNonSet(item _dafny.Map, vf _dafny.Map, key _dafny.Sequence) m_Wrappers.Result { + { + var _0_valueOrError0 m_Wrappers.Result = m_DdbVirtualFields.Companion_Default___.VirtToBytes((_this).Dtor_loc(), item, vf) + _ = _0_valueOrError0 + if (_0_valueOrError0).IsFailure() { + return (_0_valueOrError0).PropagateFailure() + } else { + var _1_bytes m_Wrappers.Option = (_0_valueOrError0).Extract().(m_Wrappers.Option) + _ = _1_bytes + if (_1_bytes).Is_None() { + return m_Wrappers.Companion_Result_.Create_Success_(m_Wrappers.Companion_Option_.Create_None_()) + } else { + var _2_valueOrError1 m_Wrappers.Result = (_this).Hash((_1_bytes).Dtor_value().(_dafny.Sequence), key) + _ = _2_valueOrError1 + if (_2_valueOrError1).IsFailure() { + return (_2_valueOrError1).PropagateFailure() + } else { + var _3_res _dafny.Sequence = (_2_valueOrError1).Extract().(_dafny.Sequence) + _ = _3_res + return m_Wrappers.Companion_Result_.Create_Success_(m_Wrappers.Companion_Option_.Create_Some_(m_ComAmazonawsDynamodbTypes.Companion_AttributeValue_.Create_S_(_3_res))) + } + } + } + } +} +func (_this StandardBeacon) GetNaked(item _dafny.Map, vf _dafny.Map) m_Wrappers.Result { + { + return m_DdbVirtualFields.Companion_Default___.VirtToAttr((_this).Dtor_loc(), item, vf) + } +} +func (_this StandardBeacon) GetFields(virtualFields _dafny.Map) _dafny.Sequence { + { + if (virtualFields).Contains((((_this).Dtor_loc()).Select(0).(m_TermLoc.Selector)).Dtor_key()) { + return ((virtualFields).Get((((_this).Dtor_loc()).Select(0).(m_TermLoc.Selector)).Dtor_key()).(m_DdbVirtualFields.VirtField)).GetFields() + } else { + return _dafny.SeqOf((((_this).Dtor_loc()).Select(0).(m_TermLoc.Selector)).Dtor_key()) + } + } +} +func (_this StandardBeacon) BeaconizeStringSet(value _dafny.Sequence, key _dafny.Sequence, converted _dafny.Sequence) m_Wrappers.Result { + { + goto TAIL_CALL_START + TAIL_CALL_START: + if (_dafny.IntOfUint32((value).Cardinality())).Sign() == 0 { + return m_Wrappers.Companion_Result_.Create_Success_(converted) + } else { + var _0_valueOrError0 m_Wrappers.Result = (m_DynamoToStruct.Companion_Default___.TopLevelAttributeToBytes(m_ComAmazonawsDynamodbTypes.Companion_AttributeValue_.Create_S_((value).Select(0).(_dafny.Sequence)))).MapFailure(func(coer88 func(_dafny.Sequence) m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Error) func(interface{}) interface{} { + return func(arg116 interface{}) interface{} { + return coer88(arg116.(_dafny.Sequence)) + } + }((func(_1___this0 StandardBeacon) func(_dafny.Sequence) m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Error { + return func(_2_e _dafny.Sequence) m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Error { + return m_DynamoDbEncryptionUtil.Companion_Default___.E(_2_e) + } + })(_this))) + _ = _0_valueOrError0 + if (_0_valueOrError0).IsFailure() { + return (_0_valueOrError0).PropagateFailure() + } else { + var _3_bytes _dafny.Sequence = (_0_valueOrError0).Extract().(_dafny.Sequence) + _ = _3_bytes + var _4_valueOrError1 m_Wrappers.Result = (_this).Hash(_3_bytes, key) + _ = _4_valueOrError1 + if (_4_valueOrError1).IsFailure() { + return (_4_valueOrError1).PropagateFailure() + } else { + var _5_h _dafny.Sequence = (_4_valueOrError1).Extract().(_dafny.Sequence) + _ = _5_h + if _dafny.Companion_Sequence_.Contains(converted, _5_h) { + var _in0 StandardBeacon = _this + _ = _in0 + var _in1 _dafny.Sequence = (value).Drop(1) + _ = _in1 + var _in2 _dafny.Sequence = key + _ = _in2 + var _in3 _dafny.Sequence = converted + _ = _in3 + _this = _in0 + + value = _in1 + key = _in2 + converted = _in3 + goto TAIL_CALL_START + } else { + var _in4 StandardBeacon = _this + _ = _in4 + var _in5 _dafny.Sequence = (value).Drop(1) + _ = _in5 + var _in6 _dafny.Sequence = key + _ = _in6 + var _in7 _dafny.Sequence = _dafny.Companion_Sequence_.Concatenate(converted, _dafny.SeqOf(_5_h)) + _ = _in7 + _this = _in4 + + value = _in5 + key = _in6 + converted = _in7 + goto TAIL_CALL_START + } + } + } + } + } +} +func (_this StandardBeacon) BeaconizeNumberSet(value _dafny.Sequence, key _dafny.Sequence, converted _dafny.Sequence) m_Wrappers.Result { + { + goto TAIL_CALL_START + TAIL_CALL_START: + if (_dafny.IntOfUint32((value).Cardinality())).Sign() == 0 { + return m_Wrappers.Companion_Result_.Create_Success_(converted) + } else { + var _0_valueOrError0 m_Wrappers.Result = (m_DynamoToStruct.Companion_Default___.TopLevelAttributeToBytes(m_ComAmazonawsDynamodbTypes.Companion_AttributeValue_.Create_N_((value).Select(0).(_dafny.Sequence)))).MapFailure(func(coer89 func(_dafny.Sequence) m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Error) func(interface{}) interface{} { + return func(arg117 interface{}) interface{} { + return coer89(arg117.(_dafny.Sequence)) + } + }((func(_1___this0 StandardBeacon) func(_dafny.Sequence) m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Error { + return func(_2_e _dafny.Sequence) m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Error { + return m_DynamoDbEncryptionUtil.Companion_Default___.E(_2_e) + } + })(_this))) + _ = _0_valueOrError0 + if (_0_valueOrError0).IsFailure() { + return (_0_valueOrError0).PropagateFailure() + } else { + var _3_bytes _dafny.Sequence = (_0_valueOrError0).Extract().(_dafny.Sequence) + _ = _3_bytes + var _4_valueOrError1 m_Wrappers.Result = (_this).Hash(_3_bytes, key) + _ = _4_valueOrError1 + if (_4_valueOrError1).IsFailure() { + return (_4_valueOrError1).PropagateFailure() + } else { + var _5_h _dafny.Sequence = (_4_valueOrError1).Extract().(_dafny.Sequence) + _ = _5_h + if _dafny.Companion_Sequence_.Contains(converted, _5_h) { + var _in0 StandardBeacon = _this + _ = _in0 + var _in1 _dafny.Sequence = (value).Drop(1) + _ = _in1 + var _in2 _dafny.Sequence = key + _ = _in2 + var _in3 _dafny.Sequence = converted + _ = _in3 + _this = _in0 + + value = _in1 + key = _in2 + converted = _in3 + goto TAIL_CALL_START + } else { + var _in4 StandardBeacon = _this + _ = _in4 + var _in5 _dafny.Sequence = (value).Drop(1) + _ = _in5 + var _in6 _dafny.Sequence = key + _ = _in6 + var _in7 _dafny.Sequence = _dafny.Companion_Sequence_.Concatenate(converted, _dafny.SeqOf(_5_h)) + _ = _in7 + _this = _in4 + + value = _in5 + key = _in6 + converted = _in7 + goto TAIL_CALL_START + } + } + } + } + } +} +func (_this StandardBeacon) BeaconizeBinarySet(value _dafny.Sequence, key _dafny.Sequence, converted _dafny.Sequence) m_Wrappers.Result { + { + goto TAIL_CALL_START + TAIL_CALL_START: + if (_dafny.IntOfUint32((value).Cardinality())).Sign() == 0 { + return m_Wrappers.Companion_Result_.Create_Success_(converted) + } else { + var _0_valueOrError0 m_Wrappers.Result = (m_DynamoToStruct.Companion_Default___.TopLevelAttributeToBytes(m_ComAmazonawsDynamodbTypes.Companion_AttributeValue_.Create_B_((value).Select(0).(_dafny.Sequence)))).MapFailure(func(coer90 func(_dafny.Sequence) m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Error) func(interface{}) interface{} { + return func(arg118 interface{}) interface{} { + return coer90(arg118.(_dafny.Sequence)) + } + }((func(_1___this0 StandardBeacon) func(_dafny.Sequence) m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Error { + return func(_2_e _dafny.Sequence) m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Error { + return m_DynamoDbEncryptionUtil.Companion_Default___.E(_2_e) + } + })(_this))) + _ = _0_valueOrError0 + if (_0_valueOrError0).IsFailure() { + return (_0_valueOrError0).PropagateFailure() + } else { + var _3_bytes _dafny.Sequence = (_0_valueOrError0).Extract().(_dafny.Sequence) + _ = _3_bytes + var _4_valueOrError1 m_Wrappers.Result = (_this).Hash(_3_bytes, key) + _ = _4_valueOrError1 + if (_4_valueOrError1).IsFailure() { + return (_4_valueOrError1).PropagateFailure() + } else { + var _5_h _dafny.Sequence = (_4_valueOrError1).Extract().(_dafny.Sequence) + _ = _5_h + if _dafny.Companion_Sequence_.Contains(converted, _5_h) { + var _in0 StandardBeacon = _this + _ = _in0 + var _in1 _dafny.Sequence = (value).Drop(1) + _ = _in1 + var _in2 _dafny.Sequence = key + _ = _in2 + var _in3 _dafny.Sequence = converted + _ = _in3 + _this = _in0 + + value = _in1 + key = _in2 + converted = _in3 + goto TAIL_CALL_START + } else { + var _in4 StandardBeacon = _this + _ = _in4 + var _in5 _dafny.Sequence = (value).Drop(1) + _ = _in5 + var _in6 _dafny.Sequence = key + _ = _in6 + var _in7 _dafny.Sequence = _dafny.Companion_Sequence_.Concatenate(converted, _dafny.SeqOf(_5_h)) + _ = _in7 + _this = _in4 + + value = _in5 + key = _in6 + converted = _in7 + goto TAIL_CALL_START + } + } + } + } + } +} +func (_this StandardBeacon) GetBeaconValue(value m_ComAmazonawsDynamodbTypes.AttributeValue, key _dafny.Sequence, forContains bool) m_Wrappers.Result { + { + if ((((_this).Dtor_asSet()) && (!((value).Is_S()))) && (!((value).Is_N()))) && (!((value).Is_B())) { + return (_this).ValueToSet(value, key) + } else if (forContains) && ((((value).Is_SS()) || ((value).Is_NS())) || ((value).Is_BS())) { + return (_this).ValueToSet(value, key) + } else { + var _0_valueOrError0 m_Wrappers.Result = (m_DynamoToStruct.Companion_Default___.TopLevelAttributeToBytes(value)).MapFailure(func(coer91 func(_dafny.Sequence) m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Error) func(interface{}) interface{} { + return func(arg119 interface{}) interface{} { + return coer91(arg119.(_dafny.Sequence)) + } + }(func(_1_e _dafny.Sequence) m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Error { + return m_DynamoDbEncryptionUtil.Companion_Default___.E(_1_e) + })) + _ = _0_valueOrError0 + if (_0_valueOrError0).IsFailure() { + return (_0_valueOrError0).PropagateFailure() + } else { + var _2_bytes _dafny.Sequence = (_0_valueOrError0).Extract().(_dafny.Sequence) + _ = _2_bytes + var _3_valueOrError1 m_Wrappers.Result = (_this).Hash(_2_bytes, key) + _ = _3_valueOrError1 + if (_3_valueOrError1).IsFailure() { + return (_3_valueOrError1).PropagateFailure() + } else { + var _4_h _dafny.Sequence = (_3_valueOrError1).Extract().(_dafny.Sequence) + _ = _4_h + return m_Wrappers.Companion_Result_.Create_Success_(m_ComAmazonawsDynamodbTypes.Companion_AttributeValue_.Create_S_(_4_h)) + } + } + } + } +} +func (_this StandardBeacon) GetPart(val _dafny.Sequence, key _dafny.Sequence) m_Wrappers.Result { + { + return ((_this).Dtor_base()).Hash(val, key, (_this).Dtor_length()) + } +} + +// End of datatype StandardBeacon diff --git a/releases/go/dynamodb-esdk/BatchExecuteStatementTransform/BatchExecuteStatementTransform.go b/releases/go/dynamodb-esdk/BatchExecuteStatementTransform/BatchExecuteStatementTransform.go new file mode 100644 index 000000000..5be331366 --- /dev/null +++ b/releases/go/dynamodb-esdk/BatchExecuteStatementTransform/BatchExecuteStatementTransform.go @@ -0,0 +1,397 @@ +// Package BatchExecuteStatementTransform +// Dafny module BatchExecuteStatementTransform compiled into Go + +package BatchExecuteStatementTransform + +import ( + os "os" + + m_ComAmazonawsDynamodbTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/dynamodb/ComAmazonawsDynamodbTypes" + m_Com_Amazonaws_Dynamodb "github.com/aws/aws-cryptographic-material-providers-library/releases/go/dynamodb/Com_Amazonaws_Dynamodb" + m_ComAmazonawsKmsTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/kms/ComAmazonawsKmsTypes" + m_Com_Amazonaws_Kms "github.com/aws/aws-cryptographic-material-providers-library/releases/go/kms/Com_Amazonaws_Kms" + m_AlgorithmSuites "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AlgorithmSuites" + m_AwsArnParsing "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsArnParsing" + m_AwsCryptographyKeyStoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyKeyStoreOperations" + m_AwsCryptographyKeyStoreTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyKeyStoreTypes" + m_AwsCryptographyMaterialProvidersOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyMaterialProvidersOperations" + m_AwsCryptographyMaterialProvidersTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyMaterialProvidersTypes" + m_AwsKmsDiscoveryKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsDiscoveryKeyring" + m_AwsKmsEcdhKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsEcdhKeyring" + m_AwsKmsHierarchicalKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsHierarchicalKeyring" + m_AwsKmsKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsKeyring" + m_AwsKmsMrkAreUnique "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkAreUnique" + m_AwsKmsMrkDiscoveryKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkDiscoveryKeyring" + m_AwsKmsMrkKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkKeyring" + m_AwsKmsMrkMatchForDecrypt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkMatchForDecrypt" + m_AwsKmsRsaKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsRsaKeyring" + m_AwsKmsUtils "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsUtils" + m_CMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CMM" + m_CacheConstants "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CacheConstants" + m_CanonicalEncryptionContext "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CanonicalEncryptionContext" + m_Commitment "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Commitment" + m_Constants "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Constants" + m_CreateKeyStoreTable "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CreateKeyStoreTable" + m_CreateKeys "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CreateKeys" + m_DDBKeystoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DDBKeystoreOperations" + m_DefaultCMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DefaultCMM" + m_DefaultClientSupplier "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DefaultClientSupplier" + m_Defaults "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Defaults" + m_DiscoveryMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DiscoveryMultiKeyring" + m_EcdhEdkWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/EcdhEdkWrapping" + m_EdkWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/EdkWrapping" + m_ErrorMessages "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/ErrorMessages" + m_GetKeys "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/GetKeys" + m_IntermediateKeyWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/IntermediateKeyWrapping" + m_KMSKeystoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KMSKeystoreOperations" + m_KeyStore "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KeyStore" + m_KeyStoreErrorMessages "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KeyStoreErrorMessages" + m_Keyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Keyring" + m_KmsArn "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KmsArn" + m_LocalCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/LocalCMC" + m_MaterialProviders "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MaterialProviders" + m_MaterialWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MaterialWrapping" + m_Materials "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Materials" + m_MrkAwareDiscoveryMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MrkAwareDiscoveryMultiKeyring" + m_MrkAwareStrictMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MrkAwareStrictMultiKeyring" + m_MultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MultiKeyring" + m_RawAESKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawAESKeyring" + m_RawECDHKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawECDHKeyring" + m_RawRSAKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawRSAKeyring" + m_RequiredEncryptionContextCMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RequiredEncryptionContextCMM" + m_StormTracker "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StormTracker" + m_StormTrackingCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StormTrackingCMC" + m_StrictMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StrictMultiKeyring" + m_Structure "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Structure" + m_SynchronizedLocalCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/SynchronizedLocalCMC" + m_Utils "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Utils" + m_AtomicPrimitives "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AtomicPrimitives" + m_AwsCryptographyPrimitivesOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AwsCryptographyPrimitivesOperations" + m_AwsCryptographyPrimitivesTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AwsCryptographyPrimitivesTypes" + m_Digest "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/Digest" + m_HKDF "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/HKDF" + m_KdfCtr "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/KdfCtr" + m_Random "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/Random" + m_WrappedHKDF "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/WrappedHKDF" + m_WrappedHMAC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/WrappedHMAC" + m_Actions "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Actions" + m_Base64 "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Base64" + m_Base64Lemmas "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Base64Lemmas" + m_BoundedInts "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/BoundedInts" + m_DivInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivInternals" + m_DivInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivInternalsNonlinear" + m_DivMod "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivMod" + m_FileIO "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/FileIO" + m_FloatCompare "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/FloatCompare" + m_Functions "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Functions" + m_GeneralInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/GeneralInternals" + m_GetOpt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/GetOpt" + m_HexStrings "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/HexStrings" + m_Logarithm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Logarithm" + m__Math "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Math_" + m_ModInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/ModInternals" + m_ModInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/ModInternalsNonlinear" + m_Mul "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Mul" + m_MulInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/MulInternals" + m_MulInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/MulInternalsNonlinear" + m_Power "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Power" + m_Relations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Relations" + m_Seq "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Seq" + m_Seq_MergeSort "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Seq_MergeSort" + m_Sorting "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Sorting" + m_StandardLibrary "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary" + m_StandardLibraryInterop "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibraryInterop" + m_StandardLibrary_MemoryMath "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_MemoryMath" + m_StandardLibrary_Sequence "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_Sequence" + m_StandardLibrary_String "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_String" + m_StandardLibrary_UInt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_UInt" + m_Streams "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Streams" + m_UnicodeStrings "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/UnicodeStrings" + m__Unicode "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Unicode_" + m_Utf16EncodingForm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Utf16EncodingForm" + m_Utf8EncodingForm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Utf8EncodingForm" + m_Wrappers "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Wrappers" + m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations" + m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes" + m_AwsCryptographyDbEncryptionSdkDynamoDbOperations "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbOperations" + m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes" + m_AwsCryptographyDbEncryptionSdkDynamoDbTypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbTypes" + m_AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations" + m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes" + m_BaseBeacon "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/BaseBeacon" + m_BatchGetItemTransform "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/BatchGetItemTransform" + m_BatchWriteItemTransform "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/BatchWriteItemTransform" + m_Canonize "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/Canonize" + m_CompoundBeacon "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/CompoundBeacon" + m_DdbMiddlewareConfig "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DdbMiddlewareConfig" + m_DdbStatement "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DdbStatement" + m_DdbVirtualFields "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DdbVirtualFields" + m_DeleteItemTransform "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DeleteItemTransform" + m_DynamoDBFilterExpr "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDBFilterExpr" + m_DynamoDBSupport "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDBSupport" + m_DynamoDbEncryption "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbEncryption" + m_DynamoDbEncryptionBranchKeyIdSupplier "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbEncryptionBranchKeyIdSupplier" + m_DynamoDbEncryptionUtil "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbEncryptionUtil" + m_DynamoDbItemEncryptor "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbItemEncryptor" + m_DynamoDbItemEncryptorUtil "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbItemEncryptorUtil" + m_DynamoDbMiddlewareSupport "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbMiddlewareSupport" + m_DynamoDbNormalizeNumber "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbNormalizeNumber" + m_DynamoDbUpdateExpr "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbUpdateExpr" + m_DynamoToStruct "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoToStruct" + m_ExecuteStatementTransform "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/ExecuteStatementTransform" + m_GetItemTransform "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/GetItemTransform" + m_InternalLegacyOverride "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/InternalLegacyOverride" + m__Maps "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/Maps_" + m_OptimizedMergeSort "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/OptimizedMergeSort" + m_PutItemTransform "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/PutItemTransform" + m_QueryTransform "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/QueryTransform" + m_ScanTransform "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/ScanTransform" + m_SearchConfigToInfo "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/SearchConfigToInfo" + m_SearchableEncryptionInfo "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/SearchableEncryptionInfo" + m_Sets "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/Sets" + m_SortCanon "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/SortCanon" + m_StructuredEncryption "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryption" + m_StructuredEncryptionCrypt "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionCrypt" + m_StructuredEncryptionFooter "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionFooter" + m_StructuredEncryptionHeader "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionHeader" + m_StructuredEncryptionPaths "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionPaths" + m_StructuredEncryptionUtil "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionUtil" + m_TermLoc "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/TermLoc" + m_TransactGetItemsTransform "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/TransactGetItemsTransform" + m_TransactWriteItemsTransform "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/TransactWriteItemsTransform" + m_UpdateItemTransform "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/UpdateItemTransform" + m__System "github.com/dafny-lang/DafnyRuntimeGo/v4/System_" + _dafny "github.com/dafny-lang/DafnyRuntimeGo/v4/dafny" +) + +var _ = os.Args +var _ _dafny.Dummy__ +var _ m__System.Dummy__ +var _ m_Wrappers.Dummy__ +var _ m_BoundedInts.Dummy__ +var _ m_StandardLibrary_UInt.Dummy__ +var _ m_StandardLibrary_MemoryMath.Dummy__ +var _ m_StandardLibrary_Sequence.Dummy__ +var _ m_StandardLibrary_String.Dummy__ +var _ m_StandardLibrary.Dummy__ +var _ m_AwsCryptographyPrimitivesTypes.Dummy__ +var _ m_Random.Dummy__ +var _ m_Digest.Dummy__ +var _ m_WrappedHMAC.Dummy__ +var _ m_HKDF.Dummy__ +var _ m_WrappedHKDF.Dummy__ +var _ m_KdfCtr.Dummy__ +var _ m_AwsCryptographyPrimitivesOperations.Dummy__ +var _ m_AtomicPrimitives.Dummy__ +var _ m_ComAmazonawsDynamodbTypes.Dummy__ +var _ m_ComAmazonawsKmsTypes.Dummy__ +var _ m_AwsCryptographyKeyStoreTypes.Dummy__ +var _ m_AwsCryptographyMaterialProvidersTypes.Dummy__ +var _ m_Base64.Dummy__ +var _ m_AlgorithmSuites.Dummy__ +var _ m_Materials.Dummy__ +var _ m_Keyring.Dummy__ +var _ m_Relations.Dummy__ +var _ m_Seq_MergeSort.Dummy__ +var _ m__Math.Dummy__ +var _ m_Seq.Dummy__ +var _ m_Actions.Dummy__ +var _ m_CanonicalEncryptionContext.Dummy__ +var _ m_MaterialWrapping.Dummy__ +var _ m_IntermediateKeyWrapping.Dummy__ +var _ m_EdkWrapping.Dummy__ +var _ m_ErrorMessages.Dummy__ +var _ m_RawAESKeyring.Dummy__ +var _ m_AwsArnParsing.Dummy__ +var _ m_Constants.Dummy__ +var _ m_EcdhEdkWrapping.Dummy__ +var _ m_RawECDHKeyring.Dummy__ +var _ m_RawRSAKeyring.Dummy__ +var _ m_AwsKmsMrkMatchForDecrypt.Dummy__ +var _ m_AwsKmsUtils.Dummy__ +var _ m_AwsKmsKeyring.Dummy__ +var _ m_AwsKmsDiscoveryKeyring.Dummy__ +var _ m_AwsKmsEcdhKeyring.Dummy__ +var _ m_FileIO.Dummy__ +var _ m_LocalCMC.Dummy__ +var _ m_SynchronizedLocalCMC.Dummy__ +var _ m_StormTracker.Dummy__ +var _ m_StormTrackingCMC.Dummy__ +var _ m_CacheConstants.Dummy__ +var _ m_AwsKmsHierarchicalKeyring.Dummy__ +var _ m_AwsKmsMrkDiscoveryKeyring.Dummy__ +var _ m_AwsKmsMrkKeyring.Dummy__ +var _ m_AwsKmsRsaKeyring.Dummy__ +var _ m_MultiKeyring.Dummy__ +var _ m_AwsKmsMrkAreUnique.Dummy__ +var _ m_StrictMultiKeyring.Dummy__ +var _ m_Com_Amazonaws_Kms.Dummy__ +var _ m_Com_Amazonaws_Dynamodb.Dummy__ +var _ m_DiscoveryMultiKeyring.Dummy__ +var _ m_MrkAwareDiscoveryMultiKeyring.Dummy__ +var _ m_MrkAwareStrictMultiKeyring.Dummy__ +var _ m_CMM.Dummy__ +var _ m_Defaults.Dummy__ +var _ m_Commitment.Dummy__ +var _ m_DefaultCMM.Dummy__ +var _ m_DefaultClientSupplier.Dummy__ +var _ m_Utils.Dummy__ +var _ m_RequiredEncryptionContextCMM.Dummy__ +var _ m_AwsCryptographyMaterialProvidersOperations.Dummy__ +var _ m_MaterialProviders.Dummy__ +var _ m_KeyStoreErrorMessages.Dummy__ +var _ m_KmsArn.Dummy__ +var _ m_Structure.Dummy__ +var _ m_KMSKeystoreOperations.Dummy__ +var _ m_DDBKeystoreOperations.Dummy__ +var _ m_CreateKeys.Dummy__ +var _ m_CreateKeyStoreTable.Dummy__ +var _ m_GetKeys.Dummy__ +var _ m_AwsCryptographyKeyStoreOperations.Dummy__ +var _ m_KeyStore.Dummy__ +var _ m__Unicode.Dummy__ +var _ m_Functions.Dummy__ +var _ m_Utf8EncodingForm.Dummy__ +var _ m_Utf16EncodingForm.Dummy__ +var _ m_UnicodeStrings.Dummy__ +var _ m_GeneralInternals.Dummy__ +var _ m_MulInternalsNonlinear.Dummy__ +var _ m_MulInternals.Dummy__ +var _ m_Mul.Dummy__ +var _ m_ModInternalsNonlinear.Dummy__ +var _ m_DivInternalsNonlinear.Dummy__ +var _ m_ModInternals.Dummy__ +var _ m_DivInternals.Dummy__ +var _ m_DivMod.Dummy__ +var _ m_Power.Dummy__ +var _ m_Logarithm.Dummy__ +var _ m_StandardLibraryInterop.Dummy__ +var _ m_Streams.Dummy__ +var _ m_Sorting.Dummy__ +var _ m_HexStrings.Dummy__ +var _ m_GetOpt.Dummy__ +var _ m_FloatCompare.Dummy__ +var _ m_Base64Lemmas.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Dummy__ +var _ m_StructuredEncryptionUtil.Dummy__ +var _ m_Sets.Dummy__ +var _ m_StructuredEncryptionPaths.Dummy__ +var _ m_StructuredEncryptionHeader.Dummy__ +var _ m_StructuredEncryptionFooter.Dummy__ +var _ m_OptimizedMergeSort.Dummy__ +var _ m_SortCanon.Dummy__ +var _ m_Canonize.Dummy__ +var _ m_StructuredEncryptionCrypt.Dummy__ +var _ m__Maps.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations.Dummy__ +var _ m_StructuredEncryption.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Dummy__ +var _ m_DynamoDbEncryptionUtil.Dummy__ +var _ m_DynamoDbNormalizeNumber.Dummy__ +var _ m_DynamoToStruct.Dummy__ +var _ m_DynamoDbItemEncryptorUtil.Dummy__ +var _ m_InternalLegacyOverride.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations.Dummy__ +var _ m_DynamoDbItemEncryptor.Dummy__ +var _ m_DynamoDbEncryptionBranchKeyIdSupplier.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbOperations.Dummy__ +var _ m_DynamoDbEncryption.Dummy__ +var _ m_TermLoc.Dummy__ +var _ m_DdbVirtualFields.Dummy__ +var _ m_DynamoDbUpdateExpr.Dummy__ +var _ m_BaseBeacon.Dummy__ +var _ m_CompoundBeacon.Dummy__ +var _ m_SearchableEncryptionInfo.Dummy__ +var _ m_DynamoDBFilterExpr.Dummy__ +var _ m_DynamoDBSupport.Dummy__ +var _ m_SearchConfigToInfo.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Dummy__ +var _ m_DdbMiddlewareConfig.Dummy__ +var _ m_DdbStatement.Dummy__ +var _ m_DynamoDbMiddlewareSupport.Dummy__ +var _ m_PutItemTransform.Dummy__ +var _ m_GetItemTransform.Dummy__ +var _ m_UpdateItemTransform.Dummy__ +var _ m_BatchWriteItemTransform.Dummy__ +var _ m_TransactWriteItemsTransform.Dummy__ +var _ m_BatchGetItemTransform.Dummy__ +var _ m_ScanTransform.Dummy__ +var _ m_QueryTransform.Dummy__ +var _ m_TransactGetItemsTransform.Dummy__ +var _ m_DeleteItemTransform.Dummy__ +var _ m_ExecuteStatementTransform.Dummy__ + +type Dummy__ struct{} + +// Definition of class Default__ +type Default__ struct { + dummy byte +} + +func New_Default___() *Default__ { + _this := Default__{} + + return &_this +} + +type CompanionStruct_Default___ struct { +} + +var Companion_Default___ = CompanionStruct_Default___{} + +func (_this *Default__) Equals(other *Default__) bool { + return _this == other +} + +func (_this *Default__) EqualsGeneric(x interface{}) bool { + other, ok := x.(*Default__) + return ok && _this.Equals(other) +} + +func (*Default__) String() string { + return "BatchExecuteStatementTransform.Default__" +} +func (_this *Default__) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = &Default__{} + +func (_static *CompanionStruct_Default___) Input(config m_DdbMiddlewareConfig.Config, input m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.BatchExecuteStatementInputTransformInput) m_Wrappers.Result { + var output m_Wrappers.Result = m_Wrappers.Result{} + _ = output + var _hi0 _dafny.Int = _dafny.IntOfUint32((((input).Dtor_sdkInput()).Dtor_Statements()).Cardinality()) + _ = _hi0 + for _0_i := _dafny.Zero; _0_i.Cmp(_hi0) < 0; _0_i = _0_i.Plus(_dafny.One) { + var _1_statement _dafny.Sequence + _ = _1_statement + _1_statement = ((((input).Dtor_sdkInput()).Dtor_Statements()).Select((_0_i).Uint32()).(m_ComAmazonawsDynamodbTypes.BatchStatementRequest)).Dtor_Statement() + var _2_valueOrError0 m_Wrappers.Result = m_Wrappers.Result{} + _ = _2_valueOrError0 + _2_valueOrError0 = m_DdbMiddlewareConfig.Companion_Default___.MapString(m_DdbStatement.Companion_Default___.TableFromStatement(_1_statement)) + if (_2_valueOrError0).IsFailure() { + output = (_2_valueOrError0).PropagateFailure() + return output + } + var _3_tableName _dafny.Sequence + _ = _3_tableName + _3_tableName = (_2_valueOrError0).Extract().(_dafny.Sequence) + if ((config).Dtor_tableEncryptionConfigs()).Contains(_3_tableName) { + output = m_DdbMiddlewareConfig.Companion_Default___.MakeError(_dafny.SeqOfString("BatchExecuteStatement not Supported on encrypted tables.")) + return output + } + } + output = m_Wrappers.Companion_Result_.Create_Success_(m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_BatchExecuteStatementInputTransformOutput_.Create_BatchExecuteStatementInputTransformOutput_((input).Dtor_sdkInput())) + return output + return output +} +func (_static *CompanionStruct_Default___) Output(config m_DdbMiddlewareConfig.Config, input m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.BatchExecuteStatementOutputTransformInput) m_Wrappers.Result { + var output m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_BatchExecuteStatementOutputTransformOutput_.Default()) + _ = output + output = m_Wrappers.Companion_Result_.Create_Success_(m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_BatchExecuteStatementOutputTransformOutput_.Create_BatchExecuteStatementOutputTransformOutput_((input).Dtor_sdkOutput())) + return output + return output +} + +// End of class Default__ diff --git a/releases/go/dynamodb-esdk/BatchGetItemTransform/BatchGetItemTransform.go b/releases/go/dynamodb-esdk/BatchGetItemTransform/BatchGetItemTransform.go new file mode 100644 index 000000000..47938c7f1 --- /dev/null +++ b/releases/go/dynamodb-esdk/BatchGetItemTransform/BatchGetItemTransform.go @@ -0,0 +1,445 @@ +// Package BatchGetItemTransform +// Dafny module BatchGetItemTransform compiled into Go + +package BatchGetItemTransform + +import ( + os "os" + + m_ComAmazonawsDynamodbTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/dynamodb/ComAmazonawsDynamodbTypes" + m_Com_Amazonaws_Dynamodb "github.com/aws/aws-cryptographic-material-providers-library/releases/go/dynamodb/Com_Amazonaws_Dynamodb" + m_ComAmazonawsKmsTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/kms/ComAmazonawsKmsTypes" + m_Com_Amazonaws_Kms "github.com/aws/aws-cryptographic-material-providers-library/releases/go/kms/Com_Amazonaws_Kms" + m_AlgorithmSuites "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AlgorithmSuites" + m_AwsArnParsing "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsArnParsing" + m_AwsCryptographyKeyStoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyKeyStoreOperations" + m_AwsCryptographyKeyStoreTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyKeyStoreTypes" + m_AwsCryptographyMaterialProvidersOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyMaterialProvidersOperations" + m_AwsCryptographyMaterialProvidersTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyMaterialProvidersTypes" + m_AwsKmsDiscoveryKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsDiscoveryKeyring" + m_AwsKmsEcdhKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsEcdhKeyring" + m_AwsKmsHierarchicalKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsHierarchicalKeyring" + m_AwsKmsKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsKeyring" + m_AwsKmsMrkAreUnique "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkAreUnique" + m_AwsKmsMrkDiscoveryKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkDiscoveryKeyring" + m_AwsKmsMrkKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkKeyring" + m_AwsKmsMrkMatchForDecrypt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkMatchForDecrypt" + m_AwsKmsRsaKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsRsaKeyring" + m_AwsKmsUtils "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsUtils" + m_CMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CMM" + m_CacheConstants "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CacheConstants" + m_CanonicalEncryptionContext "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CanonicalEncryptionContext" + m_Commitment "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Commitment" + m_Constants "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Constants" + m_CreateKeyStoreTable "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CreateKeyStoreTable" + m_CreateKeys "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CreateKeys" + m_DDBKeystoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DDBKeystoreOperations" + m_DefaultCMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DefaultCMM" + m_DefaultClientSupplier "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DefaultClientSupplier" + m_Defaults "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Defaults" + m_DiscoveryMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DiscoveryMultiKeyring" + m_EcdhEdkWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/EcdhEdkWrapping" + m_EdkWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/EdkWrapping" + m_ErrorMessages "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/ErrorMessages" + m_GetKeys "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/GetKeys" + m_IntermediateKeyWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/IntermediateKeyWrapping" + m_KMSKeystoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KMSKeystoreOperations" + m_KeyStore "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KeyStore" + m_KeyStoreErrorMessages "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KeyStoreErrorMessages" + m_Keyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Keyring" + m_KmsArn "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KmsArn" + m_LocalCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/LocalCMC" + m_MaterialProviders "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MaterialProviders" + m_MaterialWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MaterialWrapping" + m_Materials "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Materials" + m_MrkAwareDiscoveryMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MrkAwareDiscoveryMultiKeyring" + m_MrkAwareStrictMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MrkAwareStrictMultiKeyring" + m_MultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MultiKeyring" + m_RawAESKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawAESKeyring" + m_RawECDHKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawECDHKeyring" + m_RawRSAKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawRSAKeyring" + m_RequiredEncryptionContextCMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RequiredEncryptionContextCMM" + m_StormTracker "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StormTracker" + m_StormTrackingCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StormTrackingCMC" + m_StrictMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StrictMultiKeyring" + m_Structure "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Structure" + m_SynchronizedLocalCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/SynchronizedLocalCMC" + m_Utils "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Utils" + m_AtomicPrimitives "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AtomicPrimitives" + m_AwsCryptographyPrimitivesOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AwsCryptographyPrimitivesOperations" + m_AwsCryptographyPrimitivesTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AwsCryptographyPrimitivesTypes" + m_Digest "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/Digest" + m_HKDF "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/HKDF" + m_KdfCtr "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/KdfCtr" + m_Random "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/Random" + m_WrappedHKDF "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/WrappedHKDF" + m_WrappedHMAC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/WrappedHMAC" + m_Actions "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Actions" + m_Base64 "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Base64" + m_Base64Lemmas "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Base64Lemmas" + m_BoundedInts "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/BoundedInts" + m_DivInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivInternals" + m_DivInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivInternalsNonlinear" + m_DivMod "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivMod" + m_FileIO "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/FileIO" + m_FloatCompare "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/FloatCompare" + m_Functions "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Functions" + m_GeneralInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/GeneralInternals" + m_GetOpt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/GetOpt" + m_HexStrings "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/HexStrings" + m_Logarithm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Logarithm" + m__Math "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Math_" + m_ModInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/ModInternals" + m_ModInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/ModInternalsNonlinear" + m_Mul "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Mul" + m_MulInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/MulInternals" + m_MulInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/MulInternalsNonlinear" + m_Power "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Power" + m_Relations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Relations" + m_Seq "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Seq" + m_Seq_MergeSort "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Seq_MergeSort" + m_SortedSets "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/SortedSets" + m_Sorting "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Sorting" + m_StandardLibrary "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary" + m_StandardLibraryInterop "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibraryInterop" + m_StandardLibrary_MemoryMath "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_MemoryMath" + m_StandardLibrary_Sequence "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_Sequence" + m_StandardLibrary_String "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_String" + m_StandardLibrary_UInt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_UInt" + m_Streams "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Streams" + m_UnicodeStrings "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/UnicodeStrings" + m__Unicode "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Unicode_" + m_Utf16EncodingForm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Utf16EncodingForm" + m_Utf8EncodingForm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Utf8EncodingForm" + m_Wrappers "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Wrappers" + m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations" + m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes" + m_AwsCryptographyDbEncryptionSdkDynamoDbOperations "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbOperations" + m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes" + m_AwsCryptographyDbEncryptionSdkDynamoDbTypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbTypes" + m_AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations" + m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes" + m_BaseBeacon "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/BaseBeacon" + m_BatchWriteItemTransform "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/BatchWriteItemTransform" + m_Canonize "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/Canonize" + m_CompoundBeacon "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/CompoundBeacon" + m_DdbMiddlewareConfig "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DdbMiddlewareConfig" + m_DdbStatement "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DdbStatement" + m_DdbVirtualFields "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DdbVirtualFields" + m_DynamoDBFilterExpr "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDBFilterExpr" + m_DynamoDBSupport "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDBSupport" + m_DynamoDbEncryption "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbEncryption" + m_DynamoDbEncryptionBranchKeyIdSupplier "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbEncryptionBranchKeyIdSupplier" + m_DynamoDbEncryptionUtil "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbEncryptionUtil" + m_DynamoDbItemEncryptor "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbItemEncryptor" + m_DynamoDbItemEncryptorUtil "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbItemEncryptorUtil" + m_DynamoDbMiddlewareSupport "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbMiddlewareSupport" + m_DynamoDbNormalizeNumber "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbNormalizeNumber" + m_DynamoDbUpdateExpr "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbUpdateExpr" + m_DynamoToStruct "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoToStruct" + m_GetItemTransform "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/GetItemTransform" + m_InternalLegacyOverride "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/InternalLegacyOverride" + m__Maps "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/Maps_" + m_OptimizedMergeSort "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/OptimizedMergeSort" + m_PutItemTransform "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/PutItemTransform" + m_SearchConfigToInfo "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/SearchConfigToInfo" + m_SearchableEncryptionInfo "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/SearchableEncryptionInfo" + m_Sets "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/Sets" + m_SortCanon "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/SortCanon" + m_StructuredEncryption "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryption" + m_StructuredEncryptionCrypt "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionCrypt" + m_StructuredEncryptionFooter "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionFooter" + m_StructuredEncryptionHeader "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionHeader" + m_StructuredEncryptionPaths "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionPaths" + m_StructuredEncryptionUtil "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionUtil" + m_TermLoc "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/TermLoc" + m_TransactWriteItemsTransform "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/TransactWriteItemsTransform" + m_UpdateItemTransform "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/UpdateItemTransform" + m__System "github.com/dafny-lang/DafnyRuntimeGo/v4/System_" + _dafny "github.com/dafny-lang/DafnyRuntimeGo/v4/dafny" +) + +var _ = os.Args +var _ _dafny.Dummy__ +var _ m__System.Dummy__ +var _ m_Wrappers.Dummy__ +var _ m_BoundedInts.Dummy__ +var _ m_StandardLibrary_UInt.Dummy__ +var _ m_StandardLibrary_MemoryMath.Dummy__ +var _ m_StandardLibrary_Sequence.Dummy__ +var _ m_StandardLibrary_String.Dummy__ +var _ m_StandardLibrary.Dummy__ +var _ m_AwsCryptographyPrimitivesTypes.Dummy__ +var _ m_Random.Dummy__ +var _ m_Digest.Dummy__ +var _ m_WrappedHMAC.Dummy__ +var _ m_HKDF.Dummy__ +var _ m_WrappedHKDF.Dummy__ +var _ m_KdfCtr.Dummy__ +var _ m_AwsCryptographyPrimitivesOperations.Dummy__ +var _ m_AtomicPrimitives.Dummy__ +var _ m_ComAmazonawsDynamodbTypes.Dummy__ +var _ m_ComAmazonawsKmsTypes.Dummy__ +var _ m_AwsCryptographyKeyStoreTypes.Dummy__ +var _ m_AwsCryptographyMaterialProvidersTypes.Dummy__ +var _ m_Base64.Dummy__ +var _ m_AlgorithmSuites.Dummy__ +var _ m_Materials.Dummy__ +var _ m_Keyring.Dummy__ +var _ m_Relations.Dummy__ +var _ m_Seq_MergeSort.Dummy__ +var _ m__Math.Dummy__ +var _ m_Seq.Dummy__ +var _ m_Actions.Dummy__ +var _ m_CanonicalEncryptionContext.Dummy__ +var _ m_MaterialWrapping.Dummy__ +var _ m_IntermediateKeyWrapping.Dummy__ +var _ m_EdkWrapping.Dummy__ +var _ m_ErrorMessages.Dummy__ +var _ m_RawAESKeyring.Dummy__ +var _ m_AwsArnParsing.Dummy__ +var _ m_Constants.Dummy__ +var _ m_EcdhEdkWrapping.Dummy__ +var _ m_RawECDHKeyring.Dummy__ +var _ m_RawRSAKeyring.Dummy__ +var _ m_AwsKmsMrkMatchForDecrypt.Dummy__ +var _ m_AwsKmsUtils.Dummy__ +var _ m_AwsKmsKeyring.Dummy__ +var _ m_AwsKmsDiscoveryKeyring.Dummy__ +var _ m_AwsKmsEcdhKeyring.Dummy__ +var _ m_FileIO.Dummy__ +var _ m_LocalCMC.Dummy__ +var _ m_SynchronizedLocalCMC.Dummy__ +var _ m_StormTracker.Dummy__ +var _ m_StormTrackingCMC.Dummy__ +var _ m_CacheConstants.Dummy__ +var _ m_AwsKmsHierarchicalKeyring.Dummy__ +var _ m_AwsKmsMrkDiscoveryKeyring.Dummy__ +var _ m_AwsKmsMrkKeyring.Dummy__ +var _ m_AwsKmsRsaKeyring.Dummy__ +var _ m_MultiKeyring.Dummy__ +var _ m_AwsKmsMrkAreUnique.Dummy__ +var _ m_StrictMultiKeyring.Dummy__ +var _ m_Com_Amazonaws_Kms.Dummy__ +var _ m_Com_Amazonaws_Dynamodb.Dummy__ +var _ m_DiscoveryMultiKeyring.Dummy__ +var _ m_MrkAwareDiscoveryMultiKeyring.Dummy__ +var _ m_MrkAwareStrictMultiKeyring.Dummy__ +var _ m_CMM.Dummy__ +var _ m_Defaults.Dummy__ +var _ m_Commitment.Dummy__ +var _ m_DefaultCMM.Dummy__ +var _ m_DefaultClientSupplier.Dummy__ +var _ m_Utils.Dummy__ +var _ m_RequiredEncryptionContextCMM.Dummy__ +var _ m_AwsCryptographyMaterialProvidersOperations.Dummy__ +var _ m_MaterialProviders.Dummy__ +var _ m_KeyStoreErrorMessages.Dummy__ +var _ m_KmsArn.Dummy__ +var _ m_Structure.Dummy__ +var _ m_KMSKeystoreOperations.Dummy__ +var _ m_DDBKeystoreOperations.Dummy__ +var _ m_CreateKeys.Dummy__ +var _ m_CreateKeyStoreTable.Dummy__ +var _ m_GetKeys.Dummy__ +var _ m_AwsCryptographyKeyStoreOperations.Dummy__ +var _ m_KeyStore.Dummy__ +var _ m__Unicode.Dummy__ +var _ m_Functions.Dummy__ +var _ m_Utf8EncodingForm.Dummy__ +var _ m_Utf16EncodingForm.Dummy__ +var _ m_UnicodeStrings.Dummy__ +var _ m_GeneralInternals.Dummy__ +var _ m_MulInternalsNonlinear.Dummy__ +var _ m_MulInternals.Dummy__ +var _ m_Mul.Dummy__ +var _ m_ModInternalsNonlinear.Dummy__ +var _ m_DivInternalsNonlinear.Dummy__ +var _ m_ModInternals.Dummy__ +var _ m_DivInternals.Dummy__ +var _ m_DivMod.Dummy__ +var _ m_Power.Dummy__ +var _ m_Logarithm.Dummy__ +var _ m_StandardLibraryInterop.Dummy__ +var _ m_Streams.Dummy__ +var _ m_Sorting.Dummy__ +var _ m_HexStrings.Dummy__ +var _ m_GetOpt.Dummy__ +var _ m_FloatCompare.Dummy__ +var _ m_Base64Lemmas.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Dummy__ +var _ m_StructuredEncryptionUtil.Dummy__ +var _ m_Sets.Dummy__ +var _ m_StructuredEncryptionPaths.Dummy__ +var _ m_StructuredEncryptionHeader.Dummy__ +var _ m_StructuredEncryptionFooter.Dummy__ +var _ m_OptimizedMergeSort.Dummy__ +var _ m_SortCanon.Dummy__ +var _ m_Canonize.Dummy__ +var _ m_StructuredEncryptionCrypt.Dummy__ +var _ m__Maps.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations.Dummy__ +var _ m_StructuredEncryption.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Dummy__ +var _ m_DynamoDbEncryptionUtil.Dummy__ +var _ m_DynamoDbNormalizeNumber.Dummy__ +var _ m_DynamoToStruct.Dummy__ +var _ m_DynamoDbItemEncryptorUtil.Dummy__ +var _ m_InternalLegacyOverride.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations.Dummy__ +var _ m_DynamoDbItemEncryptor.Dummy__ +var _ m_DynamoDbEncryptionBranchKeyIdSupplier.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbOperations.Dummy__ +var _ m_DynamoDbEncryption.Dummy__ +var _ m_TermLoc.Dummy__ +var _ m_DdbVirtualFields.Dummy__ +var _ m_DynamoDbUpdateExpr.Dummy__ +var _ m_BaseBeacon.Dummy__ +var _ m_CompoundBeacon.Dummy__ +var _ m_SearchableEncryptionInfo.Dummy__ +var _ m_DynamoDBFilterExpr.Dummy__ +var _ m_DynamoDBSupport.Dummy__ +var _ m_SearchConfigToInfo.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Dummy__ +var _ m_DdbMiddlewareConfig.Dummy__ +var _ m_DdbStatement.Dummy__ +var _ m_DynamoDbMiddlewareSupport.Dummy__ +var _ m_PutItemTransform.Dummy__ +var _ m_GetItemTransform.Dummy__ +var _ m_UpdateItemTransform.Dummy__ +var _ m_BatchWriteItemTransform.Dummy__ +var _ m_TransactWriteItemsTransform.Dummy__ + +type Dummy__ struct{} + +// Definition of class Default__ +type Default__ struct { + dummy byte +} + +func New_Default___() *Default__ { + _this := Default__{} + + return &_this +} + +type CompanionStruct_Default___ struct { +} + +var Companion_Default___ = CompanionStruct_Default___{} + +func (_this *Default__) Equals(other *Default__) bool { + return _this == other +} + +func (_this *Default__) EqualsGeneric(x interface{}) bool { + other, ok := x.(*Default__) + return ok && _this.Equals(other) +} + +func (*Default__) String() string { + return "BatchGetItemTransform.Default__" +} +func (_this *Default__) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = &Default__{} + +func (_static *CompanionStruct_Default___) Input(config m_DdbMiddlewareConfig.Config, input m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.BatchGetItemInputTransformInput) m_Wrappers.Result { + var output m_Wrappers.Result = m_Wrappers.Result{} + _ = output + output = m_Wrappers.Companion_Result_.Create_Success_(m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_BatchGetItemInputTransformOutput_.Create_BatchGetItemInputTransformOutput_((input).Dtor_sdkInput())) + return output + return output +} +func (_static *CompanionStruct_Default___) Output(config m_DdbMiddlewareConfig.Config, input m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.BatchGetItemOutputTransformInput) m_Wrappers.Result { + var output m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_BatchGetItemOutputTransformOutput_.Default()) + _ = output + if m_DynamoDbMiddlewareSupport.Companion_Default___.NoMap(((input).Dtor_sdkOutput()).Dtor_Responses()) { + output = m_Wrappers.Companion_Result_.Create_Success_(m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_BatchGetItemOutputTransformOutput_.Create_BatchGetItemOutputTransformOutput_((input).Dtor_sdkOutput())) + return output + } + var _0_tableNames _dafny.Set + _ = _0_tableNames + _0_tableNames = ((((input).Dtor_sdkOutput()).Dtor_Responses()).Dtor_value().(_dafny.Map)).Keys() + var _1_tableNamesSeq _dafny.Sequence + _ = _1_tableNamesSeq + var _out0 _dafny.Sequence + _ = _out0 + _out0 = m_SortedSets.SetToSequence(_0_tableNames) + _1_tableNamesSeq = _out0 + var _2_i _dafny.Int + _ = _2_i + _2_i = _dafny.Zero + var _3_result _dafny.Map + _ = _3_result + _3_result = _dafny.NewMapBuilder().ToMap() + for (_2_i).Cmp(_dafny.IntOfUint32((_1_tableNamesSeq).Cardinality())) < 0 { + var _4_tableName _dafny.Sequence + _ = _4_tableName + _4_tableName = (_1_tableNamesSeq).Select((_2_i).Uint32()).(_dafny.Sequence) + var _5_responses _dafny.Sequence + _ = _5_responses + _5_responses = ((((input).Dtor_sdkOutput()).Dtor_Responses()).Dtor_value().(_dafny.Map)).Get(_4_tableName).(_dafny.Sequence) + if ((config).Dtor_tableEncryptionConfigs()).Contains(_4_tableName) { + var _6_tableConfig m_DdbMiddlewareConfig.TableConfig + _ = _6_tableConfig + _6_tableConfig = ((config).Dtor_tableEncryptionConfigs()).Get(_4_tableName).(m_DdbMiddlewareConfig.TableConfig) + var _7_decryptedItem _dafny.Sequence + _ = _7_decryptedItem + _7_decryptedItem = _dafny.SeqOf() + var _hi0 _dafny.Int = _dafny.IntOfUint32((_5_responses).Cardinality()) + _ = _hi0 + for _8_x := _dafny.Zero; _8_x.Cmp(_hi0) < 0; _8_x = _8_x.Plus(_dafny.One) { + var _9_decryptRes m_Wrappers.Result + _ = _9_decryptRes + var _out1 m_Wrappers.Result + _ = _out1 + _out1 = ((_6_tableConfig).Dtor_itemEncryptor()).DecryptItem(m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Companion_DecryptItemInput_.Create_DecryptItemInput_((_5_responses).Select((_8_x).Uint32()).(_dafny.Map))) + _9_decryptRes = _out1 + var _10_valueOrError0 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Companion_DecryptItemOutput_.Default()) + _ = _10_valueOrError0 + _10_valueOrError0 = m_DdbMiddlewareConfig.Companion_Default___.MapError(_9_decryptRes) + if (_10_valueOrError0).IsFailure() { + output = (_10_valueOrError0).PropagateFailure() + return output + } + var _11_decrypted m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.DecryptItemOutput + _ = _11_decrypted + _11_decrypted = (_10_valueOrError0).Extract().(m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.DecryptItemOutput) + var _12_valueOrError1 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(_dafny.EmptyMap) + _ = _12_valueOrError1 + _12_valueOrError1 = m_DynamoDbMiddlewareSupport.Companion_Default___.RemoveBeacons(_6_tableConfig, (_11_decrypted).Dtor_plaintextItem()) + if (_12_valueOrError1).IsFailure() { + output = (_12_valueOrError1).PropagateFailure() + return output + } + var _13_item _dafny.Map + _ = _13_item + _13_item = (_12_valueOrError1).Extract().(_dafny.Map) + _7_decryptedItem = _dafny.Companion_Sequence_.Concatenate(_7_decryptedItem, _dafny.SeqOf(_13_item)) + } + _3_result = (_3_result).Merge(_dafny.NewMapBuilder().ToMap().UpdateUnsafe(_4_tableName, _7_decryptedItem)) + } else { + _3_result = (_3_result).Merge(_dafny.NewMapBuilder().ToMap().UpdateUnsafe(_4_tableName, _5_responses)) + } + _2_i = (_2_i).Plus(_dafny.One) + } + var _pat_let_tv0 = _3_result + _ = _pat_let_tv0 + output = m_Wrappers.Companion_Result_.Create_Success_(m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_BatchGetItemOutputTransformOutput_.Create_BatchGetItemOutputTransformOutput_(func(_pat_let39_0 m_ComAmazonawsDynamodbTypes.BatchGetItemOutput) m_ComAmazonawsDynamodbTypes.BatchGetItemOutput { + return func(_14_dt__update__tmp_h0 m_ComAmazonawsDynamodbTypes.BatchGetItemOutput) m_ComAmazonawsDynamodbTypes.BatchGetItemOutput { + return func(_pat_let40_0 m_Wrappers.Option) m_ComAmazonawsDynamodbTypes.BatchGetItemOutput { + return func(_15_dt__update_hResponses_h0 m_Wrappers.Option) m_ComAmazonawsDynamodbTypes.BatchGetItemOutput { + return m_ComAmazonawsDynamodbTypes.Companion_BatchGetItemOutput_.Create_BatchGetItemOutput_(_15_dt__update_hResponses_h0, (_14_dt__update__tmp_h0).Dtor_UnprocessedKeys(), (_14_dt__update__tmp_h0).Dtor_ConsumedCapacity()) + }(_pat_let40_0) + }(m_Wrappers.Companion_Option_.Create_Some_(_pat_let_tv0)) + }(_pat_let39_0) + }((input).Dtor_sdkOutput()))) + return output + return output +} + +// End of class Default__ diff --git a/releases/go/dynamodb-esdk/BatchWriteItemTransform/BatchWriteItemTransform.go b/releases/go/dynamodb-esdk/BatchWriteItemTransform/BatchWriteItemTransform.go new file mode 100644 index 000000000..62a0bf79c --- /dev/null +++ b/releases/go/dynamodb-esdk/BatchWriteItemTransform/BatchWriteItemTransform.go @@ -0,0 +1,636 @@ +// Package BatchWriteItemTransform +// Dafny module BatchWriteItemTransform compiled into Go + +package BatchWriteItemTransform + +import ( + os "os" + + m_ComAmazonawsDynamodbTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/dynamodb/ComAmazonawsDynamodbTypes" + m_Com_Amazonaws_Dynamodb "github.com/aws/aws-cryptographic-material-providers-library/releases/go/dynamodb/Com_Amazonaws_Dynamodb" + m_ComAmazonawsKmsTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/kms/ComAmazonawsKmsTypes" + m_Com_Amazonaws_Kms "github.com/aws/aws-cryptographic-material-providers-library/releases/go/kms/Com_Amazonaws_Kms" + m_AlgorithmSuites "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AlgorithmSuites" + m_AwsArnParsing "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsArnParsing" + m_AwsCryptographyKeyStoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyKeyStoreOperations" + m_AwsCryptographyKeyStoreTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyKeyStoreTypes" + m_AwsCryptographyMaterialProvidersOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyMaterialProvidersOperations" + m_AwsCryptographyMaterialProvidersTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyMaterialProvidersTypes" + m_AwsKmsDiscoveryKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsDiscoveryKeyring" + m_AwsKmsEcdhKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsEcdhKeyring" + m_AwsKmsHierarchicalKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsHierarchicalKeyring" + m_AwsKmsKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsKeyring" + m_AwsKmsMrkAreUnique "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkAreUnique" + m_AwsKmsMrkDiscoveryKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkDiscoveryKeyring" + m_AwsKmsMrkKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkKeyring" + m_AwsKmsMrkMatchForDecrypt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkMatchForDecrypt" + m_AwsKmsRsaKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsRsaKeyring" + m_AwsKmsUtils "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsUtils" + m_CMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CMM" + m_CacheConstants "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CacheConstants" + m_CanonicalEncryptionContext "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CanonicalEncryptionContext" + m_Commitment "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Commitment" + m_Constants "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Constants" + m_CreateKeyStoreTable "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CreateKeyStoreTable" + m_CreateKeys "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CreateKeys" + m_DDBKeystoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DDBKeystoreOperations" + m_DefaultCMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DefaultCMM" + m_DefaultClientSupplier "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DefaultClientSupplier" + m_Defaults "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Defaults" + m_DiscoveryMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DiscoveryMultiKeyring" + m_EcdhEdkWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/EcdhEdkWrapping" + m_EdkWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/EdkWrapping" + m_ErrorMessages "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/ErrorMessages" + m_GetKeys "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/GetKeys" + m_IntermediateKeyWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/IntermediateKeyWrapping" + m_KMSKeystoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KMSKeystoreOperations" + m_KeyStore "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KeyStore" + m_KeyStoreErrorMessages "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KeyStoreErrorMessages" + m_Keyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Keyring" + m_KmsArn "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KmsArn" + m_LocalCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/LocalCMC" + m_MaterialProviders "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MaterialProviders" + m_MaterialWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MaterialWrapping" + m_Materials "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Materials" + m_MrkAwareDiscoveryMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MrkAwareDiscoveryMultiKeyring" + m_MrkAwareStrictMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MrkAwareStrictMultiKeyring" + m_MultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MultiKeyring" + m_RawAESKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawAESKeyring" + m_RawECDHKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawECDHKeyring" + m_RawRSAKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawRSAKeyring" + m_RequiredEncryptionContextCMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RequiredEncryptionContextCMM" + m_StormTracker "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StormTracker" + m_StormTrackingCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StormTrackingCMC" + m_StrictMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StrictMultiKeyring" + m_Structure "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Structure" + m_SynchronizedLocalCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/SynchronizedLocalCMC" + m_Utils "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Utils" + m_AtomicPrimitives "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AtomicPrimitives" + m_AwsCryptographyPrimitivesOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AwsCryptographyPrimitivesOperations" + m_AwsCryptographyPrimitivesTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AwsCryptographyPrimitivesTypes" + m_Digest "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/Digest" + m_HKDF "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/HKDF" + m_KdfCtr "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/KdfCtr" + m_Random "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/Random" + m_WrappedHKDF "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/WrappedHKDF" + m_WrappedHMAC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/WrappedHMAC" + m_Actions "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Actions" + m_Base64 "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Base64" + m_Base64Lemmas "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Base64Lemmas" + m_BoundedInts "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/BoundedInts" + m_DivInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivInternals" + m_DivInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivInternalsNonlinear" + m_DivMod "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivMod" + m_FileIO "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/FileIO" + m_FloatCompare "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/FloatCompare" + m_Functions "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Functions" + m_GeneralInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/GeneralInternals" + m_GetOpt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/GetOpt" + m_HexStrings "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/HexStrings" + m_Logarithm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Logarithm" + m__Math "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Math_" + m_ModInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/ModInternals" + m_ModInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/ModInternalsNonlinear" + m_Mul "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Mul" + m_MulInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/MulInternals" + m_MulInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/MulInternalsNonlinear" + m_Power "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Power" + m_Relations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Relations" + m_Seq "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Seq" + m_Seq_MergeSort "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Seq_MergeSort" + m_SortedSets "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/SortedSets" + m_Sorting "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Sorting" + m_StandardLibrary "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary" + m_StandardLibraryInterop "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibraryInterop" + m_StandardLibrary_MemoryMath "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_MemoryMath" + m_StandardLibrary_Sequence "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_Sequence" + m_StandardLibrary_String "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_String" + m_StandardLibrary_UInt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_UInt" + m_Streams "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Streams" + m_UnicodeStrings "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/UnicodeStrings" + m__Unicode "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Unicode_" + m_Utf16EncodingForm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Utf16EncodingForm" + m_Utf8EncodingForm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Utf8EncodingForm" + m_Wrappers "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Wrappers" + m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations" + m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes" + m_AwsCryptographyDbEncryptionSdkDynamoDbOperations "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbOperations" + m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes" + m_AwsCryptographyDbEncryptionSdkDynamoDbTypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbTypes" + m_AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations" + m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes" + m_BaseBeacon "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/BaseBeacon" + m_Canonize "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/Canonize" + m_CompoundBeacon "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/CompoundBeacon" + m_DdbMiddlewareConfig "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DdbMiddlewareConfig" + m_DdbStatement "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DdbStatement" + m_DdbVirtualFields "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DdbVirtualFields" + m_DynamoDBFilterExpr "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDBFilterExpr" + m_DynamoDBSupport "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDBSupport" + m_DynamoDbEncryption "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbEncryption" + m_DynamoDbEncryptionBranchKeyIdSupplier "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbEncryptionBranchKeyIdSupplier" + m_DynamoDbEncryptionUtil "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbEncryptionUtil" + m_DynamoDbItemEncryptor "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbItemEncryptor" + m_DynamoDbItemEncryptorUtil "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbItemEncryptorUtil" + m_DynamoDbMiddlewareSupport "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbMiddlewareSupport" + m_DynamoDbNormalizeNumber "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbNormalizeNumber" + m_DynamoDbUpdateExpr "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbUpdateExpr" + m_DynamoToStruct "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoToStruct" + m_GetItemTransform "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/GetItemTransform" + m_InternalLegacyOverride "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/InternalLegacyOverride" + m__Maps "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/Maps_" + m_OptimizedMergeSort "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/OptimizedMergeSort" + m_PutItemTransform "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/PutItemTransform" + m_SearchConfigToInfo "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/SearchConfigToInfo" + m_SearchableEncryptionInfo "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/SearchableEncryptionInfo" + m_Sets "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/Sets" + m_SortCanon "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/SortCanon" + m_StructuredEncryption "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryption" + m_StructuredEncryptionCrypt "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionCrypt" + m_StructuredEncryptionFooter "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionFooter" + m_StructuredEncryptionHeader "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionHeader" + m_StructuredEncryptionPaths "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionPaths" + m_StructuredEncryptionUtil "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionUtil" + m_TermLoc "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/TermLoc" + m_UpdateItemTransform "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/UpdateItemTransform" + m__System "github.com/dafny-lang/DafnyRuntimeGo/v4/System_" + _dafny "github.com/dafny-lang/DafnyRuntimeGo/v4/dafny" +) + +var _ = os.Args +var _ _dafny.Dummy__ +var _ m__System.Dummy__ +var _ m_Wrappers.Dummy__ +var _ m_BoundedInts.Dummy__ +var _ m_StandardLibrary_UInt.Dummy__ +var _ m_StandardLibrary_MemoryMath.Dummy__ +var _ m_StandardLibrary_Sequence.Dummy__ +var _ m_StandardLibrary_String.Dummy__ +var _ m_StandardLibrary.Dummy__ +var _ m_AwsCryptographyPrimitivesTypes.Dummy__ +var _ m_Random.Dummy__ +var _ m_Digest.Dummy__ +var _ m_WrappedHMAC.Dummy__ +var _ m_HKDF.Dummy__ +var _ m_WrappedHKDF.Dummy__ +var _ m_KdfCtr.Dummy__ +var _ m_AwsCryptographyPrimitivesOperations.Dummy__ +var _ m_AtomicPrimitives.Dummy__ +var _ m_ComAmazonawsDynamodbTypes.Dummy__ +var _ m_ComAmazonawsKmsTypes.Dummy__ +var _ m_AwsCryptographyKeyStoreTypes.Dummy__ +var _ m_AwsCryptographyMaterialProvidersTypes.Dummy__ +var _ m_Base64.Dummy__ +var _ m_AlgorithmSuites.Dummy__ +var _ m_Materials.Dummy__ +var _ m_Keyring.Dummy__ +var _ m_Relations.Dummy__ +var _ m_Seq_MergeSort.Dummy__ +var _ m__Math.Dummy__ +var _ m_Seq.Dummy__ +var _ m_Actions.Dummy__ +var _ m_CanonicalEncryptionContext.Dummy__ +var _ m_MaterialWrapping.Dummy__ +var _ m_IntermediateKeyWrapping.Dummy__ +var _ m_EdkWrapping.Dummy__ +var _ m_ErrorMessages.Dummy__ +var _ m_RawAESKeyring.Dummy__ +var _ m_AwsArnParsing.Dummy__ +var _ m_Constants.Dummy__ +var _ m_EcdhEdkWrapping.Dummy__ +var _ m_RawECDHKeyring.Dummy__ +var _ m_RawRSAKeyring.Dummy__ +var _ m_AwsKmsMrkMatchForDecrypt.Dummy__ +var _ m_AwsKmsUtils.Dummy__ +var _ m_AwsKmsKeyring.Dummy__ +var _ m_AwsKmsDiscoveryKeyring.Dummy__ +var _ m_AwsKmsEcdhKeyring.Dummy__ +var _ m_FileIO.Dummy__ +var _ m_LocalCMC.Dummy__ +var _ m_SynchronizedLocalCMC.Dummy__ +var _ m_StormTracker.Dummy__ +var _ m_StormTrackingCMC.Dummy__ +var _ m_CacheConstants.Dummy__ +var _ m_AwsKmsHierarchicalKeyring.Dummy__ +var _ m_AwsKmsMrkDiscoveryKeyring.Dummy__ +var _ m_AwsKmsMrkKeyring.Dummy__ +var _ m_AwsKmsRsaKeyring.Dummy__ +var _ m_MultiKeyring.Dummy__ +var _ m_AwsKmsMrkAreUnique.Dummy__ +var _ m_StrictMultiKeyring.Dummy__ +var _ m_Com_Amazonaws_Kms.Dummy__ +var _ m_Com_Amazonaws_Dynamodb.Dummy__ +var _ m_DiscoveryMultiKeyring.Dummy__ +var _ m_MrkAwareDiscoveryMultiKeyring.Dummy__ +var _ m_MrkAwareStrictMultiKeyring.Dummy__ +var _ m_CMM.Dummy__ +var _ m_Defaults.Dummy__ +var _ m_Commitment.Dummy__ +var _ m_DefaultCMM.Dummy__ +var _ m_DefaultClientSupplier.Dummy__ +var _ m_Utils.Dummy__ +var _ m_RequiredEncryptionContextCMM.Dummy__ +var _ m_AwsCryptographyMaterialProvidersOperations.Dummy__ +var _ m_MaterialProviders.Dummy__ +var _ m_KeyStoreErrorMessages.Dummy__ +var _ m_KmsArn.Dummy__ +var _ m_Structure.Dummy__ +var _ m_KMSKeystoreOperations.Dummy__ +var _ m_DDBKeystoreOperations.Dummy__ +var _ m_CreateKeys.Dummy__ +var _ m_CreateKeyStoreTable.Dummy__ +var _ m_GetKeys.Dummy__ +var _ m_AwsCryptographyKeyStoreOperations.Dummy__ +var _ m_KeyStore.Dummy__ +var _ m__Unicode.Dummy__ +var _ m_Functions.Dummy__ +var _ m_Utf8EncodingForm.Dummy__ +var _ m_Utf16EncodingForm.Dummy__ +var _ m_UnicodeStrings.Dummy__ +var _ m_GeneralInternals.Dummy__ +var _ m_MulInternalsNonlinear.Dummy__ +var _ m_MulInternals.Dummy__ +var _ m_Mul.Dummy__ +var _ m_ModInternalsNonlinear.Dummy__ +var _ m_DivInternalsNonlinear.Dummy__ +var _ m_ModInternals.Dummy__ +var _ m_DivInternals.Dummy__ +var _ m_DivMod.Dummy__ +var _ m_Power.Dummy__ +var _ m_Logarithm.Dummy__ +var _ m_StandardLibraryInterop.Dummy__ +var _ m_Streams.Dummy__ +var _ m_Sorting.Dummy__ +var _ m_HexStrings.Dummy__ +var _ m_GetOpt.Dummy__ +var _ m_FloatCompare.Dummy__ +var _ m_Base64Lemmas.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Dummy__ +var _ m_StructuredEncryptionUtil.Dummy__ +var _ m_Sets.Dummy__ +var _ m_StructuredEncryptionPaths.Dummy__ +var _ m_StructuredEncryptionHeader.Dummy__ +var _ m_StructuredEncryptionFooter.Dummy__ +var _ m_OptimizedMergeSort.Dummy__ +var _ m_SortCanon.Dummy__ +var _ m_Canonize.Dummy__ +var _ m_StructuredEncryptionCrypt.Dummy__ +var _ m__Maps.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations.Dummy__ +var _ m_StructuredEncryption.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Dummy__ +var _ m_DynamoDbEncryptionUtil.Dummy__ +var _ m_DynamoDbNormalizeNumber.Dummy__ +var _ m_DynamoToStruct.Dummy__ +var _ m_DynamoDbItemEncryptorUtil.Dummy__ +var _ m_InternalLegacyOverride.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations.Dummy__ +var _ m_DynamoDbItemEncryptor.Dummy__ +var _ m_DynamoDbEncryptionBranchKeyIdSupplier.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbOperations.Dummy__ +var _ m_DynamoDbEncryption.Dummy__ +var _ m_TermLoc.Dummy__ +var _ m_DdbVirtualFields.Dummy__ +var _ m_DynamoDbUpdateExpr.Dummy__ +var _ m_BaseBeacon.Dummy__ +var _ m_CompoundBeacon.Dummy__ +var _ m_SearchableEncryptionInfo.Dummy__ +var _ m_DynamoDBFilterExpr.Dummy__ +var _ m_DynamoDBSupport.Dummy__ +var _ m_SearchConfigToInfo.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Dummy__ +var _ m_DdbMiddlewareConfig.Dummy__ +var _ m_DdbStatement.Dummy__ +var _ m_DynamoDbMiddlewareSupport.Dummy__ +var _ m_PutItemTransform.Dummy__ +var _ m_GetItemTransform.Dummy__ +var _ m_UpdateItemTransform.Dummy__ + +type Dummy__ struct{} + +// Definition of class Default__ +type Default__ struct { + dummy byte +} + +func New_Default___() *Default__ { + _this := Default__{} + + return &_this +} + +type CompanionStruct_Default___ struct { +} + +var Companion_Default___ = CompanionStruct_Default___{} + +func (_this *Default__) Equals(other *Default__) bool { + return _this == other +} + +func (_this *Default__) EqualsGeneric(x interface{}) bool { + other, ok := x.(*Default__) + return ok && _this.Equals(other) +} + +func (*Default__) String() string { + return "BatchWriteItemTransform.Default__" +} +func (_this *Default__) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = &Default__{} + +func (_static *CompanionStruct_Default___) Input(config m_DdbMiddlewareConfig.Config, input m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.BatchWriteItemInputTransformInput) m_Wrappers.Result { + var output m_Wrappers.Result = m_Wrappers.Result{} + _ = output + var _0_tableNames _dafny.Set + _ = _0_tableNames + _0_tableNames = (((input).Dtor_sdkInput()).Dtor_RequestItems()).Keys() + var _1_result _dafny.Map + _ = _1_result + _1_result = _dafny.NewMapBuilder().ToMap() + var _2_tableNamesSeq _dafny.Sequence + _ = _2_tableNamesSeq + var _out0 _dafny.Sequence + _ = _out0 + _out0 = m_SortedSets.SetToSequence(_0_tableNames) + _2_tableNamesSeq = _out0 + var _3_i _dafny.Int + _ = _3_i + _3_i = _dafny.Zero + for (_3_i).Cmp(_dafny.IntOfUint32((_2_tableNamesSeq).Cardinality())) < 0 { + var _4_tableName _dafny.Sequence + _ = _4_tableName + _4_tableName = (_2_tableNamesSeq).Select((_3_i).Uint32()).(_dafny.Sequence) + var _5_writeRequests _dafny.Sequence + _ = _5_writeRequests + _5_writeRequests = (((input).Dtor_sdkInput()).Dtor_RequestItems()).Get(_4_tableName).(_dafny.Sequence) + if !(m_DdbMiddlewareConfig.Companion_Default___.IsPlainWrite(config, _4_tableName)) { + var _6_tableConfig m_DdbMiddlewareConfig.TableConfig + _ = _6_tableConfig + _6_tableConfig = ((config).Dtor_tableEncryptionConfigs()).Get(_4_tableName).(m_DdbMiddlewareConfig.TableConfig) + var _7_encryptedItems _dafny.Sequence + _ = _7_encryptedItems + _7_encryptedItems = _dafny.SeqOf() + var _hi0 _dafny.Int = _dafny.IntOfUint32((_5_writeRequests).Cardinality()) + _ = _hi0 + for _8_x := _dafny.Zero; _8_x.Cmp(_hi0) < 0; _8_x = _8_x.Plus(_dafny.One) { + var _9_req m_ComAmazonawsDynamodbTypes.WriteRequest + _ = _9_req + _9_req = (_5_writeRequests).Select((_8_x).Uint32()).(m_ComAmazonawsDynamodbTypes.WriteRequest) + if ((_9_req).Dtor_PutRequest()).Is_None() { + _7_encryptedItems = _dafny.Companion_Sequence_.Concatenate(_7_encryptedItems, _dafny.SeqOf(_9_req)) + } else { + var _10_valueOrError0 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(false) + _ = _10_valueOrError0 + var _out1 m_Wrappers.Result + _ = _out1 + _out1 = m_DynamoDbMiddlewareSupport.Companion_Default___.IsWriteable(_6_tableConfig, (((_9_req).Dtor_PutRequest()).Dtor_value().(m_ComAmazonawsDynamodbTypes.PutRequest)).Dtor_Item()) + _10_valueOrError0 = _out1 + if (_10_valueOrError0).IsFailure() { + output = (_10_valueOrError0).PropagateFailure() + return output + } + var _11___v0 bool + _ = _11___v0 + _11___v0 = (_10_valueOrError0).Extract().(bool) + var _12_valueOrError1 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(_dafny.EmptyMap) + _ = _12_valueOrError1 + var _out2 m_Wrappers.Result + _ = _out2 + _out2 = m_DynamoDbMiddlewareSupport.Companion_Default___.AddSignedBeacons(_6_tableConfig, (((_9_req).Dtor_PutRequest()).Dtor_value().(m_ComAmazonawsDynamodbTypes.PutRequest)).Dtor_Item()) + _12_valueOrError1 = _out2 + if (_12_valueOrError1).IsFailure() { + output = (_12_valueOrError1).PropagateFailure() + return output + } + var _13_item _dafny.Map + _ = _13_item + _13_item = (_12_valueOrError1).Extract().(_dafny.Map) + var _14_encryptRes m_Wrappers.Result + _ = _14_encryptRes + var _out3 m_Wrappers.Result + _ = _out3 + _out3 = ((_6_tableConfig).Dtor_itemEncryptor()).EncryptItem(m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Companion_EncryptItemInput_.Create_EncryptItemInput_(_13_item)) + _14_encryptRes = _out3 + var _15_valueOrError2 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Companion_EncryptItemOutput_.Default()) + _ = _15_valueOrError2 + _15_valueOrError2 = m_DdbMiddlewareConfig.Companion_Default___.MapError(_14_encryptRes) + if (_15_valueOrError2).IsFailure() { + output = (_15_valueOrError2).PropagateFailure() + return output + } + var _16_encrypted m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.EncryptItemOutput + _ = _16_encrypted + _16_encrypted = (_15_valueOrError2).Extract().(m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.EncryptItemOutput) + var _17_valueOrError3 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(m_Wrappers.Companion_Option_.Default()) + _ = _17_valueOrError3 + _17_valueOrError3 = m_DynamoDbMiddlewareSupport.Companion_Default___.GetKeyIdFromHeader(_6_tableConfig, _16_encrypted) + if (_17_valueOrError3).IsFailure() { + output = (_17_valueOrError3).PropagateFailure() + return output + } + var _18_keyId m_Wrappers.Option + _ = _18_keyId + _18_keyId = (_17_valueOrError3).Extract().(m_Wrappers.Option) + var _19_valueOrError4 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(_dafny.EmptyMap) + _ = _19_valueOrError4 + var _out4 m_Wrappers.Result + _ = _out4 + _out4 = m_DynamoDbMiddlewareSupport.Companion_Default___.GetEncryptedBeacons(_6_tableConfig, (((_9_req).Dtor_PutRequest()).Dtor_value().(m_ComAmazonawsDynamodbTypes.PutRequest)).Dtor_Item(), m_DynamoDbEncryptionUtil.Companion_Default___.MaybeFromOptionKeyId(_18_keyId)) + _19_valueOrError4 = _out4 + if (_19_valueOrError4).IsFailure() { + output = (_19_valueOrError4).PropagateFailure() + return output + } + var _20_beaconAttrs _dafny.Map + _ = _20_beaconAttrs + _20_beaconAttrs = (_19_valueOrError4).Extract().(_dafny.Map) + var _pat_let_tv0 = _16_encrypted + _ = _pat_let_tv0 + var _pat_let_tv1 = _20_beaconAttrs + _ = _pat_let_tv1 + _7_encryptedItems = _dafny.Companion_Sequence_.Concatenate(_7_encryptedItems, _dafny.SeqOf(func(_pat_let31_0 m_ComAmazonawsDynamodbTypes.WriteRequest) m_ComAmazonawsDynamodbTypes.WriteRequest { + return func(_21_dt__update__tmp_h0 m_ComAmazonawsDynamodbTypes.WriteRequest) m_ComAmazonawsDynamodbTypes.WriteRequest { + return func(_pat_let32_0 m_Wrappers.Option) m_ComAmazonawsDynamodbTypes.WriteRequest { + return func(_22_dt__update_hPutRequest_h0 m_Wrappers.Option) m_ComAmazonawsDynamodbTypes.WriteRequest { + return m_ComAmazonawsDynamodbTypes.Companion_WriteRequest_.Create_WriteRequest_(_22_dt__update_hPutRequest_h0, (_21_dt__update__tmp_h0).Dtor_DeleteRequest()) + }(_pat_let32_0) + }(m_Wrappers.Companion_Option_.Create_Some_(m_ComAmazonawsDynamodbTypes.Companion_PutRequest_.Create_PutRequest_(((_pat_let_tv0).Dtor_encryptedItem()).Merge(_pat_let_tv1)))) + }(_pat_let31_0) + }(_9_req))) + } + } + _5_writeRequests = _7_encryptedItems + } + _3_i = (_3_i).Plus(_dafny.One) + _1_result = (_1_result).Update(_4_tableName, _5_writeRequests) + } + var _23_valueOrError5 m_Wrappers.Outcome = m_Wrappers.Companion_Outcome_.Default() + _ = _23_valueOrError5 + _23_valueOrError5 = m_Wrappers.Companion_Default___.Need(((_1_result).Cardinality()).Cmp((((input).Dtor_sdkInput()).Dtor_RequestItems()).Cardinality()) == 0, m_DdbMiddlewareConfig.Companion_Default___.E(_dafny.SeqOfString("Internal Error"))) + if (_23_valueOrError5).IsFailure() { + output = (_23_valueOrError5).PropagateFailure() + return output + } + var _pat_let_tv2 = _1_result + _ = _pat_let_tv2 + output = m_Wrappers.Companion_Result_.Create_Success_(m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_BatchWriteItemInputTransformOutput_.Create_BatchWriteItemInputTransformOutput_(func(_pat_let33_0 m_ComAmazonawsDynamodbTypes.BatchWriteItemInput) m_ComAmazonawsDynamodbTypes.BatchWriteItemInput { + return func(_24_dt__update__tmp_h1 m_ComAmazonawsDynamodbTypes.BatchWriteItemInput) m_ComAmazonawsDynamodbTypes.BatchWriteItemInput { + return func(_pat_let34_0 _dafny.Map) m_ComAmazonawsDynamodbTypes.BatchWriteItemInput { + return func(_25_dt__update_hRequestItems_h0 _dafny.Map) m_ComAmazonawsDynamodbTypes.BatchWriteItemInput { + return m_ComAmazonawsDynamodbTypes.Companion_BatchWriteItemInput_.Create_BatchWriteItemInput_(_25_dt__update_hRequestItems_h0, (_24_dt__update__tmp_h1).Dtor_ReturnConsumedCapacity(), (_24_dt__update__tmp_h1).Dtor_ReturnItemCollectionMetrics()) + }(_pat_let34_0) + }(_pat_let_tv2) + }(_pat_let33_0) + }((input).Dtor_sdkInput()))) + return output + return output +} +func (_static *CompanionStruct_Default___) GetOrigItem(tableConfig m_DdbMiddlewareConfig.TableConfig, srcRequests _dafny.Sequence, itemReq m_ComAmazonawsDynamodbTypes.WriteRequest) m_Wrappers.Result { + var ret m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(m_ComAmazonawsDynamodbTypes.Companion_WriteRequest_.Default()) + _ = ret + var _0_partKey _dafny.Sequence + _ = _0_partKey + _0_partKey = (tableConfig).Dtor_partitionKeyName() + var _1_sortKey m_Wrappers.Option + _ = _1_sortKey + _1_sortKey = (tableConfig).Dtor_sortKeyName() + var _2_item _dafny.Map + _ = _2_item + _2_item = (((itemReq).Dtor_PutRequest()).Dtor_value().(m_ComAmazonawsDynamodbTypes.PutRequest)).Dtor_Item() + var _3_valueOrError0 m_Wrappers.Outcome = m_Wrappers.Companion_Outcome_.Default() + _ = _3_valueOrError0 + _3_valueOrError0 = m_Wrappers.Companion_Default___.Need((_2_item).Contains(_0_partKey), m_DdbMiddlewareConfig.Companion_Default___.E(_dafny.SeqOfString("Required partition key not in unprocessed item"))) + if (_3_valueOrError0).IsFailure() { + ret = (_3_valueOrError0).PropagateFailure() + return ret + } + var _4_valueOrError1 m_Wrappers.Outcome = m_Wrappers.Companion_Outcome_.Default() + _ = _4_valueOrError1 + _4_valueOrError1 = m_Wrappers.Companion_Default___.Need(((_1_sortKey).Is_None()) || ((_2_item).Contains((_1_sortKey).Dtor_value().(_dafny.Sequence))), m_DdbMiddlewareConfig.Companion_Default___.E(_dafny.SeqOfString("Required sort key not in unprocessed item"))) + if (_4_valueOrError1).IsFailure() { + ret = (_4_valueOrError1).PropagateFailure() + return ret + } + var _hi0 _dafny.Int = _dafny.IntOfUint32((srcRequests).Cardinality()) + _ = _hi0 + for _5_i := _dafny.Zero; _5_i.Cmp(_hi0) < 0; _5_i = _5_i.Plus(_dafny.One) { + if (((srcRequests).Select((_5_i).Uint32()).(m_ComAmazonawsDynamodbTypes.WriteRequest)).Dtor_PutRequest()).Is_Some() { + var _6_req _dafny.Map + _ = _6_req + _6_req = ((((srcRequests).Select((_5_i).Uint32()).(m_ComAmazonawsDynamodbTypes.WriteRequest)).Dtor_PutRequest()).Dtor_value().(m_ComAmazonawsDynamodbTypes.PutRequest)).Dtor_Item() + if ((_6_req).Contains(_0_partKey)) && (((_6_req).Get(_0_partKey).(m_ComAmazonawsDynamodbTypes.AttributeValue)).Equals((_2_item).Get(_0_partKey).(m_ComAmazonawsDynamodbTypes.AttributeValue))) { + if ((_1_sortKey).Is_None()) || (((_6_req).Contains((_1_sortKey).Dtor_value().(_dafny.Sequence))) && (((_6_req).Get((_1_sortKey).Dtor_value().(_dafny.Sequence)).(m_ComAmazonawsDynamodbTypes.AttributeValue)).Equals((_2_item).Get((_1_sortKey).Dtor_value().(_dafny.Sequence)).(m_ComAmazonawsDynamodbTypes.AttributeValue)))) { + ret = m_Wrappers.Companion_Result_.Create_Success_((srcRequests).Select((_5_i).Uint32()).(m_ComAmazonawsDynamodbTypes.WriteRequest)) + return ret + } + } + } + } + ret = m_Wrappers.Companion_Result_.Create_Failure_(m_DdbMiddlewareConfig.Companion_Default___.E(_dafny.SeqOfString("Item in UnprocessedItems not found in original request."))) + return ret + return ret +} +func (_static *CompanionStruct_Default___) Output(config m_DdbMiddlewareConfig.Config, input m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.BatchWriteItemOutputTransformInput) m_Wrappers.Result { + var output m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_BatchWriteItemOutputTransformOutput_.Default()) + _ = output + if (((input).Dtor_sdkOutput()).Dtor_UnprocessedItems()).Is_None() { + output = m_Wrappers.Companion_Result_.Create_Success_(m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_BatchWriteItemOutputTransformOutput_.Create_BatchWriteItemOutputTransformOutput_((input).Dtor_sdkOutput())) + return output + } + var _0_srcItems _dafny.Map + _ = _0_srcItems + _0_srcItems = ((input).Dtor_originalInput()).Dtor_RequestItems() + var _1_unprocessed _dafny.Map + _ = _1_unprocessed + _1_unprocessed = (((input).Dtor_sdkOutput()).Dtor_UnprocessedItems()).Dtor_value().(_dafny.Map) + var _2_tableNames _dafny.Set + _ = _2_tableNames + _2_tableNames = (_1_unprocessed).Keys() + var _3_result _dafny.Map + _ = _3_result + _3_result = _dafny.NewMapBuilder().ToMap() + var _4_tableNamesSeq _dafny.Sequence + _ = _4_tableNamesSeq + var _out0 _dafny.Sequence + _ = _out0 + _out0 = m_SortedSets.SetToSequence(_2_tableNames) + _4_tableNamesSeq = _out0 + var _5_i _dafny.Int + _ = _5_i + _5_i = _dafny.Zero + for (_5_i).Cmp(_dafny.IntOfUint32((_4_tableNamesSeq).Cardinality())) < 0 { + var _6_tableName _dafny.Sequence + _ = _6_tableName + _6_tableName = (_4_tableNamesSeq).Select((_5_i).Uint32()).(_dafny.Sequence) + var _7_writeRequests _dafny.Sequence + _ = _7_writeRequests + _7_writeRequests = (_1_unprocessed).Get(_6_tableName).(_dafny.Sequence) + if !(m_DdbMiddlewareConfig.Companion_Default___.IsPlainWrite(config, _6_tableName)) { + if !(_0_srcItems).Contains(_6_tableName) { + output = m_Wrappers.Companion_Result_.Create_Failure_(m_DdbMiddlewareConfig.Companion_Default___.E(_dafny.Companion_Sequence_.Concatenate(_6_tableName, _dafny.SeqOfString(" in UnprocessedItems for BatchWriteItem response, but not in original request.")))) + return output + } + var _8_srcRequests _dafny.Sequence + _ = _8_srcRequests + _8_srcRequests = (_0_srcItems).Get(_6_tableName).(_dafny.Sequence) + var _9_tableConfig m_DdbMiddlewareConfig.TableConfig + _ = _9_tableConfig + _9_tableConfig = ((config).Dtor_tableEncryptionConfigs()).Get(_6_tableName).(m_DdbMiddlewareConfig.TableConfig) + var _10_origItems _dafny.Sequence + _ = _10_origItems + _10_origItems = _dafny.SeqOf() + var _hi0 _dafny.Int = _dafny.IntOfUint32((_7_writeRequests).Cardinality()) + _ = _hi0 + for _11_x := _dafny.Zero; _11_x.Cmp(_hi0) < 0; _11_x = _11_x.Plus(_dafny.One) { + var _12_req m_ComAmazonawsDynamodbTypes.WriteRequest + _ = _12_req + _12_req = (_7_writeRequests).Select((_11_x).Uint32()).(m_ComAmazonawsDynamodbTypes.WriteRequest) + if ((_12_req).Dtor_PutRequest()).Is_None() { + _10_origItems = _dafny.Companion_Sequence_.Concatenate(_10_origItems, _dafny.SeqOf(_12_req)) + } else { + var _13_valueOrError0 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(m_ComAmazonawsDynamodbTypes.Companion_WriteRequest_.Default()) + _ = _13_valueOrError0 + var _out1 m_Wrappers.Result + _ = _out1 + _out1 = Companion_Default___.GetOrigItem(_9_tableConfig, _8_srcRequests, _12_req) + _13_valueOrError0 = _out1 + if (_13_valueOrError0).IsFailure() { + output = (_13_valueOrError0).PropagateFailure() + return output + } + var _14_orig__item m_ComAmazonawsDynamodbTypes.WriteRequest + _ = _14_orig__item + _14_orig__item = (_13_valueOrError0).Extract().(m_ComAmazonawsDynamodbTypes.WriteRequest) + _10_origItems = _dafny.Companion_Sequence_.Concatenate(_10_origItems, _dafny.SeqOf(_14_orig__item)) + } + } + _7_writeRequests = _10_origItems + } + _5_i = (_5_i).Plus(_dafny.One) + _3_result = (_3_result).Update(_6_tableName, _7_writeRequests) + } + var _15_valueOrError1 m_Wrappers.Outcome = m_Wrappers.Companion_Outcome_.Default() + _ = _15_valueOrError1 + _15_valueOrError1 = m_Wrappers.Companion_Default___.Need(((_3_result).Cardinality()).Cmp((_1_unprocessed).Cardinality()) == 0, m_DdbMiddlewareConfig.Companion_Default___.E(_dafny.SeqOfString("Internal Error"))) + if (_15_valueOrError1).IsFailure() { + output = (_15_valueOrError1).PropagateFailure() + return output + } + var _16_new__output m_ComAmazonawsDynamodbTypes.BatchWriteItemOutput + _ = _16_new__output + var _17_dt__update__tmp_h0 m_ComAmazonawsDynamodbTypes.BatchWriteItemOutput = (input).Dtor_sdkOutput() + _ = _17_dt__update__tmp_h0 + var _18_dt__update_hUnprocessedItems_h0 m_Wrappers.Option = m_Wrappers.Companion_Option_.Create_Some_(_3_result) + _ = _18_dt__update_hUnprocessedItems_h0 + _16_new__output = m_ComAmazonawsDynamodbTypes.Companion_BatchWriteItemOutput_.Create_BatchWriteItemOutput_(_18_dt__update_hUnprocessedItems_h0, (_17_dt__update__tmp_h0).Dtor_ItemCollectionMetrics(), (_17_dt__update__tmp_h0).Dtor_ConsumedCapacity()) + output = m_Wrappers.Companion_Result_.Create_Success_(m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_BatchWriteItemOutputTransformOutput_.Create_BatchWriteItemOutputTransformOutput_(_16_new__output)) + return output + return output +} + +// End of class Default__ diff --git a/releases/go/dynamodb-esdk/Canonize/Canonize.go b/releases/go/dynamodb-esdk/Canonize/Canonize.go new file mode 100644 index 000000000..a739e9d89 --- /dev/null +++ b/releases/go/dynamodb-esdk/Canonize/Canonize.go @@ -0,0 +1,642 @@ +// Package Canonize +// Dafny module Canonize compiled into Go + +package Canonize + +import ( + os "os" + + m_ComAmazonawsDynamodbTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/dynamodb/ComAmazonawsDynamodbTypes" + m_Com_Amazonaws_Dynamodb "github.com/aws/aws-cryptographic-material-providers-library/releases/go/dynamodb/Com_Amazonaws_Dynamodb" + m_ComAmazonawsKmsTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/kms/ComAmazonawsKmsTypes" + m_Com_Amazonaws_Kms "github.com/aws/aws-cryptographic-material-providers-library/releases/go/kms/Com_Amazonaws_Kms" + m_AlgorithmSuites "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AlgorithmSuites" + m_AwsArnParsing "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsArnParsing" + m_AwsCryptographyKeyStoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyKeyStoreOperations" + m_AwsCryptographyKeyStoreTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyKeyStoreTypes" + m_AwsCryptographyMaterialProvidersOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyMaterialProvidersOperations" + m_AwsCryptographyMaterialProvidersTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyMaterialProvidersTypes" + m_AwsKmsDiscoveryKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsDiscoveryKeyring" + m_AwsKmsEcdhKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsEcdhKeyring" + m_AwsKmsHierarchicalKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsHierarchicalKeyring" + m_AwsKmsKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsKeyring" + m_AwsKmsMrkAreUnique "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkAreUnique" + m_AwsKmsMrkDiscoveryKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkDiscoveryKeyring" + m_AwsKmsMrkKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkKeyring" + m_AwsKmsMrkMatchForDecrypt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkMatchForDecrypt" + m_AwsKmsRsaKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsRsaKeyring" + m_AwsKmsUtils "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsUtils" + m_CMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CMM" + m_CacheConstants "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CacheConstants" + m_CanonicalEncryptionContext "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CanonicalEncryptionContext" + m_Commitment "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Commitment" + m_Constants "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Constants" + m_CreateKeyStoreTable "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CreateKeyStoreTable" + m_CreateKeys "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CreateKeys" + m_DDBKeystoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DDBKeystoreOperations" + m_DefaultCMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DefaultCMM" + m_DefaultClientSupplier "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DefaultClientSupplier" + m_Defaults "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Defaults" + m_DiscoveryMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DiscoveryMultiKeyring" + m_EcdhEdkWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/EcdhEdkWrapping" + m_EdkWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/EdkWrapping" + m_ErrorMessages "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/ErrorMessages" + m_GetKeys "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/GetKeys" + m_IntermediateKeyWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/IntermediateKeyWrapping" + m_KMSKeystoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KMSKeystoreOperations" + m_KeyStore "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KeyStore" + m_KeyStoreErrorMessages "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KeyStoreErrorMessages" + m_Keyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Keyring" + m_KmsArn "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KmsArn" + m_LocalCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/LocalCMC" + m_MaterialProviders "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MaterialProviders" + m_MaterialWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MaterialWrapping" + m_Materials "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Materials" + m_MrkAwareDiscoveryMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MrkAwareDiscoveryMultiKeyring" + m_MrkAwareStrictMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MrkAwareStrictMultiKeyring" + m_MultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MultiKeyring" + m_RawAESKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawAESKeyring" + m_RawECDHKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawECDHKeyring" + m_RawRSAKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawRSAKeyring" + m_RequiredEncryptionContextCMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RequiredEncryptionContextCMM" + m_StormTracker "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StormTracker" + m_StormTrackingCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StormTrackingCMC" + m_StrictMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StrictMultiKeyring" + m_Structure "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Structure" + m_SynchronizedLocalCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/SynchronizedLocalCMC" + m_Utils "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Utils" + m_AtomicPrimitives "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AtomicPrimitives" + m_AwsCryptographyPrimitivesOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AwsCryptographyPrimitivesOperations" + m_AwsCryptographyPrimitivesTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AwsCryptographyPrimitivesTypes" + m_Digest "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/Digest" + m_HKDF "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/HKDF" + m_KdfCtr "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/KdfCtr" + m_Random "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/Random" + m_WrappedHKDF "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/WrappedHKDF" + m_WrappedHMAC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/WrappedHMAC" + m_Actions "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Actions" + m_Base64 "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Base64" + m_Base64Lemmas "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Base64Lemmas" + m_BoundedInts "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/BoundedInts" + m_DivInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivInternals" + m_DivInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivInternalsNonlinear" + m_DivMod "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivMod" + m_FileIO "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/FileIO" + m_FloatCompare "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/FloatCompare" + m_Functions "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Functions" + m_GeneralInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/GeneralInternals" + m_GetOpt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/GetOpt" + m_HexStrings "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/HexStrings" + m_Logarithm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Logarithm" + m__Math "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Math_" + m_ModInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/ModInternals" + m_ModInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/ModInternalsNonlinear" + m_Mul "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Mul" + m_MulInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/MulInternals" + m_MulInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/MulInternalsNonlinear" + m_Power "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Power" + m_Relations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Relations" + m_Seq "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Seq" + m_Seq_MergeSort "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Seq_MergeSort" + m_Sorting "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Sorting" + m_StandardLibrary "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary" + m_StandardLibraryInterop "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibraryInterop" + m_StandardLibrary_MemoryMath "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_MemoryMath" + m_StandardLibrary_Sequence "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_Sequence" + m_StandardLibrary_String "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_String" + m_StandardLibrary_UInt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_UInt" + m_Streams "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Streams" + m_UnicodeStrings "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/UnicodeStrings" + m__Unicode "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Unicode_" + m_Utf16EncodingForm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Utf16EncodingForm" + m_Utf8EncodingForm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Utf8EncodingForm" + m_Wrappers "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Wrappers" + m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes" + m_OptimizedMergeSort "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/OptimizedMergeSort" + m_Sets "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/Sets" + m_SortCanon "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/SortCanon" + m_StructuredEncryptionFooter "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionFooter" + m_StructuredEncryptionHeader "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionHeader" + m_StructuredEncryptionPaths "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionPaths" + m_StructuredEncryptionUtil "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionUtil" + m__System "github.com/dafny-lang/DafnyRuntimeGo/v4/System_" + _dafny "github.com/dafny-lang/DafnyRuntimeGo/v4/dafny" +) + +var _ = os.Args +var _ _dafny.Dummy__ +var _ m__System.Dummy__ +var _ m_Wrappers.Dummy__ +var _ m_BoundedInts.Dummy__ +var _ m_StandardLibrary_UInt.Dummy__ +var _ m_StandardLibrary_MemoryMath.Dummy__ +var _ m_StandardLibrary_Sequence.Dummy__ +var _ m_StandardLibrary_String.Dummy__ +var _ m_StandardLibrary.Dummy__ +var _ m_AwsCryptographyPrimitivesTypes.Dummy__ +var _ m_Random.Dummy__ +var _ m_Digest.Dummy__ +var _ m_WrappedHMAC.Dummy__ +var _ m_HKDF.Dummy__ +var _ m_WrappedHKDF.Dummy__ +var _ m_KdfCtr.Dummy__ +var _ m_AwsCryptographyPrimitivesOperations.Dummy__ +var _ m_AtomicPrimitives.Dummy__ +var _ m_ComAmazonawsDynamodbTypes.Dummy__ +var _ m_ComAmazonawsKmsTypes.Dummy__ +var _ m_AwsCryptographyKeyStoreTypes.Dummy__ +var _ m_AwsCryptographyMaterialProvidersTypes.Dummy__ +var _ m_Base64.Dummy__ +var _ m_AlgorithmSuites.Dummy__ +var _ m_Materials.Dummy__ +var _ m_Keyring.Dummy__ +var _ m_Relations.Dummy__ +var _ m_Seq_MergeSort.Dummy__ +var _ m__Math.Dummy__ +var _ m_Seq.Dummy__ +var _ m_Actions.Dummy__ +var _ m_CanonicalEncryptionContext.Dummy__ +var _ m_MaterialWrapping.Dummy__ +var _ m_IntermediateKeyWrapping.Dummy__ +var _ m_EdkWrapping.Dummy__ +var _ m_ErrorMessages.Dummy__ +var _ m_RawAESKeyring.Dummy__ +var _ m_AwsArnParsing.Dummy__ +var _ m_Constants.Dummy__ +var _ m_EcdhEdkWrapping.Dummy__ +var _ m_RawECDHKeyring.Dummy__ +var _ m_RawRSAKeyring.Dummy__ +var _ m_AwsKmsMrkMatchForDecrypt.Dummy__ +var _ m_AwsKmsUtils.Dummy__ +var _ m_AwsKmsKeyring.Dummy__ +var _ m_AwsKmsDiscoveryKeyring.Dummy__ +var _ m_AwsKmsEcdhKeyring.Dummy__ +var _ m_FileIO.Dummy__ +var _ m_LocalCMC.Dummy__ +var _ m_SynchronizedLocalCMC.Dummy__ +var _ m_StormTracker.Dummy__ +var _ m_StormTrackingCMC.Dummy__ +var _ m_CacheConstants.Dummy__ +var _ m_AwsKmsHierarchicalKeyring.Dummy__ +var _ m_AwsKmsMrkDiscoveryKeyring.Dummy__ +var _ m_AwsKmsMrkKeyring.Dummy__ +var _ m_AwsKmsRsaKeyring.Dummy__ +var _ m_MultiKeyring.Dummy__ +var _ m_AwsKmsMrkAreUnique.Dummy__ +var _ m_StrictMultiKeyring.Dummy__ +var _ m_Com_Amazonaws_Kms.Dummy__ +var _ m_Com_Amazonaws_Dynamodb.Dummy__ +var _ m_DiscoveryMultiKeyring.Dummy__ +var _ m_MrkAwareDiscoveryMultiKeyring.Dummy__ +var _ m_MrkAwareStrictMultiKeyring.Dummy__ +var _ m_CMM.Dummy__ +var _ m_Defaults.Dummy__ +var _ m_Commitment.Dummy__ +var _ m_DefaultCMM.Dummy__ +var _ m_DefaultClientSupplier.Dummy__ +var _ m_Utils.Dummy__ +var _ m_RequiredEncryptionContextCMM.Dummy__ +var _ m_AwsCryptographyMaterialProvidersOperations.Dummy__ +var _ m_MaterialProviders.Dummy__ +var _ m_KeyStoreErrorMessages.Dummy__ +var _ m_KmsArn.Dummy__ +var _ m_Structure.Dummy__ +var _ m_KMSKeystoreOperations.Dummy__ +var _ m_DDBKeystoreOperations.Dummy__ +var _ m_CreateKeys.Dummy__ +var _ m_CreateKeyStoreTable.Dummy__ +var _ m_GetKeys.Dummy__ +var _ m_AwsCryptographyKeyStoreOperations.Dummy__ +var _ m_KeyStore.Dummy__ +var _ m__Unicode.Dummy__ +var _ m_Functions.Dummy__ +var _ m_Utf8EncodingForm.Dummy__ +var _ m_Utf16EncodingForm.Dummy__ +var _ m_UnicodeStrings.Dummy__ +var _ m_GeneralInternals.Dummy__ +var _ m_MulInternalsNonlinear.Dummy__ +var _ m_MulInternals.Dummy__ +var _ m_Mul.Dummy__ +var _ m_ModInternalsNonlinear.Dummy__ +var _ m_DivInternalsNonlinear.Dummy__ +var _ m_ModInternals.Dummy__ +var _ m_DivInternals.Dummy__ +var _ m_DivMod.Dummy__ +var _ m_Power.Dummy__ +var _ m_Logarithm.Dummy__ +var _ m_StandardLibraryInterop.Dummy__ +var _ m_Streams.Dummy__ +var _ m_Sorting.Dummy__ +var _ m_HexStrings.Dummy__ +var _ m_GetOpt.Dummy__ +var _ m_FloatCompare.Dummy__ +var _ m_Base64Lemmas.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Dummy__ +var _ m_StructuredEncryptionUtil.Dummy__ +var _ m_Sets.Dummy__ +var _ m_StructuredEncryptionPaths.Dummy__ +var _ m_StructuredEncryptionHeader.Dummy__ +var _ m_StructuredEncryptionFooter.Dummy__ +var _ m_OptimizedMergeSort.Dummy__ +var _ m_SortCanon.Dummy__ + +type Dummy__ struct{} + +// Definition of class Default__ +type Default__ struct { + dummy byte +} + +func New_Default___() *Default__ { + _this := Default__{} + + return &_this +} + +type CompanionStruct_Default___ struct { +} + +var Companion_Default___ = CompanionStruct_Default___{} + +func (_this *Default__) Equals(other *Default__) bool { + return _this == other +} + +func (_this *Default__) EqualsGeneric(x interface{}) bool { + other, ok := x.(*Default__) + return ok && _this.Equals(other) +} + +func (*Default__) String() string { + return "Canonize.Default__" +} +func (_this *Default__) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = &Default__{} + +func (_static *CompanionStruct_Default___) IsCanonPath(table _dafny.Sequence, origKey _dafny.Sequence, key _dafny.Sequence) bool { + return _dafny.Companion_Sequence_.Equal(key, m_StructuredEncryptionPaths.Companion_Default___.CanonPath(table, origKey)) +} +func (_static *CompanionStruct_Default___) MakeCanon(tableName _dafny.Sequence, data m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.CryptoItem) m_StructuredEncryptionUtil.CanonCryptoItem { + return m_StructuredEncryptionUtil.Companion_CanonCryptoItem_.Create_CanonCryptoItem_(m_StructuredEncryptionPaths.Companion_Default___.CanonPath(tableName, (data).Dtor_key()), (data).Dtor_key(), (data).Dtor_data(), (data).Dtor_action()) +} +func (_static *CompanionStruct_Default___) MakeCanonAuth(tableName _dafny.Sequence, data m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.AuthItem) m_StructuredEncryptionUtil.CanonAuthItem { + return m_StructuredEncryptionUtil.Companion_CanonAuthItem_.Create_CanonAuthItem_(m_StructuredEncryptionPaths.Companion_Default___.CanonPath(tableName, (data).Dtor_key()), (data).Dtor_key(), (data).Dtor_data(), (data).Dtor_action()) +} +func (_static *CompanionStruct_Default___) Same(x m_StructuredEncryptionUtil.CanonAuthItem, y m_StructuredEncryptionUtil.CanonCryptoItem) bool { + return ((_dafny.Companion_Sequence_.Equal((x).Dtor_key(), (y).Dtor_key())) && (_dafny.Companion_Sequence_.Equal((x).Dtor_origKey(), (y).Dtor_origKey()))) && (((x).Dtor_data()).Equals((y).Dtor_data())) +} +func (_static *CompanionStruct_Default___) MakeCryptoItem(x m_StructuredEncryptionUtil.CanonAuthItem, action m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.CryptoAction) m_StructuredEncryptionUtil.CanonCryptoItem { + return m_StructuredEncryptionUtil.Companion_CanonCryptoItem_.Create_CanonCryptoItem_((x).Dtor_key(), (x).Dtor_origKey(), (x).Dtor_data(), action) +} +func (_static *CompanionStruct_Default___) LegendToAction(v uint8) m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.CryptoAction { + if (v) == (m_StructuredEncryptionHeader.Companion_Default___.ENCRYPT__AND__SIGN__LEGEND()) { + return m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Companion_CryptoAction_.Create_ENCRYPT__AND__SIGN_() + } else if (v) == (m_StructuredEncryptionHeader.Companion_Default___.SIGN__AND__INCLUDE__IN__ENCRYPTION__CONTEXT__LEGEND()) { + return m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Companion_CryptoAction_.Create_SIGN__AND__INCLUDE__IN__ENCRYPTION__CONTEXT_() + } else { + return m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Companion_CryptoAction_.Create_SIGN__ONLY_() + } +} +func (_static *CompanionStruct_Default___) ResolveLegend(fields _dafny.Sequence, legend _dafny.Sequence, pos uint64, legendPos uint64, acc _dafny.Sequence) m_Wrappers.Result { + goto TAIL_CALL_START +TAIL_CALL_START: + if (uint64((fields).Cardinality())) == (pos) { + var _0_valueOrError0 m_Wrappers.Outcome = m_Wrappers.Companion_Default___.Need((uint64((legend).Cardinality())) == (legendPos), m_StructuredEncryptionUtil.Companion_Default___.E(_dafny.SeqOfString("Schema changed : something that was signed is now unsigned."))) + _ = _0_valueOrError0 + if (_0_valueOrError0).IsFailure() { + return (_0_valueOrError0).PropagateFailure() + } else { + return m_Wrappers.Companion_Result_.Create_Success_(acc) + } + } else if (((fields).Select(uint32(pos)).(m_StructuredEncryptionUtil.CanonAuthItem)).Dtor_action()).Equals(m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Companion_AuthenticateAction_.Create_DO__NOT__SIGN_()) { + var _in0 _dafny.Sequence = fields + _ = _in0 + var _in1 _dafny.Sequence = legend + _ = _in1 + var _in2 uint64 = (pos) + (uint64(1)) + _ = _in2 + var _in3 uint64 = legendPos + _ = _in3 + var _in4 _dafny.Sequence = _dafny.Companion_Sequence_.Concatenate(acc, _dafny.SeqOf(Companion_Default___.MakeCryptoItem((fields).Select(uint32(pos)).(m_StructuredEncryptionUtil.CanonAuthItem), m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Companion_CryptoAction_.Create_DO__NOTHING_()))) + _ = _in4 + fields = _in0 + legend = _in1 + pos = _in2 + legendPos = _in3 + acc = _in4 + goto TAIL_CALL_START + } else { + var _1_valueOrError1 m_Wrappers.Outcome = m_Wrappers.Companion_Default___.Need((legendPos) < (uint64((legend).Cardinality())), m_StructuredEncryptionUtil.Companion_Default___.E(_dafny.SeqOfString("Schema changed : something that was unsigned is now signed."))) + _ = _1_valueOrError1 + if (_1_valueOrError1).IsFailure() { + return (_1_valueOrError1).PropagateFailure() + } else { + var _in5 _dafny.Sequence = fields + _ = _in5 + var _in6 _dafny.Sequence = legend + _ = _in6 + var _in7 uint64 = (pos) + (uint64(1)) + _ = _in7 + var _in8 uint64 = (legendPos) + (uint64(1)) + _ = _in8 + var _in9 _dafny.Sequence = _dafny.Companion_Sequence_.Concatenate(acc, _dafny.SeqOf(Companion_Default___.MakeCryptoItem((fields).Select(uint32(pos)).(m_StructuredEncryptionUtil.CanonAuthItem), Companion_Default___.LegendToAction((legend).Select(uint32(legendPos)).(uint8))))) + _ = _in9 + fields = _in5 + legend = _in6 + pos = _in7 + legendPos = _in8 + acc = _in9 + goto TAIL_CALL_START + } + } +} +func (_static *CompanionStruct_Default___) ForEncrypt(tableName _dafny.Sequence, data _dafny.Sequence) m_Wrappers.Result { + var _0_valueOrError0 m_Wrappers.Outcome = m_Wrappers.Companion_Default___.Need(_dafny.Quantifier((data).UniqueElements(), true, func(_forall_var_0 m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.CryptoItem) bool { + var _1_k m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.CryptoItem + _1_k = interface{}(_forall_var_0).(m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.CryptoItem) + return !(_dafny.Companion_Sequence_.Contains(data, _1_k)) || (m_StructuredEncryptionPaths.Companion_Default___.ValidPath((_1_k).Dtor_key())) + }), m_StructuredEncryptionUtil.Companion_Default___.E(_dafny.SeqOfString("Invalid Paths"))) + _ = _0_valueOrError0 + if (_0_valueOrError0).IsFailure() { + return (_0_valueOrError0).PropagateFailure() + } else { + var _2_canonList _dafny.Sequence = Companion_Default___.CryptoToCanonCrypto(tableName, data) + _ = _2_canonList + return m_Wrappers.Companion_Result_.Create_Success_(Companion_Default___.CryptoSort(_2_canonList)) + } +} +func (_static *CompanionStruct_Default___) AuthToCanonAuth(tableName _dafny.Sequence, data _dafny.Sequence) _dafny.Sequence { + var _0_canonList _dafny.Sequence = m_Seq.Companion_Default___.Map(func(coer16 func(m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.AuthItem) m_StructuredEncryptionUtil.CanonAuthItem) func(interface{}) interface{} { + return func(arg25 interface{}) interface{} { + return coer16(arg25.(m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.AuthItem)) + } + }((func(_1_tableName _dafny.Sequence) func(m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.AuthItem) m_StructuredEncryptionUtil.CanonAuthItem { + return func(_2_s m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.AuthItem) m_StructuredEncryptionUtil.CanonAuthItem { + return Companion_Default___.MakeCanonAuth(_1_tableName, _2_s) + } + })(tableName)), data) + _ = _0_canonList + return _0_canonList +} +func (_static *CompanionStruct_Default___) CryptoToCanonCrypto(tableName _dafny.Sequence, data _dafny.Sequence) _dafny.Sequence { + var _0_canonList _dafny.Sequence = m_Seq.Companion_Default___.Map(func(coer17 func(m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.CryptoItem) m_StructuredEncryptionUtil.CanonCryptoItem) func(interface{}) interface{} { + return func(arg26 interface{}) interface{} { + return coer17(arg26.(m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.CryptoItem)) + } + }((func(_1_tableName _dafny.Sequence) func(m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.CryptoItem) m_StructuredEncryptionUtil.CanonCryptoItem { + return func(_2_s m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.CryptoItem) m_StructuredEncryptionUtil.CanonCryptoItem { + return Companion_Default___.MakeCanon(_1_tableName, _2_s) + } + })(tableName)), data) + _ = _0_canonList + return _0_canonList +} +func (_static *CompanionStruct_Default___) AuthSort(canonList _dafny.Sequence) _dafny.Sequence { + var _0_canonSorted _dafny.Sequence = m_SortCanon.Companion_Default___.AuthSort(canonList) + _ = _0_canonSorted + return _0_canonSorted +} +func (_static *CompanionStruct_Default___) CryptoSort(canonList _dafny.Sequence) _dafny.Sequence { + var _0_canonSorted _dafny.Sequence = m_SortCanon.Companion_Default___.CryptoSort(canonList) + _ = _0_canonSorted + return _0_canonSorted +} +func (_static *CompanionStruct_Default___) DoResolveLegend(canonSorted _dafny.Sequence, legend _dafny.Sequence) m_Wrappers.Result { + var _0_valueOrError0 m_Wrappers.Result = Companion_Default___.ResolveLegend(canonSorted, legend, uint64(0), uint64(0), _dafny.SeqOf()) + _ = _0_valueOrError0 + if (_0_valueOrError0).IsFailure() { + return (_0_valueOrError0).PropagateFailure() + } else { + var _1_canonResolved _dafny.Sequence = (_0_valueOrError0).Extract().(_dafny.Sequence) + _ = _1_canonResolved + return m_Wrappers.Companion_Result_.Create_Success_(_1_canonResolved) + } +} +func (_static *CompanionStruct_Default___) ForDecrypt(tableName _dafny.Sequence, data _dafny.Sequence, legend _dafny.Sequence) m_Wrappers.Result { + var _0_valueOrError0 m_Wrappers.Outcome = m_Wrappers.Companion_Default___.Need(_dafny.Quantifier((data).UniqueElements(), true, func(_forall_var_0 m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.AuthItem) bool { + var _1_k m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.AuthItem + _1_k = interface{}(_forall_var_0).(m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.AuthItem) + return !(_dafny.Companion_Sequence_.Contains(data, _1_k)) || (m_StructuredEncryptionPaths.Companion_Default___.ValidPath((_1_k).Dtor_key())) + }), m_StructuredEncryptionUtil.Companion_Default___.E(_dafny.SeqOfString("Invalid Paths"))) + _ = _0_valueOrError0 + if (_0_valueOrError0).IsFailure() { + return (_0_valueOrError0).PropagateFailure() + } else { + var _2_canonList _dafny.Sequence = Companion_Default___.AuthToCanonAuth(tableName, data) + _ = _2_canonList + var _3_canonSorted _dafny.Sequence = Companion_Default___.AuthSort(_2_canonList) + _ = _3_canonSorted + return Companion_Default___.DoResolveLegend(_3_canonSorted, legend) + } +} +func (_static *CompanionStruct_Default___) SameUnCanon(x m_StructuredEncryptionUtil.CanonCryptoItem, y m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.CryptoItem) bool { + return ((_dafny.Companion_Sequence_.Equal((x).Dtor_origKey(), (y).Dtor_key())) && (((x).Dtor_data()).Equals((y).Dtor_data()))) && (((x).Dtor_action()).Equals((y).Dtor_action())) +} +func (_static *CompanionStruct_Default___) UnCanon(input _dafny.Sequence, pos uint64, acc _dafny.Sequence) _dafny.Sequence { + goto TAIL_CALL_START +TAIL_CALL_START: + if (uint64((input).Cardinality())) == (pos) { + return acc + } else { + var _0_newItem m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.CryptoItem = m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Companion_CryptoItem_.Create_CryptoItem_(((input).Select(uint32(pos)).(m_StructuredEncryptionUtil.CanonCryptoItem)).Dtor_origKey(), ((input).Select(uint32(pos)).(m_StructuredEncryptionUtil.CanonCryptoItem)).Dtor_data(), ((input).Select(uint32(pos)).(m_StructuredEncryptionUtil.CanonCryptoItem)).Dtor_action()) + _ = _0_newItem + var _in0 _dafny.Sequence = input + _ = _in0 + var _in1 uint64 = (pos) + (uint64(1)) + _ = _in1 + var _in2 _dafny.Sequence = _dafny.Companion_Sequence_.Concatenate(acc, _dafny.SeqOf(_0_newItem)) + _ = _in2 + input = _in0 + pos = _in1 + acc = _in2 + goto TAIL_CALL_START + } +} +func (_static *CompanionStruct_Default___) UnCanonDecrypt(input _dafny.Sequence) _dafny.Sequence { + var _0_results _dafny.Sequence = Companion_Default___.UnCanon(input, uint64(0), _dafny.SeqOf()) + _ = _0_results + return _0_results +} +func (_static *CompanionStruct_Default___) UnCanonEncrypt(input _dafny.Sequence) _dafny.Sequence { + var _0_results _dafny.Sequence = Companion_Default___.UnCanon(input, uint64(0), _dafny.SeqOf()) + _ = _0_results + return _0_results +} +func (_static *CompanionStruct_Default___) AddHeaders(input _dafny.Sequence, headerData m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.StructuredDataTerminal, footerData m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.StructuredDataTerminal) _dafny.Sequence { + var _0_headItem m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.CryptoItem = m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Companion_CryptoItem_.Create_CryptoItem_(m_StructuredEncryptionUtil.Companion_Default___.HeaderPath(), headerData, m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Companion_CryptoAction_.Create_DO__NOTHING_()) + _ = _0_headItem + var _1_footItem m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.CryptoItem = m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Companion_CryptoItem_.Create_CryptoItem_(m_StructuredEncryptionUtil.Companion_Default___.FooterPath(), footerData, m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Companion_CryptoAction_.Create_DO__NOTHING_()) + _ = _1_footItem + var _2_largeResult _dafny.Sequence = _dafny.Companion_Sequence_.Concatenate(input, _dafny.SeqOf(_0_headItem, _1_footItem)) + _ = _2_largeResult + return _2_largeResult +} +func (_static *CompanionStruct_Default___) RemoveHeaderPaths(xs _dafny.Sequence, pos uint64, acc _dafny.Sequence) _dafny.Sequence { + goto TAIL_CALL_START +TAIL_CALL_START: + if (uint64((xs).Cardinality())) == (pos) { + return acc + } else if _dafny.Companion_Sequence_.Contains(_dafny.SeqOf(m_StructuredEncryptionUtil.Companion_Default___.HeaderPath(), m_StructuredEncryptionUtil.Companion_Default___.FooterPath()), ((xs).Select(uint32(pos)).(m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.CryptoItem)).Dtor_key()) { + var _in0 _dafny.Sequence = xs + _ = _in0 + var _in1 uint64 = (pos) + (uint64(1)) + _ = _in1 + var _in2 _dafny.Sequence = acc + _ = _in2 + xs = _in0 + pos = _in1 + acc = _in2 + goto TAIL_CALL_START + } else { + var _in3 _dafny.Sequence = xs + _ = _in3 + var _in4 uint64 = (pos) + (uint64(1)) + _ = _in4 + var _in5 _dafny.Sequence = _dafny.Companion_Sequence_.Concatenate(acc, _dafny.SeqOf((xs).Select(uint32(pos)).(m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.CryptoItem))) + _ = _in5 + xs = _in3 + pos = _in4 + acc = _in5 + goto TAIL_CALL_START + } +} +func (_static *CompanionStruct_Default___) RemoveHeaders(input _dafny.Sequence) _dafny.Sequence { + var _0_finalData _dafny.Sequence = Companion_Default___.RemoveHeaderPaths(input, uint64(0), _dafny.SeqOf()) + _ = _0_finalData + return _0_finalData +} + +// End of class Default__ + +// Definition of datatype EncryptionSelector +type EncryptionSelector struct { + Data_EncryptionSelector_ +} + +func (_this EncryptionSelector) Get_() Data_EncryptionSelector_ { + return _this.Data_EncryptionSelector_ +} + +type Data_EncryptionSelector_ interface { + isEncryptionSelector() +} + +type CompanionStruct_EncryptionSelector_ struct { +} + +var Companion_EncryptionSelector_ = CompanionStruct_EncryptionSelector_{} + +type EncryptionSelector_DoEncrypt struct { +} + +func (EncryptionSelector_DoEncrypt) isEncryptionSelector() {} + +func (CompanionStruct_EncryptionSelector_) Create_DoEncrypt_() EncryptionSelector { + return EncryptionSelector{EncryptionSelector_DoEncrypt{}} +} + +func (_this EncryptionSelector) Is_DoEncrypt() bool { + _, ok := _this.Get_().(EncryptionSelector_DoEncrypt) + return ok +} + +type EncryptionSelector_DoDecrypt struct { +} + +func (EncryptionSelector_DoDecrypt) isEncryptionSelector() {} + +func (CompanionStruct_EncryptionSelector_) Create_DoDecrypt_() EncryptionSelector { + return EncryptionSelector{EncryptionSelector_DoDecrypt{}} +} + +func (_this EncryptionSelector) Is_DoDecrypt() bool { + _, ok := _this.Get_().(EncryptionSelector_DoDecrypt) + return ok +} + +func (CompanionStruct_EncryptionSelector_) Default() EncryptionSelector { + return Companion_EncryptionSelector_.Create_DoEncrypt_() +} + +func (_ CompanionStruct_EncryptionSelector_) AllSingletonConstructors() _dafny.Iterator { + i := -1 + return func() (interface{}, bool) { + i++ + switch i { + case 0: + return Companion_EncryptionSelector_.Create_DoEncrypt_(), true + case 1: + return Companion_EncryptionSelector_.Create_DoDecrypt_(), true + default: + return EncryptionSelector{}, false + } + } +} + +func (_this EncryptionSelector) String() string { + switch _this.Get_().(type) { + case nil: + return "null" + case EncryptionSelector_DoEncrypt: + { + return "Canonize.EncryptionSelector.DoEncrypt" + } + case EncryptionSelector_DoDecrypt: + { + return "Canonize.EncryptionSelector.DoDecrypt" + } + default: + { + return "" + } + } +} + +func (_this EncryptionSelector) Equals(other EncryptionSelector) bool { + switch _this.Get_().(type) { + case EncryptionSelector_DoEncrypt: + { + _, ok := other.Get_().(EncryptionSelector_DoEncrypt) + return ok + } + case EncryptionSelector_DoDecrypt: + { + _, ok := other.Get_().(EncryptionSelector_DoDecrypt) + return ok + } + default: + { + return false // unexpected + } + } +} + +func (_this EncryptionSelector) EqualsGeneric(other interface{}) bool { + typed, ok := other.(EncryptionSelector) + return ok && _this.Equals(typed) +} + +func Type_EncryptionSelector_() _dafny.TypeDescriptor { + return type_EncryptionSelector_{} +} + +type type_EncryptionSelector_ struct { +} + +func (_this type_EncryptionSelector_) Default() interface{} { + return Companion_EncryptionSelector_.Default() +} + +func (_this type_EncryptionSelector_) String() string { + return "Canonize.EncryptionSelector" +} +func (_this EncryptionSelector) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = EncryptionSelector{} + +// End of datatype EncryptionSelector diff --git a/releases/go/dynamodb-esdk/CompoundBeacon/CompoundBeacon.go b/releases/go/dynamodb-esdk/CompoundBeacon/CompoundBeacon.go new file mode 100644 index 000000000..14efc14d3 --- /dev/null +++ b/releases/go/dynamodb-esdk/CompoundBeacon/CompoundBeacon.go @@ -0,0 +1,1841 @@ +// Package CompoundBeacon +// Dafny module CompoundBeacon compiled into Go + +package CompoundBeacon + +import ( + os "os" + + m_ComAmazonawsDynamodbTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/dynamodb/ComAmazonawsDynamodbTypes" + m_Com_Amazonaws_Dynamodb "github.com/aws/aws-cryptographic-material-providers-library/releases/go/dynamodb/Com_Amazonaws_Dynamodb" + m_ComAmazonawsKmsTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/kms/ComAmazonawsKmsTypes" + m_Com_Amazonaws_Kms "github.com/aws/aws-cryptographic-material-providers-library/releases/go/kms/Com_Amazonaws_Kms" + m_AlgorithmSuites "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AlgorithmSuites" + m_AwsArnParsing "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsArnParsing" + m_AwsCryptographyKeyStoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyKeyStoreOperations" + m_AwsCryptographyKeyStoreTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyKeyStoreTypes" + m_AwsCryptographyMaterialProvidersOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyMaterialProvidersOperations" + m_AwsCryptographyMaterialProvidersTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyMaterialProvidersTypes" + m_AwsKmsDiscoveryKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsDiscoveryKeyring" + m_AwsKmsEcdhKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsEcdhKeyring" + m_AwsKmsHierarchicalKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsHierarchicalKeyring" + m_AwsKmsKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsKeyring" + m_AwsKmsMrkAreUnique "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkAreUnique" + m_AwsKmsMrkDiscoveryKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkDiscoveryKeyring" + m_AwsKmsMrkKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkKeyring" + m_AwsKmsMrkMatchForDecrypt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkMatchForDecrypt" + m_AwsKmsRsaKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsRsaKeyring" + m_AwsKmsUtils "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsUtils" + m_CMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CMM" + m_CacheConstants "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CacheConstants" + m_CanonicalEncryptionContext "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CanonicalEncryptionContext" + m_Commitment "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Commitment" + m_Constants "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Constants" + m_CreateKeyStoreTable "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CreateKeyStoreTable" + m_CreateKeys "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CreateKeys" + m_DDBKeystoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DDBKeystoreOperations" + m_DefaultCMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DefaultCMM" + m_DefaultClientSupplier "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DefaultClientSupplier" + m_Defaults "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Defaults" + m_DiscoveryMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DiscoveryMultiKeyring" + m_EcdhEdkWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/EcdhEdkWrapping" + m_EdkWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/EdkWrapping" + m_ErrorMessages "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/ErrorMessages" + m_GetKeys "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/GetKeys" + m_IntermediateKeyWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/IntermediateKeyWrapping" + m_KMSKeystoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KMSKeystoreOperations" + m_KeyStore "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KeyStore" + m_KeyStoreErrorMessages "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KeyStoreErrorMessages" + m_Keyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Keyring" + m_KmsArn "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KmsArn" + m_LocalCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/LocalCMC" + m_MaterialProviders "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MaterialProviders" + m_MaterialWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MaterialWrapping" + m_Materials "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Materials" + m_MrkAwareDiscoveryMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MrkAwareDiscoveryMultiKeyring" + m_MrkAwareStrictMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MrkAwareStrictMultiKeyring" + m_MultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MultiKeyring" + m_RawAESKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawAESKeyring" + m_RawECDHKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawECDHKeyring" + m_RawRSAKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawRSAKeyring" + m_RequiredEncryptionContextCMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RequiredEncryptionContextCMM" + m_StormTracker "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StormTracker" + m_StormTrackingCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StormTrackingCMC" + m_StrictMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StrictMultiKeyring" + m_Structure "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Structure" + m_SynchronizedLocalCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/SynchronizedLocalCMC" + m_Utils "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Utils" + m_AtomicPrimitives "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AtomicPrimitives" + m_AwsCryptographyPrimitivesOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AwsCryptographyPrimitivesOperations" + m_AwsCryptographyPrimitivesTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AwsCryptographyPrimitivesTypes" + m_Digest "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/Digest" + m_HKDF "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/HKDF" + m_KdfCtr "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/KdfCtr" + m_Random "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/Random" + m_WrappedHKDF "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/WrappedHKDF" + m_WrappedHMAC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/WrappedHMAC" + m_Actions "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Actions" + m_Base64 "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Base64" + m_Base64Lemmas "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Base64Lemmas" + m_BoundedInts "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/BoundedInts" + m_DivInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivInternals" + m_DivInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivInternalsNonlinear" + m_DivMod "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivMod" + m_FileIO "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/FileIO" + m_FloatCompare "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/FloatCompare" + m_Functions "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Functions" + m_GeneralInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/GeneralInternals" + m_GetOpt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/GetOpt" + m_HexStrings "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/HexStrings" + m_Logarithm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Logarithm" + m__Math "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Math_" + m_ModInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/ModInternals" + m_ModInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/ModInternalsNonlinear" + m_Mul "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Mul" + m_MulInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/MulInternals" + m_MulInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/MulInternalsNonlinear" + m_Power "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Power" + m_Relations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Relations" + m_Seq "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Seq" + m_Seq_MergeSort "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Seq_MergeSort" + m_Sorting "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Sorting" + m_StandardLibrary "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary" + m_StandardLibraryInterop "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibraryInterop" + m_StandardLibrary_MemoryMath "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_MemoryMath" + m_StandardLibrary_Sequence "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_Sequence" + m_StandardLibrary_String "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_String" + m_StandardLibrary_UInt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_UInt" + m_Streams "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Streams" + m_UnicodeStrings "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/UnicodeStrings" + m__Unicode "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Unicode_" + m_Utf16EncodingForm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Utf16EncodingForm" + m_Utf8EncodingForm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Utf8EncodingForm" + m_Wrappers "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Wrappers" + m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations" + m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes" + m_AwsCryptographyDbEncryptionSdkDynamoDbOperations "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbOperations" + m_AwsCryptographyDbEncryptionSdkDynamoDbTypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbTypes" + m_AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations" + m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes" + m_BaseBeacon "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/BaseBeacon" + m_Canonize "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/Canonize" + m_DdbVirtualFields "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DdbVirtualFields" + m_DynamoDbEncryption "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbEncryption" + m_DynamoDbEncryptionBranchKeyIdSupplier "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbEncryptionBranchKeyIdSupplier" + m_DynamoDbEncryptionUtil "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbEncryptionUtil" + m_DynamoDbItemEncryptor "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbItemEncryptor" + m_DynamoDbItemEncryptorUtil "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbItemEncryptorUtil" + m_DynamoDbNormalizeNumber "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbNormalizeNumber" + m_DynamoDbUpdateExpr "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbUpdateExpr" + m_DynamoToStruct "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoToStruct" + m_InternalLegacyOverride "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/InternalLegacyOverride" + m__Maps "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/Maps_" + m_OptimizedMergeSort "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/OptimizedMergeSort" + m_Sets "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/Sets" + m_SortCanon "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/SortCanon" + m_StructuredEncryption "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryption" + m_StructuredEncryptionCrypt "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionCrypt" + m_StructuredEncryptionFooter "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionFooter" + m_StructuredEncryptionHeader "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionHeader" + m_StructuredEncryptionPaths "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionPaths" + m_StructuredEncryptionUtil "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionUtil" + m_TermLoc "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/TermLoc" + m__System "github.com/dafny-lang/DafnyRuntimeGo/v4/System_" + _dafny "github.com/dafny-lang/DafnyRuntimeGo/v4/dafny" +) + +var _ = os.Args +var _ _dafny.Dummy__ +var _ m__System.Dummy__ +var _ m_Wrappers.Dummy__ +var _ m_BoundedInts.Dummy__ +var _ m_StandardLibrary_UInt.Dummy__ +var _ m_StandardLibrary_MemoryMath.Dummy__ +var _ m_StandardLibrary_Sequence.Dummy__ +var _ m_StandardLibrary_String.Dummy__ +var _ m_StandardLibrary.Dummy__ +var _ m_AwsCryptographyPrimitivesTypes.Dummy__ +var _ m_Random.Dummy__ +var _ m_Digest.Dummy__ +var _ m_WrappedHMAC.Dummy__ +var _ m_HKDF.Dummy__ +var _ m_WrappedHKDF.Dummy__ +var _ m_KdfCtr.Dummy__ +var _ m_AwsCryptographyPrimitivesOperations.Dummy__ +var _ m_AtomicPrimitives.Dummy__ +var _ m_ComAmazonawsDynamodbTypes.Dummy__ +var _ m_ComAmazonawsKmsTypes.Dummy__ +var _ m_AwsCryptographyKeyStoreTypes.Dummy__ +var _ m_AwsCryptographyMaterialProvidersTypes.Dummy__ +var _ m_Base64.Dummy__ +var _ m_AlgorithmSuites.Dummy__ +var _ m_Materials.Dummy__ +var _ m_Keyring.Dummy__ +var _ m_Relations.Dummy__ +var _ m_Seq_MergeSort.Dummy__ +var _ m__Math.Dummy__ +var _ m_Seq.Dummy__ +var _ m_Actions.Dummy__ +var _ m_CanonicalEncryptionContext.Dummy__ +var _ m_MaterialWrapping.Dummy__ +var _ m_IntermediateKeyWrapping.Dummy__ +var _ m_EdkWrapping.Dummy__ +var _ m_ErrorMessages.Dummy__ +var _ m_RawAESKeyring.Dummy__ +var _ m_AwsArnParsing.Dummy__ +var _ m_Constants.Dummy__ +var _ m_EcdhEdkWrapping.Dummy__ +var _ m_RawECDHKeyring.Dummy__ +var _ m_RawRSAKeyring.Dummy__ +var _ m_AwsKmsMrkMatchForDecrypt.Dummy__ +var _ m_AwsKmsUtils.Dummy__ +var _ m_AwsKmsKeyring.Dummy__ +var _ m_AwsKmsDiscoveryKeyring.Dummy__ +var _ m_AwsKmsEcdhKeyring.Dummy__ +var _ m_FileIO.Dummy__ +var _ m_LocalCMC.Dummy__ +var _ m_SynchronizedLocalCMC.Dummy__ +var _ m_StormTracker.Dummy__ +var _ m_StormTrackingCMC.Dummy__ +var _ m_CacheConstants.Dummy__ +var _ m_AwsKmsHierarchicalKeyring.Dummy__ +var _ m_AwsKmsMrkDiscoveryKeyring.Dummy__ +var _ m_AwsKmsMrkKeyring.Dummy__ +var _ m_AwsKmsRsaKeyring.Dummy__ +var _ m_MultiKeyring.Dummy__ +var _ m_AwsKmsMrkAreUnique.Dummy__ +var _ m_StrictMultiKeyring.Dummy__ +var _ m_Com_Amazonaws_Kms.Dummy__ +var _ m_Com_Amazonaws_Dynamodb.Dummy__ +var _ m_DiscoveryMultiKeyring.Dummy__ +var _ m_MrkAwareDiscoveryMultiKeyring.Dummy__ +var _ m_MrkAwareStrictMultiKeyring.Dummy__ +var _ m_CMM.Dummy__ +var _ m_Defaults.Dummy__ +var _ m_Commitment.Dummy__ +var _ m_DefaultCMM.Dummy__ +var _ m_DefaultClientSupplier.Dummy__ +var _ m_Utils.Dummy__ +var _ m_RequiredEncryptionContextCMM.Dummy__ +var _ m_AwsCryptographyMaterialProvidersOperations.Dummy__ +var _ m_MaterialProviders.Dummy__ +var _ m_KeyStoreErrorMessages.Dummy__ +var _ m_KmsArn.Dummy__ +var _ m_Structure.Dummy__ +var _ m_KMSKeystoreOperations.Dummy__ +var _ m_DDBKeystoreOperations.Dummy__ +var _ m_CreateKeys.Dummy__ +var _ m_CreateKeyStoreTable.Dummy__ +var _ m_GetKeys.Dummy__ +var _ m_AwsCryptographyKeyStoreOperations.Dummy__ +var _ m_KeyStore.Dummy__ +var _ m__Unicode.Dummy__ +var _ m_Functions.Dummy__ +var _ m_Utf8EncodingForm.Dummy__ +var _ m_Utf16EncodingForm.Dummy__ +var _ m_UnicodeStrings.Dummy__ +var _ m_GeneralInternals.Dummy__ +var _ m_MulInternalsNonlinear.Dummy__ +var _ m_MulInternals.Dummy__ +var _ m_Mul.Dummy__ +var _ m_ModInternalsNonlinear.Dummy__ +var _ m_DivInternalsNonlinear.Dummy__ +var _ m_ModInternals.Dummy__ +var _ m_DivInternals.Dummy__ +var _ m_DivMod.Dummy__ +var _ m_Power.Dummy__ +var _ m_Logarithm.Dummy__ +var _ m_StandardLibraryInterop.Dummy__ +var _ m_Streams.Dummy__ +var _ m_Sorting.Dummy__ +var _ m_HexStrings.Dummy__ +var _ m_GetOpt.Dummy__ +var _ m_FloatCompare.Dummy__ +var _ m_Base64Lemmas.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Dummy__ +var _ m_StructuredEncryptionUtil.Dummy__ +var _ m_Sets.Dummy__ +var _ m_StructuredEncryptionPaths.Dummy__ +var _ m_StructuredEncryptionHeader.Dummy__ +var _ m_StructuredEncryptionFooter.Dummy__ +var _ m_OptimizedMergeSort.Dummy__ +var _ m_SortCanon.Dummy__ +var _ m_Canonize.Dummy__ +var _ m_StructuredEncryptionCrypt.Dummy__ +var _ m__Maps.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations.Dummy__ +var _ m_StructuredEncryption.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Dummy__ +var _ m_DynamoDbEncryptionUtil.Dummy__ +var _ m_DynamoDbNormalizeNumber.Dummy__ +var _ m_DynamoToStruct.Dummy__ +var _ m_DynamoDbItemEncryptorUtil.Dummy__ +var _ m_InternalLegacyOverride.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations.Dummy__ +var _ m_DynamoDbItemEncryptor.Dummy__ +var _ m_DynamoDbEncryptionBranchKeyIdSupplier.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbOperations.Dummy__ +var _ m_DynamoDbEncryption.Dummy__ +var _ m_TermLoc.Dummy__ +var _ m_DdbVirtualFields.Dummy__ +var _ m_DynamoDbUpdateExpr.Dummy__ +var _ m_BaseBeacon.Dummy__ + +type Dummy__ struct{} + +// Definition of class Default__ +type Default__ struct { + dummy byte +} + +func New_Default___() *Default__ { + _this := Default__{} + + return &_this +} + +type CompanionStruct_Default___ struct { +} + +var Companion_Default___ = CompanionStruct_Default___{} + +func (_this *Default__) Equals(other *Default__) bool { + return _this == other +} + +func (_this *Default__) EqualsGeneric(x interface{}) bool { + other, ok := x.(*Default__) + return ok && _this.Equals(other) +} + +func (*Default__) String() string { + return "CompoundBeacon.Default__" +} +func (_this *Default__) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = &Default__{} + +func (_static *CompanionStruct_Default___) MakeCompoundBeacon(base m_BaseBeacon.BeaconBase, split _dafny.Char, parts _dafny.Sequence, numSigned _dafny.Int, construct _dafny.Sequence) m_Wrappers.Result { + var _0_x CompoundBeacon = Companion_CompoundBeacon_.Create_CompoundBeacon_(base, split, parts, numSigned, construct) + _ = _0_x + var _1_valueOrError0 m_Wrappers.Result = (_0_x).ValidPrefixSetResult() + _ = _1_valueOrError0 + if (_1_valueOrError0).IsFailure() { + return (_1_valueOrError0).PropagateFailure() + } else { + var _2___v0 bool = (_1_valueOrError0).Extract().(bool) + _ = _2___v0 + return m_Wrappers.Companion_Result_.Create_Success_(_0_x) + } +} +func (_static *CompanionStruct_Default___) MakeDefaultConstructor(parts _dafny.Sequence) Constructor { + var _0_cons _dafny.Sequence = m_Seq.Companion_Default___.Map(func(coer92 func(BeaconPart) ConstructorPart) func(interface{}) interface{} { + return func(arg120 interface{}) interface{} { + return coer92(arg120.(BeaconPart)) + } + }(func(_1_x BeaconPart) ConstructorPart { + return Companion_ConstructorPart_.Create_ConstructorPart_(_1_x, true) + }), parts) + _ = _0_cons + return Companion_Constructor_.Create_Constructor_(_0_cons) +} + +// End of class Default__ + +// Definition of class Prefix +type Prefix struct { +} + +func New_Prefix_() *Prefix { + _this := Prefix{} + + return &_this +} + +type CompanionStruct_Prefix_ struct { +} + +var Companion_Prefix_ = CompanionStruct_Prefix_{} + +func (*Prefix) String() string { + return "CompoundBeacon.Prefix" +} + +// End of class Prefix + +func Type_Prefix_() _dafny.TypeDescriptor { + return type_Prefix_{} +} + +type type_Prefix_ struct { +} + +func (_this type_Prefix_) Default() interface{} { + return _dafny.EmptySeq.SetString() +} + +func (_this type_Prefix_) String() string { + return "CompoundBeacon.Prefix" +} +func (_this *CompanionStruct_Prefix_) Is_(__source _dafny.Sequence) bool { + var _2_x _dafny.Sequence = (__source) + _ = _2_x + return (_dafny.IntOfUint32((_2_x).Cardinality())).Sign() == 1 +} + +// Definition of datatype BeaconPart +type BeaconPart struct { + Data_BeaconPart_ +} + +func (_this BeaconPart) Get_() Data_BeaconPart_ { + return _this.Data_BeaconPart_ +} + +type Data_BeaconPart_ interface { + isBeaconPart() +} + +type CompanionStruct_BeaconPart_ struct { +} + +var Companion_BeaconPart_ = CompanionStruct_BeaconPart_{} + +type BeaconPart_Encrypted struct { + Prefix _dafny.Sequence + Beacon m_BaseBeacon.StandardBeacon +} + +func (BeaconPart_Encrypted) isBeaconPart() {} + +func (CompanionStruct_BeaconPart_) Create_Encrypted_(Prefix _dafny.Sequence, Beacon m_BaseBeacon.StandardBeacon) BeaconPart { + return BeaconPart{BeaconPart_Encrypted{Prefix, Beacon}} +} + +func (_this BeaconPart) Is_Encrypted() bool { + _, ok := _this.Get_().(BeaconPart_Encrypted) + return ok +} + +type BeaconPart_Signed struct { + Prefix _dafny.Sequence + Name _dafny.Sequence + Loc _dafny.Sequence +} + +func (BeaconPart_Signed) isBeaconPart() {} + +func (CompanionStruct_BeaconPart_) Create_Signed_(Prefix _dafny.Sequence, Name _dafny.Sequence, Loc _dafny.Sequence) BeaconPart { + return BeaconPart{BeaconPart_Signed{Prefix, Name, Loc}} +} + +func (_this BeaconPart) Is_Signed() bool { + _, ok := _this.Get_().(BeaconPart_Signed) + return ok +} + +func (CompanionStruct_BeaconPart_) Default() BeaconPart { + return Companion_BeaconPart_.Create_Encrypted_(_dafny.EmptySeq.SetString(), m_BaseBeacon.Companion_StandardBeacon_.Default()) +} + +func (_this BeaconPart) Dtor_prefix() _dafny.Sequence { + switch data := _this.Get_().(type) { + case BeaconPart_Encrypted: + return data.Prefix + default: + return data.(BeaconPart_Signed).Prefix + } +} + +func (_this BeaconPart) Dtor_beacon() m_BaseBeacon.StandardBeacon { + return _this.Get_().(BeaconPart_Encrypted).Beacon +} + +func (_this BeaconPart) Dtor_name() _dafny.Sequence { + return _this.Get_().(BeaconPart_Signed).Name +} + +func (_this BeaconPart) Dtor_loc() _dafny.Sequence { + return _this.Get_().(BeaconPart_Signed).Loc +} + +func (_this BeaconPart) String() string { + switch data := _this.Get_().(type) { + case nil: + return "null" + case BeaconPart_Encrypted: + { + return "CompoundBeacon.BeaconPart.Encrypted" + "(" + _dafny.String(data.Prefix) + ", " + _dafny.String(data.Beacon) + ")" + } + case BeaconPart_Signed: + { + return "CompoundBeacon.BeaconPart.Signed" + "(" + _dafny.String(data.Prefix) + ", " + _dafny.String(data.Name) + ", " + _dafny.String(data.Loc) + ")" + } + default: + { + return "" + } + } +} + +func (_this BeaconPart) Equals(other BeaconPart) bool { + switch data1 := _this.Get_().(type) { + case BeaconPart_Encrypted: + { + data2, ok := other.Get_().(BeaconPart_Encrypted) + return ok && data1.Prefix.Equals(data2.Prefix) && data1.Beacon.Equals(data2.Beacon) + } + case BeaconPart_Signed: + { + data2, ok := other.Get_().(BeaconPart_Signed) + return ok && data1.Prefix.Equals(data2.Prefix) && data1.Name.Equals(data2.Name) && data1.Loc.Equals(data2.Loc) + } + default: + { + return false // unexpected + } + } +} + +func (_this BeaconPart) EqualsGeneric(other interface{}) bool { + typed, ok := other.(BeaconPart) + return ok && _this.Equals(typed) +} + +func Type_BeaconPart_() _dafny.TypeDescriptor { + return type_BeaconPart_{} +} + +type type_BeaconPart_ struct { +} + +func (_this type_BeaconPart_) Default() interface{} { + return Companion_BeaconPart_.Default() +} + +func (_this type_BeaconPart_) String() string { + return "CompoundBeacon.BeaconPart" +} +func (_this BeaconPart) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = BeaconPart{} + +func (_this BeaconPart) GetPrefix() _dafny.Sequence { + { + var _source0 BeaconPart = _this + _ = _source0 + { + if _source0.Is_Encrypted() { + var _0_p _dafny.Sequence = _source0.Get_().(BeaconPart_Encrypted).Prefix + _ = _0_p + var _1_b m_BaseBeacon.StandardBeacon = _source0.Get_().(BeaconPart_Encrypted).Beacon + _ = _1_b + return _0_p + } + } + { + var _2_p _dafny.Sequence = _source0.Get_().(BeaconPart_Signed).Prefix + _ = _2_p + var _3_n _dafny.Sequence = _source0.Get_().(BeaconPart_Signed).Name + _ = _3_n + var _4_l _dafny.Sequence = _source0.Get_().(BeaconPart_Signed).Loc + _ = _4_l + return _2_p + } + } +} +func (_this BeaconPart) GetName() _dafny.Sequence { + { + var _source0 BeaconPart = _this + _ = _source0 + { + if _source0.Is_Encrypted() { + var _0_p _dafny.Sequence = _source0.Get_().(BeaconPart_Encrypted).Prefix + _ = _0_p + var _1_b m_BaseBeacon.StandardBeacon = _source0.Get_().(BeaconPart_Encrypted).Beacon + _ = _1_b + return ((_1_b).Dtor_base()).Dtor_name() + } + } + { + var _2_p _dafny.Sequence = _source0.Get_().(BeaconPart_Signed).Prefix + _ = _2_p + var _3_n _dafny.Sequence = _source0.Get_().(BeaconPart_Signed).Name + _ = _3_n + var _4_l _dafny.Sequence = _source0.Get_().(BeaconPart_Signed).Loc + _ = _4_l + return _3_n + } + } +} +func (_this BeaconPart) GetString(item _dafny.Map, vf _dafny.Map) m_Wrappers.Result { + { + var _source0 BeaconPart = _this + _ = _source0 + { + if _source0.Is_Encrypted() { + var _0_p _dafny.Sequence = _source0.Get_().(BeaconPart_Encrypted).Prefix + _ = _0_p + var _1_b m_BaseBeacon.StandardBeacon = _source0.Get_().(BeaconPart_Encrypted).Beacon + _ = _1_b + return m_DdbVirtualFields.Companion_Default___.VirtToString((_1_b).Dtor_loc(), item, vf) + } + } + { + var _2_p _dafny.Sequence = _source0.Get_().(BeaconPart_Signed).Prefix + _ = _2_p + var _3_n _dafny.Sequence = _source0.Get_().(BeaconPart_Signed).Name + _ = _3_n + var _4_l _dafny.Sequence = _source0.Get_().(BeaconPart_Signed).Loc + _ = _4_l + return m_DdbVirtualFields.Companion_Default___.VirtToString(_4_l, item, vf) + } + } +} +func (_this BeaconPart) GetFields(virtualFields _dafny.Map) _dafny.Sequence { + { + var _source0 BeaconPart = _this + _ = _source0 + { + if _source0.Is_Encrypted() { + var _0_p _dafny.Sequence = _source0.Get_().(BeaconPart_Encrypted).Prefix + _ = _0_p + var _1_b m_BaseBeacon.StandardBeacon = _source0.Get_().(BeaconPart_Encrypted).Beacon + _ = _1_b + return (_1_b).GetFields(virtualFields) + } + } + { + var _2_p _dafny.Sequence = _source0.Get_().(BeaconPart_Signed).Prefix + _ = _2_p + var _3_n _dafny.Sequence = _source0.Get_().(BeaconPart_Signed).Name + _ = _3_n + var _4_l _dafny.Sequence = _source0.Get_().(BeaconPart_Signed).Loc + _ = _4_l + if (virtualFields).Contains((((_this).Dtor_loc()).Select(0).(m_TermLoc.Selector)).Dtor_key()) { + return ((virtualFields).Get((((_this).Dtor_loc()).Select(0).(m_TermLoc.Selector)).Dtor_key()).(m_DdbVirtualFields.VirtField)).GetFields() + } else { + return _dafny.SeqOf((((_this).Dtor_loc()).Select(0).(m_TermLoc.Selector)).Dtor_key()) + } + } + } +} + +// End of datatype BeaconPart + +// Definition of datatype ConstructorPart +type ConstructorPart struct { + Data_ConstructorPart_ +} + +func (_this ConstructorPart) Get_() Data_ConstructorPart_ { + return _this.Data_ConstructorPart_ +} + +type Data_ConstructorPart_ interface { + isConstructorPart() +} + +type CompanionStruct_ConstructorPart_ struct { +} + +var Companion_ConstructorPart_ = CompanionStruct_ConstructorPart_{} + +type ConstructorPart_ConstructorPart struct { + Part BeaconPart + Required bool +} + +func (ConstructorPart_ConstructorPart) isConstructorPart() {} + +func (CompanionStruct_ConstructorPart_) Create_ConstructorPart_(Part BeaconPart, Required bool) ConstructorPart { + return ConstructorPart{ConstructorPart_ConstructorPart{Part, Required}} +} + +func (_this ConstructorPart) Is_ConstructorPart() bool { + _, ok := _this.Get_().(ConstructorPart_ConstructorPart) + return ok +} + +func (CompanionStruct_ConstructorPart_) Default() ConstructorPart { + return Companion_ConstructorPart_.Create_ConstructorPart_(Companion_BeaconPart_.Default(), false) +} + +func (_this ConstructorPart) Dtor_part() BeaconPart { + return _this.Get_().(ConstructorPart_ConstructorPart).Part +} + +func (_this ConstructorPart) Dtor_required() bool { + return _this.Get_().(ConstructorPart_ConstructorPart).Required +} + +func (_this ConstructorPart) String() string { + switch data := _this.Get_().(type) { + case nil: + return "null" + case ConstructorPart_ConstructorPart: + { + return "CompoundBeacon.ConstructorPart.ConstructorPart" + "(" + _dafny.String(data.Part) + ", " + _dafny.String(data.Required) + ")" + } + default: + { + return "" + } + } +} + +func (_this ConstructorPart) Equals(other ConstructorPart) bool { + switch data1 := _this.Get_().(type) { + case ConstructorPart_ConstructorPart: + { + data2, ok := other.Get_().(ConstructorPart_ConstructorPart) + return ok && data1.Part.Equals(data2.Part) && data1.Required == data2.Required + } + default: + { + return false // unexpected + } + } +} + +func (_this ConstructorPart) EqualsGeneric(other interface{}) bool { + typed, ok := other.(ConstructorPart) + return ok && _this.Equals(typed) +} + +func Type_ConstructorPart_() _dafny.TypeDescriptor { + return type_ConstructorPart_{} +} + +type type_ConstructorPart_ struct { +} + +func (_this type_ConstructorPart_) Default() interface{} { + return Companion_ConstructorPart_.Default() +} + +func (_this type_ConstructorPart_) String() string { + return "CompoundBeacon.ConstructorPart" +} +func (_this ConstructorPart) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = ConstructorPart{} + +// End of datatype ConstructorPart + +// Definition of class ConstructorPartList +type ConstructorPartList struct { +} + +func New_ConstructorPartList_() *ConstructorPartList { + _this := ConstructorPartList{} + + return &_this +} + +type CompanionStruct_ConstructorPartList_ struct { +} + +var Companion_ConstructorPartList_ = CompanionStruct_ConstructorPartList_{} + +func (*ConstructorPartList) String() string { + return "CompoundBeacon.ConstructorPartList" +} + +// End of class ConstructorPartList + +func Type_ConstructorPartList_() _dafny.TypeDescriptor { + return type_ConstructorPartList_{} +} + +type type_ConstructorPartList_ struct { +} + +func (_this type_ConstructorPartList_) Default() interface{} { + return _dafny.EmptySeq +} + +func (_this type_ConstructorPartList_) String() string { + return "CompoundBeacon.ConstructorPartList" +} +func (_this *CompanionStruct_ConstructorPartList_) Is_(__source _dafny.Sequence) bool { + var _5_x _dafny.Sequence = (__source) + _ = _5_x + return (_dafny.IntOfUint32((_5_x).Cardinality())).Sign() == 1 +} + +// Definition of datatype Constructor +type Constructor struct { + Data_Constructor_ +} + +func (_this Constructor) Get_() Data_Constructor_ { + return _this.Data_Constructor_ +} + +type Data_Constructor_ interface { + isConstructor() +} + +type CompanionStruct_Constructor_ struct { +} + +var Companion_Constructor_ = CompanionStruct_Constructor_{} + +type Constructor_Constructor struct { + Parts _dafny.Sequence +} + +func (Constructor_Constructor) isConstructor() {} + +func (CompanionStruct_Constructor_) Create_Constructor_(Parts _dafny.Sequence) Constructor { + return Constructor{Constructor_Constructor{Parts}} +} + +func (_this Constructor) Is_Constructor() bool { + _, ok := _this.Get_().(Constructor_Constructor) + return ok +} + +func (CompanionStruct_Constructor_) Default() Constructor { + return Companion_Constructor_.Create_Constructor_(_dafny.EmptySeq) +} + +func (_this Constructor) Dtor_parts() _dafny.Sequence { + return _this.Get_().(Constructor_Constructor).Parts +} + +func (_this Constructor) String() string { + switch data := _this.Get_().(type) { + case nil: + return "null" + case Constructor_Constructor: + { + return "CompoundBeacon.Constructor.Constructor" + "(" + _dafny.String(data.Parts) + ")" + } + default: + { + return "" + } + } +} + +func (_this Constructor) Equals(other Constructor) bool { + switch data1 := _this.Get_().(type) { + case Constructor_Constructor: + { + data2, ok := other.Get_().(Constructor_Constructor) + return ok && data1.Parts.Equals(data2.Parts) + } + default: + { + return false // unexpected + } + } +} + +func (_this Constructor) EqualsGeneric(other interface{}) bool { + typed, ok := other.(Constructor) + return ok && _this.Equals(typed) +} + +func Type_Constructor_() _dafny.TypeDescriptor { + return type_Constructor_{} +} + +type type_Constructor_ struct { +} + +func (_this type_Constructor_) Default() interface{} { + return Companion_Constructor_.Default() +} + +func (_this type_Constructor_) String() string { + return "CompoundBeacon.Constructor" +} +func (_this Constructor) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = Constructor{} + +func (_this Constructor) GetReqParts() _dafny.Set { + { + return func() _dafny.Set { + var _coll0 = _dafny.NewBuilder() + _ = _coll0 + for _iter20 := _dafny.Iterate(((_this).Dtor_parts()).Elements()); ; { + _compr_0, _ok20 := _iter20() + if !_ok20 { + break + } + var _0_k ConstructorPart + _0_k = interface{}(_compr_0).(ConstructorPart) + if (_dafny.Companion_Sequence_.Contains((_this).Dtor_parts(), _0_k)) && ((_0_k).Dtor_required()) { + _coll0.Add((_0_k).Dtor_part()) + } + } + return _coll0.ToSet() + }() + } +} + +// End of datatype Constructor + +// Definition of class ConstructorList +type ConstructorList struct { +} + +func New_ConstructorList_() *ConstructorList { + _this := ConstructorList{} + + return &_this +} + +type CompanionStruct_ConstructorList_ struct { +} + +var Companion_ConstructorList_ = CompanionStruct_ConstructorList_{} + +func (*ConstructorList) String() string { + return "CompoundBeacon.ConstructorList" +} + +// End of class ConstructorList + +func Type_ConstructorList_() _dafny.TypeDescriptor { + return type_ConstructorList_{} +} + +type type_ConstructorList_ struct { +} + +func (_this type_ConstructorList_) Default() interface{} { + return _dafny.EmptySeq +} + +func (_this type_ConstructorList_) String() string { + return "CompoundBeacon.ConstructorList" +} +func (_this *CompanionStruct_ConstructorList_) Is_(__source _dafny.Sequence) bool { + var _1_x _dafny.Sequence = (__source) + _ = _1_x + return (_dafny.IntOfUint32((_1_x).Cardinality())).Sign() == 1 +} + +// Definition of class ValidCompoundBeacon +type ValidCompoundBeacon struct { +} + +func New_ValidCompoundBeacon_() *ValidCompoundBeacon { + _this := ValidCompoundBeacon{} + + return &_this +} + +type CompanionStruct_ValidCompoundBeacon_ struct { +} + +var Companion_ValidCompoundBeacon_ = CompanionStruct_ValidCompoundBeacon_{} + +func (*ValidCompoundBeacon) String() string { + return "CompoundBeacon.ValidCompoundBeacon" +} + +// End of class ValidCompoundBeacon + +func Type_ValidCompoundBeacon_() _dafny.TypeDescriptor { + return type_ValidCompoundBeacon_{} +} + +type type_ValidCompoundBeacon_ struct { +} + +func (_this type_ValidCompoundBeacon_) Default() interface{} { + return Companion_CompoundBeacon_.Default() +} + +func (_this type_ValidCompoundBeacon_) String() string { + return "CompoundBeacon.ValidCompoundBeacon" +} + +// Definition of datatype CompoundBeacon +type CompoundBeacon struct { + Data_CompoundBeacon_ +} + +func (_this CompoundBeacon) Get_() Data_CompoundBeacon_ { + return _this.Data_CompoundBeacon_ +} + +type Data_CompoundBeacon_ interface { + isCompoundBeacon() +} + +type CompanionStruct_CompoundBeacon_ struct { +} + +var Companion_CompoundBeacon_ = CompanionStruct_CompoundBeacon_{} + +type CompoundBeacon_CompoundBeacon struct { + Base m_BaseBeacon.BeaconBase + Split _dafny.Char + Parts _dafny.Sequence + NumSigned _dafny.Int + Construct _dafny.Sequence +} + +func (CompoundBeacon_CompoundBeacon) isCompoundBeacon() {} + +func (CompanionStruct_CompoundBeacon_) Create_CompoundBeacon_(Base m_BaseBeacon.BeaconBase, Split _dafny.Char, Parts _dafny.Sequence, NumSigned _dafny.Int, Construct _dafny.Sequence) CompoundBeacon { + return CompoundBeacon{CompoundBeacon_CompoundBeacon{Base, Split, Parts, NumSigned, Construct}} +} + +func (_this CompoundBeacon) Is_CompoundBeacon() bool { + _, ok := _this.Get_().(CompoundBeacon_CompoundBeacon) + return ok +} + +func (CompanionStruct_CompoundBeacon_) Default() CompoundBeacon { + return Companion_CompoundBeacon_.Create_CompoundBeacon_(m_BaseBeacon.Companion_BeaconBase_.Default(), _dafny.Char('D'), _dafny.EmptySeq, _dafny.Zero, _dafny.EmptySeq) +} + +func (_this CompoundBeacon) Dtor_base() m_BaseBeacon.BeaconBase { + return _this.Get_().(CompoundBeacon_CompoundBeacon).Base +} + +func (_this CompoundBeacon) Dtor_split() _dafny.Char { + return _this.Get_().(CompoundBeacon_CompoundBeacon).Split +} + +func (_this CompoundBeacon) Dtor_parts() _dafny.Sequence { + return _this.Get_().(CompoundBeacon_CompoundBeacon).Parts +} + +func (_this CompoundBeacon) Dtor_numSigned() _dafny.Int { + return _this.Get_().(CompoundBeacon_CompoundBeacon).NumSigned +} + +func (_this CompoundBeacon) Dtor_construct() _dafny.Sequence { + return _this.Get_().(CompoundBeacon_CompoundBeacon).Construct +} + +func (_this CompoundBeacon) String() string { + switch data := _this.Get_().(type) { + case nil: + return "null" + case CompoundBeacon_CompoundBeacon: + { + return "CompoundBeacon.CompoundBeacon.CompoundBeacon" + "(" + _dafny.String(data.Base) + ", " + _dafny.String(data.Split) + ", " + _dafny.String(data.Parts) + ", " + _dafny.String(data.NumSigned) + ", " + _dafny.String(data.Construct) + ")" + } + default: + { + return "" + } + } +} + +func (_this CompoundBeacon) Equals(other CompoundBeacon) bool { + switch data1 := _this.Get_().(type) { + case CompoundBeacon_CompoundBeacon: + { + data2, ok := other.Get_().(CompoundBeacon_CompoundBeacon) + return ok && data1.Base.Equals(data2.Base) && data1.Split == data2.Split && data1.Parts.Equals(data2.Parts) && data1.NumSigned.Cmp(data2.NumSigned) == 0 && data1.Construct.Equals(data2.Construct) + } + default: + { + return false // unexpected + } + } +} + +func (_this CompoundBeacon) EqualsGeneric(other interface{}) bool { + typed, ok := other.(CompoundBeacon) + return ok && _this.Equals(typed) +} + +func Type_CompoundBeacon_() _dafny.TypeDescriptor { + return type_CompoundBeacon_{} +} + +type type_CompoundBeacon_ struct { +} + +func (_this type_CompoundBeacon_) Default() interface{} { + return Companion_CompoundBeacon_.Default() +} + +func (_this type_CompoundBeacon_) String() string { + return "CompoundBeacon.CompoundBeacon" +} +func (_this CompoundBeacon) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = CompoundBeacon{} + +func (_this CompoundBeacon) HasBeacon2(parts _dafny.Sequence, name _dafny.Sequence) bool { + { + goto TAIL_CALL_START + TAIL_CALL_START: + if (_dafny.IntOfUint32((parts).Cardinality())).Sign() == 0 { + return false + } else if _dafny.Companion_Sequence_.Equal(((parts).Select(0).(BeaconPart)).GetName(), name) { + return true + } else { + var _in0 CompoundBeacon = _this + _ = _in0 + var _in1 _dafny.Sequence = (parts).Drop(1) + _ = _in1 + var _in2 _dafny.Sequence = name + _ = _in2 + _this = _in0 + + parts = _in1 + name = _in2 + goto TAIL_CALL_START + } + } +} +func (_this CompoundBeacon) HasBeacon(name _dafny.Sequence) bool { + { + return (_this).HasBeacon2((_this).Dtor_parts(), name) + } +} +func (_this CompoundBeacon) IsEncrypted() bool { + { + return ((_this).Dtor_numSigned()).Cmp(_dafny.IntOfUint32(((_this).Dtor_parts()).Cardinality())) < 0 + } +} +func (_this CompoundBeacon) GetPartFromPrefix(value _dafny.Sequence) m_Wrappers.Result { + { + return (_this).PartFromPrefix((_this).Dtor_parts(), value) + } +} +func (_this CompoundBeacon) PartsToString(p _dafny.Sequence) _dafny.Sequence { + { + var _0_beaconParts _dafny.Sequence = m_Seq.Companion_Default___.Map(func(coer93 func(BeaconPart) _dafny.Sequence) func(interface{}) interface{} { + return func(arg121 interface{}) interface{} { + return coer93(arg121.(BeaconPart)) + } + }(func(_1_s BeaconPart) _dafny.Sequence { + return (_1_s).GetPrefix() + }), p) + _ = _0_beaconParts + if (_dafny.IntOfUint32((_0_beaconParts).Cardinality())).Sign() == 0 { + return _dafny.SeqOfString("") + } else { + return m_StandardLibrary.Companion_Default___.Join(_0_beaconParts, _dafny.SeqOfString("")) + } + } +} +func (_this CompoundBeacon) CPartToString(s ConstructorPart) _dafny.Sequence { + { + if (s).Dtor_required() { + return ((s).Dtor_part()).GetPrefix() + } else { + return _dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("["), ((s).Dtor_part()).GetPrefix()), _dafny.SeqOfString("]")) + } + } +} +func (_this CompoundBeacon) CPartsToString(p _dafny.Sequence) _dafny.Sequence { + { + var _0_beaconParts _dafny.Sequence = m_Seq.Companion_Default___.Map(func(coer94 func(ConstructorPart) _dafny.Sequence) func(interface{}) interface{} { + return func(arg122 interface{}) interface{} { + return coer94(arg122.(ConstructorPart)) + } + }(func(_1_s ConstructorPart) _dafny.Sequence { + return (_this).CPartToString(_1_s) + }), p) + _ = _0_beaconParts + if (_dafny.IntOfUint32((_0_beaconParts).Cardinality())).Sign() == 0 { + return _dafny.SeqOfString("") + } else { + return m_StandardLibrary.Companion_Default___.Join(_0_beaconParts, _dafny.SeqOfString("")) + } + } +} +func (_this CompoundBeacon) CListToString(p _dafny.Sequence) _dafny.Sequence { + { + var _0_beaconParts _dafny.Sequence = m_Seq.Companion_Default___.Map(func(coer95 func(Constructor) _dafny.Sequence) func(interface{}) interface{} { + return func(arg123 interface{}) interface{} { + return coer95(arg123.(Constructor)) + } + }(func(_1_s Constructor) _dafny.Sequence { + return (_this).CPartsToString((_1_s).Dtor_parts()) + }), p) + _ = _0_beaconParts + return m_StandardLibrary.Companion_Default___.Join(_0_beaconParts, _dafny.SeqOfString(", ")) + } +} +func (_this CompoundBeacon) CanConstruct(con _dafny.Sequence, inParts _dafny.Sequence, matched bool) bool { + { + goto TAIL_CALL_START + TAIL_CALL_START: + if (_dafny.IntOfUint32((inParts).Cardinality())).Sign() == 0 { + return true + } else if (_dafny.IntOfUint32((con).Cardinality())).Sign() == 0 { + return false + } else if (((con).Select(0).(ConstructorPart)).Dtor_part()).Equals((inParts).Select(0).(BeaconPart)) { + var _in0 CompoundBeacon = _this + _ = _in0 + var _in1 _dafny.Sequence = (con).Drop(1) + _ = _in1 + var _in2 _dafny.Sequence = (inParts).Drop(1) + _ = _in2 + var _in3 bool = true + _ = _in3 + _this = _in0 + + con = _in1 + inParts = _in2 + matched = _in3 + goto TAIL_CALL_START + } else if (!(((con).Select(0).(ConstructorPart)).Dtor_required())) || (!(matched)) { + var _in4 CompoundBeacon = _this + _ = _in4 + var _in5 _dafny.Sequence = (con).Drop(1) + _ = _in5 + var _in6 _dafny.Sequence = inParts + _ = _in6 + var _in7 bool = matched + _ = _in7 + _this = _in4 + + con = _in5 + inParts = _in6 + matched = _in7 + goto TAIL_CALL_START + } else { + return false + } + } +} +func (_this CompoundBeacon) IsValidPartOrder(candidates _dafny.Sequence, inParts _dafny.Sequence) bool { + { + goto TAIL_CALL_START + TAIL_CALL_START: + if (_dafny.IntOfUint32((candidates).Cardinality())).Sign() == 0 { + return false + } else if (_this).CanConstruct(((candidates).Select(0).(Constructor)).Dtor_parts(), inParts, false) { + return true + } else { + var _in0 CompoundBeacon = _this + _ = _in0 + var _in1 _dafny.Sequence = (candidates).Drop(1) + _ = _in1 + var _in2 _dafny.Sequence = inParts + _ = _in2 + _this = _in0 + + candidates = _in1 + inParts = _in2 + goto TAIL_CALL_START + } + } +} +func (_this CompoundBeacon) ValidatePartOrder(inParts _dafny.Sequence, orig _dafny.Sequence) m_Wrappers.Result { + { + if (_this).IsValidPartOrder((_this).Dtor_construct(), inParts) { + return m_Wrappers.Companion_Result_.Create_Success_(true) + } else { + var _0_msg _dafny.Sequence = _dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("Compound Beacon value '"), orig), _dafny.SeqOfString("' cannot be constructed from any available constructor for ")), ((_this).Dtor_base()).Dtor_name()), _dafny.SeqOfString(" value parsed as ")), (_this).PartsToString(inParts)), _dafny.SeqOfString(" available constructors are ")), (_this).CListToString((_this).Dtor_construct())), _dafny.SeqOfString(".")) + _ = _0_msg + return m_Wrappers.Companion_Result_.Create_Failure_(m_DynamoDbEncryptionUtil.Companion_Default___.E(_0_msg)) + } + } +} +func (_this CompoundBeacon) PartFromPrefix(p _dafny.Sequence, value _dafny.Sequence) m_Wrappers.Result { + { + goto TAIL_CALL_START + TAIL_CALL_START: + if (_dafny.IntOfUint32((p).Cardinality())).Sign() == 0 { + return m_Wrappers.Companion_Result_.Create_Failure_(m_DynamoDbEncryptionUtil.Companion_Default___.E(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("Value "), value), _dafny.SeqOfString(" for beacon ")), ((_this).Dtor_base()).Dtor_name()), _dafny.SeqOfString(" does not match the prefix of any configured part.")))) + } else if _dafny.Companion_Sequence_.IsPrefixOf(((p).Select(0).(BeaconPart)).Dtor_prefix(), value) { + return m_Wrappers.Companion_Result_.Create_Success_((p).Select(0).(BeaconPart)) + } else { + var _in0 CompoundBeacon = _this + _ = _in0 + var _in1 _dafny.Sequence = (p).Drop(1) + _ = _in1 + var _in2 _dafny.Sequence = value + _ = _in2 + _this = _in0 + + p = _in1 + value = _in2 + goto TAIL_CALL_START + } + } +} +func (_this CompoundBeacon) SkipSignedPieces(pieces _dafny.Sequence) m_Wrappers.Result { + { + goto TAIL_CALL_START + TAIL_CALL_START: + if (_dafny.IntOfUint32((pieces).Cardinality())).Sign() == 0 { + return m_Wrappers.Companion_Result_.Create_Success_(pieces) + } else { + var _0_valueOrError0 m_Wrappers.Result = (_this).PartFromPrefix((_this).Dtor_parts(), (pieces).Select(0).(_dafny.Sequence)) + _ = _0_valueOrError0 + if (_0_valueOrError0).IsFailure() { + return (_0_valueOrError0).PropagateFailure() + } else { + var _1_p BeaconPart = (_0_valueOrError0).Extract().(BeaconPart) + _ = _1_p + if (_1_p).Is_Encrypted() { + return m_Wrappers.Companion_Result_.Create_Success_(pieces) + } else { + var _in0 CompoundBeacon = _this + _ = _in0 + var _in1 _dafny.Sequence = (pieces).Drop(1) + _ = _in1 + _this = _in0 + + pieces = _in1 + goto TAIL_CALL_START + } + } + } + } +} +func (_this CompoundBeacon) IsLessThanComparable(pieces _dafny.Sequence) m_Wrappers.Result { + { + var _0_valueOrError0 m_Wrappers.Result = (_this).SkipSignedPieces(pieces) + _ = _0_valueOrError0 + if (_0_valueOrError0).IsFailure() { + return (_0_valueOrError0).PropagateFailure() + } else { + var _1_rest _dafny.Sequence = (_0_valueOrError0).Extract().(_dafny.Sequence) + _ = _1_rest + if (_dafny.IntOfUint32((_1_rest).Cardinality())).Sign() == 0 { + return m_Wrappers.Companion_Result_.Create_Success_(true) + } else if (_dafny.IntOfUint32((_1_rest).Cardinality())).Cmp(_dafny.One) != 0 { + return m_Wrappers.Companion_Result_.Create_Success_(false) + } else { + var _2_valueOrError1 m_Wrappers.Result = (_this).PartFromPrefix((_this).Dtor_parts(), (_1_rest).Select(0).(_dafny.Sequence)) + _ = _2_valueOrError1 + if (_2_valueOrError1).IsFailure() { + return (_2_valueOrError1).PropagateFailure() + } else { + var _3_p BeaconPart = (_2_valueOrError1).Extract().(BeaconPart) + _ = _3_p + return m_Wrappers.Companion_Result_.Create_Success_(_dafny.Companion_Sequence_.Equal((_3_p).Dtor_prefix(), (_1_rest).Select(0).(_dafny.Sequence))) + } + } + } + } +} +func (_this CompoundBeacon) GetFields(virtualFields _dafny.Map) _dafny.Sequence { + { + return m_StandardLibrary_Sequence.Companion_Default___.Flatten(m_Seq.Companion_Default___.Map(func(coer96 func(BeaconPart) _dafny.Sequence) func(interface{}) interface{} { + return func(arg124 interface{}) interface{} { + return coer96(arg124.(BeaconPart)) + } + }((func(_0_virtualFields _dafny.Map) func(BeaconPart) _dafny.Sequence { + return func(_1_p BeaconPart) _dafny.Sequence { + return (_1_p).GetFields(_0_virtualFields) + } + })(virtualFields)), (_this).Dtor_parts()), uint64(0), _dafny.SeqOf()) + } +} +func (_this CompoundBeacon) FindAndCalcPart(value _dafny.Sequence, keys m_DynamoDbEncryptionUtil.MaybeKeyMap) m_Wrappers.Result { + { + var _0_valueOrError0 m_Wrappers.Result = (_this).PartFromPrefix((_this).Dtor_parts(), value) + _ = _0_valueOrError0 + if (_0_valueOrError0).IsFailure() { + return (_0_valueOrError0).PropagateFailure() + } else { + var _1_part BeaconPart = (_0_valueOrError0).Extract().(BeaconPart) + _ = _1_part + return (_this).PartValueCalc((value).Drop((_dafny.IntOfUint32(((_1_part).Dtor_prefix()).Cardinality())).Uint32()), keys, _1_part) + } + } +} +func (_this CompoundBeacon) JustPrefix(value _dafny.Sequence) m_Wrappers.Result { + { + var _0_valueOrError0 m_Wrappers.Result = (_this).PartFromPrefix((_this).Dtor_parts(), value) + _ = _0_valueOrError0 + if (_0_valueOrError0).IsFailure() { + return (_0_valueOrError0).PropagateFailure() + } else { + var _1_part BeaconPart = (_0_valueOrError0).Extract().(BeaconPart) + _ = _1_part + return m_Wrappers.Companion_Result_.Create_Success_(_dafny.Companion_Sequence_.Equal(value, (_1_part).Dtor_prefix())) + } + } +} +func (_this CompoundBeacon) GetBeaconValue(value m_ComAmazonawsDynamodbTypes.AttributeValue, keys m_DynamoDbEncryptionUtil.MaybeKeyMap, forEquality bool) m_Wrappers.Result { + { + if !((value).Is_S()) { + return m_Wrappers.Companion_Result_.Create_Failure_(m_DynamoDbEncryptionUtil.Companion_Default___.E(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("CompoundBeacon "), ((_this).Dtor_base()).Dtor_name()), _dafny.SeqOfString(" can only be queried as a string, not as ")), m_DynamoDbEncryptionUtil.Companion_Default___.AttrTypeToStr(value)))) + } else { + var _0_parts _dafny.Sequence = m_StandardLibrary.Companion_Default___.Split((value).Dtor_S(), (_this).Dtor_split()) + _ = _0_parts + var _1_valueOrError0 m_Wrappers.Result = m_StandardLibrary_Sequence.Companion_Default___.MapWithResult(func(coer97 func(_dafny.Sequence) m_Wrappers.Result) func(interface{}) m_Wrappers.Result { + return func(arg125 interface{}) m_Wrappers.Result { + return coer97(arg125.(_dafny.Sequence)) + } + }(func(_2_s _dafny.Sequence) m_Wrappers.Result { + return (_this).GetPartFromPrefix(_2_s) + }), _0_parts, uint64(0), _dafny.SeqOf()) + _ = _1_valueOrError0 + if (_1_valueOrError0).IsFailure() { + return (_1_valueOrError0).PropagateFailure() + } else { + var _3_partsUsed _dafny.Sequence = (_1_valueOrError0).Extract().(_dafny.Sequence) + _ = _3_partsUsed + var _4_valueOrError1 m_Wrappers.Result = (_this).ValidatePartOrder(_3_partsUsed, (value).Dtor_S()) + _ = _4_valueOrError1 + if (_4_valueOrError1).IsFailure() { + return (_4_valueOrError1).PropagateFailure() + } else { + var _5___v1 bool = (_4_valueOrError1).Extract().(bool) + _ = _5___v1 + var _6_valueOrError2 m_Wrappers.Result = m_StandardLibrary_Sequence.Companion_Default___.MapWithResult(func(coer98 func(_dafny.Sequence) m_Wrappers.Result) func(interface{}) m_Wrappers.Result { + return func(arg126 interface{}) m_Wrappers.Result { + return coer98(arg126.(_dafny.Sequence)) + } + }((func(_7_keys m_DynamoDbEncryptionUtil.MaybeKeyMap) func(_dafny.Sequence) m_Wrappers.Result { + return func(_8_s _dafny.Sequence) m_Wrappers.Result { + return (_this).FindAndCalcPart(_8_s, _7_keys) + } + })(keys)), _0_parts, uint64(0), _dafny.SeqOf()) + _ = _6_valueOrError2 + if (_6_valueOrError2).IsFailure() { + return (_6_valueOrError2).PropagateFailure() + } else { + var _9_beaconParts _dafny.Sequence = (_6_valueOrError2).Extract().(_dafny.Sequence) + _ = _9_beaconParts + var _10_valueOrError3 m_Wrappers.Result = (_this).JustPrefix(m_Seq.Companion_Default___.Last(_0_parts).(_dafny.Sequence)) + _ = _10_valueOrError3 + if (_10_valueOrError3).IsFailure() { + return (_10_valueOrError3).PropagateFailure() + } else { + var _11_lastIsPrefix bool = (_10_valueOrError3).Extract().(bool) + _ = _11_lastIsPrefix + if (!(forEquality)) && (_11_lastIsPrefix) { + var _12_result _dafny.Sequence = m_StandardLibrary.Companion_Default___.Join(_dafny.Companion_Sequence_.Concatenate((_9_beaconParts).Take(((_dafny.IntOfUint32((_0_parts).Cardinality())).Minus(_dafny.One)).Uint32()), _dafny.SeqOf(m_Seq.Companion_Default___.Last(_0_parts).(_dafny.Sequence))), _dafny.SeqOfChars((_this).Dtor_split())) + _ = _12_result + return m_Wrappers.Companion_Result_.Create_Success_(m_ComAmazonawsDynamodbTypes.Companion_AttributeValue_.Create_S_(_12_result)) + } else { + var _13_result _dafny.Sequence = m_StandardLibrary.Companion_Default___.Join(_9_beaconParts, _dafny.SeqOfChars((_this).Dtor_split())) + _ = _13_result + return m_Wrappers.Companion_Result_.Create_Success_(m_ComAmazonawsDynamodbTypes.Companion_AttributeValue_.Create_S_(_13_result)) + } + } + } + } + } + } + } +} +func (_this CompoundBeacon) TryConstructor(consFields _dafny.Sequence, item _dafny.Map, vf _dafny.Map, keys m_DynamoDbEncryptionUtil.MaybeKeyMap, acc _dafny.Sequence) m_Wrappers.Result { + { + goto TAIL_CALL_START + TAIL_CALL_START: + if (_dafny.IntOfUint32((consFields).Cardinality())).Sign() == 0 { + if (_dafny.IntOfUint32((acc).Cardinality())).Sign() == 0 { + return m_Wrappers.Companion_Result_.Create_Failure_(m_DynamoDbEncryptionUtil.Companion_Default___.E(_dafny.SeqOfString("Internal Error : Empty beacon created."))) + } else { + return m_Wrappers.Companion_Result_.Create_Success_(m_Wrappers.Companion_Option_.Create_Some_(acc)) + } + } else { + var _0_part BeaconPart = ((consFields).Select(0).(ConstructorPart)).Dtor_part() + _ = _0_part + var _1_valueOrError0 m_Wrappers.Result = (_0_part).GetString(item, vf) + _ = _1_valueOrError0 + if (_1_valueOrError0).IsFailure() { + return (_1_valueOrError0).PropagateFailure() + } else { + var _2_strValue m_Wrappers.Option = (_1_valueOrError0).Extract().(m_Wrappers.Option) + _ = _2_strValue + if (_2_strValue).Is_Some() { + var _3_valueOrError1 m_Wrappers.Outcome = m_Wrappers.Companion_Default___.Need(!_dafny.Companion_Sequence_.Contains((_2_strValue).Dtor_value().(_dafny.Sequence), (_this).Dtor_split()), m_DynamoDbEncryptionUtil.Companion_Default___.E(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("Part "), (_0_part).GetName()), _dafny.SeqOfString(" for beacon ")), ((_this).Dtor_base()).Dtor_name()), _dafny.SeqOfString(" has value '")), (_2_strValue).Dtor_value().(_dafny.Sequence)), _dafny.SeqOfString("' which contains the split character ")), _dafny.SeqOfChars((_this).Dtor_split())), _dafny.SeqOfString("'.")))) + _ = _3_valueOrError1 + if (_3_valueOrError1).IsFailure() { + return (_3_valueOrError1).PropagateFailure() + } else { + var _4_valueOrError2 m_Wrappers.Result = (func() m_Wrappers.Result { + if (keys).Is_DontUseKeys() { + return m_Wrappers.Companion_Result_.Create_Success_(_dafny.Companion_Sequence_.Concatenate((_0_part).Dtor_prefix(), (_2_strValue).Dtor_value().(_dafny.Sequence))) + } + return (_this).PartValueCalc((_2_strValue).Dtor_value().(_dafny.Sequence), keys, _0_part) + })() + _ = _4_valueOrError2 + if (_4_valueOrError2).IsFailure() { + return (_4_valueOrError2).PropagateFailure() + } else { + var _5_val _dafny.Sequence = (_4_valueOrError2).Extract().(_dafny.Sequence) + _ = _5_val + if (_dafny.IntOfUint32((acc).Cardinality())).Sign() == 0 { + var _in0 CompoundBeacon = _this + _ = _in0 + var _in1 _dafny.Sequence = (consFields).Drop(1) + _ = _in1 + var _in2 _dafny.Map = item + _ = _in2 + var _in3 _dafny.Map = vf + _ = _in3 + var _in4 m_DynamoDbEncryptionUtil.MaybeKeyMap = keys + _ = _in4 + var _in5 _dafny.Sequence = _5_val + _ = _in5 + _this = _in0 + + consFields = _in1 + item = _in2 + vf = _in3 + keys = _in4 + acc = _in5 + goto TAIL_CALL_START + } else { + var _in6 CompoundBeacon = _this + _ = _in6 + var _in7 _dafny.Sequence = (consFields).Drop(1) + _ = _in7 + var _in8 _dafny.Map = item + _ = _in8 + var _in9 _dafny.Map = vf + _ = _in9 + var _in10 m_DynamoDbEncryptionUtil.MaybeKeyMap = keys + _ = _in10 + var _in11 _dafny.Sequence = _dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(acc, _dafny.SeqOfChars((_this).Dtor_split())), _5_val) + _ = _in11 + _this = _in6 + + consFields = _in7 + item = _in8 + vf = _in9 + keys = _in10 + acc = _in11 + goto TAIL_CALL_START + } + } + } + } else if ((consFields).Select(0).(ConstructorPart)).Dtor_required() { + return m_Wrappers.Companion_Result_.Create_Success_(m_Wrappers.Companion_Option_.Create_None_()) + } else { + var _in12 CompoundBeacon = _this + _ = _in12 + var _in13 _dafny.Sequence = (consFields).Drop(1) + _ = _in13 + var _in14 _dafny.Map = item + _ = _in14 + var _in15 _dafny.Map = vf + _ = _in15 + var _in16 m_DynamoDbEncryptionUtil.MaybeKeyMap = keys + _ = _in16 + var _in17 _dafny.Sequence = acc + _ = _in17 + _this = _in12 + + consFields = _in13 + item = _in14 + vf = _in15 + keys = _in16 + acc = _in17 + goto TAIL_CALL_START + } + } + } + } +} +func (_this CompoundBeacon) TryConstructors(construct _dafny.Sequence, item _dafny.Map, vf _dafny.Map, keys m_DynamoDbEncryptionUtil.MaybeKeyMap) m_Wrappers.Result { + { + goto TAIL_CALL_START + TAIL_CALL_START: + if (_dafny.IntOfUint32((construct).Cardinality())).Sign() == 0 { + return m_Wrappers.Companion_Result_.Create_Success_(m_Wrappers.Companion_Option_.Create_None_()) + } else { + var _0_valueOrError0 m_Wrappers.Result = (_this).TryConstructor(((construct).Select(0).(Constructor)).Dtor_parts(), item, vf, keys, _dafny.SeqOfString("")) + _ = _0_valueOrError0 + if (_0_valueOrError0).IsFailure() { + return (_0_valueOrError0).PropagateFailure() + } else { + var _1_x m_Wrappers.Option = (_0_valueOrError0).Extract().(m_Wrappers.Option) + _ = _1_x + if (_1_x).Is_Some() { + return m_Wrappers.Companion_Result_.Create_Success_(_1_x) + } else { + var _in0 CompoundBeacon = _this + _ = _in0 + var _in1 _dafny.Sequence = (construct).Drop(1) + _ = _in1 + var _in2 _dafny.Map = item + _ = _in2 + var _in3 _dafny.Map = vf + _ = _in3 + var _in4 m_DynamoDbEncryptionUtil.MaybeKeyMap = keys + _ = _in4 + _this = _in0 + + construct = _in1 + item = _in2 + vf = _in3 + keys = _in4 + goto TAIL_CALL_START + } + } + } + } +} +func (_this CompoundBeacon) Hash(item _dafny.Map, vf _dafny.Map, keys m_DynamoDbEncryptionUtil.MaybeKeyMap) m_Wrappers.Result { + { + return (_this).TryConstructors((_this).Dtor_construct(), item, vf, keys) + } +} +func (_this CompoundBeacon) GetNaked(item _dafny.Map, vf _dafny.Map) m_Wrappers.Result { + { + return (_this).TryConstructors((_this).Dtor_construct(), item, vf, m_DynamoDbEncryptionUtil.Companion_MaybeKeyMap_.Create_DontUseKeys_()) + } +} +func (_this CompoundBeacon) FindPart(val _dafny.Sequence) m_Wrappers.Result { + { + var _0_thePart _dafny.Sequence = m_Seq.Companion_Default___.Filter(func(coer99 func(BeaconPart) bool) func(interface{}) bool { + return func(arg127 interface{}) bool { + return coer99(arg127.(BeaconPart)) + } + }((func(_1_val _dafny.Sequence) func(BeaconPart) bool { + return func(_2_x BeaconPart) bool { + return _dafny.Companion_Sequence_.IsPrefixOf((_2_x).Dtor_prefix(), _1_val) + } + })(val)), (_this).Dtor_parts()) + _ = _0_thePart + if (_dafny.IntOfUint32((_0_thePart).Cardinality())).Sign() == 0 { + return m_Wrappers.Companion_Result_.Create_Failure_(m_DynamoDbEncryptionUtil.Companion_Default___.E(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("No part found in beacon "), ((_this).Dtor_base()).Dtor_name()), _dafny.SeqOfString(" match prefix ")), val))) + } else if (_dafny.IntOfUint32((_0_thePart).Cardinality())).Cmp(_dafny.One) > 0 { + return m_Wrappers.Companion_Result_.Create_Failure_(m_DynamoDbEncryptionUtil.Companion_Default___.E(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("Internal error. Multiple parts for beacon "), ((_this).Dtor_base()).Dtor_name()), _dafny.SeqOfString(" matched prefix of ")), val))) + } else { + return m_Wrappers.Companion_Result_.Create_Success_((_0_thePart).Select(0).(BeaconPart)) + } + } +} +func (_this CompoundBeacon) GetPart(val _dafny.Sequence, keys _dafny.Map) m_Wrappers.Result { + { + var _0_pieces _dafny.Sequence = m_StandardLibrary.Companion_Default___.Split(val, (_this).Dtor_split()) + _ = _0_pieces + return (_this).CalcParts(_0_pieces, keys, _dafny.SeqOfChars()) + } +} +func (_this CompoundBeacon) CalcPart(piece _dafny.Sequence, keys _dafny.Map) m_Wrappers.Result { + { + var _0_valueOrError0 m_Wrappers.Result = (_this).FindPart(piece) + _ = _0_valueOrError0 + if (_0_valueOrError0).IsFailure() { + return (_0_valueOrError0).PropagateFailure() + } else { + var _1_thePart BeaconPart = (_0_valueOrError0).Extract().(BeaconPart) + _ = _1_thePart + return (_this).PartValueCalc(piece, m_DynamoDbEncryptionUtil.Companion_MaybeKeyMap_.Create_Keys_(keys), _1_thePart) + } + } +} +func (_this CompoundBeacon) CalcParts(pieces _dafny.Sequence, keys _dafny.Map, acc _dafny.Sequence) m_Wrappers.Result { + { + goto TAIL_CALL_START + TAIL_CALL_START: + if (_dafny.IntOfUint32((pieces).Cardinality())).Sign() == 0 { + return m_Wrappers.Companion_Result_.Create_Success_(acc) + } else { + var _0_valueOrError0 m_Wrappers.Result = (_this).CalcPart((pieces).Select(0).(_dafny.Sequence), keys) + _ = _0_valueOrError0 + if (_0_valueOrError0).IsFailure() { + return (_0_valueOrError0).PropagateFailure() + } else { + var _1_theBeacon _dafny.Sequence = (_0_valueOrError0).Extract().(_dafny.Sequence) + _ = _1_theBeacon + if (_dafny.IntOfUint32((acc).Cardinality())).Sign() == 0 { + var _in0 CompoundBeacon = _this + _ = _in0 + var _in1 _dafny.Sequence = (pieces).Drop(1) + _ = _in1 + var _in2 _dafny.Map = keys + _ = _in2 + var _in3 _dafny.Sequence = _1_theBeacon + _ = _in3 + _this = _in0 + + pieces = _in1 + keys = _in2 + acc = _in3 + goto TAIL_CALL_START + } else { + var _in4 CompoundBeacon = _this + _ = _in4 + var _in5 _dafny.Sequence = (pieces).Drop(1) + _ = _in5 + var _in6 _dafny.Map = keys + _ = _in6 + var _in7 _dafny.Sequence = _dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(acc, _dafny.SeqOfChars((_this).Dtor_split())), _1_theBeacon) + _ = _in7 + _this = _in4 + + pieces = _in5 + keys = _in6 + acc = _in7 + goto TAIL_CALL_START + } + } + } + } +} +func (_static CompanionStruct_CompoundBeacon_) OkPrefixStringPair(x _dafny.Sequence, y _dafny.Sequence) bool { + return (!(_dafny.Companion_Sequence_.IsPrefixOf(x, y))) && (!(_dafny.Companion_Sequence_.IsPrefixOf(y, x))) +} +func (_this CompoundBeacon) OkPrefixPair(pos1 _dafny.Int, pos2 _dafny.Int) bool { + { + return ((pos1).Cmp(pos2) == 0) || (Companion_CompoundBeacon_.OkPrefixStringPair((((_this).Dtor_parts()).Select((pos1).Uint32()).(BeaconPart)).Dtor_prefix(), (((_this).Dtor_parts()).Select((pos2).Uint32()).(BeaconPart)).Dtor_prefix())) + } +} +func (_this CompoundBeacon) CheckOnePrefixPart(pos1 _dafny.Int, pos2 _dafny.Int) m_Wrappers.Result { + { + if !((_this).OkPrefixPair(pos1, pos2)) { + return m_Wrappers.Companion_Result_.Create_Failure_(m_DynamoDbEncryptionUtil.Companion_Default___.E(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("Compound beacon "), ((_this).Dtor_base()).Dtor_name()), _dafny.SeqOfString(" defines part ")), (((_this).Dtor_parts()).Select((pos1).Uint32()).(BeaconPart)).GetName()), _dafny.SeqOfString(" with prefix ")), (((_this).Dtor_parts()).Select((pos1).Uint32()).(BeaconPart)).Dtor_prefix()), _dafny.SeqOfString(" which is incompatible with part ")), (((_this).Dtor_parts()).Select((pos2).Uint32()).(BeaconPart)).GetName()), _dafny.SeqOfString(" which has a prefix of ")), (((_this).Dtor_parts()).Select((pos2).Uint32()).(BeaconPart)).Dtor_prefix()), _dafny.SeqOfString(".")))) + } else { + return m_Wrappers.Companion_Result_.Create_Success_(true) + } + } +} +func (_this CompoundBeacon) CheckOnePrefix(pos _dafny.Int) m_Wrappers.Result { + { + var _0_partNumbers _dafny.Sequence = _dafny.SeqCreate((_dafny.IntOfUint32(((_this).Dtor_parts()).Cardinality())).Uint32(), func(coer100 func(_dafny.Int) _dafny.Int) func(_dafny.Int) interface{} { + return func(arg128 _dafny.Int) interface{} { + return coer100(arg128) + } + }(func(_1_i _dafny.Int) _dafny.Int { + return _1_i + })) + _ = _0_partNumbers + var _2_valueOrError0 m_Wrappers.Result = m_StandardLibrary_Sequence.Companion_Default___.MapWithResult(func(coer101 func(_dafny.Int) m_Wrappers.Result) func(interface{}) m_Wrappers.Result { + return func(arg129 interface{}) m_Wrappers.Result { + return coer101(arg129.(_dafny.Int)) + } + }((func(_3_pos _dafny.Int) func(_dafny.Int) m_Wrappers.Result { + return func(_4_p _dafny.Int) m_Wrappers.Result { + return (_this).CheckOnePrefixPart(_3_pos, _4_p) + } + })(pos)), _dafny.SeqCreate((_dafny.IntOfUint32(((_this).Dtor_parts()).Cardinality())).Uint32(), func(coer102 func(_dafny.Int) _dafny.Int) func(_dafny.Int) interface{} { + return func(arg130 _dafny.Int) interface{} { + return coer102(arg130) + } + }(func(_5_i _dafny.Int) _dafny.Int { + return _5_i + })), uint64(0), _dafny.SeqOf()) + _ = _2_valueOrError0 + if (_2_valueOrError0).IsFailure() { + return (_2_valueOrError0).PropagateFailure() + } else { + var _6___v2 _dafny.Sequence = (_2_valueOrError0).Extract().(_dafny.Sequence) + _ = _6___v2 + return m_Wrappers.Companion_Result_.Create_Success_(true) + } + } +} +func (_this CompoundBeacon) ValidPrefixSetResultPos(index _dafny.Int) m_Wrappers.Result { + { + goto TAIL_CALL_START + TAIL_CALL_START: + if (_dafny.IntOfUint32(((_this).Dtor_parts()).Cardinality())).Cmp(index) <= 0 { + return m_Wrappers.Companion_Result_.Create_Success_(true) + } else { + var _0_valueOrError0 m_Wrappers.Result = (_this).CheckOnePrefix(index) + _ = _0_valueOrError0 + if (_0_valueOrError0).IsFailure() { + return (_0_valueOrError0).PropagateFailure() + } else { + var _1___v3 bool = (_0_valueOrError0).Extract().(bool) + _ = _1___v3 + var _in0 CompoundBeacon = _this + _ = _in0 + var _in1 _dafny.Int = (index).Plus(_dafny.One) + _ = _in1 + _this = _in0 + + index = _in1 + goto TAIL_CALL_START + } + } + } +} +func (_this CompoundBeacon) ValidPrefixSetResult() m_Wrappers.Result { + { + var _0_valueOrError0 m_Wrappers.Result = (_this).ValidPrefixSetResultPos(_dafny.Zero) + _ = _0_valueOrError0 + if (_0_valueOrError0).IsFailure() { + return (_0_valueOrError0).PropagateFailure() + } else { + var _1___v4 bool = (_0_valueOrError0).Extract().(bool) + _ = _1___v4 + if _dafny.Quantifier(_dafny.IntegerRange(_dafny.Zero, _dafny.IntOfUint32(((_this).Dtor_parts()).Cardinality())), true, func(_forall_var_0 _dafny.Int) bool { + var _2_x _dafny.Int + _2_x = interface{}(_forall_var_0).(_dafny.Int) + if m__System.Companion_Nat_.Is_(_2_x) { + return _dafny.Quantifier(_dafny.IntegerRange(_dafny.Zero, _dafny.IntOfUint32(((_this).Dtor_parts()).Cardinality())), true, func(_forall_var_1 _dafny.Int) bool { + var _3_y _dafny.Int + _3_y = interface{}(_forall_var_1).(_dafny.Int) + if m__System.Companion_Nat_.Is_(_3_y) { + return !((((_2_x).Sign() != -1) && ((_2_x).Cmp(_dafny.IntOfUint32(((_this).Dtor_parts()).Cardinality())) < 0)) && (((_2_x).Cmp(_3_y) < 0) && ((_3_y).Cmp(_dafny.IntOfUint32(((_this).Dtor_parts()).Cardinality())) < 0))) || ((_this).OkPrefixPair(_2_x, _3_y)) + } else { + return true + } + }) + } else { + return true + } + }) { + return m_Wrappers.Companion_Result_.Create_Success_(true) + } else { + return m_Wrappers.Companion_Result_.Create_Failure_(m_DynamoDbEncryptionUtil.Companion_Default___.E(_dafny.SeqOfString("Internal Error"))) + } + } + } +} +func (_this CompoundBeacon) PartValueCalc(data _dafny.Sequence, keys m_DynamoDbEncryptionUtil.MaybeKeyMap, part BeaconPart) m_Wrappers.Result { + { + var _0_valueOrError0 m_Wrappers.Outcome = m_Wrappers.Companion_Default___.Need(!_dafny.Companion_Sequence_.Contains(data, (_this).Dtor_split()), m_DynamoDbEncryptionUtil.Companion_Default___.E(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("Value '"), data), _dafny.SeqOfString("' for beacon part ")), (part).GetName()), _dafny.SeqOfString(" contains the split character '")), _dafny.SeqOfChars((_this).Dtor_split())), _dafny.SeqOfString("'.")))) + _ = _0_valueOrError0 + if (_0_valueOrError0).IsFailure() { + return (_0_valueOrError0).PropagateFailure() + } else { + var _source0 BeaconPart = part + _ = _source0 + { + if _source0.Is_Encrypted() { + var _1_p _dafny.Sequence = _source0.Get_().(BeaconPart_Encrypted).Prefix + _ = _1_p + var _2_b m_BaseBeacon.StandardBeacon = _source0.Get_().(BeaconPart_Encrypted).Beacon + _ = _2_b + var _3_valueOrError1 m_Wrappers.Outcome = m_Wrappers.Companion_Default___.Need((keys).Is_Keys(), m_DynamoDbEncryptionUtil.Companion_Default___.E(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("Need KeyId for beacon "), ((_2_b).Dtor_base()).Dtor_name()), _dafny.SeqOfString(" but no KeyId found in query.")))) + _ = _3_valueOrError1 + if (_3_valueOrError1).IsFailure() { + return (_3_valueOrError1).PropagateFailure() + } else { + var _4_valueOrError2 m_Wrappers.Result = (_2_b).HashStr(data, (keys).Dtor_value()) + _ = _4_valueOrError2 + if (_4_valueOrError2).IsFailure() { + return (_4_valueOrError2).PropagateFailure() + } else { + var _5_hash _dafny.Sequence = (_4_valueOrError2).Extract().(_dafny.Sequence) + _ = _5_hash + return m_Wrappers.Companion_Result_.Create_Success_(_dafny.Companion_Sequence_.Concatenate((part).Dtor_prefix(), _5_hash)) + } + } + } + } + { + var _6_Signed BeaconPart = _source0 + _ = _6_Signed + return m_Wrappers.Companion_Result_.Create_Success_(_dafny.Companion_Sequence_.Concatenate((part).Dtor_prefix(), data)) + } + } + } +} + +// End of datatype CompoundBeacon diff --git a/releases/go/dynamodb-esdk/DdbMiddlewareConfig/DdbMiddlewareConfig.go b/releases/go/dynamodb-esdk/DdbMiddlewareConfig/DdbMiddlewareConfig.go new file mode 100644 index 000000000..190c61cb8 --- /dev/null +++ b/releases/go/dynamodb-esdk/DdbMiddlewareConfig/DdbMiddlewareConfig.go @@ -0,0 +1,649 @@ +// Package DdbMiddlewareConfig +// Dafny module DdbMiddlewareConfig compiled into Go + +package DdbMiddlewareConfig + +import ( + os "os" + + m_ComAmazonawsDynamodbTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/dynamodb/ComAmazonawsDynamodbTypes" + m_Com_Amazonaws_Dynamodb "github.com/aws/aws-cryptographic-material-providers-library/releases/go/dynamodb/Com_Amazonaws_Dynamodb" + m_ComAmazonawsKmsTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/kms/ComAmazonawsKmsTypes" + m_Com_Amazonaws_Kms "github.com/aws/aws-cryptographic-material-providers-library/releases/go/kms/Com_Amazonaws_Kms" + m_AlgorithmSuites "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AlgorithmSuites" + m_AwsArnParsing "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsArnParsing" + m_AwsCryptographyKeyStoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyKeyStoreOperations" + m_AwsCryptographyKeyStoreTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyKeyStoreTypes" + m_AwsCryptographyMaterialProvidersOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyMaterialProvidersOperations" + m_AwsCryptographyMaterialProvidersTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyMaterialProvidersTypes" + m_AwsKmsDiscoveryKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsDiscoveryKeyring" + m_AwsKmsEcdhKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsEcdhKeyring" + m_AwsKmsHierarchicalKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsHierarchicalKeyring" + m_AwsKmsKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsKeyring" + m_AwsKmsMrkAreUnique "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkAreUnique" + m_AwsKmsMrkDiscoveryKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkDiscoveryKeyring" + m_AwsKmsMrkKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkKeyring" + m_AwsKmsMrkMatchForDecrypt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkMatchForDecrypt" + m_AwsKmsRsaKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsRsaKeyring" + m_AwsKmsUtils "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsUtils" + m_CMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CMM" + m_CacheConstants "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CacheConstants" + m_CanonicalEncryptionContext "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CanonicalEncryptionContext" + m_Commitment "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Commitment" + m_Constants "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Constants" + m_CreateKeyStoreTable "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CreateKeyStoreTable" + m_CreateKeys "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CreateKeys" + m_DDBKeystoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DDBKeystoreOperations" + m_DefaultCMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DefaultCMM" + m_DefaultClientSupplier "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DefaultClientSupplier" + m_Defaults "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Defaults" + m_DiscoveryMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DiscoveryMultiKeyring" + m_EcdhEdkWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/EcdhEdkWrapping" + m_EdkWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/EdkWrapping" + m_ErrorMessages "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/ErrorMessages" + m_GetKeys "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/GetKeys" + m_IntermediateKeyWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/IntermediateKeyWrapping" + m_KMSKeystoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KMSKeystoreOperations" + m_KeyStore "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KeyStore" + m_KeyStoreErrorMessages "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KeyStoreErrorMessages" + m_Keyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Keyring" + m_KmsArn "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KmsArn" + m_LocalCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/LocalCMC" + m_MaterialProviders "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MaterialProviders" + m_MaterialWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MaterialWrapping" + m_Materials "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Materials" + m_MrkAwareDiscoveryMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MrkAwareDiscoveryMultiKeyring" + m_MrkAwareStrictMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MrkAwareStrictMultiKeyring" + m_MultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MultiKeyring" + m_RawAESKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawAESKeyring" + m_RawECDHKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawECDHKeyring" + m_RawRSAKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawRSAKeyring" + m_RequiredEncryptionContextCMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RequiredEncryptionContextCMM" + m_StormTracker "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StormTracker" + m_StormTrackingCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StormTrackingCMC" + m_StrictMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StrictMultiKeyring" + m_Structure "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Structure" + m_SynchronizedLocalCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/SynchronizedLocalCMC" + m_Utils "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Utils" + m_AtomicPrimitives "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AtomicPrimitives" + m_AwsCryptographyPrimitivesOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AwsCryptographyPrimitivesOperations" + m_AwsCryptographyPrimitivesTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AwsCryptographyPrimitivesTypes" + m_Digest "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/Digest" + m_HKDF "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/HKDF" + m_KdfCtr "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/KdfCtr" + m_Random "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/Random" + m_WrappedHKDF "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/WrappedHKDF" + m_WrappedHMAC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/WrappedHMAC" + m_Actions "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Actions" + m_Base64 "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Base64" + m_Base64Lemmas "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Base64Lemmas" + m_BoundedInts "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/BoundedInts" + m_DivInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivInternals" + m_DivInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivInternalsNonlinear" + m_DivMod "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivMod" + m_FileIO "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/FileIO" + m_FloatCompare "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/FloatCompare" + m_Functions "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Functions" + m_GeneralInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/GeneralInternals" + m_GetOpt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/GetOpt" + m_HexStrings "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/HexStrings" + m_Logarithm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Logarithm" + m__Math "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Math_" + m_ModInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/ModInternals" + m_ModInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/ModInternalsNonlinear" + m_Mul "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Mul" + m_MulInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/MulInternals" + m_MulInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/MulInternalsNonlinear" + m_Power "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Power" + m_Relations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Relations" + m_Seq "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Seq" + m_Seq_MergeSort "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Seq_MergeSort" + m_Sorting "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Sorting" + m_StandardLibrary "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary" + m_StandardLibraryInterop "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibraryInterop" + m_StandardLibrary_MemoryMath "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_MemoryMath" + m_StandardLibrary_Sequence "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_Sequence" + m_StandardLibrary_String "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_String" + m_StandardLibrary_UInt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_UInt" + m_Streams "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Streams" + m_UnicodeStrings "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/UnicodeStrings" + m__Unicode "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Unicode_" + m_Utf16EncodingForm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Utf16EncodingForm" + m_Utf8EncodingForm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Utf8EncodingForm" + m_Wrappers "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Wrappers" + m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations" + m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes" + m_AwsCryptographyDbEncryptionSdkDynamoDbOperations "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbOperations" + m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes" + m_AwsCryptographyDbEncryptionSdkDynamoDbTypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbTypes" + m_AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations" + m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes" + m_BaseBeacon "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/BaseBeacon" + m_Canonize "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/Canonize" + m_CompoundBeacon "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/CompoundBeacon" + m_DdbVirtualFields "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DdbVirtualFields" + m_DynamoDBFilterExpr "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDBFilterExpr" + m_DynamoDBSupport "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDBSupport" + m_DynamoDbEncryption "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbEncryption" + m_DynamoDbEncryptionBranchKeyIdSupplier "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbEncryptionBranchKeyIdSupplier" + m_DynamoDbEncryptionUtil "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbEncryptionUtil" + m_DynamoDbItemEncryptor "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbItemEncryptor" + m_DynamoDbItemEncryptorUtil "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbItemEncryptorUtil" + m_DynamoDbNormalizeNumber "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbNormalizeNumber" + m_DynamoDbUpdateExpr "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbUpdateExpr" + m_DynamoToStruct "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoToStruct" + m_InternalLegacyOverride "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/InternalLegacyOverride" + m__Maps "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/Maps_" + m_OptimizedMergeSort "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/OptimizedMergeSort" + m_SearchConfigToInfo "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/SearchConfigToInfo" + m_SearchableEncryptionInfo "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/SearchableEncryptionInfo" + m_Sets "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/Sets" + m_SortCanon "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/SortCanon" + m_StructuredEncryption "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryption" + m_StructuredEncryptionCrypt "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionCrypt" + m_StructuredEncryptionFooter "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionFooter" + m_StructuredEncryptionHeader "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionHeader" + m_StructuredEncryptionPaths "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionPaths" + m_StructuredEncryptionUtil "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionUtil" + m_TermLoc "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/TermLoc" + m__System "github.com/dafny-lang/DafnyRuntimeGo/v4/System_" + _dafny "github.com/dafny-lang/DafnyRuntimeGo/v4/dafny" +) + +var _ = os.Args +var _ _dafny.Dummy__ +var _ m__System.Dummy__ +var _ m_Wrappers.Dummy__ +var _ m_BoundedInts.Dummy__ +var _ m_StandardLibrary_UInt.Dummy__ +var _ m_StandardLibrary_MemoryMath.Dummy__ +var _ m_StandardLibrary_Sequence.Dummy__ +var _ m_StandardLibrary_String.Dummy__ +var _ m_StandardLibrary.Dummy__ +var _ m_AwsCryptographyPrimitivesTypes.Dummy__ +var _ m_Random.Dummy__ +var _ m_Digest.Dummy__ +var _ m_WrappedHMAC.Dummy__ +var _ m_HKDF.Dummy__ +var _ m_WrappedHKDF.Dummy__ +var _ m_KdfCtr.Dummy__ +var _ m_AwsCryptographyPrimitivesOperations.Dummy__ +var _ m_AtomicPrimitives.Dummy__ +var _ m_ComAmazonawsDynamodbTypes.Dummy__ +var _ m_ComAmazonawsKmsTypes.Dummy__ +var _ m_AwsCryptographyKeyStoreTypes.Dummy__ +var _ m_AwsCryptographyMaterialProvidersTypes.Dummy__ +var _ m_Base64.Dummy__ +var _ m_AlgorithmSuites.Dummy__ +var _ m_Materials.Dummy__ +var _ m_Keyring.Dummy__ +var _ m_Relations.Dummy__ +var _ m_Seq_MergeSort.Dummy__ +var _ m__Math.Dummy__ +var _ m_Seq.Dummy__ +var _ m_Actions.Dummy__ +var _ m_CanonicalEncryptionContext.Dummy__ +var _ m_MaterialWrapping.Dummy__ +var _ m_IntermediateKeyWrapping.Dummy__ +var _ m_EdkWrapping.Dummy__ +var _ m_ErrorMessages.Dummy__ +var _ m_RawAESKeyring.Dummy__ +var _ m_AwsArnParsing.Dummy__ +var _ m_Constants.Dummy__ +var _ m_EcdhEdkWrapping.Dummy__ +var _ m_RawECDHKeyring.Dummy__ +var _ m_RawRSAKeyring.Dummy__ +var _ m_AwsKmsMrkMatchForDecrypt.Dummy__ +var _ m_AwsKmsUtils.Dummy__ +var _ m_AwsKmsKeyring.Dummy__ +var _ m_AwsKmsDiscoveryKeyring.Dummy__ +var _ m_AwsKmsEcdhKeyring.Dummy__ +var _ m_FileIO.Dummy__ +var _ m_LocalCMC.Dummy__ +var _ m_SynchronizedLocalCMC.Dummy__ +var _ m_StormTracker.Dummy__ +var _ m_StormTrackingCMC.Dummy__ +var _ m_CacheConstants.Dummy__ +var _ m_AwsKmsHierarchicalKeyring.Dummy__ +var _ m_AwsKmsMrkDiscoveryKeyring.Dummy__ +var _ m_AwsKmsMrkKeyring.Dummy__ +var _ m_AwsKmsRsaKeyring.Dummy__ +var _ m_MultiKeyring.Dummy__ +var _ m_AwsKmsMrkAreUnique.Dummy__ +var _ m_StrictMultiKeyring.Dummy__ +var _ m_Com_Amazonaws_Kms.Dummy__ +var _ m_Com_Amazonaws_Dynamodb.Dummy__ +var _ m_DiscoveryMultiKeyring.Dummy__ +var _ m_MrkAwareDiscoveryMultiKeyring.Dummy__ +var _ m_MrkAwareStrictMultiKeyring.Dummy__ +var _ m_CMM.Dummy__ +var _ m_Defaults.Dummy__ +var _ m_Commitment.Dummy__ +var _ m_DefaultCMM.Dummy__ +var _ m_DefaultClientSupplier.Dummy__ +var _ m_Utils.Dummy__ +var _ m_RequiredEncryptionContextCMM.Dummy__ +var _ m_AwsCryptographyMaterialProvidersOperations.Dummy__ +var _ m_MaterialProviders.Dummy__ +var _ m_KeyStoreErrorMessages.Dummy__ +var _ m_KmsArn.Dummy__ +var _ m_Structure.Dummy__ +var _ m_KMSKeystoreOperations.Dummy__ +var _ m_DDBKeystoreOperations.Dummy__ +var _ m_CreateKeys.Dummy__ +var _ m_CreateKeyStoreTable.Dummy__ +var _ m_GetKeys.Dummy__ +var _ m_AwsCryptographyKeyStoreOperations.Dummy__ +var _ m_KeyStore.Dummy__ +var _ m__Unicode.Dummy__ +var _ m_Functions.Dummy__ +var _ m_Utf8EncodingForm.Dummy__ +var _ m_Utf16EncodingForm.Dummy__ +var _ m_UnicodeStrings.Dummy__ +var _ m_GeneralInternals.Dummy__ +var _ m_MulInternalsNonlinear.Dummy__ +var _ m_MulInternals.Dummy__ +var _ m_Mul.Dummy__ +var _ m_ModInternalsNonlinear.Dummy__ +var _ m_DivInternalsNonlinear.Dummy__ +var _ m_ModInternals.Dummy__ +var _ m_DivInternals.Dummy__ +var _ m_DivMod.Dummy__ +var _ m_Power.Dummy__ +var _ m_Logarithm.Dummy__ +var _ m_StandardLibraryInterop.Dummy__ +var _ m_Streams.Dummy__ +var _ m_Sorting.Dummy__ +var _ m_HexStrings.Dummy__ +var _ m_GetOpt.Dummy__ +var _ m_FloatCompare.Dummy__ +var _ m_Base64Lemmas.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Dummy__ +var _ m_StructuredEncryptionUtil.Dummy__ +var _ m_Sets.Dummy__ +var _ m_StructuredEncryptionPaths.Dummy__ +var _ m_StructuredEncryptionHeader.Dummy__ +var _ m_StructuredEncryptionFooter.Dummy__ +var _ m_OptimizedMergeSort.Dummy__ +var _ m_SortCanon.Dummy__ +var _ m_Canonize.Dummy__ +var _ m_StructuredEncryptionCrypt.Dummy__ +var _ m__Maps.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations.Dummy__ +var _ m_StructuredEncryption.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Dummy__ +var _ m_DynamoDbEncryptionUtil.Dummy__ +var _ m_DynamoDbNormalizeNumber.Dummy__ +var _ m_DynamoToStruct.Dummy__ +var _ m_DynamoDbItemEncryptorUtil.Dummy__ +var _ m_InternalLegacyOverride.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations.Dummy__ +var _ m_DynamoDbItemEncryptor.Dummy__ +var _ m_DynamoDbEncryptionBranchKeyIdSupplier.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbOperations.Dummy__ +var _ m_DynamoDbEncryption.Dummy__ +var _ m_TermLoc.Dummy__ +var _ m_DdbVirtualFields.Dummy__ +var _ m_DynamoDbUpdateExpr.Dummy__ +var _ m_BaseBeacon.Dummy__ +var _ m_CompoundBeacon.Dummy__ +var _ m_SearchableEncryptionInfo.Dummy__ +var _ m_DynamoDBFilterExpr.Dummy__ +var _ m_DynamoDBSupport.Dummy__ +var _ m_SearchConfigToInfo.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Dummy__ + +type Dummy__ struct{} + +// Definition of class Default__ +type Default__ struct { + dummy byte +} + +func New_Default___() *Default__ { + _this := Default__{} + + return &_this +} + +type CompanionStruct_Default___ struct { +} + +var Companion_Default___ = CompanionStruct_Default___{} + +func (_this *Default__) Equals(other *Default__) bool { + return _this == other +} + +func (_this *Default__) EqualsGeneric(x interface{}) bool { + other, ok := x.(*Default__) + return ok && _this.Equals(other) +} + +func (*Default__) String() string { + return "DdbMiddlewareConfig.Default__" +} +func (_this *Default__) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = &Default__{} + +func (_static *CompanionStruct_Default___) IsPlainWrite(config Config, tableName _dafny.Sequence) bool { + return (!((config).Dtor_tableEncryptionConfigs()).Contains(tableName)) || (((((config).Dtor_tableEncryptionConfigs()).Get(tableName).(TableConfig)).Dtor_plaintextOverride()).Equals(m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Companion_PlaintextOverride_.Create_FORCE__PLAINTEXT__WRITE__ALLOW__PLAINTEXT__READ_())) +} +func (_static *CompanionStruct_Default___) AttrToString(attr m_ComAmazonawsDynamodbTypes.AttributeValue) _dafny.Sequence { + if (attr).Is_S() { + return (attr).Dtor_S() + } else if (attr).Is_N() { + return (attr).Dtor_N() + } else if (attr).Is_B() { + return m_HexStrings.Companion_Default___.ToHexString((attr).Dtor_B()) + } else { + return _dafny.SeqOfString("unexpected key type") + } +} +func (_static *CompanionStruct_Default___) KeyString(config TableConfig, item _dafny.Map) _dafny.Sequence { + var _0_partition _dafny.Sequence = (func() _dafny.Sequence { + if (item).Contains((config).Dtor_partitionKeyName()) { + return _dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate((config).Dtor_partitionKeyName(), _dafny.SeqOfString(" = ")), Companion_Default___.AttrToString((item).Get((config).Dtor_partitionKeyName()).(m_ComAmazonawsDynamodbTypes.AttributeValue))) + } + return _dafny.SeqOfString("") + })() + _ = _0_partition + var _1_sort _dafny.Sequence = (func() _dafny.Sequence { + if (((config).Dtor_sortKeyName()).Is_Some()) && ((item).Contains(((config).Dtor_sortKeyName()).Dtor_value().(_dafny.Sequence))) { + return _dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("; "), ((config).Dtor_sortKeyName()).Dtor_value().(_dafny.Sequence)), _dafny.SeqOfString(" = ")), Companion_Default___.AttrToString((item).Get(((config).Dtor_sortKeyName()).Dtor_value().(_dafny.Sequence)).(m_ComAmazonawsDynamodbTypes.AttributeValue))) + } + return _dafny.SeqOfString("") + })() + _ = _1_sort + return _dafny.Companion_Sequence_.Concatenate(_0_partition, _1_sort) +} +func (_static *CompanionStruct_Default___) MapError(r m_Wrappers.Result) m_Wrappers.Result { + return (r).MapFailure(func(coer145 func(m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Error) m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Error) func(interface{}) interface{} { + return func(arg183 interface{}) interface{} { + return coer145(arg183.(m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Error)) + } + }(func(_0_e m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Error) m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Error { + return m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_Error_.Create_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptor_(_0_e) + })) +} +func (_static *CompanionStruct_Default___) MapString(r m_Wrappers.Result) m_Wrappers.Result { + return (r).MapFailure(func(coer146 func(_dafny.Sequence) m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Error) func(interface{}) interface{} { + return func(arg184 interface{}) interface{} { + return coer146(arg184.(_dafny.Sequence)) + } + }(func(_0_e _dafny.Sequence) m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Error { + return m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_Error_.Create_DynamoDbEncryptionTransformsException_(_0_e) + })) +} +func (_static *CompanionStruct_Default___) E(s _dafny.Sequence) m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Error { + return m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_Error_.Create_DynamoDbEncryptionTransformsException_(s) +} +func (_static *CompanionStruct_Default___) MakeError(s _dafny.Sequence) m_Wrappers.Result { + return m_Wrappers.Companion_Result_.Create_Failure_(m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_Error_.Create_DynamoDbEncryptionTransformsException_(s)) +} + +// End of class Default__ + +// Definition of datatype TableConfig +type TableConfig struct { + Data_TableConfig_ +} + +func (_this TableConfig) Get_() Data_TableConfig_ { + return _this.Data_TableConfig_ +} + +type Data_TableConfig_ interface { + isTableConfig() +} + +type CompanionStruct_TableConfig_ struct { +} + +var Companion_TableConfig_ = CompanionStruct_TableConfig_{} + +type TableConfig_TableConfig struct { + PhysicalTableName _dafny.Sequence + LogicalTableName _dafny.Sequence + PartitionKeyName _dafny.Sequence + SortKeyName m_Wrappers.Option + ItemEncryptor *m_DynamoDbItemEncryptor.DynamoDbItemEncryptorClient + Search m_Wrappers.Option + PlaintextOverride m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.PlaintextOverride +} + +func (TableConfig_TableConfig) isTableConfig() {} + +func (CompanionStruct_TableConfig_) Create_TableConfig_(PhysicalTableName _dafny.Sequence, LogicalTableName _dafny.Sequence, PartitionKeyName _dafny.Sequence, SortKeyName m_Wrappers.Option, ItemEncryptor *m_DynamoDbItemEncryptor.DynamoDbItemEncryptorClient, Search m_Wrappers.Option, PlaintextOverride m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.PlaintextOverride) TableConfig { + return TableConfig{TableConfig_TableConfig{PhysicalTableName, LogicalTableName, PartitionKeyName, SortKeyName, ItemEncryptor, Search, PlaintextOverride}} +} + +func (_this TableConfig) Is_TableConfig() bool { + _, ok := _this.Get_().(TableConfig_TableConfig) + return ok +} + +func (CompanionStruct_TableConfig_) Default() TableConfig { + return Companion_TableConfig_.Create_TableConfig_(_dafny.EmptySeq.SetString(), _dafny.EmptySeq.SetString(), _dafny.EmptySeq.SetString(), m_Wrappers.Companion_Option_.Default(), (*m_DynamoDbItemEncryptor.DynamoDbItemEncryptorClient)(nil), m_Wrappers.Companion_Option_.Default(), m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Companion_PlaintextOverride_.Default()) +} + +func (_this TableConfig) Dtor_physicalTableName() _dafny.Sequence { + return _this.Get_().(TableConfig_TableConfig).PhysicalTableName +} + +func (_this TableConfig) Dtor_logicalTableName() _dafny.Sequence { + return _this.Get_().(TableConfig_TableConfig).LogicalTableName +} + +func (_this TableConfig) Dtor_partitionKeyName() _dafny.Sequence { + return _this.Get_().(TableConfig_TableConfig).PartitionKeyName +} + +func (_this TableConfig) Dtor_sortKeyName() m_Wrappers.Option { + return _this.Get_().(TableConfig_TableConfig).SortKeyName +} + +func (_this TableConfig) Dtor_itemEncryptor() *m_DynamoDbItemEncryptor.DynamoDbItemEncryptorClient { + return _this.Get_().(TableConfig_TableConfig).ItemEncryptor +} + +func (_this TableConfig) Dtor_search() m_Wrappers.Option { + return _this.Get_().(TableConfig_TableConfig).Search +} + +func (_this TableConfig) Dtor_plaintextOverride() m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.PlaintextOverride { + return _this.Get_().(TableConfig_TableConfig).PlaintextOverride +} + +func (_this TableConfig) String() string { + switch data := _this.Get_().(type) { + case nil: + return "null" + case TableConfig_TableConfig: + { + return "DdbMiddlewareConfig.TableConfig.TableConfig" + "(" + _dafny.String(data.PhysicalTableName) + ", " + _dafny.String(data.LogicalTableName) + ", " + _dafny.String(data.PartitionKeyName) + ", " + _dafny.String(data.SortKeyName) + ", " + _dafny.String(data.ItemEncryptor) + ", " + _dafny.String(data.Search) + ", " + _dafny.String(data.PlaintextOverride) + ")" + } + default: + { + return "" + } + } +} + +func (_this TableConfig) Equals(other TableConfig) bool { + switch data1 := _this.Get_().(type) { + case TableConfig_TableConfig: + { + data2, ok := other.Get_().(TableConfig_TableConfig) + return ok && data1.PhysicalTableName.Equals(data2.PhysicalTableName) && data1.LogicalTableName.Equals(data2.LogicalTableName) && data1.PartitionKeyName.Equals(data2.PartitionKeyName) && data1.SortKeyName.Equals(data2.SortKeyName) && data1.ItemEncryptor == data2.ItemEncryptor && data1.Search.Equals(data2.Search) && data1.PlaintextOverride.Equals(data2.PlaintextOverride) + } + default: + { + return false // unexpected + } + } +} + +func (_this TableConfig) EqualsGeneric(other interface{}) bool { + typed, ok := other.(TableConfig) + return ok && _this.Equals(typed) +} + +func Type_TableConfig_() _dafny.TypeDescriptor { + return type_TableConfig_{} +} + +type type_TableConfig_ struct { +} + +func (_this type_TableConfig_) Default() interface{} { + return Companion_TableConfig_.Default() +} + +func (_this type_TableConfig_) String() string { + return "DdbMiddlewareConfig.TableConfig" +} +func (_this TableConfig) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = TableConfig{} + +// End of datatype TableConfig + +// Definition of class ValidTableConfig +type ValidTableConfig struct { +} + +func New_ValidTableConfig_() *ValidTableConfig { + _this := ValidTableConfig{} + + return &_this +} + +type CompanionStruct_ValidTableConfig_ struct { +} + +var Companion_ValidTableConfig_ = CompanionStruct_ValidTableConfig_{} + +func (*ValidTableConfig) String() string { + return "DdbMiddlewareConfig.ValidTableConfig" +} + +// End of class ValidTableConfig + +func Type_ValidTableConfig_() _dafny.TypeDescriptor { + return type_ValidTableConfig_{} +} + +type type_ValidTableConfig_ struct { +} + +func (_this type_ValidTableConfig_) Default() interface{} { + return Companion_TableConfig_.Default() +} + +func (_this type_ValidTableConfig_) String() string { + return "DdbMiddlewareConfig.ValidTableConfig" +} + +// Definition of datatype Config +type Config struct { + Data_Config_ +} + +func (_this Config) Get_() Data_Config_ { + return _this.Data_Config_ +} + +type Data_Config_ interface { + isConfig() +} + +type CompanionStruct_Config_ struct { +} + +var Companion_Config_ = CompanionStruct_Config_{} + +type Config_Config struct { + TableEncryptionConfigs _dafny.Map +} + +func (Config_Config) isConfig() {} + +func (CompanionStruct_Config_) Create_Config_(TableEncryptionConfigs _dafny.Map) Config { + return Config{Config_Config{TableEncryptionConfigs}} +} + +func (_this Config) Is_Config() bool { + _, ok := _this.Get_().(Config_Config) + return ok +} + +func (CompanionStruct_Config_) Default() Config { + return Companion_Config_.Create_Config_(_dafny.EmptyMap) +} + +func (_this Config) Dtor_tableEncryptionConfigs() _dafny.Map { + return _this.Get_().(Config_Config).TableEncryptionConfigs +} + +func (_this Config) String() string { + switch data := _this.Get_().(type) { + case nil: + return "null" + case Config_Config: + { + return "DdbMiddlewareConfig.Config.Config" + "(" + _dafny.String(data.TableEncryptionConfigs) + ")" + } + default: + { + return "" + } + } +} + +func (_this Config) Equals(other Config) bool { + switch data1 := _this.Get_().(type) { + case Config_Config: + { + data2, ok := other.Get_().(Config_Config) + return ok && data1.TableEncryptionConfigs.Equals(data2.TableEncryptionConfigs) + } + default: + { + return false // unexpected + } + } +} + +func (_this Config) EqualsGeneric(other interface{}) bool { + typed, ok := other.(Config) + return ok && _this.Equals(typed) +} + +func Type_Config_() _dafny.TypeDescriptor { + return type_Config_{} +} + +type type_Config_ struct { +} + +func (_this type_Config_) Default() interface{} { + return Companion_Config_.Default() +} + +func (_this type_Config_) String() string { + return "DdbMiddlewareConfig.Config" +} +func (_this Config) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = Config{} + +// End of datatype Config diff --git a/releases/go/dynamodb-esdk/DdbStatement/DdbStatement.go b/releases/go/dynamodb-esdk/DdbStatement/DdbStatement.go new file mode 100644 index 000000000..05784e7dd --- /dev/null +++ b/releases/go/dynamodb-esdk/DdbStatement/DdbStatement.go @@ -0,0 +1,578 @@ +// Package DdbStatement +// Dafny module DdbStatement compiled into Go + +package DdbStatement + +import ( + os "os" + + m_ComAmazonawsDynamodbTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/dynamodb/ComAmazonawsDynamodbTypes" + m_Com_Amazonaws_Dynamodb "github.com/aws/aws-cryptographic-material-providers-library/releases/go/dynamodb/Com_Amazonaws_Dynamodb" + m_ComAmazonawsKmsTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/kms/ComAmazonawsKmsTypes" + m_Com_Amazonaws_Kms "github.com/aws/aws-cryptographic-material-providers-library/releases/go/kms/Com_Amazonaws_Kms" + m_AlgorithmSuites "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AlgorithmSuites" + m_AwsArnParsing "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsArnParsing" + m_AwsCryptographyKeyStoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyKeyStoreOperations" + m_AwsCryptographyKeyStoreTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyKeyStoreTypes" + m_AwsCryptographyMaterialProvidersOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyMaterialProvidersOperations" + m_AwsCryptographyMaterialProvidersTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyMaterialProvidersTypes" + m_AwsKmsDiscoveryKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsDiscoveryKeyring" + m_AwsKmsEcdhKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsEcdhKeyring" + m_AwsKmsHierarchicalKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsHierarchicalKeyring" + m_AwsKmsKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsKeyring" + m_AwsKmsMrkAreUnique "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkAreUnique" + m_AwsKmsMrkDiscoveryKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkDiscoveryKeyring" + m_AwsKmsMrkKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkKeyring" + m_AwsKmsMrkMatchForDecrypt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkMatchForDecrypt" + m_AwsKmsRsaKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsRsaKeyring" + m_AwsKmsUtils "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsUtils" + m_CMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CMM" + m_CacheConstants "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CacheConstants" + m_CanonicalEncryptionContext "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CanonicalEncryptionContext" + m_Commitment "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Commitment" + m_Constants "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Constants" + m_CreateKeyStoreTable "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CreateKeyStoreTable" + m_CreateKeys "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CreateKeys" + m_DDBKeystoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DDBKeystoreOperations" + m_DefaultCMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DefaultCMM" + m_DefaultClientSupplier "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DefaultClientSupplier" + m_Defaults "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Defaults" + m_DiscoveryMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DiscoveryMultiKeyring" + m_EcdhEdkWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/EcdhEdkWrapping" + m_EdkWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/EdkWrapping" + m_ErrorMessages "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/ErrorMessages" + m_GetKeys "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/GetKeys" + m_IntermediateKeyWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/IntermediateKeyWrapping" + m_KMSKeystoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KMSKeystoreOperations" + m_KeyStore "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KeyStore" + m_KeyStoreErrorMessages "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KeyStoreErrorMessages" + m_Keyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Keyring" + m_KmsArn "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KmsArn" + m_LocalCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/LocalCMC" + m_MaterialProviders "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MaterialProviders" + m_MaterialWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MaterialWrapping" + m_Materials "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Materials" + m_MrkAwareDiscoveryMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MrkAwareDiscoveryMultiKeyring" + m_MrkAwareStrictMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MrkAwareStrictMultiKeyring" + m_MultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MultiKeyring" + m_RawAESKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawAESKeyring" + m_RawECDHKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawECDHKeyring" + m_RawRSAKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawRSAKeyring" + m_RequiredEncryptionContextCMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RequiredEncryptionContextCMM" + m_StormTracker "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StormTracker" + m_StormTrackingCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StormTrackingCMC" + m_StrictMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StrictMultiKeyring" + m_Structure "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Structure" + m_SynchronizedLocalCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/SynchronizedLocalCMC" + m_Utils "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Utils" + m_AtomicPrimitives "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AtomicPrimitives" + m_AwsCryptographyPrimitivesOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AwsCryptographyPrimitivesOperations" + m_AwsCryptographyPrimitivesTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AwsCryptographyPrimitivesTypes" + m_Digest "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/Digest" + m_HKDF "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/HKDF" + m_KdfCtr "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/KdfCtr" + m_Random "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/Random" + m_WrappedHKDF "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/WrappedHKDF" + m_WrappedHMAC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/WrappedHMAC" + m_Actions "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Actions" + m_Base64 "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Base64" + m_Base64Lemmas "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Base64Lemmas" + m_BoundedInts "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/BoundedInts" + m_DivInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivInternals" + m_DivInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivInternalsNonlinear" + m_DivMod "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivMod" + m_FileIO "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/FileIO" + m_FloatCompare "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/FloatCompare" + m_Functions "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Functions" + m_GeneralInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/GeneralInternals" + m_GetOpt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/GetOpt" + m_HexStrings "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/HexStrings" + m_Logarithm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Logarithm" + m__Math "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Math_" + m_ModInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/ModInternals" + m_ModInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/ModInternalsNonlinear" + m_Mul "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Mul" + m_MulInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/MulInternals" + m_MulInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/MulInternalsNonlinear" + m_Power "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Power" + m_Relations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Relations" + m_Seq "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Seq" + m_Seq_MergeSort "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Seq_MergeSort" + m_Sorting "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Sorting" + m_StandardLibrary "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary" + m_StandardLibraryInterop "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibraryInterop" + m_StandardLibrary_MemoryMath "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_MemoryMath" + m_StandardLibrary_Sequence "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_Sequence" + m_StandardLibrary_String "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_String" + m_StandardLibrary_UInt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_UInt" + m_Streams "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Streams" + m_UnicodeStrings "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/UnicodeStrings" + m__Unicode "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Unicode_" + m_Utf16EncodingForm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Utf16EncodingForm" + m_Utf8EncodingForm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Utf8EncodingForm" + m_Wrappers "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Wrappers" + m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations" + m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes" + m_AwsCryptographyDbEncryptionSdkDynamoDbOperations "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbOperations" + m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes" + m_AwsCryptographyDbEncryptionSdkDynamoDbTypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbTypes" + m_AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations" + m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes" + m_BaseBeacon "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/BaseBeacon" + m_Canonize "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/Canonize" + m_CompoundBeacon "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/CompoundBeacon" + m_DdbMiddlewareConfig "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DdbMiddlewareConfig" + m_DdbVirtualFields "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DdbVirtualFields" + m_DynamoDBFilterExpr "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDBFilterExpr" + m_DynamoDBSupport "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDBSupport" + m_DynamoDbEncryption "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbEncryption" + m_DynamoDbEncryptionBranchKeyIdSupplier "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbEncryptionBranchKeyIdSupplier" + m_DynamoDbEncryptionUtil "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbEncryptionUtil" + m_DynamoDbItemEncryptor "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbItemEncryptor" + m_DynamoDbItemEncryptorUtil "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbItemEncryptorUtil" + m_DynamoDbNormalizeNumber "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbNormalizeNumber" + m_DynamoDbUpdateExpr "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbUpdateExpr" + m_DynamoToStruct "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoToStruct" + m_InternalLegacyOverride "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/InternalLegacyOverride" + m__Maps "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/Maps_" + m_OptimizedMergeSort "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/OptimizedMergeSort" + m_SearchConfigToInfo "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/SearchConfigToInfo" + m_SearchableEncryptionInfo "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/SearchableEncryptionInfo" + m_Sets "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/Sets" + m_SortCanon "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/SortCanon" + m_StructuredEncryption "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryption" + m_StructuredEncryptionCrypt "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionCrypt" + m_StructuredEncryptionFooter "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionFooter" + m_StructuredEncryptionHeader "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionHeader" + m_StructuredEncryptionPaths "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionPaths" + m_StructuredEncryptionUtil "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionUtil" + m_TermLoc "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/TermLoc" + m__System "github.com/dafny-lang/DafnyRuntimeGo/v4/System_" + _dafny "github.com/dafny-lang/DafnyRuntimeGo/v4/dafny" +) + +var _ = os.Args +var _ _dafny.Dummy__ +var _ m__System.Dummy__ +var _ m_Wrappers.Dummy__ +var _ m_BoundedInts.Dummy__ +var _ m_StandardLibrary_UInt.Dummy__ +var _ m_StandardLibrary_MemoryMath.Dummy__ +var _ m_StandardLibrary_Sequence.Dummy__ +var _ m_StandardLibrary_String.Dummy__ +var _ m_StandardLibrary.Dummy__ +var _ m_AwsCryptographyPrimitivesTypes.Dummy__ +var _ m_Random.Dummy__ +var _ m_Digest.Dummy__ +var _ m_WrappedHMAC.Dummy__ +var _ m_HKDF.Dummy__ +var _ m_WrappedHKDF.Dummy__ +var _ m_KdfCtr.Dummy__ +var _ m_AwsCryptographyPrimitivesOperations.Dummy__ +var _ m_AtomicPrimitives.Dummy__ +var _ m_ComAmazonawsDynamodbTypes.Dummy__ +var _ m_ComAmazonawsKmsTypes.Dummy__ +var _ m_AwsCryptographyKeyStoreTypes.Dummy__ +var _ m_AwsCryptographyMaterialProvidersTypes.Dummy__ +var _ m_Base64.Dummy__ +var _ m_AlgorithmSuites.Dummy__ +var _ m_Materials.Dummy__ +var _ m_Keyring.Dummy__ +var _ m_Relations.Dummy__ +var _ m_Seq_MergeSort.Dummy__ +var _ m__Math.Dummy__ +var _ m_Seq.Dummy__ +var _ m_Actions.Dummy__ +var _ m_CanonicalEncryptionContext.Dummy__ +var _ m_MaterialWrapping.Dummy__ +var _ m_IntermediateKeyWrapping.Dummy__ +var _ m_EdkWrapping.Dummy__ +var _ m_ErrorMessages.Dummy__ +var _ m_RawAESKeyring.Dummy__ +var _ m_AwsArnParsing.Dummy__ +var _ m_Constants.Dummy__ +var _ m_EcdhEdkWrapping.Dummy__ +var _ m_RawECDHKeyring.Dummy__ +var _ m_RawRSAKeyring.Dummy__ +var _ m_AwsKmsMrkMatchForDecrypt.Dummy__ +var _ m_AwsKmsUtils.Dummy__ +var _ m_AwsKmsKeyring.Dummy__ +var _ m_AwsKmsDiscoveryKeyring.Dummy__ +var _ m_AwsKmsEcdhKeyring.Dummy__ +var _ m_FileIO.Dummy__ +var _ m_LocalCMC.Dummy__ +var _ m_SynchronizedLocalCMC.Dummy__ +var _ m_StormTracker.Dummy__ +var _ m_StormTrackingCMC.Dummy__ +var _ m_CacheConstants.Dummy__ +var _ m_AwsKmsHierarchicalKeyring.Dummy__ +var _ m_AwsKmsMrkDiscoveryKeyring.Dummy__ +var _ m_AwsKmsMrkKeyring.Dummy__ +var _ m_AwsKmsRsaKeyring.Dummy__ +var _ m_MultiKeyring.Dummy__ +var _ m_AwsKmsMrkAreUnique.Dummy__ +var _ m_StrictMultiKeyring.Dummy__ +var _ m_Com_Amazonaws_Kms.Dummy__ +var _ m_Com_Amazonaws_Dynamodb.Dummy__ +var _ m_DiscoveryMultiKeyring.Dummy__ +var _ m_MrkAwareDiscoveryMultiKeyring.Dummy__ +var _ m_MrkAwareStrictMultiKeyring.Dummy__ +var _ m_CMM.Dummy__ +var _ m_Defaults.Dummy__ +var _ m_Commitment.Dummy__ +var _ m_DefaultCMM.Dummy__ +var _ m_DefaultClientSupplier.Dummy__ +var _ m_Utils.Dummy__ +var _ m_RequiredEncryptionContextCMM.Dummy__ +var _ m_AwsCryptographyMaterialProvidersOperations.Dummy__ +var _ m_MaterialProviders.Dummy__ +var _ m_KeyStoreErrorMessages.Dummy__ +var _ m_KmsArn.Dummy__ +var _ m_Structure.Dummy__ +var _ m_KMSKeystoreOperations.Dummy__ +var _ m_DDBKeystoreOperations.Dummy__ +var _ m_CreateKeys.Dummy__ +var _ m_CreateKeyStoreTable.Dummy__ +var _ m_GetKeys.Dummy__ +var _ m_AwsCryptographyKeyStoreOperations.Dummy__ +var _ m_KeyStore.Dummy__ +var _ m__Unicode.Dummy__ +var _ m_Functions.Dummy__ +var _ m_Utf8EncodingForm.Dummy__ +var _ m_Utf16EncodingForm.Dummy__ +var _ m_UnicodeStrings.Dummy__ +var _ m_GeneralInternals.Dummy__ +var _ m_MulInternalsNonlinear.Dummy__ +var _ m_MulInternals.Dummy__ +var _ m_Mul.Dummy__ +var _ m_ModInternalsNonlinear.Dummy__ +var _ m_DivInternalsNonlinear.Dummy__ +var _ m_ModInternals.Dummy__ +var _ m_DivInternals.Dummy__ +var _ m_DivMod.Dummy__ +var _ m_Power.Dummy__ +var _ m_Logarithm.Dummy__ +var _ m_StandardLibraryInterop.Dummy__ +var _ m_Streams.Dummy__ +var _ m_Sorting.Dummy__ +var _ m_HexStrings.Dummy__ +var _ m_GetOpt.Dummy__ +var _ m_FloatCompare.Dummy__ +var _ m_Base64Lemmas.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Dummy__ +var _ m_StructuredEncryptionUtil.Dummy__ +var _ m_Sets.Dummy__ +var _ m_StructuredEncryptionPaths.Dummy__ +var _ m_StructuredEncryptionHeader.Dummy__ +var _ m_StructuredEncryptionFooter.Dummy__ +var _ m_OptimizedMergeSort.Dummy__ +var _ m_SortCanon.Dummy__ +var _ m_Canonize.Dummy__ +var _ m_StructuredEncryptionCrypt.Dummy__ +var _ m__Maps.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations.Dummy__ +var _ m_StructuredEncryption.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Dummy__ +var _ m_DynamoDbEncryptionUtil.Dummy__ +var _ m_DynamoDbNormalizeNumber.Dummy__ +var _ m_DynamoToStruct.Dummy__ +var _ m_DynamoDbItemEncryptorUtil.Dummy__ +var _ m_InternalLegacyOverride.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations.Dummy__ +var _ m_DynamoDbItemEncryptor.Dummy__ +var _ m_DynamoDbEncryptionBranchKeyIdSupplier.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbOperations.Dummy__ +var _ m_DynamoDbEncryption.Dummy__ +var _ m_TermLoc.Dummy__ +var _ m_DdbVirtualFields.Dummy__ +var _ m_DynamoDbUpdateExpr.Dummy__ +var _ m_BaseBeacon.Dummy__ +var _ m_CompoundBeacon.Dummy__ +var _ m_SearchableEncryptionInfo.Dummy__ +var _ m_DynamoDBFilterExpr.Dummy__ +var _ m_DynamoDBSupport.Dummy__ +var _ m_SearchConfigToInfo.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Dummy__ +var _ m_DdbMiddlewareConfig.Dummy__ + +type Dummy__ struct{} + +// Definition of class Default__ +type Default__ struct { + dummy byte +} + +func New_Default___() *Default__ { + _this := Default__{} + + return &_this +} + +type CompanionStruct_Default___ struct { +} + +var Companion_Default___ = CompanionStruct_Default___{} + +func (_this *Default__) Equals(other *Default__) bool { + return _this == other +} + +func (_this *Default__) EqualsGeneric(x interface{}) bool { + other, ok := x.(*Default__) + return ok && _this.Equals(other) +} + +func (*Default__) String() string { + return "DdbStatement.Default__" +} +func (_this *Default__) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = &Default__{} + +func (_static *CompanionStruct_Default___) UnQuote(s _dafny.Sequence) _dafny.Sequence { + var _0_s _dafny.Sequence = (func() _dafny.Sequence { + if ((_dafny.IntOfUint32((s).Cardinality())).Sign() == 1) && (((s).Select(0).(_dafny.Char)) == (_dafny.Char('"'))) { + return (s).Drop(1) + } + return s + })() + _ = _0_s + if ((_dafny.IntOfUint32((_0_s).Cardinality())).Sign() == 1) && (((_0_s).Select(((_dafny.IntOfUint32((_0_s).Cardinality())).Minus(_dafny.One)).Uint32()).(_dafny.Char)) == (_dafny.Char('"'))) { + return (_0_s).Subsequence(0, ((_dafny.IntOfUint32((_0_s).Cardinality())).Minus(_dafny.One)).Uint32()) + } else { + return _0_s + } +} +func (_static *CompanionStruct_Default___) GetTableName(s _dafny.Sequence) m_Wrappers.Option { + var _0_s _dafny.Sequence = Companion_Default___.UnQuote(s) + _ = _0_s + if m_ComAmazonawsDynamodbTypes.Companion_Default___.IsValid__TableName(_0_s) { + return m_Wrappers.Companion_Option_.Create_Some_(_0_s) + } else { + return m_Wrappers.Companion_Option_.Create_None_() + } +} +func (_static *CompanionStruct_Default___) TableFromStatement(s _dafny.Sequence) m_Wrappers.Result { + var _0_ret m_Wrappers.Option = Companion_Default___.TableFromStatementInner(s) + _ = _0_ret + if (_0_ret).Is_Some() { + return m_Wrappers.Companion_Result_.Create_Success_((_0_ret).Dtor_value().(_dafny.Sequence)) + } else { + return m_Wrappers.Companion_Result_.Create_Failure_(_dafny.SeqOfString("Unable to extract table name from PartiQL statement.")) + } +} +func (_static *CompanionStruct_Default___) TableFromStatementInner(s _dafny.Sequence) m_Wrappers.Option { + var _0_s _dafny.Sequence = Companion_Default___.StripLeadingWhitespace(s) + _ = _0_s + if ((_dafny.IntOfUint32((_0_s).Cardinality())).Cmp(_dafny.IntOfInt64(6)) > 0) && (_dafny.Companion_Sequence_.Equal(Companion_Default___.AsciiLower((_0_s).Subsequence(0, 6)), _dafny.SeqOfString("exists"))) { + return Companion_Default___.TableFromExistsStatement((_0_s).Drop(6)) + } else { + var _1_len _dafny.Int = Companion_Default___.FindTokenLen(_0_s) + _ = _1_len + var _2_cmd _dafny.Sequence = Companion_Default___.AsciiLower((_0_s).Take((_1_len).Uint32())) + _ = _2_cmd + if _dafny.Companion_Sequence_.Equal(_2_cmd, _dafny.SeqOfString("select")) { + return Companion_Default___.TableFromSelectStatement((_0_s).Drop((_1_len).Uint32())) + } else if _dafny.Companion_Sequence_.Equal(_2_cmd, _dafny.SeqOfString("update")) { + return Companion_Default___.TableFromUpdateStatement((_0_s).Drop((_1_len).Uint32())) + } else if _dafny.Companion_Sequence_.Equal(_2_cmd, _dafny.SeqOfString("delete")) { + return Companion_Default___.TableFromDeleteStatement((_0_s).Drop((_1_len).Uint32())) + } else if _dafny.Companion_Sequence_.Equal(_2_cmd, _dafny.SeqOfString("insert")) { + return Companion_Default___.TableFromInsertStatement((_0_s).Drop((_1_len).Uint32())) + } else { + return m_Wrappers.Companion_Option_.Create_None_() + } + } +} +func (_static *CompanionStruct_Default___) TableFromSelectStatementInner(s _dafny.Sequence) m_Wrappers.Option { + goto TAIL_CALL_START +TAIL_CALL_START: + if (_dafny.IntOfUint32((s).Cardinality())).Sign() == 0 { + return m_Wrappers.Companion_Option_.Create_None_() + } else { + var _0_t _dafny.Sequence = Companion_Default___.StripLeadingWhitespace(s) + _ = _0_t + var _1_len _dafny.Int = Companion_Default___.FindTokenLen(_0_t) + _ = _1_len + if _dafny.Companion_Sequence_.Equal(Companion_Default___.AsciiLower((_0_t).Take((_1_len).Uint32())), _dafny.SeqOfString("from")) { + var _2_t _dafny.Sequence = Companion_Default___.StripLeadingWhitespace((_0_t).Drop((_1_len).Uint32())) + _ = _2_t + var _3_len _dafny.Int = Companion_Default___.FindTokenLen(_2_t) + _ = _3_len + return m_Wrappers.Companion_Option_.Create_Some_((_2_t).Take((_3_len).Uint32())) + } else if (_1_len).Sign() == 0 { + return m_Wrappers.Companion_Option_.Create_None_() + } else { + var _in0 _dafny.Sequence = (_0_t).Drop((_1_len).Uint32()) + _ = _in0 + s = _in0 + goto TAIL_CALL_START + } + } +} +func (_static *CompanionStruct_Default___) TableFromExistsStatement(s _dafny.Sequence) m_Wrappers.Option { + var _0_s _dafny.Sequence = Companion_Default___.StripLeadingWhitespace(s) + _ = _0_s + if ((_dafny.IntOfUint32((_0_s).Cardinality())).Sign() == 0) || (((_0_s).Select(0).(_dafny.Char)) != (_dafny.Char('(')) /* dircomp */) { + return m_Wrappers.Companion_Option_.Create_None_() + } else { + var _1_s _dafny.Sequence = Companion_Default___.StripLeadingWhitespace((_0_s).Drop(1)) + _ = _1_s + var _2_len _dafny.Int = Companion_Default___.FindTokenLen(_1_s) + _ = _2_len + if _dafny.Companion_Sequence_.Equal(Companion_Default___.AsciiLower((_1_s).Take((_2_len).Uint32())), _dafny.SeqOfString("select")) { + return Companion_Default___.TableFromSelectStatement((_1_s).Drop((_2_len).Uint32())) + } else { + return m_Wrappers.Companion_Option_.Create_None_() + } + } +} +func (_static *CompanionStruct_Default___) TableFromSelectStatement(s _dafny.Sequence) m_Wrappers.Option { + var _0_valueOrError0 m_Wrappers.Option = Companion_Default___.TableFromSelectStatementInner(s) + _ = _0_valueOrError0 + if (_0_valueOrError0).IsFailure() { + return (_0_valueOrError0).PropagateFailure() + } else { + var _1_name _dafny.Sequence = (_0_valueOrError0).Extract().(_dafny.Sequence) + _ = _1_name + if _dafny.Companion_Sequence_.Contains(_1_name, _dafny.Char('.')) { + var _2_x _dafny.Tuple = m_StandardLibrary.Companion_Default___.SplitOnce(_1_name, _dafny.Char('.')) + _ = _2_x + return Companion_Default___.GetTableName((*(_2_x).IndexInt(0)).(_dafny.Sequence)) + } else { + return Companion_Default___.GetTableName(_1_name) + } + } +} +func (_static *CompanionStruct_Default___) TableFromUpdateStatement(s _dafny.Sequence) m_Wrappers.Option { + var _0_s _dafny.Sequence = Companion_Default___.StripLeadingWhitespace(s) + _ = _0_s + var _1_len _dafny.Int = Companion_Default___.FindTokenLen(_0_s) + _ = _1_len + if (_1_len).Sign() == 0 { + return m_Wrappers.Companion_Option_.Create_None_() + } else { + return Companion_Default___.GetTableName((_0_s).Take((_1_len).Uint32())) + } +} +func (_static *CompanionStruct_Default___) TableFromDeleteStatement(s _dafny.Sequence) m_Wrappers.Option { + var _0_s _dafny.Sequence = Companion_Default___.StripLeadingWhitespace(s) + _ = _0_s + var _1_len _dafny.Int = Companion_Default___.FindTokenLen(_0_s) + _ = _1_len + if !_dafny.Companion_Sequence_.Equal(Companion_Default___.AsciiLower((_0_s).Take((_1_len).Uint32())), _dafny.SeqOfString("from")) { + return m_Wrappers.Companion_Option_.Create_None_() + } else { + var _2_s _dafny.Sequence = Companion_Default___.StripLeadingWhitespace((_0_s).Drop((_1_len).Uint32())) + _ = _2_s + var _3_len _dafny.Int = Companion_Default___.FindTokenLen(_2_s) + _ = _3_len + if (_3_len).Sign() == 0 { + return m_Wrappers.Companion_Option_.Create_None_() + } else { + return Companion_Default___.GetTableName((_2_s).Take((_3_len).Uint32())) + } + } +} +func (_static *CompanionStruct_Default___) TableFromInsertStatement(s _dafny.Sequence) m_Wrappers.Option { + var _0_s _dafny.Sequence = Companion_Default___.StripLeadingWhitespace(s) + _ = _0_s + var _1_len _dafny.Int = Companion_Default___.FindTokenLen(_0_s) + _ = _1_len + if !_dafny.Companion_Sequence_.Equal(Companion_Default___.AsciiLower((_0_s).Take((_1_len).Uint32())), _dafny.SeqOfString("into")) { + return m_Wrappers.Companion_Option_.Create_None_() + } else { + var _2_s _dafny.Sequence = Companion_Default___.StripLeadingWhitespace((_0_s).Drop((_1_len).Uint32())) + _ = _2_s + var _3_len _dafny.Int = Companion_Default___.FindTokenLen(_2_s) + _ = _3_len + if (_3_len).Sign() == 0 { + return m_Wrappers.Companion_Option_.Create_None_() + } else { + return Companion_Default___.GetTableName((_2_s).Take((_3_len).Uint32())) + } + } +} +func (_static *CompanionStruct_Default___) IsWhitespace(ch _dafny.Char) bool { + return (ch) <= (_dafny.Char(' ')) +} +func (_static *CompanionStruct_Default___) StripLeadingWhitespace(s _dafny.Sequence) _dafny.Sequence { + goto TAIL_CALL_START +TAIL_CALL_START: + if ((_dafny.IntOfUint32((s).Cardinality())).Sign() == 0) || (!(Companion_Default___.IsWhitespace((s).Select(0).(_dafny.Char)))) { + return s + } else { + var _in0 _dafny.Sequence = (s).Drop(1) + _ = _in0 + s = _in0 + goto TAIL_CALL_START + } +} +func (_static *CompanionStruct_Default___) AsciiLowerChar(ch _dafny.Char) _dafny.Char { + if ((_dafny.Char('A')) <= (ch)) && ((ch) <= (_dafny.Char('Z'))) { + return ((ch) - (_dafny.Char('A'))) + (_dafny.Char('a')) + } else { + return ch + } +} +func (_static *CompanionStruct_Default___) AsciiLower(s _dafny.Sequence) _dafny.Sequence { + var _0___accumulator _dafny.Sequence = _dafny.SeqOfChars() + _ = _0___accumulator + goto TAIL_CALL_START +TAIL_CALL_START: + if (_dafny.IntOfUint32((s).Cardinality())).Sign() == 0 { + return _dafny.Companion_Sequence_.Concatenate(_0___accumulator, s) + } else { + _0___accumulator = _dafny.Companion_Sequence_.Concatenate(_0___accumulator, _dafny.SeqOfChars(Companion_Default___.AsciiLowerChar((s).Select(0).(_dafny.Char)))) + var _in0 _dafny.Sequence = (s).Drop(1) + _ = _in0 + s = _in0 + goto TAIL_CALL_START + } +} +func (_static *CompanionStruct_Default___) FindTokenLen(s _dafny.Sequence) _dafny.Int { + if ((_dafny.IntOfUint32((s).Cardinality())).Sign() == 0) || (Companion_Default___.IsWhitespace((s).Select(0).(_dafny.Char))) { + return _dafny.Zero + } else if ((s).Select(0).(_dafny.Char)) == (_dafny.Char('"')) { + return (_dafny.One).Plus(Companion_Default___.FindTokenLenQuoted((s).Drop(1))) + } else { + return Companion_Default___.FindTokenLenPlain(s) + } +} +func (_static *CompanionStruct_Default___) FindTokenLenPlain(s _dafny.Sequence) _dafny.Int { + var _0___accumulator _dafny.Int = _dafny.Zero + _ = _0___accumulator + goto TAIL_CALL_START +TAIL_CALL_START: + if ((_dafny.IntOfUint32((s).Cardinality())).Sign() == 0) || (Companion_Default___.IsWhitespace((s).Select(0).(_dafny.Char))) { + return (_dafny.Zero).Plus(_0___accumulator) + } else { + _0___accumulator = (_0___accumulator).Plus(_dafny.One) + var _in0 _dafny.Sequence = (s).Drop(1) + _ = _in0 + s = _in0 + goto TAIL_CALL_START + } +} +func (_static *CompanionStruct_Default___) FindTokenLenQuoted(s _dafny.Sequence) _dafny.Int { + var _0___accumulator _dafny.Int = _dafny.Zero + _ = _0___accumulator + goto TAIL_CALL_START +TAIL_CALL_START: + if (_dafny.IntOfUint32((s).Cardinality())).Sign() == 0 { + return (_dafny.Zero).Plus(_0___accumulator) + } else if ((s).Select(0).(_dafny.Char)) == (_dafny.Char('"')) { + return (_dafny.One).Plus(_0___accumulator) + } else { + _0___accumulator = (_0___accumulator).Plus(_dafny.One) + var _in0 _dafny.Sequence = (s).Drop(1) + _ = _in0 + s = _in0 + goto TAIL_CALL_START + } +} + +// End of class Default__ diff --git a/releases/go/dynamodb-esdk/DdbVirtualFields/DdbVirtualFields.go b/releases/go/dynamodb-esdk/DdbVirtualFields/DdbVirtualFields.go new file mode 100644 index 000000000..35a37cd97 --- /dev/null +++ b/releases/go/dynamodb-esdk/DdbVirtualFields/DdbVirtualFields.go @@ -0,0 +1,951 @@ +// Package DdbVirtualFields +// Dafny module DdbVirtualFields compiled into Go + +package DdbVirtualFields + +import ( + os "os" + + m_ComAmazonawsDynamodbTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/dynamodb/ComAmazonawsDynamodbTypes" + m_Com_Amazonaws_Dynamodb "github.com/aws/aws-cryptographic-material-providers-library/releases/go/dynamodb/Com_Amazonaws_Dynamodb" + m_ComAmazonawsKmsTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/kms/ComAmazonawsKmsTypes" + m_Com_Amazonaws_Kms "github.com/aws/aws-cryptographic-material-providers-library/releases/go/kms/Com_Amazonaws_Kms" + m_AlgorithmSuites "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AlgorithmSuites" + m_AwsArnParsing "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsArnParsing" + m_AwsCryptographyKeyStoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyKeyStoreOperations" + m_AwsCryptographyKeyStoreTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyKeyStoreTypes" + m_AwsCryptographyMaterialProvidersOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyMaterialProvidersOperations" + m_AwsCryptographyMaterialProvidersTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyMaterialProvidersTypes" + m_AwsKmsDiscoveryKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsDiscoveryKeyring" + m_AwsKmsEcdhKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsEcdhKeyring" + m_AwsKmsHierarchicalKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsHierarchicalKeyring" + m_AwsKmsKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsKeyring" + m_AwsKmsMrkAreUnique "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkAreUnique" + m_AwsKmsMrkDiscoveryKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkDiscoveryKeyring" + m_AwsKmsMrkKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkKeyring" + m_AwsKmsMrkMatchForDecrypt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkMatchForDecrypt" + m_AwsKmsRsaKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsRsaKeyring" + m_AwsKmsUtils "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsUtils" + m_CMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CMM" + m_CacheConstants "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CacheConstants" + m_CanonicalEncryptionContext "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CanonicalEncryptionContext" + m_Commitment "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Commitment" + m_Constants "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Constants" + m_CreateKeyStoreTable "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CreateKeyStoreTable" + m_CreateKeys "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CreateKeys" + m_DDBKeystoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DDBKeystoreOperations" + m_DefaultCMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DefaultCMM" + m_DefaultClientSupplier "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DefaultClientSupplier" + m_Defaults "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Defaults" + m_DiscoveryMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DiscoveryMultiKeyring" + m_EcdhEdkWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/EcdhEdkWrapping" + m_EdkWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/EdkWrapping" + m_ErrorMessages "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/ErrorMessages" + m_GetKeys "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/GetKeys" + m_IntermediateKeyWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/IntermediateKeyWrapping" + m_KMSKeystoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KMSKeystoreOperations" + m_KeyStore "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KeyStore" + m_KeyStoreErrorMessages "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KeyStoreErrorMessages" + m_Keyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Keyring" + m_KmsArn "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KmsArn" + m_LocalCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/LocalCMC" + m_MaterialProviders "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MaterialProviders" + m_MaterialWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MaterialWrapping" + m_Materials "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Materials" + m_MrkAwareDiscoveryMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MrkAwareDiscoveryMultiKeyring" + m_MrkAwareStrictMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MrkAwareStrictMultiKeyring" + m_MultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MultiKeyring" + m_RawAESKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawAESKeyring" + m_RawECDHKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawECDHKeyring" + m_RawRSAKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawRSAKeyring" + m_RequiredEncryptionContextCMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RequiredEncryptionContextCMM" + m_StormTracker "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StormTracker" + m_StormTrackingCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StormTrackingCMC" + m_StrictMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StrictMultiKeyring" + m_Structure "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Structure" + m_SynchronizedLocalCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/SynchronizedLocalCMC" + m_Utils "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Utils" + m_AtomicPrimitives "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AtomicPrimitives" + m_AwsCryptographyPrimitivesOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AwsCryptographyPrimitivesOperations" + m_AwsCryptographyPrimitivesTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AwsCryptographyPrimitivesTypes" + m_Digest "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/Digest" + m_HKDF "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/HKDF" + m_KdfCtr "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/KdfCtr" + m_Random "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/Random" + m_WrappedHKDF "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/WrappedHKDF" + m_WrappedHMAC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/WrappedHMAC" + m_Actions "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Actions" + m_Base64 "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Base64" + m_Base64Lemmas "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Base64Lemmas" + m_BoundedInts "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/BoundedInts" + m_DivInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivInternals" + m_DivInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivInternalsNonlinear" + m_DivMod "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivMod" + m_FileIO "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/FileIO" + m_FloatCompare "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/FloatCompare" + m_Functions "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Functions" + m_GeneralInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/GeneralInternals" + m_GetOpt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/GetOpt" + m_HexStrings "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/HexStrings" + m_Logarithm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Logarithm" + m__Math "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Math_" + m_ModInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/ModInternals" + m_ModInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/ModInternalsNonlinear" + m_Mul "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Mul" + m_MulInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/MulInternals" + m_MulInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/MulInternalsNonlinear" + m_Power "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Power" + m_Relations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Relations" + m_Seq "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Seq" + m_Seq_MergeSort "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Seq_MergeSort" + m_Sorting "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Sorting" + m_StandardLibrary "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary" + m_StandardLibraryInterop "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibraryInterop" + m_StandardLibrary_MemoryMath "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_MemoryMath" + m_StandardLibrary_Sequence "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_Sequence" + m_StandardLibrary_String "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_String" + m_StandardLibrary_UInt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_UInt" + m_Streams "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Streams" + m_UTF8 "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/UTF8" + m_UnicodeStrings "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/UnicodeStrings" + m__Unicode "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Unicode_" + m_Utf16EncodingForm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Utf16EncodingForm" + m_Utf8EncodingForm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Utf8EncodingForm" + m_Wrappers "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Wrappers" + m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations" + m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes" + m_AwsCryptographyDbEncryptionSdkDynamoDbOperations "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbOperations" + m_AwsCryptographyDbEncryptionSdkDynamoDbTypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbTypes" + m_AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations" + m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes" + m_Canonize "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/Canonize" + m_DynamoDbEncryption "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbEncryption" + m_DynamoDbEncryptionBranchKeyIdSupplier "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbEncryptionBranchKeyIdSupplier" + m_DynamoDbEncryptionUtil "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbEncryptionUtil" + m_DynamoDbItemEncryptor "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbItemEncryptor" + m_DynamoDbItemEncryptorUtil "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbItemEncryptorUtil" + m_DynamoDbNormalizeNumber "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbNormalizeNumber" + m_DynamoToStruct "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoToStruct" + m_InternalLegacyOverride "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/InternalLegacyOverride" + m__Maps "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/Maps_" + m_OptimizedMergeSort "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/OptimizedMergeSort" + m_Sets "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/Sets" + m_SortCanon "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/SortCanon" + m_StructuredEncryption "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryption" + m_StructuredEncryptionCrypt "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionCrypt" + m_StructuredEncryptionFooter "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionFooter" + m_StructuredEncryptionHeader "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionHeader" + m_StructuredEncryptionPaths "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionPaths" + m_StructuredEncryptionUtil "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionUtil" + m_TermLoc "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/TermLoc" + m__System "github.com/dafny-lang/DafnyRuntimeGo/v4/System_" + _dafny "github.com/dafny-lang/DafnyRuntimeGo/v4/dafny" +) + +var _ = os.Args +var _ _dafny.Dummy__ +var _ m__System.Dummy__ +var _ m_Wrappers.Dummy__ +var _ m_BoundedInts.Dummy__ +var _ m_StandardLibrary_UInt.Dummy__ +var _ m_StandardLibrary_MemoryMath.Dummy__ +var _ m_StandardLibrary_Sequence.Dummy__ +var _ m_StandardLibrary_String.Dummy__ +var _ m_StandardLibrary.Dummy__ +var _ m_AwsCryptographyPrimitivesTypes.Dummy__ +var _ m_Random.Dummy__ +var _ m_Digest.Dummy__ +var _ m_WrappedHMAC.Dummy__ +var _ m_HKDF.Dummy__ +var _ m_WrappedHKDF.Dummy__ +var _ m_KdfCtr.Dummy__ +var _ m_AwsCryptographyPrimitivesOperations.Dummy__ +var _ m_AtomicPrimitives.Dummy__ +var _ m_ComAmazonawsDynamodbTypes.Dummy__ +var _ m_ComAmazonawsKmsTypes.Dummy__ +var _ m_AwsCryptographyKeyStoreTypes.Dummy__ +var _ m_AwsCryptographyMaterialProvidersTypes.Dummy__ +var _ m_Base64.Dummy__ +var _ m_AlgorithmSuites.Dummy__ +var _ m_Materials.Dummy__ +var _ m_Keyring.Dummy__ +var _ m_Relations.Dummy__ +var _ m_Seq_MergeSort.Dummy__ +var _ m__Math.Dummy__ +var _ m_Seq.Dummy__ +var _ m_Actions.Dummy__ +var _ m_CanonicalEncryptionContext.Dummy__ +var _ m_MaterialWrapping.Dummy__ +var _ m_IntermediateKeyWrapping.Dummy__ +var _ m_EdkWrapping.Dummy__ +var _ m_ErrorMessages.Dummy__ +var _ m_RawAESKeyring.Dummy__ +var _ m_AwsArnParsing.Dummy__ +var _ m_Constants.Dummy__ +var _ m_EcdhEdkWrapping.Dummy__ +var _ m_RawECDHKeyring.Dummy__ +var _ m_RawRSAKeyring.Dummy__ +var _ m_AwsKmsMrkMatchForDecrypt.Dummy__ +var _ m_AwsKmsUtils.Dummy__ +var _ m_AwsKmsKeyring.Dummy__ +var _ m_AwsKmsDiscoveryKeyring.Dummy__ +var _ m_AwsKmsEcdhKeyring.Dummy__ +var _ m_FileIO.Dummy__ +var _ m_LocalCMC.Dummy__ +var _ m_SynchronizedLocalCMC.Dummy__ +var _ m_StormTracker.Dummy__ +var _ m_StormTrackingCMC.Dummy__ +var _ m_CacheConstants.Dummy__ +var _ m_AwsKmsHierarchicalKeyring.Dummy__ +var _ m_AwsKmsMrkDiscoveryKeyring.Dummy__ +var _ m_AwsKmsMrkKeyring.Dummy__ +var _ m_AwsKmsRsaKeyring.Dummy__ +var _ m_MultiKeyring.Dummy__ +var _ m_AwsKmsMrkAreUnique.Dummy__ +var _ m_StrictMultiKeyring.Dummy__ +var _ m_Com_Amazonaws_Kms.Dummy__ +var _ m_Com_Amazonaws_Dynamodb.Dummy__ +var _ m_DiscoveryMultiKeyring.Dummy__ +var _ m_MrkAwareDiscoveryMultiKeyring.Dummy__ +var _ m_MrkAwareStrictMultiKeyring.Dummy__ +var _ m_CMM.Dummy__ +var _ m_Defaults.Dummy__ +var _ m_Commitment.Dummy__ +var _ m_DefaultCMM.Dummy__ +var _ m_DefaultClientSupplier.Dummy__ +var _ m_Utils.Dummy__ +var _ m_RequiredEncryptionContextCMM.Dummy__ +var _ m_AwsCryptographyMaterialProvidersOperations.Dummy__ +var _ m_MaterialProviders.Dummy__ +var _ m_KeyStoreErrorMessages.Dummy__ +var _ m_KmsArn.Dummy__ +var _ m_Structure.Dummy__ +var _ m_KMSKeystoreOperations.Dummy__ +var _ m_DDBKeystoreOperations.Dummy__ +var _ m_CreateKeys.Dummy__ +var _ m_CreateKeyStoreTable.Dummy__ +var _ m_GetKeys.Dummy__ +var _ m_AwsCryptographyKeyStoreOperations.Dummy__ +var _ m_KeyStore.Dummy__ +var _ m__Unicode.Dummy__ +var _ m_Functions.Dummy__ +var _ m_Utf8EncodingForm.Dummy__ +var _ m_Utf16EncodingForm.Dummy__ +var _ m_UnicodeStrings.Dummy__ +var _ m_GeneralInternals.Dummy__ +var _ m_MulInternalsNonlinear.Dummy__ +var _ m_MulInternals.Dummy__ +var _ m_Mul.Dummy__ +var _ m_ModInternalsNonlinear.Dummy__ +var _ m_DivInternalsNonlinear.Dummy__ +var _ m_ModInternals.Dummy__ +var _ m_DivInternals.Dummy__ +var _ m_DivMod.Dummy__ +var _ m_Power.Dummy__ +var _ m_Logarithm.Dummy__ +var _ m_StandardLibraryInterop.Dummy__ +var _ m_Streams.Dummy__ +var _ m_Sorting.Dummy__ +var _ m_HexStrings.Dummy__ +var _ m_GetOpt.Dummy__ +var _ m_FloatCompare.Dummy__ +var _ m_Base64Lemmas.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Dummy__ +var _ m_StructuredEncryptionUtil.Dummy__ +var _ m_Sets.Dummy__ +var _ m_StructuredEncryptionPaths.Dummy__ +var _ m_StructuredEncryptionHeader.Dummy__ +var _ m_StructuredEncryptionFooter.Dummy__ +var _ m_OptimizedMergeSort.Dummy__ +var _ m_SortCanon.Dummy__ +var _ m_Canonize.Dummy__ +var _ m_StructuredEncryptionCrypt.Dummy__ +var _ m__Maps.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations.Dummy__ +var _ m_StructuredEncryption.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Dummy__ +var _ m_DynamoDbEncryptionUtil.Dummy__ +var _ m_DynamoDbNormalizeNumber.Dummy__ +var _ m_DynamoToStruct.Dummy__ +var _ m_DynamoDbItemEncryptorUtil.Dummy__ +var _ m_InternalLegacyOverride.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations.Dummy__ +var _ m_DynamoDbItemEncryptor.Dummy__ +var _ m_DynamoDbEncryptionBranchKeyIdSupplier.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbOperations.Dummy__ +var _ m_DynamoDbEncryption.Dummy__ +var _ m_TermLoc.Dummy__ + +type Dummy__ struct{} + +// Definition of class Default__ +type Default__ struct { + dummy byte +} + +func New_Default___() *Default__ { + _this := Default__{} + + return &_this +} + +type CompanionStruct_Default___ struct { +} + +var Companion_Default___ = CompanionStruct_Default___{} + +func (_this *Default__) Equals(other *Default__) bool { + return _this == other +} + +func (_this *Default__) EqualsGeneric(x interface{}) bool { + other, ok := x.(*Default__) + return ok && _this.Equals(other) +} + +func (*Default__) String() string { + return "DdbVirtualFields.Default__" +} +func (_this *Default__) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = &Default__{} + +func (_static *CompanionStruct_Default___) ParseVirtualFieldConfig(vf m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.VirtualField) m_Wrappers.Result { + var _0_valueOrError0 m_Wrappers.Result = m_StandardLibrary_Sequence.Companion_Default___.MapWithResult(func(coer82 func(m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.VirtualPart) m_Wrappers.Result) func(interface{}) m_Wrappers.Result { + return func(arg110 interface{}) m_Wrappers.Result { + return coer82(arg110.(m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.VirtualPart)) + } + }(func(_1_p m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.VirtualPart) m_Wrappers.Result { + return Companion_Default___.ParseVirtualPartConfig(_1_p) + }), (vf).Dtor_parts(), uint64(0), _dafny.SeqOf()) + _ = _0_valueOrError0 + if (_0_valueOrError0).IsFailure() { + return (_0_valueOrError0).PropagateFailure() + } else { + var _2_parts _dafny.Sequence = (_0_valueOrError0).Extract().(_dafny.Sequence) + _ = _2_parts + return m_Wrappers.Companion_Result_.Create_Success_(Companion_VirtField_.Create_VirtField_((vf).Dtor_name(), _2_parts)) + } +} +func (_static *CompanionStruct_Default___) ParseVirtualPartConfig(part m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.VirtualPart) m_Wrappers.Result { + var _0_valueOrError0 m_Wrappers.Result = m_TermLoc.Companion_Default___.MakeTermLoc((part).Dtor_loc()) + _ = _0_valueOrError0 + if (_0_valueOrError0).IsFailure() { + return (_0_valueOrError0).PropagateFailure() + } else { + var _1_loc _dafny.Sequence = (_0_valueOrError0).Extract().(_dafny.Sequence) + _ = _1_loc + if ((part).Dtor_trans()).Is_None() { + return m_Wrappers.Companion_Result_.Create_Success_(Companion_VirtPart_.Create_VirtPart_(_1_loc, _dafny.SeqOf())) + } else { + return m_Wrappers.Companion_Result_.Create_Success_(Companion_VirtPart_.Create_VirtPart_(_1_loc, ((part).Dtor_trans()).Dtor_value().(_dafny.Sequence))) + } + } +} +func (_static *CompanionStruct_Default___) Examine(parts _dafny.Sequence, exam func(_dafny.Sequence) bool) bool { + goto TAIL_CALL_START +TAIL_CALL_START: + if (_dafny.IntOfUint32((parts).Cardinality())).Sign() == 0 { + return false + } else if (exam)(((parts).Select(0).(VirtPart)).Dtor_loc()) { + return true + } else { + var _in0 _dafny.Sequence = (parts).Drop(1) + _ = _in0 + var _in1 func(_dafny.Sequence) bool = exam + _ = _in1 + parts = _in0 + exam = _in1 + goto TAIL_CALL_START + } +} +func (_static *CompanionStruct_Default___) Min(x _dafny.Int, y _dafny.Int) _dafny.Int { + if (y).Cmp(x) < 0 { + return y + } else { + return x + } +} +func (_static *CompanionStruct_Default___) GetPrefix(s _dafny.Sequence, length _dafny.Int) _dafny.Sequence { + if (length).Sign() != -1 { + return (s).Take((Companion_Default___.Min(length, _dafny.IntOfUint32((s).Cardinality()))).Uint32()) + } else { + return (s).Take(((_dafny.IntOfUint32((s).Cardinality())).Minus(Companion_Default___.Min((_dafny.Zero).Minus(length), _dafny.IntOfUint32((s).Cardinality())))).Uint32()) + } +} +func (_static *CompanionStruct_Default___) GetSuffix(s _dafny.Sequence, length _dafny.Int) _dafny.Sequence { + if (length).Sign() != -1 { + return (s).Drop(((_dafny.IntOfUint32((s).Cardinality())).Minus(Companion_Default___.Min(length, _dafny.IntOfUint32((s).Cardinality())))).Uint32()) + } else { + return (s).Drop((Companion_Default___.Min((_dafny.Zero).Minus(length), _dafny.IntOfUint32((s).Cardinality()))).Uint32()) + } +} +func (_static *CompanionStruct_Default___) GetPos(pos _dafny.Int, limit _dafny.Int) _dafny.Int { + if (limit).Sign() == 0 { + return _dafny.Zero + } else if (pos).Sign() != -1 { + return Companion_Default___.Min(pos, (limit).Minus(_dafny.One)) + } else if ((limit).Plus(pos)).Sign() == -1 { + return _dafny.Zero + } else { + return (limit).Plus(pos) + } +} +func (_static *CompanionStruct_Default___) GetSubstring(s _dafny.Sequence, low _dafny.Int, high _dafny.Int) _dafny.Sequence { + var _0_lo _dafny.Int = Companion_Default___.GetPos(low, _dafny.IntOfUint32((s).Cardinality())) + _ = _0_lo + var _1_hi _dafny.Int = Companion_Default___.GetPos(high, _dafny.IntOfUint32((s).Cardinality())) + _ = _1_hi + if (_0_lo).Cmp(_1_hi) < 0 { + return (s).Subsequence((_0_lo).Uint32(), (_1_hi).Uint32()) + } else { + return _dafny.SeqOfString("") + } +} +func (_static *CompanionStruct_Default___) UpperChar(ch _dafny.Char) _dafny.Char { + if ((_dafny.Char('a')) <= (ch)) && ((ch) <= (_dafny.Char('z'))) { + return ((ch) - (_dafny.Char('a'))) + (_dafny.Char('A')) + } else { + return ch + } +} +func (_static *CompanionStruct_Default___) UpperCase(s _dafny.Sequence) _dafny.Sequence { + return m_Seq.Companion_Default___.Map(func(coer83 func(_dafny.Char) _dafny.Char) func(interface{}) interface{} { + return func(arg111 interface{}) interface{} { + return coer83(arg111.(_dafny.Char)) + } + }(func(_0_c _dafny.Char) _dafny.Char { + return Companion_Default___.UpperChar(_0_c) + }), s) +} +func (_static *CompanionStruct_Default___) LowerChar(ch _dafny.Char) _dafny.Char { + if ((_dafny.Char('A')) <= (ch)) && ((ch) <= (_dafny.Char('Z'))) { + return ((ch) - (_dafny.Char('A'))) + (_dafny.Char('a')) + } else { + return ch + } +} +func (_static *CompanionStruct_Default___) LowerCase(s _dafny.Sequence) _dafny.Sequence { + return m_Seq.Companion_Default___.Map(func(coer84 func(_dafny.Char) _dafny.Char) func(interface{}) interface{} { + return func(arg112 interface{}) interface{} { + return coer84(arg112.(_dafny.Char)) + } + }(func(_0_c _dafny.Char) _dafny.Char { + return Companion_Default___.LowerChar(_0_c) + }), s) +} +func (_static *CompanionStruct_Default___) GetSegment(s _dafny.Sequence, split _dafny.Char, index _dafny.Int) _dafny.Sequence { + var _0_parts _dafny.Sequence = m_StandardLibrary.Companion_Default___.Split(s, split) + _ = _0_parts + if ((index).Cmp(_dafny.IntOfUint32((_0_parts).Cardinality())) >= 0) || (((_dafny.Zero).Minus(index)).Cmp(_dafny.IntOfUint32((_0_parts).Cardinality())) > 0) { + return _dafny.SeqOfString("") + } else { + return (_0_parts).Select((Companion_Default___.GetPos(index, _dafny.IntOfUint32((_0_parts).Cardinality()))).Uint32()).(_dafny.Sequence) + } +} +func (_static *CompanionStruct_Default___) GetSegments(s _dafny.Sequence, split _dafny.Char, low _dafny.Int, high _dafny.Int) _dafny.Sequence { + var _0_parts _dafny.Sequence = m_StandardLibrary.Companion_Default___.Split(s, split) + _ = _0_parts + var _1_lo _dafny.Int = Companion_Default___.GetPos(low, _dafny.IntOfUint32((_0_parts).Cardinality())) + _ = _1_lo + var _2_hi _dafny.Int = Companion_Default___.GetPos(high, _dafny.IntOfUint32((_0_parts).Cardinality())) + _ = _2_hi + if (_1_lo).Cmp(_2_hi) < 0 { + return m_StandardLibrary.Companion_Default___.Join((_0_parts).Subsequence((_1_lo).Uint32(), (_2_hi).Uint32()), _dafny.SeqOfChars(split)) + } else { + return _dafny.SeqOfString("") + } +} +func (_static *CompanionStruct_Default___) DoTransform(t m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.VirtualTransform, s _dafny.Sequence) _dafny.Sequence { + var _source0 m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.VirtualTransform = t + _ = _source0 + { + if _source0.Is_upper() { + var _0_up m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Upper = _source0.Get_().(m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.VirtualTransform_upper).Upper + _ = _0_up + return Companion_Default___.UpperCase(s) + } + } + { + if _source0.Is_lower() { + var _1_lo m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Lower = _source0.Get_().(m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.VirtualTransform_lower).Lower + _ = _1_lo + return Companion_Default___.LowerCase(s) + } + } + { + if _source0.Is_insert() { + var _2_ins m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Insert = _source0.Get_().(m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.VirtualTransform_insert).Insert + _ = _2_ins + return _dafny.Companion_Sequence_.Concatenate(s, (_2_ins).Dtor_literal()) + } + } + { + if _source0.Is_prefix() { + var _3_pre m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.GetPrefix = _source0.Get_().(m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.VirtualTransform_prefix).Prefix + _ = _3_pre + return Companion_Default___.GetPrefix(s, _dafny.IntOfInt32((_3_pre).Dtor_length())) + } + } + { + if _source0.Is_suffix() { + var _4_suf m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.GetSuffix = _source0.Get_().(m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.VirtualTransform_suffix).Suffix + _ = _4_suf + return Companion_Default___.GetSuffix(s, _dafny.IntOfInt32((_4_suf).Dtor_length())) + } + } + { + if _source0.Is_substring() { + var _5_sub m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.GetSubstring = _source0.Get_().(m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.VirtualTransform_substring).Substring + _ = _5_sub + return Companion_Default___.GetSubstring(s, _dafny.IntOfInt32((_5_sub).Dtor_low()), _dafny.IntOfInt32((_5_sub).Dtor_high())) + } + } + { + if _source0.Is_segment() { + var _6_seg m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.GetSegment = _source0.Get_().(m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.VirtualTransform_segment).Segment + _ = _6_seg + return Companion_Default___.GetSegment(s, ((_6_seg).Dtor_split()).Select(0).(_dafny.Char), _dafny.IntOfInt32((_6_seg).Dtor_index())) + } + } + { + var _7_seg m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.GetSegments = _source0.Get_().(m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.VirtualTransform_segments).Segments + _ = _7_seg + return Companion_Default___.GetSegments(s, ((_7_seg).Dtor_split()).Select(0).(_dafny.Char), _dafny.IntOfInt32((_7_seg).Dtor_low()), _dafny.IntOfInt32((_7_seg).Dtor_high())) + } +} +func (_static *CompanionStruct_Default___) FullTransform(t _dafny.Sequence, s _dafny.Sequence) _dafny.Sequence { + goto TAIL_CALL_START +TAIL_CALL_START: + if (_dafny.IntOfUint32((t).Cardinality())).Sign() == 0 { + return s + } else { + var _in0 _dafny.Sequence = (t).Drop(1) + _ = _in0 + var _in1 _dafny.Sequence = Companion_Default___.DoTransform((t).Select(0).(m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.VirtualTransform), s) + _ = _in1 + t = _in0 + s = _in1 + goto TAIL_CALL_START + } +} +func (_static *CompanionStruct_Default___) GetVirtField(vf VirtField, item _dafny.Map) m_Wrappers.Result { + return Companion_Default___.GetVirtField2((vf).Dtor_parts(), item, _dafny.SeqOfString("")) +} +func (_static *CompanionStruct_Default___) GetVirtField2(parts _dafny.Sequence, item _dafny.Map, acc _dafny.Sequence) m_Wrappers.Result { + goto TAIL_CALL_START +TAIL_CALL_START: + if (_dafny.IntOfUint32((parts).Cardinality())).Sign() == 0 { + return m_Wrappers.Companion_Result_.Create_Success_(m_Wrappers.Companion_Option_.Create_Some_(acc)) + } else { + var _0_valueOrError0 m_Wrappers.Result = m_TermLoc.Companion_Default___.TermToString(((parts).Select(0).(VirtPart)).Dtor_loc(), item) + _ = _0_valueOrError0 + if (_0_valueOrError0).IsFailure() { + return (_0_valueOrError0).PropagateFailure() + } else { + var _1_value m_Wrappers.Option = (_0_valueOrError0).Extract().(m_Wrappers.Option) + _ = _1_value + if (_1_value).Is_None() { + return m_Wrappers.Companion_Result_.Create_Success_(m_Wrappers.Companion_Option_.Create_None_()) + } else { + var _2_trans _dafny.Sequence = Companion_Default___.FullTransform(((parts).Select(0).(VirtPart)).Dtor_trans(), (_1_value).Dtor_value().(_dafny.Sequence)) + _ = _2_trans + var _in0 _dafny.Sequence = (parts).Drop(1) + _ = _in0 + var _in1 _dafny.Map = item + _ = _in1 + var _in2 _dafny.Sequence = _dafny.Companion_Sequence_.Concatenate(acc, _2_trans) + _ = _in2 + parts = _in0 + item = _in1 + acc = _in2 + goto TAIL_CALL_START + } + } + } +} +func (_static *CompanionStruct_Default___) VirtToAttr(loc _dafny.Sequence, item _dafny.Map, vf _dafny.Map) m_Wrappers.Result { + if ((_dafny.IntOfUint32((loc).Cardinality())).Cmp(_dafny.One) == 0) && ((vf).Contains(((loc).Select(0).(m_TermLoc.Selector)).Dtor_key())) { + var _0_valueOrError0 m_Wrappers.Result = Companion_Default___.GetVirtField((vf).Get(((loc).Select(0).(m_TermLoc.Selector)).Dtor_key()).(VirtField), item) + _ = _0_valueOrError0 + if (_0_valueOrError0).IsFailure() { + return (_0_valueOrError0).PropagateFailure() + } else { + var _1_str m_Wrappers.Option = (_0_valueOrError0).Extract().(m_Wrappers.Option) + _ = _1_str + if (_1_str).Is_None() { + return m_Wrappers.Companion_Result_.Create_Success_(m_Wrappers.Companion_Option_.Create_None_()) + } else { + return m_Wrappers.Companion_Result_.Create_Success_(m_Wrappers.Companion_Option_.Create_Some_(Companion_Default___.DS((_1_str).Dtor_value().(_dafny.Sequence)))) + } + } + } else { + return m_Wrappers.Companion_Result_.Create_Success_(m_TermLoc.Companion_Default___.TermToAttr(loc, item, m_Wrappers.Companion_Option_.Create_None_())) + } +} +func (_static *CompanionStruct_Default___) VirtToBytes(loc _dafny.Sequence, item _dafny.Map, vf _dafny.Map) m_Wrappers.Result { + if ((_dafny.IntOfUint32((loc).Cardinality())).Cmp(_dafny.One) == 0) && ((vf).Contains(((loc).Select(0).(m_TermLoc.Selector)).Dtor_key())) { + var _0_valueOrError0 m_Wrappers.Result = Companion_Default___.GetVirtField((vf).Get(((loc).Select(0).(m_TermLoc.Selector)).Dtor_key()).(VirtField), item) + _ = _0_valueOrError0 + if (_0_valueOrError0).IsFailure() { + return (_0_valueOrError0).PropagateFailure() + } else { + var _1_str m_Wrappers.Option = (_0_valueOrError0).Extract().(m_Wrappers.Option) + _ = _1_str + if (_1_str).Is_None() { + return m_Wrappers.Companion_Result_.Create_Success_(m_Wrappers.Companion_Option_.Create_None_()) + } else { + var _2_valueOrError1 m_Wrappers.Result = (m_UTF8.Encode((_1_str).Dtor_value().(_dafny.Sequence))).MapFailure(func(coer85 func(_dafny.Sequence) m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Error) func(interface{}) interface{} { + return func(arg113 interface{}) interface{} { + return coer85(arg113.(_dafny.Sequence)) + } + }(func(_3_e _dafny.Sequence) m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Error { + return m_DynamoDbEncryptionUtil.Companion_Default___.E(_3_e) + })) + _ = _2_valueOrError1 + if (_2_valueOrError1).IsFailure() { + return (_2_valueOrError1).PropagateFailure() + } else { + var _4_ustr _dafny.Sequence = (_2_valueOrError1).Extract().(_dafny.Sequence) + _ = _4_ustr + return m_Wrappers.Companion_Result_.Create_Success_(m_Wrappers.Companion_Option_.Create_Some_(_4_ustr)) + } + } + } + } else { + return m_TermLoc.Companion_Default___.TermToBytes(loc, item) + } +} +func (_static *CompanionStruct_Default___) VirtToString(loc _dafny.Sequence, item _dafny.Map, vf _dafny.Map) m_Wrappers.Result { + if ((_dafny.IntOfUint32((loc).Cardinality())).Cmp(_dafny.One) == 0) && ((vf).Contains(((loc).Select(0).(m_TermLoc.Selector)).Dtor_key())) { + return Companion_Default___.GetVirtField((vf).Get(((loc).Select(0).(m_TermLoc.Selector)).Dtor_key()).(VirtField), item) + } else { + return m_TermLoc.Companion_Default___.TermToString(loc, item) + } +} +func (_static *CompanionStruct_Default___) DS(s _dafny.Sequence) m_ComAmazonawsDynamodbTypes.AttributeValue { + return m_ComAmazonawsDynamodbTypes.Companion_AttributeValue_.Create_S_(s) +} + +// End of class Default__ + +// Definition of class VirtualFieldMap +type VirtualFieldMap struct { +} + +func New_VirtualFieldMap_() *VirtualFieldMap { + _this := VirtualFieldMap{} + + return &_this +} + +type CompanionStruct_VirtualFieldMap_ struct { +} + +var Companion_VirtualFieldMap_ = CompanionStruct_VirtualFieldMap_{} + +func (*VirtualFieldMap) String() string { + return "DdbVirtualFields.VirtualFieldMap" +} + +// End of class VirtualFieldMap + +func Type_VirtualFieldMap_() _dafny.TypeDescriptor { + return type_VirtualFieldMap_{} +} + +type type_VirtualFieldMap_ struct { +} + +func (_this type_VirtualFieldMap_) Default() interface{} { + return _dafny.EmptyMap +} + +func (_this type_VirtualFieldMap_) String() string { + return "DdbVirtualFields.VirtualFieldMap" +} + +// Definition of class ValidVirtualField +type ValidVirtualField struct { +} + +func New_ValidVirtualField_() *ValidVirtualField { + _this := ValidVirtualField{} + + return &_this +} + +type CompanionStruct_ValidVirtualField_ struct { +} + +var Companion_ValidVirtualField_ = CompanionStruct_ValidVirtualField_{} + +func (*ValidVirtualField) String() string { + return "DdbVirtualFields.ValidVirtualField" +} + +// End of class ValidVirtualField + +func Type_ValidVirtualField_() _dafny.TypeDescriptor { + return type_ValidVirtualField_{} +} + +type type_ValidVirtualField_ struct { +} + +func (_this type_ValidVirtualField_) Default() interface{} { + return Companion_VirtField_.Default() +} + +func (_this type_ValidVirtualField_) String() string { + return "DdbVirtualFields.ValidVirtualField" +} + +// Definition of datatype VirtField +type VirtField struct { + Data_VirtField_ +} + +func (_this VirtField) Get_() Data_VirtField_ { + return _this.Data_VirtField_ +} + +type Data_VirtField_ interface { + isVirtField() +} + +type CompanionStruct_VirtField_ struct { +} + +var Companion_VirtField_ = CompanionStruct_VirtField_{} + +type VirtField_VirtField struct { + Name _dafny.Sequence + Parts _dafny.Sequence +} + +func (VirtField_VirtField) isVirtField() {} + +func (CompanionStruct_VirtField_) Create_VirtField_(Name _dafny.Sequence, Parts _dafny.Sequence) VirtField { + return VirtField{VirtField_VirtField{Name, Parts}} +} + +func (_this VirtField) Is_VirtField() bool { + _, ok := _this.Get_().(VirtField_VirtField) + return ok +} + +func (CompanionStruct_VirtField_) Default() VirtField { + return Companion_VirtField_.Create_VirtField_(_dafny.EmptySeq.SetString(), _dafny.EmptySeq) +} + +func (_this VirtField) Dtor_name() _dafny.Sequence { + return _this.Get_().(VirtField_VirtField).Name +} + +func (_this VirtField) Dtor_parts() _dafny.Sequence { + return _this.Get_().(VirtField_VirtField).Parts +} + +func (_this VirtField) String() string { + switch data := _this.Get_().(type) { + case nil: + return "null" + case VirtField_VirtField: + { + return "DdbVirtualFields.VirtField.VirtField" + "(" + _dafny.String(data.Name) + ", " + _dafny.String(data.Parts) + ")" + } + default: + { + return "" + } + } +} + +func (_this VirtField) Equals(other VirtField) bool { + switch data1 := _this.Get_().(type) { + case VirtField_VirtField: + { + data2, ok := other.Get_().(VirtField_VirtField) + return ok && data1.Name.Equals(data2.Name) && data1.Parts.Equals(data2.Parts) + } + default: + { + return false // unexpected + } + } +} + +func (_this VirtField) EqualsGeneric(other interface{}) bool { + typed, ok := other.(VirtField) + return ok && _this.Equals(typed) +} + +func Type_VirtField_() _dafny.TypeDescriptor { + return type_VirtField_{} +} + +type type_VirtField_ struct { +} + +func (_this type_VirtField_) Default() interface{} { + return Companion_VirtField_.Default() +} + +func (_this type_VirtField_) String() string { + return "DdbVirtualFields.VirtField" +} +func (_this VirtField) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = VirtField{} + +func (_this VirtField) Examine(exam func(_dafny.Sequence) bool) bool { + { + return Companion_Default___.Examine((_this).Dtor_parts(), exam) + } +} +func (_this VirtField) GetFields() _dafny.Sequence { + { + return m_Seq.Companion_Default___.Map(func(coer86 func(VirtPart) _dafny.Sequence) func(interface{}) interface{} { + return func(arg114 interface{}) interface{} { + return coer86(arg114.(VirtPart)) + } + }(func(_0_p VirtPart) _dafny.Sequence { + return (((_0_p).Dtor_loc()).Select(0).(m_TermLoc.Selector)).Dtor_key() + }), (_this).Dtor_parts()) + } +} +func (_this VirtField) GetLocs() _dafny.Set { + { + return func() _dafny.Set { + var _coll0 = _dafny.NewBuilder() + _ = _coll0 + for _iter19 := _dafny.Iterate(((_this).Dtor_parts()).Elements()); ; { + _compr_0, _ok19 := _iter19() + if !_ok19 { + break + } + var _0_p VirtPart + _0_p = interface{}(_compr_0).(VirtPart) + if _dafny.Companion_Sequence_.Contains((_this).Dtor_parts(), _0_p) { + _coll0.Add((_0_p).Dtor_loc()) + } + } + return _coll0.ToSet() + }() + } +} +func (_this VirtField) HasSingleLoc(loc _dafny.Sequence) bool { + { + return ((_dafny.IntOfUint32(((_this).Dtor_parts()).Cardinality())).Cmp(_dafny.One) == 0) && (_dafny.Companion_Sequence_.Equal((((_this).Dtor_parts()).Select(0).(VirtPart)).Dtor_loc(), loc)) + } +} + +// End of datatype VirtField + +// Definition of datatype VirtPart +type VirtPart struct { + Data_VirtPart_ +} + +func (_this VirtPart) Get_() Data_VirtPart_ { + return _this.Data_VirtPart_ +} + +type Data_VirtPart_ interface { + isVirtPart() +} + +type CompanionStruct_VirtPart_ struct { +} + +var Companion_VirtPart_ = CompanionStruct_VirtPart_{} + +type VirtPart_VirtPart struct { + Loc _dafny.Sequence + Trans _dafny.Sequence +} + +func (VirtPart_VirtPart) isVirtPart() {} + +func (CompanionStruct_VirtPart_) Create_VirtPart_(Loc _dafny.Sequence, Trans _dafny.Sequence) VirtPart { + return VirtPart{VirtPart_VirtPart{Loc, Trans}} +} + +func (_this VirtPart) Is_VirtPart() bool { + _, ok := _this.Get_().(VirtPart_VirtPart) + return ok +} + +func (CompanionStruct_VirtPart_) Default() VirtPart { + return Companion_VirtPart_.Create_VirtPart_(_dafny.EmptySeq, _dafny.EmptySeq) +} + +func (_this VirtPart) Dtor_loc() _dafny.Sequence { + return _this.Get_().(VirtPart_VirtPart).Loc +} + +func (_this VirtPart) Dtor_trans() _dafny.Sequence { + return _this.Get_().(VirtPart_VirtPart).Trans +} + +func (_this VirtPart) String() string { + switch data := _this.Get_().(type) { + case nil: + return "null" + case VirtPart_VirtPart: + { + return "DdbVirtualFields.VirtPart.VirtPart" + "(" + _dafny.String(data.Loc) + ", " + _dafny.String(data.Trans) + ")" + } + default: + { + return "" + } + } +} + +func (_this VirtPart) Equals(other VirtPart) bool { + switch data1 := _this.Get_().(type) { + case VirtPart_VirtPart: + { + data2, ok := other.Get_().(VirtPart_VirtPart) + return ok && data1.Loc.Equals(data2.Loc) && data1.Trans.Equals(data2.Trans) + } + default: + { + return false // unexpected + } + } +} + +func (_this VirtPart) EqualsGeneric(other interface{}) bool { + typed, ok := other.(VirtPart) + return ok && _this.Equals(typed) +} + +func Type_VirtPart_() _dafny.TypeDescriptor { + return type_VirtPart_{} +} + +type type_VirtPart_ struct { +} + +func (_this type_VirtPart_) Default() interface{} { + return Companion_VirtPart_.Default() +} + +func (_this type_VirtPart_) String() string { + return "DdbVirtualFields.VirtPart" +} +func (_this VirtPart) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = VirtPart{} + +// End of datatype VirtPart diff --git a/releases/go/dynamodb-esdk/DeleteItemTransform/DeleteItemTransform.go b/releases/go/dynamodb-esdk/DeleteItemTransform/DeleteItemTransform.go new file mode 100644 index 000000000..8ed64c5d4 --- /dev/null +++ b/releases/go/dynamodb-esdk/DeleteItemTransform/DeleteItemTransform.go @@ -0,0 +1,447 @@ +// Package DeleteItemTransform +// Dafny module DeleteItemTransform compiled into Go + +package DeleteItemTransform + +import ( + os "os" + + m_ComAmazonawsDynamodbTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/dynamodb/ComAmazonawsDynamodbTypes" + m_Com_Amazonaws_Dynamodb "github.com/aws/aws-cryptographic-material-providers-library/releases/go/dynamodb/Com_Amazonaws_Dynamodb" + m_ComAmazonawsKmsTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/kms/ComAmazonawsKmsTypes" + m_Com_Amazonaws_Kms "github.com/aws/aws-cryptographic-material-providers-library/releases/go/kms/Com_Amazonaws_Kms" + m_AlgorithmSuites "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AlgorithmSuites" + m_AwsArnParsing "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsArnParsing" + m_AwsCryptographyKeyStoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyKeyStoreOperations" + m_AwsCryptographyKeyStoreTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyKeyStoreTypes" + m_AwsCryptographyMaterialProvidersOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyMaterialProvidersOperations" + m_AwsCryptographyMaterialProvidersTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyMaterialProvidersTypes" + m_AwsKmsDiscoveryKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsDiscoveryKeyring" + m_AwsKmsEcdhKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsEcdhKeyring" + m_AwsKmsHierarchicalKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsHierarchicalKeyring" + m_AwsKmsKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsKeyring" + m_AwsKmsMrkAreUnique "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkAreUnique" + m_AwsKmsMrkDiscoveryKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkDiscoveryKeyring" + m_AwsKmsMrkKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkKeyring" + m_AwsKmsMrkMatchForDecrypt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkMatchForDecrypt" + m_AwsKmsRsaKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsRsaKeyring" + m_AwsKmsUtils "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsUtils" + m_CMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CMM" + m_CacheConstants "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CacheConstants" + m_CanonicalEncryptionContext "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CanonicalEncryptionContext" + m_Commitment "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Commitment" + m_Constants "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Constants" + m_CreateKeyStoreTable "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CreateKeyStoreTable" + m_CreateKeys "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CreateKeys" + m_DDBKeystoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DDBKeystoreOperations" + m_DefaultCMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DefaultCMM" + m_DefaultClientSupplier "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DefaultClientSupplier" + m_Defaults "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Defaults" + m_DiscoveryMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DiscoveryMultiKeyring" + m_EcdhEdkWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/EcdhEdkWrapping" + m_EdkWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/EdkWrapping" + m_ErrorMessages "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/ErrorMessages" + m_GetKeys "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/GetKeys" + m_IntermediateKeyWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/IntermediateKeyWrapping" + m_KMSKeystoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KMSKeystoreOperations" + m_KeyStore "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KeyStore" + m_KeyStoreErrorMessages "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KeyStoreErrorMessages" + m_Keyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Keyring" + m_KmsArn "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KmsArn" + m_LocalCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/LocalCMC" + m_MaterialProviders "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MaterialProviders" + m_MaterialWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MaterialWrapping" + m_Materials "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Materials" + m_MrkAwareDiscoveryMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MrkAwareDiscoveryMultiKeyring" + m_MrkAwareStrictMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MrkAwareStrictMultiKeyring" + m_MultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MultiKeyring" + m_RawAESKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawAESKeyring" + m_RawECDHKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawECDHKeyring" + m_RawRSAKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawRSAKeyring" + m_RequiredEncryptionContextCMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RequiredEncryptionContextCMM" + m_StormTracker "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StormTracker" + m_StormTrackingCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StormTrackingCMC" + m_StrictMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StrictMultiKeyring" + m_Structure "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Structure" + m_SynchronizedLocalCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/SynchronizedLocalCMC" + m_Utils "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Utils" + m_AtomicPrimitives "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AtomicPrimitives" + m_AwsCryptographyPrimitivesOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AwsCryptographyPrimitivesOperations" + m_AwsCryptographyPrimitivesTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AwsCryptographyPrimitivesTypes" + m_Digest "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/Digest" + m_HKDF "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/HKDF" + m_KdfCtr "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/KdfCtr" + m_Random "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/Random" + m_WrappedHKDF "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/WrappedHKDF" + m_WrappedHMAC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/WrappedHMAC" + m_Actions "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Actions" + m_Base64 "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Base64" + m_Base64Lemmas "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Base64Lemmas" + m_BoundedInts "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/BoundedInts" + m_DivInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivInternals" + m_DivInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivInternalsNonlinear" + m_DivMod "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivMod" + m_FileIO "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/FileIO" + m_FloatCompare "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/FloatCompare" + m_Functions "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Functions" + m_GeneralInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/GeneralInternals" + m_GetOpt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/GetOpt" + m_HexStrings "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/HexStrings" + m_Logarithm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Logarithm" + m__Math "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Math_" + m_ModInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/ModInternals" + m_ModInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/ModInternalsNonlinear" + m_Mul "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Mul" + m_MulInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/MulInternals" + m_MulInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/MulInternalsNonlinear" + m_Power "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Power" + m_Relations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Relations" + m_Seq "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Seq" + m_Seq_MergeSort "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Seq_MergeSort" + m_Sorting "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Sorting" + m_StandardLibrary "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary" + m_StandardLibraryInterop "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibraryInterop" + m_StandardLibrary_MemoryMath "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_MemoryMath" + m_StandardLibrary_Sequence "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_Sequence" + m_StandardLibrary_String "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_String" + m_StandardLibrary_UInt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_UInt" + m_Streams "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Streams" + m_UnicodeStrings "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/UnicodeStrings" + m__Unicode "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Unicode_" + m_Utf16EncodingForm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Utf16EncodingForm" + m_Utf8EncodingForm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Utf8EncodingForm" + m_Wrappers "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Wrappers" + m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations" + m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes" + m_AwsCryptographyDbEncryptionSdkDynamoDbOperations "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbOperations" + m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes" + m_AwsCryptographyDbEncryptionSdkDynamoDbTypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbTypes" + m_AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations" + m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes" + m_BaseBeacon "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/BaseBeacon" + m_BatchGetItemTransform "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/BatchGetItemTransform" + m_BatchWriteItemTransform "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/BatchWriteItemTransform" + m_Canonize "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/Canonize" + m_CompoundBeacon "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/CompoundBeacon" + m_DdbMiddlewareConfig "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DdbMiddlewareConfig" + m_DdbStatement "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DdbStatement" + m_DdbVirtualFields "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DdbVirtualFields" + m_DynamoDBFilterExpr "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDBFilterExpr" + m_DynamoDBSupport "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDBSupport" + m_DynamoDbEncryption "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbEncryption" + m_DynamoDbEncryptionBranchKeyIdSupplier "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbEncryptionBranchKeyIdSupplier" + m_DynamoDbEncryptionUtil "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbEncryptionUtil" + m_DynamoDbItemEncryptor "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbItemEncryptor" + m_DynamoDbItemEncryptorUtil "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbItemEncryptorUtil" + m_DynamoDbMiddlewareSupport "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbMiddlewareSupport" + m_DynamoDbNormalizeNumber "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbNormalizeNumber" + m_DynamoDbUpdateExpr "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbUpdateExpr" + m_DynamoToStruct "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoToStruct" + m_GetItemTransform "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/GetItemTransform" + m_InternalLegacyOverride "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/InternalLegacyOverride" + m__Maps "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/Maps_" + m_OptimizedMergeSort "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/OptimizedMergeSort" + m_PutItemTransform "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/PutItemTransform" + m_QueryTransform "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/QueryTransform" + m_ScanTransform "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/ScanTransform" + m_SearchConfigToInfo "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/SearchConfigToInfo" + m_SearchableEncryptionInfo "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/SearchableEncryptionInfo" + m_Sets "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/Sets" + m_SortCanon "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/SortCanon" + m_StructuredEncryption "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryption" + m_StructuredEncryptionCrypt "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionCrypt" + m_StructuredEncryptionFooter "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionFooter" + m_StructuredEncryptionHeader "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionHeader" + m_StructuredEncryptionPaths "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionPaths" + m_StructuredEncryptionUtil "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionUtil" + m_TermLoc "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/TermLoc" + m_TransactGetItemsTransform "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/TransactGetItemsTransform" + m_TransactWriteItemsTransform "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/TransactWriteItemsTransform" + m_UpdateItemTransform "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/UpdateItemTransform" + m__System "github.com/dafny-lang/DafnyRuntimeGo/v4/System_" + _dafny "github.com/dafny-lang/DafnyRuntimeGo/v4/dafny" +) + +var _ = os.Args +var _ _dafny.Dummy__ +var _ m__System.Dummy__ +var _ m_Wrappers.Dummy__ +var _ m_BoundedInts.Dummy__ +var _ m_StandardLibrary_UInt.Dummy__ +var _ m_StandardLibrary_MemoryMath.Dummy__ +var _ m_StandardLibrary_Sequence.Dummy__ +var _ m_StandardLibrary_String.Dummy__ +var _ m_StandardLibrary.Dummy__ +var _ m_AwsCryptographyPrimitivesTypes.Dummy__ +var _ m_Random.Dummy__ +var _ m_Digest.Dummy__ +var _ m_WrappedHMAC.Dummy__ +var _ m_HKDF.Dummy__ +var _ m_WrappedHKDF.Dummy__ +var _ m_KdfCtr.Dummy__ +var _ m_AwsCryptographyPrimitivesOperations.Dummy__ +var _ m_AtomicPrimitives.Dummy__ +var _ m_ComAmazonawsDynamodbTypes.Dummy__ +var _ m_ComAmazonawsKmsTypes.Dummy__ +var _ m_AwsCryptographyKeyStoreTypes.Dummy__ +var _ m_AwsCryptographyMaterialProvidersTypes.Dummy__ +var _ m_Base64.Dummy__ +var _ m_AlgorithmSuites.Dummy__ +var _ m_Materials.Dummy__ +var _ m_Keyring.Dummy__ +var _ m_Relations.Dummy__ +var _ m_Seq_MergeSort.Dummy__ +var _ m__Math.Dummy__ +var _ m_Seq.Dummy__ +var _ m_Actions.Dummy__ +var _ m_CanonicalEncryptionContext.Dummy__ +var _ m_MaterialWrapping.Dummy__ +var _ m_IntermediateKeyWrapping.Dummy__ +var _ m_EdkWrapping.Dummy__ +var _ m_ErrorMessages.Dummy__ +var _ m_RawAESKeyring.Dummy__ +var _ m_AwsArnParsing.Dummy__ +var _ m_Constants.Dummy__ +var _ m_EcdhEdkWrapping.Dummy__ +var _ m_RawECDHKeyring.Dummy__ +var _ m_RawRSAKeyring.Dummy__ +var _ m_AwsKmsMrkMatchForDecrypt.Dummy__ +var _ m_AwsKmsUtils.Dummy__ +var _ m_AwsKmsKeyring.Dummy__ +var _ m_AwsKmsDiscoveryKeyring.Dummy__ +var _ m_AwsKmsEcdhKeyring.Dummy__ +var _ m_FileIO.Dummy__ +var _ m_LocalCMC.Dummy__ +var _ m_SynchronizedLocalCMC.Dummy__ +var _ m_StormTracker.Dummy__ +var _ m_StormTrackingCMC.Dummy__ +var _ m_CacheConstants.Dummy__ +var _ m_AwsKmsHierarchicalKeyring.Dummy__ +var _ m_AwsKmsMrkDiscoveryKeyring.Dummy__ +var _ m_AwsKmsMrkKeyring.Dummy__ +var _ m_AwsKmsRsaKeyring.Dummy__ +var _ m_MultiKeyring.Dummy__ +var _ m_AwsKmsMrkAreUnique.Dummy__ +var _ m_StrictMultiKeyring.Dummy__ +var _ m_Com_Amazonaws_Kms.Dummy__ +var _ m_Com_Amazonaws_Dynamodb.Dummy__ +var _ m_DiscoveryMultiKeyring.Dummy__ +var _ m_MrkAwareDiscoveryMultiKeyring.Dummy__ +var _ m_MrkAwareStrictMultiKeyring.Dummy__ +var _ m_CMM.Dummy__ +var _ m_Defaults.Dummy__ +var _ m_Commitment.Dummy__ +var _ m_DefaultCMM.Dummy__ +var _ m_DefaultClientSupplier.Dummy__ +var _ m_Utils.Dummy__ +var _ m_RequiredEncryptionContextCMM.Dummy__ +var _ m_AwsCryptographyMaterialProvidersOperations.Dummy__ +var _ m_MaterialProviders.Dummy__ +var _ m_KeyStoreErrorMessages.Dummy__ +var _ m_KmsArn.Dummy__ +var _ m_Structure.Dummy__ +var _ m_KMSKeystoreOperations.Dummy__ +var _ m_DDBKeystoreOperations.Dummy__ +var _ m_CreateKeys.Dummy__ +var _ m_CreateKeyStoreTable.Dummy__ +var _ m_GetKeys.Dummy__ +var _ m_AwsCryptographyKeyStoreOperations.Dummy__ +var _ m_KeyStore.Dummy__ +var _ m__Unicode.Dummy__ +var _ m_Functions.Dummy__ +var _ m_Utf8EncodingForm.Dummy__ +var _ m_Utf16EncodingForm.Dummy__ +var _ m_UnicodeStrings.Dummy__ +var _ m_GeneralInternals.Dummy__ +var _ m_MulInternalsNonlinear.Dummy__ +var _ m_MulInternals.Dummy__ +var _ m_Mul.Dummy__ +var _ m_ModInternalsNonlinear.Dummy__ +var _ m_DivInternalsNonlinear.Dummy__ +var _ m_ModInternals.Dummy__ +var _ m_DivInternals.Dummy__ +var _ m_DivMod.Dummy__ +var _ m_Power.Dummy__ +var _ m_Logarithm.Dummy__ +var _ m_StandardLibraryInterop.Dummy__ +var _ m_Streams.Dummy__ +var _ m_Sorting.Dummy__ +var _ m_HexStrings.Dummy__ +var _ m_GetOpt.Dummy__ +var _ m_FloatCompare.Dummy__ +var _ m_Base64Lemmas.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Dummy__ +var _ m_StructuredEncryptionUtil.Dummy__ +var _ m_Sets.Dummy__ +var _ m_StructuredEncryptionPaths.Dummy__ +var _ m_StructuredEncryptionHeader.Dummy__ +var _ m_StructuredEncryptionFooter.Dummy__ +var _ m_OptimizedMergeSort.Dummy__ +var _ m_SortCanon.Dummy__ +var _ m_Canonize.Dummy__ +var _ m_StructuredEncryptionCrypt.Dummy__ +var _ m__Maps.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations.Dummy__ +var _ m_StructuredEncryption.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Dummy__ +var _ m_DynamoDbEncryptionUtil.Dummy__ +var _ m_DynamoDbNormalizeNumber.Dummy__ +var _ m_DynamoToStruct.Dummy__ +var _ m_DynamoDbItemEncryptorUtil.Dummy__ +var _ m_InternalLegacyOverride.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations.Dummy__ +var _ m_DynamoDbItemEncryptor.Dummy__ +var _ m_DynamoDbEncryptionBranchKeyIdSupplier.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbOperations.Dummy__ +var _ m_DynamoDbEncryption.Dummy__ +var _ m_TermLoc.Dummy__ +var _ m_DdbVirtualFields.Dummy__ +var _ m_DynamoDbUpdateExpr.Dummy__ +var _ m_BaseBeacon.Dummy__ +var _ m_CompoundBeacon.Dummy__ +var _ m_SearchableEncryptionInfo.Dummy__ +var _ m_DynamoDBFilterExpr.Dummy__ +var _ m_DynamoDBSupport.Dummy__ +var _ m_SearchConfigToInfo.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Dummy__ +var _ m_DdbMiddlewareConfig.Dummy__ +var _ m_DdbStatement.Dummy__ +var _ m_DynamoDbMiddlewareSupport.Dummy__ +var _ m_PutItemTransform.Dummy__ +var _ m_GetItemTransform.Dummy__ +var _ m_UpdateItemTransform.Dummy__ +var _ m_BatchWriteItemTransform.Dummy__ +var _ m_TransactWriteItemsTransform.Dummy__ +var _ m_BatchGetItemTransform.Dummy__ +var _ m_ScanTransform.Dummy__ +var _ m_QueryTransform.Dummy__ +var _ m_TransactGetItemsTransform.Dummy__ + +type Dummy__ struct{} + +// Definition of class Default__ +type Default__ struct { + dummy byte +} + +func New_Default___() *Default__ { + _this := Default__{} + + return &_this +} + +type CompanionStruct_Default___ struct { +} + +var Companion_Default___ = CompanionStruct_Default___{} + +func (_this *Default__) Equals(other *Default__) bool { + return _this == other +} + +func (_this *Default__) EqualsGeneric(x interface{}) bool { + other, ok := x.(*Default__) + return ok && _this.Equals(other) +} + +func (*Default__) String() string { + return "DeleteItemTransform.Default__" +} +func (_this *Default__) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = &Default__{} + +func (_static *CompanionStruct_Default___) Input(config m_DdbMiddlewareConfig.Config, input m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.DeleteItemInputTransformInput) m_Wrappers.Result { + var output m_Wrappers.Result = m_Wrappers.Result{} + _ = output + if ((config).Dtor_tableEncryptionConfigs()).Contains(((input).Dtor_sdkInput()).Dtor_TableName()) { + var _0_valueOrError0 m_Wrappers.Outcome = m_Wrappers.Companion_Outcome_.Default() + _ = _0_valueOrError0 + _0_valueOrError0 = m_Wrappers.Companion_Default___.Need(m_DynamoDbMiddlewareSupport.Companion_Default___.NoMap(((input).Dtor_sdkInput()).Dtor_Expected()), m_DdbMiddlewareConfig.Companion_Default___.E(_dafny.SeqOfString("Legacy parameter 'Expected' not supported in UpdateItem with Encryption"))) + if (_0_valueOrError0).IsFailure() { + output = (_0_valueOrError0).PropagateFailure() + return output + } + var _1_valueOrError1 m_Wrappers.Outcome = m_Wrappers.Companion_Outcome_.Default() + _ = _1_valueOrError1 + _1_valueOrError1 = m_Wrappers.Companion_Default___.Need((((input).Dtor_sdkInput()).Dtor_ConditionalOperator()).Is_None(), m_DdbMiddlewareConfig.Companion_Default___.E(_dafny.SeqOfString("Legacy parameter 'ConditionalOperator' not supported in UpdateItem with Encryption"))) + if (_1_valueOrError1).IsFailure() { + output = (_1_valueOrError1).PropagateFailure() + return output + } + var _2_tableConfig m_DdbMiddlewareConfig.TableConfig + _ = _2_tableConfig + _2_tableConfig = ((config).Dtor_tableEncryptionConfigs()).Get(((input).Dtor_sdkInput()).Dtor_TableName()).(m_DdbMiddlewareConfig.TableConfig) + var _3_valueOrError2 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(false) + _ = _3_valueOrError2 + _3_valueOrError2 = m_DynamoDbMiddlewareSupport.Companion_Default___.TestConditionExpression(_2_tableConfig, ((input).Dtor_sdkInput()).Dtor_ConditionExpression(), ((input).Dtor_sdkInput()).Dtor_ExpressionAttributeNames(), ((input).Dtor_sdkInput()).Dtor_ExpressionAttributeValues()) + if (_3_valueOrError2).IsFailure() { + output = (_3_valueOrError2).PropagateFailure() + return output + } + var _4___v0 bool + _ = _4___v0 + _4___v0 = (_3_valueOrError2).Extract().(bool) + } + output = m_Wrappers.Companion_Result_.Create_Success_(m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_DeleteItemInputTransformOutput_.Create_DeleteItemInputTransformOutput_((input).Dtor_sdkInput())) + return output + return output +} +func (_static *CompanionStruct_Default___) Output(config m_DdbMiddlewareConfig.Config, input m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.DeleteItemOutputTransformInput) m_Wrappers.Result { + var output m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_DeleteItemOutputTransformOutput_.Default()) + _ = output + var _0_tableName _dafny.Sequence + _ = _0_tableName + _0_tableName = ((input).Dtor_originalInput()).Dtor_TableName() + if (!((config).Dtor_tableEncryptionConfigs()).Contains(_0_tableName)) || (m_DynamoDbMiddlewareSupport.Companion_Default___.NoMap(((input).Dtor_sdkOutput()).Dtor_Attributes())) { + output = m_Wrappers.Companion_Result_.Create_Success_(m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_DeleteItemOutputTransformOutput_.Create_DeleteItemOutputTransformOutput_((input).Dtor_sdkOutput())) + return output + } + var _1_tableConfig m_DdbMiddlewareConfig.TableConfig + _ = _1_tableConfig + _1_tableConfig = ((config).Dtor_tableEncryptionConfigs()).Get(_0_tableName).(m_DdbMiddlewareConfig.TableConfig) + var _2_decryptRes m_Wrappers.Result + _ = _2_decryptRes + var _out0 m_Wrappers.Result + _ = _out0 + _out0 = ((_1_tableConfig).Dtor_itemEncryptor()).DecryptItem(m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Companion_DecryptItemInput_.Create_DecryptItemInput_((((input).Dtor_sdkOutput()).Dtor_Attributes()).Dtor_value().(_dafny.Map))) + _2_decryptRes = _out0 + var _3_valueOrError0 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Companion_DecryptItemOutput_.Default()) + _ = _3_valueOrError0 + _3_valueOrError0 = m_DdbMiddlewareConfig.Companion_Default___.MapError(_2_decryptRes) + if (_3_valueOrError0).IsFailure() { + output = (_3_valueOrError0).PropagateFailure() + return output + } + var _4_decrypted m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.DecryptItemOutput + _ = _4_decrypted + _4_decrypted = (_3_valueOrError0).Extract().(m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.DecryptItemOutput) + var _5_valueOrError1 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(_dafny.EmptyMap) + _ = _5_valueOrError1 + _5_valueOrError1 = m_DynamoDbMiddlewareSupport.Companion_Default___.RemoveBeacons(_1_tableConfig, (_4_decrypted).Dtor_plaintextItem()) + if (_5_valueOrError1).IsFailure() { + output = (_5_valueOrError1).PropagateFailure() + return output + } + var _6_item _dafny.Map + _ = _6_item + _6_item = (_5_valueOrError1).Extract().(_dafny.Map) + var _pat_let_tv0 = _6_item + _ = _pat_let_tv0 + output = m_Wrappers.Companion_Result_.Create_Success_(m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_DeleteItemOutputTransformOutput_.Create_DeleteItemOutputTransformOutput_(func(_pat_let43_0 m_ComAmazonawsDynamodbTypes.DeleteItemOutput) m_ComAmazonawsDynamodbTypes.DeleteItemOutput { + return func(_7_dt__update__tmp_h0 m_ComAmazonawsDynamodbTypes.DeleteItemOutput) m_ComAmazonawsDynamodbTypes.DeleteItemOutput { + return func(_pat_let44_0 m_Wrappers.Option) m_ComAmazonawsDynamodbTypes.DeleteItemOutput { + return func(_8_dt__update_hAttributes_h0 m_Wrappers.Option) m_ComAmazonawsDynamodbTypes.DeleteItemOutput { + return m_ComAmazonawsDynamodbTypes.Companion_DeleteItemOutput_.Create_DeleteItemOutput_(_8_dt__update_hAttributes_h0, (_7_dt__update__tmp_h0).Dtor_ConsumedCapacity(), (_7_dt__update__tmp_h0).Dtor_ItemCollectionMetrics()) + }(_pat_let44_0) + }(m_Wrappers.Companion_Option_.Create_Some_(_pat_let_tv0)) + }(_pat_let43_0) + }((input).Dtor_sdkOutput()))) + return output + return output +} + +// End of class Default__ diff --git a/releases/go/dynamodb-esdk/DynamoDBFilterExpr/DynamoDBFilterExpr.go b/releases/go/dynamodb-esdk/DynamoDBFilterExpr/DynamoDBFilterExpr.go new file mode 100644 index 000000000..c4170a5ab --- /dev/null +++ b/releases/go/dynamodb-esdk/DynamoDBFilterExpr/DynamoDBFilterExpr.go @@ -0,0 +1,4354 @@ +// Package DynamoDBFilterExpr +// Dafny module DynamoDBFilterExpr compiled into Go + +package DynamoDBFilterExpr + +import ( + os "os" + + m_ComAmazonawsDynamodbTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/dynamodb/ComAmazonawsDynamodbTypes" + m_Com_Amazonaws_Dynamodb "github.com/aws/aws-cryptographic-material-providers-library/releases/go/dynamodb/Com_Amazonaws_Dynamodb" + m_ComAmazonawsKmsTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/kms/ComAmazonawsKmsTypes" + m_Com_Amazonaws_Kms "github.com/aws/aws-cryptographic-material-providers-library/releases/go/kms/Com_Amazonaws_Kms" + m_AlgorithmSuites "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AlgorithmSuites" + m_AwsArnParsing "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsArnParsing" + m_AwsCryptographyKeyStoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyKeyStoreOperations" + m_AwsCryptographyKeyStoreTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyKeyStoreTypes" + m_AwsCryptographyMaterialProvidersOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyMaterialProvidersOperations" + m_AwsCryptographyMaterialProvidersTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyMaterialProvidersTypes" + m_AwsKmsDiscoveryKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsDiscoveryKeyring" + m_AwsKmsEcdhKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsEcdhKeyring" + m_AwsKmsHierarchicalKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsHierarchicalKeyring" + m_AwsKmsKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsKeyring" + m_AwsKmsMrkAreUnique "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkAreUnique" + m_AwsKmsMrkDiscoveryKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkDiscoveryKeyring" + m_AwsKmsMrkKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkKeyring" + m_AwsKmsMrkMatchForDecrypt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkMatchForDecrypt" + m_AwsKmsRsaKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsRsaKeyring" + m_AwsKmsUtils "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsUtils" + m_CMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CMM" + m_CacheConstants "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CacheConstants" + m_CanonicalEncryptionContext "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CanonicalEncryptionContext" + m_Commitment "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Commitment" + m_Constants "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Constants" + m_CreateKeyStoreTable "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CreateKeyStoreTable" + m_CreateKeys "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CreateKeys" + m_DDBKeystoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DDBKeystoreOperations" + m_DefaultCMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DefaultCMM" + m_DefaultClientSupplier "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DefaultClientSupplier" + m_Defaults "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Defaults" + m_DiscoveryMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DiscoveryMultiKeyring" + m_EcdhEdkWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/EcdhEdkWrapping" + m_EdkWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/EdkWrapping" + m_ErrorMessages "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/ErrorMessages" + m_GetKeys "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/GetKeys" + m_IntermediateKeyWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/IntermediateKeyWrapping" + m_KMSKeystoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KMSKeystoreOperations" + m_KeyStore "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KeyStore" + m_KeyStoreErrorMessages "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KeyStoreErrorMessages" + m_Keyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Keyring" + m_KmsArn "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KmsArn" + m_LocalCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/LocalCMC" + m_MaterialProviders "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MaterialProviders" + m_MaterialWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MaterialWrapping" + m_Materials "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Materials" + m_MrkAwareDiscoveryMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MrkAwareDiscoveryMultiKeyring" + m_MrkAwareStrictMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MrkAwareStrictMultiKeyring" + m_MultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MultiKeyring" + m_RawAESKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawAESKeyring" + m_RawECDHKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawECDHKeyring" + m_RawRSAKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawRSAKeyring" + m_RequiredEncryptionContextCMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RequiredEncryptionContextCMM" + m_StormTracker "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StormTracker" + m_StormTrackingCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StormTrackingCMC" + m_StrictMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StrictMultiKeyring" + m_Structure "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Structure" + m_SynchronizedLocalCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/SynchronizedLocalCMC" + m_Utils "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Utils" + m_AtomicPrimitives "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AtomicPrimitives" + m_AwsCryptographyPrimitivesOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AwsCryptographyPrimitivesOperations" + m_AwsCryptographyPrimitivesTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AwsCryptographyPrimitivesTypes" + m_Digest "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/Digest" + m_HKDF "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/HKDF" + m_KdfCtr "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/KdfCtr" + m_Random "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/Random" + m_WrappedHKDF "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/WrappedHKDF" + m_WrappedHMAC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/WrappedHMAC" + m_Actions "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Actions" + m_Base64 "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Base64" + m_Base64Lemmas "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Base64Lemmas" + m_BoundedInts "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/BoundedInts" + m_DivInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivInternals" + m_DivInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivInternalsNonlinear" + m_DivMod "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivMod" + m_FileIO "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/FileIO" + m_FloatCompare "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/FloatCompare" + m_Functions "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Functions" + m_GeneralInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/GeneralInternals" + m_GetOpt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/GetOpt" + m_HexStrings "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/HexStrings" + m_Logarithm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Logarithm" + m__Math "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Math_" + m_ModInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/ModInternals" + m_ModInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/ModInternalsNonlinear" + m_Mul "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Mul" + m_MulInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/MulInternals" + m_MulInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/MulInternalsNonlinear" + m_Power "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Power" + m_Relations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Relations" + m_Seq "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Seq" + m_Seq_MergeSort "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Seq_MergeSort" + m_Sorting "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Sorting" + m_StandardLibrary "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary" + m_StandardLibraryInterop "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibraryInterop" + m_StandardLibrary_MemoryMath "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_MemoryMath" + m_StandardLibrary_Sequence "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_Sequence" + m_StandardLibrary_String "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_String" + m_StandardLibrary_UInt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_UInt" + m_Streams "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Streams" + m_UnicodeStrings "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/UnicodeStrings" + m__Unicode "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Unicode_" + m_Utf16EncodingForm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Utf16EncodingForm" + m_Utf8EncodingForm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Utf8EncodingForm" + m_Wrappers "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Wrappers" + m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations" + m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes" + m_AwsCryptographyDbEncryptionSdkDynamoDbOperations "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbOperations" + m_AwsCryptographyDbEncryptionSdkDynamoDbTypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbTypes" + m_AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations" + m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes" + m_BaseBeacon "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/BaseBeacon" + m_Canonize "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/Canonize" + m_CompoundBeacon "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/CompoundBeacon" + m_DdbVirtualFields "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DdbVirtualFields" + m_DynamoDbEncryption "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbEncryption" + m_DynamoDbEncryptionBranchKeyIdSupplier "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbEncryptionBranchKeyIdSupplier" + m_DynamoDbEncryptionUtil "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbEncryptionUtil" + m_DynamoDbItemEncryptor "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbItemEncryptor" + m_DynamoDbItemEncryptorUtil "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbItemEncryptorUtil" + m_DynamoDbNormalizeNumber "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbNormalizeNumber" + m_DynamoDbUpdateExpr "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbUpdateExpr" + m_DynamoToStruct "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoToStruct" + m_InternalLegacyOverride "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/InternalLegacyOverride" + m__Maps "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/Maps_" + m_OptimizedMergeSort "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/OptimizedMergeSort" + m_SearchableEncryptionInfo "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/SearchableEncryptionInfo" + m_Sets "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/Sets" + m_SortCanon "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/SortCanon" + m_StructuredEncryption "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryption" + m_StructuredEncryptionCrypt "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionCrypt" + m_StructuredEncryptionFooter "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionFooter" + m_StructuredEncryptionHeader "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionHeader" + m_StructuredEncryptionPaths "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionPaths" + m_StructuredEncryptionUtil "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionUtil" + m_TermLoc "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/TermLoc" + m__System "github.com/dafny-lang/DafnyRuntimeGo/v4/System_" + _dafny "github.com/dafny-lang/DafnyRuntimeGo/v4/dafny" +) + +var _ = os.Args +var _ _dafny.Dummy__ +var _ m__System.Dummy__ +var _ m_Wrappers.Dummy__ +var _ m_BoundedInts.Dummy__ +var _ m_StandardLibrary_UInt.Dummy__ +var _ m_StandardLibrary_MemoryMath.Dummy__ +var _ m_StandardLibrary_Sequence.Dummy__ +var _ m_StandardLibrary_String.Dummy__ +var _ m_StandardLibrary.Dummy__ +var _ m_AwsCryptographyPrimitivesTypes.Dummy__ +var _ m_Random.Dummy__ +var _ m_Digest.Dummy__ +var _ m_WrappedHMAC.Dummy__ +var _ m_HKDF.Dummy__ +var _ m_WrappedHKDF.Dummy__ +var _ m_KdfCtr.Dummy__ +var _ m_AwsCryptographyPrimitivesOperations.Dummy__ +var _ m_AtomicPrimitives.Dummy__ +var _ m_ComAmazonawsDynamodbTypes.Dummy__ +var _ m_ComAmazonawsKmsTypes.Dummy__ +var _ m_AwsCryptographyKeyStoreTypes.Dummy__ +var _ m_AwsCryptographyMaterialProvidersTypes.Dummy__ +var _ m_Base64.Dummy__ +var _ m_AlgorithmSuites.Dummy__ +var _ m_Materials.Dummy__ +var _ m_Keyring.Dummy__ +var _ m_Relations.Dummy__ +var _ m_Seq_MergeSort.Dummy__ +var _ m__Math.Dummy__ +var _ m_Seq.Dummy__ +var _ m_Actions.Dummy__ +var _ m_CanonicalEncryptionContext.Dummy__ +var _ m_MaterialWrapping.Dummy__ +var _ m_IntermediateKeyWrapping.Dummy__ +var _ m_EdkWrapping.Dummy__ +var _ m_ErrorMessages.Dummy__ +var _ m_RawAESKeyring.Dummy__ +var _ m_AwsArnParsing.Dummy__ +var _ m_Constants.Dummy__ +var _ m_EcdhEdkWrapping.Dummy__ +var _ m_RawECDHKeyring.Dummy__ +var _ m_RawRSAKeyring.Dummy__ +var _ m_AwsKmsMrkMatchForDecrypt.Dummy__ +var _ m_AwsKmsUtils.Dummy__ +var _ m_AwsKmsKeyring.Dummy__ +var _ m_AwsKmsDiscoveryKeyring.Dummy__ +var _ m_AwsKmsEcdhKeyring.Dummy__ +var _ m_FileIO.Dummy__ +var _ m_LocalCMC.Dummy__ +var _ m_SynchronizedLocalCMC.Dummy__ +var _ m_StormTracker.Dummy__ +var _ m_StormTrackingCMC.Dummy__ +var _ m_CacheConstants.Dummy__ +var _ m_AwsKmsHierarchicalKeyring.Dummy__ +var _ m_AwsKmsMrkDiscoveryKeyring.Dummy__ +var _ m_AwsKmsMrkKeyring.Dummy__ +var _ m_AwsKmsRsaKeyring.Dummy__ +var _ m_MultiKeyring.Dummy__ +var _ m_AwsKmsMrkAreUnique.Dummy__ +var _ m_StrictMultiKeyring.Dummy__ +var _ m_Com_Amazonaws_Kms.Dummy__ +var _ m_Com_Amazonaws_Dynamodb.Dummy__ +var _ m_DiscoveryMultiKeyring.Dummy__ +var _ m_MrkAwareDiscoveryMultiKeyring.Dummy__ +var _ m_MrkAwareStrictMultiKeyring.Dummy__ +var _ m_CMM.Dummy__ +var _ m_Defaults.Dummy__ +var _ m_Commitment.Dummy__ +var _ m_DefaultCMM.Dummy__ +var _ m_DefaultClientSupplier.Dummy__ +var _ m_Utils.Dummy__ +var _ m_RequiredEncryptionContextCMM.Dummy__ +var _ m_AwsCryptographyMaterialProvidersOperations.Dummy__ +var _ m_MaterialProviders.Dummy__ +var _ m_KeyStoreErrorMessages.Dummy__ +var _ m_KmsArn.Dummy__ +var _ m_Structure.Dummy__ +var _ m_KMSKeystoreOperations.Dummy__ +var _ m_DDBKeystoreOperations.Dummy__ +var _ m_CreateKeys.Dummy__ +var _ m_CreateKeyStoreTable.Dummy__ +var _ m_GetKeys.Dummy__ +var _ m_AwsCryptographyKeyStoreOperations.Dummy__ +var _ m_KeyStore.Dummy__ +var _ m__Unicode.Dummy__ +var _ m_Functions.Dummy__ +var _ m_Utf8EncodingForm.Dummy__ +var _ m_Utf16EncodingForm.Dummy__ +var _ m_UnicodeStrings.Dummy__ +var _ m_GeneralInternals.Dummy__ +var _ m_MulInternalsNonlinear.Dummy__ +var _ m_MulInternals.Dummy__ +var _ m_Mul.Dummy__ +var _ m_ModInternalsNonlinear.Dummy__ +var _ m_DivInternalsNonlinear.Dummy__ +var _ m_ModInternals.Dummy__ +var _ m_DivInternals.Dummy__ +var _ m_DivMod.Dummy__ +var _ m_Power.Dummy__ +var _ m_Logarithm.Dummy__ +var _ m_StandardLibraryInterop.Dummy__ +var _ m_Streams.Dummy__ +var _ m_Sorting.Dummy__ +var _ m_HexStrings.Dummy__ +var _ m_GetOpt.Dummy__ +var _ m_FloatCompare.Dummy__ +var _ m_Base64Lemmas.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Dummy__ +var _ m_StructuredEncryptionUtil.Dummy__ +var _ m_Sets.Dummy__ +var _ m_StructuredEncryptionPaths.Dummy__ +var _ m_StructuredEncryptionHeader.Dummy__ +var _ m_StructuredEncryptionFooter.Dummy__ +var _ m_OptimizedMergeSort.Dummy__ +var _ m_SortCanon.Dummy__ +var _ m_Canonize.Dummy__ +var _ m_StructuredEncryptionCrypt.Dummy__ +var _ m__Maps.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations.Dummy__ +var _ m_StructuredEncryption.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Dummy__ +var _ m_DynamoDbEncryptionUtil.Dummy__ +var _ m_DynamoDbNormalizeNumber.Dummy__ +var _ m_DynamoToStruct.Dummy__ +var _ m_DynamoDbItemEncryptorUtil.Dummy__ +var _ m_InternalLegacyOverride.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations.Dummy__ +var _ m_DynamoDbItemEncryptor.Dummy__ +var _ m_DynamoDbEncryptionBranchKeyIdSupplier.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbOperations.Dummy__ +var _ m_DynamoDbEncryption.Dummy__ +var _ m_TermLoc.Dummy__ +var _ m_DdbVirtualFields.Dummy__ +var _ m_DynamoDbUpdateExpr.Dummy__ +var _ m_BaseBeacon.Dummy__ +var _ m_CompoundBeacon.Dummy__ +var _ m_SearchableEncryptionInfo.Dummy__ + +type Dummy__ struct{} + +// Definition of class Default__ +type Default__ struct { + dummy byte +} + +func New_Default___() *Default__ { + _this := Default__{} + + return &_this +} + +type CompanionStruct_Default___ struct { +} + +var Companion_Default___ = CompanionStruct_Default___{} + +func (_this *Default__) Equals(other *Default__) bool { + return _this == other +} + +func (_this *Default__) EqualsGeneric(x interface{}) bool { + other, ok := x.(*Default__) + return ok && _this.Equals(other) +} + +func (*Default__) String() string { + return "DynamoDBFilterExpr.Default__" +} +func (_this *Default__) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = &Default__{} + +func (_static *CompanionStruct_Default___) ExtractAttributes(s _dafny.Sequence, ex m_Wrappers.Option) _dafny.Sequence { + var _0_tokens _dafny.Sequence = Companion_Default___.ParseExpr(s, uint64(0)) + _ = _0_tokens + return Companion_Default___.ExtractAttributes2(_0_tokens, ex, _dafny.IntOfInt64(-1), uint64(0)) +} +func (_static *CompanionStruct_Default___) IsSpecial(t Token) bool { + return (((t).Is_AttributeExists()) || ((t).Is_AttributeNotExists())) || ((t).Is_Size()) +} +func (_static *CompanionStruct_Default___) ExtractAttributes2(tokens _dafny.Sequence, names m_Wrappers.Option, tokensUntilSkip _dafny.Int, pos uint64) _dafny.Sequence { + var _0___accumulator _dafny.Sequence = _dafny.SeqOf() + _ = _0___accumulator + goto TAIL_CALL_START +TAIL_CALL_START: + if (uint64((tokens).Cardinality())) == (pos) { + return _dafny.Companion_Sequence_.Concatenate(_0___accumulator, _dafny.SeqOf()) + } else if Companion_Default___.IsSpecial((tokens).Select(uint32(pos)).(Token)) { + var _in0 _dafny.Sequence = tokens + _ = _in0 + var _in1 m_Wrappers.Option = names + _ = _in1 + var _in2 _dafny.Int = _dafny.One + _ = _in2 + var _in3 uint64 = (pos) + (uint64(1)) + _ = _in3 + tokens = _in0 + names = _in1 + tokensUntilSkip = _in2 + pos = _in3 + goto TAIL_CALL_START + } else if (((tokens).Select(uint32(pos)).(Token)).Is_Attr()) && ((tokensUntilSkip).Sign() == 0) { + var _in4 _dafny.Sequence = tokens + _ = _in4 + var _in5 m_Wrappers.Option = names + _ = _in5 + var _in6 _dafny.Int = _dafny.IntOfInt64(-1) + _ = _in6 + var _in7 uint64 = (pos) + (uint64(1)) + _ = _in7 + tokens = _in4 + names = _in5 + tokensUntilSkip = _in6 + pos = _in7 + goto TAIL_CALL_START + } else if ((tokens).Select(uint32(pos)).(Token)).Is_Attr() { + _0___accumulator = _dafny.Companion_Sequence_.Concatenate(_0___accumulator, _dafny.SeqOf(Companion_Default___.GetAttrName((tokens).Select(uint32(pos)).(Token), names))) + var _in8 _dafny.Sequence = tokens + _ = _in8 + var _in9 m_Wrappers.Option = names + _ = _in9 + var _in10 _dafny.Int = _dafny.IntOfInt64(-1) + _ = _in10 + var _in11 uint64 = (pos) + (uint64(1)) + _ = _in11 + tokens = _in8 + names = _in9 + tokensUntilSkip = _in10 + pos = _in11 + goto TAIL_CALL_START + } else { + var _in12 _dafny.Sequence = tokens + _ = _in12 + var _in13 m_Wrappers.Option = names + _ = _in13 + var _in14 _dafny.Int = (tokensUntilSkip).Minus(_dafny.One) + _ = _in14 + var _in15 uint64 = (pos) + (uint64(1)) + _ = _in15 + tokens = _in12 + names = _in13 + tokensUntilSkip = _in14 + pos = _in15 + goto TAIL_CALL_START + } +} +func (_static *CompanionStruct_Default___) IsEquality(t Token) bool { + return (((t).Is_Eq()) || ((t).Is_Ne())) || ((t).Is_In()) +} +func (_static *CompanionStruct_Default___) IsInequality(t Token) bool { + return ((((t).Is_Lt()) || ((t).Is_Le())) || ((t).Is_Gt())) || ((t).Is_Ge()) +} +func (_static *CompanionStruct_Default___) TokenToString(t Token) _dafny.Sequence { + var _source0 Token = t + _ = _source0 + { + if _source0.Is_Attr() { + var _0_s _dafny.Sequence = _source0.Get_().(Token_Attr).S + _ = _0_s + var _1_l _dafny.Sequence = _source0.Get_().(Token_Attr).Loc + _ = _1_l + return _0_s + } + } + { + if _source0.Is_Value() { + var _2_s _dafny.Sequence = _source0.Get_().(Token_Value).S + _ = _2_s + return _2_s + } + } + { + if _source0.Is_Eq() { + return _dafny.SeqOfString("=") + } + } + { + if _source0.Is_Ne() { + return _dafny.SeqOfString("<>") + } + } + { + if _source0.Is_Lt() { + return _dafny.SeqOfString("<") + } + } + { + if _source0.Is_Gt() { + return _dafny.SeqOfString(">") + } + } + { + if _source0.Is_Le() { + return _dafny.SeqOfString("<=") + } + } + { + if _source0.Is_Ge() { + return _dafny.SeqOfString(">=") + } + } + { + if _source0.Is_Between() { + return _dafny.SeqOfString("BETWEEN") + } + } + { + if _source0.Is_In() { + return _dafny.SeqOfString("IN") + } + } + { + if _source0.Is_Open() { + return _dafny.SeqOfString("(") + } + } + { + if _source0.Is_Close() { + return _dafny.SeqOfString(")") + } + } + { + if _source0.Is_Comma() { + return _dafny.SeqOfString(",") + } + } + { + if _source0.Is_Not() { + return _dafny.SeqOfString("NOT") + } + } + { + if _source0.Is_And() { + return _dafny.SeqOfString("AND") + } + } + { + if _source0.Is_Or() { + return _dafny.SeqOfString("OR") + } + } + { + if _source0.Is_AttributeExists() { + return _dafny.SeqOfString("attribute_exists") + } + } + { + if _source0.Is_AttributeNotExists() { + return _dafny.SeqOfString("attribute_not_exists") + } + } + { + if _source0.Is_AttributeType() { + return _dafny.SeqOfString("attribute_type") + } + } + { + if _source0.Is_BeginsWith() { + return _dafny.SeqOfString("begins_with") + } + } + { + if _source0.Is_Contains() { + return _dafny.SeqOfString("contains") + } + } + { + return _dafny.SeqOfString("size") + } +} +func (_static *CompanionStruct_Default___) GetInPos(expr _dafny.Sequence, pos _dafny.Int) m_Wrappers.Option { + goto TAIL_CALL_START +TAIL_CALL_START: + if (pos).Cmp(_dafny.IntOfInt64(3)) < 0 { + return m_Wrappers.Companion_Option_.Create_None_() + } else if (((expr).Select(((pos).Minus(_dafny.One)).Uint32()).(Token)).Is_Open()) && (((expr).Select(((pos).Minus(_dafny.IntOfInt64(2))).Uint32()).(Token)).Is_In()) { + return m_Wrappers.Companion_Option_.Create_Some_((pos).Minus(_dafny.IntOfInt64(2))) + } else if (((expr).Select(((pos).Minus(_dafny.One)).Uint32()).(Token)).Is_Comma()) && (((expr).Select(((pos).Minus(_dafny.IntOfInt64(2))).Uint32()).(Token)).Is_Value()) { + var _in0 _dafny.Sequence = expr + _ = _in0 + var _in1 _dafny.Int = (pos).Minus(_dafny.IntOfInt64(2)) + _ = _in1 + expr = _in0 + pos = _in1 + goto TAIL_CALL_START + } else { + return m_Wrappers.Companion_Option_.Create_None_() + } +} +func (_static *CompanionStruct_Default___) RealName(s _dafny.Sequence) _dafny.Sequence { + if _dafny.Companion_Sequence_.IsProperPrefixOf(m_DynamoDbEncryptionUtil.Companion_Default___.BeaconPrefix(), s) { + return (s).Drop((_dafny.IntOfUint32((m_DynamoDbEncryptionUtil.Companion_Default___.BeaconPrefix()).Cardinality())).Uint32()) + } else { + return s + } +} +func (_static *CompanionStruct_Default___) HasBeacon(b m_SearchableEncryptionInfo.BeaconVersion, t Token, names m_Wrappers.Option) bool { + if (t).Is_Attr() { + var _0_name _dafny.Sequence = Companion_Default___.RealName((t).Dtor_s()) + _ = _0_name + return (((((b).Dtor_beacons()).Contains(_0_name)) || ((((names).Is_Some()) && (((names).Dtor_value().(_dafny.Map)).Contains(_0_name))) && (((b).Dtor_beacons()).Contains(Companion_Default___.RealName(((names).Dtor_value().(_dafny.Map)).Get(_0_name).(_dafny.Sequence)))))) || (((b).Dtor_encryptedFields()).Contains(_0_name))) || ((((names).Is_Some()) && (((names).Dtor_value().(_dafny.Map)).Contains(_0_name))) && (((b).Dtor_encryptedFields()).Contains(Companion_Default___.RealName(((names).Dtor_value().(_dafny.Map)).Get(_0_name).(_dafny.Sequence))))) + } else { + return false + } +} +func (_static *CompanionStruct_Default___) GetBeacon2(b m_SearchableEncryptionInfo.BeaconVersion, t Token, names m_Wrappers.Option) m_Wrappers.Result { + var _0_name _dafny.Sequence = Companion_Default___.RealName((t).Dtor_s()) + _ = _0_name + if ((b).Dtor_beacons()).Contains(_0_name) { + if m_SearchableEncryptionInfo.Companion_Default___.IsPartOnly(((b).Dtor_beacons()).Get(_0_name).(m_SearchableEncryptionInfo.Beacon)) { + return m_Wrappers.Companion_Result_.Create_Failure_(m_DynamoDbEncryptionUtil.Companion_Default___.E(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("Field "), _0_name), _dafny.SeqOfString(" is encrypted, and has a PartOnly beacon, and so can only be used as part of a compound beacon.")))) + } else { + return m_Wrappers.Companion_Result_.Create_Success_(((b).Dtor_beacons()).Get(_0_name).(m_SearchableEncryptionInfo.Beacon)) + } + } else if (((names).Is_Some()) && (((names).Dtor_value().(_dafny.Map)).Contains(_0_name))) && (((b).Dtor_beacons()).Contains(Companion_Default___.RealName(((names).Dtor_value().(_dafny.Map)).Get(_0_name).(_dafny.Sequence)))) { + var _1_name2 _dafny.Sequence = Companion_Default___.RealName(((names).Dtor_value().(_dafny.Map)).Get(_0_name).(_dafny.Sequence)) + _ = _1_name2 + return m_Wrappers.Companion_Result_.Create_Success_(((b).Dtor_beacons()).Get(_1_name2).(m_SearchableEncryptionInfo.Beacon)) + } else if ((b).Dtor_encryptedFields()).Contains(_0_name) { + return m_Wrappers.Companion_Result_.Create_Failure_(m_DynamoDbEncryptionUtil.Companion_Default___.E(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("Field "), _0_name), _dafny.SeqOfString(" is encrypted, and cannot be searched without a beacon.")))) + } else { + var _2_name2 _dafny.Sequence = Companion_Default___.RealName(((names).Dtor_value().(_dafny.Map)).Get(_0_name).(_dafny.Sequence)) + _ = _2_name2 + return m_Wrappers.Companion_Result_.Create_Failure_(m_DynamoDbEncryptionUtil.Companion_Default___.E(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("Field "), _2_name2), _dafny.SeqOfString(" is encrypted, and cannot be searched without a beacon.")))) + } +} +func (_static *CompanionStruct_Default___) GetBeacon(bv m_SearchableEncryptionInfo.BeaconVersion, t Token, op Token, value Token, names m_Wrappers.Option, values _dafny.Map) m_Wrappers.Result { + var _0_valueOrError0 m_Wrappers.Result = Companion_Default___.GetBeacon2(bv, t, names) + _ = _0_valueOrError0 + if (_0_valueOrError0).IsFailure() { + return (_0_valueOrError0).PropagateFailure() + } else { + var _1_b m_SearchableEncryptionInfo.Beacon = (_0_valueOrError0).Extract().(m_SearchableEncryptionInfo.Beacon) + _ = _1_b + var _2_valueOrError1 m_Wrappers.Result = Companion_Default___.CanBeacon(_1_b, op, (value).Dtor_s(), values) + _ = _2_valueOrError1 + if (_2_valueOrError1).IsFailure() { + return (_2_valueOrError1).PropagateFailure() + } else { + var _3___v0 bool = (_2_valueOrError1).Extract().(bool) + _ = _3___v0 + return m_Wrappers.Companion_Result_.Create_Success_(Companion_EqualityBeacon_.Create_EqualityBeacon_(m_Wrappers.Companion_Option_.Create_Some_(_1_b), Companion_Default___.IsEquality(op), (op).Equals(Companion_Token_.Create_Contains_()))) + } + } +} +func (_static *CompanionStruct_Default___) GetBetweenBeacon(bv m_SearchableEncryptionInfo.BeaconVersion, t Token, op Token, leftValue Token, rightValue Token, names m_Wrappers.Option, values _dafny.Map) m_Wrappers.Result { + var _0_valueOrError0 m_Wrappers.Result = Companion_Default___.GetBeacon2(bv, t, names) + _ = _0_valueOrError0 + if (_0_valueOrError0).IsFailure() { + return (_0_valueOrError0).PropagateFailure() + } else { + var _1_b m_SearchableEncryptionInfo.Beacon = (_0_valueOrError0).Extract().(m_SearchableEncryptionInfo.Beacon) + _ = _1_b + var _2_valueOrError1 m_Wrappers.Result = Companion_Default___.CanBetween(_1_b, op, (leftValue).Dtor_s(), (rightValue).Dtor_s(), values) + _ = _2_valueOrError1 + if (_2_valueOrError1).IsFailure() { + return (_2_valueOrError1).PropagateFailure() + } else { + var _3___v1 bool = (_2_valueOrError1).Extract().(bool) + _ = _3___v1 + return m_Wrappers.Companion_Result_.Create_Success_(Companion_EqualityBeacon_.Create_EqualityBeacon_(m_Wrappers.Companion_Option_.Create_Some_(_1_b), false, false)) + } + } +} +func (_static *CompanionStruct_Default___) CanStandardBeacon(op Token) m_Wrappers.Result { + var _source0 Token = op + _ = _source0 + { + var disjunctiveMatch0 bool = false + _ = disjunctiveMatch0 + if _source0.Is_Ne() { + disjunctiveMatch0 = true + } + if _source0.Is_Lt() { + disjunctiveMatch0 = true + } + if _source0.Is_Gt() { + disjunctiveMatch0 = true + } + if _source0.Is_Le() { + disjunctiveMatch0 = true + } + if _source0.Is_Ge() { + disjunctiveMatch0 = true + } + if _source0.Is_Between() { + disjunctiveMatch0 = true + } + if _source0.Is_BeginsWith() { + disjunctiveMatch0 = true + } + if disjunctiveMatch0 { + return m_Wrappers.Companion_Result_.Create_Failure_(m_DynamoDbEncryptionUtil.Companion_Default___.E(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("The operation '"), Companion_Default___.TokenToString(op)), _dafny.SeqOfString("' cannot be used with a standard beacon.")))) + } + } + { + return m_Wrappers.Companion_Result_.Create_Success_(true) + } +} +func (_static *CompanionStruct_Default___) CanCompoundBeacon(b m_SearchableEncryptionInfo.Beacon, op Token, value _dafny.Sequence) m_Wrappers.Result { + var _source0 Token = op + _ = _source0 + { + var disjunctiveMatch0 bool = false + _ = disjunctiveMatch0 + if _source0.Is_Lt() { + disjunctiveMatch0 = true + } + if _source0.Is_Gt() { + disjunctiveMatch0 = true + } + if _source0.Is_Le() { + disjunctiveMatch0 = true + } + if _source0.Is_Ge() { + disjunctiveMatch0 = true + } + if disjunctiveMatch0 { + var _0_pieces _dafny.Sequence = m_StandardLibrary.Companion_Default___.Split(value, ((b).Dtor_cmp()).Dtor_split()) + _ = _0_pieces + var _1_valueOrError0 m_Wrappers.Result = ((b).Dtor_cmp()).IsLessThanComparable(_0_pieces) + _ = _1_valueOrError0 + if (_1_valueOrError0).IsFailure() { + return (_1_valueOrError0).PropagateFailure() + } else { + var _2_canLess bool = (_1_valueOrError0).Extract().(bool) + _ = _2_canLess + if _2_canLess { + return m_Wrappers.Companion_Result_.Create_Success_(true) + } else { + return m_Wrappers.Companion_Result_.Create_Failure_(m_DynamoDbEncryptionUtil.Companion_Default___.E(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("The operation '"), Companion_Default___.TokenToString(op)), _dafny.SeqOfString("' cannot be used with a compound beacon, unless the value is LessThanComparable : ")), value))) + } + } + } + } + { + return m_Wrappers.Companion_Result_.Create_Success_(true) + } +} +func (_static *CompanionStruct_Default___) GetStringFromValue(value _dafny.Sequence, values _dafny.Map, b m_SearchableEncryptionInfo.Beacon) m_Wrappers.Result { + if (values).Contains(value) { + var _0_val m_ComAmazonawsDynamodbTypes.AttributeValue = (values).Get(value).(m_ComAmazonawsDynamodbTypes.AttributeValue) + _ = _0_val + if (_0_val).Is_S() { + return m_Wrappers.Companion_Result_.Create_Success_((_0_val).Dtor_S()) + } else { + return m_Wrappers.Companion_Result_.Create_Failure_(m_DynamoDbEncryptionUtil.Companion_Default___.E(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("Value "), value), _dafny.SeqOfString(" supplied for compound beacon ")), (((b).Dtor_cmp()).Dtor_base()).Dtor_name()), _dafny.SeqOfString(" is of type ")), m_DynamoDbEncryptionUtil.Companion_Default___.AttrTypeToStr(_0_val)), _dafny.SeqOfString(" but must be of type S (string).")))) + } + } else { + return m_Wrappers.Companion_Result_.Create_Failure_(m_DynamoDbEncryptionUtil.Companion_Default___.E(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("Value "), value), _dafny.SeqOfString(" used in query string, but not supplied in value map.")))) + } +} +func (_static *CompanionStruct_Default___) CanBeacon(b m_SearchableEncryptionInfo.Beacon, op Token, value _dafny.Sequence, values _dafny.Map) m_Wrappers.Result { + if (b).Is_Standard() { + return Companion_Default___.CanStandardBeacon(op) + } else { + var _0_valueOrError0 m_Wrappers.Result = Companion_Default___.GetStringFromValue(value, values, b) + _ = _0_valueOrError0 + if (_0_valueOrError0).IsFailure() { + return (_0_valueOrError0).PropagateFailure() + } else { + var _1_val _dafny.Sequence = (_0_valueOrError0).Extract().(_dafny.Sequence) + _ = _1_val + return Companion_Default___.CanCompoundBeacon(b, op, _1_val) + } + } +} +func (_static *CompanionStruct_Default___) RemoveCommonPrefix(x _dafny.Sequence, y _dafny.Sequence, pos uint64) _dafny.Tuple { + goto TAIL_CALL_START +TAIL_CALL_START: + if (((uint64((x).Cardinality())) == (pos)) || ((uint64((y).Cardinality())) == (pos))) || (!_dafny.Companion_Sequence_.Equal((x).Select(uint32(pos)).(_dafny.Sequence), (y).Select(uint32(pos)).(_dafny.Sequence))) { + return _dafny.TupleOf((x).Drop(uint32(pos)), (y).Drop(uint32(pos))) + } else { + var _in0 _dafny.Sequence = x + _ = _in0 + var _in1 _dafny.Sequence = y + _ = _in1 + var _in2 uint64 = m_StandardLibrary_MemoryMath.Companion_Default___.Add(pos, uint64(1)) + _ = _in2 + x = _in0 + y = _in1 + pos = _in2 + goto TAIL_CALL_START + } +} +func (_static *CompanionStruct_Default___) CanBetween(b m_SearchableEncryptionInfo.Beacon, op Token, leftValue _dafny.Sequence, rightValue _dafny.Sequence, values _dafny.Map) m_Wrappers.Result { + if (b).Is_Standard() { + return m_Wrappers.Companion_Result_.Create_Failure_(m_DynamoDbEncryptionUtil.Companion_Default___.E(_dafny.SeqOfString("The operation BETWEEN cannot be used with a standard beacon."))) + } else { + var _0_valueOrError0 m_Wrappers.Result = Companion_Default___.GetStringFromValue(leftValue, values, b) + _ = _0_valueOrError0 + if (_0_valueOrError0).IsFailure() { + return (_0_valueOrError0).PropagateFailure() + } else { + var _1_leftVal _dafny.Sequence = (_0_valueOrError0).Extract().(_dafny.Sequence) + _ = _1_leftVal + var _2_valueOrError1 m_Wrappers.Result = Companion_Default___.GetStringFromValue(rightValue, values, b) + _ = _2_valueOrError1 + if (_2_valueOrError1).IsFailure() { + return (_2_valueOrError1).PropagateFailure() + } else { + var _3_rightVal _dafny.Sequence = (_2_valueOrError1).Extract().(_dafny.Sequence) + _ = _3_rightVal + var _4_leftParts _dafny.Sequence = m_StandardLibrary.Companion_Default___.Split(_1_leftVal, ((b).Dtor_cmp()).Dtor_split()) + _ = _4_leftParts + var _5_rightParts _dafny.Sequence = m_StandardLibrary.Companion_Default___.Split(_3_rightVal, ((b).Dtor_cmp()).Dtor_split()) + _ = _5_rightParts + var _let_tmp_rhs0 _dafny.Tuple = Companion_Default___.RemoveCommonPrefix(_4_leftParts, _5_rightParts, uint64(0)) + _ = _let_tmp_rhs0 + var _6_newLeft _dafny.Sequence = (*(_let_tmp_rhs0).IndexInt(0)).(_dafny.Sequence) + _ = _6_newLeft + var _7_newRight _dafny.Sequence = (*(_let_tmp_rhs0).IndexInt(1)).(_dafny.Sequence) + _ = _7_newRight + var _8_valueOrError2 m_Wrappers.Result = ((b).Dtor_cmp()).IsLessThanComparable(_6_newLeft) + _ = _8_valueOrError2 + if (_8_valueOrError2).IsFailure() { + return (_8_valueOrError2).PropagateFailure() + } else { + var _9_leftCanLess bool = (_8_valueOrError2).Extract().(bool) + _ = _9_leftCanLess + var _10_valueOrError3 m_Wrappers.Result = ((b).Dtor_cmp()).IsLessThanComparable(_7_newRight) + _ = _10_valueOrError3 + if (_10_valueOrError3).IsFailure() { + return (_10_valueOrError3).PropagateFailure() + } else { + var _11_rightCanLess bool = (_10_valueOrError3).Extract().(bool) + _ = _11_rightCanLess + var _12_valueOrError4 m_Wrappers.Outcome = m_Wrappers.Companion_Default___.Need((_9_leftCanLess) && (_11_rightCanLess), m_DynamoDbEncryptionUtil.Companion_Default___.E(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("To use BETWEEN with a compound beacon, the part after any common prefix must be LessThanComparable : "), _dafny.SeqOfString("BETWEEN ")), _1_leftVal), _dafny.SeqOfString(" AND ")), _3_rightVal))) + _ = _12_valueOrError4 + if (_12_valueOrError4).IsFailure() { + return (_12_valueOrError4).PropagateFailure() + } else { + return m_Wrappers.Companion_Result_.Create_Success_(true) + } + } + } + } + } + } +} +func (_static *CompanionStruct_Default___) BeaconForValue(b m_SearchableEncryptionInfo.BeaconVersion, expr _dafny.Sequence, pos _dafny.Int, names m_Wrappers.Option, values _dafny.Map) m_Wrappers.Result { + if ((((pos).Plus(_dafny.IntOfInt64(2))).Cmp(_dafny.IntOfUint32((expr).Cardinality())) < 0) && (Companion_Default___.IsComp((expr).Select(((pos).Plus(_dafny.One)).Uint32()).(Token)))) && (Companion_Default___.HasBeacon(b, (expr).Select(((pos).Plus(_dafny.IntOfInt64(2))).Uint32()).(Token), names)) { + return Companion_Default___.GetBeacon(b, (expr).Select(((pos).Plus(_dafny.IntOfInt64(2))).Uint32()).(Token), (expr).Select(((pos).Plus(_dafny.One)).Uint32()).(Token), (expr).Select((pos).Uint32()).(Token), names, values) + } else if (((_dafny.IntOfInt64(2)).Cmp(pos) <= 0) && (Companion_Default___.IsComp((expr).Select(((pos).Minus(_dafny.One)).Uint32()).(Token)))) && (Companion_Default___.HasBeacon(b, (expr).Select(((pos).Minus(_dafny.IntOfInt64(2))).Uint32()).(Token), names)) { + return Companion_Default___.GetBeacon(b, (expr).Select(((pos).Minus(_dafny.IntOfInt64(2))).Uint32()).(Token), (expr).Select(((pos).Minus(_dafny.One)).Uint32()).(Token), (expr).Select((pos).Uint32()).(Token), names, values) + } else if (((((_dafny.IntOfInt64(4)).Cmp(pos) <= 0) && ((((expr).Select(((pos).Minus(_dafny.IntOfInt64(4))).Uint32()).(Token)).Is_Contains()) || (((expr).Select(((pos).Minus(_dafny.IntOfInt64(4))).Uint32()).(Token)).Is_BeginsWith()))) && (((expr).Select(((pos).Minus(_dafny.IntOfInt64(3))).Uint32()).(Token)).Is_Open())) && (Companion_Default___.HasBeacon(b, (expr).Select(((pos).Minus(_dafny.IntOfInt64(2))).Uint32()).(Token), names))) && (((expr).Select(((pos).Minus(_dafny.One)).Uint32()).(Token)).Is_Comma()) { + return Companion_Default___.GetBeacon(b, (expr).Select(((pos).Minus(_dafny.IntOfInt64(2))).Uint32()).(Token), (expr).Select(((pos).Minus(_dafny.IntOfInt64(4))).Uint32()).(Token), (expr).Select((pos).Uint32()).(Token), names, values) + } else if ((((((_dafny.IntOfInt64(2)).Cmp(pos) <= 0) && ((pos).Cmp((_dafny.IntOfUint32((expr).Cardinality())).Minus(_dafny.IntOfInt64(2))) < 0)) && ((((expr).Select(((pos).Minus(_dafny.IntOfInt64(2))).Uint32()).(Token)).Is_Contains()) || (((expr).Select(((pos).Minus(_dafny.IntOfInt64(2))).Uint32()).(Token)).Is_BeginsWith()))) && (((expr).Select(((pos).Minus(_dafny.One)).Uint32()).(Token)).Is_Open())) && (Companion_Default___.HasBeacon(b, (expr).Select(((pos).Plus(_dafny.IntOfInt64(2))).Uint32()).(Token), names))) && (((expr).Select(((pos).Plus(_dafny.One)).Uint32()).(Token)).Is_Comma()) { + return Companion_Default___.GetBeacon(b, (expr).Select(((pos).Plus(_dafny.IntOfInt64(2))).Uint32()).(Token), (expr).Select(((pos).Minus(_dafny.IntOfInt64(2))).Uint32()).(Token), (expr).Select((pos).Uint32()).(Token), names, values) + } else if (((((_dafny.IntOfInt64(2)).Cmp(pos) <= 0) && ((pos).Cmp((_dafny.IntOfUint32((expr).Cardinality())).Minus(_dafny.IntOfInt64(2))) < 0)) && (((expr).Select(((pos).Minus(_dafny.One)).Uint32()).(Token)).Is_Between())) && (Companion_Default___.HasBeacon(b, (expr).Select(((pos).Minus(_dafny.IntOfInt64(2))).Uint32()).(Token), names))) && (((expr).Select(((pos).Plus(_dafny.IntOfInt64(2))).Uint32()).(Token)).Is_Value()) { + return Companion_Default___.GetBetweenBeacon(b, (expr).Select(((pos).Minus(_dafny.IntOfInt64(2))).Uint32()).(Token), (expr).Select(((pos).Minus(_dafny.One)).Uint32()).(Token), (expr).Select((pos).Uint32()).(Token), (expr).Select(((pos).Plus(_dafny.IntOfInt64(2))).Uint32()).(Token), names, values) + } else if (((((_dafny.IntOfInt64(4)).Cmp(pos) <= 0) && (((expr).Select(((pos).Minus(_dafny.One)).Uint32()).(Token)).Is_And())) && (((expr).Select(((pos).Minus(_dafny.IntOfInt64(3))).Uint32()).(Token)).Is_Between())) && (Companion_Default___.HasBeacon(b, (expr).Select(((pos).Minus(_dafny.IntOfInt64(4))).Uint32()).(Token), names))) && (((expr).Select(((pos).Minus(_dafny.IntOfInt64(2))).Uint32()).(Token)).Is_Value()) { + return Companion_Default___.GetBetweenBeacon(b, (expr).Select(((pos).Minus(_dafny.IntOfInt64(4))).Uint32()).(Token), (expr).Select(((pos).Minus(_dafny.IntOfInt64(3))).Uint32()).(Token), (expr).Select(((pos).Minus(_dafny.IntOfInt64(2))).Uint32()).(Token), (expr).Select((pos).Uint32()).(Token), names, values) + } else if ((expr).Select((pos).Uint32()).(Token)).Is_Value() { + var _0_in__pos m_Wrappers.Option = Companion_Default___.GetInPos(expr, pos) + _ = _0_in__pos + if (_0_in__pos).Is_None() { + return m_Wrappers.Companion_Result_.Create_Success_(Companion_EqualityBeacon_.Create_EqualityBeacon_(m_Wrappers.Companion_Option_.Create_None_(), true, false)) + } else if Companion_Default___.HasBeacon(b, (expr).Select((((_0_in__pos).Dtor_value().(_dafny.Int)).Minus(_dafny.One)).Uint32()).(Token), names) { + return Companion_Default___.GetBeacon(b, (expr).Select((((_0_in__pos).Dtor_value().(_dafny.Int)).Minus(_dafny.One)).Uint32()).(Token), (expr).Select(((_0_in__pos).Dtor_value().(_dafny.Int)).Uint32()).(Token), (expr).Select((pos).Uint32()).(Token), names, values) + } else { + return m_Wrappers.Companion_Result_.Create_Success_(Companion_EqualityBeacon_.Create_EqualityBeacon_(m_Wrappers.Companion_Option_.Create_None_(), true, false)) + } + } else { + return m_Wrappers.Companion_Result_.Create_Success_(Companion_EqualityBeacon_.Create_EqualityBeacon_(m_Wrappers.Companion_Option_.Create_None_(), true, false)) + } +} +func (_static *CompanionStruct_Default___) AttrForValue(expr _dafny.Sequence, pos _dafny.Int) m_Wrappers.Option { + if ((((pos).Plus(_dafny.IntOfInt64(2))).Cmp(_dafny.IntOfUint32((expr).Cardinality())) < 0) && (Companion_Default___.IsComp((expr).Select(((pos).Plus(_dafny.One)).Uint32()).(Token)))) && (((expr).Select(((pos).Plus(_dafny.IntOfInt64(2))).Uint32()).(Token)).Is_Attr()) { + return m_Wrappers.Companion_Option_.Create_Some_((expr).Select(((pos).Plus(_dafny.IntOfInt64(2))).Uint32()).(Token)) + } else if (((_dafny.IntOfInt64(2)).Cmp(pos) <= 0) && (Companion_Default___.IsComp((expr).Select(((pos).Minus(_dafny.One)).Uint32()).(Token)))) && (((expr).Select(((pos).Minus(_dafny.IntOfInt64(2))).Uint32()).(Token)).Is_Attr()) { + return m_Wrappers.Companion_Option_.Create_Some_((expr).Select(((pos).Minus(_dafny.IntOfInt64(2))).Uint32()).(Token)) + } else if (((((_dafny.IntOfInt64(4)).Cmp(pos) <= 0) && ((((expr).Select(((pos).Minus(_dafny.IntOfInt64(4))).Uint32()).(Token)).Is_Contains()) || (((expr).Select(((pos).Minus(_dafny.IntOfInt64(4))).Uint32()).(Token)).Is_BeginsWith()))) && (((expr).Select(((pos).Minus(_dafny.IntOfInt64(3))).Uint32()).(Token)).Is_Open())) && (((expr).Select(((pos).Minus(_dafny.IntOfInt64(2))).Uint32()).(Token)).Is_Attr())) && (((expr).Select(((pos).Minus(_dafny.One)).Uint32()).(Token)).Is_Comma()) { + return m_Wrappers.Companion_Option_.Create_Some_((expr).Select(((pos).Minus(_dafny.IntOfInt64(2))).Uint32()).(Token)) + } else if (((_dafny.IntOfInt64(2)).Cmp(pos) <= 0) && (((expr).Select(((pos).Minus(_dafny.One)).Uint32()).(Token)).Is_Between())) && (((expr).Select(((pos).Minus(_dafny.IntOfInt64(2))).Uint32()).(Token)).Is_Attr()) { + return m_Wrappers.Companion_Option_.Create_Some_((expr).Select(((pos).Minus(_dafny.IntOfInt64(2))).Uint32()).(Token)) + } else if ((((_dafny.IntOfInt64(4)).Cmp(pos) <= 0) && (((expr).Select(((pos).Minus(_dafny.One)).Uint32()).(Token)).Is_And())) && (((expr).Select(((pos).Minus(_dafny.IntOfInt64(3))).Uint32()).(Token)).Is_Between())) && (((expr).Select(((pos).Minus(_dafny.IntOfInt64(4))).Uint32()).(Token)).Is_Attr()) { + return m_Wrappers.Companion_Option_.Create_Some_((expr).Select(((pos).Minus(_dafny.IntOfInt64(4))).Uint32()).(Token)) + } else { + var _0_in__pos m_Wrappers.Option = Companion_Default___.GetInPos(expr, pos) + _ = _0_in__pos + if (_0_in__pos).Is_None() { + return m_Wrappers.Companion_Option_.Create_None_() + } else if ((expr).Select((((_0_in__pos).Dtor_value().(_dafny.Int)).Minus(_dafny.One)).Uint32()).(Token)).Is_Attr() { + return m_Wrappers.Companion_Option_.Create_Some_((expr).Select((((_0_in__pos).Dtor_value().(_dafny.Int)).Minus(_dafny.One)).Uint32()).(Token)) + } else { + return m_Wrappers.Companion_Option_.Create_None_() + } + } +} +func (_static *CompanionStruct_Default___) OpNeedsBeacon(expr _dafny.Sequence, pos _dafny.Int) bool { + if (pos).Cmp(_dafny.IntOfInt64(2)) < 0 { + return true + } else if !(((expr).Select(((pos).Minus(_dafny.One)).Uint32()).(Token)).Is_Open()) { + return true + } else { + return Companion_Default___.TokenNeedsBeacon((expr).Select(((pos).Minus(_dafny.IntOfInt64(2))).Uint32()).(Token)) + } +} +func (_static *CompanionStruct_Default___) IsAllowedOnBeaconPred(expr _dafny.Sequence, pos _dafny.Int) bool { + if (pos).Cmp(_dafny.IntOfInt64(2)) < 0 { + return true + } else if !(((expr).Select(((pos).Minus(_dafny.One)).Uint32()).(Token)).Is_Open()) { + return true + } else if Companion_Default___.TokenAllowsBeacon((expr).Select(((pos).Minus(_dafny.IntOfInt64(2))).Uint32()).(Token)) { + return true + } else { + return false + } +} +func (_static *CompanionStruct_Default___) IsAllowedOnBeacon(expr _dafny.Sequence, pos _dafny.Int, name _dafny.Sequence) m_Wrappers.Result { + if Companion_Default___.IsAllowedOnBeaconPred(expr, pos) { + return m_Wrappers.Companion_Result_.Create_Success_(true) + } else { + return m_Wrappers.Companion_Result_.Create_Failure_(m_DynamoDbEncryptionUtil.Companion_Default___.E(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("Function "), Companion_Default___.TokenToString((expr).Select(((pos).Minus(_dafny.IntOfInt64(2))).Uint32()).(Token))), _dafny.SeqOfString(" cannot be used on encrypted fields, but it is being used with ")), name))) + } +} +func (_static *CompanionStruct_Default___) TokenNeedsBeacon(t Token) bool { + return !(((t).Is_AttributeExists()) || ((t).Is_AttributeNotExists())) +} +func (_static *CompanionStruct_Default___) TokenAllowsBeacon(t Token) bool { + return !(((t).Is_AttributeType()) || ((t).Is_Size())) +} +func (_static *CompanionStruct_Default___) BeaconizeParsedExpr(b m_SearchableEncryptionInfo.BeaconVersion, expr _dafny.Sequence, pos _dafny.Int, oldValues _dafny.Map, names m_Wrappers.Option, keys m_DynamoDbEncryptionUtil.MaybeKeyMap, newValues _dafny.Map, acc _dafny.Sequence) m_Wrappers.Result { + goto TAIL_CALL_START +TAIL_CALL_START: + if (pos).Cmp(_dafny.IntOfUint32((expr).Cardinality())) == 0 { + return m_Wrappers.Companion_Result_.Create_Success_(Companion_ParsedContext_.Create_ParsedContext_(acc, newValues, names)) + } else if ((expr).Select((pos).Uint32()).(Token)).Is_Attr() { + var _0_isIndirectName bool = _dafny.Companion_Sequence_.IsPrefixOf(_dafny.SeqOfString("#"), ((expr).Select((pos).Uint32()).(Token)).Dtor_s()) + _ = _0_isIndirectName + var _1_valueOrError0 m_Wrappers.Outcome = m_Wrappers.Companion_Default___.Need((!(_0_isIndirectName)) || (((names).Is_Some()) && (((names).Dtor_value().(_dafny.Map)).Contains(((expr).Select((pos).Uint32()).(Token)).Dtor_s()))), m_DynamoDbEncryptionUtil.Companion_Default___.E(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("Name "), ((expr).Select((pos).Uint32()).(Token)).Dtor_s()), _dafny.SeqOfString(" not in ExpressionAttributeNameMap.")))) + _ = _1_valueOrError0 + if (_1_valueOrError0).IsFailure() { + return (_1_valueOrError0).PropagateFailure() + } else { + var _2_oldName _dafny.Sequence = (func() _dafny.Sequence { + if _0_isIndirectName { + return ((names).Dtor_value().(_dafny.Map)).Get(((expr).Select((pos).Uint32()).(Token)).Dtor_s()).(_dafny.Sequence) + } + return ((expr).Select((pos).Uint32()).(Token)).Dtor_s() + })() + _ = _2_oldName + var _3_exclude bool = ((keys).Is_DontUseKeys()) && (!(Companion_Default___.IsAllowedOnBeaconPred(expr, pos))) + _ = _3_exclude + if ((b).IsBeacon(_2_oldName)) && (!(_3_exclude)) { + var _4_valueOrError1 m_Wrappers.Result = Companion_Default___.IsAllowedOnBeacon(expr, pos, _2_oldName) + _ = _4_valueOrError1 + if (_4_valueOrError1).IsFailure() { + return (_4_valueOrError1).PropagateFailure() + } else { + var _5___v4 bool = (_4_valueOrError1).Extract().(bool) + _ = _5___v4 + if Companion_Default___.OpNeedsBeacon(expr, pos) { + var _6_newName _dafny.Sequence = (((b).Dtor_beacons()).Get(_2_oldName).(m_SearchableEncryptionInfo.Beacon)).GetBeaconName() + _ = _6_newName + if _0_isIndirectName { + var _in0 m_SearchableEncryptionInfo.BeaconVersion = b + _ = _in0 + var _in1 _dafny.Sequence = expr + _ = _in1 + var _in2 _dafny.Int = (pos).Plus(_dafny.One) + _ = _in2 + var _in3 _dafny.Map = oldValues + _ = _in3 + var _in4 m_Wrappers.Option = m_Wrappers.Companion_Option_.Create_Some_(((names).Dtor_value().(_dafny.Map)).Update(((expr).Select((pos).Uint32()).(Token)).Dtor_s(), _6_newName)) + _ = _in4 + var _in5 m_DynamoDbEncryptionUtil.MaybeKeyMap = keys + _ = _in5 + var _in6 _dafny.Map = newValues + _ = _in6 + var _in7 _dafny.Sequence = _dafny.Companion_Sequence_.Concatenate(acc, _dafny.SeqOf((expr).Select((pos).Uint32()).(Token))) + _ = _in7 + b = _in0 + expr = _in1 + pos = _in2 + oldValues = _in3 + names = _in4 + keys = _in5 + newValues = _in6 + acc = _in7 + goto TAIL_CALL_START + } else { + var _in8 m_SearchableEncryptionInfo.BeaconVersion = b + _ = _in8 + var _in9 _dafny.Sequence = expr + _ = _in9 + var _in10 _dafny.Int = (pos).Plus(_dafny.One) + _ = _in10 + var _in11 _dafny.Map = oldValues + _ = _in11 + var _in12 m_Wrappers.Option = names + _ = _in12 + var _in13 m_DynamoDbEncryptionUtil.MaybeKeyMap = keys + _ = _in13 + var _in14 _dafny.Map = newValues + _ = _in14 + var _in15 _dafny.Sequence = _dafny.Companion_Sequence_.Concatenate(acc, _dafny.SeqOf(Companion_Token_.Create_Attr_(_6_newName, m_TermLoc.Companion_Default___.TermLocMap(_6_newName)))) + _ = _in15 + b = _in8 + expr = _in9 + pos = _in10 + oldValues = _in11 + names = _in12 + keys = _in13 + newValues = _in14 + acc = _in15 + goto TAIL_CALL_START + } + } else { + var _in16 m_SearchableEncryptionInfo.BeaconVersion = b + _ = _in16 + var _in17 _dafny.Sequence = expr + _ = _in17 + var _in18 _dafny.Int = (pos).Plus(_dafny.One) + _ = _in18 + var _in19 _dafny.Map = oldValues + _ = _in19 + var _in20 m_Wrappers.Option = names + _ = _in20 + var _in21 m_DynamoDbEncryptionUtil.MaybeKeyMap = keys + _ = _in21 + var _in22 _dafny.Map = newValues + _ = _in22 + var _in23 _dafny.Sequence = _dafny.Companion_Sequence_.Concatenate(acc, _dafny.SeqOf((expr).Select((pos).Uint32()).(Token))) + _ = _in23 + b = _in16 + expr = _in17 + pos = _in18 + oldValues = _in19 + names = _in20 + keys = _in21 + newValues = _in22 + acc = _in23 + goto TAIL_CALL_START + } + } + } else { + var _in24 m_SearchableEncryptionInfo.BeaconVersion = b + _ = _in24 + var _in25 _dafny.Sequence = expr + _ = _in25 + var _in26 _dafny.Int = (pos).Plus(_dafny.One) + _ = _in26 + var _in27 _dafny.Map = oldValues + _ = _in27 + var _in28 m_Wrappers.Option = names + _ = _in28 + var _in29 m_DynamoDbEncryptionUtil.MaybeKeyMap = keys + _ = _in29 + var _in30 _dafny.Map = newValues + _ = _in30 + var _in31 _dafny.Sequence = _dafny.Companion_Sequence_.Concatenate(acc, _dafny.SeqOf((expr).Select((pos).Uint32()).(Token))) + _ = _in31 + b = _in24 + expr = _in25 + pos = _in26 + oldValues = _in27 + names = _in28 + keys = _in29 + newValues = _in30 + acc = _in31 + goto TAIL_CALL_START + } + } + } else if ((expr).Select((pos).Uint32()).(Token)).Is_Value() { + var _7_name _dafny.Sequence = ((expr).Select((pos).Uint32()).(Token)).Dtor_s() + _ = _7_name + var _8_valueOrError2 m_Wrappers.Outcome = m_Wrappers.Companion_Default___.Need((oldValues).Contains(_7_name), m_DynamoDbEncryptionUtil.Companion_Default___.E(_dafny.Companion_Sequence_.Concatenate(_7_name, _dafny.SeqOfString(" not found in ExpressionAttributeValueMap")))) + _ = _8_valueOrError2 + if (_8_valueOrError2).IsFailure() { + return (_8_valueOrError2).PropagateFailure() + } else { + var _9_oldValue m_ComAmazonawsDynamodbTypes.AttributeValue = (oldValues).Get(_7_name).(m_ComAmazonawsDynamodbTypes.AttributeValue) + _ = _9_oldValue + var _10_valueOrError3 m_Wrappers.Result = Companion_Default___.BeaconForValue(b, expr, pos, names, oldValues) + _ = _10_valueOrError3 + if (_10_valueOrError3).IsFailure() { + return (_10_valueOrError3).PropagateFailure() + } else { + var _11_eb EqualityBeacon = (_10_valueOrError3).Extract().(EqualityBeacon) + _ = _11_eb + var _12_valueOrError4 m_Wrappers.Result = (func() m_Wrappers.Result { + if ((_11_eb).Dtor_beacon()).Is_None() { + return m_Wrappers.Companion_Result_.Create_Success_(_9_oldValue) + } + return (((_11_eb).Dtor_beacon()).Dtor_value().(m_SearchableEncryptionInfo.Beacon)).GetBeaconValue(_9_oldValue, keys, (_11_eb).Dtor_forEquality(), (_11_eb).Dtor_forContains()) + })() + _ = _12_valueOrError4 + if (_12_valueOrError4).IsFailure() { + return (_12_valueOrError4).PropagateFailure() + } else { + var _13_newValue m_ComAmazonawsDynamodbTypes.AttributeValue = (_12_valueOrError4).Extract().(m_ComAmazonawsDynamodbTypes.AttributeValue) + _ = _13_newValue + var _14_valueOrError5 m_Wrappers.Outcome = m_Wrappers.Companion_Default___.Need((!(newValues).Contains(_7_name)) || (((newValues).Get(_7_name).(m_ComAmazonawsDynamodbTypes.AttributeValue)).Equals(_13_newValue)), m_DynamoDbEncryptionUtil.Companion_Default___.E(_dafny.Companion_Sequence_.Concatenate(_7_name, _dafny.SeqOfString(" used in two different contexts, which is not allowed.")))) + _ = _14_valueOrError5 + if (_14_valueOrError5).IsFailure() { + return (_14_valueOrError5).PropagateFailure() + } else { + var _in32 m_SearchableEncryptionInfo.BeaconVersion = b + _ = _in32 + var _in33 _dafny.Sequence = expr + _ = _in33 + var _in34 _dafny.Int = (pos).Plus(_dafny.One) + _ = _in34 + var _in35 _dafny.Map = oldValues + _ = _in35 + var _in36 m_Wrappers.Option = names + _ = _in36 + var _in37 m_DynamoDbEncryptionUtil.MaybeKeyMap = keys + _ = _in37 + var _in38 _dafny.Map = (newValues).Update(_7_name, _13_newValue) + _ = _in38 + var _in39 _dafny.Sequence = _dafny.Companion_Sequence_.Concatenate(acc, _dafny.SeqOf((expr).Select((pos).Uint32()).(Token))) + _ = _in39 + b = _in32 + expr = _in33 + pos = _in34 + oldValues = _in35 + names = _in36 + keys = _in37 + newValues = _in38 + acc = _in39 + goto TAIL_CALL_START + } + } + } + } + } else { + var _in40 m_SearchableEncryptionInfo.BeaconVersion = b + _ = _in40 + var _in41 _dafny.Sequence = expr + _ = _in41 + var _in42 _dafny.Int = (pos).Plus(_dafny.One) + _ = _in42 + var _in43 _dafny.Map = oldValues + _ = _in43 + var _in44 m_Wrappers.Option = names + _ = _in44 + var _in45 m_DynamoDbEncryptionUtil.MaybeKeyMap = keys + _ = _in45 + var _in46 _dafny.Map = newValues + _ = _in46 + var _in47 _dafny.Sequence = _dafny.Companion_Sequence_.Concatenate(acc, _dafny.SeqOf((expr).Select((pos).Uint32()).(Token))) + _ = _in47 + b = _in40 + expr = _in41 + pos = _in42 + oldValues = _in43 + names = _in44 + keys = _in45 + newValues = _in46 + acc = _in47 + goto TAIL_CALL_START + } +} +func (_static *CompanionStruct_Default___) ParsedExprToString(t _dafny.Sequence) _dafny.Sequence { + var _0_x _dafny.Sequence = m_Seq.Companion_Default___.Map(func(coer113 func(Token) _dafny.Sequence) func(interface{}) interface{} { + return func(arg142 interface{}) interface{} { + return coer113(arg142.(Token)) + } + }(func(_1_x Token) _dafny.Sequence { + return Companion_Default___.TokenToString(_1_x) + }), t) + _ = _0_x + if (_dafny.IntOfUint32((_0_x).Cardinality())).Sign() == 0 { + return _dafny.SeqOfString("") + } else { + return m_StandardLibrary.Companion_Default___.Join(_0_x, _dafny.SeqOfString(" ")) + } +} +func (_static *CompanionStruct_Default___) IsUnary(t Token) bool { + var _source0 Token = t + _ = _source0 + { + if _source0.Is_Not() { + return true + } + } + { + return false + } +} +func (_static *CompanionStruct_Default___) IsComp(t Token) bool { + var _source0 Token = t + _ = _source0 + { + var disjunctiveMatch0 bool = false + _ = disjunctiveMatch0 + if _source0.Is_Eq() { + disjunctiveMatch0 = true + } + if _source0.Is_Ne() { + disjunctiveMatch0 = true + } + if _source0.Is_Lt() { + disjunctiveMatch0 = true + } + if _source0.Is_Gt() { + disjunctiveMatch0 = true + } + if _source0.Is_Le() { + disjunctiveMatch0 = true + } + if _source0.Is_Ge() { + disjunctiveMatch0 = true + } + if disjunctiveMatch0 { + return true + } + } + { + return false + } +} +func (_static *CompanionStruct_Default___) IsBinaryBool(t Token) bool { + var _source0 Token = t + _ = _source0 + { + var disjunctiveMatch0 bool = false + _ = disjunctiveMatch0 + if _source0.Is_And() { + disjunctiveMatch0 = true + } + if _source0.Is_Or() { + disjunctiveMatch0 = true + } + if disjunctiveMatch0 { + return true + } + } + { + return false + } +} +func (_static *CompanionStruct_Default___) IsBinary(t Token) bool { + return (Companion_Default___.IsComp(t)) || (Companion_Default___.IsBinaryBool(t)) +} +func (_static *CompanionStruct_Default___) IsVar(t Token) bool { + var _source0 Token = t + _ = _source0 + { + if _source0.Is_Value() { + var _0_s _dafny.Sequence = _source0.Get_().(Token_Value).S + _ = _0_s + return true + } + } + { + if _source0.Is_Attr() { + var _1_s _dafny.Sequence = _source0.Get_().(Token_Attr).S + _ = _1_s + var _2_loc _dafny.Sequence = _source0.Get_().(Token_Attr).Loc + _ = _2_loc + return true + } + } + { + return false + } +} +func (_static *CompanionStruct_Default___) IsFunction(t Token) bool { + var _source0 Token = t + _ = _source0 + { + var disjunctiveMatch0 bool = false + _ = disjunctiveMatch0 + if _source0.Is_Between() { + disjunctiveMatch0 = true + } + if _source0.Is_In() { + disjunctiveMatch0 = true + } + if _source0.Is_AttributeExists() { + disjunctiveMatch0 = true + } + if _source0.Is_AttributeNotExists() { + disjunctiveMatch0 = true + } + if _source0.Is_AttributeType() { + disjunctiveMatch0 = true + } + if _source0.Is_BeginsWith() { + disjunctiveMatch0 = true + } + if _source0.Is_Contains() { + disjunctiveMatch0 = true + } + if _source0.Is_Size() { + disjunctiveMatch0 = true + } + if disjunctiveMatch0 { + return true + } + } + { + return false + } +} +func (_static *CompanionStruct_Default___) Precedence(t Token) _dafny.Int { + var _source0 Token = t + _ = _source0 + { + if _source0.Is_Open() { + return _dafny.IntOfInt64(11) + } + } + { + if _source0.Is_Close() { + return _dafny.IntOfInt64(11) + } + } + { + if _source0.Is_Comma() { + return _dafny.IntOfInt64(11) + } + } + { + if _source0.Is_Attr() { + var _0_s _dafny.Sequence = _source0.Get_().(Token_Attr).S + _ = _0_s + var _1_loc _dafny.Sequence = _source0.Get_().(Token_Attr).Loc + _ = _1_loc + return _dafny.IntOfInt64(10) + } + } + { + if _source0.Is_Value() { + var _2_s _dafny.Sequence = _source0.Get_().(Token_Value).S + _ = _2_s + return _dafny.IntOfInt64(10) + } + } + { + if _source0.Is_Eq() { + return _dafny.IntOfInt64(9) + } + } + { + if _source0.Is_Ne() { + return _dafny.IntOfInt64(9) + } + } + { + if _source0.Is_Lt() { + return _dafny.IntOfInt64(9) + } + } + { + if _source0.Is_Gt() { + return _dafny.IntOfInt64(9) + } + } + { + if _source0.Is_Le() { + return _dafny.IntOfInt64(9) + } + } + { + if _source0.Is_Ge() { + return _dafny.IntOfInt64(9) + } + } + { + if _source0.Is_In() { + return _dafny.IntOfInt64(8) + } + } + { + if _source0.Is_Between() { + return _dafny.IntOfInt64(7) + } + } + { + if _source0.Is_AttributeExists() { + return _dafny.IntOfInt64(6) + } + } + { + if _source0.Is_AttributeNotExists() { + return _dafny.IntOfInt64(6) + } + } + { + if _source0.Is_AttributeType() { + return _dafny.IntOfInt64(6) + } + } + { + if _source0.Is_BeginsWith() { + return _dafny.IntOfInt64(6) + } + } + { + if _source0.Is_Contains() { + return _dafny.IntOfInt64(6) + } + } + { + if _source0.Is_Size() { + return _dafny.IntOfInt64(6) + } + } + { + if _source0.Is_Not() { + return _dafny.IntOfInt64(5) + } + } + { + if _source0.Is_And() { + return _dafny.IntOfInt64(4) + } + } + { + return _dafny.IntOfInt64(3) + } +} +func (_static *CompanionStruct_Default___) ParseExpr(s _dafny.Sequence, pos uint64) _dafny.Sequence { + var _0___accumulator _dafny.Sequence = _dafny.SeqOf() + _ = _0___accumulator + goto TAIL_CALL_START +TAIL_CALL_START: + var _1_tup _dafny.Tuple = Companion_Default___.FindIndexToken(s, pos) + _ = _1_tup + if (uint64(0)) < ((*(_1_tup).IndexInt(0)).(uint64)) { + _0___accumulator = _dafny.Companion_Sequence_.Concatenate(_0___accumulator, _dafny.SeqOf((*(_1_tup).IndexInt(1)).(Token))) + var _in0 _dafny.Sequence = s + _ = _in0 + var _in1 uint64 = m_StandardLibrary_MemoryMath.Companion_Default___.Add(pos, (*(_1_tup).IndexInt(0)).(uint64)) + _ = _in1 + s = _in0 + pos = _in1 + goto TAIL_CALL_START + } else { + return _dafny.Companion_Sequence_.Concatenate(_0___accumulator, _dafny.SeqOf()) + } +} +func (_static *CompanionStruct_Default___) ByteLower(ch uint8) uint8 { + if ((uint8(_dafny.Char('A'))) <= (ch)) && ((ch) <= (uint8(_dafny.Char('Z')))) { + return ((ch) - (func() uint8 { return (uint8(_dafny.Char('A'))) })()) + (uint8(_dafny.Char('a'))) + } else { + return ch + } +} +func (_static *CompanionStruct_Default___) CharLower(ch _dafny.Char) _dafny.Char { + if ((_dafny.Char('A')) <= (ch)) && ((ch) <= (_dafny.Char('Z'))) { + return ((ch) - (_dafny.Char('A'))) + (_dafny.Char('a')) + } else { + return ch + } +} +func (_static *CompanionStruct_Default___) EqualLower(pre _dafny.Sequence, s _dafny.Sequence, pos uint64, diff uint64) bool { + goto TAIL_CALL_START +TAIL_CALL_START: + if (uint64((pre).Cardinality())) == (pos) { + return true + } else if ((pre).Select(uint32(pos)).(_dafny.Char)) != (Companion_Default___.CharLower((s).Select(uint32((pos) + (diff))).(_dafny.Char))) /* dircomp */ { + return false + } else { + var _in0 _dafny.Sequence = pre + _ = _in0 + var _in1 _dafny.Sequence = s + _ = _in1 + var _in2 uint64 = m_StandardLibrary_MemoryMath.Companion_Default___.Add(pos, uint64(1)) + _ = _in2 + var _in3 uint64 = diff + _ = _in3 + pre = _in0 + s = _in1 + pos = _in2 + diff = _in3 + goto TAIL_CALL_START + } +} +func (_static *CompanionStruct_Default___) PrefixLower(pre _dafny.Sequence, s _dafny.Sequence, pos uint64) bool { + if (m_StandardLibrary_MemoryMath.Companion_Default___.Add(pos, uint64((pre).Cardinality()))) > (uint64((s).Cardinality())) { + return false + } else { + return Companion_Default___.EqualLower(pre, s, uint64(0), pos) + } +} +func (_static *CompanionStruct_Default___) ValueChar(ch _dafny.Char) bool { + if ((_dafny.Char('a')) <= (ch)) && ((ch) <= (_dafny.Char('z'))) { + return true + } else if ((_dafny.Char('A')) <= (ch)) && ((ch) <= (_dafny.Char('Z'))) { + return true + } else if ((_dafny.Char('0')) <= (ch)) && ((ch) <= (_dafny.Char('9'))) { + return true + } else if (ch) == (_dafny.Char('_')) { + return true + } else { + return false + } +} +func (_static *CompanionStruct_Default___) AttributeChar(ch _dafny.Char) bool { + if Companion_Default___.ValueChar(ch) { + return true + } else if _dafny.Companion_Sequence_.Contains(_dafny.SeqOfChars(_dafny.Char(':'), _dafny.Char('['), _dafny.Char(']'), _dafny.Char('.'), _dafny.Char('#')), ch) { + return true + } else { + return false + } +} +func (_static *CompanionStruct_Default___) ValueLen(s _dafny.Sequence, pos uint64) uint64 { + if (pos) == (uint64((s).Cardinality())) { + return uint64(0) + } else if Companion_Default___.ValueChar((s).Select(uint32(pos)).(_dafny.Char)) { + return m_StandardLibrary_MemoryMath.Companion_Default___.Add(Companion_Default___.ValueLen(s, m_StandardLibrary_MemoryMath.Companion_Default___.Add(pos, uint64(1))), uint64(1)) + } else { + return uint64(0) + } +} +func (_static *CompanionStruct_Default___) AttributeLen(s _dafny.Sequence, pos uint64) uint64 { + if (pos) == (uint64((s).Cardinality())) { + return uint64(0) + } else if Companion_Default___.AttributeChar((s).Select(uint32(pos)).(_dafny.Char)) { + return m_StandardLibrary_MemoryMath.Companion_Default___.Add(Companion_Default___.AttributeLen(s, m_StandardLibrary_MemoryMath.Companion_Default___.Add(pos, uint64(1))), uint64(1)) + } else { + return uint64(0) + } +} +func (_static *CompanionStruct_Default___) MakeAttr(s _dafny.Sequence) Token { + var _0_loc m_Wrappers.Result = m_TermLoc.Companion_Default___.MakeTermLoc(s) + _ = _0_loc + if (_0_loc).Is_Success() { + return Companion_Token_.Create_Attr_(s, (_0_loc).Dtor_value().(_dafny.Sequence)) + } else { + return Companion_Token_.Create_Attr_(s, m_TermLoc.Companion_Default___.TermLocMap(s)) + } +} +func (_static *CompanionStruct_Default___) FindIndexToken(s _dafny.Sequence, pos uint64) _dafny.Tuple { + if (pos) == (uint64((s).Cardinality())) { + return _dafny.TupleOf(uint64(0), Companion_Token_.Create_Close_()) + } else { + var _0_ch _dafny.Char = (s).Select(uint32(pos)).(_dafny.Char) + _ = _0_ch + var _1_remaining uint64 = (uint64((s).Cardinality())) - (func() uint64 { return (pos) })() + _ = _1_remaining + if (_0_ch) == (_dafny.Char(' ')) { + var _2_foo _dafny.Tuple = Companion_Default___.FindIndexToken(s, m_StandardLibrary_MemoryMath.Companion_Default___.Add(pos, uint64(1))) + _ = _2_foo + if ((*(_2_foo).IndexInt(0)).(uint64)) == (uint64(0)) { + return _dafny.TupleOf((*(_2_foo).IndexInt(0)).(uint64), (*(_2_foo).IndexInt(1)).(Token)) + } else { + return _dafny.TupleOf(m_StandardLibrary_MemoryMath.Companion_Default___.Add((*(_2_foo).IndexInt(0)).(uint64), uint64(1)), (*(_2_foo).IndexInt(1)).(Token)) + } + } else if (_0_ch) == (_dafny.Char('(')) { + return _dafny.TupleOf(uint64(1), Companion_Token_.Create_Open_()) + } else if (_0_ch) == (_dafny.Char(')')) { + return _dafny.TupleOf(uint64(1), Companion_Token_.Create_Close_()) + } else if (_0_ch) == (_dafny.Char(',')) { + return _dafny.TupleOf(uint64(1), Companion_Token_.Create_Comma_()) + } else if (_0_ch) == (_dafny.Char('=')) { + return _dafny.TupleOf(uint64(1), Companion_Token_.Create_Eq_()) + } else if (_0_ch) == (_dafny.Char('<')) { + if (_1_remaining) == (uint64(1)) { + return _dafny.TupleOf(uint64(1), Companion_Token_.Create_Lt_()) + } else if ((s).Select(uint32((pos) + (uint64(1)))).(_dafny.Char)) == (_dafny.Char('=')) { + return _dafny.TupleOf(uint64(2), Companion_Token_.Create_Le_()) + } else if ((s).Select(uint32((pos) + (uint64(1)))).(_dafny.Char)) == (_dafny.Char('>')) { + return _dafny.TupleOf(uint64(2), Companion_Token_.Create_Ne_()) + } else { + return _dafny.TupleOf(uint64(1), Companion_Token_.Create_Lt_()) + } + } else if (_0_ch) == (_dafny.Char('>')) { + if (_1_remaining) == (uint64(1)) { + return _dafny.TupleOf(uint64(1), Companion_Token_.Create_Gt_()) + } else if ((s).Select(uint32((pos) + (uint64(1)))).(_dafny.Char)) == (_dafny.Char('=')) { + return _dafny.TupleOf(uint64(2), Companion_Token_.Create_Ge_()) + } else { + return _dafny.TupleOf(uint64(1), Companion_Token_.Create_Gt_()) + } + } else if Companion_Default___.PrefixLower(_dafny.SeqOfString("in"), s, pos) { + return _dafny.TupleOf(uint64(2), Companion_Token_.Create_In_()) + } else if Companion_Default___.PrefixLower(_dafny.SeqOfString("between"), s, pos) { + return _dafny.TupleOf(uint64(7), Companion_Token_.Create_Between_()) + } else if Companion_Default___.PrefixLower(_dafny.SeqOfString("and"), s, pos) { + return _dafny.TupleOf(uint64(3), Companion_Token_.Create_And_()) + } else if Companion_Default___.PrefixLower(_dafny.SeqOfString("or"), s, pos) { + return _dafny.TupleOf(uint64(2), Companion_Token_.Create_Or_()) + } else if Companion_Default___.PrefixLower(_dafny.SeqOfString("not"), s, pos) { + return _dafny.TupleOf(uint64(3), Companion_Token_.Create_Not_()) + } else if Companion_Default___.PrefixLower(_dafny.SeqOfString("attribute_not_exists"), s, pos) { + return _dafny.TupleOf(uint64(20), Companion_Token_.Create_AttributeNotExists_()) + } else if Companion_Default___.PrefixLower(_dafny.SeqOfString("attribute_type"), s, pos) { + return _dafny.TupleOf(uint64(14), Companion_Token_.Create_AttributeType_()) + } else if Companion_Default___.PrefixLower(_dafny.SeqOfString("begins_with"), s, pos) { + return _dafny.TupleOf(uint64(11), Companion_Token_.Create_BeginsWith_()) + } else if Companion_Default___.PrefixLower(_dafny.SeqOfString("attribute_exists"), s, pos) { + return _dafny.TupleOf(uint64(16), Companion_Token_.Create_AttributeExists_()) + } else if Companion_Default___.PrefixLower(_dafny.SeqOfString("contains"), s, pos) { + return _dafny.TupleOf(uint64(8), Companion_Token_.Create_Contains_()) + } else if Companion_Default___.PrefixLower(_dafny.SeqOfString("size"), s, pos) { + return _dafny.TupleOf(uint64(4), Companion_Token_.Create_Size_()) + } else if (_0_ch) == (_dafny.Char(':')) { + var _3_x uint64 = m_StandardLibrary_MemoryMath.Companion_Default___.Add(Companion_Default___.ValueLen(s, m_StandardLibrary_MemoryMath.Companion_Default___.Add(pos, uint64(1))), uint64(1)) + _ = _3_x + return _dafny.TupleOf(_3_x, Companion_Token_.Create_Value_((s).Subsequence(uint32(pos), uint32((pos)+(_3_x))))) + } else if (_0_ch) == (_dafny.Char('#')) { + var _4_x uint64 = m_StandardLibrary_MemoryMath.Companion_Default___.Add(Companion_Default___.ValueLen(s, m_StandardLibrary_MemoryMath.Companion_Default___.Add(pos, uint64(1))), uint64(1)) + _ = _4_x + return _dafny.TupleOf(_4_x, Companion_Default___.MakeAttr((s).Subsequence(uint32(pos), uint32((pos)+(_4_x))))) + } else { + var _5_x uint64 = Companion_Default___.AttributeLen(s, pos) + _ = _5_x + return _dafny.TupleOf(_5_x, Companion_Default___.MakeAttr((s).Subsequence(uint32(pos), uint32((pos)+(_5_x))))) + } + } +} +func (_static *CompanionStruct_Default___) VarOrSize(input _dafny.Sequence, pos uint64) uint64 { + if (uint64((input).Cardinality())) == (pos) { + return uint64(0) + } else if (((input).Select(uint32(pos)).(Token)).Is_Value()) || (((input).Select(uint32(pos)).(Token)).Is_Attr()) { + return uint64(1) + } else if (((((m_StandardLibrary_MemoryMath.Companion_Default___.Add(uint64(3), pos)) < (uint64((input).Cardinality()))) && (((input).Select(uint32(pos)).(Token)).Is_Size())) && (((input).Select(uint32((pos) + (uint64(1)))).(Token)).Is_Open())) && (Companion_Default___.IsVar((input).Select(uint32((pos) + (uint64(2)))).(Token)))) && (((input).Select(uint32((pos) + (uint64(3)))).(Token)).Is_Close()) { + return uint64(4) + } else { + return uint64(0) + } +} +func (_static *CompanionStruct_Default___) IsBetween(input _dafny.Sequence, pos uint64) m_Wrappers.Option { + var _0_input__size uint64 = uint64((input).Cardinality()) + _ = _0_input__size + if (_0_input__size) < (m_StandardLibrary_MemoryMath.Companion_Default___.Add(pos, uint64(5))) { + return m_Wrappers.Companion_Option_.Create_None_() + } else { + var _1_p1 uint64 = Companion_Default___.VarOrSize(input, pos) + _ = _1_p1 + if (((uint64(0)) < (_1_p1)) && ((m_StandardLibrary_MemoryMath.Companion_Default___.Add((pos)+(_1_p1), uint64(1))) < (_0_input__size))) && (((input).Select(uint32((pos) + (_1_p1))).(Token)).Is_Between()) { + var _2_p2 uint64 = Companion_Default___.VarOrSize(input, ((pos)+(_1_p1))+(uint64(1))) + _ = _2_p2 + if (((uint64(0)) < (_2_p2)) && ((m_StandardLibrary_MemoryMath.Companion_Default___.Add(((pos)+(_1_p1))+(_2_p2), uint64(2))) < (_0_input__size))) && (((input).Select(uint32((((pos) + (_1_p1)) + (_2_p2)) + (uint64(1)))).(Token)).Is_And()) { + var _3_p3 uint64 = Companion_Default___.VarOrSize(input, (((pos)+(_1_p1))+(_2_p2))+(uint64(2))) + _ = _3_p3 + if (uint64(0)) < (_3_p3) { + return m_Wrappers.Companion_Option_.Create_Some_(_dafny.TupleOf(_1_p1, _2_p2, _3_p3)) + } else { + return m_Wrappers.Companion_Option_.Create_None_() + } + } else { + return m_Wrappers.Companion_Option_.Create_None_() + } + } else { + return m_Wrappers.Companion_Option_.Create_None_() + } + } +} +func (_static *CompanionStruct_Default___) IsIN(input _dafny.Sequence, pos uint64) bool { + if (uint64((input).Cardinality())) < (m_StandardLibrary_MemoryMath.Companion_Default___.Add(pos, uint64(3))) { + return false + } else if !(Companion_Default___.IsVar((input).Select(uint32(pos)).(Token))) { + return false + } else if !((input).Select(uint32((pos) + (uint64(1)))).(Token)).Equals(Companion_Token_.Create_In_()) { + return false + } else if !((input).Select(uint32((pos) + (uint64(2)))).(Token)).Equals(Companion_Token_.Create_Open_()) { + return false + } else { + return true + } +} +func (_static *CompanionStruct_Default___) ConvertToPrefix(input _dafny.Sequence, pos uint64) _dafny.Sequence { + var _0___accumulator _dafny.Sequence = _dafny.SeqOf() + _ = _0___accumulator + goto TAIL_CALL_START +TAIL_CALL_START: + if (uint64((input).Cardinality())) < (m_StandardLibrary_MemoryMath.Companion_Default___.Add(pos, uint64(5))) { + return _dafny.Companion_Sequence_.Concatenate(_0___accumulator, (input).Drop(uint32(pos))) + } else if Companion_Default___.IsIN(input, pos) { + _0___accumulator = _dafny.Companion_Sequence_.Concatenate(_0___accumulator, _dafny.SeqOf((input).Select(uint32((pos)+(uint64(1)))).(Token), (input).Select(uint32((pos)+(uint64(2)))).(Token), (input).Select(uint32(pos)).(Token), Companion_Token_.Create_Comma_())) + var _in0 _dafny.Sequence = input + _ = _in0 + var _in1 uint64 = (pos) + (uint64(3)) + _ = _in1 + input = _in0 + pos = _in1 + goto TAIL_CALL_START + } else { + var _1_between m_Wrappers.Option = Companion_Default___.IsBetween(input, pos) + _ = _1_between + if (_1_between).Is_Some() { + var _2_b _dafny.Tuple = (_1_between).Dtor_value().(_dafny.Tuple) + _ = _2_b + _0___accumulator = _dafny.Companion_Sequence_.Concatenate(_0___accumulator, _dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.SeqOf(Companion_Token_.Create_Between_(), Companion_Token_.Create_Open_()), (input).Subsequence(uint32(pos), uint32((pos)+((*(_2_b).IndexInt(0)).(uint64))))), _dafny.SeqOf(Companion_Token_.Create_Comma_())), (input).Subsequence(uint32(((pos)+((*(_2_b).IndexInt(0)).(uint64)))+(uint64(1))), uint32((((pos)+((*(_2_b).IndexInt(0)).(uint64)))+((*(_2_b).IndexInt(1)).(uint64)))+(uint64(1))))), _dafny.SeqOf(Companion_Token_.Create_Comma_())), (input).Subsequence(uint32((((pos)+((*(_2_b).IndexInt(0)).(uint64)))+((*(_2_b).IndexInt(1)).(uint64)))+(uint64(2))), uint32(((((pos)+((*(_2_b).IndexInt(0)).(uint64)))+((*(_2_b).IndexInt(1)).(uint64)))+((*(_2_b).IndexInt(2)).(uint64)))+(uint64(2))))), _dafny.SeqOf(Companion_Token_.Create_Close_()))) + var _in2 _dafny.Sequence = input + _ = _in2 + var _in3 uint64 = ((((pos) + ((*(_2_b).IndexInt(0)).(uint64))) + ((*(_2_b).IndexInt(1)).(uint64))) + ((*(_2_b).IndexInt(2)).(uint64))) + (uint64(2)) + _ = _in3 + input = _in2 + pos = _in3 + goto TAIL_CALL_START + } else { + _0___accumulator = _dafny.Companion_Sequence_.Concatenate(_0___accumulator, _dafny.SeqOf((input).Select(uint32(pos)).(Token))) + var _in4 _dafny.Sequence = input + _ = _in4 + var _in5 uint64 = (pos) + (uint64(1)) + _ = _in5 + input = _in4 + pos = _in5 + goto TAIL_CALL_START + } + } +} +func (_static *CompanionStruct_Default___) ConvertToRpn(input _dafny.Sequence) _dafny.Sequence { + var _0_stack _dafny.Sequence = _dafny.SeqOf() + _ = _0_stack + return Companion_Default___.ConvertToRpn__inner(input, _0_stack, uint64(0)) +} +func (_static *CompanionStruct_Default___) ConvertToRpn__inner(input _dafny.Sequence, stack _dafny.Sequence, pos uint64) _dafny.Sequence { + var _0___accumulator _dafny.Sequence = _dafny.SeqOf() + _ = _0___accumulator + goto TAIL_CALL_START +TAIL_CALL_START: + if (pos) == (uint64((input).Cardinality())) { + if (_dafny.IntOfUint32((stack).Cardinality())).Sign() == 0 { + return _dafny.Companion_Sequence_.Concatenate(_0___accumulator, _dafny.SeqOf()) + } else { + _0___accumulator = _dafny.Companion_Sequence_.Concatenate(_0___accumulator, _dafny.SeqOf((stack).Select(((_dafny.IntOfUint32((stack).Cardinality())).Minus(_dafny.One)).Uint32()).(Token))) + var _in0 _dafny.Sequence = input + _ = _in0 + var _in1 _dafny.Sequence = (stack).Take(((_dafny.IntOfUint32((stack).Cardinality())).Minus(_dafny.One)).Uint32()) + _ = _in1 + var _in2 uint64 = pos + _ = _in2 + input = _in0 + stack = _in1 + pos = _in2 + goto TAIL_CALL_START + } + } else { + var _source0 Token = (input).Select(uint32(pos)).(Token) + _ = _source0 + { + if _source0.Is_Attr() { + var _1_s _dafny.Sequence = _source0.Get_().(Token_Attr).S + _ = _1_s + var _2_loc _dafny.Sequence = _source0.Get_().(Token_Attr).Loc + _ = _2_loc + return _dafny.Companion_Sequence_.Concatenate(_dafny.SeqOf((input).Select(uint32(pos)).(Token)), Companion_Default___.ConvertToRpn__inner(input, stack, (pos)+(uint64(1)))) + } + } + { + if _source0.Is_Value() { + var _3_s _dafny.Sequence = _source0.Get_().(Token_Value).S + _ = _3_s + return _dafny.Companion_Sequence_.Concatenate(_dafny.SeqOf((input).Select(uint32(pos)).(Token)), Companion_Default___.ConvertToRpn__inner(input, stack, (pos)+(uint64(1)))) + } + } + { + var disjunctiveMatch0 bool = false + _ = disjunctiveMatch0 + if _source0.Is_Between() { + disjunctiveMatch0 = true + } + if _source0.Is_In() { + disjunctiveMatch0 = true + } + if _source0.Is_Not() { + disjunctiveMatch0 = true + } + if _source0.Is_AttributeExists() { + disjunctiveMatch0 = true + } + if _source0.Is_AttributeNotExists() { + disjunctiveMatch0 = true + } + if _source0.Is_AttributeType() { + disjunctiveMatch0 = true + } + if _source0.Is_BeginsWith() { + disjunctiveMatch0 = true + } + if _source0.Is_Contains() { + disjunctiveMatch0 = true + } + if _source0.Is_Size() { + disjunctiveMatch0 = true + } + if disjunctiveMatch0 { + var _in3 _dafny.Sequence = input + _ = _in3 + var _in4 _dafny.Sequence = _dafny.Companion_Sequence_.Concatenate(stack, _dafny.SeqOf((input).Select(uint32(pos)).(Token))) + _ = _in4 + var _in5 uint64 = (pos) + (uint64(1)) + _ = _in5 + input = _in3 + stack = _in4 + pos = _in5 + goto TAIL_CALL_START + } + } + { + if _source0.Is_Comma() { + if (_dafny.IntOfUint32((stack).Cardinality())).Sign() == 1 { + if Companion_Default___.IsFunction((stack).Select(((_dafny.IntOfUint32((stack).Cardinality())).Minus(_dafny.One)).Uint32()).(Token)) { + var _in6 _dafny.Sequence = input + _ = _in6 + var _in7 _dafny.Sequence = stack + _ = _in7 + var _in8 uint64 = (pos) + (uint64(1)) + _ = _in8 + input = _in6 + stack = _in7 + pos = _in8 + goto TAIL_CALL_START + } else { + return _dafny.Companion_Sequence_.Concatenate(_dafny.SeqOf((stack).Select(((_dafny.IntOfUint32((stack).Cardinality())).Minus(_dafny.One)).Uint32()).(Token)), Companion_Default___.ConvertToRpn__inner(input, (stack).Take(((_dafny.IntOfUint32((stack).Cardinality())).Minus(_dafny.One)).Uint32()), (pos)+(uint64(1)))) + } + } else { + var _in9 _dafny.Sequence = input + _ = _in9 + var _in10 _dafny.Sequence = stack + _ = _in10 + var _in11 uint64 = (pos) + (uint64(1)) + _ = _in11 + input = _in9 + stack = _in10 + pos = _in11 + goto TAIL_CALL_START + } + } + } + { + if _source0.Is_Close() { + if (_dafny.IntOfUint32((stack).Cardinality())).Sign() == 0 { + var _in12 _dafny.Sequence = input + _ = _in12 + var _in13 _dafny.Sequence = stack + _ = _in13 + var _in14 uint64 = (pos) + (uint64(1)) + _ = _in14 + input = _in12 + stack = _in13 + pos = _in14 + goto TAIL_CALL_START + } else if ((stack).Select(((_dafny.IntOfUint32((stack).Cardinality())).Minus(_dafny.One)).Uint32()).(Token)).Equals(Companion_Token_.Create_Open_()) { + var _in15 _dafny.Sequence = input + _ = _in15 + var _in16 _dafny.Sequence = (stack).Take(((_dafny.IntOfUint32((stack).Cardinality())).Minus(_dafny.One)).Uint32()) + _ = _in16 + var _in17 uint64 = (pos) + (uint64(1)) + _ = _in17 + input = _in15 + stack = _in16 + pos = _in17 + goto TAIL_CALL_START + } else { + return _dafny.Companion_Sequence_.Concatenate(_dafny.SeqOf((stack).Select(((_dafny.IntOfUint32((stack).Cardinality())).Minus(_dafny.One)).Uint32()).(Token)), Companion_Default___.ConvertToRpn__inner(input, (stack).Take(((_dafny.IntOfUint32((stack).Cardinality())).Minus(_dafny.One)).Uint32()), (pos)+(uint64(1)))) + } + } + } + { + var disjunctiveMatch1 bool = false + _ = disjunctiveMatch1 + if _source0.Is_Eq() { + disjunctiveMatch1 = true + } + if _source0.Is_Ne() { + disjunctiveMatch1 = true + } + if _source0.Is_Lt() { + disjunctiveMatch1 = true + } + if _source0.Is_Gt() { + disjunctiveMatch1 = true + } + if _source0.Is_Le() { + disjunctiveMatch1 = true + } + if _source0.Is_Ge() { + disjunctiveMatch1 = true + } + if _source0.Is_And() { + disjunctiveMatch1 = true + } + if _source0.Is_Or() { + disjunctiveMatch1 = true + } + if disjunctiveMatch1 { + if (_dafny.IntOfUint32((stack).Cardinality())).Sign() == 0 { + var _in18 _dafny.Sequence = input + _ = _in18 + var _in19 _dafny.Sequence = _dafny.Companion_Sequence_.Concatenate(stack, _dafny.SeqOf((input).Select(uint32(pos)).(Token))) + _ = _in19 + var _in20 uint64 = (pos) + (uint64(1)) + _ = _in20 + input = _in18 + stack = _in19 + pos = _in20 + goto TAIL_CALL_START + } else if (Companion_Default___.Precedence((stack).Select(((_dafny.IntOfUint32((stack).Cardinality())).Minus(_dafny.One)).Uint32()).(Token))).Cmp(Companion_Default___.Precedence((input).Select(uint32(pos)).(Token))) >= 0 { + return _dafny.Companion_Sequence_.Concatenate(_dafny.SeqOf((stack).Select(((_dafny.IntOfUint32((stack).Cardinality())).Minus(_dafny.One)).Uint32()).(Token)), Companion_Default___.ConvertToRpn__inner(input, (stack).Take(((_dafny.IntOfUint32((stack).Cardinality())).Minus(_dafny.One)).Uint32()), pos)) + } else { + var _in21 _dafny.Sequence = input + _ = _in21 + var _in22 _dafny.Sequence = _dafny.Companion_Sequence_.Concatenate(stack, _dafny.SeqOf((input).Select(uint32(pos)).(Token))) + _ = _in22 + var _in23 uint64 = (pos) + (uint64(1)) + _ = _in23 + input = _in21 + stack = _in22 + pos = _in23 + goto TAIL_CALL_START + } + } + } + { + var _in24 _dafny.Sequence = input + _ = _in24 + var _in25 _dafny.Sequence = stack + _ = _in25 + var _in26 uint64 = (pos) + (uint64(1)) + _ = _in26 + input = _in24 + stack = _in25 + pos = _in26 + goto TAIL_CALL_START + } + } +} +func (_static *CompanionStruct_Default___) GetSize(value m_ComAmazonawsDynamodbTypes.AttributeValue) _dafny.Int { + var _source0 m_ComAmazonawsDynamodbTypes.AttributeValue = value + _ = _source0 + { + if _source0.Is_S() { + var _0_s _dafny.Sequence = _source0.Get_().(m_ComAmazonawsDynamodbTypes.AttributeValue_S).S + _ = _0_s + return _dafny.IntOfUint32((_0_s).Cardinality()) + } + } + { + if _source0.Is_N() { + var _1_n _dafny.Sequence = _source0.Get_().(m_ComAmazonawsDynamodbTypes.AttributeValue_N).N + _ = _1_n + return _dafny.IntOfUint32((_1_n).Cardinality()) + } + } + { + if _source0.Is_B() { + var _2_n _dafny.Sequence = _source0.Get_().(m_ComAmazonawsDynamodbTypes.AttributeValue_B).B + _ = _2_n + return _dafny.IntOfUint32((_2_n).Cardinality()) + } + } + { + if _source0.Is_SS() { + var _3_n _dafny.Sequence = _source0.Get_().(m_ComAmazonawsDynamodbTypes.AttributeValue_SS).SS + _ = _3_n + return _dafny.IntOfUint32((_3_n).Cardinality()) + } + } + { + if _source0.Is_NS() { + var _4_n _dafny.Sequence = _source0.Get_().(m_ComAmazonawsDynamodbTypes.AttributeValue_NS).NS + _ = _4_n + return _dafny.IntOfUint32((_4_n).Cardinality()) + } + } + { + if _source0.Is_BS() { + var _5_n _dafny.Sequence = _source0.Get_().(m_ComAmazonawsDynamodbTypes.AttributeValue_BS).BS + _ = _5_n + return _dafny.IntOfUint32((_5_n).Cardinality()) + } + } + { + if _source0.Is_M() { + var _6_n _dafny.Map = _source0.Get_().(m_ComAmazonawsDynamodbTypes.AttributeValue_M).M + _ = _6_n + return (_6_n).Cardinality() + } + } + { + if _source0.Is_L() { + var _7_n _dafny.Sequence = _source0.Get_().(m_ComAmazonawsDynamodbTypes.AttributeValue_L).L + _ = _7_n + return _dafny.IntOfUint32((_7_n).Cardinality()) + } + } + { + if _source0.Is_NULL() { + var _8_n bool = _source0.Get_().(m_ComAmazonawsDynamodbTypes.AttributeValue_NULL).NULL + _ = _8_n + return _dafny.One + } + } + { + var _9_n bool = _source0.Get_().(m_ComAmazonawsDynamodbTypes.AttributeValue_BOOL).BOOL + _ = _9_n + return _dafny.One + } +} +func (_static *CompanionStruct_Default___) GetStr(s StackValue) m_ComAmazonawsDynamodbTypes.AttributeValue { + var _source0 StackValue = s + _ = _source0 + { + if _source0.Is_Bool() { + var _0_b bool = _source0.Get_().(StackValue_Bool).B + _ = _0_b + return m_ComAmazonawsDynamodbTypes.Companion_AttributeValue_.Create_NULL_(true) + } + } + { + if _source0.Is_Str() { + var _1_s m_ComAmazonawsDynamodbTypes.AttributeValue = _source0.Get_().(StackValue_Str).S + _ = _1_s + return _1_s + } + } + { + return m_ComAmazonawsDynamodbTypes.Companion_AttributeValue_.Create_NULL_(true) + } +} +func (_static *CompanionStruct_Default___) AsStr(s _dafny.Sequence) StackValue { + return Companion_StackValue_.Create_Str_(m_ComAmazonawsDynamodbTypes.Companion_AttributeValue_.Create_S_(s)) +} +func (_static *CompanionStruct_Default___) StackValueFromValue(s _dafny.Sequence, values _dafny.Map) StackValue { + if (values).Contains(s) { + return Companion_StackValue_.Create_Str_((values).Get(s).(m_ComAmazonawsDynamodbTypes.AttributeValue)) + } else { + return Companion_StackValue_.Create_DoesNotExist_() + } +} +func (_static *CompanionStruct_Default___) StackValueFromItem(s _dafny.Sequence, item _dafny.Map) StackValue { + if (item).Contains(s) { + return Companion_StackValue_.Create_Str_((item).Get(s).(m_ComAmazonawsDynamodbTypes.AttributeValue)) + } else { + return Companion_StackValue_.Create_DoesNotExist_() + } +} +func (_static *CompanionStruct_Default___) StackValueFromAttr(t Token, item _dafny.Map, names m_Wrappers.Option) StackValue { + if ((names).Is_Some()) && (((names).Dtor_value().(_dafny.Map)).Contains((t).Dtor_s())) { + return Companion_Default___.StackValueFromItem(((names).Dtor_value().(_dafny.Map)).Get((t).Dtor_s()).(_dafny.Sequence), item) + } else { + var _0_attr m_Wrappers.Option = m_TermLoc.Companion_Default___.TermToAttr((t).Dtor_loc(), item, names) + _ = _0_attr + if (_0_attr).Is_Some() { + return Companion_StackValue_.Create_Str_((_0_attr).Dtor_value().(m_ComAmazonawsDynamodbTypes.AttributeValue)) + } else { + return Companion_StackValue_.Create_DoesNotExist_() + } + } +} +func (_static *CompanionStruct_Default___) GetParsedExpr(input _dafny.Sequence) m_Wrappers.Result { + var _0_seq1 _dafny.Sequence = Companion_Default___.ParseExpr(input, uint64(0)) + _ = _0_seq1 + var _1_seq2 _dafny.Sequence = Companion_Default___.ConvertToPrefix(_0_seq1, uint64(0)) + _ = _1_seq2 + return m_Wrappers.Companion_Result_.Create_Success_(Companion_Default___.ConvertToRpn(_1_seq2)) +} +func (_static *CompanionStruct_Default___) EvalExpr(input _dafny.Sequence, item _dafny.Map, names m_Wrappers.Option, values _dafny.Map) m_Wrappers.Result { + var ret m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(false) + _ = ret + var _out0 m_Wrappers.Result + _ = _out0 + _out0 = Companion_Default___.InnerEvalExpr(input, _dafny.SeqOf(), item, names, values, uint64(0)) + ret = _out0 + return ret +} +func (_static *CompanionStruct_Default___) StringsFollowing(input _dafny.Sequence) _dafny.Int { + var _0___accumulator _dafny.Int = _dafny.Zero + _ = _0___accumulator + goto TAIL_CALL_START +TAIL_CALL_START: + if (_dafny.IntOfUint32((input).Cardinality())).Sign() == 0 { + return (_dafny.Zero).Plus(_0___accumulator) + } else if !(((input).Select(((_dafny.IntOfUint32((input).Cardinality())).Minus(_dafny.One)).Uint32()).(StackValue)).Is_Str()) { + return (_dafny.Zero).Plus(_0___accumulator) + } else { + _0___accumulator = (_0___accumulator).Plus(_dafny.One) + var _in0 _dafny.Sequence = (input).Take(((_dafny.IntOfUint32((input).Cardinality())).Minus(_dafny.One)).Uint32()) + _ = _in0 + input = _in0 + goto TAIL_CALL_START + } +} +func (_static *CompanionStruct_Default___) Seq__contains(haystack _dafny.Sequence, needle _dafny.Sequence) bool { + var ret bool = false + _ = ret + var _0_result m_Wrappers.Option + _ = _0_result + var _out0 m_Wrappers.Option + _ = _out0 + _out0 = m_StandardLibrary_String.Companion_Default___.HasSubString(haystack, needle) + _0_result = _out0 + ret = (_0_result).Is_Some() + return ret + return ret +} +func (_static *CompanionStruct_Default___) Does__contain(haystack m_ComAmazonawsDynamodbTypes.AttributeValue, needle m_ComAmazonawsDynamodbTypes.AttributeValue) bool { + var ret bool = false + _ = ret + var _source0 m_ComAmazonawsDynamodbTypes.AttributeValue = haystack + _ = _source0 + { + { + if _source0.Is_S() { + var _0_s _dafny.Sequence = _source0.Get_().(m_ComAmazonawsDynamodbTypes.AttributeValue_S).S + _ = _0_s + if (needle).Is_S() { + var _out0 bool + _ = _out0 + _out0 = Companion_Default___.Seq__contains((haystack).Dtor_S(), (needle).Dtor_S()) + ret = _out0 + } else { + ret = false + return ret + } + goto Lmatch0 + } + } + { + if _source0.Is_N() { + var _1_n _dafny.Sequence = _source0.Get_().(m_ComAmazonawsDynamodbTypes.AttributeValue_N).N + _ = _1_n + if (needle).Is_N() { + var _out1 bool + _ = _out1 + _out1 = Companion_Default___.Seq__contains((haystack).Dtor_N(), (needle).Dtor_N()) + ret = _out1 + } else { + ret = false + return ret + } + goto Lmatch0 + } + } + { + if _source0.Is_B() { + var _2_n _dafny.Sequence = _source0.Get_().(m_ComAmazonawsDynamodbTypes.AttributeValue_B).B + _ = _2_n + if (needle).Is_B() { + var _out2 bool + _ = _out2 + _out2 = Companion_Default___.Seq__contains((haystack).Dtor_B(), (needle).Dtor_B()) + ret = _out2 + } else { + ret = false + return ret + } + goto Lmatch0 + } + } + { + if _source0.Is_SS() { + var _3_s _dafny.Sequence = _source0.Get_().(m_ComAmazonawsDynamodbTypes.AttributeValue_SS).SS + _ = _3_s + if (needle).Is_S() { + ret = _dafny.Companion_Sequence_.Contains((haystack).Dtor_SS(), (needle).Dtor_S()) + return ret + } else { + ret = false + return ret + } + goto Lmatch0 + } + } + { + if _source0.Is_NS() { + var _4_s _dafny.Sequence = _source0.Get_().(m_ComAmazonawsDynamodbTypes.AttributeValue_NS).NS + _ = _4_s + if (needle).Is_N() { + ret = _dafny.Companion_Sequence_.Contains((haystack).Dtor_NS(), (needle).Dtor_N()) + return ret + } else { + ret = false + return ret + } + goto Lmatch0 + } + } + { + if _source0.Is_BS() { + var _5_s _dafny.Sequence = _source0.Get_().(m_ComAmazonawsDynamodbTypes.AttributeValue_BS).BS + _ = _5_s + if (needle).Is_B() { + ret = _dafny.Companion_Sequence_.Contains((haystack).Dtor_BS(), (needle).Dtor_B()) + return ret + } else { + ret = false + return ret + } + goto Lmatch0 + } + } + { + if _source0.Is_L() { + var _6_list _dafny.Sequence = _source0.Get_().(m_ComAmazonawsDynamodbTypes.AttributeValue_L).L + _ = _6_list + ret = _dafny.Companion_Sequence_.Contains(_6_list, needle) + return ret + goto Lmatch0 + } + } + { + ret = false + return ret + } + goto Lmatch0 + } +Lmatch0: + return ret +} +func (_static *CompanionStruct_Default___) Begins__with(haystack m_ComAmazonawsDynamodbTypes.AttributeValue, needle m_ComAmazonawsDynamodbTypes.AttributeValue) bool { + var _source0 m_ComAmazonawsDynamodbTypes.AttributeValue = haystack + _ = _source0 + { + if _source0.Is_S() { + var _0_s _dafny.Sequence = _source0.Get_().(m_ComAmazonawsDynamodbTypes.AttributeValue_S).S + _ = _0_s + if (needle).Is_S() { + return _dafny.Companion_Sequence_.IsPrefixOf((needle).Dtor_S(), (haystack).Dtor_S()) + } else { + return false + } + } + } + { + if _source0.Is_N() { + var _1_n _dafny.Sequence = _source0.Get_().(m_ComAmazonawsDynamodbTypes.AttributeValue_N).N + _ = _1_n + if (needle).Is_N() { + return _dafny.Companion_Sequence_.IsPrefixOf((needle).Dtor_N(), (haystack).Dtor_N()) + } else { + return false + } + } + } + { + if _source0.Is_B() { + var _2_n _dafny.Sequence = _source0.Get_().(m_ComAmazonawsDynamodbTypes.AttributeValue_B).B + _ = _2_n + if (needle).Is_B() { + return _dafny.Companion_Sequence_.IsPrefixOf((needle).Dtor_B(), (haystack).Dtor_B()) + } else { + return false + } + } + } + { + if _source0.Is_L() { + var _3_list _dafny.Sequence = _source0.Get_().(m_ComAmazonawsDynamodbTypes.AttributeValue_L).L + _ = _3_list + if (_dafny.IntOfUint32((_3_list).Cardinality())).Sign() == 0 { + return false + } else if ((_3_list).Select(0).(m_ComAmazonawsDynamodbTypes.AttributeValue)).Equals(needle) { + return true + } else if (needle).Is_L() { + return _dafny.Companion_Sequence_.IsPrefixOf((needle).Dtor_L(), _3_list) + } else { + return false + } + } + } + { + return false + } +} +func (_static *CompanionStruct_Default___) Is__between(middle m_ComAmazonawsDynamodbTypes.AttributeValue, left m_ComAmazonawsDynamodbTypes.AttributeValue, right m_ComAmazonawsDynamodbTypes.AttributeValue) m_Wrappers.Result { + var _0_valueOrError0 m_Wrappers.Result = Companion_Default___.AttributeLE(left, middle) + _ = _0_valueOrError0 + if (_0_valueOrError0).IsFailure() { + return (_0_valueOrError0).PropagateFailure() + } else { + var _1_leftRet bool = (_0_valueOrError0).Extract().(bool) + _ = _1_leftRet + var _2_valueOrError1 m_Wrappers.Result = Companion_Default___.AttributeLE(middle, right) + _ = _2_valueOrError1 + if (_2_valueOrError1).IsFailure() { + return (_2_valueOrError1).PropagateFailure() + } else { + var _3_rightRet bool = (_2_valueOrError1).Extract().(bool) + _ = _3_rightRet + return m_Wrappers.Companion_Result_.Create_Success_((_1_leftRet) && (_3_rightRet)) + } + } +} +func (_static *CompanionStruct_Default___) Is__in(target m_ComAmazonawsDynamodbTypes.AttributeValue, list _dafny.Sequence, pos uint64) bool { + goto TAIL_CALL_START +TAIL_CALL_START: + if (uint64((list).Cardinality())) == (pos) { + return false + } else if (Companion_Default___.GetStr((list).Select(uint32(pos)).(StackValue))).Equals(target) { + return true + } else { + var _in0 m_ComAmazonawsDynamodbTypes.AttributeValue = target + _ = _in0 + var _in1 _dafny.Sequence = list + _ = _in1 + var _in2 uint64 = (pos) + (uint64(1)) + _ = _in2 + target = _in0 + list = _in1 + pos = _in2 + goto TAIL_CALL_START + } +} +func (_static *CompanionStruct_Default___) AttrToStr(attr m_ComAmazonawsDynamodbTypes.AttributeValue) _dafny.Sequence { + var _source0 m_ComAmazonawsDynamodbTypes.AttributeValue = attr + _ = _source0 + { + if _source0.Is_S() { + var _0_s _dafny.Sequence = _source0.Get_().(m_ComAmazonawsDynamodbTypes.AttributeValue_S).S + _ = _0_s + return _0_s + } + } + { + if _source0.Is_N() { + var _1_n _dafny.Sequence = _source0.Get_().(m_ComAmazonawsDynamodbTypes.AttributeValue_N).N + _ = _1_n + return _1_n + } + } + { + return _dafny.SeqOfString("") + } +} +func (_static *CompanionStruct_Default___) IsAttrType(attr StackValue, typeStr StackValue) bool { + return _dafny.Companion_Sequence_.Equal(m_DynamoDbEncryptionUtil.Companion_Default___.AttrTypeToStr(Companion_Default___.GetStr(attr)), Companion_Default___.AttrToStr(Companion_Default___.GetStr(typeStr))) +} +func (_static *CompanionStruct_Default___) Apply__function(input Token, stack _dafny.Sequence, num__args _dafny.Int) m_Wrappers.Result { + var result m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(Companion_StackValue_.Default()) + _ = result + var _source0 Token = input + _ = _source0 + { + { + if _source0.Is_Between() { + if (_dafny.IntOfUint32((stack).Cardinality())).Cmp(_dafny.IntOfInt64(3)) < 0 { + result = m_Wrappers.Companion_Result_.Create_Failure_(m_DynamoDbEncryptionUtil.Companion_Default___.E(_dafny.SeqOfString("No Stack for Between"))) + return result + } else if ((((stack).Select(((_dafny.IntOfUint32((stack).Cardinality())).Minus(_dafny.One)).Uint32()).(StackValue)).Is_Str()) && (((stack).Select(((_dafny.IntOfUint32((stack).Cardinality())).Minus(_dafny.IntOfInt64(2))).Uint32()).(StackValue)).Is_Str())) && (((stack).Select(((_dafny.IntOfUint32((stack).Cardinality())).Minus(_dafny.IntOfInt64(3))).Uint32()).(StackValue)).Is_Str()) { + var _0_valueOrError0 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(false) + _ = _0_valueOrError0 + _0_valueOrError0 = Companion_Default___.Is__between(((stack).Select(((_dafny.IntOfUint32((stack).Cardinality())).Minus(_dafny.IntOfInt64(3))).Uint32()).(StackValue)).Dtor_s(), ((stack).Select(((_dafny.IntOfUint32((stack).Cardinality())).Minus(_dafny.IntOfInt64(2))).Uint32()).(StackValue)).Dtor_s(), ((stack).Select(((_dafny.IntOfUint32((stack).Cardinality())).Minus(_dafny.One)).Uint32()).(StackValue)).Dtor_s()) + if (_0_valueOrError0).IsFailure() { + result = (_0_valueOrError0).PropagateFailure() + return result + } + var _1_ret bool + _ = _1_ret + _1_ret = (_0_valueOrError0).Extract().(bool) + result = m_Wrappers.Companion_Result_.Create_Success_(Companion_StackValue_.Create_Bool_(_1_ret)) + return result + } else { + result = m_Wrappers.Companion_Result_.Create_Failure_(m_DynamoDbEncryptionUtil.Companion_Default___.E(_dafny.SeqOfString("Wrong Types for Between"))) + return result + } + goto Lmatch0 + } + } + { + if _source0.Is_In() { + var _2_num _dafny.Int + _ = _2_num + _2_num = Companion_Default___.StringsFollowing(stack) + if (_dafny.IntOfUint32((stack).Cardinality())).Cmp(_2_num) < 0 { + result = m_Wrappers.Companion_Result_.Create_Failure_(m_DynamoDbEncryptionUtil.Companion_Default___.E(_dafny.SeqOfString("Tautology False"))) + return result + } else if (_2_num).Sign() == 0 { + result = m_Wrappers.Companion_Result_.Create_Failure_(m_DynamoDbEncryptionUtil.Companion_Default___.E(_dafny.SeqOfString("In has no args"))) + return result + } else { + result = m_Wrappers.Companion_Result_.Create_Success_(Companion_StackValue_.Create_Bool_(Companion_Default___.Is__in(Companion_Default___.GetStr((stack).Select(((_dafny.IntOfUint32((stack).Cardinality())).Minus(_2_num)).Uint32()).(StackValue)), (stack).Drop((((_dafny.IntOfUint32((stack).Cardinality())).Minus(_2_num)).Plus(_dafny.One)).Uint32()), uint64(0)))) + return result + } + goto Lmatch0 + } + } + { + if _source0.Is_AttributeExists() { + if (_dafny.IntOfUint32((stack).Cardinality())).Cmp(_dafny.One) < 0 { + result = m_Wrappers.Companion_Result_.Create_Failure_(m_DynamoDbEncryptionUtil.Companion_Default___.E(_dafny.SeqOfString("No Stack for AttributeExists"))) + return result + } else { + result = m_Wrappers.Companion_Result_.Create_Success_(Companion_StackValue_.Create_Bool_(!(((stack).Select(((_dafny.IntOfUint32((stack).Cardinality())).Minus(_dafny.One)).Uint32()).(StackValue)).Is_DoesNotExist()))) + return result + } + goto Lmatch0 + } + } + { + if _source0.Is_AttributeNotExists() { + if (_dafny.IntOfUint32((stack).Cardinality())).Cmp(_dafny.One) < 0 { + result = m_Wrappers.Companion_Result_.Create_Failure_(m_DynamoDbEncryptionUtil.Companion_Default___.E(_dafny.SeqOfString("No Stack for AttributeExists"))) + return result + } else { + result = m_Wrappers.Companion_Result_.Create_Success_(Companion_StackValue_.Create_Bool_(((stack).Select(((_dafny.IntOfUint32((stack).Cardinality())).Minus(_dafny.One)).Uint32()).(StackValue)).Is_DoesNotExist())) + return result + } + goto Lmatch0 + } + } + { + if _source0.Is_AttributeType() { + if (_dafny.IntOfUint32((stack).Cardinality())).Cmp(_dafny.IntOfInt64(2)) < 0 { + result = m_Wrappers.Companion_Result_.Create_Failure_(m_DynamoDbEncryptionUtil.Companion_Default___.E(_dafny.SeqOfString("No Stack for AttributeType"))) + return result + } else { + result = m_Wrappers.Companion_Result_.Create_Success_(Companion_StackValue_.Create_Bool_(Companion_Default___.IsAttrType((stack).Select(((_dafny.IntOfUint32((stack).Cardinality())).Minus(_dafny.IntOfInt64(2))).Uint32()).(StackValue), (stack).Select(((_dafny.IntOfUint32((stack).Cardinality())).Minus(_dafny.One)).Uint32()).(StackValue)))) + return result + } + goto Lmatch0 + } + } + { + if _source0.Is_BeginsWith() { + if (_dafny.IntOfUint32((stack).Cardinality())).Cmp(_dafny.IntOfInt64(2)) < 0 { + result = m_Wrappers.Companion_Result_.Create_Failure_(m_DynamoDbEncryptionUtil.Companion_Default___.E(_dafny.SeqOfString("No Stack for BeginsWith"))) + return result + } else if (((stack).Select(((_dafny.IntOfUint32((stack).Cardinality())).Minus(_dafny.One)).Uint32()).(StackValue)).Is_Str()) && (((stack).Select(((_dafny.IntOfUint32((stack).Cardinality())).Minus(_dafny.IntOfInt64(2))).Uint32()).(StackValue)).Is_Str()) { + result = m_Wrappers.Companion_Result_.Create_Success_(Companion_StackValue_.Create_Bool_(Companion_Default___.Begins__with(((stack).Select(((_dafny.IntOfUint32((stack).Cardinality())).Minus(_dafny.IntOfInt64(2))).Uint32()).(StackValue)).Dtor_s(), ((stack).Select(((_dafny.IntOfUint32((stack).Cardinality())).Minus(_dafny.One)).Uint32()).(StackValue)).Dtor_s()))) + return result + } else { + result = m_Wrappers.Companion_Result_.Create_Failure_(m_DynamoDbEncryptionUtil.Companion_Default___.E(_dafny.SeqOfString("Wrong Types for BeginsWith"))) + return result + } + goto Lmatch0 + } + } + { + if _source0.Is_Contains() { + if (_dafny.IntOfUint32((stack).Cardinality())).Cmp(_dafny.IntOfInt64(2)) < 0 { + result = m_Wrappers.Companion_Result_.Create_Failure_(m_DynamoDbEncryptionUtil.Companion_Default___.E(_dafny.SeqOfString("No Stack for contains"))) + return result + } else if (((stack).Select(((_dafny.IntOfUint32((stack).Cardinality())).Minus(_dafny.One)).Uint32()).(StackValue)).Is_Str()) && (((stack).Select(((_dafny.IntOfUint32((stack).Cardinality())).Minus(_dafny.IntOfInt64(2))).Uint32()).(StackValue)).Is_Str()) { + var _3_xxx bool + _ = _3_xxx + var _out0 bool + _ = _out0 + _out0 = Companion_Default___.Does__contain(((stack).Select(((_dafny.IntOfUint32((stack).Cardinality())).Minus(_dafny.IntOfInt64(2))).Uint32()).(StackValue)).Dtor_s(), ((stack).Select(((_dafny.IntOfUint32((stack).Cardinality())).Minus(_dafny.One)).Uint32()).(StackValue)).Dtor_s()) + _3_xxx = _out0 + result = m_Wrappers.Companion_Result_.Create_Success_(Companion_StackValue_.Create_Bool_(_3_xxx)) + return result + } else { + result = m_Wrappers.Companion_Result_.Create_Failure_(m_DynamoDbEncryptionUtil.Companion_Default___.E(_dafny.SeqOfString("Wrong Types for contains"))) + return result + } + goto Lmatch0 + } + } + { + if _source0.Is_Size() { + if (_dafny.IntOfUint32((stack).Cardinality())).Cmp(_dafny.One) < 0 { + result = m_Wrappers.Companion_Result_.Create_Failure_(m_DynamoDbEncryptionUtil.Companion_Default___.E(_dafny.SeqOfString("No Stack for Size"))) + return result + } else if !(((stack).Select(((_dafny.IntOfUint32((stack).Cardinality())).Minus(_dafny.One)).Uint32()).(StackValue)).Is_Str()) { + result = m_Wrappers.Companion_Result_.Create_Failure_(m_DynamoDbEncryptionUtil.Companion_Default___.E(_dafny.SeqOfString("Wrong Types for Size"))) + return result + } else { + var _4_n _dafny.Int + _ = _4_n + _4_n = Companion_Default___.GetSize(((stack).Select(((_dafny.IntOfUint32((stack).Cardinality())).Minus(_dafny.One)).Uint32()).(StackValue)).Dtor_s()) + result = m_Wrappers.Companion_Result_.Create_Success_(Companion_StackValue_.Create_Str_(m_ComAmazonawsDynamodbTypes.Companion_AttributeValue_.Create_N_(m_StandardLibrary_String.Companion_Default___.Base10Int2String(_4_n)))) + return result + } + goto Lmatch0 + } + } + { + result = m_Wrappers.Companion_Result_.Create_Success_(Companion_StackValue_.Create_Bool_(true)) + return result + } + goto Lmatch0 + } +Lmatch0: + return result +} +func (_static *CompanionStruct_Default___) Apply__unary(input Token, stack StackValue) m_Wrappers.Result { + if (stack).Is_Bool() { + return m_Wrappers.Companion_Result_.Create_Success_(Companion_StackValue_.Create_Bool_(!((stack).Dtor_b()))) + } else { + return m_Wrappers.Companion_Result_.Create_Failure_(m_DynamoDbEncryptionUtil.Companion_Default___.E(_dafny.SeqOfString("wrong type for Not"))) + } +} +func (_static *CompanionStruct_Default___) Apply__binary__bool(input Token, x bool, y bool) m_Wrappers.Result { + var _source0 Token = input + _ = _source0 + { + if _source0.Is_And() { + return m_Wrappers.Companion_Result_.Create_Success_((x) && (y)) + } + } + { + if _source0.Is_Or() { + return m_Wrappers.Companion_Result_.Create_Success_((x) || (y)) + } + } + { + return m_Wrappers.Companion_Result_.Create_Failure_(m_DynamoDbEncryptionUtil.Companion_Default___.E(_dafny.SeqOfString("invalid op in apply_binary_bool"))) + } +} +func (_static *CompanionStruct_Default___) IsHighSurrogate(ch _dafny.Char) bool { + return ((_dafny.Char((_dafny.IntOfInt64(55296)).Int32())) <= (ch)) && ((ch) <= (_dafny.Char((_dafny.IntOfInt64(56319)).Int32()))) +} +func (_static *CompanionStruct_Default___) UnicodeLess(a _dafny.Sequence, b _dafny.Sequence, pos _dafny.Int) bool { + goto TAIL_CALL_START +TAIL_CALL_START: + if ((_dafny.IntOfUint32((a).Cardinality())).Cmp(pos) == 0) && ((_dafny.IntOfUint32((b).Cardinality())).Cmp(pos) == 0) { + return false + } else if (_dafny.IntOfUint32((a).Cardinality())).Cmp(pos) == 0 { + return true + } else if (_dafny.IntOfUint32((b).Cardinality())).Cmp(pos) == 0 { + return false + } else if ((a).Select((pos).Uint32()).(_dafny.Char)) == ((b).Select((pos).Uint32()).(_dafny.Char)) { + var _in0 _dafny.Sequence = a + _ = _in0 + var _in1 _dafny.Sequence = b + _ = _in1 + var _in2 _dafny.Int = (pos).Plus(_dafny.One) + _ = _in2 + a = _in0 + b = _in1 + pos = _in2 + goto TAIL_CALL_START + } else { + var _0_aIsHighSurrogate bool = Companion_Default___.IsHighSurrogate((a).Select((pos).Uint32()).(_dafny.Char)) + _ = _0_aIsHighSurrogate + var _1_bIsHighSurrogate bool = Companion_Default___.IsHighSurrogate((b).Select((pos).Uint32()).(_dafny.Char)) + _ = _1_bIsHighSurrogate + if (_0_aIsHighSurrogate) == (_1_bIsHighSurrogate) { + return ((a).Select((pos).Uint32()).(_dafny.Char)) < ((b).Select((pos).Uint32()).(_dafny.Char)) + } else { + return _1_bIsHighSurrogate + } + } +} +func (_static *CompanionStruct_Default___) UnicodeLessOrEqual(a _dafny.Sequence, b _dafny.Sequence) bool { + return !(Companion_Default___.UnicodeLess(b, a, _dafny.Zero)) +} +func (_static *CompanionStruct_Default___) CompareFloat(x _dafny.Sequence, y _dafny.Sequence) m_Wrappers.Result { + var _0_valueOrError0 m_Wrappers.Result = (m_DynamoDbNormalizeNumber.Companion_Default___.NormalizeNumber(x)).MapFailure(func(coer114 func(_dafny.Sequence) m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Error) func(interface{}) interface{} { + return func(arg143 interface{}) interface{} { + return coer114(arg143.(_dafny.Sequence)) + } + }(func(_1_e _dafny.Sequence) m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Error { + return m_DynamoDbEncryptionUtil.Companion_Default___.E(_1_e) + })) + _ = _0_valueOrError0 + if (_0_valueOrError0).IsFailure() { + return (_0_valueOrError0).PropagateFailure() + } else { + var _2_newX _dafny.Sequence = (_0_valueOrError0).Extract().(_dafny.Sequence) + _ = _2_newX + var _3_valueOrError1 m_Wrappers.Result = (m_DynamoDbNormalizeNumber.Companion_Default___.NormalizeNumber(y)).MapFailure(func(coer115 func(_dafny.Sequence) m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Error) func(interface{}) interface{} { + return func(arg144 interface{}) interface{} { + return coer115(arg144.(_dafny.Sequence)) + } + }(func(_4_e _dafny.Sequence) m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Error { + return m_DynamoDbEncryptionUtil.Companion_Default___.E(_4_e) + })) + _ = _3_valueOrError1 + if (_3_valueOrError1).IsFailure() { + return (_3_valueOrError1).PropagateFailure() + } else { + var _5_newY _dafny.Sequence = (_3_valueOrError1).Extract().(_dafny.Sequence) + _ = _5_newY + return m_Wrappers.Companion_Result_.Create_Success_(m_FloatCompare.Companion_Default___.CompareFloat(_2_newX, _5_newY)) + } + } +} +func (_static *CompanionStruct_Default___) AttributeEQ(a m_ComAmazonawsDynamodbTypes.AttributeValue, b m_ComAmazonawsDynamodbTypes.AttributeValue) m_Wrappers.Result { + if ((a).Is_N()) && ((b).Is_N()) { + var _0_valueOrError0 m_Wrappers.Result = Companion_Default___.CompareFloat((a).Dtor_N(), (b).Dtor_N()) + _ = _0_valueOrError0 + if (_0_valueOrError0).IsFailure() { + return (_0_valueOrError0).PropagateFailure() + } else { + var _1_ret int8 = (_0_valueOrError0).Extract().(int8) + _ = _1_ret + return m_Wrappers.Companion_Result_.Create_Success_((_1_ret) == (int8(0))) + } + } else { + return m_Wrappers.Companion_Result_.Create_Success_((a).Equals(b)) + } +} +func (_static *CompanionStruct_Default___) AttributeNE(a m_ComAmazonawsDynamodbTypes.AttributeValue, b m_ComAmazonawsDynamodbTypes.AttributeValue) m_Wrappers.Result { + var _0_valueOrError0 m_Wrappers.Result = Companion_Default___.AttributeEQ(a, b) + _ = _0_valueOrError0 + if (_0_valueOrError0).IsFailure() { + return (_0_valueOrError0).PropagateFailure() + } else { + var _1_ret bool = (_0_valueOrError0).Extract().(bool) + _ = _1_ret + return m_Wrappers.Companion_Result_.Create_Success_(!(_1_ret)) + } +} +func (_static *CompanionStruct_Default___) AttributeLE(a m_ComAmazonawsDynamodbTypes.AttributeValue, b m_ComAmazonawsDynamodbTypes.AttributeValue) m_Wrappers.Result { + if ((a).Is_N()) && ((b).Is_N()) { + var _0_valueOrError0 m_Wrappers.Result = Companion_Default___.CompareFloat((a).Dtor_N(), (b).Dtor_N()) + _ = _0_valueOrError0 + if (_0_valueOrError0).IsFailure() { + return (_0_valueOrError0).PropagateFailure() + } else { + var _1_ret int8 = (_0_valueOrError0).Extract().(int8) + _ = _1_ret + return m_Wrappers.Companion_Result_.Create_Success_((_1_ret) <= (int8(0))) + } + } else if ((a).Is_S()) && ((b).Is_S()) { + return m_Wrappers.Companion_Result_.Create_Success_(Companion_Default___.UnicodeLessOrEqual((a).Dtor_S(), (b).Dtor_S())) + } else if ((a).Is_B()) && ((b).Is_B()) { + return m_Wrappers.Companion_Result_.Create_Success_(m_StandardLibrary.Companion_Default___.LexicographicLessOrEqual((a).Dtor_B(), (b).Dtor_B(), func(coer116 func(uint8, uint8) bool) func(interface{}, interface{}) bool { + return func(arg145 interface{}, arg146 interface{}) bool { + return coer116(arg145.(uint8), arg146.(uint8)) + } + }(m_DynamoDbEncryptionUtil.Companion_Default___.ByteLess))) + } else { + return m_Wrappers.Companion_Result_.Create_Success_(false) + } +} +func (_static *CompanionStruct_Default___) AttributeLT(a m_ComAmazonawsDynamodbTypes.AttributeValue, b m_ComAmazonawsDynamodbTypes.AttributeValue) m_Wrappers.Result { + var _0_valueOrError0 m_Wrappers.Result = Companion_Default___.AttributeLE(b, a) + _ = _0_valueOrError0 + if (_0_valueOrError0).IsFailure() { + return (_0_valueOrError0).PropagateFailure() + } else { + var _1_ret bool = (_0_valueOrError0).Extract().(bool) + _ = _1_ret + return m_Wrappers.Companion_Result_.Create_Success_(!(_1_ret)) + } +} +func (_static *CompanionStruct_Default___) AttributeGT(a m_ComAmazonawsDynamodbTypes.AttributeValue, b m_ComAmazonawsDynamodbTypes.AttributeValue) m_Wrappers.Result { + var _0_valueOrError0 m_Wrappers.Result = Companion_Default___.AttributeLE(a, b) + _ = _0_valueOrError0 + if (_0_valueOrError0).IsFailure() { + return (_0_valueOrError0).PropagateFailure() + } else { + var _1_ret bool = (_0_valueOrError0).Extract().(bool) + _ = _1_ret + return m_Wrappers.Companion_Result_.Create_Success_(!(_1_ret)) + } +} +func (_static *CompanionStruct_Default___) AttributeGE(a m_ComAmazonawsDynamodbTypes.AttributeValue, b m_ComAmazonawsDynamodbTypes.AttributeValue) m_Wrappers.Result { + var _0_valueOrError0 m_Wrappers.Result = Companion_Default___.AttributeLE(b, a) + _ = _0_valueOrError0 + if (_0_valueOrError0).IsFailure() { + return (_0_valueOrError0).PropagateFailure() + } else { + var _1_ret bool = (_0_valueOrError0).Extract().(bool) + _ = _1_ret + return m_Wrappers.Companion_Result_.Create_Success_(_1_ret) + } +} +func (_static *CompanionStruct_Default___) Apply__binary__comp(input Token, x m_ComAmazonawsDynamodbTypes.AttributeValue, y m_ComAmazonawsDynamodbTypes.AttributeValue) m_Wrappers.Result { + var _source0 Token = input + _ = _source0 + { + if _source0.Is_Eq() { + return Companion_Default___.AttributeEQ(x, y) + } + } + { + if _source0.Is_Ne() { + return Companion_Default___.AttributeNE(x, y) + } + } + { + if _source0.Is_Le() { + return Companion_Default___.AttributeLE(x, y) + } + } + { + if _source0.Is_Lt() { + return Companion_Default___.AttributeLT(x, y) + } + } + { + if _source0.Is_Ge() { + return Companion_Default___.AttributeGE(x, y) + } + } + { + if _source0.Is_Gt() { + return Companion_Default___.AttributeGT(x, y) + } + } + { + return m_Wrappers.Companion_Result_.Create_Failure_(m_DynamoDbEncryptionUtil.Companion_Default___.E(_dafny.SeqOfString("invalid op in apply_binary_bool"))) + } +} +func (_static *CompanionStruct_Default___) Apply__binary(input Token, x StackValue, y StackValue) m_Wrappers.Result { + if Companion_Default___.IsComp(input) { + if ((x).Is_Str()) && ((y).Is_Str()) { + var _0_valueOrError0 m_Wrappers.Result = Companion_Default___.Apply__binary__comp(input, (x).Dtor_s(), (y).Dtor_s()) + _ = _0_valueOrError0 + if (_0_valueOrError0).IsFailure() { + return (_0_valueOrError0).PropagateFailure() + } else { + var _1_val bool = (_0_valueOrError0).Extract().(bool) + _ = _1_val + return m_Wrappers.Companion_Result_.Create_Success_(Companion_StackValue_.Create_Bool_(_1_val)) + } + } else { + return m_Wrappers.Companion_Result_.Create_Failure_(m_DynamoDbEncryptionUtil.Companion_Default___.E(_dafny.SeqOfString("wrong types for comparison"))) + } + } else if ((x).Is_Bool()) && ((y).Is_Bool()) { + var _2_valueOrError1 m_Wrappers.Result = Companion_Default___.Apply__binary__bool(input, (x).Dtor_b(), (y).Dtor_b()) + _ = _2_valueOrError1 + if (_2_valueOrError1).IsFailure() { + return (_2_valueOrError1).PropagateFailure() + } else { + var _3_val bool = (_2_valueOrError1).Extract().(bool) + _ = _3_val + return m_Wrappers.Companion_Result_.Create_Success_(Companion_StackValue_.Create_Bool_(_3_val)) + } + } else { + return m_Wrappers.Companion_Result_.Create_Failure_(m_DynamoDbEncryptionUtil.Companion_Default___.E(_dafny.SeqOfString("wrong types for boolean binary"))) + } +} +func (_static *CompanionStruct_Default___) NumArgs(t Token, stack _dafny.Sequence) _dafny.Int { + var _source0 Token = t + _ = _source0 + { + if _source0.Is_Between() { + return _dafny.IntOfInt64(3) + } + } + { + if _source0.Is_In() { + return Companion_Default___.StringsFollowing(stack) + } + } + { + if _source0.Is_AttributeExists() { + return _dafny.One + } + } + { + if _source0.Is_AttributeNotExists() { + return _dafny.One + } + } + { + if _source0.Is_AttributeType() { + return _dafny.IntOfInt64(2) + } + } + { + if _source0.Is_BeginsWith() { + return _dafny.IntOfInt64(2) + } + } + { + if _source0.Is_Contains() { + return _dafny.IntOfInt64(2) + } + } + { + if _source0.Is_Size() { + return _dafny.One + } + } + { + return _dafny.Zero + } +} +func (_static *CompanionStruct_Default___) InnerEvalExpr(input _dafny.Sequence, stack _dafny.Sequence, item _dafny.Map, names m_Wrappers.Option, values _dafny.Map, pos uint64) m_Wrappers.Result { + var ret m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(false) + _ = ret + if (pos) == (uint64((input).Cardinality())) { + if ((_dafny.One).Cmp(_dafny.IntOfUint32((stack).Cardinality())) == 0) && (((stack).Select(0).(StackValue)).Is_Bool()) { + ret = m_Wrappers.Companion_Result_.Create_Success_(((stack).Select(0).(StackValue)).Dtor_b()) + return ret + } else { + ret = m_Wrappers.Companion_Result_.Create_Failure_(m_DynamoDbEncryptionUtil.Companion_Default___.E(_dafny.SeqOfString("ended with bad stack"))) + return ret + } + } else { + var _0_t Token + _ = _0_t + _0_t = (input).Select(uint32(pos)).(Token) + if (_0_t).Is_Value() { + var _out0 m_Wrappers.Result + _ = _out0 + _out0 = Companion_Default___.InnerEvalExpr(input, _dafny.Companion_Sequence_.Concatenate(stack, _dafny.SeqOf(Companion_Default___.StackValueFromValue((_0_t).Dtor_s(), values))), item, names, values, (pos)+(uint64(1))) + ret = _out0 + } else if (_0_t).Is_Attr() { + var _out1 m_Wrappers.Result + _ = _out1 + _out1 = Companion_Default___.InnerEvalExpr(input, _dafny.Companion_Sequence_.Concatenate(stack, _dafny.SeqOf(Companion_Default___.StackValueFromAttr(_0_t, item, names))), item, names, values, (pos)+(uint64(1))) + ret = _out1 + } else if Companion_Default___.IsUnary(_0_t) { + if (_dafny.IntOfUint32((stack).Cardinality())).Sign() == 0 { + ret = m_Wrappers.Companion_Result_.Create_Failure_(m_DynamoDbEncryptionUtil.Companion_Default___.E(_dafny.SeqOfString("Empty stack for unary op"))) + } else { + var _1_valueOrError0 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(Companion_StackValue_.Default()) + _ = _1_valueOrError0 + _1_valueOrError0 = Companion_Default___.Apply__unary(_0_t, (stack).Select(((_dafny.IntOfUint32((stack).Cardinality())).Minus(_dafny.One)).Uint32()).(StackValue)) + if (_1_valueOrError0).IsFailure() { + ret = (_1_valueOrError0).PropagateFailure() + return ret + } + var _2_val StackValue + _ = _2_val + _2_val = (_1_valueOrError0).Extract().(StackValue) + var _out2 m_Wrappers.Result + _ = _out2 + _out2 = Companion_Default___.InnerEvalExpr(input, _dafny.Companion_Sequence_.Concatenate((stack).Take(((_dafny.IntOfUint32((stack).Cardinality())).Minus(_dafny.One)).Uint32()), _dafny.SeqOf(_2_val)), item, names, values, (pos)+(uint64(1))) + ret = _out2 + } + } else if Companion_Default___.IsBinary(_0_t) { + if (_dafny.IntOfUint32((stack).Cardinality())).Cmp(_dafny.IntOfInt64(2)) < 0 { + ret = m_Wrappers.Companion_Result_.Create_Failure_(m_DynamoDbEncryptionUtil.Companion_Default___.E(_dafny.SeqOfString("Empty stack for binary op"))) + } else { + var _3_valueOrError1 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(Companion_StackValue_.Default()) + _ = _3_valueOrError1 + _3_valueOrError1 = Companion_Default___.Apply__binary(_0_t, (stack).Select(((_dafny.IntOfUint32((stack).Cardinality())).Minus(_dafny.IntOfInt64(2))).Uint32()).(StackValue), (stack).Select(((_dafny.IntOfUint32((stack).Cardinality())).Minus(_dafny.One)).Uint32()).(StackValue)) + if (_3_valueOrError1).IsFailure() { + ret = (_3_valueOrError1).PropagateFailure() + return ret + } + var _4_val StackValue + _ = _4_val + _4_val = (_3_valueOrError1).Extract().(StackValue) + var _out3 m_Wrappers.Result + _ = _out3 + _out3 = Companion_Default___.InnerEvalExpr(input, _dafny.Companion_Sequence_.Concatenate((stack).Take(((_dafny.IntOfUint32((stack).Cardinality())).Minus(_dafny.IntOfInt64(2))).Uint32()), _dafny.SeqOf(_4_val)), item, names, values, (pos)+(uint64(1))) + ret = _out3 + } + } else if Companion_Default___.IsFunction(_0_t) { + var _5_num__args _dafny.Int + _ = _5_num__args + _5_num__args = Companion_Default___.NumArgs(_0_t, stack) + if (_dafny.IntOfUint32((stack).Cardinality())).Cmp(_5_num__args) < 0 { + ret = m_Wrappers.Companion_Result_.Create_Failure_(m_DynamoDbEncryptionUtil.Companion_Default___.E(_dafny.SeqOfString("Empty stack for function call"))) + } else { + var _6_valueOrError2 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(Companion_StackValue_.Default()) + _ = _6_valueOrError2 + var _out4 m_Wrappers.Result + _ = _out4 + _out4 = Companion_Default___.Apply__function(_0_t, stack, _5_num__args) + _6_valueOrError2 = _out4 + if (_6_valueOrError2).IsFailure() { + ret = (_6_valueOrError2).PropagateFailure() + return ret + } + var _7_val StackValue + _ = _7_val + _7_val = (_6_valueOrError2).Extract().(StackValue) + var _out5 m_Wrappers.Result + _ = _out5 + _out5 = Companion_Default___.InnerEvalExpr(input, _dafny.Companion_Sequence_.Concatenate((stack).Take(((_dafny.IntOfUint32((stack).Cardinality())).Minus(_5_num__args)).Uint32()), _dafny.SeqOf(_7_val)), item, names, values, (pos)+(uint64(1))) + ret = _out5 + } + } else { + ret = m_Wrappers.Companion_Result_.Create_Success_(true) + } + } + return ret +} +func (_static *CompanionStruct_Default___) FilterItems(b m_SearchableEncryptionInfo.BeaconVersion, parsed _dafny.Sequence, ItemList _dafny.Sequence, names m_Wrappers.Option, values _dafny.Map) m_Wrappers.Result { + var output m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(_dafny.EmptySeq) + _ = output + var _0_acc _dafny.Sequence + _ = _0_acc + _0_acc = _dafny.SeqOf() + var _hi0 _dafny.Int = _dafny.IntOfUint32((ItemList).Cardinality()) + _ = _hi0 + for _1_i := _dafny.Zero; _1_i.Cmp(_hi0) < 0; _1_i = _1_i.Plus(_dafny.One) { + var _2_valueOrError0 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(_dafny.EmptyMap) + _ = _2_valueOrError0 + var _out0 m_Wrappers.Result + _ = _out0 + _out0 = (b).GeneratePlainBeacons((ItemList).Select((_1_i).Uint32()).(_dafny.Map)) + _2_valueOrError0 = _out0 + if (_2_valueOrError0).IsFailure() { + output = (_2_valueOrError0).PropagateFailure() + return output + } + var _3_newAttrs _dafny.Map + _ = _3_newAttrs + _3_newAttrs = (_2_valueOrError0).Extract().(_dafny.Map) + var _4_valueOrError1 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(false) + _ = _4_valueOrError1 + var _out1 m_Wrappers.Result + _ = _out1 + _out1 = Companion_Default___.EvalExpr(parsed, ((ItemList).Select((_1_i).Uint32()).(_dafny.Map)).Merge(_3_newAttrs), names, values) + _4_valueOrError1 = _out1 + if (_4_valueOrError1).IsFailure() { + output = (_4_valueOrError1).PropagateFailure() + return output + } + var _5_doesMatch bool + _ = _5_doesMatch + _5_doesMatch = (_4_valueOrError1).Extract().(bool) + if _5_doesMatch { + _0_acc = _dafny.Companion_Sequence_.Concatenate(_0_acc, _dafny.SeqOf((ItemList).Select((_1_i).Uint32()).(_dafny.Map))) + } + } + output = m_Wrappers.Companion_Result_.Create_Success_(_0_acc) + return output + return output +} +func (_static *CompanionStruct_Default___) FilterResults(b m_SearchableEncryptionInfo.BeaconVersion, ItemList _dafny.Sequence, KeyExpression m_Wrappers.Option, FilterExpression m_Wrappers.Option, names m_Wrappers.Option, values m_Wrappers.Option) m_Wrappers.Result { + var output m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(_dafny.EmptySeq) + _ = output + if ((_dafny.IntOfUint32((ItemList).Cardinality())).Sign() == 0) || (((KeyExpression).Is_None()) && ((FilterExpression).Is_None())) { + output = m_Wrappers.Companion_Result_.Create_Success_(ItemList) + return output + } else { + var _0_afterKeys _dafny.Sequence = _dafny.EmptySeq + _ = _0_afterKeys + if (KeyExpression).Is_Some() { + var _1_parsed _dafny.Sequence + _ = _1_parsed + _1_parsed = Companion_Default___.ParseExpr((KeyExpression).Dtor_value().(_dafny.Sequence), uint64(0)) + var _2_valueOrError0 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(Companion_ParsedContext_.Default()) + _ = _2_valueOrError0 + _2_valueOrError0 = Companion_Default___.BeaconizeParsedExpr(b, _1_parsed, _dafny.Zero, (values).UnwrapOr(_dafny.NewMapBuilder().ToMap()).(_dafny.Map), names, m_DynamoDbEncryptionUtil.Companion_MaybeKeyMap_.Create_DontUseKeys_(), _dafny.NewMapBuilder().ToMap(), _dafny.SeqOf()) + if (_2_valueOrError0).IsFailure() { + output = (_2_valueOrError0).PropagateFailure() + return output + } + var _3_expr ParsedContext + _ = _3_expr + _3_expr = (_2_valueOrError0).Extract().(ParsedContext) + var _4_expr1 _dafny.Sequence + _ = _4_expr1 + _4_expr1 = Companion_Default___.ConvertToPrefix((_3_expr).Dtor_expr(), uint64(0)) + var _5_expr2 _dafny.Sequence + _ = _5_expr2 + _5_expr2 = Companion_Default___.ConvertToRpn(_4_expr1) + var _6_valueOrError1 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(_dafny.EmptySeq) + _ = _6_valueOrError1 + var _out0 m_Wrappers.Result + _ = _out0 + _out0 = Companion_Default___.FilterItems(b, _5_expr2, ItemList, (_3_expr).Dtor_names(), (_3_expr).Dtor_values()) + _6_valueOrError1 = _out0 + if (_6_valueOrError1).IsFailure() { + output = (_6_valueOrError1).PropagateFailure() + return output + } + _0_afterKeys = (_6_valueOrError1).Extract().(_dafny.Sequence) + } else { + _0_afterKeys = ItemList + } + if (FilterExpression).Is_Some() { + var _7_parsed _dafny.Sequence + _ = _7_parsed + _7_parsed = Companion_Default___.ParseExpr((FilterExpression).Dtor_value().(_dafny.Sequence), uint64(0)) + var _8_valueOrError2 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(Companion_ParsedContext_.Default()) + _ = _8_valueOrError2 + _8_valueOrError2 = Companion_Default___.BeaconizeParsedExpr(b, _7_parsed, _dafny.Zero, (values).UnwrapOr(_dafny.NewMapBuilder().ToMap()).(_dafny.Map), names, m_DynamoDbEncryptionUtil.Companion_MaybeKeyMap_.Create_DontUseKeys_(), _dafny.NewMapBuilder().ToMap(), _dafny.SeqOf()) + if (_8_valueOrError2).IsFailure() { + output = (_8_valueOrError2).PropagateFailure() + return output + } + var _9_expr ParsedContext + _ = _9_expr + _9_expr = (_8_valueOrError2).Extract().(ParsedContext) + var _10_expr1 _dafny.Sequence + _ = _10_expr1 + _10_expr1 = Companion_Default___.ConvertToPrefix((_9_expr).Dtor_expr(), uint64(0)) + var _11_expr2 _dafny.Sequence + _ = _11_expr2 + _11_expr2 = Companion_Default___.ConvertToRpn(_10_expr1) + var _out1 m_Wrappers.Result + _ = _out1 + _out1 = Companion_Default___.FilterItems(b, _11_expr2, _0_afterKeys, (_9_expr).Dtor_names(), (_9_expr).Dtor_values()) + output = _out1 + } else { + output = m_Wrappers.Companion_Result_.Create_Success_(_0_afterKeys) + return output + } + } + return output +} +func (_static *CompanionStruct_Default___) KeyIdFromPart(bv m_SearchableEncryptionInfo.BeaconVersion, keyIdField _dafny.Sequence, attr _dafny.Sequence, value _dafny.Sequence) m_Wrappers.Option { + if (!((bv).Dtor_beacons()).Contains(attr)) || ((((bv).Dtor_beacons()).Get(attr).(m_SearchableEncryptionInfo.Beacon)).Is_Standard()) { + return m_Wrappers.Companion_Option_.Create_None_() + } else { + var _0_parts _dafny.Sequence = ((((bv).Dtor_beacons()).Get(attr).(m_SearchableEncryptionInfo.Beacon)).Dtor_cmp()).Dtor_parts() + _ = _0_parts + var _1_theParts _dafny.Sequence = m_Seq.Companion_Default___.Filter(func(coer117 func(m_CompoundBeacon.BeaconPart) bool) func(interface{}) bool { + return func(arg147 interface{}) bool { + return coer117(arg147.(m_CompoundBeacon.BeaconPart)) + } + }((func(_2_keyIdField _dafny.Sequence) func(m_CompoundBeacon.BeaconPart) bool { + return func(_3_p m_CompoundBeacon.BeaconPart) bool { + return ((_3_p).Is_Signed()) && (_dafny.Companion_Sequence_.Equal((((_3_p).Dtor_loc()).Select(0).(m_TermLoc.Selector)).Dtor_key(), _2_keyIdField)) + } + })(keyIdField)), _0_parts) + _ = _1_theParts + if (_dafny.IntOfUint32((_1_theParts).Cardinality())).Cmp(_dafny.One) != 0 { + return m_Wrappers.Companion_Option_.Create_None_() + } else { + var _4_pieces _dafny.Sequence = m_StandardLibrary.Companion_Default___.Split(value, ((((bv).Dtor_beacons()).Get(attr).(m_SearchableEncryptionInfo.Beacon)).Dtor_cmp()).Dtor_split()) + _ = _4_pieces + var _5_piece _dafny.Sequence = m_Seq.Companion_Default___.Filter(func(coer118 func(_dafny.Sequence) bool) func(interface{}) bool { + return func(arg148 interface{}) bool { + return coer118(arg148.(_dafny.Sequence)) + } + }((func(_6_theParts _dafny.Sequence) func(_dafny.Sequence) bool { + return func(_7_s _dafny.Sequence) bool { + return _dafny.Companion_Sequence_.IsPrefixOf(((_6_theParts).Select(0).(m_CompoundBeacon.BeaconPart)).Dtor_prefix(), _7_s) + } + })(_1_theParts)), _4_pieces) + _ = _5_piece + if (_dafny.IntOfUint32((_5_piece).Cardinality())).Cmp(_dafny.One) != 0 { + return m_Wrappers.Companion_Option_.Create_None_() + } else { + var _8_p _dafny.Sequence = (_5_piece).Select(0).(_dafny.Sequence) + _ = _8_p + return m_Wrappers.Companion_Option_.Create_Some_((_8_p).Drop((_dafny.IntOfUint32((((_1_theParts).Select(0).(m_CompoundBeacon.BeaconPart)).Dtor_prefix()).Cardinality())).Uint32())) + } + } + } +} +func (_static *CompanionStruct_Default___) KeyIdFromAttr(bv m_SearchableEncryptionInfo.BeaconVersion, attr m_Wrappers.Option, value _dafny.Sequence, names m_Wrappers.Option) m_Wrappers.Option { + if (attr).Is_None() { + return m_Wrappers.Companion_Option_.Create_None_() + } else { + var _0_name _dafny.Sequence = (func() _dafny.Sequence { + if ((names).Is_Some()) && (((names).Dtor_value().(_dafny.Map)).Contains(((attr).Dtor_value().(Token)).Dtor_s())) { + return ((names).Dtor_value().(_dafny.Map)).Get(((attr).Dtor_value().(Token)).Dtor_s()).(_dafny.Sequence) + } + return ((attr).Dtor_value().(Token)).Dtor_s() + })() + _ = _0_name + var _1_keyIdField _dafny.Sequence = (((bv).Dtor_keySource()).Dtor_keyLoc()).Dtor_keyName() + _ = _1_keyIdField + if _dafny.Companion_Sequence_.Equal(_1_keyIdField, _0_name) { + return m_Wrappers.Companion_Option_.Create_Some_(value) + } else { + return Companion_Default___.KeyIdFromPart(bv, _1_keyIdField, ((attr).Dtor_value().(Token)).Dtor_s(), value) + } + } +} +func (_static *CompanionStruct_Default___) GetBeaconKeyIds2(pos _dafny.Int, bv m_SearchableEncryptionInfo.BeaconVersion, expr _dafny.Sequence, values _dafny.Map, names m_Wrappers.Option, soFar _dafny.Sequence) m_Wrappers.Result { + goto TAIL_CALL_START +TAIL_CALL_START: + if (pos).Cmp(_dafny.IntOfUint32((expr).Cardinality())) == 0 { + return m_Wrappers.Companion_Result_.Create_Success_(soFar) + } else if ((expr).Select((pos).Uint32()).(Token)).Is_Value() { + var _0_valueOrError0 m_Wrappers.Outcome = m_Wrappers.Companion_Default___.Need((values).Contains(((expr).Select((pos).Uint32()).(Token)).Dtor_s()), m_DynamoDbEncryptionUtil.Companion_Default___.E(_dafny.Companion_Sequence_.Concatenate(((expr).Select((pos).Uint32()).(Token)).Dtor_s(), _dafny.SeqOfString(" not found in ExpressionAttributeValueMap")))) + _ = _0_valueOrError0 + if (_0_valueOrError0).IsFailure() { + return (_0_valueOrError0).PropagateFailure() + } else { + var _1_oldValue m_ComAmazonawsDynamodbTypes.AttributeValue = (values).Get(((expr).Select((pos).Uint32()).(Token)).Dtor_s()).(m_ComAmazonawsDynamodbTypes.AttributeValue) + _ = _1_oldValue + if (_1_oldValue).Is_S() { + var _2_attr m_Wrappers.Option = Companion_Default___.AttrForValue(expr, pos) + _ = _2_attr + var _3_keyId m_Wrappers.Option = Companion_Default___.KeyIdFromAttr(bv, _2_attr, (_1_oldValue).Dtor_S(), names) + _ = _3_keyId + if ((_3_keyId).Is_None()) || (_dafny.Companion_Sequence_.Contains(soFar, (_3_keyId).Dtor_value().(_dafny.Sequence))) { + var _in0 _dafny.Int = (pos).Plus(_dafny.One) + _ = _in0 + var _in1 m_SearchableEncryptionInfo.BeaconVersion = bv + _ = _in1 + var _in2 _dafny.Sequence = expr + _ = _in2 + var _in3 _dafny.Map = values + _ = _in3 + var _in4 m_Wrappers.Option = names + _ = _in4 + var _in5 _dafny.Sequence = soFar + _ = _in5 + pos = _in0 + bv = _in1 + expr = _in2 + values = _in3 + names = _in4 + soFar = _in5 + goto TAIL_CALL_START + } else { + var _in6 _dafny.Int = (pos).Plus(_dafny.One) + _ = _in6 + var _in7 m_SearchableEncryptionInfo.BeaconVersion = bv + _ = _in7 + var _in8 _dafny.Sequence = expr + _ = _in8 + var _in9 _dafny.Map = values + _ = _in9 + var _in10 m_Wrappers.Option = names + _ = _in10 + var _in11 _dafny.Sequence = _dafny.Companion_Sequence_.Concatenate(soFar, _dafny.SeqOf((_3_keyId).Dtor_value().(_dafny.Sequence))) + _ = _in11 + pos = _in6 + bv = _in7 + expr = _in8 + values = _in9 + names = _in10 + soFar = _in11 + goto TAIL_CALL_START + } + } else { + var _in12 _dafny.Int = (pos).Plus(_dafny.One) + _ = _in12 + var _in13 m_SearchableEncryptionInfo.BeaconVersion = bv + _ = _in13 + var _in14 _dafny.Sequence = expr + _ = _in14 + var _in15 _dafny.Map = values + _ = _in15 + var _in16 m_Wrappers.Option = names + _ = _in16 + var _in17 _dafny.Sequence = soFar + _ = _in17 + pos = _in12 + bv = _in13 + expr = _in14 + values = _in15 + names = _in16 + soFar = _in17 + goto TAIL_CALL_START + } + } + } else { + var _in18 _dafny.Int = (pos).Plus(_dafny.One) + _ = _in18 + var _in19 m_SearchableEncryptionInfo.BeaconVersion = bv + _ = _in19 + var _in20 _dafny.Sequence = expr + _ = _in20 + var _in21 _dafny.Map = values + _ = _in21 + var _in22 m_Wrappers.Option = names + _ = _in22 + var _in23 _dafny.Sequence = soFar + _ = _in23 + pos = _in18 + bv = _in19 + expr = _in20 + values = _in21 + names = _in22 + soFar = _in23 + goto TAIL_CALL_START + } +} +func (_static *CompanionStruct_Default___) GetBeaconKeyIds(bv m_SearchableEncryptionInfo.BeaconVersion, expr m_Wrappers.Option, values _dafny.Map, names m_Wrappers.Option, soFar _dafny.Sequence) m_Wrappers.Result { + if (expr).Is_None() { + return m_Wrappers.Companion_Result_.Create_Success_(soFar) + } else { + var _0_parsed _dafny.Sequence = Companion_Default___.ParseExpr((expr).Dtor_value().(_dafny.Sequence), uint64(0)) + _ = _0_parsed + return Companion_Default___.GetBeaconKeyIds2(_dafny.Zero, bv, _0_parsed, values, names, soFar) + } +} +func (_static *CompanionStruct_Default___) GetBeaconKeyId(bv m_SearchableEncryptionInfo.BeaconVersion, keyExpr m_Wrappers.Option, filterExpr m_Wrappers.Option, values m_Wrappers.Option, names m_Wrappers.Option) m_Wrappers.Result { + if !((((bv).Dtor_keySource()).Dtor_keyLoc()).Is_MultiLoc()) { + return m_Wrappers.Companion_Result_.Create_Success_(m_DynamoDbEncryptionUtil.Companion_MaybeKeyId_.Create_DontUseKeyId_()) + } else if (values).Is_None() { + return m_Wrappers.Companion_Result_.Create_Success_(m_DynamoDbEncryptionUtil.Companion_MaybeKeyId_.Create_ShouldHaveKeyId_()) + } else { + var _0_valueOrError0 m_Wrappers.Result = Companion_Default___.GetBeaconKeyIds(bv, keyExpr, (values).Dtor_value().(_dafny.Map), names, _dafny.SeqOf()) + _ = _0_valueOrError0 + if (_0_valueOrError0).IsFailure() { + return (_0_valueOrError0).PropagateFailure() + } else { + var _1_soFar _dafny.Sequence = (_0_valueOrError0).Extract().(_dafny.Sequence) + _ = _1_soFar + var _2_valueOrError1 m_Wrappers.Result = Companion_Default___.GetBeaconKeyIds(bv, filterExpr, (values).Dtor_value().(_dafny.Map), names, _1_soFar) + _ = _2_valueOrError1 + if (_2_valueOrError1).IsFailure() { + return (_2_valueOrError1).PropagateFailure() + } else { + var _3_final _dafny.Sequence = (_2_valueOrError1).Extract().(_dafny.Sequence) + _ = _3_final + if (_dafny.IntOfUint32((_3_final).Cardinality())).Cmp(_dafny.One) == 0 { + return m_Wrappers.Companion_Result_.Create_Success_(m_DynamoDbEncryptionUtil.Companion_MaybeKeyId_.Create_KeyId_((_3_final).Select(0).(_dafny.Sequence))) + } else if (_dafny.IntOfUint32((_3_final).Cardinality())).Sign() == 0 { + return m_Wrappers.Companion_Result_.Create_Success_(m_DynamoDbEncryptionUtil.Companion_MaybeKeyId_.Create_ShouldHaveKeyId_()) + } else { + return m_Wrappers.Companion_Result_.Create_Failure_(m_DynamoDbEncryptionUtil.Companion_Default___.E(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("Multiple values found for "), (((bv).Dtor_keySource()).Dtor_keyLoc()).Dtor_keyName()), _dafny.SeqOfString(" in query : ")), m_StandardLibrary.Companion_Default___.Join(_3_final, _dafny.SeqOfString(", "))))) + } + } + } + } +} +func (_static *CompanionStruct_Default___) Beaconize(b m_SearchableEncryptionInfo.BeaconVersion, context ExprContext, keyId m_DynamoDbEncryptionUtil.MaybeKeyId, naked bool) m_Wrappers.Result { + var output m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(Companion_ExprContext_.Default()) + _ = output + if (((context).Dtor_keyExpr()).Is_None()) && (((context).Dtor_filterExpr()).Is_None()) { + output = m_Wrappers.Companion_Result_.Create_Success_(context) + return output + } else { + var _0_keys m_DynamoDbEncryptionUtil.MaybeKeyMap + _ = _0_keys + _0_keys = m_DynamoDbEncryptionUtil.Companion_MaybeKeyMap_.Create_DontUseKeys_() + if !(naked) { + var _1_valueOrError0 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(m_DynamoDbEncryptionUtil.Companion_MaybeKeyMap_.Default()) + _ = _1_valueOrError0 + var _out0 m_Wrappers.Result + _ = _out0 + _out0 = (b).GetKeyMap(keyId) + _1_valueOrError0 = _out0 + if (_1_valueOrError0).IsFailure() { + output = (_1_valueOrError0).PropagateFailure() + return output + } + _0_keys = (_1_valueOrError0).Extract().(m_DynamoDbEncryptionUtil.MaybeKeyMap) + } + var _2_values _dafny.Map + _ = _2_values + if ((context).Dtor_values()).Is_Some() { + _2_values = ((context).Dtor_values()).Dtor_value().(_dafny.Map) + } else { + _2_values = _dafny.NewMapBuilder().ToMap() + } + var _3_newValues _dafny.Map + _ = _3_newValues + _3_newValues = _dafny.NewMapBuilder().ToMap() + var _4_newKeyExpr m_Wrappers.Option + _ = _4_newKeyExpr + _4_newKeyExpr = (context).Dtor_keyExpr() + var _5_newFilterExpr m_Wrappers.Option + _ = _5_newFilterExpr + _5_newFilterExpr = (context).Dtor_filterExpr() + var _6_newNames m_Wrappers.Option + _ = _6_newNames + _6_newNames = (context).Dtor_names() + if ((context).Dtor_keyExpr()).Is_Some() { + var _7_parsed _dafny.Sequence + _ = _7_parsed + _7_parsed = Companion_Default___.ParseExpr(((context).Dtor_keyExpr()).Dtor_value().(_dafny.Sequence), uint64(0)) + var _8_valueOrError1 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(Companion_ParsedContext_.Default()) + _ = _8_valueOrError1 + _8_valueOrError1 = Companion_Default___.BeaconizeParsedExpr(b, _7_parsed, _dafny.Zero, _2_values, _6_newNames, _0_keys, _3_newValues, _dafny.SeqOf()) + if (_8_valueOrError1).IsFailure() { + output = (_8_valueOrError1).PropagateFailure() + return output + } + var _9_newContext ParsedContext + _ = _9_newContext + _9_newContext = (_8_valueOrError1).Extract().(ParsedContext) + _4_newKeyExpr = m_Wrappers.Companion_Option_.Create_Some_(Companion_Default___.ParsedExprToString((_9_newContext).Dtor_expr())) + _3_newValues = (_9_newContext).Dtor_values() + _6_newNames = (_9_newContext).Dtor_names() + } + if ((context).Dtor_filterExpr()).Is_Some() { + var _10_parsed _dafny.Sequence + _ = _10_parsed + _10_parsed = Companion_Default___.ParseExpr(((context).Dtor_filterExpr()).Dtor_value().(_dafny.Sequence), uint64(0)) + var _11_valueOrError2 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(Companion_ParsedContext_.Default()) + _ = _11_valueOrError2 + _11_valueOrError2 = Companion_Default___.BeaconizeParsedExpr(b, _10_parsed, _dafny.Zero, _2_values, _6_newNames, _0_keys, _3_newValues, _dafny.SeqOf()) + if (_11_valueOrError2).IsFailure() { + output = (_11_valueOrError2).PropagateFailure() + return output + } + var _12_newContext ParsedContext + _ = _12_newContext + _12_newContext = (_11_valueOrError2).Extract().(ParsedContext) + _5_newFilterExpr = m_Wrappers.Companion_Option_.Create_Some_(Companion_Default___.ParsedExprToString((_12_newContext).Dtor_expr())) + _3_newValues = (_12_newContext).Dtor_values() + _6_newNames = (_12_newContext).Dtor_names() + } + output = m_Wrappers.Companion_Result_.Create_Success_(Companion_ExprContext_.Create_ExprContext_(_4_newKeyExpr, _5_newFilterExpr, (func() m_Wrappers.Option { + if ((_3_newValues).Cardinality()).Sign() == 0 { + return m_Wrappers.Companion_Option_.Create_None_() + } + return m_Wrappers.Companion_Option_.Create_Some_(_3_newValues) + })(), _6_newNames)) + return output + } + return output +} +func (_static *CompanionStruct_Default___) GetAttrName(t Token, names m_Wrappers.Option) _dafny.Sequence { + if ((names).Is_Some()) && (((names).Dtor_value().(_dafny.Map)).Contains((t).Dtor_s())) { + return ((names).Dtor_value().(_dafny.Map)).Get((t).Dtor_s()).(_dafny.Sequence) + } else { + return (t).Dtor_s() + } +} +func (_static *CompanionStruct_Default___) TestParsedExpr(expr _dafny.Sequence, encrypted _dafny.Set, names m_Wrappers.Option) m_Wrappers.Outcome { + var output m_Wrappers.Outcome = m_Wrappers.Companion_Outcome_.Default() + _ = output + var _hi0 _dafny.Int = _dafny.IntOfUint32((expr).Cardinality()) + _ = _hi0 + for _0_i := _dafny.Zero; _0_i.Cmp(_hi0) < 0; _0_i = _0_i.Plus(_dafny.One) { + if ((expr).Select((_0_i).Uint32()).(Token)).Is_Attr() { + var _1_name _dafny.Sequence + _ = _1_name + _1_name = Companion_Default___.GetAttrName((expr).Select((_0_i).Uint32()).(Token), names) + if (encrypted).Contains(_1_name) { + output = m_Wrappers.Companion_Outcome_.Create_Fail_(m_DynamoDbEncryptionUtil.Companion_Default___.E(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("Query is using encrypted field : "), _1_name), _dafny.SeqOfString(".")))) + return output + } + } + } + output = m_Wrappers.Companion_Outcome_.Create_Pass_() + return output + return output +} +func (_static *CompanionStruct_Default___) TestBeaconize(actions _dafny.Map, keyExpr m_Wrappers.Option, filterExpr m_Wrappers.Option, names m_Wrappers.Option) m_Wrappers.Result { + var output m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(false) + _ = output + var _0_encrypted _dafny.Set + _ = _0_encrypted + _0_encrypted = func() _dafny.Set { + var _coll0 = _dafny.NewBuilder() + _ = _coll0 + for _iter22 := _dafny.Iterate((actions).Keys().Elements()); ; { + _compr_0, _ok22 := _iter22() + if !_ok22 { + break + } + var _1_k _dafny.Sequence + _1_k = interface{}(_compr_0).(_dafny.Sequence) + if ((actions).Contains(_1_k)) && (((actions).Get(_1_k).(m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.CryptoAction)).Equals(m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Companion_CryptoAction_.Create_ENCRYPT__AND__SIGN_())) { + _coll0.Add(_1_k) + } + } + return _coll0.ToSet() + }() + if (keyExpr).Is_Some() { + var _2_valueOrError0 m_Wrappers.Outcome = m_Wrappers.Companion_Outcome_.Default() + _ = _2_valueOrError0 + var _out0 m_Wrappers.Outcome + _ = _out0 + _out0 = Companion_Default___.TestParsedExpr(Companion_Default___.ParseExpr((keyExpr).Dtor_value().(_dafny.Sequence), uint64(0)), _0_encrypted, names) + _2_valueOrError0 = _out0 + if (_2_valueOrError0).IsFailure() { + output = (_2_valueOrError0).PropagateFailure() + return output + } + } + if (filterExpr).Is_Some() { + var _3_valueOrError1 m_Wrappers.Outcome = m_Wrappers.Companion_Outcome_.Default() + _ = _3_valueOrError1 + var _out1 m_Wrappers.Outcome + _ = _out1 + _out1 = Companion_Default___.TestParsedExpr(Companion_Default___.ParseExpr((filterExpr).Dtor_value().(_dafny.Sequence), uint64(0)), _0_encrypted, names) + _3_valueOrError1 = _out1 + if (_3_valueOrError1).IsFailure() { + output = (_3_valueOrError1).PropagateFailure() + return output + } + } + output = m_Wrappers.Companion_Result_.Create_Success_(true) + return output + return output +} + +// End of class Default__ + +// Definition of datatype Token +type Token struct { + Data_Token_ +} + +func (_this Token) Get_() Data_Token_ { + return _this.Data_Token_ +} + +type Data_Token_ interface { + isToken() +} + +type CompanionStruct_Token_ struct { +} + +var Companion_Token_ = CompanionStruct_Token_{} + +type Token_Attr struct { + S _dafny.Sequence + Loc _dafny.Sequence +} + +func (Token_Attr) isToken() {} + +func (CompanionStruct_Token_) Create_Attr_(S _dafny.Sequence, Loc _dafny.Sequence) Token { + return Token{Token_Attr{S, Loc}} +} + +func (_this Token) Is_Attr() bool { + _, ok := _this.Get_().(Token_Attr) + return ok +} + +type Token_Value struct { + S _dafny.Sequence +} + +func (Token_Value) isToken() {} + +func (CompanionStruct_Token_) Create_Value_(S _dafny.Sequence) Token { + return Token{Token_Value{S}} +} + +func (_this Token) Is_Value() bool { + _, ok := _this.Get_().(Token_Value) + return ok +} + +type Token_Eq struct { +} + +func (Token_Eq) isToken() {} + +func (CompanionStruct_Token_) Create_Eq_() Token { + return Token{Token_Eq{}} +} + +func (_this Token) Is_Eq() bool { + _, ok := _this.Get_().(Token_Eq) + return ok +} + +type Token_Ne struct { +} + +func (Token_Ne) isToken() {} + +func (CompanionStruct_Token_) Create_Ne_() Token { + return Token{Token_Ne{}} +} + +func (_this Token) Is_Ne() bool { + _, ok := _this.Get_().(Token_Ne) + return ok +} + +type Token_Lt struct { +} + +func (Token_Lt) isToken() {} + +func (CompanionStruct_Token_) Create_Lt_() Token { + return Token{Token_Lt{}} +} + +func (_this Token) Is_Lt() bool { + _, ok := _this.Get_().(Token_Lt) + return ok +} + +type Token_Gt struct { +} + +func (Token_Gt) isToken() {} + +func (CompanionStruct_Token_) Create_Gt_() Token { + return Token{Token_Gt{}} +} + +func (_this Token) Is_Gt() bool { + _, ok := _this.Get_().(Token_Gt) + return ok +} + +type Token_Le struct { +} + +func (Token_Le) isToken() {} + +func (CompanionStruct_Token_) Create_Le_() Token { + return Token{Token_Le{}} +} + +func (_this Token) Is_Le() bool { + _, ok := _this.Get_().(Token_Le) + return ok +} + +type Token_Ge struct { +} + +func (Token_Ge) isToken() {} + +func (CompanionStruct_Token_) Create_Ge_() Token { + return Token{Token_Ge{}} +} + +func (_this Token) Is_Ge() bool { + _, ok := _this.Get_().(Token_Ge) + return ok +} + +type Token_Between struct { +} + +func (Token_Between) isToken() {} + +func (CompanionStruct_Token_) Create_Between_() Token { + return Token{Token_Between{}} +} + +func (_this Token) Is_Between() bool { + _, ok := _this.Get_().(Token_Between) + return ok +} + +type Token_In struct { +} + +func (Token_In) isToken() {} + +func (CompanionStruct_Token_) Create_In_() Token { + return Token{Token_In{}} +} + +func (_this Token) Is_In() bool { + _, ok := _this.Get_().(Token_In) + return ok +} + +type Token_Open struct { +} + +func (Token_Open) isToken() {} + +func (CompanionStruct_Token_) Create_Open_() Token { + return Token{Token_Open{}} +} + +func (_this Token) Is_Open() bool { + _, ok := _this.Get_().(Token_Open) + return ok +} + +type Token_Close struct { +} + +func (Token_Close) isToken() {} + +func (CompanionStruct_Token_) Create_Close_() Token { + return Token{Token_Close{}} +} + +func (_this Token) Is_Close() bool { + _, ok := _this.Get_().(Token_Close) + return ok +} + +type Token_Comma struct { +} + +func (Token_Comma) isToken() {} + +func (CompanionStruct_Token_) Create_Comma_() Token { + return Token{Token_Comma{}} +} + +func (_this Token) Is_Comma() bool { + _, ok := _this.Get_().(Token_Comma) + return ok +} + +type Token_Not struct { +} + +func (Token_Not) isToken() {} + +func (CompanionStruct_Token_) Create_Not_() Token { + return Token{Token_Not{}} +} + +func (_this Token) Is_Not() bool { + _, ok := _this.Get_().(Token_Not) + return ok +} + +type Token_And struct { +} + +func (Token_And) isToken() {} + +func (CompanionStruct_Token_) Create_And_() Token { + return Token{Token_And{}} +} + +func (_this Token) Is_And() bool { + _, ok := _this.Get_().(Token_And) + return ok +} + +type Token_Or struct { +} + +func (Token_Or) isToken() {} + +func (CompanionStruct_Token_) Create_Or_() Token { + return Token{Token_Or{}} +} + +func (_this Token) Is_Or() bool { + _, ok := _this.Get_().(Token_Or) + return ok +} + +type Token_AttributeExists struct { +} + +func (Token_AttributeExists) isToken() {} + +func (CompanionStruct_Token_) Create_AttributeExists_() Token { + return Token{Token_AttributeExists{}} +} + +func (_this Token) Is_AttributeExists() bool { + _, ok := _this.Get_().(Token_AttributeExists) + return ok +} + +type Token_AttributeNotExists struct { +} + +func (Token_AttributeNotExists) isToken() {} + +func (CompanionStruct_Token_) Create_AttributeNotExists_() Token { + return Token{Token_AttributeNotExists{}} +} + +func (_this Token) Is_AttributeNotExists() bool { + _, ok := _this.Get_().(Token_AttributeNotExists) + return ok +} + +type Token_AttributeType struct { +} + +func (Token_AttributeType) isToken() {} + +func (CompanionStruct_Token_) Create_AttributeType_() Token { + return Token{Token_AttributeType{}} +} + +func (_this Token) Is_AttributeType() bool { + _, ok := _this.Get_().(Token_AttributeType) + return ok +} + +type Token_BeginsWith struct { +} + +func (Token_BeginsWith) isToken() {} + +func (CompanionStruct_Token_) Create_BeginsWith_() Token { + return Token{Token_BeginsWith{}} +} + +func (_this Token) Is_BeginsWith() bool { + _, ok := _this.Get_().(Token_BeginsWith) + return ok +} + +type Token_Contains struct { +} + +func (Token_Contains) isToken() {} + +func (CompanionStruct_Token_) Create_Contains_() Token { + return Token{Token_Contains{}} +} + +func (_this Token) Is_Contains() bool { + _, ok := _this.Get_().(Token_Contains) + return ok +} + +type Token_Size struct { +} + +func (Token_Size) isToken() {} + +func (CompanionStruct_Token_) Create_Size_() Token { + return Token{Token_Size{}} +} + +func (_this Token) Is_Size() bool { + _, ok := _this.Get_().(Token_Size) + return ok +} + +func (CompanionStruct_Token_) Default() Token { + return Companion_Token_.Create_Attr_(_dafny.EmptySeq.SetString(), _dafny.EmptySeq) +} + +func (_this Token) Dtor_s() _dafny.Sequence { + switch data := _this.Get_().(type) { + case Token_Attr: + return data.S + default: + return data.(Token_Value).S + } +} + +func (_this Token) Dtor_loc() _dafny.Sequence { + return _this.Get_().(Token_Attr).Loc +} + +func (_this Token) String() string { + switch data := _this.Get_().(type) { + case nil: + return "null" + case Token_Attr: + { + return "DynamoDBFilterExpr.Token.Attr" + "(" + _dafny.String(data.S) + ", " + _dafny.String(data.Loc) + ")" + } + case Token_Value: + { + return "DynamoDBFilterExpr.Token.Value" + "(" + _dafny.String(data.S) + ")" + } + case Token_Eq: + { + return "DynamoDBFilterExpr.Token.Eq" + } + case Token_Ne: + { + return "DynamoDBFilterExpr.Token.Ne" + } + case Token_Lt: + { + return "DynamoDBFilterExpr.Token.Lt" + } + case Token_Gt: + { + return "DynamoDBFilterExpr.Token.Gt" + } + case Token_Le: + { + return "DynamoDBFilterExpr.Token.Le" + } + case Token_Ge: + { + return "DynamoDBFilterExpr.Token.Ge" + } + case Token_Between: + { + return "DynamoDBFilterExpr.Token.Between" + } + case Token_In: + { + return "DynamoDBFilterExpr.Token.In" + } + case Token_Open: + { + return "DynamoDBFilterExpr.Token.Open" + } + case Token_Close: + { + return "DynamoDBFilterExpr.Token.Close" + } + case Token_Comma: + { + return "DynamoDBFilterExpr.Token.Comma" + } + case Token_Not: + { + return "DynamoDBFilterExpr.Token.Not" + } + case Token_And: + { + return "DynamoDBFilterExpr.Token.And" + } + case Token_Or: + { + return "DynamoDBFilterExpr.Token.Or" + } + case Token_AttributeExists: + { + return "DynamoDBFilterExpr.Token.AttributeExists" + } + case Token_AttributeNotExists: + { + return "DynamoDBFilterExpr.Token.AttributeNotExists" + } + case Token_AttributeType: + { + return "DynamoDBFilterExpr.Token.AttributeType" + } + case Token_BeginsWith: + { + return "DynamoDBFilterExpr.Token.BeginsWith" + } + case Token_Contains: + { + return "DynamoDBFilterExpr.Token.Contains" + } + case Token_Size: + { + return "DynamoDBFilterExpr.Token.Size" + } + default: + { + return "" + } + } +} + +func (_this Token) Equals(other Token) bool { + switch data1 := _this.Get_().(type) { + case Token_Attr: + { + data2, ok := other.Get_().(Token_Attr) + return ok && data1.S.Equals(data2.S) && data1.Loc.Equals(data2.Loc) + } + case Token_Value: + { + data2, ok := other.Get_().(Token_Value) + return ok && data1.S.Equals(data2.S) + } + case Token_Eq: + { + _, ok := other.Get_().(Token_Eq) + return ok + } + case Token_Ne: + { + _, ok := other.Get_().(Token_Ne) + return ok + } + case Token_Lt: + { + _, ok := other.Get_().(Token_Lt) + return ok + } + case Token_Gt: + { + _, ok := other.Get_().(Token_Gt) + return ok + } + case Token_Le: + { + _, ok := other.Get_().(Token_Le) + return ok + } + case Token_Ge: + { + _, ok := other.Get_().(Token_Ge) + return ok + } + case Token_Between: + { + _, ok := other.Get_().(Token_Between) + return ok + } + case Token_In: + { + _, ok := other.Get_().(Token_In) + return ok + } + case Token_Open: + { + _, ok := other.Get_().(Token_Open) + return ok + } + case Token_Close: + { + _, ok := other.Get_().(Token_Close) + return ok + } + case Token_Comma: + { + _, ok := other.Get_().(Token_Comma) + return ok + } + case Token_Not: + { + _, ok := other.Get_().(Token_Not) + return ok + } + case Token_And: + { + _, ok := other.Get_().(Token_And) + return ok + } + case Token_Or: + { + _, ok := other.Get_().(Token_Or) + return ok + } + case Token_AttributeExists: + { + _, ok := other.Get_().(Token_AttributeExists) + return ok + } + case Token_AttributeNotExists: + { + _, ok := other.Get_().(Token_AttributeNotExists) + return ok + } + case Token_AttributeType: + { + _, ok := other.Get_().(Token_AttributeType) + return ok + } + case Token_BeginsWith: + { + _, ok := other.Get_().(Token_BeginsWith) + return ok + } + case Token_Contains: + { + _, ok := other.Get_().(Token_Contains) + return ok + } + case Token_Size: + { + _, ok := other.Get_().(Token_Size) + return ok + } + default: + { + return false // unexpected + } + } +} + +func (_this Token) EqualsGeneric(other interface{}) bool { + typed, ok := other.(Token) + return ok && _this.Equals(typed) +} + +func Type_Token_() _dafny.TypeDescriptor { + return type_Token_{} +} + +type type_Token_ struct { +} + +func (_this type_Token_) Default() interface{} { + return Companion_Token_.Default() +} + +func (_this type_Token_) String() string { + return "DynamoDBFilterExpr.Token" +} +func (_this Token) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = Token{} + +// End of datatype Token + +// Definition of datatype EqualityBeacon +type EqualityBeacon struct { + Data_EqualityBeacon_ +} + +func (_this EqualityBeacon) Get_() Data_EqualityBeacon_ { + return _this.Data_EqualityBeacon_ +} + +type Data_EqualityBeacon_ interface { + isEqualityBeacon() +} + +type CompanionStruct_EqualityBeacon_ struct { +} + +var Companion_EqualityBeacon_ = CompanionStruct_EqualityBeacon_{} + +type EqualityBeacon_EqualityBeacon struct { + Beacon m_Wrappers.Option + ForEquality bool + ForContains bool +} + +func (EqualityBeacon_EqualityBeacon) isEqualityBeacon() {} + +func (CompanionStruct_EqualityBeacon_) Create_EqualityBeacon_(Beacon m_Wrappers.Option, ForEquality bool, ForContains bool) EqualityBeacon { + return EqualityBeacon{EqualityBeacon_EqualityBeacon{Beacon, ForEquality, ForContains}} +} + +func (_this EqualityBeacon) Is_EqualityBeacon() bool { + _, ok := _this.Get_().(EqualityBeacon_EqualityBeacon) + return ok +} + +func (CompanionStruct_EqualityBeacon_) Default() EqualityBeacon { + return Companion_EqualityBeacon_.Create_EqualityBeacon_(m_Wrappers.Companion_Option_.Default(), false, false) +} + +func (_this EqualityBeacon) Dtor_beacon() m_Wrappers.Option { + return _this.Get_().(EqualityBeacon_EqualityBeacon).Beacon +} + +func (_this EqualityBeacon) Dtor_forEquality() bool { + return _this.Get_().(EqualityBeacon_EqualityBeacon).ForEquality +} + +func (_this EqualityBeacon) Dtor_forContains() bool { + return _this.Get_().(EqualityBeacon_EqualityBeacon).ForContains +} + +func (_this EqualityBeacon) String() string { + switch data := _this.Get_().(type) { + case nil: + return "null" + case EqualityBeacon_EqualityBeacon: + { + return "DynamoDBFilterExpr.EqualityBeacon.EqualityBeacon" + "(" + _dafny.String(data.Beacon) + ", " + _dafny.String(data.ForEquality) + ", " + _dafny.String(data.ForContains) + ")" + } + default: + { + return "" + } + } +} + +func (_this EqualityBeacon) Equals(other EqualityBeacon) bool { + switch data1 := _this.Get_().(type) { + case EqualityBeacon_EqualityBeacon: + { + data2, ok := other.Get_().(EqualityBeacon_EqualityBeacon) + return ok && data1.Beacon.Equals(data2.Beacon) && data1.ForEquality == data2.ForEquality && data1.ForContains == data2.ForContains + } + default: + { + return false // unexpected + } + } +} + +func (_this EqualityBeacon) EqualsGeneric(other interface{}) bool { + typed, ok := other.(EqualityBeacon) + return ok && _this.Equals(typed) +} + +func Type_EqualityBeacon_() _dafny.TypeDescriptor { + return type_EqualityBeacon_{} +} + +type type_EqualityBeacon_ struct { +} + +func (_this type_EqualityBeacon_) Default() interface{} { + return Companion_EqualityBeacon_.Default() +} + +func (_this type_EqualityBeacon_) String() string { + return "DynamoDBFilterExpr.EqualityBeacon" +} +func (_this EqualityBeacon) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = EqualityBeacon{} + +// End of datatype EqualityBeacon + +// Definition of datatype StackValue +type StackValue struct { + Data_StackValue_ +} + +func (_this StackValue) Get_() Data_StackValue_ { + return _this.Data_StackValue_ +} + +type Data_StackValue_ interface { + isStackValue() +} + +type CompanionStruct_StackValue_ struct { +} + +var Companion_StackValue_ = CompanionStruct_StackValue_{} + +type StackValue_Bool struct { + B bool +} + +func (StackValue_Bool) isStackValue() {} + +func (CompanionStruct_StackValue_) Create_Bool_(B bool) StackValue { + return StackValue{StackValue_Bool{B}} +} + +func (_this StackValue) Is_Bool() bool { + _, ok := _this.Get_().(StackValue_Bool) + return ok +} + +type StackValue_Str struct { + S m_ComAmazonawsDynamodbTypes.AttributeValue +} + +func (StackValue_Str) isStackValue() {} + +func (CompanionStruct_StackValue_) Create_Str_(S m_ComAmazonawsDynamodbTypes.AttributeValue) StackValue { + return StackValue{StackValue_Str{S}} +} + +func (_this StackValue) Is_Str() bool { + _, ok := _this.Get_().(StackValue_Str) + return ok +} + +type StackValue_DoesNotExist struct { +} + +func (StackValue_DoesNotExist) isStackValue() {} + +func (CompanionStruct_StackValue_) Create_DoesNotExist_() StackValue { + return StackValue{StackValue_DoesNotExist{}} +} + +func (_this StackValue) Is_DoesNotExist() bool { + _, ok := _this.Get_().(StackValue_DoesNotExist) + return ok +} + +func (CompanionStruct_StackValue_) Default() StackValue { + return Companion_StackValue_.Create_Bool_(false) +} + +func (_this StackValue) Dtor_b() bool { + return _this.Get_().(StackValue_Bool).B +} + +func (_this StackValue) Dtor_s() m_ComAmazonawsDynamodbTypes.AttributeValue { + return _this.Get_().(StackValue_Str).S +} + +func (_this StackValue) String() string { + switch data := _this.Get_().(type) { + case nil: + return "null" + case StackValue_Bool: + { + return "DynamoDBFilterExpr.StackValue.Bool" + "(" + _dafny.String(data.B) + ")" + } + case StackValue_Str: + { + return "DynamoDBFilterExpr.StackValue.Str" + "(" + _dafny.String(data.S) + ")" + } + case StackValue_DoesNotExist: + { + return "DynamoDBFilterExpr.StackValue.DoesNotExist" + } + default: + { + return "" + } + } +} + +func (_this StackValue) Equals(other StackValue) bool { + switch data1 := _this.Get_().(type) { + case StackValue_Bool: + { + data2, ok := other.Get_().(StackValue_Bool) + return ok && data1.B == data2.B + } + case StackValue_Str: + { + data2, ok := other.Get_().(StackValue_Str) + return ok && data1.S.Equals(data2.S) + } + case StackValue_DoesNotExist: + { + _, ok := other.Get_().(StackValue_DoesNotExist) + return ok + } + default: + { + return false // unexpected + } + } +} + +func (_this StackValue) EqualsGeneric(other interface{}) bool { + typed, ok := other.(StackValue) + return ok && _this.Equals(typed) +} + +func Type_StackValue_() _dafny.TypeDescriptor { + return type_StackValue_{} +} + +type type_StackValue_ struct { +} + +func (_this type_StackValue_) Default() interface{} { + return Companion_StackValue_.Default() +} + +func (_this type_StackValue_) String() string { + return "DynamoDBFilterExpr.StackValue" +} +func (_this StackValue) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = StackValue{} + +// End of datatype StackValue + +// Definition of datatype ExprContext +type ExprContext struct { + Data_ExprContext_ +} + +func (_this ExprContext) Get_() Data_ExprContext_ { + return _this.Data_ExprContext_ +} + +type Data_ExprContext_ interface { + isExprContext() +} + +type CompanionStruct_ExprContext_ struct { +} + +var Companion_ExprContext_ = CompanionStruct_ExprContext_{} + +type ExprContext_ExprContext struct { + KeyExpr m_Wrappers.Option + FilterExpr m_Wrappers.Option + Values m_Wrappers.Option + Names m_Wrappers.Option +} + +func (ExprContext_ExprContext) isExprContext() {} + +func (CompanionStruct_ExprContext_) Create_ExprContext_(KeyExpr m_Wrappers.Option, FilterExpr m_Wrappers.Option, Values m_Wrappers.Option, Names m_Wrappers.Option) ExprContext { + return ExprContext{ExprContext_ExprContext{KeyExpr, FilterExpr, Values, Names}} +} + +func (_this ExprContext) Is_ExprContext() bool { + _, ok := _this.Get_().(ExprContext_ExprContext) + return ok +} + +func (CompanionStruct_ExprContext_) Default() ExprContext { + return Companion_ExprContext_.Create_ExprContext_(m_Wrappers.Companion_Option_.Default(), m_Wrappers.Companion_Option_.Default(), m_Wrappers.Companion_Option_.Default(), m_Wrappers.Companion_Option_.Default()) +} + +func (_this ExprContext) Dtor_keyExpr() m_Wrappers.Option { + return _this.Get_().(ExprContext_ExprContext).KeyExpr +} + +func (_this ExprContext) Dtor_filterExpr() m_Wrappers.Option { + return _this.Get_().(ExprContext_ExprContext).FilterExpr +} + +func (_this ExprContext) Dtor_values() m_Wrappers.Option { + return _this.Get_().(ExprContext_ExprContext).Values +} + +func (_this ExprContext) Dtor_names() m_Wrappers.Option { + return _this.Get_().(ExprContext_ExprContext).Names +} + +func (_this ExprContext) String() string { + switch data := _this.Get_().(type) { + case nil: + return "null" + case ExprContext_ExprContext: + { + return "DynamoDBFilterExpr.ExprContext.ExprContext" + "(" + _dafny.String(data.KeyExpr) + ", " + _dafny.String(data.FilterExpr) + ", " + _dafny.String(data.Values) + ", " + _dafny.String(data.Names) + ")" + } + default: + { + return "" + } + } +} + +func (_this ExprContext) Equals(other ExprContext) bool { + switch data1 := _this.Get_().(type) { + case ExprContext_ExprContext: + { + data2, ok := other.Get_().(ExprContext_ExprContext) + return ok && data1.KeyExpr.Equals(data2.KeyExpr) && data1.FilterExpr.Equals(data2.FilterExpr) && data1.Values.Equals(data2.Values) && data1.Names.Equals(data2.Names) + } + default: + { + return false // unexpected + } + } +} + +func (_this ExprContext) EqualsGeneric(other interface{}) bool { + typed, ok := other.(ExprContext) + return ok && _this.Equals(typed) +} + +func Type_ExprContext_() _dafny.TypeDescriptor { + return type_ExprContext_{} +} + +type type_ExprContext_ struct { +} + +func (_this type_ExprContext_) Default() interface{} { + return Companion_ExprContext_.Default() +} + +func (_this type_ExprContext_) String() string { + return "DynamoDBFilterExpr.ExprContext" +} +func (_this ExprContext) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = ExprContext{} + +// End of datatype ExprContext + +// Definition of datatype ParsedContext +type ParsedContext struct { + Data_ParsedContext_ +} + +func (_this ParsedContext) Get_() Data_ParsedContext_ { + return _this.Data_ParsedContext_ +} + +type Data_ParsedContext_ interface { + isParsedContext() +} + +type CompanionStruct_ParsedContext_ struct { +} + +var Companion_ParsedContext_ = CompanionStruct_ParsedContext_{} + +type ParsedContext_ParsedContext struct { + Expr _dafny.Sequence + Values _dafny.Map + Names m_Wrappers.Option +} + +func (ParsedContext_ParsedContext) isParsedContext() {} + +func (CompanionStruct_ParsedContext_) Create_ParsedContext_(Expr _dafny.Sequence, Values _dafny.Map, Names m_Wrappers.Option) ParsedContext { + return ParsedContext{ParsedContext_ParsedContext{Expr, Values, Names}} +} + +func (_this ParsedContext) Is_ParsedContext() bool { + _, ok := _this.Get_().(ParsedContext_ParsedContext) + return ok +} + +func (CompanionStruct_ParsedContext_) Default() ParsedContext { + return Companion_ParsedContext_.Create_ParsedContext_(_dafny.EmptySeq, _dafny.EmptyMap, m_Wrappers.Companion_Option_.Default()) +} + +func (_this ParsedContext) Dtor_expr() _dafny.Sequence { + return _this.Get_().(ParsedContext_ParsedContext).Expr +} + +func (_this ParsedContext) Dtor_values() _dafny.Map { + return _this.Get_().(ParsedContext_ParsedContext).Values +} + +func (_this ParsedContext) Dtor_names() m_Wrappers.Option { + return _this.Get_().(ParsedContext_ParsedContext).Names +} + +func (_this ParsedContext) String() string { + switch data := _this.Get_().(type) { + case nil: + return "null" + case ParsedContext_ParsedContext: + { + return "DynamoDBFilterExpr.ParsedContext.ParsedContext" + "(" + _dafny.String(data.Expr) + ", " + _dafny.String(data.Values) + ", " + _dafny.String(data.Names) + ")" + } + default: + { + return "" + } + } +} + +func (_this ParsedContext) Equals(other ParsedContext) bool { + switch data1 := _this.Get_().(type) { + case ParsedContext_ParsedContext: + { + data2, ok := other.Get_().(ParsedContext_ParsedContext) + return ok && data1.Expr.Equals(data2.Expr) && data1.Values.Equals(data2.Values) && data1.Names.Equals(data2.Names) + } + default: + { + return false // unexpected + } + } +} + +func (_this ParsedContext) EqualsGeneric(other interface{}) bool { + typed, ok := other.(ParsedContext) + return ok && _this.Equals(typed) +} + +func Type_ParsedContext_() _dafny.TypeDescriptor { + return type_ParsedContext_{} +} + +type type_ParsedContext_ struct { +} + +func (_this type_ParsedContext_) Default() interface{} { + return Companion_ParsedContext_.Default() +} + +func (_this type_ParsedContext_) String() string { + return "DynamoDBFilterExpr.ParsedContext" +} +func (_this ParsedContext) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = ParsedContext{} + +// End of datatype ParsedContext diff --git a/releases/go/dynamodb-esdk/DynamoDBSupport/DynamoDBSupport.go b/releases/go/dynamodb-esdk/DynamoDBSupport/DynamoDBSupport.go new file mode 100644 index 000000000..55dc2ff4f --- /dev/null +++ b/releases/go/dynamodb-esdk/DynamoDBSupport/DynamoDBSupport.go @@ -0,0 +1,1036 @@ +// Package DynamoDBSupport +// Dafny module DynamoDBSupport compiled into Go + +package DynamoDBSupport + +import ( + os "os" + + m_ComAmazonawsDynamodbTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/dynamodb/ComAmazonawsDynamodbTypes" + m_Com_Amazonaws_Dynamodb "github.com/aws/aws-cryptographic-material-providers-library/releases/go/dynamodb/Com_Amazonaws_Dynamodb" + m_ComAmazonawsKmsTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/kms/ComAmazonawsKmsTypes" + m_Com_Amazonaws_Kms "github.com/aws/aws-cryptographic-material-providers-library/releases/go/kms/Com_Amazonaws_Kms" + m_AlgorithmSuites "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AlgorithmSuites" + m_AwsArnParsing "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsArnParsing" + m_AwsCryptographyKeyStoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyKeyStoreOperations" + m_AwsCryptographyKeyStoreTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyKeyStoreTypes" + m_AwsCryptographyMaterialProvidersOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyMaterialProvidersOperations" + m_AwsCryptographyMaterialProvidersTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyMaterialProvidersTypes" + m_AwsKmsDiscoveryKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsDiscoveryKeyring" + m_AwsKmsEcdhKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsEcdhKeyring" + m_AwsKmsHierarchicalKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsHierarchicalKeyring" + m_AwsKmsKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsKeyring" + m_AwsKmsMrkAreUnique "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkAreUnique" + m_AwsKmsMrkDiscoveryKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkDiscoveryKeyring" + m_AwsKmsMrkKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkKeyring" + m_AwsKmsMrkMatchForDecrypt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkMatchForDecrypt" + m_AwsKmsRsaKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsRsaKeyring" + m_AwsKmsUtils "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsUtils" + m_CMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CMM" + m_CacheConstants "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CacheConstants" + m_CanonicalEncryptionContext "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CanonicalEncryptionContext" + m_Commitment "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Commitment" + m_Constants "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Constants" + m_CreateKeyStoreTable "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CreateKeyStoreTable" + m_CreateKeys "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CreateKeys" + m_DDBKeystoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DDBKeystoreOperations" + m_DefaultCMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DefaultCMM" + m_DefaultClientSupplier "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DefaultClientSupplier" + m_Defaults "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Defaults" + m_DiscoveryMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DiscoveryMultiKeyring" + m_EcdhEdkWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/EcdhEdkWrapping" + m_EdkWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/EdkWrapping" + m_ErrorMessages "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/ErrorMessages" + m_GetKeys "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/GetKeys" + m_IntermediateKeyWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/IntermediateKeyWrapping" + m_KMSKeystoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KMSKeystoreOperations" + m_KeyStore "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KeyStore" + m_KeyStoreErrorMessages "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KeyStoreErrorMessages" + m_Keyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Keyring" + m_KmsArn "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KmsArn" + m_LocalCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/LocalCMC" + m_MaterialProviders "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MaterialProviders" + m_MaterialWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MaterialWrapping" + m_Materials "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Materials" + m_MrkAwareDiscoveryMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MrkAwareDiscoveryMultiKeyring" + m_MrkAwareStrictMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MrkAwareStrictMultiKeyring" + m_MultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MultiKeyring" + m_RawAESKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawAESKeyring" + m_RawECDHKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawECDHKeyring" + m_RawRSAKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawRSAKeyring" + m_RequiredEncryptionContextCMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RequiredEncryptionContextCMM" + m_StormTracker "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StormTracker" + m_StormTrackingCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StormTrackingCMC" + m_StrictMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StrictMultiKeyring" + m_Structure "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Structure" + m_SynchronizedLocalCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/SynchronizedLocalCMC" + m_Utils "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Utils" + m_AtomicPrimitives "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AtomicPrimitives" + m_AwsCryptographyPrimitivesOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AwsCryptographyPrimitivesOperations" + m_AwsCryptographyPrimitivesTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AwsCryptographyPrimitivesTypes" + m_Digest "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/Digest" + m_HKDF "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/HKDF" + m_KdfCtr "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/KdfCtr" + m_Random "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/Random" + m_WrappedHKDF "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/WrappedHKDF" + m_WrappedHMAC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/WrappedHMAC" + m_Actions "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Actions" + m_Base64 "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Base64" + m_Base64Lemmas "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Base64Lemmas" + m_BoundedInts "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/BoundedInts" + m_DivInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivInternals" + m_DivInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivInternalsNonlinear" + m_DivMod "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivMod" + m_FileIO "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/FileIO" + m_FloatCompare "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/FloatCompare" + m_Functions "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Functions" + m_GeneralInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/GeneralInternals" + m_GetOpt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/GetOpt" + m_HexStrings "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/HexStrings" + m_Logarithm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Logarithm" + m__Math "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Math_" + m_ModInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/ModInternals" + m_ModInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/ModInternalsNonlinear" + m_Mul "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Mul" + m_MulInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/MulInternals" + m_MulInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/MulInternalsNonlinear" + m_Power "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Power" + m_Relations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Relations" + m_Seq "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Seq" + m_Seq_MergeSort "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Seq_MergeSort" + m_SortedSets "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/SortedSets" + m_Sorting "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Sorting" + m_StandardLibrary "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary" + m_StandardLibraryInterop "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibraryInterop" + m_StandardLibrary_MemoryMath "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_MemoryMath" + m_StandardLibrary_Sequence "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_Sequence" + m_StandardLibrary_String "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_String" + m_StandardLibrary_UInt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_UInt" + m_Streams "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Streams" + m_UnicodeStrings "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/UnicodeStrings" + m__Unicode "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Unicode_" + m_Utf16EncodingForm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Utf16EncodingForm" + m_Utf8EncodingForm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Utf8EncodingForm" + m_Wrappers "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Wrappers" + m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations" + m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes" + m_AwsCryptographyDbEncryptionSdkDynamoDbOperations "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbOperations" + m_AwsCryptographyDbEncryptionSdkDynamoDbTypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbTypes" + m_AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations" + m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes" + m_BaseBeacon "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/BaseBeacon" + m_Canonize "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/Canonize" + m_CompoundBeacon "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/CompoundBeacon" + m_DdbVirtualFields "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DdbVirtualFields" + m_DynamoDBFilterExpr "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDBFilterExpr" + m_DynamoDbEncryption "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbEncryption" + m_DynamoDbEncryptionBranchKeyIdSupplier "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbEncryptionBranchKeyIdSupplier" + m_DynamoDbEncryptionUtil "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbEncryptionUtil" + m_DynamoDbItemEncryptor "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbItemEncryptor" + m_DynamoDbItemEncryptorUtil "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbItemEncryptorUtil" + m_DynamoDbNormalizeNumber "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbNormalizeNumber" + m_DynamoDbUpdateExpr "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbUpdateExpr" + m_DynamoToStruct "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoToStruct" + m_InternalLegacyOverride "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/InternalLegacyOverride" + m__Maps "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/Maps_" + m_OptimizedMergeSort "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/OptimizedMergeSort" + m_SearchableEncryptionInfo "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/SearchableEncryptionInfo" + m_Sets "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/Sets" + m_SortCanon "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/SortCanon" + m_StructuredEncryption "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryption" + m_StructuredEncryptionCrypt "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionCrypt" + m_StructuredEncryptionFooter "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionFooter" + m_StructuredEncryptionHeader "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionHeader" + m_StructuredEncryptionPaths "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionPaths" + m_StructuredEncryptionUtil "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionUtil" + m_TermLoc "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/TermLoc" + m__System "github.com/dafny-lang/DafnyRuntimeGo/v4/System_" + _dafny "github.com/dafny-lang/DafnyRuntimeGo/v4/dafny" +) + +var _ = os.Args +var _ _dafny.Dummy__ +var _ m__System.Dummy__ +var _ m_Wrappers.Dummy__ +var _ m_BoundedInts.Dummy__ +var _ m_StandardLibrary_UInt.Dummy__ +var _ m_StandardLibrary_MemoryMath.Dummy__ +var _ m_StandardLibrary_Sequence.Dummy__ +var _ m_StandardLibrary_String.Dummy__ +var _ m_StandardLibrary.Dummy__ +var _ m_AwsCryptographyPrimitivesTypes.Dummy__ +var _ m_Random.Dummy__ +var _ m_Digest.Dummy__ +var _ m_WrappedHMAC.Dummy__ +var _ m_HKDF.Dummy__ +var _ m_WrappedHKDF.Dummy__ +var _ m_KdfCtr.Dummy__ +var _ m_AwsCryptographyPrimitivesOperations.Dummy__ +var _ m_AtomicPrimitives.Dummy__ +var _ m_ComAmazonawsDynamodbTypes.Dummy__ +var _ m_ComAmazonawsKmsTypes.Dummy__ +var _ m_AwsCryptographyKeyStoreTypes.Dummy__ +var _ m_AwsCryptographyMaterialProvidersTypes.Dummy__ +var _ m_Base64.Dummy__ +var _ m_AlgorithmSuites.Dummy__ +var _ m_Materials.Dummy__ +var _ m_Keyring.Dummy__ +var _ m_Relations.Dummy__ +var _ m_Seq_MergeSort.Dummy__ +var _ m__Math.Dummy__ +var _ m_Seq.Dummy__ +var _ m_Actions.Dummy__ +var _ m_CanonicalEncryptionContext.Dummy__ +var _ m_MaterialWrapping.Dummy__ +var _ m_IntermediateKeyWrapping.Dummy__ +var _ m_EdkWrapping.Dummy__ +var _ m_ErrorMessages.Dummy__ +var _ m_RawAESKeyring.Dummy__ +var _ m_AwsArnParsing.Dummy__ +var _ m_Constants.Dummy__ +var _ m_EcdhEdkWrapping.Dummy__ +var _ m_RawECDHKeyring.Dummy__ +var _ m_RawRSAKeyring.Dummy__ +var _ m_AwsKmsMrkMatchForDecrypt.Dummy__ +var _ m_AwsKmsUtils.Dummy__ +var _ m_AwsKmsKeyring.Dummy__ +var _ m_AwsKmsDiscoveryKeyring.Dummy__ +var _ m_AwsKmsEcdhKeyring.Dummy__ +var _ m_FileIO.Dummy__ +var _ m_LocalCMC.Dummy__ +var _ m_SynchronizedLocalCMC.Dummy__ +var _ m_StormTracker.Dummy__ +var _ m_StormTrackingCMC.Dummy__ +var _ m_CacheConstants.Dummy__ +var _ m_AwsKmsHierarchicalKeyring.Dummy__ +var _ m_AwsKmsMrkDiscoveryKeyring.Dummy__ +var _ m_AwsKmsMrkKeyring.Dummy__ +var _ m_AwsKmsRsaKeyring.Dummy__ +var _ m_MultiKeyring.Dummy__ +var _ m_AwsKmsMrkAreUnique.Dummy__ +var _ m_StrictMultiKeyring.Dummy__ +var _ m_Com_Amazonaws_Kms.Dummy__ +var _ m_Com_Amazonaws_Dynamodb.Dummy__ +var _ m_DiscoveryMultiKeyring.Dummy__ +var _ m_MrkAwareDiscoveryMultiKeyring.Dummy__ +var _ m_MrkAwareStrictMultiKeyring.Dummy__ +var _ m_CMM.Dummy__ +var _ m_Defaults.Dummy__ +var _ m_Commitment.Dummy__ +var _ m_DefaultCMM.Dummy__ +var _ m_DefaultClientSupplier.Dummy__ +var _ m_Utils.Dummy__ +var _ m_RequiredEncryptionContextCMM.Dummy__ +var _ m_AwsCryptographyMaterialProvidersOperations.Dummy__ +var _ m_MaterialProviders.Dummy__ +var _ m_KeyStoreErrorMessages.Dummy__ +var _ m_KmsArn.Dummy__ +var _ m_Structure.Dummy__ +var _ m_KMSKeystoreOperations.Dummy__ +var _ m_DDBKeystoreOperations.Dummy__ +var _ m_CreateKeys.Dummy__ +var _ m_CreateKeyStoreTable.Dummy__ +var _ m_GetKeys.Dummy__ +var _ m_AwsCryptographyKeyStoreOperations.Dummy__ +var _ m_KeyStore.Dummy__ +var _ m__Unicode.Dummy__ +var _ m_Functions.Dummy__ +var _ m_Utf8EncodingForm.Dummy__ +var _ m_Utf16EncodingForm.Dummy__ +var _ m_UnicodeStrings.Dummy__ +var _ m_GeneralInternals.Dummy__ +var _ m_MulInternalsNonlinear.Dummy__ +var _ m_MulInternals.Dummy__ +var _ m_Mul.Dummy__ +var _ m_ModInternalsNonlinear.Dummy__ +var _ m_DivInternalsNonlinear.Dummy__ +var _ m_ModInternals.Dummy__ +var _ m_DivInternals.Dummy__ +var _ m_DivMod.Dummy__ +var _ m_Power.Dummy__ +var _ m_Logarithm.Dummy__ +var _ m_StandardLibraryInterop.Dummy__ +var _ m_Streams.Dummy__ +var _ m_Sorting.Dummy__ +var _ m_HexStrings.Dummy__ +var _ m_GetOpt.Dummy__ +var _ m_FloatCompare.Dummy__ +var _ m_Base64Lemmas.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Dummy__ +var _ m_StructuredEncryptionUtil.Dummy__ +var _ m_Sets.Dummy__ +var _ m_StructuredEncryptionPaths.Dummy__ +var _ m_StructuredEncryptionHeader.Dummy__ +var _ m_StructuredEncryptionFooter.Dummy__ +var _ m_OptimizedMergeSort.Dummy__ +var _ m_SortCanon.Dummy__ +var _ m_Canonize.Dummy__ +var _ m_StructuredEncryptionCrypt.Dummy__ +var _ m__Maps.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations.Dummy__ +var _ m_StructuredEncryption.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Dummy__ +var _ m_DynamoDbEncryptionUtil.Dummy__ +var _ m_DynamoDbNormalizeNumber.Dummy__ +var _ m_DynamoToStruct.Dummy__ +var _ m_DynamoDbItemEncryptorUtil.Dummy__ +var _ m_InternalLegacyOverride.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations.Dummy__ +var _ m_DynamoDbItemEncryptor.Dummy__ +var _ m_DynamoDbEncryptionBranchKeyIdSupplier.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbOperations.Dummy__ +var _ m_DynamoDbEncryption.Dummy__ +var _ m_TermLoc.Dummy__ +var _ m_DdbVirtualFields.Dummy__ +var _ m_DynamoDbUpdateExpr.Dummy__ +var _ m_BaseBeacon.Dummy__ +var _ m_CompoundBeacon.Dummy__ +var _ m_SearchableEncryptionInfo.Dummy__ +var _ m_DynamoDBFilterExpr.Dummy__ + +type Dummy__ struct{} + +// Definition of class Default__ +type Default__ struct { + dummy byte +} + +func New_Default___() *Default__ { + _this := Default__{} + + return &_this +} + +type CompanionStruct_Default___ struct { +} + +var Companion_Default___ = CompanionStruct_Default___{} + +func (_this *Default__) Equals(other *Default__) bool { + return _this == other +} + +func (_this *Default__) EqualsGeneric(x interface{}) bool { + other, ok := x.(*Default__) + return ok && _this.Equals(other) +} + +func (*Default__) String() string { + return "DynamoDBSupport.Default__" +} +func (_this *Default__) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = &Default__{} + +func (_static *CompanionStruct_Default___) IsWriteable(item _dafny.Map) m_Wrappers.Result { + var ret m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(false) + _ = ret + var _0_keys _dafny.Sequence + _ = _0_keys + _0_keys = m_SortedSets.SetToOrderedSequence2((item).Keys(), func(coer119 func(_dafny.Char, _dafny.Char) bool) func(interface{}, interface{}) bool { + return func(arg149 interface{}, arg150 interface{}) bool { + return coer119(arg149.(_dafny.Char), arg150.(_dafny.Char)) + } + }(m_DynamoDbEncryptionUtil.Companion_Default___.CharLess)) + var _1_rp _dafny.Sequence + _ = _1_rp + _1_rp = m_DynamoDbEncryptionUtil.Companion_Default___.ReservedPrefix() + var _hi0 uint64 = uint64((_0_keys).Cardinality()) + _ = _hi0 + for _2_i := uint64(0); _2_i < _hi0; _2_i++ { + if _dafny.Companion_Sequence_.IsPrefixOf(_1_rp, (_0_keys).Select(uint32(_2_i)).(_dafny.Sequence)) { + var _3_result _dafny.Sequence + _ = _3_result + _3_result = _dafny.SeqOfString("Writing reserved attributes not allowed : ") + var _hi1 uint64 = uint64((_0_keys).Cardinality()) + _ = _hi1 + for _4_j := _2_i; _4_j < _hi1; _4_j++ { + if _dafny.Companion_Sequence_.IsPrefixOf(_1_rp, (_0_keys).Select(uint32(_2_i)).(_dafny.Sequence)) { + _3_result = _dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_3_result, (_0_keys).Select(uint32(_2_i)).(_dafny.Sequence)), _dafny.SeqOfString("\n")) + } + } + ret = m_Wrappers.Companion_Result_.Create_Failure_(_3_result) + return ret + } + } + ret = m_Wrappers.Companion_Result_.Create_Success_(true) + return ret + return ret +} +func (_static *CompanionStruct_Default___) GetEncryptedAttributes(actions _dafny.Map, expr m_Wrappers.Option, attrNames m_Wrappers.Option) _dafny.Sequence { + if (expr).Is_None() { + return _dafny.SeqOf() + } else { + var _0_attrs _dafny.Sequence = m_DynamoDBFilterExpr.Companion_Default___.ExtractAttributes((expr).Dtor_value().(_dafny.Sequence), attrNames) + _ = _0_attrs + return m_Seq.Companion_Default___.Filter(func(coer120 func(_dafny.Sequence) bool) func(interface{}) bool { + return func(arg151 interface{}) bool { + return coer120(arg151.(_dafny.Sequence)) + } + }((func(_1_actions _dafny.Map) func(_dafny.Sequence) bool { + return func(_2_attr _dafny.Sequence) bool { + return Companion_Default___.IsEncrypted(_1_actions, _2_attr) + } + })(actions)), _0_attrs) + } +} +func (_static *CompanionStruct_Default___) TestConditionExpression(actions _dafny.Map, expr m_Wrappers.Option, attrNames m_Wrappers.Option, attrValues m_Wrappers.Option) m_Wrappers.Result { + if (expr).Is_Some() { + var _0_attrs _dafny.Sequence = Companion_Default___.GetEncryptedAttributes(actions, expr, attrNames) + _ = _0_attrs + if (uint64((_0_attrs).Cardinality())) == (uint64(0)) { + return m_Wrappers.Companion_Result_.Create_Success_(true) + } else { + return m_Wrappers.Companion_Result_.Create_Failure_(_dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("Condition Expressions forbidden on encrypted attributes : "), m_StandardLibrary.Companion_Default___.Join(_0_attrs, _dafny.SeqOfString(",")))) + } + } else { + return m_Wrappers.Companion_Result_.Create_Success_(true) + } +} +func (_static *CompanionStruct_Default___) IsSigned(actions _dafny.Map, attr _dafny.Sequence) bool { + return ((actions).Contains(attr)) && (!((actions).Get(attr).(m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.CryptoAction)).Equals(m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Companion_CryptoAction_.Create_DO__NOTHING_())) +} +func (_static *CompanionStruct_Default___) IsEncrypted(actions _dafny.Map, attr _dafny.Sequence) bool { + return ((actions).Contains(attr)) && (((actions).Get(attr).(m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.CryptoAction)).Equals(m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Companion_CryptoAction_.Create_ENCRYPT__AND__SIGN_())) +} +func (_static *CompanionStruct_Default___) TestUpdateExpression(actions _dafny.Map, expr m_Wrappers.Option, attrNames m_Wrappers.Option, attrValues m_Wrappers.Option) m_Wrappers.Result { + if (expr).Is_Some() { + var _0_attrs _dafny.Sequence = m_DynamoDbUpdateExpr.Companion_Default___.ExtractAttributes((expr).Dtor_value().(_dafny.Sequence), attrNames) + _ = _0_attrs + var _1_encryptedAttrs _dafny.Sequence = m_Seq.Companion_Default___.Filter(func(coer121 func(_dafny.Sequence) bool) func(interface{}) bool { + return func(arg152 interface{}) bool { + return coer121(arg152.(_dafny.Sequence)) + } + }((func(_2_actions _dafny.Map) func(_dafny.Sequence) bool { + return func(_3_s _dafny.Sequence) bool { + return Companion_Default___.IsSigned(_2_actions, _3_s) + } + })(actions)), _0_attrs) + _ = _1_encryptedAttrs + if (uint64((_1_encryptedAttrs).Cardinality())) == (uint64(0)) { + return m_Wrappers.Companion_Result_.Create_Success_(true) + } else { + return m_Wrappers.Companion_Result_.Create_Failure_(_dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("Update Expressions forbidden on signed attributes : "), m_StandardLibrary.Companion_Default___.Join(_1_encryptedAttrs, _dafny.SeqOfString(",")))) + } + } else { + return m_Wrappers.Companion_Result_.Create_Success_(true) + } +} +func (_static *CompanionStruct_Default___) GetEncryptedBeacons(search m_Wrappers.Option, item _dafny.Map, keyId m_DynamoDbEncryptionUtil.MaybeKeyId) m_Wrappers.Result { + var output m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(_dafny.EmptyMap) + _ = output + if (search).Is_None() { + output = m_Wrappers.Companion_Result_.Create_Success_(_dafny.NewMapBuilder().ToMap()) + return output + } else { + var _out0 m_Wrappers.Result + _ = _out0 + _out0 = ((search).Dtor_value().(m_SearchableEncryptionInfo.SearchInfo)).GenerateEncryptedBeacons(item, keyId) + output = _out0 + } + return output +} +func (_static *CompanionStruct_Default___) AddSignedBeacons(search m_Wrappers.Option, item _dafny.Map) m_Wrappers.Result { + var output m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(_dafny.EmptyMap) + _ = output + if (search).Is_None() { + output = m_Wrappers.Companion_Result_.Create_Success_(item) + return output + } else { + var _0_valueOrError0 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(_dafny.EmptyMap) + _ = _0_valueOrError0 + var _out0 m_Wrappers.Result + _ = _out0 + _out0 = ((search).Dtor_value().(m_SearchableEncryptionInfo.SearchInfo)).GenerateSignedBeacons(item) + _0_valueOrError0 = _out0 + if (_0_valueOrError0).IsFailure() { + output = (_0_valueOrError0).PropagateFailure() + return output + } + var _1_newAttrs _dafny.Map + _ = _1_newAttrs + _1_newAttrs = (_0_valueOrError0).Extract().(_dafny.Map) + var _2_badAttrs _dafny.Set + _ = _2_badAttrs + _2_badAttrs = func() _dafny.Set { + var _coll0 = _dafny.NewBuilder() + _ = _coll0 + for _iter23 := _dafny.Iterate((_1_newAttrs).Keys().Elements()); ; { + _compr_0, _ok23 := _iter23() + if !_ok23 { + break + } + var _3_k _dafny.Sequence + _3_k = interface{}(_compr_0).(_dafny.Sequence) + if m_ComAmazonawsDynamodbTypes.Companion_AttributeName_.Is_(_3_k) { + if (((_1_newAttrs).Contains(_3_k)) && ((item).Contains(_3_k))) && (!((item).Get(_3_k).(m_ComAmazonawsDynamodbTypes.AttributeValue)).Equals((_1_newAttrs).Get(_3_k).(m_ComAmazonawsDynamodbTypes.AttributeValue))) { + _coll0.Add(_3_k) + } + } + } + return _coll0.ToSet() + }() + var _4_valueOrError1 m_Wrappers.Outcome = m_Wrappers.Companion_Outcome_.Default() + _ = _4_valueOrError1 + _4_valueOrError1 = m_Wrappers.Companion_Default___.Need((uint64((_2_badAttrs).CardinalityInt())) == (uint64(0)), m_DynamoDbEncryptionUtil.Companion_Default___.E(_dafny.SeqOfString("Signed beacons have generated values different from supplied values."))) + if (_4_valueOrError1).IsFailure() { + output = (_4_valueOrError1).PropagateFailure() + return output + } + var _5_version _dafny.Map + _ = _5_version + _5_version = _dafny.NewMapBuilder().ToMap().UpdateUnsafe(Companion_Default___.VersionTag(), m_DdbVirtualFields.Companion_Default___.DS(_dafny.SeqOfString(" "))) + var _6_both _dafny.Set + _ = _6_both + _6_both = ((_1_newAttrs).Keys()).Intersection((item).Keys()) + var _7_bad _dafny.Set + _ = _7_bad + _7_bad = func() _dafny.Set { + var _coll1 = _dafny.NewBuilder() + _ = _coll1 + for _iter24 := _dafny.Iterate((_6_both).Elements()); ; { + _compr_1, _ok24 := _iter24() + if !_ok24 { + break + } + var _8_k _dafny.Sequence + _8_k = interface{}(_compr_1).(_dafny.Sequence) + if m_ComAmazonawsDynamodbTypes.Companion_AttributeName_.Is_(_8_k) { + if ((_6_both).Contains(_8_k)) && (!((_1_newAttrs).Get(_8_k).(m_ComAmazonawsDynamodbTypes.AttributeValue)).Equals((item).Get(_8_k).(m_ComAmazonawsDynamodbTypes.AttributeValue))) { + _coll1.Add(_8_k) + } + } + } + return _coll1.ToSet() + }() + if (uint64(0)) < (uint64((_7_bad).CardinalityInt())) { + var _9_badSeq _dafny.Sequence + _ = _9_badSeq + _9_badSeq = m_SortedSets.SetToOrderedSequence2(_7_bad, func(coer122 func(_dafny.Char, _dafny.Char) bool) func(interface{}, interface{}) bool { + return func(arg153 interface{}, arg154 interface{}) bool { + return coer122(arg153.(_dafny.Char), arg154.(_dafny.Char)) + } + }(m_DynamoDbEncryptionUtil.Companion_Default___.CharLess)) + output = m_Wrappers.Companion_Result_.Create_Failure_(m_DynamoDbEncryptionUtil.Companion_Default___.E(_dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("Supplied Beacons do not match calculated beacons : "), m_StandardLibrary.Companion_Default___.Join(_9_badSeq, _dafny.SeqOfString(", "))))) + return output + } + if ((((((search).Dtor_value().(m_SearchableEncryptionInfo.SearchInfo)).Curr()).Dtor_keySource()).Dtor_keyLoc()).Is_MultiLoc()) && ((((((search).Dtor_value().(m_SearchableEncryptionInfo.SearchInfo)).Curr()).Dtor_keySource()).Dtor_keyLoc()).Dtor_deleteKey()) { + var _10_newItem _dafny.Map + _ = _10_newItem + _10_newItem = func() _dafny.Map { + var _coll2 = _dafny.NewMapBuilder() + _ = _coll2 + for _iter25 := _dafny.Iterate((item).Keys().Elements()); ; { + _compr_2, _ok25 := _iter25() + if !_ok25 { + break + } + var _11_k _dafny.Sequence + _11_k = interface{}(_compr_2).(_dafny.Sequence) + if m_ComAmazonawsDynamodbTypes.Companion_AttributeName_.Is_(_11_k) { + if ((item).Contains(_11_k)) && (!_dafny.Companion_Sequence_.Equal(_11_k, (((((search).Dtor_value().(m_SearchableEncryptionInfo.SearchInfo)).Curr()).Dtor_keySource()).Dtor_keyLoc()).Dtor_keyName())) { + _coll2.Add(_11_k, (item).Get(_11_k).(m_ComAmazonawsDynamodbTypes.AttributeValue)) + } + } + } + return _coll2.ToMap() + }() + output = m_Wrappers.Companion_Result_.Create_Success_(((_10_newItem).Merge(_1_newAttrs)).Merge(_5_version)) + return output + } else { + output = m_Wrappers.Companion_Result_.Create_Success_(((item).Merge(_1_newAttrs)).Merge(_5_version)) + return output + } + } + return output +} +func (_static *CompanionStruct_Default___) DoRemoveBeacons(item _dafny.Map) _dafny.Map { + return func() _dafny.Map { + var _coll0 = _dafny.NewMapBuilder() + _ = _coll0 + for _iter26 := _dafny.Iterate((item).Keys().Elements()); ; { + _compr_0, _ok26 := _iter26() + if !_ok26 { + break + } + var _0_k _dafny.Sequence + _0_k = interface{}(_compr_0).(_dafny.Sequence) + if m_ComAmazonawsDynamodbTypes.Companion_AttributeName_.Is_(_0_k) { + if ((item).Contains(_0_k)) && (!(_dafny.Companion_Sequence_.IsPrefixOf(m_DynamoDbEncryptionUtil.Companion_Default___.ReservedPrefix(), _0_k))) { + _coll0.Add(_0_k, (item).Get(_0_k).(m_ComAmazonawsDynamodbTypes.AttributeValue)) + } + } + } + return _coll0.ToMap() + }() +} +func (_static *CompanionStruct_Default___) RemoveBeacons(search m_Wrappers.Option, item _dafny.Map) m_Wrappers.Result { + return m_Wrappers.Companion_Result_.Create_Success_(Companion_Default___.DoRemoveBeacons(item)) +} +func (_static *CompanionStruct_Default___) QueryInputForBeacons(search m_Wrappers.Option, actions _dafny.Map, req m_ComAmazonawsDynamodbTypes.QueryInput) m_Wrappers.Result { + var output m_Wrappers.Result = m_Wrappers.Result{} + _ = output + if (search).Is_None() { + var _0_valueOrError0 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(false) + _ = _0_valueOrError0 + var _out0 m_Wrappers.Result + _ = _out0 + _out0 = m_DynamoDBFilterExpr.Companion_Default___.TestBeaconize(actions, (req).Dtor_KeyConditionExpression(), (req).Dtor_FilterExpression(), (req).Dtor_ExpressionAttributeNames()) + _0_valueOrError0 = _out0 + if (_0_valueOrError0).IsFailure() { + output = (_0_valueOrError0).PropagateFailure() + return output + } + var _1___v0 bool + _ = _1___v0 + _1___v0 = (_0_valueOrError0).Extract().(bool) + output = m_Wrappers.Companion_Result_.Create_Success_(req) + return output + } else { + var _2_valueOrError1 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(m_DynamoDbEncryptionUtil.Companion_MaybeKeyId_.Default()) + _ = _2_valueOrError1 + _2_valueOrError1 = m_DynamoDBFilterExpr.Companion_Default___.GetBeaconKeyId(((search).Dtor_value().(m_SearchableEncryptionInfo.SearchInfo)).Curr(), (req).Dtor_KeyConditionExpression(), (req).Dtor_FilterExpression(), (req).Dtor_ExpressionAttributeValues(), (req).Dtor_ExpressionAttributeNames()) + if (_2_valueOrError1).IsFailure() { + output = (_2_valueOrError1).PropagateFailure() + return output + } + var _3_keyId m_DynamoDbEncryptionUtil.MaybeKeyId + _ = _3_keyId + _3_keyId = (_2_valueOrError1).Extract().(m_DynamoDbEncryptionUtil.MaybeKeyId) + var _4_oldContext m_DynamoDBFilterExpr.ExprContext + _ = _4_oldContext + _4_oldContext = m_DynamoDBFilterExpr.Companion_ExprContext_.Create_ExprContext_((req).Dtor_KeyConditionExpression(), (req).Dtor_FilterExpression(), (req).Dtor_ExpressionAttributeValues(), (req).Dtor_ExpressionAttributeNames()) + var _5_valueOrError2 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(m_DynamoDBFilterExpr.Companion_ExprContext_.Default()) + _ = _5_valueOrError2 + var _out1 m_Wrappers.Result + _ = _out1 + _out1 = m_DynamoDBFilterExpr.Companion_Default___.Beaconize(((search).Dtor_value().(m_SearchableEncryptionInfo.SearchInfo)).Curr(), _4_oldContext, _3_keyId, false) + _5_valueOrError2 = _out1 + if (_5_valueOrError2).IsFailure() { + output = (_5_valueOrError2).PropagateFailure() + return output + } + var _6_newContext m_DynamoDBFilterExpr.ExprContext + _ = _6_newContext + _6_newContext = (_5_valueOrError2).Extract().(m_DynamoDBFilterExpr.ExprContext) + var _pat_let_tv0 = _6_newContext + _ = _pat_let_tv0 + var _pat_let_tv1 = _6_newContext + _ = _pat_let_tv1 + var _pat_let_tv2 = _6_newContext + _ = _pat_let_tv2 + var _pat_let_tv3 = _6_newContext + _ = _pat_let_tv3 + output = m_Wrappers.Companion_Result_.Create_Success_(func(_pat_let1_0 m_ComAmazonawsDynamodbTypes.QueryInput) m_ComAmazonawsDynamodbTypes.QueryInput { + return func(_7_dt__update__tmp_h0 m_ComAmazonawsDynamodbTypes.QueryInput) m_ComAmazonawsDynamodbTypes.QueryInput { + return func(_pat_let2_0 m_Wrappers.Option) m_ComAmazonawsDynamodbTypes.QueryInput { + return func(_8_dt__update_hExpressionAttributeValues_h0 m_Wrappers.Option) m_ComAmazonawsDynamodbTypes.QueryInput { + return func(_pat_let3_0 m_Wrappers.Option) m_ComAmazonawsDynamodbTypes.QueryInput { + return func(_9_dt__update_hExpressionAttributeNames_h0 m_Wrappers.Option) m_ComAmazonawsDynamodbTypes.QueryInput { + return func(_pat_let4_0 m_Wrappers.Option) m_ComAmazonawsDynamodbTypes.QueryInput { + return func(_10_dt__update_hFilterExpression_h0 m_Wrappers.Option) m_ComAmazonawsDynamodbTypes.QueryInput { + return func(_pat_let5_0 m_Wrappers.Option) m_ComAmazonawsDynamodbTypes.QueryInput { + return func(_11_dt__update_hKeyConditionExpression_h0 m_Wrappers.Option) m_ComAmazonawsDynamodbTypes.QueryInput { + return m_ComAmazonawsDynamodbTypes.Companion_QueryInput_.Create_QueryInput_((_7_dt__update__tmp_h0).Dtor_TableName(), (_7_dt__update__tmp_h0).Dtor_IndexName(), (_7_dt__update__tmp_h0).Dtor_Select(), (_7_dt__update__tmp_h0).Dtor_AttributesToGet(), (_7_dt__update__tmp_h0).Dtor_Limit(), (_7_dt__update__tmp_h0).Dtor_ConsistentRead(), (_7_dt__update__tmp_h0).Dtor_KeyConditions(), (_7_dt__update__tmp_h0).Dtor_QueryFilter(), (_7_dt__update__tmp_h0).Dtor_ConditionalOperator(), (_7_dt__update__tmp_h0).Dtor_ScanIndexForward(), (_7_dt__update__tmp_h0).Dtor_ExclusiveStartKey(), (_7_dt__update__tmp_h0).Dtor_ReturnConsumedCapacity(), (_7_dt__update__tmp_h0).Dtor_ProjectionExpression(), _10_dt__update_hFilterExpression_h0, _11_dt__update_hKeyConditionExpression_h0, _9_dt__update_hExpressionAttributeNames_h0, _8_dt__update_hExpressionAttributeValues_h0) + }(_pat_let5_0) + }((_pat_let_tv3).Dtor_keyExpr()) + }(_pat_let4_0) + }((_pat_let_tv2).Dtor_filterExpr()) + }(_pat_let3_0) + }((_pat_let_tv1).Dtor_names()) + }(_pat_let2_0) + }((_pat_let_tv0).Dtor_values()) + }(_pat_let1_0) + }(req)) + return output + } + return output +} +func (_static *CompanionStruct_Default___) QueryOutputForBeacons(search m_Wrappers.Option, req m_ComAmazonawsDynamodbTypes.QueryInput, resp m_ComAmazonawsDynamodbTypes.QueryOutput) m_Wrappers.Result { + var output m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(m_ComAmazonawsDynamodbTypes.Companion_QueryOutput_.Default()) + _ = output + if (search).Is_None() { + var _0_trimmedItems _dafny.Sequence + _ = _0_trimmedItems + _0_trimmedItems = m_Seq.Companion_Default___.Map(func(coer123 func(_dafny.Map) _dafny.Map) func(interface{}) interface{} { + return func(arg155 interface{}) interface{} { + return coer123(arg155.(_dafny.Map)) + } + }(func(_1_i _dafny.Map) _dafny.Map { + return Companion_Default___.DoRemoveBeacons(_1_i) + }), ((resp).Dtor_Items()).Dtor_value().(_dafny.Sequence)) + var _pat_let_tv0 = _0_trimmedItems + _ = _pat_let_tv0 + output = m_Wrappers.Companion_Result_.Create_Success_(func(_pat_let6_0 m_ComAmazonawsDynamodbTypes.QueryOutput) m_ComAmazonawsDynamodbTypes.QueryOutput { + return func(_2_dt__update__tmp_h0 m_ComAmazonawsDynamodbTypes.QueryOutput) m_ComAmazonawsDynamodbTypes.QueryOutput { + return func(_pat_let7_0 m_Wrappers.Option) m_ComAmazonawsDynamodbTypes.QueryOutput { + return func(_3_dt__update_hItems_h0 m_Wrappers.Option) m_ComAmazonawsDynamodbTypes.QueryOutput { + return m_ComAmazonawsDynamodbTypes.Companion_QueryOutput_.Create_QueryOutput_(_3_dt__update_hItems_h0, (_2_dt__update__tmp_h0).Dtor_Count(), (_2_dt__update__tmp_h0).Dtor_ScannedCount(), (_2_dt__update__tmp_h0).Dtor_LastEvaluatedKey(), (_2_dt__update__tmp_h0).Dtor_ConsumedCapacity()) + }(_pat_let7_0) + }(m_Wrappers.Companion_Option_.Create_Some_(_pat_let_tv0)) + }(_pat_let6_0) + }(resp)) + return output + } else { + var _4_valueOrError0 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(_dafny.EmptySeq) + _ = _4_valueOrError0 + var _out0 m_Wrappers.Result + _ = _out0 + _out0 = m_DynamoDBFilterExpr.Companion_Default___.FilterResults(((search).Dtor_value().(m_SearchableEncryptionInfo.SearchInfo)).Curr(), ((resp).Dtor_Items()).Dtor_value().(_dafny.Sequence), (req).Dtor_KeyConditionExpression(), (req).Dtor_FilterExpression(), (req).Dtor_ExpressionAttributeNames(), (req).Dtor_ExpressionAttributeValues()) + _4_valueOrError0 = _out0 + if (_4_valueOrError0).IsFailure() { + output = (_4_valueOrError0).PropagateFailure() + return output + } + var _5_newItems _dafny.Sequence + _ = _5_newItems + _5_newItems = (_4_valueOrError0).Extract().(_dafny.Sequence) + var _6_valueOrError1 m_Wrappers.Outcome = m_Wrappers.Companion_Outcome_.Default() + _ = _6_valueOrError1 + _6_valueOrError1 = m_Wrappers.Companion_Default___.Need((uint64((_5_newItems).Cardinality())) < ((m_StandardLibrary_UInt.Companion_Default___.INT32__MAX__LIMIT()).Uint64()), m_DynamoDbEncryptionUtil.Companion_Default___.E(_dafny.SeqOfString("This is impossible."))) + if (_6_valueOrError1).IsFailure() { + output = (_6_valueOrError1).PropagateFailure() + return output + } + var _7_trimmedItems _dafny.Sequence + _ = _7_trimmedItems + _7_trimmedItems = m_Seq.Companion_Default___.Map(func(coer124 func(_dafny.Map) _dafny.Map) func(interface{}) interface{} { + return func(arg156 interface{}) interface{} { + return coer124(arg156.(_dafny.Map)) + } + }(func(_8_i _dafny.Map) _dafny.Map { + return Companion_Default___.DoRemoveBeacons(_8_i) + }), _5_newItems) + var _9_count m_Wrappers.Option + _ = _9_count + if ((resp).Dtor_Count()).Is_Some() { + _9_count = m_Wrappers.Companion_Option_.Create_Some_(int32((_7_trimmedItems).Cardinality())) + } else { + _9_count = m_Wrappers.Companion_Option_.Create_None_() + } + var _pat_let_tv1 = _9_count + _ = _pat_let_tv1 + var _pat_let_tv2 = _7_trimmedItems + _ = _pat_let_tv2 + output = m_Wrappers.Companion_Result_.Create_Success_(func(_pat_let8_0 m_ComAmazonawsDynamodbTypes.QueryOutput) m_ComAmazonawsDynamodbTypes.QueryOutput { + return func(_10_dt__update__tmp_h1 m_ComAmazonawsDynamodbTypes.QueryOutput) m_ComAmazonawsDynamodbTypes.QueryOutput { + return func(_pat_let9_0 m_Wrappers.Option) m_ComAmazonawsDynamodbTypes.QueryOutput { + return func(_11_dt__update_hCount_h0 m_Wrappers.Option) m_ComAmazonawsDynamodbTypes.QueryOutput { + return func(_pat_let10_0 m_Wrappers.Option) m_ComAmazonawsDynamodbTypes.QueryOutput { + return func(_12_dt__update_hItems_h1 m_Wrappers.Option) m_ComAmazonawsDynamodbTypes.QueryOutput { + return m_ComAmazonawsDynamodbTypes.Companion_QueryOutput_.Create_QueryOutput_(_12_dt__update_hItems_h1, _11_dt__update_hCount_h0, (_10_dt__update__tmp_h1).Dtor_ScannedCount(), (_10_dt__update__tmp_h1).Dtor_LastEvaluatedKey(), (_10_dt__update__tmp_h1).Dtor_ConsumedCapacity()) + }(_pat_let10_0) + }(m_Wrappers.Companion_Option_.Create_Some_(_pat_let_tv2)) + }(_pat_let9_0) + }(_pat_let_tv1) + }(_pat_let8_0) + }(resp)) + return output + } + return output +} +func (_static *CompanionStruct_Default___) GetBeaconKeyId(search m_Wrappers.Option, keyExpr m_Wrappers.Option, filterExpr m_Wrappers.Option, values m_Wrappers.Option, names m_Wrappers.Option) m_Wrappers.Result { + if (search).Is_None() { + return m_Wrappers.Companion_Result_.Create_Success_(m_DynamoDbEncryptionUtil.Companion_MaybeKeyId_.Create_DontUseKeyId_()) + } else { + return m_DynamoDBFilterExpr.Companion_Default___.GetBeaconKeyId(((search).Dtor_value().(m_SearchableEncryptionInfo.SearchInfo)).Curr(), keyExpr, filterExpr, values, names) + } +} +func (_static *CompanionStruct_Default___) ScanInputForBeacons(search m_Wrappers.Option, actions _dafny.Map, req m_ComAmazonawsDynamodbTypes.ScanInput) m_Wrappers.Result { + var output m_Wrappers.Result = m_Wrappers.Result{} + _ = output + if (search).Is_None() { + var _0_valueOrError0 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(false) + _ = _0_valueOrError0 + var _out0 m_Wrappers.Result + _ = _out0 + _out0 = m_DynamoDBFilterExpr.Companion_Default___.TestBeaconize(actions, m_Wrappers.Companion_Option_.Create_None_(), (req).Dtor_FilterExpression(), (req).Dtor_ExpressionAttributeNames()) + _0_valueOrError0 = _out0 + if (_0_valueOrError0).IsFailure() { + output = (_0_valueOrError0).PropagateFailure() + return output + } + var _1___v1 bool + _ = _1___v1 + _1___v1 = (_0_valueOrError0).Extract().(bool) + output = m_Wrappers.Companion_Result_.Create_Success_(req) + return output + } else { + var _2_valueOrError1 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(m_DynamoDbEncryptionUtil.Companion_MaybeKeyId_.Default()) + _ = _2_valueOrError1 + _2_valueOrError1 = m_DynamoDBFilterExpr.Companion_Default___.GetBeaconKeyId(((search).Dtor_value().(m_SearchableEncryptionInfo.SearchInfo)).Curr(), m_Wrappers.Companion_Option_.Create_None_(), (req).Dtor_FilterExpression(), (req).Dtor_ExpressionAttributeValues(), (req).Dtor_ExpressionAttributeNames()) + if (_2_valueOrError1).IsFailure() { + output = (_2_valueOrError1).PropagateFailure() + return output + } + var _3_keyId m_DynamoDbEncryptionUtil.MaybeKeyId + _ = _3_keyId + _3_keyId = (_2_valueOrError1).Extract().(m_DynamoDbEncryptionUtil.MaybeKeyId) + var _4_context m_DynamoDBFilterExpr.ExprContext + _ = _4_context + _4_context = m_DynamoDBFilterExpr.Companion_ExprContext_.Create_ExprContext_(m_Wrappers.Companion_Option_.Create_None_(), (req).Dtor_FilterExpression(), (req).Dtor_ExpressionAttributeValues(), (req).Dtor_ExpressionAttributeNames()) + var _5_valueOrError2 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(m_DynamoDBFilterExpr.Companion_ExprContext_.Default()) + _ = _5_valueOrError2 + var _out1 m_Wrappers.Result + _ = _out1 + _out1 = m_DynamoDBFilterExpr.Companion_Default___.Beaconize(((search).Dtor_value().(m_SearchableEncryptionInfo.SearchInfo)).Curr(), _4_context, _3_keyId, false) + _5_valueOrError2 = _out1 + if (_5_valueOrError2).IsFailure() { + output = (_5_valueOrError2).PropagateFailure() + return output + } + var _6_newContext m_DynamoDBFilterExpr.ExprContext + _ = _6_newContext + _6_newContext = (_5_valueOrError2).Extract().(m_DynamoDBFilterExpr.ExprContext) + var _pat_let_tv0 = _6_newContext + _ = _pat_let_tv0 + var _pat_let_tv1 = _6_newContext + _ = _pat_let_tv1 + var _pat_let_tv2 = _6_newContext + _ = _pat_let_tv2 + output = m_Wrappers.Companion_Result_.Create_Success_(func(_pat_let11_0 m_ComAmazonawsDynamodbTypes.ScanInput) m_ComAmazonawsDynamodbTypes.ScanInput { + return func(_7_dt__update__tmp_h0 m_ComAmazonawsDynamodbTypes.ScanInput) m_ComAmazonawsDynamodbTypes.ScanInput { + return func(_pat_let12_0 m_Wrappers.Option) m_ComAmazonawsDynamodbTypes.ScanInput { + return func(_8_dt__update_hExpressionAttributeValues_h0 m_Wrappers.Option) m_ComAmazonawsDynamodbTypes.ScanInput { + return func(_pat_let13_0 m_Wrappers.Option) m_ComAmazonawsDynamodbTypes.ScanInput { + return func(_9_dt__update_hExpressionAttributeNames_h0 m_Wrappers.Option) m_ComAmazonawsDynamodbTypes.ScanInput { + return func(_pat_let14_0 m_Wrappers.Option) m_ComAmazonawsDynamodbTypes.ScanInput { + return func(_10_dt__update_hFilterExpression_h0 m_Wrappers.Option) m_ComAmazonawsDynamodbTypes.ScanInput { + return m_ComAmazonawsDynamodbTypes.Companion_ScanInput_.Create_ScanInput_((_7_dt__update__tmp_h0).Dtor_TableName(), (_7_dt__update__tmp_h0).Dtor_IndexName(), (_7_dt__update__tmp_h0).Dtor_AttributesToGet(), (_7_dt__update__tmp_h0).Dtor_Limit(), (_7_dt__update__tmp_h0).Dtor_Select(), (_7_dt__update__tmp_h0).Dtor_ScanFilter(), (_7_dt__update__tmp_h0).Dtor_ConditionalOperator(), (_7_dt__update__tmp_h0).Dtor_ExclusiveStartKey(), (_7_dt__update__tmp_h0).Dtor_ReturnConsumedCapacity(), (_7_dt__update__tmp_h0).Dtor_TotalSegments(), (_7_dt__update__tmp_h0).Dtor_Segment(), (_7_dt__update__tmp_h0).Dtor_ProjectionExpression(), _10_dt__update_hFilterExpression_h0, _9_dt__update_hExpressionAttributeNames_h0, _8_dt__update_hExpressionAttributeValues_h0, (_7_dt__update__tmp_h0).Dtor_ConsistentRead()) + }(_pat_let14_0) + }((_pat_let_tv2).Dtor_filterExpr()) + }(_pat_let13_0) + }((_pat_let_tv1).Dtor_names()) + }(_pat_let12_0) + }((_pat_let_tv0).Dtor_values()) + }(_pat_let11_0) + }(req)) + return output + } + return output +} +func (_static *CompanionStruct_Default___) ScanOutputForBeacons(search m_Wrappers.Option, req m_ComAmazonawsDynamodbTypes.ScanInput, resp m_ComAmazonawsDynamodbTypes.ScanOutput) m_Wrappers.Result { + var ret m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(m_ComAmazonawsDynamodbTypes.Companion_ScanOutput_.Default()) + _ = ret + if (search).Is_None() { + var _0_trimmedItems _dafny.Sequence + _ = _0_trimmedItems + _0_trimmedItems = m_Seq.Companion_Default___.Map(func(coer125 func(_dafny.Map) _dafny.Map) func(interface{}) interface{} { + return func(arg157 interface{}) interface{} { + return coer125(arg157.(_dafny.Map)) + } + }(func(_1_i _dafny.Map) _dafny.Map { + return Companion_Default___.DoRemoveBeacons(_1_i) + }), ((resp).Dtor_Items()).Dtor_value().(_dafny.Sequence)) + var _pat_let_tv0 = _0_trimmedItems + _ = _pat_let_tv0 + ret = m_Wrappers.Companion_Result_.Create_Success_(func(_pat_let15_0 m_ComAmazonawsDynamodbTypes.ScanOutput) m_ComAmazonawsDynamodbTypes.ScanOutput { + return func(_2_dt__update__tmp_h0 m_ComAmazonawsDynamodbTypes.ScanOutput) m_ComAmazonawsDynamodbTypes.ScanOutput { + return func(_pat_let16_0 m_Wrappers.Option) m_ComAmazonawsDynamodbTypes.ScanOutput { + return func(_3_dt__update_hItems_h0 m_Wrappers.Option) m_ComAmazonawsDynamodbTypes.ScanOutput { + return m_ComAmazonawsDynamodbTypes.Companion_ScanOutput_.Create_ScanOutput_(_3_dt__update_hItems_h0, (_2_dt__update__tmp_h0).Dtor_Count(), (_2_dt__update__tmp_h0).Dtor_ScannedCount(), (_2_dt__update__tmp_h0).Dtor_LastEvaluatedKey(), (_2_dt__update__tmp_h0).Dtor_ConsumedCapacity()) + }(_pat_let16_0) + }(m_Wrappers.Companion_Option_.Create_Some_(_pat_let_tv0)) + }(_pat_let15_0) + }(resp)) + return ret + } else { + var _4_valueOrError0 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(_dafny.EmptySeq) + _ = _4_valueOrError0 + var _out0 m_Wrappers.Result + _ = _out0 + _out0 = m_DynamoDBFilterExpr.Companion_Default___.FilterResults(((search).Dtor_value().(m_SearchableEncryptionInfo.SearchInfo)).Curr(), ((resp).Dtor_Items()).Dtor_value().(_dafny.Sequence), m_Wrappers.Companion_Option_.Create_None_(), (req).Dtor_FilterExpression(), (req).Dtor_ExpressionAttributeNames(), (req).Dtor_ExpressionAttributeValues()) + _4_valueOrError0 = _out0 + if (_4_valueOrError0).IsFailure() { + ret = (_4_valueOrError0).PropagateFailure() + return ret + } + var _5_newItems _dafny.Sequence + _ = _5_newItems + _5_newItems = (_4_valueOrError0).Extract().(_dafny.Sequence) + var _6_valueOrError1 m_Wrappers.Outcome = m_Wrappers.Companion_Outcome_.Default() + _ = _6_valueOrError1 + _6_valueOrError1 = m_Wrappers.Companion_Default___.Need((uint64((_5_newItems).Cardinality())) < ((m_StandardLibrary_UInt.Companion_Default___.INT32__MAX__LIMIT()).Uint64()), m_DynamoDbEncryptionUtil.Companion_Default___.E(_dafny.SeqOfString("This is impossible."))) + if (_6_valueOrError1).IsFailure() { + ret = (_6_valueOrError1).PropagateFailure() + return ret + } + var _7_trimmedItems _dafny.Sequence + _ = _7_trimmedItems + _7_trimmedItems = m_Seq.Companion_Default___.Map(func(coer126 func(_dafny.Map) _dafny.Map) func(interface{}) interface{} { + return func(arg158 interface{}) interface{} { + return coer126(arg158.(_dafny.Map)) + } + }(func(_8_i _dafny.Map) _dafny.Map { + return Companion_Default___.DoRemoveBeacons(_8_i) + }), _5_newItems) + var _9_count m_Wrappers.Option + _ = _9_count + if ((resp).Dtor_Count()).Is_Some() { + _9_count = m_Wrappers.Companion_Option_.Create_Some_(int32((_7_trimmedItems).Cardinality())) + } else { + _9_count = m_Wrappers.Companion_Option_.Create_None_() + } + var _pat_let_tv1 = _9_count + _ = _pat_let_tv1 + var _pat_let_tv2 = _7_trimmedItems + _ = _pat_let_tv2 + ret = m_Wrappers.Companion_Result_.Create_Success_(func(_pat_let17_0 m_ComAmazonawsDynamodbTypes.ScanOutput) m_ComAmazonawsDynamodbTypes.ScanOutput { + return func(_10_dt__update__tmp_h1 m_ComAmazonawsDynamodbTypes.ScanOutput) m_ComAmazonawsDynamodbTypes.ScanOutput { + return func(_pat_let18_0 m_Wrappers.Option) m_ComAmazonawsDynamodbTypes.ScanOutput { + return func(_11_dt__update_hCount_h0 m_Wrappers.Option) m_ComAmazonawsDynamodbTypes.ScanOutput { + return func(_pat_let19_0 m_Wrappers.Option) m_ComAmazonawsDynamodbTypes.ScanOutput { + return func(_12_dt__update_hItems_h1 m_Wrappers.Option) m_ComAmazonawsDynamodbTypes.ScanOutput { + return m_ComAmazonawsDynamodbTypes.Companion_ScanOutput_.Create_ScanOutput_(_12_dt__update_hItems_h1, _11_dt__update_hCount_h0, (_10_dt__update__tmp_h1).Dtor_ScannedCount(), (_10_dt__update__tmp_h1).Dtor_LastEvaluatedKey(), (_10_dt__update__tmp_h1).Dtor_ConsumedCapacity()) + }(_pat_let19_0) + }(m_Wrappers.Companion_Option_.Create_Some_(_pat_let_tv2)) + }(_pat_let18_0) + }(_pat_let_tv1) + }(_pat_let17_0) + }(resp)) + return ret + } + return ret +} +func (_static *CompanionStruct_Default___) GetVirtualFieldsLoop(fields _dafny.Sequence, bv m_SearchableEncryptionInfo.BeaconVersion, item _dafny.Map, results _dafny.Map) m_Wrappers.Result { + goto TAIL_CALL_START +TAIL_CALL_START: + if (uint64((fields).Cardinality())) == (uint64(0)) { + return m_Wrappers.Companion_Result_.Create_Success_(results) + } else { + var _0_valueOrError0 m_Wrappers.Result = m_DdbVirtualFields.Companion_Default___.GetVirtField(((bv).Dtor_virtualFields()).Get((fields).Select(uint32(uint32(0))).(_dafny.Sequence)).(m_DdbVirtualFields.VirtField), item) + _ = _0_valueOrError0 + if (_0_valueOrError0).IsFailure() { + return (_0_valueOrError0).PropagateFailure() + } else { + var _1_optValue m_Wrappers.Option = (_0_valueOrError0).Extract().(m_Wrappers.Option) + _ = _1_optValue + if (_1_optValue).Is_Some() { + var _in0 _dafny.Sequence = (fields).Drop(uint32(uint32(1))) + _ = _in0 + var _in1 m_SearchableEncryptionInfo.BeaconVersion = bv + _ = _in1 + var _in2 _dafny.Map = item + _ = _in2 + var _in3 _dafny.Map = (results).Update((fields).Select(uint32(uint32(0))).(_dafny.Sequence), (_1_optValue).Dtor_value().(_dafny.Sequence)) + _ = _in3 + fields = _in0 + bv = _in1 + item = _in2 + results = _in3 + goto TAIL_CALL_START + } else { + var _in4 _dafny.Sequence = (fields).Drop(uint32(uint32(1))) + _ = _in4 + var _in5 m_SearchableEncryptionInfo.BeaconVersion = bv + _ = _in5 + var _in6 _dafny.Map = item + _ = _in6 + var _in7 _dafny.Map = results + _ = _in7 + fields = _in4 + bv = _in5 + item = _in6 + results = _in7 + goto TAIL_CALL_START + } + } + } +} +func (_static *CompanionStruct_Default___) GetVirtualFields(beaconVersion m_SearchableEncryptionInfo.BeaconVersion, item _dafny.Map) m_Wrappers.Result { + var output m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(_dafny.EmptyMap) + _ = output + var _0_fieldNames _dafny.Sequence + _ = _0_fieldNames + _0_fieldNames = m_SortedSets.SetToOrderedSequence2(((beaconVersion).Dtor_virtualFields()).Keys(), func(coer127 func(_dafny.Char, _dafny.Char) bool) func(interface{}, interface{}) bool { + return func(arg159 interface{}, arg160 interface{}) bool { + return coer127(arg159.(_dafny.Char), arg160.(_dafny.Char)) + } + }(m_DynamoDbEncryptionUtil.Companion_Default___.CharLess)) + output = Companion_Default___.GetVirtualFieldsLoop(_0_fieldNames, beaconVersion, item, _dafny.NewMapBuilder().ToMap()) + return output +} +func (_static *CompanionStruct_Default___) GetCompoundBeaconsLoop(fields _dafny.Sequence, bv m_SearchableEncryptionInfo.BeaconVersion, item _dafny.Map, results _dafny.Map) m_Wrappers.Result { + goto TAIL_CALL_START +TAIL_CALL_START: + if (uint64((fields).Cardinality())) == (uint64(0)) { + return m_Wrappers.Companion_Result_.Create_Success_(results) + } else { + var _0_beacon m_SearchableEncryptionInfo.Beacon = ((bv).Dtor_beacons()).Get((fields).Select(uint32(uint32(0))).(_dafny.Sequence)).(m_SearchableEncryptionInfo.Beacon) + _ = _0_beacon + if (_0_beacon).Is_Compound() { + var _1_valueOrError0 m_Wrappers.Result = ((_0_beacon).Dtor_cmp()).GetNaked(item, (bv).Dtor_virtualFields()) + _ = _1_valueOrError0 + if (_1_valueOrError0).IsFailure() { + return (_1_valueOrError0).PropagateFailure() + } else { + var _2_optValue m_Wrappers.Option = (_1_valueOrError0).Extract().(m_Wrappers.Option) + _ = _2_optValue + if (_2_optValue).Is_Some() { + var _in0 _dafny.Sequence = (fields).Drop(uint32(uint32(1))) + _ = _in0 + var _in1 m_SearchableEncryptionInfo.BeaconVersion = bv + _ = _in1 + var _in2 _dafny.Map = item + _ = _in2 + var _in3 _dafny.Map = (results).Update((fields).Select(0).(_dafny.Sequence), (_2_optValue).Dtor_value().(_dafny.Sequence)) + _ = _in3 + fields = _in0 + bv = _in1 + item = _in2 + results = _in3 + goto TAIL_CALL_START + } else { + var _in4 _dafny.Sequence = (fields).Drop(uint32(uint32(1))) + _ = _in4 + var _in5 m_SearchableEncryptionInfo.BeaconVersion = bv + _ = _in5 + var _in6 _dafny.Map = item + _ = _in6 + var _in7 _dafny.Map = results + _ = _in7 + fields = _in4 + bv = _in5 + item = _in6 + results = _in7 + goto TAIL_CALL_START + } + } + } else { + var _in8 _dafny.Sequence = (fields).Drop(uint32(uint32(1))) + _ = _in8 + var _in9 m_SearchableEncryptionInfo.BeaconVersion = bv + _ = _in9 + var _in10 _dafny.Map = item + _ = _in10 + var _in11 _dafny.Map = results + _ = _in11 + fields = _in8 + bv = _in9 + item = _in10 + results = _in11 + goto TAIL_CALL_START + } + } +} +func (_static *CompanionStruct_Default___) GetCompoundBeacons(beaconVersion m_SearchableEncryptionInfo.BeaconVersion, item _dafny.Map) m_Wrappers.Result { + var output m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(_dafny.EmptyMap) + _ = output + var _0_beaconNames _dafny.Sequence + _ = _0_beaconNames + _0_beaconNames = m_SortedSets.SetToOrderedSequence2(((beaconVersion).Dtor_beacons()).Keys(), func(coer128 func(_dafny.Char, _dafny.Char) bool) func(interface{}, interface{}) bool { + return func(arg161 interface{}, arg162 interface{}) bool { + return coer128(arg161.(_dafny.Char), arg162.(_dafny.Char)) + } + }(m_DynamoDbEncryptionUtil.Companion_Default___.CharLess)) + output = Companion_Default___.GetCompoundBeaconsLoop(_0_beaconNames, beaconVersion, item, _dafny.NewMapBuilder().ToMap()) + return output +} +func (_static *CompanionStruct_Default___) VersionTag() _dafny.Sequence { + return _dafny.Companion_Sequence_.Concatenate(m_DynamoDbEncryptionUtil.Companion_Default___.VersionPrefix(), _dafny.SeqOfString("1")) +} + +// End of class Default__ diff --git a/releases/go/dynamodb-esdk/DynamoDbEncryption/DynamoDbEncryption.go b/releases/go/dynamodb-esdk/DynamoDbEncryption/DynamoDbEncryption.go new file mode 100644 index 000000000..403aabe4a --- /dev/null +++ b/releases/go/dynamodb-esdk/DynamoDbEncryption/DynamoDbEncryption.go @@ -0,0 +1,423 @@ +// Package DynamoDbEncryption +// Dafny module DynamoDbEncryption compiled into Go + +package DynamoDbEncryption + +import ( + os "os" + + m_ComAmazonawsDynamodbTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/dynamodb/ComAmazonawsDynamodbTypes" + m_Com_Amazonaws_Dynamodb "github.com/aws/aws-cryptographic-material-providers-library/releases/go/dynamodb/Com_Amazonaws_Dynamodb" + m_ComAmazonawsKmsTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/kms/ComAmazonawsKmsTypes" + m_Com_Amazonaws_Kms "github.com/aws/aws-cryptographic-material-providers-library/releases/go/kms/Com_Amazonaws_Kms" + m_AlgorithmSuites "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AlgorithmSuites" + m_AwsArnParsing "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsArnParsing" + m_AwsCryptographyKeyStoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyKeyStoreOperations" + m_AwsCryptographyKeyStoreTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyKeyStoreTypes" + m_AwsCryptographyMaterialProvidersOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyMaterialProvidersOperations" + m_AwsCryptographyMaterialProvidersTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyMaterialProvidersTypes" + m_AwsKmsDiscoveryKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsDiscoveryKeyring" + m_AwsKmsEcdhKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsEcdhKeyring" + m_AwsKmsHierarchicalKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsHierarchicalKeyring" + m_AwsKmsKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsKeyring" + m_AwsKmsMrkAreUnique "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkAreUnique" + m_AwsKmsMrkDiscoveryKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkDiscoveryKeyring" + m_AwsKmsMrkKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkKeyring" + m_AwsKmsMrkMatchForDecrypt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkMatchForDecrypt" + m_AwsKmsRsaKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsRsaKeyring" + m_AwsKmsUtils "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsUtils" + m_CMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CMM" + m_CacheConstants "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CacheConstants" + m_CanonicalEncryptionContext "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CanonicalEncryptionContext" + m_Commitment "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Commitment" + m_Constants "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Constants" + m_CreateKeyStoreTable "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CreateKeyStoreTable" + m_CreateKeys "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CreateKeys" + m_DDBKeystoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DDBKeystoreOperations" + m_DefaultCMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DefaultCMM" + m_DefaultClientSupplier "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DefaultClientSupplier" + m_Defaults "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Defaults" + m_DiscoveryMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DiscoveryMultiKeyring" + m_EcdhEdkWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/EcdhEdkWrapping" + m_EdkWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/EdkWrapping" + m_ErrorMessages "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/ErrorMessages" + m_GetKeys "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/GetKeys" + m_IntermediateKeyWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/IntermediateKeyWrapping" + m_KMSKeystoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KMSKeystoreOperations" + m_KeyStore "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KeyStore" + m_KeyStoreErrorMessages "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KeyStoreErrorMessages" + m_Keyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Keyring" + m_KmsArn "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KmsArn" + m_LocalCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/LocalCMC" + m_MaterialProviders "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MaterialProviders" + m_MaterialWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MaterialWrapping" + m_Materials "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Materials" + m_MrkAwareDiscoveryMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MrkAwareDiscoveryMultiKeyring" + m_MrkAwareStrictMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MrkAwareStrictMultiKeyring" + m_MultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MultiKeyring" + m_RawAESKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawAESKeyring" + m_RawECDHKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawECDHKeyring" + m_RawRSAKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawRSAKeyring" + m_RequiredEncryptionContextCMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RequiredEncryptionContextCMM" + m_StormTracker "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StormTracker" + m_StormTrackingCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StormTrackingCMC" + m_StrictMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StrictMultiKeyring" + m_Structure "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Structure" + m_SynchronizedLocalCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/SynchronizedLocalCMC" + m_Utils "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Utils" + m_AtomicPrimitives "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AtomicPrimitives" + m_AwsCryptographyPrimitivesOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AwsCryptographyPrimitivesOperations" + m_AwsCryptographyPrimitivesTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AwsCryptographyPrimitivesTypes" + m_Digest "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/Digest" + m_HKDF "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/HKDF" + m_KdfCtr "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/KdfCtr" + m_Random "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/Random" + m_WrappedHKDF "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/WrappedHKDF" + m_WrappedHMAC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/WrappedHMAC" + m_Actions "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Actions" + m_Base64 "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Base64" + m_Base64Lemmas "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Base64Lemmas" + m_BoundedInts "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/BoundedInts" + m_DivInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivInternals" + m_DivInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivInternalsNonlinear" + m_DivMod "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivMod" + m_FileIO "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/FileIO" + m_FloatCompare "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/FloatCompare" + m_Functions "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Functions" + m_GeneralInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/GeneralInternals" + m_GetOpt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/GetOpt" + m_HexStrings "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/HexStrings" + m_Logarithm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Logarithm" + m__Math "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Math_" + m_ModInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/ModInternals" + m_ModInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/ModInternalsNonlinear" + m_Mul "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Mul" + m_MulInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/MulInternals" + m_MulInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/MulInternalsNonlinear" + m_Power "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Power" + m_Relations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Relations" + m_Seq "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Seq" + m_Seq_MergeSort "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Seq_MergeSort" + m_Sorting "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Sorting" + m_StandardLibrary "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary" + m_StandardLibraryInterop "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibraryInterop" + m_StandardLibrary_MemoryMath "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_MemoryMath" + m_StandardLibrary_Sequence "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_Sequence" + m_StandardLibrary_String "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_String" + m_StandardLibrary_UInt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_UInt" + m_Streams "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Streams" + m_UnicodeStrings "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/UnicodeStrings" + m__Unicode "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Unicode_" + m_Utf16EncodingForm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Utf16EncodingForm" + m_Utf8EncodingForm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Utf8EncodingForm" + m_Wrappers "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Wrappers" + m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations" + m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes" + m_AwsCryptographyDbEncryptionSdkDynamoDbOperations "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbOperations" + m_AwsCryptographyDbEncryptionSdkDynamoDbTypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbTypes" + m_AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations" + m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes" + m_Canonize "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/Canonize" + m_DynamoDbEncryptionBranchKeyIdSupplier "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbEncryptionBranchKeyIdSupplier" + m_DynamoDbEncryptionUtil "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbEncryptionUtil" + m_DynamoDbItemEncryptor "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbItemEncryptor" + m_DynamoDbItemEncryptorUtil "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbItemEncryptorUtil" + m_DynamoDbNormalizeNumber "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbNormalizeNumber" + m_DynamoToStruct "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoToStruct" + m_InternalLegacyOverride "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/InternalLegacyOverride" + m__Maps "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/Maps_" + m_OptimizedMergeSort "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/OptimizedMergeSort" + m_Sets "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/Sets" + m_SortCanon "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/SortCanon" + m_StructuredEncryption "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryption" + m_StructuredEncryptionCrypt "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionCrypt" + m_StructuredEncryptionFooter "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionFooter" + m_StructuredEncryptionHeader "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionHeader" + m_StructuredEncryptionPaths "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionPaths" + m_StructuredEncryptionUtil "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionUtil" + m__System "github.com/dafny-lang/DafnyRuntimeGo/v4/System_" + _dafny "github.com/dafny-lang/DafnyRuntimeGo/v4/dafny" +) + +var _ = os.Args +var _ _dafny.Dummy__ +var _ m__System.Dummy__ +var _ m_Wrappers.Dummy__ +var _ m_BoundedInts.Dummy__ +var _ m_StandardLibrary_UInt.Dummy__ +var _ m_StandardLibrary_MemoryMath.Dummy__ +var _ m_StandardLibrary_Sequence.Dummy__ +var _ m_StandardLibrary_String.Dummy__ +var _ m_StandardLibrary.Dummy__ +var _ m_AwsCryptographyPrimitivesTypes.Dummy__ +var _ m_Random.Dummy__ +var _ m_Digest.Dummy__ +var _ m_WrappedHMAC.Dummy__ +var _ m_HKDF.Dummy__ +var _ m_WrappedHKDF.Dummy__ +var _ m_KdfCtr.Dummy__ +var _ m_AwsCryptographyPrimitivesOperations.Dummy__ +var _ m_AtomicPrimitives.Dummy__ +var _ m_ComAmazonawsDynamodbTypes.Dummy__ +var _ m_ComAmazonawsKmsTypes.Dummy__ +var _ m_AwsCryptographyKeyStoreTypes.Dummy__ +var _ m_AwsCryptographyMaterialProvidersTypes.Dummy__ +var _ m_Base64.Dummy__ +var _ m_AlgorithmSuites.Dummy__ +var _ m_Materials.Dummy__ +var _ m_Keyring.Dummy__ +var _ m_Relations.Dummy__ +var _ m_Seq_MergeSort.Dummy__ +var _ m__Math.Dummy__ +var _ m_Seq.Dummy__ +var _ m_Actions.Dummy__ +var _ m_CanonicalEncryptionContext.Dummy__ +var _ m_MaterialWrapping.Dummy__ +var _ m_IntermediateKeyWrapping.Dummy__ +var _ m_EdkWrapping.Dummy__ +var _ m_ErrorMessages.Dummy__ +var _ m_RawAESKeyring.Dummy__ +var _ m_AwsArnParsing.Dummy__ +var _ m_Constants.Dummy__ +var _ m_EcdhEdkWrapping.Dummy__ +var _ m_RawECDHKeyring.Dummy__ +var _ m_RawRSAKeyring.Dummy__ +var _ m_AwsKmsMrkMatchForDecrypt.Dummy__ +var _ m_AwsKmsUtils.Dummy__ +var _ m_AwsKmsKeyring.Dummy__ +var _ m_AwsKmsDiscoveryKeyring.Dummy__ +var _ m_AwsKmsEcdhKeyring.Dummy__ +var _ m_FileIO.Dummy__ +var _ m_LocalCMC.Dummy__ +var _ m_SynchronizedLocalCMC.Dummy__ +var _ m_StormTracker.Dummy__ +var _ m_StormTrackingCMC.Dummy__ +var _ m_CacheConstants.Dummy__ +var _ m_AwsKmsHierarchicalKeyring.Dummy__ +var _ m_AwsKmsMrkDiscoveryKeyring.Dummy__ +var _ m_AwsKmsMrkKeyring.Dummy__ +var _ m_AwsKmsRsaKeyring.Dummy__ +var _ m_MultiKeyring.Dummy__ +var _ m_AwsKmsMrkAreUnique.Dummy__ +var _ m_StrictMultiKeyring.Dummy__ +var _ m_Com_Amazonaws_Kms.Dummy__ +var _ m_Com_Amazonaws_Dynamodb.Dummy__ +var _ m_DiscoveryMultiKeyring.Dummy__ +var _ m_MrkAwareDiscoveryMultiKeyring.Dummy__ +var _ m_MrkAwareStrictMultiKeyring.Dummy__ +var _ m_CMM.Dummy__ +var _ m_Defaults.Dummy__ +var _ m_Commitment.Dummy__ +var _ m_DefaultCMM.Dummy__ +var _ m_DefaultClientSupplier.Dummy__ +var _ m_Utils.Dummy__ +var _ m_RequiredEncryptionContextCMM.Dummy__ +var _ m_AwsCryptographyMaterialProvidersOperations.Dummy__ +var _ m_MaterialProviders.Dummy__ +var _ m_KeyStoreErrorMessages.Dummy__ +var _ m_KmsArn.Dummy__ +var _ m_Structure.Dummy__ +var _ m_KMSKeystoreOperations.Dummy__ +var _ m_DDBKeystoreOperations.Dummy__ +var _ m_CreateKeys.Dummy__ +var _ m_CreateKeyStoreTable.Dummy__ +var _ m_GetKeys.Dummy__ +var _ m_AwsCryptographyKeyStoreOperations.Dummy__ +var _ m_KeyStore.Dummy__ +var _ m__Unicode.Dummy__ +var _ m_Functions.Dummy__ +var _ m_Utf8EncodingForm.Dummy__ +var _ m_Utf16EncodingForm.Dummy__ +var _ m_UnicodeStrings.Dummy__ +var _ m_GeneralInternals.Dummy__ +var _ m_MulInternalsNonlinear.Dummy__ +var _ m_MulInternals.Dummy__ +var _ m_Mul.Dummy__ +var _ m_ModInternalsNonlinear.Dummy__ +var _ m_DivInternalsNonlinear.Dummy__ +var _ m_ModInternals.Dummy__ +var _ m_DivInternals.Dummy__ +var _ m_DivMod.Dummy__ +var _ m_Power.Dummy__ +var _ m_Logarithm.Dummy__ +var _ m_StandardLibraryInterop.Dummy__ +var _ m_Streams.Dummy__ +var _ m_Sorting.Dummy__ +var _ m_HexStrings.Dummy__ +var _ m_GetOpt.Dummy__ +var _ m_FloatCompare.Dummy__ +var _ m_Base64Lemmas.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Dummy__ +var _ m_StructuredEncryptionUtil.Dummy__ +var _ m_Sets.Dummy__ +var _ m_StructuredEncryptionPaths.Dummy__ +var _ m_StructuredEncryptionHeader.Dummy__ +var _ m_StructuredEncryptionFooter.Dummy__ +var _ m_OptimizedMergeSort.Dummy__ +var _ m_SortCanon.Dummy__ +var _ m_Canonize.Dummy__ +var _ m_StructuredEncryptionCrypt.Dummy__ +var _ m__Maps.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations.Dummy__ +var _ m_StructuredEncryption.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Dummy__ +var _ m_DynamoDbEncryptionUtil.Dummy__ +var _ m_DynamoDbNormalizeNumber.Dummy__ +var _ m_DynamoToStruct.Dummy__ +var _ m_DynamoDbItemEncryptorUtil.Dummy__ +var _ m_InternalLegacyOverride.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations.Dummy__ +var _ m_DynamoDbItemEncryptor.Dummy__ +var _ m_DynamoDbEncryptionBranchKeyIdSupplier.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbOperations.Dummy__ + +type Dummy__ struct{} + +// Definition of class Default__ +type Default__ struct { + dummy byte +} + +func New_Default___() *Default__ { + _this := Default__{} + + return &_this +} + +type CompanionStruct_Default___ struct { +} + +var Companion_Default___ = CompanionStruct_Default___{} + +func (_this *Default__) Equals(other *Default__) bool { + return _this == other +} + +func (_this *Default__) EqualsGeneric(x interface{}) bool { + other, ok := x.(*Default__) + return ok && _this.Equals(other) +} + +func (*Default__) String() string { + return "DynamoDbEncryption.Default__" +} +func (_this *Default__) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = &Default__{} + +func (_static *CompanionStruct_Default___) DefaultDynamoDbEncryptionConfig() m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.DynamoDbEncryptionConfig { + return m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Companion_DynamoDbEncryptionConfig_.Create_DynamoDbEncryptionConfig_() +} +func (_static *CompanionStruct_Default___) DynamoDbEncryption(config m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.DynamoDbEncryptionConfig) m_Wrappers.Result { + var res m_Wrappers.Result = m_Wrappers.Result{} + _ = res + var _0_internalConfig m_AwsCryptographyDbEncryptionSdkDynamoDbOperations.Config + _ = _0_internalConfig + _0_internalConfig = m_AwsCryptographyDbEncryptionSdkDynamoDbOperations.Companion_Config_.Create_Config_() + var _1_client *DynamoDbEncryptionClient + _ = _1_client + var _nw0 *DynamoDbEncryptionClient = New_DynamoDbEncryptionClient_() + _ = _nw0 + _nw0.Ctor__(_0_internalConfig) + _1_client = _nw0 + res = m_Wrappers.Companion_Result_.Create_Success_(_1_client) + return res + return res +} +func (_static *CompanionStruct_Default___) CreateSuccessOfClient(client m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.IDynamoDbEncryptionClient) m_Wrappers.Result { + return m_Wrappers.Companion_Result_.Create_Success_(client) +} +func (_static *CompanionStruct_Default___) CreateFailureOfError(error_ m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Error) m_Wrappers.Result { + return m_Wrappers.Companion_Result_.Create_Failure_(error_) +} + +// End of class Default__ + +// Definition of class DynamoDbEncryptionClient +type DynamoDbEncryptionClient struct { + _config m_AwsCryptographyDbEncryptionSdkDynamoDbOperations.Config +} + +func New_DynamoDbEncryptionClient_() *DynamoDbEncryptionClient { + _this := DynamoDbEncryptionClient{} + + _this._config = m_AwsCryptographyDbEncryptionSdkDynamoDbOperations.Companion_Config_.Default() + return &_this +} + +type CompanionStruct_DynamoDbEncryptionClient_ struct { +} + +var Companion_DynamoDbEncryptionClient_ = CompanionStruct_DynamoDbEncryptionClient_{} + +func (_this *DynamoDbEncryptionClient) Equals(other *DynamoDbEncryptionClient) bool { + return _this == other +} + +func (_this *DynamoDbEncryptionClient) EqualsGeneric(x interface{}) bool { + other, ok := x.(*DynamoDbEncryptionClient) + return ok && _this.Equals(other) +} + +func (*DynamoDbEncryptionClient) String() string { + return "DynamoDbEncryption.DynamoDbEncryptionClient" +} + +func Type_DynamoDbEncryptionClient_() _dafny.TypeDescriptor { + return type_DynamoDbEncryptionClient_{} +} + +type type_DynamoDbEncryptionClient_ struct { +} + +func (_this type_DynamoDbEncryptionClient_) Default() interface{} { + return (*DynamoDbEncryptionClient)(nil) +} + +func (_this type_DynamoDbEncryptionClient_) String() string { + return "DynamoDbEncryption.DynamoDbEncryptionClient" +} +func (_this *DynamoDbEncryptionClient) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Companion_IDynamoDbEncryptionClient_.TraitID_} +} + +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.IDynamoDbEncryptionClient = &DynamoDbEncryptionClient{} +var _ _dafny.TraitOffspring = &DynamoDbEncryptionClient{} + +func (_this *DynamoDbEncryptionClient) Ctor__(config m_AwsCryptographyDbEncryptionSdkDynamoDbOperations.Config) { + { + (_this)._config = config + } +} +func (_this *DynamoDbEncryptionClient) CreateDynamoDbEncryptionBranchKeyIdSupplier(input m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.CreateDynamoDbEncryptionBranchKeyIdSupplierInput) m_Wrappers.Result { + { + var output m_Wrappers.Result = m_Wrappers.Result{} + _ = output + var _out0 m_Wrappers.Result + _ = _out0 + _out0 = m_AwsCryptographyDbEncryptionSdkDynamoDbOperations.Companion_Default___.CreateDynamoDbEncryptionBranchKeyIdSupplier((_this).Config(), input) + output = _out0 + return output + } +} +func (_this *DynamoDbEncryptionClient) GetEncryptedDataKeyDescription(input m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.GetEncryptedDataKeyDescriptionInput) m_Wrappers.Result { + { + var output m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Companion_GetEncryptedDataKeyDescriptionOutput_.Default()) + _ = output + var _out0 m_Wrappers.Result + _ = _out0 + _out0 = m_AwsCryptographyDbEncryptionSdkDynamoDbOperations.Companion_Default___.GetEncryptedDataKeyDescription((_this).Config(), input) + output = _out0 + return output + } +} +func (_this *DynamoDbEncryptionClient) Config() m_AwsCryptographyDbEncryptionSdkDynamoDbOperations.Config { + { + return _this._config + } +} + +// End of class DynamoDbEncryptionClient diff --git a/releases/go/dynamodb-esdk/DynamoDbEncryptionBranchKeyIdSupplier/DynamoDbEncryptionBranchKeyIdSupplier.go b/releases/go/dynamodb-esdk/DynamoDbEncryptionBranchKeyIdSupplier/DynamoDbEncryptionBranchKeyIdSupplier.go new file mode 100644 index 000000000..3bab4add0 --- /dev/null +++ b/releases/go/dynamodb-esdk/DynamoDbEncryptionBranchKeyIdSupplier/DynamoDbEncryptionBranchKeyIdSupplier.go @@ -0,0 +1,433 @@ +// Package DynamoDbEncryptionBranchKeyIdSupplier +// Dafny module DynamoDbEncryptionBranchKeyIdSupplier compiled into Go + +package DynamoDbEncryptionBranchKeyIdSupplier + +import ( + os "os" + + m_ComAmazonawsDynamodbTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/dynamodb/ComAmazonawsDynamodbTypes" + m_Com_Amazonaws_Dynamodb "github.com/aws/aws-cryptographic-material-providers-library/releases/go/dynamodb/Com_Amazonaws_Dynamodb" + m_ComAmazonawsKmsTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/kms/ComAmazonawsKmsTypes" + m_Com_Amazonaws_Kms "github.com/aws/aws-cryptographic-material-providers-library/releases/go/kms/Com_Amazonaws_Kms" + m_AlgorithmSuites "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AlgorithmSuites" + m_AwsArnParsing "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsArnParsing" + m_AwsCryptographyKeyStoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyKeyStoreOperations" + m_AwsCryptographyKeyStoreTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyKeyStoreTypes" + m_AwsCryptographyMaterialProvidersOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyMaterialProvidersOperations" + m_AwsCryptographyMaterialProvidersTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyMaterialProvidersTypes" + m_AwsKmsDiscoveryKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsDiscoveryKeyring" + m_AwsKmsEcdhKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsEcdhKeyring" + m_AwsKmsHierarchicalKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsHierarchicalKeyring" + m_AwsKmsKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsKeyring" + m_AwsKmsMrkAreUnique "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkAreUnique" + m_AwsKmsMrkDiscoveryKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkDiscoveryKeyring" + m_AwsKmsMrkKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkKeyring" + m_AwsKmsMrkMatchForDecrypt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkMatchForDecrypt" + m_AwsKmsRsaKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsRsaKeyring" + m_AwsKmsUtils "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsUtils" + m_CMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CMM" + m_CacheConstants "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CacheConstants" + m_CanonicalEncryptionContext "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CanonicalEncryptionContext" + m_Commitment "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Commitment" + m_Constants "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Constants" + m_CreateKeyStoreTable "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CreateKeyStoreTable" + m_CreateKeys "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CreateKeys" + m_DDBKeystoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DDBKeystoreOperations" + m_DefaultCMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DefaultCMM" + m_DefaultClientSupplier "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DefaultClientSupplier" + m_Defaults "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Defaults" + m_DiscoveryMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DiscoveryMultiKeyring" + m_EcdhEdkWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/EcdhEdkWrapping" + m_EdkWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/EdkWrapping" + m_ErrorMessages "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/ErrorMessages" + m_GetKeys "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/GetKeys" + m_IntermediateKeyWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/IntermediateKeyWrapping" + m_KMSKeystoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KMSKeystoreOperations" + m_KeyStore "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KeyStore" + m_KeyStoreErrorMessages "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KeyStoreErrorMessages" + m_Keyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Keyring" + m_KmsArn "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KmsArn" + m_LocalCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/LocalCMC" + m_MaterialProviders "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MaterialProviders" + m_MaterialWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MaterialWrapping" + m_Materials "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Materials" + m_MrkAwareDiscoveryMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MrkAwareDiscoveryMultiKeyring" + m_MrkAwareStrictMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MrkAwareStrictMultiKeyring" + m_MultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MultiKeyring" + m_RawAESKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawAESKeyring" + m_RawECDHKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawECDHKeyring" + m_RawRSAKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawRSAKeyring" + m_RequiredEncryptionContextCMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RequiredEncryptionContextCMM" + m_StormTracker "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StormTracker" + m_StormTrackingCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StormTrackingCMC" + m_StrictMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StrictMultiKeyring" + m_Structure "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Structure" + m_SynchronizedLocalCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/SynchronizedLocalCMC" + m_Utils "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Utils" + m_AtomicPrimitives "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AtomicPrimitives" + m_AwsCryptographyPrimitivesOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AwsCryptographyPrimitivesOperations" + m_AwsCryptographyPrimitivesTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AwsCryptographyPrimitivesTypes" + m_Digest "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/Digest" + m_HKDF "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/HKDF" + m_KdfCtr "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/KdfCtr" + m_Random "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/Random" + m_WrappedHKDF "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/WrappedHKDF" + m_WrappedHMAC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/WrappedHMAC" + m_Actions "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Actions" + m_Base64 "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Base64" + m_Base64Lemmas "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Base64Lemmas" + m_BoundedInts "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/BoundedInts" + m_DivInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivInternals" + m_DivInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivInternalsNonlinear" + m_DivMod "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivMod" + m_FileIO "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/FileIO" + m_FloatCompare "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/FloatCompare" + m_Functions "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Functions" + m_GeneralInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/GeneralInternals" + m_GetOpt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/GetOpt" + m_HexStrings "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/HexStrings" + m_Logarithm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Logarithm" + m__Math "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Math_" + m_ModInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/ModInternals" + m_ModInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/ModInternalsNonlinear" + m_Mul "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Mul" + m_MulInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/MulInternals" + m_MulInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/MulInternalsNonlinear" + m_Power "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Power" + m_Relations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Relations" + m_Seq "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Seq" + m_Seq_MergeSort "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Seq_MergeSort" + m_Sorting "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Sorting" + m_StandardLibrary "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary" + m_StandardLibraryInterop "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibraryInterop" + m_StandardLibrary_MemoryMath "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_MemoryMath" + m_StandardLibrary_Sequence "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_Sequence" + m_StandardLibrary_String "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_String" + m_StandardLibrary_UInt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_UInt" + m_Streams "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Streams" + m_UnicodeStrings "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/UnicodeStrings" + m__Unicode "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Unicode_" + m_Utf16EncodingForm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Utf16EncodingForm" + m_Utf8EncodingForm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Utf8EncodingForm" + m_Wrappers "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Wrappers" + m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations" + m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes" + m_AwsCryptographyDbEncryptionSdkDynamoDbTypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbTypes" + m_AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations" + m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes" + m_Canonize "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/Canonize" + m_DynamoDbEncryptionUtil "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbEncryptionUtil" + m_DynamoDbItemEncryptor "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbItemEncryptor" + m_DynamoDbItemEncryptorUtil "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbItemEncryptorUtil" + m_DynamoDbNormalizeNumber "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbNormalizeNumber" + m_DynamoToStruct "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoToStruct" + m_InternalLegacyOverride "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/InternalLegacyOverride" + m__Maps "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/Maps_" + m_OptimizedMergeSort "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/OptimizedMergeSort" + m_Sets "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/Sets" + m_SortCanon "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/SortCanon" + m_StructuredEncryption "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryption" + m_StructuredEncryptionCrypt "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionCrypt" + m_StructuredEncryptionFooter "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionFooter" + m_StructuredEncryptionHeader "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionHeader" + m_StructuredEncryptionPaths "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionPaths" + m_StructuredEncryptionUtil "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionUtil" + m__System "github.com/dafny-lang/DafnyRuntimeGo/v4/System_" + _dafny "github.com/dafny-lang/DafnyRuntimeGo/v4/dafny" +) + +var _ = os.Args +var _ _dafny.Dummy__ +var _ m__System.Dummy__ +var _ m_Wrappers.Dummy__ +var _ m_BoundedInts.Dummy__ +var _ m_StandardLibrary_UInt.Dummy__ +var _ m_StandardLibrary_MemoryMath.Dummy__ +var _ m_StandardLibrary_Sequence.Dummy__ +var _ m_StandardLibrary_String.Dummy__ +var _ m_StandardLibrary.Dummy__ +var _ m_AwsCryptographyPrimitivesTypes.Dummy__ +var _ m_Random.Dummy__ +var _ m_Digest.Dummy__ +var _ m_WrappedHMAC.Dummy__ +var _ m_HKDF.Dummy__ +var _ m_WrappedHKDF.Dummy__ +var _ m_KdfCtr.Dummy__ +var _ m_AwsCryptographyPrimitivesOperations.Dummy__ +var _ m_AtomicPrimitives.Dummy__ +var _ m_ComAmazonawsDynamodbTypes.Dummy__ +var _ m_ComAmazonawsKmsTypes.Dummy__ +var _ m_AwsCryptographyKeyStoreTypes.Dummy__ +var _ m_AwsCryptographyMaterialProvidersTypes.Dummy__ +var _ m_Base64.Dummy__ +var _ m_AlgorithmSuites.Dummy__ +var _ m_Materials.Dummy__ +var _ m_Keyring.Dummy__ +var _ m_Relations.Dummy__ +var _ m_Seq_MergeSort.Dummy__ +var _ m__Math.Dummy__ +var _ m_Seq.Dummy__ +var _ m_Actions.Dummy__ +var _ m_CanonicalEncryptionContext.Dummy__ +var _ m_MaterialWrapping.Dummy__ +var _ m_IntermediateKeyWrapping.Dummy__ +var _ m_EdkWrapping.Dummy__ +var _ m_ErrorMessages.Dummy__ +var _ m_RawAESKeyring.Dummy__ +var _ m_AwsArnParsing.Dummy__ +var _ m_Constants.Dummy__ +var _ m_EcdhEdkWrapping.Dummy__ +var _ m_RawECDHKeyring.Dummy__ +var _ m_RawRSAKeyring.Dummy__ +var _ m_AwsKmsMrkMatchForDecrypt.Dummy__ +var _ m_AwsKmsUtils.Dummy__ +var _ m_AwsKmsKeyring.Dummy__ +var _ m_AwsKmsDiscoveryKeyring.Dummy__ +var _ m_AwsKmsEcdhKeyring.Dummy__ +var _ m_FileIO.Dummy__ +var _ m_LocalCMC.Dummy__ +var _ m_SynchronizedLocalCMC.Dummy__ +var _ m_StormTracker.Dummy__ +var _ m_StormTrackingCMC.Dummy__ +var _ m_CacheConstants.Dummy__ +var _ m_AwsKmsHierarchicalKeyring.Dummy__ +var _ m_AwsKmsMrkDiscoveryKeyring.Dummy__ +var _ m_AwsKmsMrkKeyring.Dummy__ +var _ m_AwsKmsRsaKeyring.Dummy__ +var _ m_MultiKeyring.Dummy__ +var _ m_AwsKmsMrkAreUnique.Dummy__ +var _ m_StrictMultiKeyring.Dummy__ +var _ m_Com_Amazonaws_Kms.Dummy__ +var _ m_Com_Amazonaws_Dynamodb.Dummy__ +var _ m_DiscoveryMultiKeyring.Dummy__ +var _ m_MrkAwareDiscoveryMultiKeyring.Dummy__ +var _ m_MrkAwareStrictMultiKeyring.Dummy__ +var _ m_CMM.Dummy__ +var _ m_Defaults.Dummy__ +var _ m_Commitment.Dummy__ +var _ m_DefaultCMM.Dummy__ +var _ m_DefaultClientSupplier.Dummy__ +var _ m_Utils.Dummy__ +var _ m_RequiredEncryptionContextCMM.Dummy__ +var _ m_AwsCryptographyMaterialProvidersOperations.Dummy__ +var _ m_MaterialProviders.Dummy__ +var _ m_KeyStoreErrorMessages.Dummy__ +var _ m_KmsArn.Dummy__ +var _ m_Structure.Dummy__ +var _ m_KMSKeystoreOperations.Dummy__ +var _ m_DDBKeystoreOperations.Dummy__ +var _ m_CreateKeys.Dummy__ +var _ m_CreateKeyStoreTable.Dummy__ +var _ m_GetKeys.Dummy__ +var _ m_AwsCryptographyKeyStoreOperations.Dummy__ +var _ m_KeyStore.Dummy__ +var _ m__Unicode.Dummy__ +var _ m_Functions.Dummy__ +var _ m_Utf8EncodingForm.Dummy__ +var _ m_Utf16EncodingForm.Dummy__ +var _ m_UnicodeStrings.Dummy__ +var _ m_GeneralInternals.Dummy__ +var _ m_MulInternalsNonlinear.Dummy__ +var _ m_MulInternals.Dummy__ +var _ m_Mul.Dummy__ +var _ m_ModInternalsNonlinear.Dummy__ +var _ m_DivInternalsNonlinear.Dummy__ +var _ m_ModInternals.Dummy__ +var _ m_DivInternals.Dummy__ +var _ m_DivMod.Dummy__ +var _ m_Power.Dummy__ +var _ m_Logarithm.Dummy__ +var _ m_StandardLibraryInterop.Dummy__ +var _ m_Streams.Dummy__ +var _ m_Sorting.Dummy__ +var _ m_HexStrings.Dummy__ +var _ m_GetOpt.Dummy__ +var _ m_FloatCompare.Dummy__ +var _ m_Base64Lemmas.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Dummy__ +var _ m_StructuredEncryptionUtil.Dummy__ +var _ m_Sets.Dummy__ +var _ m_StructuredEncryptionPaths.Dummy__ +var _ m_StructuredEncryptionHeader.Dummy__ +var _ m_StructuredEncryptionFooter.Dummy__ +var _ m_OptimizedMergeSort.Dummy__ +var _ m_SortCanon.Dummy__ +var _ m_Canonize.Dummy__ +var _ m_StructuredEncryptionCrypt.Dummy__ +var _ m__Maps.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations.Dummy__ +var _ m_StructuredEncryption.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Dummy__ +var _ m_DynamoDbEncryptionUtil.Dummy__ +var _ m_DynamoDbNormalizeNumber.Dummy__ +var _ m_DynamoToStruct.Dummy__ +var _ m_DynamoDbItemEncryptorUtil.Dummy__ +var _ m_InternalLegacyOverride.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations.Dummy__ +var _ m_DynamoDbItemEncryptor.Dummy__ + +type Dummy__ struct{} + +// Definition of class Default__ +type Default__ struct { + dummy byte +} + +func New_Default___() *Default__ { + _this := Default__{} + + return &_this +} + +type CompanionStruct_Default___ struct { +} + +var Companion_Default___ = CompanionStruct_Default___{} + +func (_this *Default__) Equals(other *Default__) bool { + return _this == other +} + +func (_this *Default__) EqualsGeneric(x interface{}) bool { + other, ok := x.(*Default__) + return ok && _this.Equals(other) +} + +func (*Default__) String() string { + return "DynamoDbEncryptionBranchKeyIdSupplier.Default__" +} +func (_this *Default__) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = &Default__{} + +func (_static *CompanionStruct_Default___) ConvertToMplError(err m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Error) m_AwsCryptographyMaterialProvidersTypes.Error { + if (err).Is_Opaque() { + return m_AwsCryptographyMaterialProvidersTypes.Companion_Error_.Create_Opaque_((err).Dtor_obj()) + } else { + return m_AwsCryptographyMaterialProvidersTypes.Companion_Error_.Create_AwsCryptographicMaterialProvidersException_(_dafny.SeqOfString("Unexpected error while getting Branch Key ID.")) + } +} + +// End of class Default__ + +// Definition of class DynamoDbEncryptionBranchKeyIdSupplier +type DynamoDbEncryptionBranchKeyIdSupplier struct { + _ddbKeyBranchKeyIdSupplier m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.IDynamoDbKeyBranchKeyIdSupplier +} + +func New_DynamoDbEncryptionBranchKeyIdSupplier_() *DynamoDbEncryptionBranchKeyIdSupplier { + _this := DynamoDbEncryptionBranchKeyIdSupplier{} + + _this._ddbKeyBranchKeyIdSupplier = (m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.IDynamoDbKeyBranchKeyIdSupplier)(nil) + return &_this +} + +type CompanionStruct_DynamoDbEncryptionBranchKeyIdSupplier_ struct { +} + +var Companion_DynamoDbEncryptionBranchKeyIdSupplier_ = CompanionStruct_DynamoDbEncryptionBranchKeyIdSupplier_{} + +func (_this *DynamoDbEncryptionBranchKeyIdSupplier) Equals(other *DynamoDbEncryptionBranchKeyIdSupplier) bool { + return _this == other +} + +func (_this *DynamoDbEncryptionBranchKeyIdSupplier) EqualsGeneric(x interface{}) bool { + other, ok := x.(*DynamoDbEncryptionBranchKeyIdSupplier) + return ok && _this.Equals(other) +} + +func (*DynamoDbEncryptionBranchKeyIdSupplier) String() string { + return "DynamoDbEncryptionBranchKeyIdSupplier.DynamoDbEncryptionBranchKeyIdSupplier" +} + +func Type_DynamoDbEncryptionBranchKeyIdSupplier_() _dafny.TypeDescriptor { + return type_DynamoDbEncryptionBranchKeyIdSupplier_{} +} + +type type_DynamoDbEncryptionBranchKeyIdSupplier_ struct { +} + +func (_this type_DynamoDbEncryptionBranchKeyIdSupplier_) Default() interface{} { + return (*DynamoDbEncryptionBranchKeyIdSupplier)(nil) +} + +func (_this type_DynamoDbEncryptionBranchKeyIdSupplier_) String() string { + return "DynamoDbEncryptionBranchKeyIdSupplier.DynamoDbEncryptionBranchKeyIdSupplier" +} +func (_this *DynamoDbEncryptionBranchKeyIdSupplier) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){m_AwsCryptographyMaterialProvidersTypes.Companion_IBranchKeyIdSupplier_.TraitID_} +} + +var _ m_AwsCryptographyMaterialProvidersTypes.IBranchKeyIdSupplier = &DynamoDbEncryptionBranchKeyIdSupplier{} +var _ _dafny.TraitOffspring = &DynamoDbEncryptionBranchKeyIdSupplier{} + +func (_this *DynamoDbEncryptionBranchKeyIdSupplier) GetBranchKeyId(input m_AwsCryptographyMaterialProvidersTypes.GetBranchKeyIdInput) m_Wrappers.Result { + var _out0 m_Wrappers.Result + _ = _out0 + _out0 = m_AwsCryptographyMaterialProvidersTypes.Companion_IBranchKeyIdSupplier_.GetBranchKeyId(_this, input) + return _out0 +} +func (_this *DynamoDbEncryptionBranchKeyIdSupplier) Ctor__(ddbKeyBranchKeyIdSupplier m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.IDynamoDbKeyBranchKeyIdSupplier) { + { + (_this)._ddbKeyBranchKeyIdSupplier = ddbKeyBranchKeyIdSupplier + } +} +func (_this *DynamoDbEncryptionBranchKeyIdSupplier) GetBranchKeyId_k(input m_AwsCryptographyMaterialProvidersTypes.GetBranchKeyIdInput) m_Wrappers.Result { + { + var output m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(m_AwsCryptographyMaterialProvidersTypes.Companion_GetBranchKeyIdOutput_.Default()) + _ = output + var _0_attrMapR m_Wrappers.Result + _ = _0_attrMapR + _0_attrMapR = m_DynamoDbItemEncryptorUtil.Companion_Default___.ConvertContextForSelector((input).Dtor_encryptionContext()) + var _1_valueOrError0 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(_dafny.EmptyMap) + _ = _1_valueOrError0 + _1_valueOrError0 = (_0_attrMapR).MapFailure(func(coer74 func(_dafny.Sequence) m_AwsCryptographyMaterialProvidersTypes.Error) func(interface{}) interface{} { + return func(arg102 interface{}) interface{} { + return coer74(arg102.(_dafny.Sequence)) + } + }(func(_2_e _dafny.Sequence) m_AwsCryptographyMaterialProvidersTypes.Error { + return m_AwsCryptographyMaterialProvidersTypes.Companion_Error_.Create_AwsCryptographicMaterialProvidersException_(_2_e) + })) + if (_1_valueOrError0).IsFailure() { + output = (_1_valueOrError0).PropagateFailure() + return output + } + var _3_attrMap _dafny.Map + _ = _3_attrMap + _3_attrMap = (_1_valueOrError0).Extract().(_dafny.Map) + var _4_branchKeyIdR m_Wrappers.Result + _ = _4_branchKeyIdR + var _out0 m_Wrappers.Result + _ = _out0 + _out0 = ((_this).DdbKeyBranchKeyIdSupplier()).GetBranchKeyIdFromDdbKey(m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Companion_GetBranchKeyIdFromDdbKeyInput_.Create_GetBranchKeyIdFromDdbKeyInput_(_3_attrMap)) + _4_branchKeyIdR = _out0 + var _5_valueOrError1 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Companion_GetBranchKeyIdFromDdbKeyOutput_.Default()) + _ = _5_valueOrError1 + _5_valueOrError1 = (_4_branchKeyIdR).MapFailure(func(coer75 func(m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Error) m_AwsCryptographyMaterialProvidersTypes.Error) func(interface{}) interface{} { + return func(arg103 interface{}) interface{} { + return coer75(arg103.(m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Error)) + } + }(Companion_Default___.ConvertToMplError)) + if (_5_valueOrError1).IsFailure() { + output = (_5_valueOrError1).PropagateFailure() + return output + } + var _6_branchKeyIdOut m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.GetBranchKeyIdFromDdbKeyOutput + _ = _6_branchKeyIdOut + _6_branchKeyIdOut = (_5_valueOrError1).Extract().(m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.GetBranchKeyIdFromDdbKeyOutput) + output = m_Wrappers.Companion_Result_.Create_Success_(m_AwsCryptographyMaterialProvidersTypes.Companion_GetBranchKeyIdOutput_.Create_GetBranchKeyIdOutput_((_6_branchKeyIdOut).Dtor_branchKeyId())) + return output + return output + } +} +func (_this *DynamoDbEncryptionBranchKeyIdSupplier) DdbKeyBranchKeyIdSupplier() m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.IDynamoDbKeyBranchKeyIdSupplier { + { + return _this._ddbKeyBranchKeyIdSupplier + } +} + +// End of class DynamoDbEncryptionBranchKeyIdSupplier diff --git a/releases/go/dynamodb-esdk/DynamoDbEncryptionTransforms/DynamoDbEncryptionTransforms.go b/releases/go/dynamodb-esdk/DynamoDbEncryptionTransforms/DynamoDbEncryptionTransforms.go new file mode 100644 index 000000000..1bea60ece --- /dev/null +++ b/releases/go/dynamodb-esdk/DynamoDbEncryptionTransforms/DynamoDbEncryptionTransforms.go @@ -0,0 +1,909 @@ +// Package DynamoDbEncryptionTransforms +// Dafny module DynamoDbEncryptionTransforms compiled into Go + +package DynamoDbEncryptionTransforms + +import ( + os "os" + + m_ComAmazonawsDynamodbTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/dynamodb/ComAmazonawsDynamodbTypes" + m_Com_Amazonaws_Dynamodb "github.com/aws/aws-cryptographic-material-providers-library/releases/go/dynamodb/Com_Amazonaws_Dynamodb" + m_ComAmazonawsKmsTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/kms/ComAmazonawsKmsTypes" + m_Com_Amazonaws_Kms "github.com/aws/aws-cryptographic-material-providers-library/releases/go/kms/Com_Amazonaws_Kms" + m_AlgorithmSuites "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AlgorithmSuites" + m_AwsArnParsing "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsArnParsing" + m_AwsCryptographyKeyStoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyKeyStoreOperations" + m_AwsCryptographyKeyStoreTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyKeyStoreTypes" + m_AwsCryptographyMaterialProvidersOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyMaterialProvidersOperations" + m_AwsCryptographyMaterialProvidersTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyMaterialProvidersTypes" + m_AwsKmsDiscoveryKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsDiscoveryKeyring" + m_AwsKmsEcdhKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsEcdhKeyring" + m_AwsKmsHierarchicalKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsHierarchicalKeyring" + m_AwsKmsKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsKeyring" + m_AwsKmsMrkAreUnique "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkAreUnique" + m_AwsKmsMrkDiscoveryKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkDiscoveryKeyring" + m_AwsKmsMrkKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkKeyring" + m_AwsKmsMrkMatchForDecrypt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkMatchForDecrypt" + m_AwsKmsRsaKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsRsaKeyring" + m_AwsKmsUtils "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsUtils" + m_CMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CMM" + m_CacheConstants "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CacheConstants" + m_CanonicalEncryptionContext "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CanonicalEncryptionContext" + m_Commitment "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Commitment" + m_Constants "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Constants" + m_CreateKeyStoreTable "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CreateKeyStoreTable" + m_CreateKeys "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CreateKeys" + m_DDBKeystoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DDBKeystoreOperations" + m_DefaultCMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DefaultCMM" + m_DefaultClientSupplier "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DefaultClientSupplier" + m_Defaults "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Defaults" + m_DiscoveryMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DiscoveryMultiKeyring" + m_EcdhEdkWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/EcdhEdkWrapping" + m_EdkWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/EdkWrapping" + m_ErrorMessages "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/ErrorMessages" + m_GetKeys "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/GetKeys" + m_IntermediateKeyWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/IntermediateKeyWrapping" + m_KMSKeystoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KMSKeystoreOperations" + m_KeyStore "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KeyStore" + m_KeyStoreErrorMessages "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KeyStoreErrorMessages" + m_Keyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Keyring" + m_KmsArn "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KmsArn" + m_LocalCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/LocalCMC" + m_MaterialProviders "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MaterialProviders" + m_MaterialWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MaterialWrapping" + m_Materials "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Materials" + m_MrkAwareDiscoveryMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MrkAwareDiscoveryMultiKeyring" + m_MrkAwareStrictMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MrkAwareStrictMultiKeyring" + m_MultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MultiKeyring" + m_RawAESKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawAESKeyring" + m_RawECDHKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawECDHKeyring" + m_RawRSAKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawRSAKeyring" + m_RequiredEncryptionContextCMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RequiredEncryptionContextCMM" + m_StormTracker "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StormTracker" + m_StormTrackingCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StormTrackingCMC" + m_StrictMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StrictMultiKeyring" + m_Structure "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Structure" + m_SynchronizedLocalCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/SynchronizedLocalCMC" + m_Utils "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Utils" + m_AtomicPrimitives "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AtomicPrimitives" + m_AwsCryptographyPrimitivesOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AwsCryptographyPrimitivesOperations" + m_AwsCryptographyPrimitivesTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AwsCryptographyPrimitivesTypes" + m_Digest "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/Digest" + m_HKDF "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/HKDF" + m_KdfCtr "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/KdfCtr" + m_Random "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/Random" + m_WrappedHKDF "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/WrappedHKDF" + m_WrappedHMAC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/WrappedHMAC" + m_Actions "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Actions" + m_Base64 "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Base64" + m_Base64Lemmas "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Base64Lemmas" + m_BoundedInts "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/BoundedInts" + m_DivInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivInternals" + m_DivInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivInternalsNonlinear" + m_DivMod "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivMod" + m_FileIO "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/FileIO" + m_FloatCompare "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/FloatCompare" + m_Functions "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Functions" + m_GeneralInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/GeneralInternals" + m_GetOpt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/GetOpt" + m_HexStrings "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/HexStrings" + m_Logarithm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Logarithm" + m__Math "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Math_" + m_ModInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/ModInternals" + m_ModInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/ModInternalsNonlinear" + m_Mul "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Mul" + m_MulInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/MulInternals" + m_MulInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/MulInternalsNonlinear" + m_Power "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Power" + m_Relations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Relations" + m_Seq "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Seq" + m_Seq_MergeSort "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Seq_MergeSort" + m_SortedSets "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/SortedSets" + m_Sorting "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Sorting" + m_StandardLibrary "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary" + m_StandardLibraryInterop "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibraryInterop" + m_StandardLibrary_MemoryMath "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_MemoryMath" + m_StandardLibrary_Sequence "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_Sequence" + m_StandardLibrary_String "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_String" + m_StandardLibrary_UInt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_UInt" + m_Streams "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Streams" + m_UnicodeStrings "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/UnicodeStrings" + m__Unicode "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Unicode_" + m_Utf16EncodingForm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Utf16EncodingForm" + m_Utf8EncodingForm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Utf8EncodingForm" + m_Wrappers "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Wrappers" + m_AttributeResolver "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AttributeResolver" + m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations" + m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes" + m_AwsCryptographyDbEncryptionSdkDynamoDbOperations "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbOperations" + m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsOperations "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbTransformsOperations" + m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes" + m_AwsCryptographyDbEncryptionSdkDynamoDbTypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbTypes" + m_AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations" + m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes" + m_BaseBeacon "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/BaseBeacon" + m_BatchExecuteStatementTransform "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/BatchExecuteStatementTransform" + m_BatchGetItemTransform "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/BatchGetItemTransform" + m_BatchWriteItemTransform "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/BatchWriteItemTransform" + m_Canonize "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/Canonize" + m_CompoundBeacon "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/CompoundBeacon" + m_DdbMiddlewareConfig "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DdbMiddlewareConfig" + m_DdbStatement "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DdbStatement" + m_DdbVirtualFields "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DdbVirtualFields" + m_DeleteItemTransform "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DeleteItemTransform" + m_DynamoDBFilterExpr "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDBFilterExpr" + m_DynamoDBSupport "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDBSupport" + m_DynamoDbEncryption "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbEncryption" + m_DynamoDbEncryptionBranchKeyIdSupplier "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbEncryptionBranchKeyIdSupplier" + m_DynamoDbEncryptionUtil "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbEncryptionUtil" + m_DynamoDbItemEncryptor "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbItemEncryptor" + m_DynamoDbItemEncryptorUtil "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbItemEncryptorUtil" + m_DynamoDbMiddlewareSupport "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbMiddlewareSupport" + m_DynamoDbNormalizeNumber "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbNormalizeNumber" + m_DynamoDbUpdateExpr "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbUpdateExpr" + m_DynamoToStruct "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoToStruct" + m_ExecuteStatementTransform "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/ExecuteStatementTransform" + m_ExecuteTransactionTransform "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/ExecuteTransactionTransform" + m_GetItemTransform "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/GetItemTransform" + m_InternalLegacyOverride "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/InternalLegacyOverride" + m__Maps "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/Maps_" + m_OptimizedMergeSort "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/OptimizedMergeSort" + m_PutItemTransform "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/PutItemTransform" + m_QueryTransform "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/QueryTransform" + m_ScanTransform "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/ScanTransform" + m_SearchConfigToInfo "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/SearchConfigToInfo" + m_SearchableEncryptionInfo "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/SearchableEncryptionInfo" + m_Sets "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/Sets" + m_SortCanon "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/SortCanon" + m_StructuredEncryption "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryption" + m_StructuredEncryptionCrypt "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionCrypt" + m_StructuredEncryptionFooter "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionFooter" + m_StructuredEncryptionHeader "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionHeader" + m_StructuredEncryptionPaths "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionPaths" + m_StructuredEncryptionUtil "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionUtil" + m_TermLoc "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/TermLoc" + m_TransactGetItemsTransform "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/TransactGetItemsTransform" + m_TransactWriteItemsTransform "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/TransactWriteItemsTransform" + m_UpdateItemTransform "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/UpdateItemTransform" + m__System "github.com/dafny-lang/DafnyRuntimeGo/v4/System_" + _dafny "github.com/dafny-lang/DafnyRuntimeGo/v4/dafny" +) + +var _ = os.Args +var _ _dafny.Dummy__ +var _ m__System.Dummy__ +var _ m_Wrappers.Dummy__ +var _ m_BoundedInts.Dummy__ +var _ m_StandardLibrary_UInt.Dummy__ +var _ m_StandardLibrary_MemoryMath.Dummy__ +var _ m_StandardLibrary_Sequence.Dummy__ +var _ m_StandardLibrary_String.Dummy__ +var _ m_StandardLibrary.Dummy__ +var _ m_AwsCryptographyPrimitivesTypes.Dummy__ +var _ m_Random.Dummy__ +var _ m_Digest.Dummy__ +var _ m_WrappedHMAC.Dummy__ +var _ m_HKDF.Dummy__ +var _ m_WrappedHKDF.Dummy__ +var _ m_KdfCtr.Dummy__ +var _ m_AwsCryptographyPrimitivesOperations.Dummy__ +var _ m_AtomicPrimitives.Dummy__ +var _ m_ComAmazonawsDynamodbTypes.Dummy__ +var _ m_ComAmazonawsKmsTypes.Dummy__ +var _ m_AwsCryptographyKeyStoreTypes.Dummy__ +var _ m_AwsCryptographyMaterialProvidersTypes.Dummy__ +var _ m_Base64.Dummy__ +var _ m_AlgorithmSuites.Dummy__ +var _ m_Materials.Dummy__ +var _ m_Keyring.Dummy__ +var _ m_Relations.Dummy__ +var _ m_Seq_MergeSort.Dummy__ +var _ m__Math.Dummy__ +var _ m_Seq.Dummy__ +var _ m_Actions.Dummy__ +var _ m_CanonicalEncryptionContext.Dummy__ +var _ m_MaterialWrapping.Dummy__ +var _ m_IntermediateKeyWrapping.Dummy__ +var _ m_EdkWrapping.Dummy__ +var _ m_ErrorMessages.Dummy__ +var _ m_RawAESKeyring.Dummy__ +var _ m_AwsArnParsing.Dummy__ +var _ m_Constants.Dummy__ +var _ m_EcdhEdkWrapping.Dummy__ +var _ m_RawECDHKeyring.Dummy__ +var _ m_RawRSAKeyring.Dummy__ +var _ m_AwsKmsMrkMatchForDecrypt.Dummy__ +var _ m_AwsKmsUtils.Dummy__ +var _ m_AwsKmsKeyring.Dummy__ +var _ m_AwsKmsDiscoveryKeyring.Dummy__ +var _ m_AwsKmsEcdhKeyring.Dummy__ +var _ m_FileIO.Dummy__ +var _ m_LocalCMC.Dummy__ +var _ m_SynchronizedLocalCMC.Dummy__ +var _ m_StormTracker.Dummy__ +var _ m_StormTrackingCMC.Dummy__ +var _ m_CacheConstants.Dummy__ +var _ m_AwsKmsHierarchicalKeyring.Dummy__ +var _ m_AwsKmsMrkDiscoveryKeyring.Dummy__ +var _ m_AwsKmsMrkKeyring.Dummy__ +var _ m_AwsKmsRsaKeyring.Dummy__ +var _ m_MultiKeyring.Dummy__ +var _ m_AwsKmsMrkAreUnique.Dummy__ +var _ m_StrictMultiKeyring.Dummy__ +var _ m_Com_Amazonaws_Kms.Dummy__ +var _ m_Com_Amazonaws_Dynamodb.Dummy__ +var _ m_DiscoveryMultiKeyring.Dummy__ +var _ m_MrkAwareDiscoveryMultiKeyring.Dummy__ +var _ m_MrkAwareStrictMultiKeyring.Dummy__ +var _ m_CMM.Dummy__ +var _ m_Defaults.Dummy__ +var _ m_Commitment.Dummy__ +var _ m_DefaultCMM.Dummy__ +var _ m_DefaultClientSupplier.Dummy__ +var _ m_Utils.Dummy__ +var _ m_RequiredEncryptionContextCMM.Dummy__ +var _ m_AwsCryptographyMaterialProvidersOperations.Dummy__ +var _ m_MaterialProviders.Dummy__ +var _ m_KeyStoreErrorMessages.Dummy__ +var _ m_KmsArn.Dummy__ +var _ m_Structure.Dummy__ +var _ m_KMSKeystoreOperations.Dummy__ +var _ m_DDBKeystoreOperations.Dummy__ +var _ m_CreateKeys.Dummy__ +var _ m_CreateKeyStoreTable.Dummy__ +var _ m_GetKeys.Dummy__ +var _ m_AwsCryptographyKeyStoreOperations.Dummy__ +var _ m_KeyStore.Dummy__ +var _ m__Unicode.Dummy__ +var _ m_Functions.Dummy__ +var _ m_Utf8EncodingForm.Dummy__ +var _ m_Utf16EncodingForm.Dummy__ +var _ m_UnicodeStrings.Dummy__ +var _ m_GeneralInternals.Dummy__ +var _ m_MulInternalsNonlinear.Dummy__ +var _ m_MulInternals.Dummy__ +var _ m_Mul.Dummy__ +var _ m_ModInternalsNonlinear.Dummy__ +var _ m_DivInternalsNonlinear.Dummy__ +var _ m_ModInternals.Dummy__ +var _ m_DivInternals.Dummy__ +var _ m_DivMod.Dummy__ +var _ m_Power.Dummy__ +var _ m_Logarithm.Dummy__ +var _ m_StandardLibraryInterop.Dummy__ +var _ m_Streams.Dummy__ +var _ m_Sorting.Dummy__ +var _ m_HexStrings.Dummy__ +var _ m_GetOpt.Dummy__ +var _ m_FloatCompare.Dummy__ +var _ m_Base64Lemmas.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Dummy__ +var _ m_StructuredEncryptionUtil.Dummy__ +var _ m_Sets.Dummy__ +var _ m_StructuredEncryptionPaths.Dummy__ +var _ m_StructuredEncryptionHeader.Dummy__ +var _ m_StructuredEncryptionFooter.Dummy__ +var _ m_OptimizedMergeSort.Dummy__ +var _ m_SortCanon.Dummy__ +var _ m_Canonize.Dummy__ +var _ m_StructuredEncryptionCrypt.Dummy__ +var _ m__Maps.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations.Dummy__ +var _ m_StructuredEncryption.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Dummy__ +var _ m_DynamoDbEncryptionUtil.Dummy__ +var _ m_DynamoDbNormalizeNumber.Dummy__ +var _ m_DynamoToStruct.Dummy__ +var _ m_DynamoDbItemEncryptorUtil.Dummy__ +var _ m_InternalLegacyOverride.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations.Dummy__ +var _ m_DynamoDbItemEncryptor.Dummy__ +var _ m_DynamoDbEncryptionBranchKeyIdSupplier.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbOperations.Dummy__ +var _ m_DynamoDbEncryption.Dummy__ +var _ m_TermLoc.Dummy__ +var _ m_DdbVirtualFields.Dummy__ +var _ m_DynamoDbUpdateExpr.Dummy__ +var _ m_BaseBeacon.Dummy__ +var _ m_CompoundBeacon.Dummy__ +var _ m_SearchableEncryptionInfo.Dummy__ +var _ m_DynamoDBFilterExpr.Dummy__ +var _ m_DynamoDBSupport.Dummy__ +var _ m_SearchConfigToInfo.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Dummy__ +var _ m_DdbMiddlewareConfig.Dummy__ +var _ m_DdbStatement.Dummy__ +var _ m_DynamoDbMiddlewareSupport.Dummy__ +var _ m_PutItemTransform.Dummy__ +var _ m_GetItemTransform.Dummy__ +var _ m_UpdateItemTransform.Dummy__ +var _ m_BatchWriteItemTransform.Dummy__ +var _ m_TransactWriteItemsTransform.Dummy__ +var _ m_BatchGetItemTransform.Dummy__ +var _ m_ScanTransform.Dummy__ +var _ m_QueryTransform.Dummy__ +var _ m_TransactGetItemsTransform.Dummy__ +var _ m_DeleteItemTransform.Dummy__ +var _ m_ExecuteStatementTransform.Dummy__ +var _ m_BatchExecuteStatementTransform.Dummy__ +var _ m_ExecuteTransactionTransform.Dummy__ +var _ m_AttributeResolver.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsOperations.Dummy__ + +type Dummy__ struct{} + +// Definition of class Default__ +type Default__ struct { + dummy byte +} + +func New_Default___() *Default__ { + _this := Default__{} + + return &_this +} + +type CompanionStruct_Default___ struct { +} + +var Companion_Default___ = CompanionStruct_Default___{} + +func (_this *Default__) Equals(other *Default__) bool { + return _this == other +} + +func (_this *Default__) EqualsGeneric(x interface{}) bool { + other, ok := x.(*Default__) + return ok && _this.Equals(other) +} + +func (*Default__) String() string { + return "DynamoDbEncryptionTransforms.Default__" +} +func (_this *Default__) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = &Default__{} + +func (_static *CompanionStruct_Default___) DefaultDynamoDbTablesEncryptionConfig() m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.DynamoDbTablesEncryptionConfig { + return m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Companion_DynamoDbTablesEncryptionConfig_.Create_DynamoDbTablesEncryptionConfig_(_dafny.NewMapBuilder().ToMap()) +} +func (_static *CompanionStruct_Default___) AddSignedBeaconActions(names _dafny.Sequence, actions _dafny.Map, pos _dafny.Int) _dafny.Map { + goto TAIL_CALL_START +TAIL_CALL_START: + if (_dafny.IntOfUint32((names).Cardinality())).Cmp(pos) == 0 { + return actions + } else { + var _in0 _dafny.Sequence = names + _ = _in0 + var _in1 _dafny.Map = (actions).Update((names).Select(0).(_dafny.Sequence), m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Companion_CryptoAction_.Create_SIGN__ONLY_()) + _ = _in1 + var _in2 _dafny.Int = (pos).Plus(_dafny.One) + _ = _in2 + names = _in0 + actions = _in1 + pos = _in2 + goto TAIL_CALL_START + } +} +func (_static *CompanionStruct_Default___) IsConfigured(config m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.DynamoDbTableEncryptionConfig, name _dafny.Sequence) bool { + return ((((config).Dtor_attributeActionsOnEncrypt()).Contains(name)) || ((((config).Dtor_allowedUnsignedAttributes()).Is_Some()) && (_dafny.Companion_Sequence_.Contains(((config).Dtor_allowedUnsignedAttributes()).Dtor_value().(_dafny.Sequence), name)))) || ((((config).Dtor_allowedUnsignedAttributePrefix()).Is_Some()) && (_dafny.Companion_Sequence_.IsPrefixOf(((config).Dtor_allowedUnsignedAttributePrefix()).Dtor_value().(_dafny.Sequence), name))) +} +func (_static *CompanionStruct_Default___) DynamoDbEncryptionTransforms(config m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.DynamoDbTablesEncryptionConfig) m_Wrappers.Result { + var res m_Wrappers.Result = m_Wrappers.Result{} + _ = res + var _0_internalConfigs _dafny.Map + _ = _0_internalConfigs + _0_internalConfigs = _dafny.NewMapBuilder().ToMap() + var _1_m_k _dafny.Map + _ = _1_m_k + _1_m_k = (config).Dtor_tableEncryptionConfigs() + var _2_mKeys _dafny.Set + _ = _2_mKeys + _2_mKeys = (_1_m_k).Keys() + var _3_tableNamesSeq _dafny.Sequence + _ = _3_tableNamesSeq + var _out0 _dafny.Sequence + _ = _out0 + _out0 = m_SortedSets.SetToSequence(_2_mKeys) + _3_tableNamesSeq = _out0 + var _4_allLogicalTableNames _dafny.Set + _ = _4_allLogicalTableNames + _4_allLogicalTableNames = _dafny.SetOf() + var _5_i _dafny.Int + _ = _5_i + _5_i = _dafny.Zero + for (_5_i).Cmp(_dafny.IntOfUint32((_3_tableNamesSeq).Cardinality())) < 0 { + var _6_tableName _dafny.Sequence + _ = _6_tableName + _6_tableName = (_3_tableNamesSeq).Select((_5_i).Uint32()).(_dafny.Sequence) + var _7_inputConfig m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.DynamoDbTableEncryptionConfig + _ = _7_inputConfig + _7_inputConfig = ((config).Dtor_tableEncryptionConfigs()).Get(_6_tableName).(m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.DynamoDbTableEncryptionConfig) + var _8_valueOrError0 m_Wrappers.Outcome = m_Wrappers.Companion_Outcome_.Default() + _ = _8_valueOrError0 + _8_valueOrError0 = m_Wrappers.Companion_Default___.Need(!(_4_allLogicalTableNames).Contains((_7_inputConfig).Dtor_logicalTableName()), m_DdbMiddlewareConfig.Companion_Default___.E(_dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("Duplicate logical table mapped to multiple physical tables: "), (_7_inputConfig).Dtor_logicalTableName()))) + if (_8_valueOrError0).IsFailure() { + res = (_8_valueOrError0).PropagateFailure() + return res + } + var _9_searchR m_Wrappers.Result + _ = _9_searchR + var _out1 m_Wrappers.Result + _ = _out1 + _out1 = m_SearchConfigToInfo.Companion_Default___.Convert(_7_inputConfig) + _9_searchR = _out1 + var _10_valueOrError1 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(m_Wrappers.Companion_Option_.Default()) + _ = _10_valueOrError1 + _10_valueOrError1 = (_9_searchR).MapFailure(func(coer163 func(m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Error) m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Error) func(interface{}) interface{} { + return func(arg201 interface{}) interface{} { + return coer163(arg201.(m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Error)) + } + }(func(_11_e m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Error) m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Error { + return m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_Error_.Create_AwsCryptographyDbEncryptionSdkDynamoDb_(_11_e) + })) + if (_10_valueOrError1).IsFailure() { + res = (_10_valueOrError1).PropagateFailure() + return res + } + var _12_search m_Wrappers.Option + _ = _12_search + _12_search = (_10_valueOrError1).Extract().(m_Wrappers.Option) + var _13_signedBeacons _dafny.Sequence + _ = _13_signedBeacons + if (_12_search).Is_None() { + _13_signedBeacons = _dafny.SeqOf() + } else { + _13_signedBeacons = (((_12_search).Dtor_value().(m_SearchableEncryptionInfo.SearchInfo)).Curr()).ListSignedBeacons() + } + var _14_badBeacons _dafny.Sequence + _ = _14_badBeacons + _14_badBeacons = m_Seq.Companion_Default___.Filter(func(coer164 func(_dafny.Sequence) bool) func(interface{}) bool { + return func(arg202 interface{}) bool { + return coer164(arg202.(_dafny.Sequence)) + } + }((func(_15_inputConfig m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.DynamoDbTableEncryptionConfig) func(_dafny.Sequence) bool { + return func(_16_s _dafny.Sequence) bool { + return Companion_Default___.IsConfigured(_15_inputConfig, _16_s) + } + })(_7_inputConfig)), _13_signedBeacons) + if (_dafny.IntOfUint32((_14_badBeacons).Cardinality())).Sign() == 1 { + res = m_Wrappers.Companion_Result_.Create_Failure_(m_DdbMiddlewareConfig.Companion_Default___.E(_dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("Signed beacons cannot be configured with CryptoActions or as unauthenticated : "), m_StandardLibrary.Companion_Default___.Join(_14_badBeacons, _dafny.SeqOfString(", "))))) + return res + } + var _17_valueOrError2 m_Wrappers.Outcome = m_Wrappers.Companion_Outcome_.Default() + _ = _17_valueOrError2 + _17_valueOrError2 = m_Wrappers.Companion_Default___.Need(_dafny.Quantifier((_13_signedBeacons).UniqueElements(), true, func(_forall_var_0 _dafny.Sequence) bool { + var _18_k _dafny.Sequence + _18_k = interface{}(_forall_var_0).(_dafny.Sequence) + return !(_dafny.Companion_Sequence_.Contains(_13_signedBeacons, _18_k)) || (m_ComAmazonawsDynamodbTypes.Companion_Default___.IsValid__AttributeName(_18_k)) + }), m_DdbMiddlewareConfig.Companion_Default___.E(_dafny.SeqOfString("Beacon configured with bad name"))) + if (_17_valueOrError2).IsFailure() { + res = (_17_valueOrError2).PropagateFailure() + return res + } + var _19_newActions _dafny.Map + _ = _19_newActions + _19_newActions = Companion_Default___.AddSignedBeaconActions(_13_signedBeacons, (_7_inputConfig).Dtor_attributeActionsOnEncrypt(), _dafny.Zero) + var _20_encryptorConfig m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.DynamoDbItemEncryptorConfig + _ = _20_encryptorConfig + _20_encryptorConfig = m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Companion_DynamoDbItemEncryptorConfig_.Create_DynamoDbItemEncryptorConfig_((_7_inputConfig).Dtor_logicalTableName(), (_7_inputConfig).Dtor_partitionKeyName(), (_7_inputConfig).Dtor_sortKeyName(), _19_newActions, (_7_inputConfig).Dtor_allowedUnsignedAttributes(), (_7_inputConfig).Dtor_allowedUnsignedAttributePrefix(), (_7_inputConfig).Dtor_algorithmSuiteId(), (_7_inputConfig).Dtor_keyring(), (_7_inputConfig).Dtor_cmm(), (_7_inputConfig).Dtor_legacyOverride(), (_7_inputConfig).Dtor_plaintextOverride()) + var _21_itemEncryptorRes m_Wrappers.Result + _ = _21_itemEncryptorRes + var _out2 m_Wrappers.Result + _ = _out2 + _out2 = m_DynamoDbItemEncryptor.Companion_Default___.DynamoDbItemEncryptor(_20_encryptorConfig) + _21_itemEncryptorRes = _out2 + var _22_valueOrError3 m_Wrappers.Result = m_Wrappers.Result{} + _ = _22_valueOrError3 + _22_valueOrError3 = (_21_itemEncryptorRes).MapFailure(func(coer165 func(m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Error) m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Error) func(interface{}) interface{} { + return func(arg203 interface{}) interface{} { + return coer165(arg203.(m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Error)) + } + }(func(_23_e m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Error) m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Error { + return m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_Error_.Create_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptor_(_23_e) + })) + if (_22_valueOrError3).IsFailure() { + res = (_22_valueOrError3).PropagateFailure() + return res + } + var _24_itemEncryptorX m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.IDynamoDbItemEncryptorClient + _ = _24_itemEncryptorX + _24_itemEncryptorX = (_22_valueOrError3).Extract().(*m_DynamoDbItemEncryptor.DynamoDbItemEncryptorClient) + var _25_itemEncryptor *m_DynamoDbItemEncryptor.DynamoDbItemEncryptorClient + _ = _25_itemEncryptor + _25_itemEncryptor = _24_itemEncryptorX.(*m_DynamoDbItemEncryptor.DynamoDbItemEncryptorClient) + var _26_encConfig m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations.Config + _ = _26_encConfig + _26_encConfig = (_25_itemEncryptor).Config() + var _27_internalConfig m_DdbMiddlewareConfig.TableConfig + _ = _27_internalConfig + _27_internalConfig = m_DdbMiddlewareConfig.Companion_TableConfig_.Create_TableConfig_(_6_tableName, (_7_inputConfig).Dtor_logicalTableName(), (_7_inputConfig).Dtor_partitionKeyName(), (_7_inputConfig).Dtor_sortKeyName(), _25_itemEncryptor, _12_search, ((_7_inputConfig).Dtor_plaintextOverride()).UnwrapOr(m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Companion_PlaintextOverride_.Create_FORBID__PLAINTEXT__WRITE__FORBID__PLAINTEXT__READ_()).(m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.PlaintextOverride)) + _0_internalConfigs = (_0_internalConfigs).Update(_6_tableName, _27_internalConfig) + _4_allLogicalTableNames = (_4_allLogicalTableNames).Union(_dafny.SetOf((_27_internalConfig).Dtor_logicalTableName())) + _5_i = (_5_i).Plus(_dafny.One) + } + var _28_newConfig m_DdbMiddlewareConfig.Config + _ = _28_newConfig + _28_newConfig = m_DdbMiddlewareConfig.Companion_Config_.Create_Config_(_0_internalConfigs) + var _29_client *DynamoDbEncryptionTransformsClient + _ = _29_client + var _nw0 *DynamoDbEncryptionTransformsClient = New_DynamoDbEncryptionTransformsClient_() + _ = _nw0 + _nw0.Ctor__(_28_newConfig) + _29_client = _nw0 + res = m_Wrappers.Companion_Result_.Create_Success_(_29_client) + return res + return res +} +func (_static *CompanionStruct_Default___) CreateSuccessOfClient(client m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.IDynamoDbEncryptionTransformsClient) m_Wrappers.Result { + return m_Wrappers.Companion_Result_.Create_Success_(client) +} +func (_static *CompanionStruct_Default___) CreateFailureOfError(error_ m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Error) m_Wrappers.Result { + return m_Wrappers.Companion_Result_.Create_Failure_(error_) +} + +// End of class Default__ + +// Definition of class DynamoDbEncryptionTransformsClient +type DynamoDbEncryptionTransformsClient struct { + _config m_DdbMiddlewareConfig.Config +} + +func New_DynamoDbEncryptionTransformsClient_() *DynamoDbEncryptionTransformsClient { + _this := DynamoDbEncryptionTransformsClient{} + + _this._config = m_DdbMiddlewareConfig.Companion_Config_.Default() + return &_this +} + +type CompanionStruct_DynamoDbEncryptionTransformsClient_ struct { +} + +var Companion_DynamoDbEncryptionTransformsClient_ = CompanionStruct_DynamoDbEncryptionTransformsClient_{} + +func (_this *DynamoDbEncryptionTransformsClient) Equals(other *DynamoDbEncryptionTransformsClient) bool { + return _this == other +} + +func (_this *DynamoDbEncryptionTransformsClient) EqualsGeneric(x interface{}) bool { + other, ok := x.(*DynamoDbEncryptionTransformsClient) + return ok && _this.Equals(other) +} + +func (*DynamoDbEncryptionTransformsClient) String() string { + return "DynamoDbEncryptionTransforms.DynamoDbEncryptionTransformsClient" +} + +func Type_DynamoDbEncryptionTransformsClient_() _dafny.TypeDescriptor { + return type_DynamoDbEncryptionTransformsClient_{} +} + +type type_DynamoDbEncryptionTransformsClient_ struct { +} + +func (_this type_DynamoDbEncryptionTransformsClient_) Default() interface{} { + return (*DynamoDbEncryptionTransformsClient)(nil) +} + +func (_this type_DynamoDbEncryptionTransformsClient_) String() string { + return "DynamoDbEncryptionTransforms.DynamoDbEncryptionTransformsClient" +} +func (_this *DynamoDbEncryptionTransformsClient) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_IDynamoDbEncryptionTransformsClient_.TraitID_} +} + +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.IDynamoDbEncryptionTransformsClient = &DynamoDbEncryptionTransformsClient{} +var _ _dafny.TraitOffspring = &DynamoDbEncryptionTransformsClient{} + +func (_this *DynamoDbEncryptionTransformsClient) Ctor__(config m_DdbMiddlewareConfig.Config) { + { + (_this)._config = config + } +} +func (_this *DynamoDbEncryptionTransformsClient) PutItemInputTransform(input m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.PutItemInputTransformInput) m_Wrappers.Result { + { + var output m_Wrappers.Result = m_Wrappers.Result{} + _ = output + var _out0 m_Wrappers.Result + _ = _out0 + _out0 = m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsOperations.Companion_Default___.PutItemInputTransform((_this).Config(), input) + output = _out0 + return output + } +} +func (_this *DynamoDbEncryptionTransformsClient) PutItemOutputTransform(input m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.PutItemOutputTransformInput) m_Wrappers.Result { + { + var output m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_PutItemOutputTransformOutput_.Default()) + _ = output + var _out0 m_Wrappers.Result + _ = _out0 + _out0 = m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsOperations.Companion_Default___.PutItemOutputTransform((_this).Config(), input) + output = _out0 + return output + } +} +func (_this *DynamoDbEncryptionTransformsClient) GetItemInputTransform(input m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.GetItemInputTransformInput) m_Wrappers.Result { + { + var output m_Wrappers.Result = m_Wrappers.Result{} + _ = output + var _out0 m_Wrappers.Result + _ = _out0 + _out0 = m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsOperations.Companion_Default___.GetItemInputTransform((_this).Config(), input) + output = _out0 + return output + } +} +func (_this *DynamoDbEncryptionTransformsClient) GetItemOutputTransform(input m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.GetItemOutputTransformInput) m_Wrappers.Result { + { + var output m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_GetItemOutputTransformOutput_.Default()) + _ = output + var _out0 m_Wrappers.Result + _ = _out0 + _out0 = m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsOperations.Companion_Default___.GetItemOutputTransform((_this).Config(), input) + output = _out0 + return output + } +} +func (_this *DynamoDbEncryptionTransformsClient) BatchWriteItemInputTransform(input m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.BatchWriteItemInputTransformInput) m_Wrappers.Result { + { + var output m_Wrappers.Result = m_Wrappers.Result{} + _ = output + var _out0 m_Wrappers.Result + _ = _out0 + _out0 = m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsOperations.Companion_Default___.BatchWriteItemInputTransform((_this).Config(), input) + output = _out0 + return output + } +} +func (_this *DynamoDbEncryptionTransformsClient) BatchWriteItemOutputTransform(input m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.BatchWriteItemOutputTransformInput) m_Wrappers.Result { + { + var output m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_BatchWriteItemOutputTransformOutput_.Default()) + _ = output + var _out0 m_Wrappers.Result + _ = _out0 + _out0 = m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsOperations.Companion_Default___.BatchWriteItemOutputTransform((_this).Config(), input) + output = _out0 + return output + } +} +func (_this *DynamoDbEncryptionTransformsClient) BatchGetItemInputTransform(input m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.BatchGetItemInputTransformInput) m_Wrappers.Result { + { + var output m_Wrappers.Result = m_Wrappers.Result{} + _ = output + var _out0 m_Wrappers.Result + _ = _out0 + _out0 = m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsOperations.Companion_Default___.BatchGetItemInputTransform((_this).Config(), input) + output = _out0 + return output + } +} +func (_this *DynamoDbEncryptionTransformsClient) BatchGetItemOutputTransform(input m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.BatchGetItemOutputTransformInput) m_Wrappers.Result { + { + var output m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_BatchGetItemOutputTransformOutput_.Default()) + _ = output + var _out0 m_Wrappers.Result + _ = _out0 + _out0 = m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsOperations.Companion_Default___.BatchGetItemOutputTransform((_this).Config(), input) + output = _out0 + return output + } +} +func (_this *DynamoDbEncryptionTransformsClient) ScanInputTransform(input m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.ScanInputTransformInput) m_Wrappers.Result { + { + var output m_Wrappers.Result = m_Wrappers.Result{} + _ = output + var _out0 m_Wrappers.Result + _ = _out0 + _out0 = m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsOperations.Companion_Default___.ScanInputTransform((_this).Config(), input) + output = _out0 + return output + } +} +func (_this *DynamoDbEncryptionTransformsClient) ScanOutputTransform(input m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.ScanOutputTransformInput) m_Wrappers.Result { + { + var output m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_ScanOutputTransformOutput_.Default()) + _ = output + var _out0 m_Wrappers.Result + _ = _out0 + _out0 = m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsOperations.Companion_Default___.ScanOutputTransform((_this).Config(), input) + output = _out0 + return output + } +} +func (_this *DynamoDbEncryptionTransformsClient) QueryInputTransform(input m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.QueryInputTransformInput) m_Wrappers.Result { + { + var output m_Wrappers.Result = m_Wrappers.Result{} + _ = output + var _out0 m_Wrappers.Result + _ = _out0 + _out0 = m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsOperations.Companion_Default___.QueryInputTransform((_this).Config(), input) + output = _out0 + return output + } +} +func (_this *DynamoDbEncryptionTransformsClient) QueryOutputTransform(input m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.QueryOutputTransformInput) m_Wrappers.Result { + { + var output m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_QueryOutputTransformOutput_.Default()) + _ = output + var _out0 m_Wrappers.Result + _ = _out0 + _out0 = m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsOperations.Companion_Default___.QueryOutputTransform((_this).Config(), input) + output = _out0 + return output + } +} +func (_this *DynamoDbEncryptionTransformsClient) TransactWriteItemsInputTransform(input m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.TransactWriteItemsInputTransformInput) m_Wrappers.Result { + { + var output m_Wrappers.Result = m_Wrappers.Result{} + _ = output + var _out0 m_Wrappers.Result + _ = _out0 + _out0 = m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsOperations.Companion_Default___.TransactWriteItemsInputTransform((_this).Config(), input) + output = _out0 + return output + } +} +func (_this *DynamoDbEncryptionTransformsClient) TransactWriteItemsOutputTransform(input m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.TransactWriteItemsOutputTransformInput) m_Wrappers.Result { + { + var output m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_TransactWriteItemsOutputTransformOutput_.Default()) + _ = output + var _out0 m_Wrappers.Result + _ = _out0 + _out0 = m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsOperations.Companion_Default___.TransactWriteItemsOutputTransform((_this).Config(), input) + output = _out0 + return output + } +} +func (_this *DynamoDbEncryptionTransformsClient) UpdateItemInputTransform(input m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.UpdateItemInputTransformInput) m_Wrappers.Result { + { + var output m_Wrappers.Result = m_Wrappers.Result{} + _ = output + var _out0 m_Wrappers.Result + _ = _out0 + _out0 = m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsOperations.Companion_Default___.UpdateItemInputTransform((_this).Config(), input) + output = _out0 + return output + } +} +func (_this *DynamoDbEncryptionTransformsClient) UpdateItemOutputTransform(input m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.UpdateItemOutputTransformInput) m_Wrappers.Result { + { + var output m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_UpdateItemOutputTransformOutput_.Default()) + _ = output + var _out0 m_Wrappers.Result + _ = _out0 + _out0 = m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsOperations.Companion_Default___.UpdateItemOutputTransform((_this).Config(), input) + output = _out0 + return output + } +} +func (_this *DynamoDbEncryptionTransformsClient) DeleteItemInputTransform(input m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.DeleteItemInputTransformInput) m_Wrappers.Result { + { + var output m_Wrappers.Result = m_Wrappers.Result{} + _ = output + var _out0 m_Wrappers.Result + _ = _out0 + _out0 = m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsOperations.Companion_Default___.DeleteItemInputTransform((_this).Config(), input) + output = _out0 + return output + } +} +func (_this *DynamoDbEncryptionTransformsClient) DeleteItemOutputTransform(input m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.DeleteItemOutputTransformInput) m_Wrappers.Result { + { + var output m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_DeleteItemOutputTransformOutput_.Default()) + _ = output + var _out0 m_Wrappers.Result + _ = _out0 + _out0 = m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsOperations.Companion_Default___.DeleteItemOutputTransform((_this).Config(), input) + output = _out0 + return output + } +} +func (_this *DynamoDbEncryptionTransformsClient) TransactGetItemsInputTransform(input m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.TransactGetItemsInputTransformInput) m_Wrappers.Result { + { + var output m_Wrappers.Result = m_Wrappers.Result{} + _ = output + var _out0 m_Wrappers.Result + _ = _out0 + _out0 = m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsOperations.Companion_Default___.TransactGetItemsInputTransform((_this).Config(), input) + output = _out0 + return output + } +} +func (_this *DynamoDbEncryptionTransformsClient) TransactGetItemsOutputTransform(input m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.TransactGetItemsOutputTransformInput) m_Wrappers.Result { + { + var output m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_TransactGetItemsOutputTransformOutput_.Default()) + _ = output + var _out0 m_Wrappers.Result + _ = _out0 + _out0 = m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsOperations.Companion_Default___.TransactGetItemsOutputTransform((_this).Config(), input) + output = _out0 + return output + } +} +func (_this *DynamoDbEncryptionTransformsClient) ExecuteStatementInputTransform(input m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.ExecuteStatementInputTransformInput) m_Wrappers.Result { + { + var output m_Wrappers.Result = m_Wrappers.Result{} + _ = output + var _out0 m_Wrappers.Result + _ = _out0 + _out0 = m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsOperations.Companion_Default___.ExecuteStatementInputTransform((_this).Config(), input) + output = _out0 + return output + } +} +func (_this *DynamoDbEncryptionTransformsClient) ExecuteStatementOutputTransform(input m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.ExecuteStatementOutputTransformInput) m_Wrappers.Result { + { + var output m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_ExecuteStatementOutputTransformOutput_.Default()) + _ = output + var _out0 m_Wrappers.Result + _ = _out0 + _out0 = m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsOperations.Companion_Default___.ExecuteStatementOutputTransform((_this).Config(), input) + output = _out0 + return output + } +} +func (_this *DynamoDbEncryptionTransformsClient) BatchExecuteStatementInputTransform(input m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.BatchExecuteStatementInputTransformInput) m_Wrappers.Result { + { + var output m_Wrappers.Result = m_Wrappers.Result{} + _ = output + var _out0 m_Wrappers.Result + _ = _out0 + _out0 = m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsOperations.Companion_Default___.BatchExecuteStatementInputTransform((_this).Config(), input) + output = _out0 + return output + } +} +func (_this *DynamoDbEncryptionTransformsClient) BatchExecuteStatementOutputTransform(input m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.BatchExecuteStatementOutputTransformInput) m_Wrappers.Result { + { + var output m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_BatchExecuteStatementOutputTransformOutput_.Default()) + _ = output + var _out0 m_Wrappers.Result + _ = _out0 + _out0 = m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsOperations.Companion_Default___.BatchExecuteStatementOutputTransform((_this).Config(), input) + output = _out0 + return output + } +} +func (_this *DynamoDbEncryptionTransformsClient) ExecuteTransactionInputTransform(input m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.ExecuteTransactionInputTransformInput) m_Wrappers.Result { + { + var output m_Wrappers.Result = m_Wrappers.Result{} + _ = output + var _out0 m_Wrappers.Result + _ = _out0 + _out0 = m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsOperations.Companion_Default___.ExecuteTransactionInputTransform((_this).Config(), input) + output = _out0 + return output + } +} +func (_this *DynamoDbEncryptionTransformsClient) ExecuteTransactionOutputTransform(input m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.ExecuteTransactionOutputTransformInput) m_Wrappers.Result { + { + var output m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_ExecuteTransactionOutputTransformOutput_.Default()) + _ = output + var _out0 m_Wrappers.Result + _ = _out0 + _out0 = m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsOperations.Companion_Default___.ExecuteTransactionOutputTransform((_this).Config(), input) + output = _out0 + return output + } +} +func (_this *DynamoDbEncryptionTransformsClient) ResolveAttributes(input m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.ResolveAttributesInput) m_Wrappers.Result { + { + var output m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_ResolveAttributesOutput_.Default()) + _ = output + var _out0 m_Wrappers.Result + _ = _out0 + _out0 = m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsOperations.Companion_Default___.ResolveAttributes((_this).Config(), input) + output = _out0 + return output + } +} +func (_this *DynamoDbEncryptionTransformsClient) Config() m_DdbMiddlewareConfig.Config { + { + return _this._config + } +} + +// End of class DynamoDbEncryptionTransformsClient diff --git a/releases/go/dynamodb-esdk/DynamoDbEncryptionUtil/DynamoDbEncryptionUtil.go b/releases/go/dynamodb-esdk/DynamoDbEncryptionUtil/DynamoDbEncryptionUtil.go new file mode 100644 index 000000000..d2fd7ff9a --- /dev/null +++ b/releases/go/dynamodb-esdk/DynamoDbEncryptionUtil/DynamoDbEncryptionUtil.go @@ -0,0 +1,692 @@ +// Package DynamoDbEncryptionUtil +// Dafny module DynamoDbEncryptionUtil compiled into Go + +package DynamoDbEncryptionUtil + +import ( + os "os" + + m_ComAmazonawsDynamodbTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/dynamodb/ComAmazonawsDynamodbTypes" + m_Com_Amazonaws_Dynamodb "github.com/aws/aws-cryptographic-material-providers-library/releases/go/dynamodb/Com_Amazonaws_Dynamodb" + m_ComAmazonawsKmsTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/kms/ComAmazonawsKmsTypes" + m_Com_Amazonaws_Kms "github.com/aws/aws-cryptographic-material-providers-library/releases/go/kms/Com_Amazonaws_Kms" + m_AlgorithmSuites "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AlgorithmSuites" + m_AwsArnParsing "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsArnParsing" + m_AwsCryptographyKeyStoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyKeyStoreOperations" + m_AwsCryptographyKeyStoreTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyKeyStoreTypes" + m_AwsCryptographyMaterialProvidersOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyMaterialProvidersOperations" + m_AwsCryptographyMaterialProvidersTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyMaterialProvidersTypes" + m_AwsKmsDiscoveryKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsDiscoveryKeyring" + m_AwsKmsEcdhKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsEcdhKeyring" + m_AwsKmsHierarchicalKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsHierarchicalKeyring" + m_AwsKmsKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsKeyring" + m_AwsKmsMrkAreUnique "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkAreUnique" + m_AwsKmsMrkDiscoveryKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkDiscoveryKeyring" + m_AwsKmsMrkKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkKeyring" + m_AwsKmsMrkMatchForDecrypt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkMatchForDecrypt" + m_AwsKmsRsaKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsRsaKeyring" + m_AwsKmsUtils "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsUtils" + m_CMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CMM" + m_CacheConstants "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CacheConstants" + m_CanonicalEncryptionContext "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CanonicalEncryptionContext" + m_Commitment "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Commitment" + m_Constants "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Constants" + m_CreateKeyStoreTable "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CreateKeyStoreTable" + m_CreateKeys "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CreateKeys" + m_DDBKeystoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DDBKeystoreOperations" + m_DefaultCMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DefaultCMM" + m_DefaultClientSupplier "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DefaultClientSupplier" + m_Defaults "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Defaults" + m_DiscoveryMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DiscoveryMultiKeyring" + m_EcdhEdkWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/EcdhEdkWrapping" + m_EdkWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/EdkWrapping" + m_ErrorMessages "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/ErrorMessages" + m_GetKeys "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/GetKeys" + m_IntermediateKeyWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/IntermediateKeyWrapping" + m_KMSKeystoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KMSKeystoreOperations" + m_KeyStore "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KeyStore" + m_KeyStoreErrorMessages "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KeyStoreErrorMessages" + m_Keyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Keyring" + m_KmsArn "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KmsArn" + m_LocalCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/LocalCMC" + m_MaterialProviders "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MaterialProviders" + m_MaterialWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MaterialWrapping" + m_Materials "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Materials" + m_MrkAwareDiscoveryMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MrkAwareDiscoveryMultiKeyring" + m_MrkAwareStrictMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MrkAwareStrictMultiKeyring" + m_MultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MultiKeyring" + m_RawAESKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawAESKeyring" + m_RawECDHKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawECDHKeyring" + m_RawRSAKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawRSAKeyring" + m_RequiredEncryptionContextCMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RequiredEncryptionContextCMM" + m_StormTracker "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StormTracker" + m_StormTrackingCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StormTrackingCMC" + m_StrictMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StrictMultiKeyring" + m_Structure "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Structure" + m_SynchronizedLocalCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/SynchronizedLocalCMC" + m_Utils "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Utils" + m_AtomicPrimitives "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AtomicPrimitives" + m_AwsCryptographyPrimitivesOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AwsCryptographyPrimitivesOperations" + m_AwsCryptographyPrimitivesTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AwsCryptographyPrimitivesTypes" + m_Digest "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/Digest" + m_HKDF "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/HKDF" + m_KdfCtr "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/KdfCtr" + m_Random "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/Random" + m_WrappedHKDF "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/WrappedHKDF" + m_WrappedHMAC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/WrappedHMAC" + m_Actions "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Actions" + m_Base64 "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Base64" + m_Base64Lemmas "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Base64Lemmas" + m_BoundedInts "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/BoundedInts" + m_DivInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivInternals" + m_DivInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivInternalsNonlinear" + m_DivMod "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivMod" + m_FileIO "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/FileIO" + m_FloatCompare "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/FloatCompare" + m_Functions "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Functions" + m_GeneralInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/GeneralInternals" + m_GetOpt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/GetOpt" + m_HexStrings "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/HexStrings" + m_Logarithm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Logarithm" + m__Math "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Math_" + m_ModInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/ModInternals" + m_ModInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/ModInternalsNonlinear" + m_Mul "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Mul" + m_MulInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/MulInternals" + m_MulInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/MulInternalsNonlinear" + m_Power "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Power" + m_Relations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Relations" + m_Seq "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Seq" + m_Seq_MergeSort "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Seq_MergeSort" + m_Sorting "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Sorting" + m_StandardLibrary "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary" + m_StandardLibraryInterop "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibraryInterop" + m_StandardLibrary_MemoryMath "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_MemoryMath" + m_StandardLibrary_Sequence "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_Sequence" + m_StandardLibrary_String "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_String" + m_StandardLibrary_UInt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_UInt" + m_Streams "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Streams" + m_UnicodeStrings "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/UnicodeStrings" + m__Unicode "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Unicode_" + m_Utf16EncodingForm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Utf16EncodingForm" + m_Utf8EncodingForm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Utf8EncodingForm" + m_Wrappers "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Wrappers" + m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes" + m_AwsCryptographyDbEncryptionSdkDynamoDbTypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbTypes" + m_AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations" + m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes" + m_Canonize "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/Canonize" + m__Maps "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/Maps_" + m_OptimizedMergeSort "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/OptimizedMergeSort" + m_Sets "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/Sets" + m_SortCanon "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/SortCanon" + m_StructuredEncryption "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryption" + m_StructuredEncryptionCrypt "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionCrypt" + m_StructuredEncryptionFooter "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionFooter" + m_StructuredEncryptionHeader "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionHeader" + m_StructuredEncryptionPaths "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionPaths" + m_StructuredEncryptionUtil "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionUtil" + m__System "github.com/dafny-lang/DafnyRuntimeGo/v4/System_" + _dafny "github.com/dafny-lang/DafnyRuntimeGo/v4/dafny" +) + +var _ = os.Args +var _ _dafny.Dummy__ +var _ m__System.Dummy__ +var _ m_Wrappers.Dummy__ +var _ m_BoundedInts.Dummy__ +var _ m_StandardLibrary_UInt.Dummy__ +var _ m_StandardLibrary_MemoryMath.Dummy__ +var _ m_StandardLibrary_Sequence.Dummy__ +var _ m_StandardLibrary_String.Dummy__ +var _ m_StandardLibrary.Dummy__ +var _ m_AwsCryptographyPrimitivesTypes.Dummy__ +var _ m_Random.Dummy__ +var _ m_Digest.Dummy__ +var _ m_WrappedHMAC.Dummy__ +var _ m_HKDF.Dummy__ +var _ m_WrappedHKDF.Dummy__ +var _ m_KdfCtr.Dummy__ +var _ m_AwsCryptographyPrimitivesOperations.Dummy__ +var _ m_AtomicPrimitives.Dummy__ +var _ m_ComAmazonawsDynamodbTypes.Dummy__ +var _ m_ComAmazonawsKmsTypes.Dummy__ +var _ m_AwsCryptographyKeyStoreTypes.Dummy__ +var _ m_AwsCryptographyMaterialProvidersTypes.Dummy__ +var _ m_Base64.Dummy__ +var _ m_AlgorithmSuites.Dummy__ +var _ m_Materials.Dummy__ +var _ m_Keyring.Dummy__ +var _ m_Relations.Dummy__ +var _ m_Seq_MergeSort.Dummy__ +var _ m__Math.Dummy__ +var _ m_Seq.Dummy__ +var _ m_Actions.Dummy__ +var _ m_CanonicalEncryptionContext.Dummy__ +var _ m_MaterialWrapping.Dummy__ +var _ m_IntermediateKeyWrapping.Dummy__ +var _ m_EdkWrapping.Dummy__ +var _ m_ErrorMessages.Dummy__ +var _ m_RawAESKeyring.Dummy__ +var _ m_AwsArnParsing.Dummy__ +var _ m_Constants.Dummy__ +var _ m_EcdhEdkWrapping.Dummy__ +var _ m_RawECDHKeyring.Dummy__ +var _ m_RawRSAKeyring.Dummy__ +var _ m_AwsKmsMrkMatchForDecrypt.Dummy__ +var _ m_AwsKmsUtils.Dummy__ +var _ m_AwsKmsKeyring.Dummy__ +var _ m_AwsKmsDiscoveryKeyring.Dummy__ +var _ m_AwsKmsEcdhKeyring.Dummy__ +var _ m_FileIO.Dummy__ +var _ m_LocalCMC.Dummy__ +var _ m_SynchronizedLocalCMC.Dummy__ +var _ m_StormTracker.Dummy__ +var _ m_StormTrackingCMC.Dummy__ +var _ m_CacheConstants.Dummy__ +var _ m_AwsKmsHierarchicalKeyring.Dummy__ +var _ m_AwsKmsMrkDiscoveryKeyring.Dummy__ +var _ m_AwsKmsMrkKeyring.Dummy__ +var _ m_AwsKmsRsaKeyring.Dummy__ +var _ m_MultiKeyring.Dummy__ +var _ m_AwsKmsMrkAreUnique.Dummy__ +var _ m_StrictMultiKeyring.Dummy__ +var _ m_Com_Amazonaws_Kms.Dummy__ +var _ m_Com_Amazonaws_Dynamodb.Dummy__ +var _ m_DiscoveryMultiKeyring.Dummy__ +var _ m_MrkAwareDiscoveryMultiKeyring.Dummy__ +var _ m_MrkAwareStrictMultiKeyring.Dummy__ +var _ m_CMM.Dummy__ +var _ m_Defaults.Dummy__ +var _ m_Commitment.Dummy__ +var _ m_DefaultCMM.Dummy__ +var _ m_DefaultClientSupplier.Dummy__ +var _ m_Utils.Dummy__ +var _ m_RequiredEncryptionContextCMM.Dummy__ +var _ m_AwsCryptographyMaterialProvidersOperations.Dummy__ +var _ m_MaterialProviders.Dummy__ +var _ m_KeyStoreErrorMessages.Dummy__ +var _ m_KmsArn.Dummy__ +var _ m_Structure.Dummy__ +var _ m_KMSKeystoreOperations.Dummy__ +var _ m_DDBKeystoreOperations.Dummy__ +var _ m_CreateKeys.Dummy__ +var _ m_CreateKeyStoreTable.Dummy__ +var _ m_GetKeys.Dummy__ +var _ m_AwsCryptographyKeyStoreOperations.Dummy__ +var _ m_KeyStore.Dummy__ +var _ m__Unicode.Dummy__ +var _ m_Functions.Dummy__ +var _ m_Utf8EncodingForm.Dummy__ +var _ m_Utf16EncodingForm.Dummy__ +var _ m_UnicodeStrings.Dummy__ +var _ m_GeneralInternals.Dummy__ +var _ m_MulInternalsNonlinear.Dummy__ +var _ m_MulInternals.Dummy__ +var _ m_Mul.Dummy__ +var _ m_ModInternalsNonlinear.Dummy__ +var _ m_DivInternalsNonlinear.Dummy__ +var _ m_ModInternals.Dummy__ +var _ m_DivInternals.Dummy__ +var _ m_DivMod.Dummy__ +var _ m_Power.Dummy__ +var _ m_Logarithm.Dummy__ +var _ m_StandardLibraryInterop.Dummy__ +var _ m_Streams.Dummy__ +var _ m_Sorting.Dummy__ +var _ m_HexStrings.Dummy__ +var _ m_GetOpt.Dummy__ +var _ m_FloatCompare.Dummy__ +var _ m_Base64Lemmas.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Dummy__ +var _ m_StructuredEncryptionUtil.Dummy__ +var _ m_Sets.Dummy__ +var _ m_StructuredEncryptionPaths.Dummy__ +var _ m_StructuredEncryptionHeader.Dummy__ +var _ m_StructuredEncryptionFooter.Dummy__ +var _ m_OptimizedMergeSort.Dummy__ +var _ m_SortCanon.Dummy__ +var _ m_Canonize.Dummy__ +var _ m_StructuredEncryptionCrypt.Dummy__ +var _ m__Maps.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations.Dummy__ +var _ m_StructuredEncryption.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Dummy__ + +type Dummy__ struct{} + +// Definition of class Default__ +type Default__ struct { + dummy byte +} + +func New_Default___() *Default__ { + _this := Default__{} + + return &_this +} + +type CompanionStruct_Default___ struct { +} + +var Companion_Default___ = CompanionStruct_Default___{} + +func (_this *Default__) Equals(other *Default__) bool { + return _this == other +} + +func (_this *Default__) EqualsGeneric(x interface{}) bool { + other, ok := x.(*Default__) + return ok && _this.Equals(other) +} + +func (*Default__) String() string { + return "DynamoDbEncryptionUtil.Default__" +} +func (_this *Default__) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = &Default__{} + +func (_static *CompanionStruct_Default___) MaybeFromOptionKeyId(x m_Wrappers.Option) MaybeKeyId { + if (x).Is_Some() { + return Companion_MaybeKeyId_.Create_KeyId_((x).Dtor_value().(_dafny.Sequence)) + } else { + return Companion_MaybeKeyId_.Create_DontUseKeyId_() + } +} +func (_static *CompanionStruct_Default___) E(s _dafny.Sequence) m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Error { + return m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Companion_Error_.Create_DynamoDbEncryptionException_(s) +} +func (_static *CompanionStruct_Default___) CharLess(x _dafny.Char, y _dafny.Char) bool { + return (x) < (y) +} +func (_static *CompanionStruct_Default___) ByteLess(x uint8, y uint8) bool { + return (x) < (y) +} +func (_static *CompanionStruct_Default___) AttrTypeToStr(attr m_ComAmazonawsDynamodbTypes.AttributeValue) _dafny.Sequence { + var _source0 m_ComAmazonawsDynamodbTypes.AttributeValue = attr + _ = _source0 + { + if _source0.Is_S() { + var _0_s _dafny.Sequence = _source0.Get_().(m_ComAmazonawsDynamodbTypes.AttributeValue_S).S + _ = _0_s + return _dafny.SeqOfString("S") + } + } + { + if _source0.Is_N() { + var _1_n _dafny.Sequence = _source0.Get_().(m_ComAmazonawsDynamodbTypes.AttributeValue_N).N + _ = _1_n + return _dafny.SeqOfString("N") + } + } + { + if _source0.Is_B() { + var _2_n _dafny.Sequence = _source0.Get_().(m_ComAmazonawsDynamodbTypes.AttributeValue_B).B + _ = _2_n + return _dafny.SeqOfString("B") + } + } + { + if _source0.Is_SS() { + var _3_n _dafny.Sequence = _source0.Get_().(m_ComAmazonawsDynamodbTypes.AttributeValue_SS).SS + _ = _3_n + return _dafny.SeqOfString("SS") + } + } + { + if _source0.Is_NS() { + var _4_n _dafny.Sequence = _source0.Get_().(m_ComAmazonawsDynamodbTypes.AttributeValue_NS).NS + _ = _4_n + return _dafny.SeqOfString("NS") + } + } + { + if _source0.Is_BS() { + var _5_n _dafny.Sequence = _source0.Get_().(m_ComAmazonawsDynamodbTypes.AttributeValue_BS).BS + _ = _5_n + return _dafny.SeqOfString("BS") + } + } + { + if _source0.Is_M() { + var _6_n _dafny.Map = _source0.Get_().(m_ComAmazonawsDynamodbTypes.AttributeValue_M).M + _ = _6_n + return _dafny.SeqOfString("M") + } + } + { + if _source0.Is_L() { + var _7_n _dafny.Sequence = _source0.Get_().(m_ComAmazonawsDynamodbTypes.AttributeValue_L).L + _ = _7_n + return _dafny.SeqOfString("L") + } + } + { + if _source0.Is_NULL() { + var _8_n bool = _source0.Get_().(m_ComAmazonawsDynamodbTypes.AttributeValue_NULL).NULL + _ = _8_n + return _dafny.SeqOfString("NULL") + } + } + { + var _9_n bool = _source0.Get_().(m_ComAmazonawsDynamodbTypes.AttributeValue_BOOL).BOOL + _ = _9_n + return _dafny.SeqOfString("BOOL") + } +} +func (_static *CompanionStruct_Default___) PrintFromFunction(x interface{}) _dafny.Tuple { + var _hresult _dafny.Tuple = _dafny.TupleOf() + _ = _hresult + _dafny.Print(x) + _dafny.Print((_dafny.SeqOfString("\n")).SetString()) + _hresult = _dafny.TupleOf() + return _hresult + return _hresult +} +func (_static *CompanionStruct_Default___) ReservedPrefix() _dafny.Sequence { + return _dafny.SeqOfString("aws_dbe_") +} +func (_static *CompanionStruct_Default___) BeaconPrefix() _dafny.Sequence { + return _dafny.SeqOfString("aws_dbe_b_") +} +func (_static *CompanionStruct_Default___) VersionPrefix() _dafny.Sequence { + return _dafny.SeqOfString("aws_dbe_v_") +} +func (_static *CompanionStruct_Default___) MAX__STRUCTURE__DEPTH() uint64 { + return uint64(32) +} +func (_static *CompanionStruct_Default___) MAX__STRUCTURE__DEPTH__STR() _dafny.Sequence { + return _dafny.SeqOfString("32") +} + +// End of class Default__ + +// Definition of datatype MaybeKeyMap +type MaybeKeyMap struct { + Data_MaybeKeyMap_ +} + +func (_this MaybeKeyMap) Get_() Data_MaybeKeyMap_ { + return _this.Data_MaybeKeyMap_ +} + +type Data_MaybeKeyMap_ interface { + isMaybeKeyMap() +} + +type CompanionStruct_MaybeKeyMap_ struct { +} + +var Companion_MaybeKeyMap_ = CompanionStruct_MaybeKeyMap_{} + +type MaybeKeyMap_DontUseKeys struct { +} + +func (MaybeKeyMap_DontUseKeys) isMaybeKeyMap() {} + +func (CompanionStruct_MaybeKeyMap_) Create_DontUseKeys_() MaybeKeyMap { + return MaybeKeyMap{MaybeKeyMap_DontUseKeys{}} +} + +func (_this MaybeKeyMap) Is_DontUseKeys() bool { + _, ok := _this.Get_().(MaybeKeyMap_DontUseKeys) + return ok +} + +type MaybeKeyMap_ShouldHaveKeys struct { +} + +func (MaybeKeyMap_ShouldHaveKeys) isMaybeKeyMap() {} + +func (CompanionStruct_MaybeKeyMap_) Create_ShouldHaveKeys_() MaybeKeyMap { + return MaybeKeyMap{MaybeKeyMap_ShouldHaveKeys{}} +} + +func (_this MaybeKeyMap) Is_ShouldHaveKeys() bool { + _, ok := _this.Get_().(MaybeKeyMap_ShouldHaveKeys) + return ok +} + +type MaybeKeyMap_Keys struct { + Value _dafny.Map +} + +func (MaybeKeyMap_Keys) isMaybeKeyMap() {} + +func (CompanionStruct_MaybeKeyMap_) Create_Keys_(Value _dafny.Map) MaybeKeyMap { + return MaybeKeyMap{MaybeKeyMap_Keys{Value}} +} + +func (_this MaybeKeyMap) Is_Keys() bool { + _, ok := _this.Get_().(MaybeKeyMap_Keys) + return ok +} + +func (CompanionStruct_MaybeKeyMap_) Default() MaybeKeyMap { + return Companion_MaybeKeyMap_.Create_DontUseKeys_() +} + +func (_this MaybeKeyMap) Dtor_value() _dafny.Map { + return _this.Get_().(MaybeKeyMap_Keys).Value +} + +func (_this MaybeKeyMap) String() string { + switch data := _this.Get_().(type) { + case nil: + return "null" + case MaybeKeyMap_DontUseKeys: + { + return "DynamoDbEncryptionUtil.MaybeKeyMap.DontUseKeys" + } + case MaybeKeyMap_ShouldHaveKeys: + { + return "DynamoDbEncryptionUtil.MaybeKeyMap.ShouldHaveKeys" + } + case MaybeKeyMap_Keys: + { + return "DynamoDbEncryptionUtil.MaybeKeyMap.Keys" + "(" + _dafny.String(data.Value) + ")" + } + default: + { + return "" + } + } +} + +func (_this MaybeKeyMap) Equals(other MaybeKeyMap) bool { + switch data1 := _this.Get_().(type) { + case MaybeKeyMap_DontUseKeys: + { + _, ok := other.Get_().(MaybeKeyMap_DontUseKeys) + return ok + } + case MaybeKeyMap_ShouldHaveKeys: + { + _, ok := other.Get_().(MaybeKeyMap_ShouldHaveKeys) + return ok + } + case MaybeKeyMap_Keys: + { + data2, ok := other.Get_().(MaybeKeyMap_Keys) + return ok && data1.Value.Equals(data2.Value) + } + default: + { + return false // unexpected + } + } +} + +func (_this MaybeKeyMap) EqualsGeneric(other interface{}) bool { + typed, ok := other.(MaybeKeyMap) + return ok && _this.Equals(typed) +} + +func Type_MaybeKeyMap_() _dafny.TypeDescriptor { + return type_MaybeKeyMap_{} +} + +type type_MaybeKeyMap_ struct { +} + +func (_this type_MaybeKeyMap_) Default() interface{} { + return Companion_MaybeKeyMap_.Default() +} + +func (_this type_MaybeKeyMap_) String() string { + return "DynamoDbEncryptionUtil.MaybeKeyMap" +} +func (_this MaybeKeyMap) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = MaybeKeyMap{} + +// End of datatype MaybeKeyMap + +// Definition of datatype MaybeKeyId +type MaybeKeyId struct { + Data_MaybeKeyId_ +} + +func (_this MaybeKeyId) Get_() Data_MaybeKeyId_ { + return _this.Data_MaybeKeyId_ +} + +type Data_MaybeKeyId_ interface { + isMaybeKeyId() +} + +type CompanionStruct_MaybeKeyId_ struct { +} + +var Companion_MaybeKeyId_ = CompanionStruct_MaybeKeyId_{} + +type MaybeKeyId_DontUseKeyId struct { +} + +func (MaybeKeyId_DontUseKeyId) isMaybeKeyId() {} + +func (CompanionStruct_MaybeKeyId_) Create_DontUseKeyId_() MaybeKeyId { + return MaybeKeyId{MaybeKeyId_DontUseKeyId{}} +} + +func (_this MaybeKeyId) Is_DontUseKeyId() bool { + _, ok := _this.Get_().(MaybeKeyId_DontUseKeyId) + return ok +} + +type MaybeKeyId_ShouldHaveKeyId struct { +} + +func (MaybeKeyId_ShouldHaveKeyId) isMaybeKeyId() {} + +func (CompanionStruct_MaybeKeyId_) Create_ShouldHaveKeyId_() MaybeKeyId { + return MaybeKeyId{MaybeKeyId_ShouldHaveKeyId{}} +} + +func (_this MaybeKeyId) Is_ShouldHaveKeyId() bool { + _, ok := _this.Get_().(MaybeKeyId_ShouldHaveKeyId) + return ok +} + +type MaybeKeyId_KeyId struct { + Value _dafny.Sequence +} + +func (MaybeKeyId_KeyId) isMaybeKeyId() {} + +func (CompanionStruct_MaybeKeyId_) Create_KeyId_(Value _dafny.Sequence) MaybeKeyId { + return MaybeKeyId{MaybeKeyId_KeyId{Value}} +} + +func (_this MaybeKeyId) Is_KeyId() bool { + _, ok := _this.Get_().(MaybeKeyId_KeyId) + return ok +} + +func (CompanionStruct_MaybeKeyId_) Default() MaybeKeyId { + return Companion_MaybeKeyId_.Create_DontUseKeyId_() +} + +func (_this MaybeKeyId) Dtor_value() _dafny.Sequence { + return _this.Get_().(MaybeKeyId_KeyId).Value +} + +func (_this MaybeKeyId) String() string { + switch data := _this.Get_().(type) { + case nil: + return "null" + case MaybeKeyId_DontUseKeyId: + { + return "DynamoDbEncryptionUtil.MaybeKeyId.DontUseKeyId" + } + case MaybeKeyId_ShouldHaveKeyId: + { + return "DynamoDbEncryptionUtil.MaybeKeyId.ShouldHaveKeyId" + } + case MaybeKeyId_KeyId: + { + return "DynamoDbEncryptionUtil.MaybeKeyId.KeyId" + "(" + _dafny.String(data.Value) + ")" + } + default: + { + return "" + } + } +} + +func (_this MaybeKeyId) Equals(other MaybeKeyId) bool { + switch data1 := _this.Get_().(type) { + case MaybeKeyId_DontUseKeyId: + { + _, ok := other.Get_().(MaybeKeyId_DontUseKeyId) + return ok + } + case MaybeKeyId_ShouldHaveKeyId: + { + _, ok := other.Get_().(MaybeKeyId_ShouldHaveKeyId) + return ok + } + case MaybeKeyId_KeyId: + { + data2, ok := other.Get_().(MaybeKeyId_KeyId) + return ok && data1.Value.Equals(data2.Value) + } + default: + { + return false // unexpected + } + } +} + +func (_this MaybeKeyId) EqualsGeneric(other interface{}) bool { + typed, ok := other.(MaybeKeyId) + return ok && _this.Equals(typed) +} + +func Type_MaybeKeyId_() _dafny.TypeDescriptor { + return type_MaybeKeyId_{} +} + +type type_MaybeKeyId_ struct { +} + +func (_this type_MaybeKeyId_) Default() interface{} { + return Companion_MaybeKeyId_.Default() +} + +func (_this type_MaybeKeyId_) String() string { + return "DynamoDbEncryptionUtil.MaybeKeyId" +} +func (_this MaybeKeyId) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = MaybeKeyId{} + +// End of datatype MaybeKeyId diff --git a/releases/go/dynamodb-esdk/DynamoDbItemEncryptor/DynamoDbItemEncryptor.go b/releases/go/dynamodb-esdk/DynamoDbItemEncryptor/DynamoDbItemEncryptor.go new file mode 100644 index 000000000..7ccff3282 --- /dev/null +++ b/releases/go/dynamodb-esdk/DynamoDbItemEncryptor/DynamoDbItemEncryptor.go @@ -0,0 +1,595 @@ +// Package DynamoDbItemEncryptor +// Dafny module DynamoDbItemEncryptor compiled into Go + +package DynamoDbItemEncryptor + +import ( + os "os" + + m_ComAmazonawsDynamodbTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/dynamodb/ComAmazonawsDynamodbTypes" + m_Com_Amazonaws_Dynamodb "github.com/aws/aws-cryptographic-material-providers-library/releases/go/dynamodb/Com_Amazonaws_Dynamodb" + m_ComAmazonawsKmsTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/kms/ComAmazonawsKmsTypes" + m_Com_Amazonaws_Kms "github.com/aws/aws-cryptographic-material-providers-library/releases/go/kms/Com_Amazonaws_Kms" + m_AlgorithmSuites "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AlgorithmSuites" + m_AwsArnParsing "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsArnParsing" + m_AwsCryptographyKeyStoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyKeyStoreOperations" + m_AwsCryptographyKeyStoreTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyKeyStoreTypes" + m_AwsCryptographyMaterialProvidersOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyMaterialProvidersOperations" + m_AwsCryptographyMaterialProvidersTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyMaterialProvidersTypes" + m_AwsKmsDiscoveryKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsDiscoveryKeyring" + m_AwsKmsEcdhKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsEcdhKeyring" + m_AwsKmsHierarchicalKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsHierarchicalKeyring" + m_AwsKmsKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsKeyring" + m_AwsKmsMrkAreUnique "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkAreUnique" + m_AwsKmsMrkDiscoveryKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkDiscoveryKeyring" + m_AwsKmsMrkKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkKeyring" + m_AwsKmsMrkMatchForDecrypt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkMatchForDecrypt" + m_AwsKmsRsaKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsRsaKeyring" + m_AwsKmsUtils "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsUtils" + m_CMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CMM" + m_CacheConstants "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CacheConstants" + m_CanonicalEncryptionContext "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CanonicalEncryptionContext" + m_Commitment "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Commitment" + m_Constants "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Constants" + m_CreateKeyStoreTable "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CreateKeyStoreTable" + m_CreateKeys "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CreateKeys" + m_DDBKeystoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DDBKeystoreOperations" + m_DefaultCMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DefaultCMM" + m_DefaultClientSupplier "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DefaultClientSupplier" + m_Defaults "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Defaults" + m_DiscoveryMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DiscoveryMultiKeyring" + m_EcdhEdkWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/EcdhEdkWrapping" + m_EdkWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/EdkWrapping" + m_ErrorMessages "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/ErrorMessages" + m_GetKeys "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/GetKeys" + m_IntermediateKeyWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/IntermediateKeyWrapping" + m_KMSKeystoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KMSKeystoreOperations" + m_KeyStore "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KeyStore" + m_KeyStoreErrorMessages "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KeyStoreErrorMessages" + m_Keyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Keyring" + m_KmsArn "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KmsArn" + m_LocalCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/LocalCMC" + m_MaterialProviders "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MaterialProviders" + m_MaterialWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MaterialWrapping" + m_Materials "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Materials" + m_MrkAwareDiscoveryMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MrkAwareDiscoveryMultiKeyring" + m_MrkAwareStrictMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MrkAwareStrictMultiKeyring" + m_MultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MultiKeyring" + m_RawAESKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawAESKeyring" + m_RawECDHKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawECDHKeyring" + m_RawRSAKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawRSAKeyring" + m_RequiredEncryptionContextCMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RequiredEncryptionContextCMM" + m_StormTracker "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StormTracker" + m_StormTrackingCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StormTrackingCMC" + m_StrictMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StrictMultiKeyring" + m_Structure "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Structure" + m_SynchronizedLocalCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/SynchronizedLocalCMC" + m_Utils "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Utils" + m_AtomicPrimitives "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AtomicPrimitives" + m_AwsCryptographyPrimitivesOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AwsCryptographyPrimitivesOperations" + m_AwsCryptographyPrimitivesTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AwsCryptographyPrimitivesTypes" + m_Digest "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/Digest" + m_HKDF "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/HKDF" + m_KdfCtr "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/KdfCtr" + m_Random "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/Random" + m_WrappedHKDF "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/WrappedHKDF" + m_WrappedHMAC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/WrappedHMAC" + m_Actions "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Actions" + m_Base64 "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Base64" + m_Base64Lemmas "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Base64Lemmas" + m_BoundedInts "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/BoundedInts" + m_DivInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivInternals" + m_DivInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivInternalsNonlinear" + m_DivMod "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivMod" + m_FileIO "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/FileIO" + m_FloatCompare "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/FloatCompare" + m_Functions "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Functions" + m_GeneralInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/GeneralInternals" + m_GetOpt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/GetOpt" + m_HexStrings "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/HexStrings" + m_Logarithm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Logarithm" + m__Math "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Math_" + m_ModInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/ModInternals" + m_ModInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/ModInternalsNonlinear" + m_Mul "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Mul" + m_MulInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/MulInternals" + m_MulInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/MulInternalsNonlinear" + m_Power "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Power" + m_Relations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Relations" + m_Seq "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Seq" + m_Seq_MergeSort "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Seq_MergeSort" + m_SortedSets "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/SortedSets" + m_Sorting "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Sorting" + m_StandardLibrary "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary" + m_StandardLibraryInterop "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibraryInterop" + m_StandardLibrary_MemoryMath "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_MemoryMath" + m_StandardLibrary_Sequence "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_Sequence" + m_StandardLibrary_String "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_String" + m_StandardLibrary_UInt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_UInt" + m_Streams "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Streams" + m_UnicodeStrings "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/UnicodeStrings" + m__Unicode "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Unicode_" + m_Utf16EncodingForm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Utf16EncodingForm" + m_Utf8EncodingForm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Utf8EncodingForm" + m_Wrappers "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Wrappers" + m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations" + m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes" + m_AwsCryptographyDbEncryptionSdkDynamoDbTypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbTypes" + m_AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations" + m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes" + m_Canonize "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/Canonize" + m_DynamoDbEncryptionUtil "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbEncryptionUtil" + m_DynamoDbItemEncryptorUtil "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbItemEncryptorUtil" + m_DynamoDbNormalizeNumber "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbNormalizeNumber" + m_DynamoToStruct "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoToStruct" + m_InternalLegacyOverride "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/InternalLegacyOverride" + m__Maps "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/Maps_" + m_OptimizedMergeSort "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/OptimizedMergeSort" + m_Sets "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/Sets" + m_SortCanon "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/SortCanon" + m_StructuredEncryption "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryption" + m_StructuredEncryptionCrypt "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionCrypt" + m_StructuredEncryptionFooter "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionFooter" + m_StructuredEncryptionHeader "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionHeader" + m_StructuredEncryptionPaths "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionPaths" + m_StructuredEncryptionUtil "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionUtil" + m__System "github.com/dafny-lang/DafnyRuntimeGo/v4/System_" + _dafny "github.com/dafny-lang/DafnyRuntimeGo/v4/dafny" +) + +var _ = os.Args +var _ _dafny.Dummy__ +var _ m__System.Dummy__ +var _ m_Wrappers.Dummy__ +var _ m_BoundedInts.Dummy__ +var _ m_StandardLibrary_UInt.Dummy__ +var _ m_StandardLibrary_MemoryMath.Dummy__ +var _ m_StandardLibrary_Sequence.Dummy__ +var _ m_StandardLibrary_String.Dummy__ +var _ m_StandardLibrary.Dummy__ +var _ m_AwsCryptographyPrimitivesTypes.Dummy__ +var _ m_Random.Dummy__ +var _ m_Digest.Dummy__ +var _ m_WrappedHMAC.Dummy__ +var _ m_HKDF.Dummy__ +var _ m_WrappedHKDF.Dummy__ +var _ m_KdfCtr.Dummy__ +var _ m_AwsCryptographyPrimitivesOperations.Dummy__ +var _ m_AtomicPrimitives.Dummy__ +var _ m_ComAmazonawsDynamodbTypes.Dummy__ +var _ m_ComAmazonawsKmsTypes.Dummy__ +var _ m_AwsCryptographyKeyStoreTypes.Dummy__ +var _ m_AwsCryptographyMaterialProvidersTypes.Dummy__ +var _ m_Base64.Dummy__ +var _ m_AlgorithmSuites.Dummy__ +var _ m_Materials.Dummy__ +var _ m_Keyring.Dummy__ +var _ m_Relations.Dummy__ +var _ m_Seq_MergeSort.Dummy__ +var _ m__Math.Dummy__ +var _ m_Seq.Dummy__ +var _ m_Actions.Dummy__ +var _ m_CanonicalEncryptionContext.Dummy__ +var _ m_MaterialWrapping.Dummy__ +var _ m_IntermediateKeyWrapping.Dummy__ +var _ m_EdkWrapping.Dummy__ +var _ m_ErrorMessages.Dummy__ +var _ m_RawAESKeyring.Dummy__ +var _ m_AwsArnParsing.Dummy__ +var _ m_Constants.Dummy__ +var _ m_EcdhEdkWrapping.Dummy__ +var _ m_RawECDHKeyring.Dummy__ +var _ m_RawRSAKeyring.Dummy__ +var _ m_AwsKmsMrkMatchForDecrypt.Dummy__ +var _ m_AwsKmsUtils.Dummy__ +var _ m_AwsKmsKeyring.Dummy__ +var _ m_AwsKmsDiscoveryKeyring.Dummy__ +var _ m_AwsKmsEcdhKeyring.Dummy__ +var _ m_FileIO.Dummy__ +var _ m_LocalCMC.Dummy__ +var _ m_SynchronizedLocalCMC.Dummy__ +var _ m_StormTracker.Dummy__ +var _ m_StormTrackingCMC.Dummy__ +var _ m_CacheConstants.Dummy__ +var _ m_AwsKmsHierarchicalKeyring.Dummy__ +var _ m_AwsKmsMrkDiscoveryKeyring.Dummy__ +var _ m_AwsKmsMrkKeyring.Dummy__ +var _ m_AwsKmsRsaKeyring.Dummy__ +var _ m_MultiKeyring.Dummy__ +var _ m_AwsKmsMrkAreUnique.Dummy__ +var _ m_StrictMultiKeyring.Dummy__ +var _ m_Com_Amazonaws_Kms.Dummy__ +var _ m_Com_Amazonaws_Dynamodb.Dummy__ +var _ m_DiscoveryMultiKeyring.Dummy__ +var _ m_MrkAwareDiscoveryMultiKeyring.Dummy__ +var _ m_MrkAwareStrictMultiKeyring.Dummy__ +var _ m_CMM.Dummy__ +var _ m_Defaults.Dummy__ +var _ m_Commitment.Dummy__ +var _ m_DefaultCMM.Dummy__ +var _ m_DefaultClientSupplier.Dummy__ +var _ m_Utils.Dummy__ +var _ m_RequiredEncryptionContextCMM.Dummy__ +var _ m_AwsCryptographyMaterialProvidersOperations.Dummy__ +var _ m_MaterialProviders.Dummy__ +var _ m_KeyStoreErrorMessages.Dummy__ +var _ m_KmsArn.Dummy__ +var _ m_Structure.Dummy__ +var _ m_KMSKeystoreOperations.Dummy__ +var _ m_DDBKeystoreOperations.Dummy__ +var _ m_CreateKeys.Dummy__ +var _ m_CreateKeyStoreTable.Dummy__ +var _ m_GetKeys.Dummy__ +var _ m_AwsCryptographyKeyStoreOperations.Dummy__ +var _ m_KeyStore.Dummy__ +var _ m__Unicode.Dummy__ +var _ m_Functions.Dummy__ +var _ m_Utf8EncodingForm.Dummy__ +var _ m_Utf16EncodingForm.Dummy__ +var _ m_UnicodeStrings.Dummy__ +var _ m_GeneralInternals.Dummy__ +var _ m_MulInternalsNonlinear.Dummy__ +var _ m_MulInternals.Dummy__ +var _ m_Mul.Dummy__ +var _ m_ModInternalsNonlinear.Dummy__ +var _ m_DivInternalsNonlinear.Dummy__ +var _ m_ModInternals.Dummy__ +var _ m_DivInternals.Dummy__ +var _ m_DivMod.Dummy__ +var _ m_Power.Dummy__ +var _ m_Logarithm.Dummy__ +var _ m_StandardLibraryInterop.Dummy__ +var _ m_Streams.Dummy__ +var _ m_Sorting.Dummy__ +var _ m_HexStrings.Dummy__ +var _ m_GetOpt.Dummy__ +var _ m_FloatCompare.Dummy__ +var _ m_Base64Lemmas.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Dummy__ +var _ m_StructuredEncryptionUtil.Dummy__ +var _ m_Sets.Dummy__ +var _ m_StructuredEncryptionPaths.Dummy__ +var _ m_StructuredEncryptionHeader.Dummy__ +var _ m_StructuredEncryptionFooter.Dummy__ +var _ m_OptimizedMergeSort.Dummy__ +var _ m_SortCanon.Dummy__ +var _ m_Canonize.Dummy__ +var _ m_StructuredEncryptionCrypt.Dummy__ +var _ m__Maps.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations.Dummy__ +var _ m_StructuredEncryption.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Dummy__ +var _ m_DynamoDbEncryptionUtil.Dummy__ +var _ m_DynamoDbNormalizeNumber.Dummy__ +var _ m_DynamoToStruct.Dummy__ +var _ m_DynamoDbItemEncryptorUtil.Dummy__ +var _ m_InternalLegacyOverride.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations.Dummy__ + +type Dummy__ struct{} + +// Definition of class Default__ +type Default__ struct { + dummy byte +} + +func New_Default___() *Default__ { + _this := Default__{} + + return &_this +} + +type CompanionStruct_Default___ struct { +} + +var Companion_Default___ = CompanionStruct_Default___{} + +func (_this *Default__) Equals(other *Default__) bool { + return _this == other +} + +func (_this *Default__) EqualsGeneric(x interface{}) bool { + other, ok := x.(*Default__) + return ok && _this.Equals(other) +} + +func (*Default__) String() string { + return "DynamoDbItemEncryptor.Default__" +} +func (_this *Default__) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = &Default__{} + +func (_static *CompanionStruct_Default___) DefaultDynamoDbItemEncryptorConfig() m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.DynamoDbItemEncryptorConfig { + return m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Companion_DynamoDbItemEncryptorConfig_.Create_DynamoDbItemEncryptorConfig_(_dafny.SeqOfString("foo"), _dafny.SeqOfString("bar"), m_Wrappers.Companion_Option_.Create_None_(), _dafny.NewMapBuilder().ToMap(), 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_(), m_Wrappers.Companion_Option_.Create_None_(), m_Wrappers.Companion_Option_.Create_None_()) +} +func (_static *CompanionStruct_Default___) UnreservedPrefix(attr _dafny.Sequence) bool { + return (!(_dafny.Companion_Sequence_.IsPrefixOf(m_DynamoDbItemEncryptorUtil.Companion_Default___.ReservedPrefix(), attr))) && (!(_dafny.Companion_Sequence_.IsPrefixOf(m_StructuredEncryptionUtil.Companion_Default___.ReservedCryptoContextPrefixString(), attr))) +} +func (_static *CompanionStruct_Default___) DynamoDbItemEncryptor(config m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.DynamoDbItemEncryptorConfig) m_Wrappers.Result { + var res m_Wrappers.Result = m_Wrappers.Result{} + _ = res + var _0_valueOrError0 m_Wrappers.Outcome = m_Wrappers.Companion_Outcome_.Default() + _ = _0_valueOrError0 + _0_valueOrError0 = m_Wrappers.Companion_Default___.Need((((config).Dtor_keyring()).Is_None()) || (((config).Dtor_cmm()).Is_None()), m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Companion_Error_.Create_DynamoDbItemEncryptorException_(_dafny.SeqOfString("Cannot provide both a keyring and a CMM"))) + if (_0_valueOrError0).IsFailure() { + res = (_0_valueOrError0).PropagateFailure() + return res + } + var _1_valueOrError1 m_Wrappers.Outcome = m_Wrappers.Companion_Outcome_.Default() + _ = _1_valueOrError1 + _1_valueOrError1 = m_Wrappers.Companion_Default___.Need((((config).Dtor_keyring()).Is_Some()) || (((config).Dtor_cmm()).Is_Some()), m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Companion_Error_.Create_DynamoDbItemEncryptorException_(_dafny.SeqOfString("Must provide either a keyring or a CMM"))) + if (_1_valueOrError1).IsFailure() { + res = (_1_valueOrError1).PropagateFailure() + return res + } + var _2_version uint8 + _ = _2_version + _2_version = m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations.Companion_Default___.VersionFromActions((config).Dtor_attributeActionsOnEncrypt()) + var _3_keyAction m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.CryptoAction + _ = _3_keyAction + _3_keyAction = m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations.Companion_Default___.KeyActionFromVersion(_2_version) + var _4_keyActionStr _dafny.Sequence + _ = _4_keyActionStr + _4_keyActionStr = m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations.Companion_Default___.KeyActionStringFromVersion(_2_version) + var _5_valueOrError2 m_Wrappers.Outcome = m_Wrappers.Companion_Outcome_.Default() + _ = _5_valueOrError2 + _5_valueOrError2 = m_Wrappers.Companion_Default___.Need((((config).Dtor_attributeActionsOnEncrypt()).Contains((config).Dtor_partitionKeyName())) && ((((config).Dtor_attributeActionsOnEncrypt()).Get((config).Dtor_partitionKeyName()).(m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.CryptoAction)).Equals(_3_keyAction)), m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Companion_Error_.Create_DynamoDbItemEncryptorException_(_dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("Partition key attribute action MUST be "), _4_keyActionStr))) + if (_5_valueOrError2).IsFailure() { + res = (_5_valueOrError2).PropagateFailure() + return res + } + var _6_valueOrError3 m_Wrappers.Outcome = m_Wrappers.Companion_Outcome_.Default() + _ = _6_valueOrError3 + _6_valueOrError3 = m_Wrappers.Companion_Default___.Need(!(((config).Dtor_sortKeyName()).Is_Some()) || ((((config).Dtor_attributeActionsOnEncrypt()).Contains(((config).Dtor_sortKeyName()).Dtor_value().(_dafny.Sequence))) && ((((config).Dtor_attributeActionsOnEncrypt()).Get(((config).Dtor_sortKeyName()).Dtor_value().(_dafny.Sequence)).(m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.CryptoAction)).Equals(_3_keyAction))), m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Companion_Error_.Create_DynamoDbItemEncryptorException_(_dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("Sort key attribute action MUST be "), _4_keyActionStr))) + if (_6_valueOrError3).IsFailure() { + res = (_6_valueOrError3).PropagateFailure() + return res + } + var _7_attributeNames _dafny.Sequence + _ = _7_attributeNames + _7_attributeNames = m_SortedSets.SetToOrderedSequence2(((config).Dtor_attributeActionsOnEncrypt()).Keys(), func(coer70 func(_dafny.Char, _dafny.Char) bool) func(interface{}, interface{}) bool { + return func(arg97 interface{}, arg98 interface{}) bool { + return coer70(arg97.(_dafny.Char), arg98.(_dafny.Char)) + } + }(m_DynamoDbItemEncryptorUtil.Companion_Default___.CharLess)) + var _hi0 _dafny.Int = _dafny.IntOfUint32((_7_attributeNames).Cardinality()) + _ = _hi0 + for _8_i := _dafny.Zero; _8_i.Cmp(_hi0) < 0; _8_i = _8_i.Plus(_dafny.One) { + var _9_attributeName _dafny.Sequence + _ = _9_attributeName + _9_attributeName = (_7_attributeNames).Select((_8_i).Uint32()).(_dafny.Sequence) + var _10_action m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.CryptoAction + _ = _10_action + _10_action = ((config).Dtor_attributeActionsOnEncrypt()).Get(_9_attributeName).(m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.CryptoAction) + if !(m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations.Companion_Default___.ForwardCompatibleAttributeAction(_9_attributeName, _10_action, (config).Dtor_allowedUnsignedAttributes(), (config).Dtor_allowedUnsignedAttributePrefix())) { + res = m_Wrappers.Companion_Result_.Create_Failure_(m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Companion_Error_.Create_DynamoDbItemEncryptorException_(m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations.Companion_Default___.ExplainNotForwardCompatible(_9_attributeName, _10_action, (config).Dtor_allowedUnsignedAttributes(), (config).Dtor_allowedUnsignedAttributePrefix()))) + return res + } + if !(Companion_Default___.UnreservedPrefix(_9_attributeName)) { + res = m_Wrappers.Companion_Result_.Create_Failure_(m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Companion_Error_.Create_DynamoDbItemEncryptorException_(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("Attribute: "), _9_attributeName), _dafny.SeqOfString(" is reserved, and may not be configured.")))) + return res + } + } + var _11_structuredEncryptionRes m_Wrappers.Result + _ = _11_structuredEncryptionRes + var _out0 m_Wrappers.Result + _ = _out0 + _out0 = m_StructuredEncryption.Companion_Default___.StructuredEncryption(m_StructuredEncryption.Companion_Default___.DefaultStructuredEncryptionConfig()) + _11_structuredEncryptionRes = _out0 + var _12_valueOrError4 m_Wrappers.Result = m_Wrappers.Result{} + _ = _12_valueOrError4 + _12_valueOrError4 = (_11_structuredEncryptionRes).MapFailure(func(coer71 func(m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Error) m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Error) func(interface{}) interface{} { + return func(arg99 interface{}) interface{} { + return coer71(arg99.(m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Error)) + } + }(func(_13_e m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Error) m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Error { + return m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Companion_Error_.Create_AwsCryptographyDbEncryptionSdkDynamoDb_(m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Companion_Error_.Create_AwsCryptographyDbEncryptionSdkStructuredEncryption_(_13_e)) + })) + if (_12_valueOrError4).IsFailure() { + res = (_12_valueOrError4).PropagateFailure() + return res + } + var _14_structuredEncryptionX m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.IStructuredEncryptionClient + _ = _14_structuredEncryptionX + _14_structuredEncryptionX = (_12_valueOrError4).Extract().(*m_StructuredEncryption.StructuredEncryptionClient) + var _15_structuredEncryption *m_StructuredEncryption.StructuredEncryptionClient + _ = _15_structuredEncryption + _15_structuredEncryption = _14_structuredEncryptionX.(*m_StructuredEncryption.StructuredEncryptionClient) + var _16_cmm m_AwsCryptographyMaterialProvidersTypes.ICryptographicMaterialsManager = (m_AwsCryptographyMaterialProvidersTypes.ICryptographicMaterialsManager)(nil) + _ = _16_cmm + if ((config).Dtor_cmm()).Is_Some() { + _16_cmm = m_AwsCryptographyMaterialProvidersTypes.Companion_ICryptographicMaterialsManager_.CastTo_(((config).Dtor_cmm()).Dtor_value()) + } else { + var _17_keyring m_AwsCryptographyMaterialProvidersTypes.IKeyring + _ = _17_keyring + _17_keyring = m_AwsCryptographyMaterialProvidersTypes.Companion_IKeyring_.CastTo_(((config).Dtor_keyring()).Dtor_value()) + var _18_valueOrError5 m_Wrappers.Result = m_Wrappers.Result{} + _ = _18_valueOrError5 + var _out1 m_Wrappers.Result + _ = _out1 + _out1 = m_MaterialProviders.Companion_Default___.MaterialProviders(m_MaterialProviders.Companion_Default___.DefaultMaterialProvidersConfig()) + _18_valueOrError5 = _out1 + if !(!((_18_valueOrError5).IsFailure())) { + panic("dafny/DynamoDbItemEncryptor/src/Index.dfy(158,21): " + (_18_valueOrError5).String()) + } + var _19_matProv *m_MaterialProviders.MaterialProvidersClient + _ = _19_matProv + _19_matProv = (_18_valueOrError5).Extract().(*m_MaterialProviders.MaterialProvidersClient) + var _20_maybeCmm m_Wrappers.Result + _ = _20_maybeCmm + var _out2 m_Wrappers.Result + _ = _out2 + _out2 = (_19_matProv).CreateDefaultCryptographicMaterialsManager(m_AwsCryptographyMaterialProvidersTypes.Companion_CreateDefaultCryptographicMaterialsManagerInput_.Create_CreateDefaultCryptographicMaterialsManagerInput_(_17_keyring)) + _20_maybeCmm = _out2 + var _21_valueOrError6 m_Wrappers.Result = m_Wrappers.Result{} + _ = _21_valueOrError6 + _21_valueOrError6 = (_20_maybeCmm).MapFailure(func(coer72 func(m_AwsCryptographyMaterialProvidersTypes.Error) m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Error) func(interface{}) interface{} { + return func(arg100 interface{}) interface{} { + return coer72(arg100.(m_AwsCryptographyMaterialProvidersTypes.Error)) + } + }(func(_22_e m_AwsCryptographyMaterialProvidersTypes.Error) m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Error { + return m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Companion_Error_.Create_AwsCryptographyMaterialProviders_(_22_e) + })) + if (_21_valueOrError6).IsFailure() { + res = (_21_valueOrError6).PropagateFailure() + return res + } + _16_cmm = m_AwsCryptographyMaterialProvidersTypes.Companion_ICryptographicMaterialsManager_.CastTo_((_21_valueOrError6).Extract()) + } + var _23_maybeCmpClient m_Wrappers.Result + _ = _23_maybeCmpClient + var _out3 m_Wrappers.Result + _ = _out3 + _out3 = m_MaterialProviders.Companion_Default___.MaterialProviders(m_MaterialProviders.Companion_Default___.DefaultMaterialProvidersConfig()) + _23_maybeCmpClient = _out3 + var _24_valueOrError7 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(m_Wrappers.Companion_Option_.Default()) + _ = _24_valueOrError7 + var _out4 m_Wrappers.Result + _ = _out4 + _out4 = m_InternalLegacyOverride.Companion_InternalLegacyOverride_.Build(config) + _24_valueOrError7 = _out4 + if (_24_valueOrError7).IsFailure() { + res = (_24_valueOrError7).PropagateFailure() + return res + } + var _25_internalLegacyOverride m_Wrappers.Option + _ = _25_internalLegacyOverride + _25_internalLegacyOverride = (_24_valueOrError7).Extract().(m_Wrappers.Option) + var _26_valueOrError8 m_Wrappers.Result = m_Wrappers.Result{} + _ = _26_valueOrError8 + _26_valueOrError8 = (_23_maybeCmpClient).MapFailure(func(coer73 func(m_AwsCryptographyMaterialProvidersTypes.Error) m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Error) func(interface{}) interface{} { + return func(arg101 interface{}) interface{} { + return coer73(arg101.(m_AwsCryptographyMaterialProvidersTypes.Error)) + } + }(func(_27_e m_AwsCryptographyMaterialProvidersTypes.Error) m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Error { + return m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Companion_Error_.Create_AwsCryptographyMaterialProviders_(_27_e) + })) + if (_26_valueOrError8).IsFailure() { + res = (_26_valueOrError8).PropagateFailure() + return res + } + var _28_cmpClient *m_MaterialProviders.MaterialProvidersClient + _ = _28_cmpClient + _28_cmpClient = (_26_valueOrError8).Extract().(*m_MaterialProviders.MaterialProvidersClient) + if !(((_25_internalLegacyOverride).Is_None()) || (((config).Dtor_plaintextOverride()).Is_None())) { + res = m_Wrappers.Companion_Result_.Create_Failure_(m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Companion_Error_.Create_DynamoDbItemEncryptorException_(_dafny.SeqOfString("Cannot configure both a plaintext policy and a legacy config."))) + return res + } + var _29_plaintextOverride m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.PlaintextOverride + _ = _29_plaintextOverride + if ((config).Dtor_plaintextOverride()).Is_Some() { + _29_plaintextOverride = ((config).Dtor_plaintextOverride()).Dtor_value().(m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.PlaintextOverride) + } else { + _29_plaintextOverride = m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Companion_PlaintextOverride_.Create_FORBID__PLAINTEXT__WRITE__FORBID__PLAINTEXT__READ_() + } + var _30_internalConfig m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations.Config + _ = _30_internalConfig + _30_internalConfig = m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations.Companion_Config_.Create_Config_(_2_version, _28_cmpClient, (config).Dtor_logicalTableName(), (config).Dtor_partitionKeyName(), (config).Dtor_sortKeyName(), _16_cmm, (config).Dtor_attributeActionsOnEncrypt(), (config).Dtor_allowedUnsignedAttributes(), (config).Dtor_allowedUnsignedAttributePrefix(), (config).Dtor_algorithmSuiteId(), _15_structuredEncryption, _29_plaintextOverride, _25_internalLegacyOverride) + var _31_client *DynamoDbItemEncryptorClient + _ = _31_client + var _nw0 *DynamoDbItemEncryptorClient = New_DynamoDbItemEncryptorClient_() + _ = _nw0 + _nw0.Ctor__(_30_internalConfig) + _31_client = _nw0 + res = m_Wrappers.Companion_Result_.Create_Success_(_31_client) + return res + return res +} +func (_static *CompanionStruct_Default___) CreateSuccessOfClient(client m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.IDynamoDbItemEncryptorClient) m_Wrappers.Result { + return m_Wrappers.Companion_Result_.Create_Success_(client) +} +func (_static *CompanionStruct_Default___) CreateFailureOfError(error_ m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Error) m_Wrappers.Result { + return m_Wrappers.Companion_Result_.Create_Failure_(error_) +} + +// End of class Default__ + +// Definition of class DynamoDbItemEncryptorClient +type DynamoDbItemEncryptorClient struct { + _config m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations.Config +} + +func New_DynamoDbItemEncryptorClient_() *DynamoDbItemEncryptorClient { + _this := DynamoDbItemEncryptorClient{} + + _this._config = m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations.Config{} + return &_this +} + +type CompanionStruct_DynamoDbItemEncryptorClient_ struct { +} + +var Companion_DynamoDbItemEncryptorClient_ = CompanionStruct_DynamoDbItemEncryptorClient_{} + +func (_this *DynamoDbItemEncryptorClient) Equals(other *DynamoDbItemEncryptorClient) bool { + return _this == other +} + +func (_this *DynamoDbItemEncryptorClient) EqualsGeneric(x interface{}) bool { + other, ok := x.(*DynamoDbItemEncryptorClient) + return ok && _this.Equals(other) +} + +func (*DynamoDbItemEncryptorClient) String() string { + return "DynamoDbItemEncryptor.DynamoDbItemEncryptorClient" +} + +func Type_DynamoDbItemEncryptorClient_() _dafny.TypeDescriptor { + return type_DynamoDbItemEncryptorClient_{} +} + +type type_DynamoDbItemEncryptorClient_ struct { +} + +func (_this type_DynamoDbItemEncryptorClient_) Default() interface{} { + return (*DynamoDbItemEncryptorClient)(nil) +} + +func (_this type_DynamoDbItemEncryptorClient_) String() string { + return "DynamoDbItemEncryptor.DynamoDbItemEncryptorClient" +} +func (_this *DynamoDbItemEncryptorClient) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Companion_IDynamoDbItemEncryptorClient_.TraitID_} +} + +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.IDynamoDbItemEncryptorClient = &DynamoDbItemEncryptorClient{} +var _ _dafny.TraitOffspring = &DynamoDbItemEncryptorClient{} + +func (_this *DynamoDbItemEncryptorClient) Ctor__(config m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations.Config) { + { + (_this)._config = config + } +} +func (_this *DynamoDbItemEncryptorClient) EncryptItem(input m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.EncryptItemInput) m_Wrappers.Result { + { + var output m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Companion_EncryptItemOutput_.Default()) + _ = output + var _out0 m_Wrappers.Result + _ = _out0 + _out0 = m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations.Companion_Default___.EncryptItem((_this).Config(), input) + output = _out0 + return output + } +} +func (_this *DynamoDbItemEncryptorClient) DecryptItem(input m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.DecryptItemInput) m_Wrappers.Result { + { + var output m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Companion_DecryptItemOutput_.Default()) + _ = output + var _out0 m_Wrappers.Result + _ = _out0 + _out0 = m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations.Companion_Default___.DecryptItem((_this).Config(), input) + output = _out0 + return output + } +} +func (_this *DynamoDbItemEncryptorClient) Config() m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations.Config { + { + return _this._config + } +} + +// End of class DynamoDbItemEncryptorClient diff --git a/releases/go/dynamodb-esdk/DynamoDbItemEncryptorUtil/DynamoDbItemEncryptorUtil.go b/releases/go/dynamodb-esdk/DynamoDbItemEncryptorUtil/DynamoDbItemEncryptorUtil.go new file mode 100644 index 000000000..3a1101dff --- /dev/null +++ b/releases/go/dynamodb-esdk/DynamoDbItemEncryptorUtil/DynamoDbItemEncryptorUtil.go @@ -0,0 +1,667 @@ +// Package DynamoDbItemEncryptorUtil +// Dafny module DynamoDbItemEncryptorUtil compiled into Go + +package DynamoDbItemEncryptorUtil + +import ( + os "os" + + m_ComAmazonawsDynamodbTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/dynamodb/ComAmazonawsDynamodbTypes" + m_Com_Amazonaws_Dynamodb "github.com/aws/aws-cryptographic-material-providers-library/releases/go/dynamodb/Com_Amazonaws_Dynamodb" + m_ComAmazonawsKmsTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/kms/ComAmazonawsKmsTypes" + m_Com_Amazonaws_Kms "github.com/aws/aws-cryptographic-material-providers-library/releases/go/kms/Com_Amazonaws_Kms" + m_AlgorithmSuites "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AlgorithmSuites" + m_AwsArnParsing "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsArnParsing" + m_AwsCryptographyKeyStoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyKeyStoreOperations" + m_AwsCryptographyKeyStoreTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyKeyStoreTypes" + m_AwsCryptographyMaterialProvidersOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyMaterialProvidersOperations" + m_AwsCryptographyMaterialProvidersTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyMaterialProvidersTypes" + m_AwsKmsDiscoveryKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsDiscoveryKeyring" + m_AwsKmsEcdhKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsEcdhKeyring" + m_AwsKmsHierarchicalKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsHierarchicalKeyring" + m_AwsKmsKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsKeyring" + m_AwsKmsMrkAreUnique "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkAreUnique" + m_AwsKmsMrkDiscoveryKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkDiscoveryKeyring" + m_AwsKmsMrkKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkKeyring" + m_AwsKmsMrkMatchForDecrypt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkMatchForDecrypt" + m_AwsKmsRsaKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsRsaKeyring" + m_AwsKmsUtils "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsUtils" + m_CMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CMM" + m_CacheConstants "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CacheConstants" + m_CanonicalEncryptionContext "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CanonicalEncryptionContext" + m_Commitment "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Commitment" + m_Constants "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Constants" + m_CreateKeyStoreTable "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CreateKeyStoreTable" + m_CreateKeys "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CreateKeys" + m_DDBKeystoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DDBKeystoreOperations" + m_DefaultCMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DefaultCMM" + m_DefaultClientSupplier "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DefaultClientSupplier" + m_Defaults "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Defaults" + m_DiscoveryMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DiscoveryMultiKeyring" + m_EcdhEdkWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/EcdhEdkWrapping" + m_EdkWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/EdkWrapping" + m_ErrorMessages "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/ErrorMessages" + m_GetKeys "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/GetKeys" + m_IntermediateKeyWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/IntermediateKeyWrapping" + m_KMSKeystoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KMSKeystoreOperations" + m_KeyStore "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KeyStore" + m_KeyStoreErrorMessages "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KeyStoreErrorMessages" + m_Keyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Keyring" + m_KmsArn "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KmsArn" + m_LocalCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/LocalCMC" + m_MaterialProviders "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MaterialProviders" + m_MaterialWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MaterialWrapping" + m_Materials "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Materials" + m_MrkAwareDiscoveryMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MrkAwareDiscoveryMultiKeyring" + m_MrkAwareStrictMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MrkAwareStrictMultiKeyring" + m_MultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MultiKeyring" + m_RawAESKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawAESKeyring" + m_RawECDHKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawECDHKeyring" + m_RawRSAKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawRSAKeyring" + m_RequiredEncryptionContextCMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RequiredEncryptionContextCMM" + m_StormTracker "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StormTracker" + m_StormTrackingCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StormTrackingCMC" + m_StrictMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StrictMultiKeyring" + m_Structure "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Structure" + m_SynchronizedLocalCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/SynchronizedLocalCMC" + m_Utils "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Utils" + m_AtomicPrimitives "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AtomicPrimitives" + m_AwsCryptographyPrimitivesOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AwsCryptographyPrimitivesOperations" + m_AwsCryptographyPrimitivesTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AwsCryptographyPrimitivesTypes" + m_Digest "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/Digest" + m_HKDF "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/HKDF" + m_KdfCtr "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/KdfCtr" + m_Random "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/Random" + m_WrappedHKDF "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/WrappedHKDF" + m_WrappedHMAC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/WrappedHMAC" + m_Actions "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Actions" + m_Base64 "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Base64" + m_Base64Lemmas "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Base64Lemmas" + m_BoundedInts "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/BoundedInts" + m_DivInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivInternals" + m_DivInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivInternalsNonlinear" + m_DivMod "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivMod" + m_FileIO "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/FileIO" + m_FloatCompare "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/FloatCompare" + m_Functions "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Functions" + m_GeneralInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/GeneralInternals" + m_GetOpt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/GetOpt" + m_HexStrings "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/HexStrings" + m_Logarithm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Logarithm" + m__Math "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Math_" + m_ModInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/ModInternals" + m_ModInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/ModInternalsNonlinear" + m_Mul "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Mul" + m_MulInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/MulInternals" + m_MulInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/MulInternalsNonlinear" + m_Power "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Power" + m_Relations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Relations" + m_Seq "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Seq" + m_Seq_MergeSort "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Seq_MergeSort" + m_SortedSets "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/SortedSets" + m_Sorting "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Sorting" + m_StandardLibrary "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary" + m_StandardLibraryInterop "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibraryInterop" + m_StandardLibrary_MemoryMath "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_MemoryMath" + m_StandardLibrary_Sequence "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_Sequence" + m_StandardLibrary_String "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_String" + m_StandardLibrary_UInt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_UInt" + m_Streams "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Streams" + m_UTF8 "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/UTF8" + m_UnicodeStrings "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/UnicodeStrings" + m__Unicode "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Unicode_" + m_Utf16EncodingForm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Utf16EncodingForm" + m_Utf8EncodingForm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Utf8EncodingForm" + m_Wrappers "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Wrappers" + m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes" + m_AwsCryptographyDbEncryptionSdkDynamoDbTypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbTypes" + m_AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations" + m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes" + m_Canonize "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/Canonize" + m_DynamoDbEncryptionUtil "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbEncryptionUtil" + m_DynamoDbNormalizeNumber "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbNormalizeNumber" + m_DynamoToStruct "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoToStruct" + m__Maps "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/Maps_" + m_OptimizedMergeSort "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/OptimizedMergeSort" + m_Sets "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/Sets" + m_SortCanon "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/SortCanon" + m_StructuredEncryption "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryption" + m_StructuredEncryptionCrypt "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionCrypt" + m_StructuredEncryptionFooter "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionFooter" + m_StructuredEncryptionHeader "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionHeader" + m_StructuredEncryptionPaths "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionPaths" + m_StructuredEncryptionUtil "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionUtil" + m__System "github.com/dafny-lang/DafnyRuntimeGo/v4/System_" + _dafny "github.com/dafny-lang/DafnyRuntimeGo/v4/dafny" +) + +var _ = os.Args +var _ _dafny.Dummy__ +var _ m__System.Dummy__ +var _ m_Wrappers.Dummy__ +var _ m_BoundedInts.Dummy__ +var _ m_StandardLibrary_UInt.Dummy__ +var _ m_StandardLibrary_MemoryMath.Dummy__ +var _ m_StandardLibrary_Sequence.Dummy__ +var _ m_StandardLibrary_String.Dummy__ +var _ m_StandardLibrary.Dummy__ +var _ m_AwsCryptographyPrimitivesTypes.Dummy__ +var _ m_Random.Dummy__ +var _ m_Digest.Dummy__ +var _ m_WrappedHMAC.Dummy__ +var _ m_HKDF.Dummy__ +var _ m_WrappedHKDF.Dummy__ +var _ m_KdfCtr.Dummy__ +var _ m_AwsCryptographyPrimitivesOperations.Dummy__ +var _ m_AtomicPrimitives.Dummy__ +var _ m_ComAmazonawsDynamodbTypes.Dummy__ +var _ m_ComAmazonawsKmsTypes.Dummy__ +var _ m_AwsCryptographyKeyStoreTypes.Dummy__ +var _ m_AwsCryptographyMaterialProvidersTypes.Dummy__ +var _ m_Base64.Dummy__ +var _ m_AlgorithmSuites.Dummy__ +var _ m_Materials.Dummy__ +var _ m_Keyring.Dummy__ +var _ m_Relations.Dummy__ +var _ m_Seq_MergeSort.Dummy__ +var _ m__Math.Dummy__ +var _ m_Seq.Dummy__ +var _ m_Actions.Dummy__ +var _ m_CanonicalEncryptionContext.Dummy__ +var _ m_MaterialWrapping.Dummy__ +var _ m_IntermediateKeyWrapping.Dummy__ +var _ m_EdkWrapping.Dummy__ +var _ m_ErrorMessages.Dummy__ +var _ m_RawAESKeyring.Dummy__ +var _ m_AwsArnParsing.Dummy__ +var _ m_Constants.Dummy__ +var _ m_EcdhEdkWrapping.Dummy__ +var _ m_RawECDHKeyring.Dummy__ +var _ m_RawRSAKeyring.Dummy__ +var _ m_AwsKmsMrkMatchForDecrypt.Dummy__ +var _ m_AwsKmsUtils.Dummy__ +var _ m_AwsKmsKeyring.Dummy__ +var _ m_AwsKmsDiscoveryKeyring.Dummy__ +var _ m_AwsKmsEcdhKeyring.Dummy__ +var _ m_FileIO.Dummy__ +var _ m_LocalCMC.Dummy__ +var _ m_SynchronizedLocalCMC.Dummy__ +var _ m_StormTracker.Dummy__ +var _ m_StormTrackingCMC.Dummy__ +var _ m_CacheConstants.Dummy__ +var _ m_AwsKmsHierarchicalKeyring.Dummy__ +var _ m_AwsKmsMrkDiscoveryKeyring.Dummy__ +var _ m_AwsKmsMrkKeyring.Dummy__ +var _ m_AwsKmsRsaKeyring.Dummy__ +var _ m_MultiKeyring.Dummy__ +var _ m_AwsKmsMrkAreUnique.Dummy__ +var _ m_StrictMultiKeyring.Dummy__ +var _ m_Com_Amazonaws_Kms.Dummy__ +var _ m_Com_Amazonaws_Dynamodb.Dummy__ +var _ m_DiscoveryMultiKeyring.Dummy__ +var _ m_MrkAwareDiscoveryMultiKeyring.Dummy__ +var _ m_MrkAwareStrictMultiKeyring.Dummy__ +var _ m_CMM.Dummy__ +var _ m_Defaults.Dummy__ +var _ m_Commitment.Dummy__ +var _ m_DefaultCMM.Dummy__ +var _ m_DefaultClientSupplier.Dummy__ +var _ m_Utils.Dummy__ +var _ m_RequiredEncryptionContextCMM.Dummy__ +var _ m_AwsCryptographyMaterialProvidersOperations.Dummy__ +var _ m_MaterialProviders.Dummy__ +var _ m_KeyStoreErrorMessages.Dummy__ +var _ m_KmsArn.Dummy__ +var _ m_Structure.Dummy__ +var _ m_KMSKeystoreOperations.Dummy__ +var _ m_DDBKeystoreOperations.Dummy__ +var _ m_CreateKeys.Dummy__ +var _ m_CreateKeyStoreTable.Dummy__ +var _ m_GetKeys.Dummy__ +var _ m_AwsCryptographyKeyStoreOperations.Dummy__ +var _ m_KeyStore.Dummy__ +var _ m__Unicode.Dummy__ +var _ m_Functions.Dummy__ +var _ m_Utf8EncodingForm.Dummy__ +var _ m_Utf16EncodingForm.Dummy__ +var _ m_UnicodeStrings.Dummy__ +var _ m_GeneralInternals.Dummy__ +var _ m_MulInternalsNonlinear.Dummy__ +var _ m_MulInternals.Dummy__ +var _ m_Mul.Dummy__ +var _ m_ModInternalsNonlinear.Dummy__ +var _ m_DivInternalsNonlinear.Dummy__ +var _ m_ModInternals.Dummy__ +var _ m_DivInternals.Dummy__ +var _ m_DivMod.Dummy__ +var _ m_Power.Dummy__ +var _ m_Logarithm.Dummy__ +var _ m_StandardLibraryInterop.Dummy__ +var _ m_Streams.Dummy__ +var _ m_Sorting.Dummy__ +var _ m_HexStrings.Dummy__ +var _ m_GetOpt.Dummy__ +var _ m_FloatCompare.Dummy__ +var _ m_Base64Lemmas.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Dummy__ +var _ m_StructuredEncryptionUtil.Dummy__ +var _ m_Sets.Dummy__ +var _ m_StructuredEncryptionPaths.Dummy__ +var _ m_StructuredEncryptionHeader.Dummy__ +var _ m_StructuredEncryptionFooter.Dummy__ +var _ m_OptimizedMergeSort.Dummy__ +var _ m_SortCanon.Dummy__ +var _ m_Canonize.Dummy__ +var _ m_StructuredEncryptionCrypt.Dummy__ +var _ m__Maps.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations.Dummy__ +var _ m_StructuredEncryption.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Dummy__ +var _ m_DynamoDbEncryptionUtil.Dummy__ +var _ m_DynamoDbNormalizeNumber.Dummy__ +var _ m_DynamoToStruct.Dummy__ + +type Dummy__ struct{} + +// Definition of class Default__ +type Default__ struct { + dummy byte +} + +func New_Default___() *Default__ { + _this := Default__{} + + return &_this +} + +type CompanionStruct_Default___ struct { +} + +var Companion_Default___ = CompanionStruct_Default___{} + +func (_this *Default__) Equals(other *Default__) bool { + return _this == other +} + +func (_this *Default__) EqualsGeneric(x interface{}) bool { + other, ok := x.(*Default__) + return ok && _this.Equals(other) +} + +func (*Default__) String() string { + return "DynamoDbItemEncryptorUtil.Default__" +} +func (_this *Default__) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = &Default__{} + +func (_static *CompanionStruct_Default___) E(msg _dafny.Sequence) m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Error { + return m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Companion_Error_.Create_DynamoDbItemEncryptorException_(msg) +} +func (_static *CompanionStruct_Default___) ByteLess(x uint8, y uint8) bool { + return (x) < (y) +} +func (_static *CompanionStruct_Default___) CharLess(x _dafny.Char, y _dafny.Char) bool { + return (x) < (y) +} +func (_static *CompanionStruct_Default___) GetLiteralValue(x _dafny.Sequence) m_Wrappers.Result { + var _0_valueOrError0 m_Wrappers.Result = m_UTF8.Decode(x) + _ = _0_valueOrError0 + if (_0_valueOrError0).IsFailure() { + return (_0_valueOrError0).PropagateFailure() + } else { + var _1_str _dafny.Sequence = (_0_valueOrError0).Extract().(_dafny.Sequence) + _ = _1_str + if _dafny.Companion_Sequence_.Equal(_1_str, m_StructuredEncryptionUtil.Companion_Default___.TRUE__STR()) { + return m_Wrappers.Companion_Result_.Create_Success_(m_ComAmazonawsDynamodbTypes.Companion_AttributeValue_.Create_BOOL_(true)) + } else if _dafny.Companion_Sequence_.Equal(_1_str, m_StructuredEncryptionUtil.Companion_Default___.FALSE__STR()) { + return m_Wrappers.Companion_Result_.Create_Success_(m_ComAmazonawsDynamodbTypes.Companion_AttributeValue_.Create_BOOL_(false)) + } else if _dafny.Companion_Sequence_.Equal(_1_str, m_StructuredEncryptionUtil.Companion_Default___.NULL__STR()) { + return m_Wrappers.Companion_Result_.Create_Success_(m_ComAmazonawsDynamodbTypes.Companion_AttributeValue_.Create_NULL_(true)) + } else { + return m_Wrappers.Companion_Result_.Create_Failure_(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("Encryption Context literal value has unexpected value : '"), _1_str), _dafny.SeqOfString("'."))) + } + } +} +func (_static *CompanionStruct_Default___) GetSortKey(context _dafny.Map) m_Wrappers.Result { + if ((context).Keys()).Contains(Companion_Default___.SORT__NAME()) { + var _0_sortName _dafny.Sequence = _dafny.Companion_Sequence_.Concatenate(m_StructuredEncryptionUtil.Companion_Default___.EC__ATTR__PREFIX(), (context).Get(Companion_Default___.SORT__NAME()).(_dafny.Sequence)) + _ = _0_sortName + var _1_valueOrError0 m_Wrappers.Outcome = m_Wrappers.Companion_Default___.Need(m_UTF8.Companion_Default___.ValidUTF8Seq(_0_sortName), _dafny.SeqOfString("Internal Error : bad utf8 in sortName")) + _ = _1_valueOrError0 + if (_1_valueOrError0).IsFailure() { + return (_1_valueOrError0).PropagateFailure() + } else { + return m_Wrappers.Companion_Result_.Create_Success_(m_Wrappers.Companion_Option_.Create_Some_(_0_sortName)) + } + } else { + return m_Wrappers.Companion_Result_.Create_Success_(m_Wrappers.Companion_Option_.Create_None_()) + } +} +func (_static *CompanionStruct_Default___) ConvertContextForSelector(context _dafny.Map) m_Wrappers.Result { + var _0_valueOrError0 m_Wrappers.Outcome = m_Wrappers.Companion_Default___.Need(((context).Keys()).Contains(Companion_Default___.PARTITION__NAME()), _dafny.SeqOfString("Invalid encryption context: Missing partition name")) + _ = _0_valueOrError0 + if (_0_valueOrError0).IsFailure() { + return (_0_valueOrError0).PropagateFailure() + } else { + var _1_partitionName _dafny.Sequence = (context).Get(Companion_Default___.PARTITION__NAME()).(_dafny.Sequence) + _ = _1_partitionName + var _2_partitionValueKey _dafny.Sequence = _dafny.Companion_Sequence_.Concatenate(m_StructuredEncryptionUtil.Companion_Default___.EC__ATTR__PREFIX(), _1_partitionName) + _ = _2_partitionValueKey + var _3_valueOrError1 m_Wrappers.Outcome = m_Wrappers.Companion_Default___.Need(((context).Keys()).Contains(_2_partitionValueKey), _dafny.SeqOfString("Invalid encryption context: Missing partition value")) + _ = _3_valueOrError1 + if (_3_valueOrError1).IsFailure() { + return (_3_valueOrError1).PropagateFailure() + } else { + var _4_valueOrError2 m_Wrappers.Result = Companion_Default___.GetSortKey(context) + _ = _4_valueOrError2 + if (_4_valueOrError2).IsFailure() { + return (_4_valueOrError2).PropagateFailure() + } else { + var _5_sortValueKey m_Wrappers.Option = (_4_valueOrError2).Extract().(m_Wrappers.Option) + _ = _5_sortValueKey + var _6_valueOrError3 m_Wrappers.Outcome = m_Wrappers.Companion_Default___.Need(((_5_sortValueKey).Is_None()) || ((context).Contains((_5_sortValueKey).Dtor_value().(_dafny.Sequence))), _dafny.SeqOfString("Invalid encryption context: Missing sort value")) + _ = _6_valueOrError3 + if (_6_valueOrError3).IsFailure() { + return (_6_valueOrError3).PropagateFailure() + } else { + var _7_keys _dafny.Sequence = m_SortedSets.SetToOrderedSequence2((context).Keys(), func(coer52 func(uint8, uint8) bool) func(interface{}, interface{}) bool { + return func(arg75 interface{}, arg76 interface{}) bool { + return coer52(arg75.(uint8), arg76.(uint8)) + } + }(m_StructuredEncryptionUtil.Companion_Default___.ByteLess)) + _ = _7_keys + if (context).Contains(m_StructuredEncryptionUtil.Companion_Default___.LEGEND__UTF8()) { + var _8_valueOrError4 m_Wrappers.Result = m_UTF8.Decode((context).Get(m_StructuredEncryptionUtil.Companion_Default___.LEGEND__UTF8()).(_dafny.Sequence)) + _ = _8_valueOrError4 + if (_8_valueOrError4).IsFailure() { + return (_8_valueOrError4).PropagateFailure() + } else { + var _9_legend _dafny.Sequence = (_8_valueOrError4).Extract().(_dafny.Sequence) + _ = _9_legend + var _10_valueOrError5 m_Wrappers.Result = Companion_Default___.GetV2AttrMap(_7_keys, context, _9_legend, uint64(0), uint64(0), _dafny.NewMapBuilder().ToMap()) + _ = _10_valueOrError5 + if (_10_valueOrError5).IsFailure() { + return (_10_valueOrError5).PropagateFailure() + } else { + var _11_attrMap _dafny.Map = (_10_valueOrError5).Extract().(_dafny.Map) + _ = _11_attrMap + var _12_valueOrError6 m_Wrappers.Outcome = m_Wrappers.Companion_Default___.Need((context).Contains(Companion_Default___.TABLE__NAME()), _dafny.SeqOfString("Internal error, table name not in encryption context.")) + _ = _12_valueOrError6 + if (_12_valueOrError6).IsFailure() { + return (_12_valueOrError6).PropagateFailure() + } else { + var _13_valueOrError7 m_Wrappers.Result = m_UTF8.Decode((context).Get(Companion_Default___.TABLE__NAME()).(_dafny.Sequence)) + _ = _13_valueOrError7 + if (_13_valueOrError7).IsFailure() { + return (_13_valueOrError7).PropagateFailure() + } else { + var _14_tableName _dafny.Sequence = (_13_valueOrError7).Extract().(_dafny.Sequence) + _ = _14_tableName + var _15_attrMap2 _dafny.Map = (_11_attrMap).Update(Companion_Default___.SELECTOR__TABLE__NAME(), m_ComAmazonawsDynamodbTypes.Companion_AttributeValue_.Create_S_(_14_tableName)) + _ = _15_attrMap2 + var _16_valueOrError8 m_Wrappers.Outcome = m_Wrappers.Companion_Default___.Need((context).Contains(Companion_Default___.PARTITION__NAME()), _dafny.SeqOfString("Internal error, table name not in encryption context.")) + _ = _16_valueOrError8 + if (_16_valueOrError8).IsFailure() { + return (_16_valueOrError8).PropagateFailure() + } else { + var _17_valueOrError9 m_Wrappers.Result = m_UTF8.Decode((context).Get(Companion_Default___.PARTITION__NAME()).(_dafny.Sequence)) + _ = _17_valueOrError9 + if (_17_valueOrError9).IsFailure() { + return (_17_valueOrError9).PropagateFailure() + } else { + var _18_partitionName _dafny.Sequence = (_17_valueOrError9).Extract().(_dafny.Sequence) + _ = _18_partitionName + var _19_attrMap3 _dafny.Map = (_15_attrMap2).Update(Companion_Default___.SELECTOR__PARTITION__NAME(), m_ComAmazonawsDynamodbTypes.Companion_AttributeValue_.Create_S_(_18_partitionName)) + _ = _19_attrMap3 + if (context).Contains(Companion_Default___.SORT__NAME()) { + var _20_valueOrError10 m_Wrappers.Result = m_UTF8.Decode((context).Get(Companion_Default___.SORT__NAME()).(_dafny.Sequence)) + _ = _20_valueOrError10 + if (_20_valueOrError10).IsFailure() { + return (_20_valueOrError10).PropagateFailure() + } else { + var _21_sortName _dafny.Sequence = (_20_valueOrError10).Extract().(_dafny.Sequence) + _ = _21_sortName + return m_Wrappers.Companion_Result_.Create_Success_((_19_attrMap3).Update(Companion_Default___.SELECTOR__SORT__NAME(), m_ComAmazonawsDynamodbTypes.Companion_AttributeValue_.Create_S_(_21_sortName))) + } + } else { + return m_Wrappers.Companion_Result_.Create_Success_(_19_attrMap3) + } + } + } + } + } + } + } + } else if (_5_sortValueKey).Is_None() { + return Companion_Default___.AddAttributeToMap(_2_partitionValueKey, (context).Get(_2_partitionValueKey).(_dafny.Sequence), _dafny.NewMapBuilder().ToMap()) + } else { + var _22_valueOrError11 m_Wrappers.Result = Companion_Default___.AddAttributeToMap(_2_partitionValueKey, (context).Get(_2_partitionValueKey).(_dafny.Sequence), _dafny.NewMapBuilder().ToMap()) + _ = _22_valueOrError11 + if (_22_valueOrError11).IsFailure() { + return (_22_valueOrError11).PropagateFailure() + } else { + var _23_attrMap _dafny.Map = (_22_valueOrError11).Extract().(_dafny.Map) + _ = _23_attrMap + return Companion_Default___.AddAttributeToMap((_5_sortValueKey).Dtor_value().(_dafny.Sequence), (context).Get((_5_sortValueKey).Dtor_value().(_dafny.Sequence)).(_dafny.Sequence), _23_attrMap) + } + } + } + } + } + } +} +func (_static *CompanionStruct_Default___) GetAttrValue(ecValue _dafny.Sequence, legend _dafny.Char) m_Wrappers.Result { + if (legend) == (m_StructuredEncryptionUtil.Companion_Default___.LEGEND__STRING()) { + var _0_valueOrError0 m_Wrappers.Result = m_UTF8.Decode(ecValue) + _ = _0_valueOrError0 + if (_0_valueOrError0).IsFailure() { + return (_0_valueOrError0).PropagateFailure() + } else { + var _1_value _dafny.Sequence = (_0_valueOrError0).Extract().(_dafny.Sequence) + _ = _1_value + return m_Wrappers.Companion_Result_.Create_Success_(m_ComAmazonawsDynamodbTypes.Companion_AttributeValue_.Create_S_(_1_value)) + } + } else if (legend) == (m_StructuredEncryptionUtil.Companion_Default___.LEGEND__NUMBER()) { + var _2_valueOrError1 m_Wrappers.Result = m_UTF8.Decode(ecValue) + _ = _2_valueOrError1 + if (_2_valueOrError1).IsFailure() { + return (_2_valueOrError1).PropagateFailure() + } else { + var _3_value _dafny.Sequence = (_2_valueOrError1).Extract().(_dafny.Sequence) + _ = _3_value + return m_Wrappers.Companion_Result_.Create_Success_(m_ComAmazonawsDynamodbTypes.Companion_AttributeValue_.Create_N_(_3_value)) + } + } else if (legend) == (m_StructuredEncryptionUtil.Companion_Default___.LEGEND__LITERAL()) { + var _4_valueOrError2 m_Wrappers.Result = Companion_Default___.GetLiteralValue(ecValue) + _ = _4_valueOrError2 + if (_4_valueOrError2).IsFailure() { + return (_4_valueOrError2).PropagateFailure() + } else { + var _5_value m_ComAmazonawsDynamodbTypes.AttributeValue = (_4_valueOrError2).Extract().(m_ComAmazonawsDynamodbTypes.AttributeValue) + _ = _5_value + return m_Wrappers.Companion_Result_.Create_Success_(_5_value) + } + } else if (legend) == (m_StructuredEncryptionUtil.Companion_Default___.LEGEND__BINARY()) { + var _6_valueOrError3 m_Wrappers.Result = m_StructuredEncryptionUtil.Companion_Default___.DecodeTerminal(ecValue) + _ = _6_valueOrError3 + if (_6_valueOrError3).IsFailure() { + return (_6_valueOrError3).PropagateFailure() + } else { + var _7_terminal m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.StructuredDataTerminal = (_6_valueOrError3).Extract().(m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.StructuredDataTerminal) + _ = _7_terminal + var _8_valueOrError4 m_Wrappers.Result = m_DynamoToStruct.Companion_Default___.BytesToAttr((_7_terminal).Dtor_value(), (_7_terminal).Dtor_typeId(), m_Wrappers.Companion_Option_.Create_Some_(uint64(((_7_terminal).Dtor_value()).Cardinality())), uint64(1), uint64(0)) + _ = _8_valueOrError4 + if (_8_valueOrError4).IsFailure() { + return (_8_valueOrError4).PropagateFailure() + } else { + var _9_ddbAttrValue m_DynamoToStruct.AttrValueAndLength = (_8_valueOrError4).Extract().(m_DynamoToStruct.AttrValueAndLength) + _ = _9_ddbAttrValue + return m_Wrappers.Companion_Result_.Create_Success_((_9_ddbAttrValue).Dtor_val()) + } + } + } else { + return m_Wrappers.Companion_Result_.Create_Failure_(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("Encryption Context Legend has unexpected character : '"), _dafny.SeqOfChars(legend)), _dafny.SeqOfString("'."))) + } +} +func (_static *CompanionStruct_Default___) GetV2AttrMap(keys _dafny.Sequence, context _dafny.Map, legend _dafny.Sequence, keyPos uint64, legendPos uint64, attrMap _dafny.Map) m_Wrappers.Result { + goto TAIL_CALL_START +TAIL_CALL_START: + if (uint64((keys).Cardinality())) == (keyPos) { + if (uint64((legend).Cardinality())) == (legendPos) { + return m_Wrappers.Companion_Result_.Create_Success_(attrMap) + } else { + return m_Wrappers.Companion_Result_.Create_Failure_(_dafny.SeqOfString("Encryption Context Legend is too long.")) + } + } else { + var _0_key _dafny.Sequence = (keys).Select(uint32(keyPos)).(_dafny.Sequence) + _ = _0_key + if _dafny.Companion_Sequence_.IsProperPrefixOf(m_StructuredEncryptionUtil.Companion_Default___.EC__ATTR__PREFIX(), _0_key) { + var _1_valueOrError0 m_Wrappers.Outcome = m_Wrappers.Companion_Default___.Need((legendPos) < (uint64((legend).Cardinality())), _dafny.SeqOfString("Encryption Context Legend is too short.")) + _ = _1_valueOrError0 + if (_1_valueOrError0).IsFailure() { + return (_1_valueOrError0).PropagateFailure() + } else { + var _2_valueOrError1 m_Wrappers.Result = Companion_Default___.GetAttributeName(_0_key) + _ = _2_valueOrError1 + if (_2_valueOrError1).IsFailure() { + return (_2_valueOrError1).PropagateFailure() + } else { + var _3_attrName _dafny.Sequence = (_2_valueOrError1).Extract().(_dafny.Sequence) + _ = _3_attrName + var _4_valueOrError2 m_Wrappers.Result = Companion_Default___.GetAttrValue((context).Get(_0_key).(_dafny.Sequence), (legend).Select(uint32(legendPos)).(_dafny.Char)) + _ = _4_valueOrError2 + if (_4_valueOrError2).IsFailure() { + return (_4_valueOrError2).PropagateFailure() + } else { + var _5_attrValue m_ComAmazonawsDynamodbTypes.AttributeValue = (_4_valueOrError2).Extract().(m_ComAmazonawsDynamodbTypes.AttributeValue) + _ = _5_attrValue + var _in0 _dafny.Sequence = keys + _ = _in0 + var _in1 _dafny.Map = context + _ = _in1 + var _in2 _dafny.Sequence = legend + _ = _in2 + var _in3 uint64 = (keyPos) + (uint64(1)) + _ = _in3 + var _in4 uint64 = (legendPos) + (uint64(1)) + _ = _in4 + var _in5 _dafny.Map = (attrMap).Update(_3_attrName, _5_attrValue) + _ = _in5 + keys = _in0 + context = _in1 + legend = _in2 + keyPos = _in3 + legendPos = _in4 + attrMap = _in5 + goto TAIL_CALL_START + } + } + } + } else { + var _in6 _dafny.Sequence = keys + _ = _in6 + var _in7 _dafny.Map = context + _ = _in7 + var _in8 _dafny.Sequence = legend + _ = _in8 + var _in9 uint64 = (keyPos) + (uint64(1)) + _ = _in9 + var _in10 uint64 = legendPos + _ = _in10 + var _in11 _dafny.Map = attrMap + _ = _in11 + keys = _in6 + context = _in7 + legend = _in8 + keyPos = _in9 + legendPos = _in10 + attrMap = _in11 + goto TAIL_CALL_START + } + } +} +func (_static *CompanionStruct_Default___) GetAttributeName(ddbAttrKey _dafny.Sequence) m_Wrappers.Result { + var _0_ddbAttrNameBytes _dafny.Sequence = (ddbAttrKey).Drop((_dafny.IntOfUint32((m_StructuredEncryptionUtil.Companion_Default___.EC__ATTR__PREFIX()).Cardinality())).Uint32()) + _ = _0_ddbAttrNameBytes + var _1_valueOrError0 m_Wrappers.Result = m_UTF8.Decode(_0_ddbAttrNameBytes) + _ = _1_valueOrError0 + if (_1_valueOrError0).IsFailure() { + return (_1_valueOrError0).PropagateFailure() + } else { + var _2_ddbAttrName _dafny.Sequence = (_1_valueOrError0).Extract().(_dafny.Sequence) + _ = _2_ddbAttrName + var _3_valueOrError1 m_Wrappers.Outcome = m_Wrappers.Companion_Default___.Need(m_ComAmazonawsDynamodbTypes.Companion_Default___.IsValid__AttributeName(_2_ddbAttrName), _dafny.SeqOfString("Invalid serialization of DDB Attribute in encryption context.")) + _ = _3_valueOrError1 + if (_3_valueOrError1).IsFailure() { + return (_3_valueOrError1).PropagateFailure() + } else { + return m_Wrappers.Companion_Result_.Create_Success_(_2_ddbAttrName) + } + } +} +func (_static *CompanionStruct_Default___) AddAttributeToMap(ddbAttrKey _dafny.Sequence, encodedAttrValue _dafny.Sequence, attrMap _dafny.Map) m_Wrappers.Result { + var _0_valueOrError0 m_Wrappers.Result = Companion_Default___.GetAttributeName(ddbAttrKey) + _ = _0_valueOrError0 + if (_0_valueOrError0).IsFailure() { + return (_0_valueOrError0).PropagateFailure() + } else { + var _1_ddbAttrName _dafny.Sequence = (_0_valueOrError0).Extract().(_dafny.Sequence) + _ = _1_ddbAttrName + var _2_valueOrError1 m_Wrappers.Result = m_StructuredEncryptionUtil.Companion_Default___.DecodeTerminal(encodedAttrValue) + _ = _2_valueOrError1 + if (_2_valueOrError1).IsFailure() { + return (_2_valueOrError1).PropagateFailure() + } else { + var _3_terminal m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.StructuredDataTerminal = (_2_valueOrError1).Extract().(m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.StructuredDataTerminal) + _ = _3_terminal + var _4_valueOrError2 m_Wrappers.Result = m_DynamoToStruct.Companion_Default___.BytesToAttr((_3_terminal).Dtor_value(), (_3_terminal).Dtor_typeId(), m_Wrappers.Companion_Option_.Create_Some_(uint64(((_3_terminal).Dtor_value()).Cardinality())), uint64(1), uint64(0)) + _ = _4_valueOrError2 + if (_4_valueOrError2).IsFailure() { + return (_4_valueOrError2).PropagateFailure() + } else { + var _5_ddbAttrValue m_DynamoToStruct.AttrValueAndLength = (_4_valueOrError2).Extract().(m_DynamoToStruct.AttrValueAndLength) + _ = _5_ddbAttrValue + return m_Wrappers.Companion_Result_.Create_Success_((attrMap).Update(_1_ddbAttrName, (_5_ddbAttrValue).Dtor_val())) + } + } + } +} +func (_static *CompanionStruct_Default___) ReservedPrefix() _dafny.Sequence { + return _dafny.SeqOfString("aws_dbe_") +} +func (_static *CompanionStruct_Default___) BeaconPrefix() _dafny.Sequence { + return _dafny.Companion_Sequence_.Concatenate(Companion_Default___.ReservedPrefix(), _dafny.SeqOfString("b_")) +} +func (_static *CompanionStruct_Default___) VersionPrefix() _dafny.Sequence { + return _dafny.Companion_Sequence_.Concatenate(Companion_Default___.ReservedPrefix(), _dafny.SeqOfString("v_")) +} +func (_static *CompanionStruct_Default___) SORT__NAME() _dafny.Sequence { + var _0_s _dafny.Sequence = _dafny.SeqOf(uint8(97), uint8(119), uint8(115), uint8(45), uint8(99), uint8(114), uint8(121), uint8(112), uint8(116), uint8(111), uint8(45), uint8(115), uint8(111), uint8(114), uint8(116), uint8(45), uint8(110), uint8(97), uint8(109), uint8(101)) + _ = _0_s + return _0_s +} +func (_static *CompanionStruct_Default___) PARTITION__NAME() _dafny.Sequence { + var _0_s _dafny.Sequence = _dafny.SeqOf(uint8(97), uint8(119), uint8(115), uint8(45), uint8(99), uint8(114), uint8(121), uint8(112), uint8(116), uint8(111), uint8(45), uint8(112), uint8(97), uint8(114), uint8(116), uint8(105), uint8(116), uint8(105), uint8(111), uint8(110), uint8(45), uint8(110), uint8(97), uint8(109), uint8(101)) + _ = _0_s + return _0_s +} +func (_static *CompanionStruct_Default___) TABLE__NAME() _dafny.Sequence { + var _0_s _dafny.Sequence = _dafny.SeqOf(uint8(97), uint8(119), uint8(115), uint8(45), uint8(99), uint8(114), uint8(121), uint8(112), uint8(116), uint8(111), uint8(45), uint8(116), uint8(97), uint8(98), uint8(108), uint8(101), uint8(45), uint8(110), uint8(97), uint8(109), uint8(101)) + _ = _0_s + return _0_s +} +func (_static *CompanionStruct_Default___) SELECTOR__TABLE__NAME() _dafny.Sequence { + return _dafny.SeqOfString("aws_dbe_table_name") +} +func (_static *CompanionStruct_Default___) SELECTOR__PARTITION__NAME() _dafny.Sequence { + return _dafny.SeqOfString("aws_dbe_partition_name") +} +func (_static *CompanionStruct_Default___) SELECTOR__SORT__NAME() _dafny.Sequence { + return _dafny.SeqOfString("aws_dbe_sort_name") +} + +// End of class Default__ diff --git a/releases/go/dynamodb-esdk/DynamoDbMiddlewareSupport/DynamoDbMiddlewareSupport.go b/releases/go/dynamodb-esdk/DynamoDbMiddlewareSupport/DynamoDbMiddlewareSupport.go new file mode 100644 index 000000000..71502e82b --- /dev/null +++ b/releases/go/dynamodb-esdk/DynamoDbMiddlewareSupport/DynamoDbMiddlewareSupport.go @@ -0,0 +1,609 @@ +// Package DynamoDbMiddlewareSupport +// Dafny module DynamoDbMiddlewareSupport compiled into Go + +package DynamoDbMiddlewareSupport + +import ( + os "os" + + m_ComAmazonawsDynamodbTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/dynamodb/ComAmazonawsDynamodbTypes" + m_Com_Amazonaws_Dynamodb "github.com/aws/aws-cryptographic-material-providers-library/releases/go/dynamodb/Com_Amazonaws_Dynamodb" + m_ComAmazonawsKmsTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/kms/ComAmazonawsKmsTypes" + m_Com_Amazonaws_Kms "github.com/aws/aws-cryptographic-material-providers-library/releases/go/kms/Com_Amazonaws_Kms" + m_AlgorithmSuites "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AlgorithmSuites" + m_AwsArnParsing "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsArnParsing" + m_AwsCryptographyKeyStoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyKeyStoreOperations" + m_AwsCryptographyKeyStoreTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyKeyStoreTypes" + m_AwsCryptographyMaterialProvidersOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyMaterialProvidersOperations" + m_AwsCryptographyMaterialProvidersTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyMaterialProvidersTypes" + m_AwsKmsDiscoveryKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsDiscoveryKeyring" + m_AwsKmsEcdhKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsEcdhKeyring" + m_AwsKmsHierarchicalKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsHierarchicalKeyring" + m_AwsKmsKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsKeyring" + m_AwsKmsMrkAreUnique "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkAreUnique" + m_AwsKmsMrkDiscoveryKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkDiscoveryKeyring" + m_AwsKmsMrkKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkKeyring" + m_AwsKmsMrkMatchForDecrypt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkMatchForDecrypt" + m_AwsKmsRsaKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsRsaKeyring" + m_AwsKmsUtils "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsUtils" + m_CMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CMM" + m_CacheConstants "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CacheConstants" + m_CanonicalEncryptionContext "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CanonicalEncryptionContext" + m_Commitment "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Commitment" + m_Constants "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Constants" + m_CreateKeyStoreTable "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CreateKeyStoreTable" + m_CreateKeys "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CreateKeys" + m_DDBKeystoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DDBKeystoreOperations" + m_DefaultCMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DefaultCMM" + m_DefaultClientSupplier "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DefaultClientSupplier" + m_Defaults "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Defaults" + m_DiscoveryMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DiscoveryMultiKeyring" + m_EcdhEdkWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/EcdhEdkWrapping" + m_EdkWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/EdkWrapping" + m_ErrorMessages "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/ErrorMessages" + m_GetKeys "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/GetKeys" + m_IntermediateKeyWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/IntermediateKeyWrapping" + m_KMSKeystoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KMSKeystoreOperations" + m_KeyStore "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KeyStore" + m_KeyStoreErrorMessages "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KeyStoreErrorMessages" + m_Keyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Keyring" + m_KmsArn "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KmsArn" + m_LocalCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/LocalCMC" + m_MaterialProviders "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MaterialProviders" + m_MaterialWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MaterialWrapping" + m_Materials "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Materials" + m_MrkAwareDiscoveryMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MrkAwareDiscoveryMultiKeyring" + m_MrkAwareStrictMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MrkAwareStrictMultiKeyring" + m_MultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MultiKeyring" + m_RawAESKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawAESKeyring" + m_RawECDHKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawECDHKeyring" + m_RawRSAKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawRSAKeyring" + m_RequiredEncryptionContextCMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RequiredEncryptionContextCMM" + m_StormTracker "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StormTracker" + m_StormTrackingCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StormTrackingCMC" + m_StrictMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StrictMultiKeyring" + m_Structure "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Structure" + m_SynchronizedLocalCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/SynchronizedLocalCMC" + m_Utils "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Utils" + m_AtomicPrimitives "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AtomicPrimitives" + m_AwsCryptographyPrimitivesOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AwsCryptographyPrimitivesOperations" + m_AwsCryptographyPrimitivesTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AwsCryptographyPrimitivesTypes" + m_Digest "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/Digest" + m_HKDF "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/HKDF" + m_KdfCtr "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/KdfCtr" + m_Random "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/Random" + m_WrappedHKDF "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/WrappedHKDF" + m_WrappedHMAC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/WrappedHMAC" + m_Actions "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Actions" + m_Base64 "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Base64" + m_Base64Lemmas "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Base64Lemmas" + m_BoundedInts "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/BoundedInts" + m_DivInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivInternals" + m_DivInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivInternalsNonlinear" + m_DivMod "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivMod" + m_FileIO "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/FileIO" + m_FloatCompare "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/FloatCompare" + m_Functions "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Functions" + m_GeneralInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/GeneralInternals" + m_GetOpt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/GetOpt" + m_HexStrings "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/HexStrings" + m_Logarithm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Logarithm" + m__Math "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Math_" + m_ModInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/ModInternals" + m_ModInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/ModInternalsNonlinear" + m_Mul "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Mul" + m_MulInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/MulInternals" + m_MulInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/MulInternalsNonlinear" + m_Power "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Power" + m_Relations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Relations" + m_Seq "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Seq" + m_Seq_MergeSort "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Seq_MergeSort" + m_Sorting "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Sorting" + m_StandardLibrary "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary" + m_StandardLibraryInterop "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibraryInterop" + m_StandardLibrary_MemoryMath "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_MemoryMath" + m_StandardLibrary_Sequence "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_Sequence" + m_StandardLibrary_String "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_String" + m_StandardLibrary_UInt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_UInt" + m_Streams "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Streams" + m_UTF8 "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/UTF8" + m_UnicodeStrings "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/UnicodeStrings" + m__Unicode "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Unicode_" + m_Utf16EncodingForm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Utf16EncodingForm" + m_Utf8EncodingForm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Utf8EncodingForm" + m_Wrappers "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Wrappers" + m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations" + m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes" + m_AwsCryptographyDbEncryptionSdkDynamoDbOperations "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbOperations" + m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes" + m_AwsCryptographyDbEncryptionSdkDynamoDbTypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbTypes" + m_AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations" + m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes" + m_BaseBeacon "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/BaseBeacon" + m_Canonize "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/Canonize" + m_CompoundBeacon "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/CompoundBeacon" + m_DdbMiddlewareConfig "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DdbMiddlewareConfig" + m_DdbStatement "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DdbStatement" + m_DdbVirtualFields "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DdbVirtualFields" + m_DynamoDBFilterExpr "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDBFilterExpr" + m_DynamoDBSupport "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDBSupport" + m_DynamoDbEncryption "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbEncryption" + m_DynamoDbEncryptionBranchKeyIdSupplier "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbEncryptionBranchKeyIdSupplier" + m_DynamoDbEncryptionUtil "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbEncryptionUtil" + m_DynamoDbItemEncryptor "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbItemEncryptor" + m_DynamoDbItemEncryptorUtil "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbItemEncryptorUtil" + m_DynamoDbNormalizeNumber "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbNormalizeNumber" + m_DynamoDbUpdateExpr "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbUpdateExpr" + m_DynamoToStruct "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoToStruct" + m_InternalLegacyOverride "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/InternalLegacyOverride" + m__Maps "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/Maps_" + m_OptimizedMergeSort "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/OptimizedMergeSort" + m_SearchConfigToInfo "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/SearchConfigToInfo" + m_SearchableEncryptionInfo "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/SearchableEncryptionInfo" + m_Sets "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/Sets" + m_SortCanon "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/SortCanon" + m_StructuredEncryption "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryption" + m_StructuredEncryptionCrypt "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionCrypt" + m_StructuredEncryptionFooter "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionFooter" + m_StructuredEncryptionHeader "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionHeader" + m_StructuredEncryptionPaths "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionPaths" + m_StructuredEncryptionUtil "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionUtil" + m_TermLoc "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/TermLoc" + m__System "github.com/dafny-lang/DafnyRuntimeGo/v4/System_" + _dafny "github.com/dafny-lang/DafnyRuntimeGo/v4/dafny" +) + +var _ = os.Args +var _ _dafny.Dummy__ +var _ m__System.Dummy__ +var _ m_Wrappers.Dummy__ +var _ m_BoundedInts.Dummy__ +var _ m_StandardLibrary_UInt.Dummy__ +var _ m_StandardLibrary_MemoryMath.Dummy__ +var _ m_StandardLibrary_Sequence.Dummy__ +var _ m_StandardLibrary_String.Dummy__ +var _ m_StandardLibrary.Dummy__ +var _ m_AwsCryptographyPrimitivesTypes.Dummy__ +var _ m_Random.Dummy__ +var _ m_Digest.Dummy__ +var _ m_WrappedHMAC.Dummy__ +var _ m_HKDF.Dummy__ +var _ m_WrappedHKDF.Dummy__ +var _ m_KdfCtr.Dummy__ +var _ m_AwsCryptographyPrimitivesOperations.Dummy__ +var _ m_AtomicPrimitives.Dummy__ +var _ m_ComAmazonawsDynamodbTypes.Dummy__ +var _ m_ComAmazonawsKmsTypes.Dummy__ +var _ m_AwsCryptographyKeyStoreTypes.Dummy__ +var _ m_AwsCryptographyMaterialProvidersTypes.Dummy__ +var _ m_Base64.Dummy__ +var _ m_AlgorithmSuites.Dummy__ +var _ m_Materials.Dummy__ +var _ m_Keyring.Dummy__ +var _ m_Relations.Dummy__ +var _ m_Seq_MergeSort.Dummy__ +var _ m__Math.Dummy__ +var _ m_Seq.Dummy__ +var _ m_Actions.Dummy__ +var _ m_CanonicalEncryptionContext.Dummy__ +var _ m_MaterialWrapping.Dummy__ +var _ m_IntermediateKeyWrapping.Dummy__ +var _ m_EdkWrapping.Dummy__ +var _ m_ErrorMessages.Dummy__ +var _ m_RawAESKeyring.Dummy__ +var _ m_AwsArnParsing.Dummy__ +var _ m_Constants.Dummy__ +var _ m_EcdhEdkWrapping.Dummy__ +var _ m_RawECDHKeyring.Dummy__ +var _ m_RawRSAKeyring.Dummy__ +var _ m_AwsKmsMrkMatchForDecrypt.Dummy__ +var _ m_AwsKmsUtils.Dummy__ +var _ m_AwsKmsKeyring.Dummy__ +var _ m_AwsKmsDiscoveryKeyring.Dummy__ +var _ m_AwsKmsEcdhKeyring.Dummy__ +var _ m_FileIO.Dummy__ +var _ m_LocalCMC.Dummy__ +var _ m_SynchronizedLocalCMC.Dummy__ +var _ m_StormTracker.Dummy__ +var _ m_StormTrackingCMC.Dummy__ +var _ m_CacheConstants.Dummy__ +var _ m_AwsKmsHierarchicalKeyring.Dummy__ +var _ m_AwsKmsMrkDiscoveryKeyring.Dummy__ +var _ m_AwsKmsMrkKeyring.Dummy__ +var _ m_AwsKmsRsaKeyring.Dummy__ +var _ m_MultiKeyring.Dummy__ +var _ m_AwsKmsMrkAreUnique.Dummy__ +var _ m_StrictMultiKeyring.Dummy__ +var _ m_Com_Amazonaws_Kms.Dummy__ +var _ m_Com_Amazonaws_Dynamodb.Dummy__ +var _ m_DiscoveryMultiKeyring.Dummy__ +var _ m_MrkAwareDiscoveryMultiKeyring.Dummy__ +var _ m_MrkAwareStrictMultiKeyring.Dummy__ +var _ m_CMM.Dummy__ +var _ m_Defaults.Dummy__ +var _ m_Commitment.Dummy__ +var _ m_DefaultCMM.Dummy__ +var _ m_DefaultClientSupplier.Dummy__ +var _ m_Utils.Dummy__ +var _ m_RequiredEncryptionContextCMM.Dummy__ +var _ m_AwsCryptographyMaterialProvidersOperations.Dummy__ +var _ m_MaterialProviders.Dummy__ +var _ m_KeyStoreErrorMessages.Dummy__ +var _ m_KmsArn.Dummy__ +var _ m_Structure.Dummy__ +var _ m_KMSKeystoreOperations.Dummy__ +var _ m_DDBKeystoreOperations.Dummy__ +var _ m_CreateKeys.Dummy__ +var _ m_CreateKeyStoreTable.Dummy__ +var _ m_GetKeys.Dummy__ +var _ m_AwsCryptographyKeyStoreOperations.Dummy__ +var _ m_KeyStore.Dummy__ +var _ m__Unicode.Dummy__ +var _ m_Functions.Dummy__ +var _ m_Utf8EncodingForm.Dummy__ +var _ m_Utf16EncodingForm.Dummy__ +var _ m_UnicodeStrings.Dummy__ +var _ m_GeneralInternals.Dummy__ +var _ m_MulInternalsNonlinear.Dummy__ +var _ m_MulInternals.Dummy__ +var _ m_Mul.Dummy__ +var _ m_ModInternalsNonlinear.Dummy__ +var _ m_DivInternalsNonlinear.Dummy__ +var _ m_ModInternals.Dummy__ +var _ m_DivInternals.Dummy__ +var _ m_DivMod.Dummy__ +var _ m_Power.Dummy__ +var _ m_Logarithm.Dummy__ +var _ m_StandardLibraryInterop.Dummy__ +var _ m_Streams.Dummy__ +var _ m_Sorting.Dummy__ +var _ m_HexStrings.Dummy__ +var _ m_GetOpt.Dummy__ +var _ m_FloatCompare.Dummy__ +var _ m_Base64Lemmas.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Dummy__ +var _ m_StructuredEncryptionUtil.Dummy__ +var _ m_Sets.Dummy__ +var _ m_StructuredEncryptionPaths.Dummy__ +var _ m_StructuredEncryptionHeader.Dummy__ +var _ m_StructuredEncryptionFooter.Dummy__ +var _ m_OptimizedMergeSort.Dummy__ +var _ m_SortCanon.Dummy__ +var _ m_Canonize.Dummy__ +var _ m_StructuredEncryptionCrypt.Dummy__ +var _ m__Maps.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations.Dummy__ +var _ m_StructuredEncryption.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Dummy__ +var _ m_DynamoDbEncryptionUtil.Dummy__ +var _ m_DynamoDbNormalizeNumber.Dummy__ +var _ m_DynamoToStruct.Dummy__ +var _ m_DynamoDbItemEncryptorUtil.Dummy__ +var _ m_InternalLegacyOverride.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations.Dummy__ +var _ m_DynamoDbItemEncryptor.Dummy__ +var _ m_DynamoDbEncryptionBranchKeyIdSupplier.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbOperations.Dummy__ +var _ m_DynamoDbEncryption.Dummy__ +var _ m_TermLoc.Dummy__ +var _ m_DdbVirtualFields.Dummy__ +var _ m_DynamoDbUpdateExpr.Dummy__ +var _ m_BaseBeacon.Dummy__ +var _ m_CompoundBeacon.Dummy__ +var _ m_SearchableEncryptionInfo.Dummy__ +var _ m_DynamoDBFilterExpr.Dummy__ +var _ m_DynamoDBSupport.Dummy__ +var _ m_SearchConfigToInfo.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Dummy__ +var _ m_DdbMiddlewareConfig.Dummy__ +var _ m_DdbStatement.Dummy__ + +type Dummy__ struct{} + +// Definition of class Default__ +type Default__ struct { + dummy byte +} + +func New_Default___() *Default__ { + _this := Default__{} + + return &_this +} + +type CompanionStruct_Default___ struct { +} + +var Companion_Default___ = CompanionStruct_Default___{} + +func (_this *Default__) Equals(other *Default__) bool { + return _this == other +} + +func (_this *Default__) EqualsGeneric(x interface{}) bool { + other, ok := x.(*Default__) + return ok && _this.Equals(other) +} + +func (*Default__) String() string { + return "DynamoDbMiddlewareSupport.Default__" +} +func (_this *Default__) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = &Default__{} + +func (_static *CompanionStruct_Default___) NoMap(m m_Wrappers.Option) bool { + return ((m).Is_None()) || ((uint64(((m).Dtor_value().(_dafny.Map)).CardinalityInt())) == (uint64(0))) +} +func (_static *CompanionStruct_Default___) NoList(m m_Wrappers.Option) bool { + return ((m).Is_None()) || ((uint64(((m).Dtor_value().(_dafny.Sequence)).Cardinality())) == (uint64(0))) +} +func (_static *CompanionStruct_Default___) IsWriteable(config m_DdbMiddlewareConfig.TableConfig, item _dafny.Map) m_Wrappers.Result { + var ret m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(false) + _ = ret + var _0_is__writable m_Wrappers.Result + _ = _0_is__writable + var _out0 m_Wrappers.Result + _ = _out0 + _out0 = m_DynamoDBSupport.Companion_Default___.IsWriteable(item) + _0_is__writable = _out0 + ret = (_0_is__writable).MapFailure(func(coer147 func(_dafny.Sequence) m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Error) func(interface{}) interface{} { + return func(arg185 interface{}) interface{} { + return coer147(arg185.(_dafny.Sequence)) + } + }(func(_1_e _dafny.Sequence) m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Error { + return m_DdbMiddlewareConfig.Companion_Default___.E(_1_e) + })) + return ret + return ret +} +func (_static *CompanionStruct_Default___) IsSigned(config m_DdbMiddlewareConfig.TableConfig, attr _dafny.Sequence) bool { + return m_DynamoDBSupport.Companion_Default___.IsSigned((((config).Dtor_itemEncryptor()).Config()).Dtor_attributeActionsOnEncrypt(), attr) +} +func (_static *CompanionStruct_Default___) TestConditionExpression(config m_DdbMiddlewareConfig.TableConfig, expr m_Wrappers.Option, attrNames m_Wrappers.Option, attrValues m_Wrappers.Option) m_Wrappers.Result { + return (m_DynamoDBSupport.Companion_Default___.TestConditionExpression((((config).Dtor_itemEncryptor()).Config()).Dtor_attributeActionsOnEncrypt(), expr, attrNames, attrValues)).MapFailure(func(coer148 func(_dafny.Sequence) m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Error) func(interface{}) interface{} { + return func(arg186 interface{}) interface{} { + return coer148(arg186.(_dafny.Sequence)) + } + }(func(_0_e _dafny.Sequence) m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Error { + return m_DdbMiddlewareConfig.Companion_Default___.E(_0_e) + })) +} +func (_static *CompanionStruct_Default___) TestUpdateExpression(config m_DdbMiddlewareConfig.TableConfig, expr m_Wrappers.Option, attrNames m_Wrappers.Option, attrValues m_Wrappers.Option) m_Wrappers.Result { + return (m_DynamoDBSupport.Companion_Default___.TestUpdateExpression((((config).Dtor_itemEncryptor()).Config()).Dtor_attributeActionsOnEncrypt(), expr, attrNames, attrValues)).MapFailure(func(coer149 func(_dafny.Sequence) m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Error) func(interface{}) interface{} { + return func(arg187 interface{}) interface{} { + return coer149(arg187.(_dafny.Sequence)) + } + }(func(_0_e _dafny.Sequence) m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Error { + return m_DdbMiddlewareConfig.Companion_Default___.E(_0_e) + })) +} +func (_static *CompanionStruct_Default___) AddSignedBeacons(config m_DdbMiddlewareConfig.TableConfig, item _dafny.Map) m_Wrappers.Result { + var output m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(_dafny.EmptyMap) + _ = output + var _0_ret m_Wrappers.Result + _ = _0_ret + var _out0 m_Wrappers.Result + _ = _out0 + _out0 = m_DynamoDBSupport.Companion_Default___.AddSignedBeacons((config).Dtor_search(), item) + _0_ret = _out0 + output = (_0_ret).MapFailure(func(coer150 func(m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Error) m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Error) func(interface{}) interface{} { + return func(arg188 interface{}) interface{} { + return coer150(arg188.(m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Error)) + } + }(func(_1_e m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Error) m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Error { + return m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_Error_.Create_AwsCryptographyDbEncryptionSdkDynamoDb_(_1_e) + })) + return output + return output +} +func (_static *CompanionStruct_Default___) GetEncryptedBeacons(config m_DdbMiddlewareConfig.TableConfig, item _dafny.Map, keyId m_DynamoDbEncryptionUtil.MaybeKeyId) m_Wrappers.Result { + var output m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(_dafny.EmptyMap) + _ = output + var _0_ret m_Wrappers.Result + _ = _0_ret + var _out0 m_Wrappers.Result + _ = _out0 + _out0 = m_DynamoDBSupport.Companion_Default___.GetEncryptedBeacons((config).Dtor_search(), item, keyId) + _0_ret = _out0 + output = (_0_ret).MapFailure(func(coer151 func(m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Error) m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Error) func(interface{}) interface{} { + return func(arg189 interface{}) interface{} { + return coer151(arg189.(m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Error)) + } + }(func(_1_e m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Error) m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Error { + return m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_Error_.Create_AwsCryptographyDbEncryptionSdkDynamoDb_(_1_e) + })) + return output + return output +} +func (_static *CompanionStruct_Default___) GetBeaconKeyId(config m_DdbMiddlewareConfig.TableConfig, keyExpr m_Wrappers.Option, filterExpr m_Wrappers.Option, values m_Wrappers.Option, names m_Wrappers.Option) m_Wrappers.Result { + return (m_DynamoDBSupport.Companion_Default___.GetBeaconKeyId((config).Dtor_search(), keyExpr, filterExpr, values, names)).MapFailure(func(coer152 func(m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Error) m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Error) func(interface{}) interface{} { + return func(arg190 interface{}) interface{} { + return coer152(arg190.(m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Error)) + } + }(func(_0_e m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Error) m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Error { + return m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_Error_.Create_AwsCryptographyDbEncryptionSdkDynamoDb_(_0_e) + })) +} +func (_static *CompanionStruct_Default___) GetKeyIdFromHeader(config m_DdbMiddlewareConfig.TableConfig, output m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.EncryptItemOutput) m_Wrappers.Result { + if (((config).Dtor_search()).Is_Some()) && (((((((config).Dtor_search()).Dtor_value().(m_SearchableEncryptionInfo.SearchInfo)).Curr()).Dtor_keySource()).Dtor_keyLoc()).Is_MultiLoc()) { + var _0_valueOrError0 m_Wrappers.Outcome = m_Wrappers.Companion_Default___.Need(((output).Dtor_parsedHeader()).Is_Some(), m_DdbMiddlewareConfig.Companion_Default___.E(_dafny.SeqOfString("In multi-tenant mode, the parsed header is required."))) + _ = _0_valueOrError0 + if (_0_valueOrError0).IsFailure() { + return (_0_valueOrError0).PropagateFailure() + } else { + var _1_keys _dafny.Sequence = (((output).Dtor_parsedHeader()).Dtor_value().(m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.ParsedHeader)).Dtor_encryptedDataKeys() + _ = _1_keys + var _2_valueOrError1 m_Wrappers.Outcome = m_Wrappers.Companion_Default___.Need((uint64((_1_keys).Cardinality())) == (uint64(1)), m_DdbMiddlewareConfig.Companion_Default___.E(_dafny.SeqOfString("Encrypt header has more than one Encrypted Data Key"))) + _ = _2_valueOrError1 + if (_2_valueOrError1).IsFailure() { + return (_2_valueOrError1).PropagateFailure() + } else { + var _3_valueOrError2 m_Wrappers.Outcome = m_Wrappers.Companion_Default___.Need(_dafny.Companion_Sequence_.Equal(((_1_keys).Select(uint32(uint32(0))).(m_AwsCryptographyMaterialProvidersTypes.EncryptedDataKey)).Dtor_keyProviderId(), Companion_Default___.HierarchicalKeyringId()), m_DdbMiddlewareConfig.Companion_Default___.E(_dafny.SeqOfString("In multi-tenant mode, keyProviderId must be aws-kms-hierarchy"))) + _ = _3_valueOrError2 + if (_3_valueOrError2).IsFailure() { + return (_3_valueOrError2).PropagateFailure() + } else { + var _4_valueOrError3 m_Wrappers.Result = (m_UTF8.Decode(((_1_keys).Select(uint32(uint32(0))).(m_AwsCryptographyMaterialProvidersTypes.EncryptedDataKey)).Dtor_keyProviderInfo())).MapFailure(func(coer153 func(_dafny.Sequence) m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Error) func(interface{}) interface{} { + return func(arg191 interface{}) interface{} { + return coer153(arg191.(_dafny.Sequence)) + } + }(func(_5_e _dafny.Sequence) m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Error { + return m_DdbMiddlewareConfig.Companion_Default___.E(_5_e) + })) + _ = _4_valueOrError3 + if (_4_valueOrError3).IsFailure() { + return (_4_valueOrError3).PropagateFailure() + } else { + var _6_keyId _dafny.Sequence = (_4_valueOrError3).Extract().(_dafny.Sequence) + _ = _6_keyId + return m_Wrappers.Companion_Result_.Create_Success_(m_Wrappers.Companion_Option_.Create_Some_(_6_keyId)) + } + } + } + } + } else { + return m_Wrappers.Companion_Result_.Create_Success_(m_Wrappers.Companion_Option_.Create_None_()) + } +} +func (_static *CompanionStruct_Default___) RemoveBeacons(config m_DdbMiddlewareConfig.TableConfig, item _dafny.Map) m_Wrappers.Result { + return (m_DynamoDBSupport.Companion_Default___.RemoveBeacons((config).Dtor_search(), item)).MapFailure(func(coer154 func(_dafny.Sequence) m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Error) func(interface{}) interface{} { + return func(arg192 interface{}) interface{} { + return coer154(arg192.(_dafny.Sequence)) + } + }(func(_0_e _dafny.Sequence) m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Error { + return m_DdbMiddlewareConfig.Companion_Default___.E(_0_e) + })) +} +func (_static *CompanionStruct_Default___) QueryInputForBeacons(config m_DdbMiddlewareConfig.TableConfig, req m_ComAmazonawsDynamodbTypes.QueryInput) m_Wrappers.Result { + var output m_Wrappers.Result = m_Wrappers.Result{} + _ = output + var _0_ret m_Wrappers.Result + _ = _0_ret + var _out0 m_Wrappers.Result + _ = _out0 + _out0 = m_DynamoDBSupport.Companion_Default___.QueryInputForBeacons((config).Dtor_search(), (((config).Dtor_itemEncryptor()).Config()).Dtor_attributeActionsOnEncrypt(), req) + _0_ret = _out0 + output = (_0_ret).MapFailure(func(coer155 func(m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Error) m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Error) func(interface{}) interface{} { + return func(arg193 interface{}) interface{} { + return coer155(arg193.(m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Error)) + } + }(func(_1_e m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Error) m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Error { + return m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_Error_.Create_AwsCryptographyDbEncryptionSdkDynamoDb_(_1_e) + })) + return output + return output +} +func (_static *CompanionStruct_Default___) QueryOutputForBeacons(config m_DdbMiddlewareConfig.TableConfig, req m_ComAmazonawsDynamodbTypes.QueryInput, resp m_ComAmazonawsDynamodbTypes.QueryOutput) m_Wrappers.Result { + var output m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(m_ComAmazonawsDynamodbTypes.Companion_QueryOutput_.Default()) + _ = output + var _0_ret m_Wrappers.Result + _ = _0_ret + var _out0 m_Wrappers.Result + _ = _out0 + _out0 = m_DynamoDBSupport.Companion_Default___.QueryOutputForBeacons((config).Dtor_search(), req, resp) + _0_ret = _out0 + output = (_0_ret).MapFailure(func(coer156 func(m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Error) m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Error) func(interface{}) interface{} { + return func(arg194 interface{}) interface{} { + return coer156(arg194.(m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Error)) + } + }(func(_1_e m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Error) m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Error { + return m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_Error_.Create_AwsCryptographyDbEncryptionSdkDynamoDb_(_1_e) + })) + return output + return output +} +func (_static *CompanionStruct_Default___) ScanInputForBeacons(config m_DdbMiddlewareConfig.TableConfig, req m_ComAmazonawsDynamodbTypes.ScanInput) m_Wrappers.Result { + var output m_Wrappers.Result = m_Wrappers.Result{} + _ = output + var _0_ret m_Wrappers.Result + _ = _0_ret + var _out0 m_Wrappers.Result + _ = _out0 + _out0 = m_DynamoDBSupport.Companion_Default___.ScanInputForBeacons((config).Dtor_search(), (((config).Dtor_itemEncryptor()).Config()).Dtor_attributeActionsOnEncrypt(), req) + _0_ret = _out0 + output = (_0_ret).MapFailure(func(coer157 func(m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Error) m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Error) func(interface{}) interface{} { + return func(arg195 interface{}) interface{} { + return coer157(arg195.(m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Error)) + } + }(func(_1_e m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Error) m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Error { + return m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_Error_.Create_AwsCryptographyDbEncryptionSdkDynamoDb_(_1_e) + })) + return output + return output +} +func (_static *CompanionStruct_Default___) ScanOutputForBeacons(config m_DdbMiddlewareConfig.TableConfig, req m_ComAmazonawsDynamodbTypes.ScanInput, resp m_ComAmazonawsDynamodbTypes.ScanOutput) m_Wrappers.Result { + var output m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(m_ComAmazonawsDynamodbTypes.Companion_ScanOutput_.Default()) + _ = output + var _0_ret m_Wrappers.Result + _ = _0_ret + var _out0 m_Wrappers.Result + _ = _out0 + _out0 = m_DynamoDBSupport.Companion_Default___.ScanOutputForBeacons((config).Dtor_search(), req, resp) + _0_ret = _out0 + output = (_0_ret).MapFailure(func(coer158 func(m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Error) m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Error) func(interface{}) interface{} { + return func(arg196 interface{}) interface{} { + return coer158(arg196.(m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Error)) + } + }(func(_1_e m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Error) m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Error { + return m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_Error_.Create_AwsCryptographyDbEncryptionSdkDynamoDb_(_1_e) + })) + return output + return output +} +func (_static *CompanionStruct_Default___) GetVirtualFields(search m_SearchableEncryptionInfo.SearchInfo, item _dafny.Map, version m_Wrappers.Option) m_Wrappers.Result { + var output m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(_dafny.EmptyMap) + _ = output + if ((version).Is_Some()) && (((version).Dtor_value().(int32)) != (int32(1)) /* dircomp */) { + output = m_Wrappers.Companion_Result_.Create_Failure_(m_DdbMiddlewareConfig.Companion_Default___.E(_dafny.SeqOfString("Beacon Version Number must be '1'"))) + return output + } + var _0_ret m_Wrappers.Result + _ = _0_ret + var _out0 m_Wrappers.Result + _ = _out0 + _out0 = m_DynamoDBSupport.Companion_Default___.GetVirtualFields((search).Curr(), item) + _0_ret = _out0 + output = (_0_ret).MapFailure(func(coer159 func(m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Error) m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Error) func(interface{}) interface{} { + return func(arg197 interface{}) interface{} { + return coer159(arg197.(m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Error)) + } + }(func(_1_e m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Error) m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Error { + return m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_Error_.Create_AwsCryptographyDbEncryptionSdkDynamoDb_(_1_e) + })) + return output + return output +} +func (_static *CompanionStruct_Default___) GetCompoundBeacons(search m_SearchableEncryptionInfo.SearchInfo, item _dafny.Map, version m_Wrappers.Option) m_Wrappers.Result { + var output m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(_dafny.EmptyMap) + _ = output + if ((version).Is_Some()) && (((version).Dtor_value().(int32)) != (int32(1)) /* dircomp */) { + output = m_Wrappers.Companion_Result_.Create_Failure_(m_DdbMiddlewareConfig.Companion_Default___.E(_dafny.SeqOfString("Beacon Version Number must be '1'"))) + return output + } + var _0_ret m_Wrappers.Result + _ = _0_ret + var _out0 m_Wrappers.Result + _ = _out0 + _out0 = m_DynamoDBSupport.Companion_Default___.GetCompoundBeacons((search).Curr(), item) + _0_ret = _out0 + output = (_0_ret).MapFailure(func(coer160 func(m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Error) m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Error) func(interface{}) interface{} { + return func(arg198 interface{}) interface{} { + return coer160(arg198.(m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Error)) + } + }(func(_1_e m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Error) m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Error { + return m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_Error_.Create_AwsCryptographyDbEncryptionSdkDynamoDb_(_1_e) + })) + return output + return output +} +func (_static *CompanionStruct_Default___) HierarchicalKeyringId() _dafny.Sequence { + var _0_s _dafny.Sequence = _dafny.SeqOf(uint8(97), uint8(119), uint8(115), uint8(45), uint8(107), uint8(109), uint8(115), uint8(45), uint8(104), uint8(105), uint8(101), uint8(114), uint8(97), uint8(114), uint8(99), uint8(104), uint8(121)) + _ = _0_s + return _0_s +} + +// End of class Default__ diff --git a/releases/go/dynamodb-esdk/DynamoDbNormalizeNumber/DynamoDbNormalizeNumber.go b/releases/go/dynamodb-esdk/DynamoDbNormalizeNumber/DynamoDbNormalizeNumber.go new file mode 100644 index 000000000..a1fcc0930 --- /dev/null +++ b/releases/go/dynamodb-esdk/DynamoDbNormalizeNumber/DynamoDbNormalizeNumber.go @@ -0,0 +1,619 @@ +// Package DynamoDbNormalizeNumber +// Dafny module DynamoDbNormalizeNumber compiled into Go + +package DynamoDbNormalizeNumber + +import ( + os "os" + + m_ComAmazonawsDynamodbTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/dynamodb/ComAmazonawsDynamodbTypes" + m_Com_Amazonaws_Dynamodb "github.com/aws/aws-cryptographic-material-providers-library/releases/go/dynamodb/Com_Amazonaws_Dynamodb" + m_ComAmazonawsKmsTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/kms/ComAmazonawsKmsTypes" + m_Com_Amazonaws_Kms "github.com/aws/aws-cryptographic-material-providers-library/releases/go/kms/Com_Amazonaws_Kms" + m_AlgorithmSuites "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AlgorithmSuites" + m_AwsArnParsing "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsArnParsing" + m_AwsCryptographyKeyStoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyKeyStoreOperations" + m_AwsCryptographyKeyStoreTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyKeyStoreTypes" + m_AwsCryptographyMaterialProvidersOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyMaterialProvidersOperations" + m_AwsCryptographyMaterialProvidersTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyMaterialProvidersTypes" + m_AwsKmsDiscoveryKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsDiscoveryKeyring" + m_AwsKmsEcdhKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsEcdhKeyring" + m_AwsKmsHierarchicalKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsHierarchicalKeyring" + m_AwsKmsKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsKeyring" + m_AwsKmsMrkAreUnique "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkAreUnique" + m_AwsKmsMrkDiscoveryKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkDiscoveryKeyring" + m_AwsKmsMrkKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkKeyring" + m_AwsKmsMrkMatchForDecrypt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkMatchForDecrypt" + m_AwsKmsRsaKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsRsaKeyring" + m_AwsKmsUtils "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsUtils" + m_CMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CMM" + m_CacheConstants "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CacheConstants" + m_CanonicalEncryptionContext "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CanonicalEncryptionContext" + m_Commitment "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Commitment" + m_Constants "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Constants" + m_CreateKeyStoreTable "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CreateKeyStoreTable" + m_CreateKeys "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CreateKeys" + m_DDBKeystoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DDBKeystoreOperations" + m_DefaultCMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DefaultCMM" + m_DefaultClientSupplier "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DefaultClientSupplier" + m_Defaults "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Defaults" + m_DiscoveryMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DiscoveryMultiKeyring" + m_EcdhEdkWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/EcdhEdkWrapping" + m_EdkWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/EdkWrapping" + m_ErrorMessages "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/ErrorMessages" + m_GetKeys "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/GetKeys" + m_IntermediateKeyWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/IntermediateKeyWrapping" + m_KMSKeystoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KMSKeystoreOperations" + m_KeyStore "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KeyStore" + m_KeyStoreErrorMessages "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KeyStoreErrorMessages" + m_Keyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Keyring" + m_KmsArn "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KmsArn" + m_LocalCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/LocalCMC" + m_MaterialProviders "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MaterialProviders" + m_MaterialWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MaterialWrapping" + m_Materials "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Materials" + m_MrkAwareDiscoveryMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MrkAwareDiscoveryMultiKeyring" + m_MrkAwareStrictMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MrkAwareStrictMultiKeyring" + m_MultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MultiKeyring" + m_RawAESKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawAESKeyring" + m_RawECDHKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawECDHKeyring" + m_RawRSAKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawRSAKeyring" + m_RequiredEncryptionContextCMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RequiredEncryptionContextCMM" + m_StormTracker "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StormTracker" + m_StormTrackingCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StormTrackingCMC" + m_StrictMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StrictMultiKeyring" + m_Structure "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Structure" + m_SynchronizedLocalCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/SynchronizedLocalCMC" + m_Utils "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Utils" + m_AtomicPrimitives "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AtomicPrimitives" + m_AwsCryptographyPrimitivesOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AwsCryptographyPrimitivesOperations" + m_AwsCryptographyPrimitivesTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AwsCryptographyPrimitivesTypes" + m_Digest "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/Digest" + m_HKDF "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/HKDF" + m_KdfCtr "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/KdfCtr" + m_Random "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/Random" + m_WrappedHKDF "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/WrappedHKDF" + m_WrappedHMAC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/WrappedHMAC" + m_Actions "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Actions" + m_Base64 "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Base64" + m_Base64Lemmas "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Base64Lemmas" + m_BoundedInts "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/BoundedInts" + m_DivInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivInternals" + m_DivInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivInternalsNonlinear" + m_DivMod "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivMod" + m_FileIO "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/FileIO" + m_FloatCompare "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/FloatCompare" + m_Functions "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Functions" + m_GeneralInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/GeneralInternals" + m_GetOpt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/GetOpt" + m_HexStrings "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/HexStrings" + m_Logarithm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Logarithm" + m__Math "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Math_" + m_ModInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/ModInternals" + m_ModInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/ModInternalsNonlinear" + m_Mul "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Mul" + m_MulInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/MulInternals" + m_MulInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/MulInternalsNonlinear" + m_Power "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Power" + m_Relations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Relations" + m_Seq "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Seq" + m_Seq_MergeSort "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Seq_MergeSort" + m_Sorting "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Sorting" + m_StandardLibrary "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary" + m_StandardLibraryInterop "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibraryInterop" + m_StandardLibrary_MemoryMath "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_MemoryMath" + m_StandardLibrary_Sequence "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_Sequence" + m_StandardLibrary_String "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_String" + m_StandardLibrary_UInt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_UInt" + m_Streams "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Streams" + m_UnicodeStrings "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/UnicodeStrings" + m__Unicode "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Unicode_" + m_Utf16EncodingForm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Utf16EncodingForm" + m_Utf8EncodingForm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Utf8EncodingForm" + m_Wrappers "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Wrappers" + m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes" + m_AwsCryptographyDbEncryptionSdkDynamoDbTypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbTypes" + m_AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations" + m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes" + m_Canonize "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/Canonize" + m_DynamoDbEncryptionUtil "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbEncryptionUtil" + m__Maps "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/Maps_" + m_OptimizedMergeSort "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/OptimizedMergeSort" + m_Sets "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/Sets" + m_SortCanon "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/SortCanon" + m_StructuredEncryption "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryption" + m_StructuredEncryptionCrypt "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionCrypt" + m_StructuredEncryptionFooter "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionFooter" + m_StructuredEncryptionHeader "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionHeader" + m_StructuredEncryptionPaths "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionPaths" + m_StructuredEncryptionUtil "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionUtil" + m__System "github.com/dafny-lang/DafnyRuntimeGo/v4/System_" + _dafny "github.com/dafny-lang/DafnyRuntimeGo/v4/dafny" +) + +var _ = os.Args +var _ _dafny.Dummy__ +var _ m__System.Dummy__ +var _ m_Wrappers.Dummy__ +var _ m_BoundedInts.Dummy__ +var _ m_StandardLibrary_UInt.Dummy__ +var _ m_StandardLibrary_MemoryMath.Dummy__ +var _ m_StandardLibrary_Sequence.Dummy__ +var _ m_StandardLibrary_String.Dummy__ +var _ m_StandardLibrary.Dummy__ +var _ m_AwsCryptographyPrimitivesTypes.Dummy__ +var _ m_Random.Dummy__ +var _ m_Digest.Dummy__ +var _ m_WrappedHMAC.Dummy__ +var _ m_HKDF.Dummy__ +var _ m_WrappedHKDF.Dummy__ +var _ m_KdfCtr.Dummy__ +var _ m_AwsCryptographyPrimitivesOperations.Dummy__ +var _ m_AtomicPrimitives.Dummy__ +var _ m_ComAmazonawsDynamodbTypes.Dummy__ +var _ m_ComAmazonawsKmsTypes.Dummy__ +var _ m_AwsCryptographyKeyStoreTypes.Dummy__ +var _ m_AwsCryptographyMaterialProvidersTypes.Dummy__ +var _ m_Base64.Dummy__ +var _ m_AlgorithmSuites.Dummy__ +var _ m_Materials.Dummy__ +var _ m_Keyring.Dummy__ +var _ m_Relations.Dummy__ +var _ m_Seq_MergeSort.Dummy__ +var _ m__Math.Dummy__ +var _ m_Seq.Dummy__ +var _ m_Actions.Dummy__ +var _ m_CanonicalEncryptionContext.Dummy__ +var _ m_MaterialWrapping.Dummy__ +var _ m_IntermediateKeyWrapping.Dummy__ +var _ m_EdkWrapping.Dummy__ +var _ m_ErrorMessages.Dummy__ +var _ m_RawAESKeyring.Dummy__ +var _ m_AwsArnParsing.Dummy__ +var _ m_Constants.Dummy__ +var _ m_EcdhEdkWrapping.Dummy__ +var _ m_RawECDHKeyring.Dummy__ +var _ m_RawRSAKeyring.Dummy__ +var _ m_AwsKmsMrkMatchForDecrypt.Dummy__ +var _ m_AwsKmsUtils.Dummy__ +var _ m_AwsKmsKeyring.Dummy__ +var _ m_AwsKmsDiscoveryKeyring.Dummy__ +var _ m_AwsKmsEcdhKeyring.Dummy__ +var _ m_FileIO.Dummy__ +var _ m_LocalCMC.Dummy__ +var _ m_SynchronizedLocalCMC.Dummy__ +var _ m_StormTracker.Dummy__ +var _ m_StormTrackingCMC.Dummy__ +var _ m_CacheConstants.Dummy__ +var _ m_AwsKmsHierarchicalKeyring.Dummy__ +var _ m_AwsKmsMrkDiscoveryKeyring.Dummy__ +var _ m_AwsKmsMrkKeyring.Dummy__ +var _ m_AwsKmsRsaKeyring.Dummy__ +var _ m_MultiKeyring.Dummy__ +var _ m_AwsKmsMrkAreUnique.Dummy__ +var _ m_StrictMultiKeyring.Dummy__ +var _ m_Com_Amazonaws_Kms.Dummy__ +var _ m_Com_Amazonaws_Dynamodb.Dummy__ +var _ m_DiscoveryMultiKeyring.Dummy__ +var _ m_MrkAwareDiscoveryMultiKeyring.Dummy__ +var _ m_MrkAwareStrictMultiKeyring.Dummy__ +var _ m_CMM.Dummy__ +var _ m_Defaults.Dummy__ +var _ m_Commitment.Dummy__ +var _ m_DefaultCMM.Dummy__ +var _ m_DefaultClientSupplier.Dummy__ +var _ m_Utils.Dummy__ +var _ m_RequiredEncryptionContextCMM.Dummy__ +var _ m_AwsCryptographyMaterialProvidersOperations.Dummy__ +var _ m_MaterialProviders.Dummy__ +var _ m_KeyStoreErrorMessages.Dummy__ +var _ m_KmsArn.Dummy__ +var _ m_Structure.Dummy__ +var _ m_KMSKeystoreOperations.Dummy__ +var _ m_DDBKeystoreOperations.Dummy__ +var _ m_CreateKeys.Dummy__ +var _ m_CreateKeyStoreTable.Dummy__ +var _ m_GetKeys.Dummy__ +var _ m_AwsCryptographyKeyStoreOperations.Dummy__ +var _ m_KeyStore.Dummy__ +var _ m__Unicode.Dummy__ +var _ m_Functions.Dummy__ +var _ m_Utf8EncodingForm.Dummy__ +var _ m_Utf16EncodingForm.Dummy__ +var _ m_UnicodeStrings.Dummy__ +var _ m_GeneralInternals.Dummy__ +var _ m_MulInternalsNonlinear.Dummy__ +var _ m_MulInternals.Dummy__ +var _ m_Mul.Dummy__ +var _ m_ModInternalsNonlinear.Dummy__ +var _ m_DivInternalsNonlinear.Dummy__ +var _ m_ModInternals.Dummy__ +var _ m_DivInternals.Dummy__ +var _ m_DivMod.Dummy__ +var _ m_Power.Dummy__ +var _ m_Logarithm.Dummy__ +var _ m_StandardLibraryInterop.Dummy__ +var _ m_Streams.Dummy__ +var _ m_Sorting.Dummy__ +var _ m_HexStrings.Dummy__ +var _ m_GetOpt.Dummy__ +var _ m_FloatCompare.Dummy__ +var _ m_Base64Lemmas.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Dummy__ +var _ m_StructuredEncryptionUtil.Dummy__ +var _ m_Sets.Dummy__ +var _ m_StructuredEncryptionPaths.Dummy__ +var _ m_StructuredEncryptionHeader.Dummy__ +var _ m_StructuredEncryptionFooter.Dummy__ +var _ m_OptimizedMergeSort.Dummy__ +var _ m_SortCanon.Dummy__ +var _ m_Canonize.Dummy__ +var _ m_StructuredEncryptionCrypt.Dummy__ +var _ m__Maps.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations.Dummy__ +var _ m_StructuredEncryption.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Dummy__ +var _ m_DynamoDbEncryptionUtil.Dummy__ + +type Dummy__ struct{} + +// Definition of class Default__ +type Default__ struct { + dummy byte +} + +func New_Default___() *Default__ { + _this := Default__{} + + return &_this +} + +type CompanionStruct_Default___ struct { +} + +var Companion_Default___ = CompanionStruct_Default___{} + +func (_this *Default__) Equals(other *Default__) bool { + return _this == other +} + +func (_this *Default__) EqualsGeneric(x interface{}) bool { + other, ok := x.(*Default__) + return ok && _this.Equals(other) +} + +func (*Default__) String() string { + return "DynamoDbNormalizeNumber.Default__" +} +func (_this *Default__) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = &Default__{} + +func (_static *CompanionStruct_Default___) SkipLeadingZeros(val _dafny.Sequence) _dafny.Sequence { + goto TAIL_CALL_START +TAIL_CALL_START: + if (((_dafny.One).Cmp(_dafny.IntOfUint32((val).Cardinality())) < 0) && (((val).Select(0).(_dafny.Char)) == (_dafny.Char('0')))) && (((val).Select(1).(_dafny.Char)) != (_dafny.Char('.')) /* dircomp */) { + var _in0 _dafny.Sequence = (val).Drop(1) + _ = _in0 + val = _in0 + goto TAIL_CALL_START + } else { + return val + } +} +func (_static *CompanionStruct_Default___) SkipTrailingZeros(val _dafny.Sequence) _dafny.Sequence { + goto TAIL_CALL_START +TAIL_CALL_START: + if ((_dafny.One).Cmp(_dafny.IntOfUint32((val).Cardinality())) < 0) && (((val).Select(((_dafny.IntOfUint32((val).Cardinality())).Minus(_dafny.One)).Uint32()).(_dafny.Char)) == (_dafny.Char('0'))) { + if ((val).Select(((_dafny.IntOfUint32((val).Cardinality())).Minus(_dafny.IntOfInt64(2))).Uint32()).(_dafny.Char)) == (_dafny.Char('.')) { + return (val).Take(((_dafny.IntOfUint32((val).Cardinality())).Minus(_dafny.IntOfInt64(2))).Uint32()) + } else { + var _in0 _dafny.Sequence = (val).Take(((_dafny.IntOfUint32((val).Cardinality())).Minus(_dafny.One)).Uint32()) + _ = _in0 + val = _in0 + goto TAIL_CALL_START + } + } else { + return val + } +} +func (_static *CompanionStruct_Default___) SkipAllTrailingZeros(val _dafny.Sequence) _dafny.Sequence { + goto TAIL_CALL_START +TAIL_CALL_START: + if ((_dafny.IntOfUint32((val).Cardinality())).Sign() == 1) && (((val).Select(((_dafny.IntOfUint32((val).Cardinality())).Minus(_dafny.One)).Uint32()).(_dafny.Char)) == (_dafny.Char('0'))) { + var _in0 _dafny.Sequence = (val).Take(((_dafny.IntOfUint32((val).Cardinality())).Minus(_dafny.One)).Uint32()) + _ = _in0 + val = _in0 + goto TAIL_CALL_START + } else { + return val + } +} +func (_static *CompanionStruct_Default___) IsDecimalDigit(ch _dafny.Char) bool { + return ((_dafny.Char('0')) <= (ch)) && ((ch) <= (_dafny.Char('9'))) +} +func (_static *CompanionStruct_Default___) StrToIntInner(s _dafny.Sequence, acc _dafny.Int) m_Wrappers.Result { + goto TAIL_CALL_START +TAIL_CALL_START: + if (_dafny.IntOfUint32((s).Cardinality())).Sign() == 0 { + return m_Wrappers.Companion_Result_.Create_Success_(acc) + } else if Companion_Default___.IsDecimalDigit((s).Select(0).(_dafny.Char)) { + var _in0 _dafny.Sequence = (s).Drop(1) + _ = _in0 + var _in1 _dafny.Int = (((acc).Times(_dafny.IntOfInt64(10))).Plus(_dafny.IntOfInt32(rune((s).Select(0).(_dafny.Char))))).Minus(_dafny.IntOfInt32(rune(_dafny.Char('0')))) + _ = _in1 + s = _in0 + acc = _in1 + goto TAIL_CALL_START + } else { + return m_Wrappers.Companion_Result_.Create_Failure_(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("The character '"), (s).Take(1)), _dafny.SeqOfString("' is not a valid decimal digit."))) + } +} +func (_static *CompanionStruct_Default___) StrToInt(s _dafny.Sequence) m_Wrappers.Result { + if (_dafny.IntOfUint32((s).Cardinality())).Sign() == 0 { + return m_Wrappers.Companion_Result_.Create_Failure_(_dafny.SeqOfString("An empty string is not a valid number.")) + } else if ((s).Select(0).(_dafny.Char)) == (_dafny.Char('-')) { + var _0_valueOrError0 m_Wrappers.Outcome = m_Wrappers.Companion_Default___.Need((_dafny.One).Cmp(_dafny.IntOfUint32((s).Cardinality())) < 0, _dafny.SeqOfString("An empty string is not a valid number.")) + _ = _0_valueOrError0 + if (_0_valueOrError0).IsFailure() { + return (_0_valueOrError0).PropagateFailure() + } else { + var _1_valueOrError1 m_Wrappers.Result = Companion_Default___.StrToIntInner((s).Drop(1), _dafny.Zero) + _ = _1_valueOrError1 + if (_1_valueOrError1).IsFailure() { + return (_1_valueOrError1).PropagateFailure() + } else { + var _2_x _dafny.Int = (_1_valueOrError1).Extract().(_dafny.Int) + _ = _2_x + return m_Wrappers.Companion_Result_.Create_Success_((_dafny.Zero).Minus(_2_x)) + } + } + } else if ((s).Select(0).(_dafny.Char)) == (_dafny.Char('+')) { + var _3_valueOrError2 m_Wrappers.Outcome = m_Wrappers.Companion_Default___.Need((_dafny.One).Cmp(_dafny.IntOfUint32((s).Cardinality())) < 0, _dafny.SeqOfString("An empty string is not a valid number.")) + _ = _3_valueOrError2 + if (_3_valueOrError2).IsFailure() { + return (_3_valueOrError2).PropagateFailure() + } else { + return Companion_Default___.StrToIntInner((s).Drop(1), _dafny.Zero) + } + } else { + return Companion_Default___.StrToIntInner(s, _dafny.Zero) + } +} +func (_static *CompanionStruct_Default___) Zeros(n _dafny.Int) _dafny.Sequence { + return _dafny.SeqCreate((n).Uint32(), func(coer43 func(_dafny.Int) _dafny.Char) func(_dafny.Int) interface{} { + return func(arg59 _dafny.Int) interface{} { + return coer43(arg59) + } + }(func(_0_i _dafny.Int) _dafny.Char { + return _dafny.Char('0') + })).SetString() +} +func (_static *CompanionStruct_Default___) CountDigits(s _dafny.Sequence) _dafny.Int { + var _0___accumulator _dafny.Int = _dafny.Zero + _ = _0___accumulator + goto TAIL_CALL_START +TAIL_CALL_START: + if (_dafny.IntOfUint32((s).Cardinality())).Sign() == 0 { + return (_dafny.Zero).Plus(_0___accumulator) + } else if Companion_Default___.IsDecimalDigit((s).Select(0).(_dafny.Char)) { + _0___accumulator = (_0___accumulator).Plus(_dafny.One) + var _in0 _dafny.Sequence = (s).Drop(1) + _ = _in0 + s = _in0 + goto TAIL_CALL_START + } else { + return (_dafny.Zero).Plus(_0___accumulator) + } +} +func (_static *CompanionStruct_Default___) IsE(ch _dafny.Char) bool { + return ((ch) == (_dafny.Char('e'))) || ((ch) == (_dafny.Char('E'))) +} +func (_static *CompanionStruct_Default___) ParseNumber(n _dafny.Sequence) m_Wrappers.Result { + var _0_preDot _dafny.Int = Companion_Default___.CountDigits(n) + _ = _0_preDot + if (_dafny.IntOfUint32((n).Cardinality())).Cmp(_0_preDot) == 0 { + return m_Wrappers.Companion_Result_.Create_Success_(_dafny.TupleOf(n, _dafny.IntOfUint32((n).Cardinality()), _dafny.Zero)) + } else if ((n).Select((_0_preDot).Uint32()).(_dafny.Char)) == (_dafny.Char('.')) { + var _1_postDot _dafny.Int = Companion_Default___.CountDigits((n).Drop(((_0_preDot).Plus(_dafny.One)).Uint32())) + _ = _1_postDot + var _2_valueOrError0 m_Wrappers.Outcome = m_Wrappers.Companion_Default___.Need(((_0_preDot).Plus(_1_postDot)).Sign() == 1, _dafny.SeqOfString("Number needs digits either before or after the decimal point.")) + _ = _2_valueOrError0 + if (_2_valueOrError0).IsFailure() { + return (_2_valueOrError0).PropagateFailure() + } else { + var _3_len _dafny.Int = ((_0_preDot).Plus(_1_postDot)).Plus(_dafny.One) + _ = _3_len + if (_3_len).Cmp(_dafny.IntOfUint32((n).Cardinality())) == 0 { + return m_Wrappers.Companion_Result_.Create_Success_(_dafny.TupleOf(_dafny.Companion_Sequence_.Concatenate((n).Subsequence(0, (_0_preDot).Uint32()), (n).Drop(((_0_preDot).Plus(_dafny.One)).Uint32())), _0_preDot, _dafny.Zero)) + } else if Companion_Default___.IsE((n).Select((_3_len).Uint32()).(_dafny.Char)) { + var _4_valueOrError1 m_Wrappers.Result = Companion_Default___.StrToInt((n).Drop(((_3_len).Plus(_dafny.One)).Uint32())) + _ = _4_valueOrError1 + if (_4_valueOrError1).IsFailure() { + return (_4_valueOrError1).PropagateFailure() + } else { + var _5_exp _dafny.Int = (_4_valueOrError1).Extract().(_dafny.Int) + _ = _5_exp + return m_Wrappers.Companion_Result_.Create_Success_(_dafny.TupleOf(_dafny.Companion_Sequence_.Concatenate((n).Subsequence(0, (_0_preDot).Uint32()), (n).Subsequence(((_0_preDot).Plus(_dafny.One)).Uint32(), (_3_len).Uint32())), _0_preDot, _5_exp)) + } + } else { + return m_Wrappers.Companion_Result_.Create_Failure_(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("Invalid Character in number at '"), (n).Drop((_3_len).Uint32())), _dafny.SeqOfString("'."))) + } + } + } else if (_0_preDot).Sign() == 0 { + return m_Wrappers.Companion_Result_.Create_Failure_(_dafny.SeqOfString("Number needs digits either before or after the decimal point.")) + } else if Companion_Default___.IsE((n).Select((_0_preDot).Uint32()).(_dafny.Char)) { + var _6_valueOrError2 m_Wrappers.Result = Companion_Default___.StrToInt((n).Drop(((_0_preDot).Plus(_dafny.One)).Uint32())) + _ = _6_valueOrError2 + if (_6_valueOrError2).IsFailure() { + return (_6_valueOrError2).PropagateFailure() + } else { + var _7_exp _dafny.Int = (_6_valueOrError2).Extract().(_dafny.Int) + _ = _7_exp + return m_Wrappers.Companion_Result_.Create_Success_(_dafny.TupleOf((n).Take((_0_preDot).Uint32()), _0_preDot, _7_exp)) + } + } else { + return m_Wrappers.Companion_Result_.Create_Failure_(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("Invalid Character in number at '"), (n).Drop((_0_preDot).Uint32())), _dafny.SeqOfString("'."))) + } +} +func (_static *CompanionStruct_Default___) CountZeros(value _dafny.Sequence) _dafny.Int { + var _0___accumulator _dafny.Int = _dafny.Zero + _ = _0___accumulator + goto TAIL_CALL_START +TAIL_CALL_START: + if ((_dafny.IntOfUint32((value).Cardinality())).Sign() == 0) || (((value).Select(0).(_dafny.Char)) != (_dafny.Char('0')) /* dircomp */) { + return (_dafny.Zero).Plus(_0___accumulator) + } else { + _0___accumulator = (_0___accumulator).Plus(_dafny.One) + var _in0 _dafny.Sequence = (value).Drop(1) + _ = _in0 + value = _in0 + goto TAIL_CALL_START + } +} +func (_static *CompanionStruct_Default___) NormalizeValue(value _dafny.Sequence, pos _dafny.Int) _dafny.Tuple { + goto TAIL_CALL_START +TAIL_CALL_START: + if (_dafny.IntOfUint32((value).Cardinality())).Sign() == 0 { + return _dafny.TupleOf(value, pos) + } else if (((value).Select(0).(_dafny.Char)) == (_dafny.Char('0'))) && ((pos).Sign() == 1) { + var _in0 _dafny.Sequence = (value).Drop(1) + _ = _in0 + var _in1 _dafny.Int = (pos).Minus(_dafny.One) + _ = _in1 + value = _in0 + pos = _in1 + goto TAIL_CALL_START + } else if (((value).Select(((_dafny.IntOfUint32((value).Cardinality())).Minus(_dafny.One)).Uint32()).(_dafny.Char)) == (_dafny.Char('0'))) && ((pos).Cmp(_dafny.IntOfUint32((value).Cardinality())) < 0) { + var _in2 _dafny.Sequence = (value).Take(((_dafny.IntOfUint32((value).Cardinality())).Minus(_dafny.One)).Uint32()) + _ = _in2 + var _in3 _dafny.Int = pos + _ = _in3 + value = _in2 + pos = _in3 + goto TAIL_CALL_START + } else { + return _dafny.TupleOf(value, pos) + } +} +func (_static *CompanionStruct_Default___) NormalizePositive(n _dafny.Sequence) m_Wrappers.Result { + var _0_valueOrError0 m_Wrappers.Result = Companion_Default___.ParseNumber(n) + _ = _0_valueOrError0 + if (_0_valueOrError0).IsFailure() { + return (_0_valueOrError0).PropagateFailure() + } else { + var _let_tmp_rhs0 _dafny.Tuple = (_0_valueOrError0).Extract().(_dafny.Tuple) + _ = _let_tmp_rhs0 + var _1_value _dafny.Sequence = (*(_let_tmp_rhs0).IndexInt(0)).(_dafny.Sequence) + _ = _1_value + var _2_pos _dafny.Int = (*(_let_tmp_rhs0).IndexInt(1)).(_dafny.Int) + _ = _2_pos + var _3_exp _dafny.Int = (*(_let_tmp_rhs0).IndexInt(2)).(_dafny.Int) + _ = _3_exp + var _let_tmp_rhs1 _dafny.Tuple = Companion_Default___.NormalizeValue(_1_value, _2_pos) + _ = _let_tmp_rhs1 + var _4_value _dafny.Sequence = (*(_let_tmp_rhs1).IndexInt(0)).(_dafny.Sequence) + _ = _4_value + var _5_pos _dafny.Int = (*(_let_tmp_rhs1).IndexInt(1)).(_dafny.Int) + _ = _5_pos + var _6_digitsOfPrecision _dafny.Sequence = Companion_Default___.SkipAllTrailingZeros(Companion_Default___.SkipLeadingZeros(_4_value)) + _ = _6_digitsOfPrecision + var _7_valueOrError1 m_Wrappers.Outcome = m_Wrappers.Companion_Default___.Need((_dafny.IntOfUint32((_6_digitsOfPrecision).Cardinality())).Cmp(_dafny.IntOfInt64(38)) <= 0, _dafny.SeqOfString("Attempting to store more than 38 significant digits in a Number.")) + _ = _7_valueOrError1 + if (_7_valueOrError1).IsFailure() { + return (_7_valueOrError1).PropagateFailure() + } else { + var _8_newPos _dafny.Int = (_5_pos).Plus(_3_exp) + _ = _8_newPos + if (_dafny.IntOfUint32((_6_digitsOfPrecision).Cardinality())).Sign() == 0 { + return m_Wrappers.Companion_Result_.Create_Success_(_dafny.SeqOfString("0")) + } else if (_8_newPos).Sign() != 1 { + var _9_valueOrError2 m_Wrappers.Outcome = m_Wrappers.Companion_Default___.Need(((_8_newPos).Minus(Companion_Default___.CountZeros(_4_value))).Cmp(_dafny.IntOfInt64(-129)) >= 0, _dafny.SeqOfString("Attempting to store a number with magnitude smaller than supported range.")) + _ = _9_valueOrError2 + if (_9_valueOrError2).IsFailure() { + return (_9_valueOrError2).PropagateFailure() + } else { + return m_Wrappers.Companion_Result_.Create_Success_(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("0."), Companion_Default___.Zeros((_dafny.Zero).Minus(_8_newPos))), _4_value)) + } + } else if (_8_newPos).Cmp(_dafny.IntOfUint32((_4_value).Cardinality())) >= 0 { + var _10_valueOrError3 m_Wrappers.Outcome = m_Wrappers.Companion_Default___.Need(((_8_newPos).Minus(Companion_Default___.CountZeros(_4_value))).Cmp(_dafny.IntOfInt64(126)) <= 0, _dafny.SeqOfString("Attempting to store a number with magnitude larger than supported range.")) + _ = _10_valueOrError3 + if (_10_valueOrError3).IsFailure() { + return (_10_valueOrError3).PropagateFailure() + } else { + return m_Wrappers.Companion_Result_.Create_Success_(_dafny.Companion_Sequence_.Concatenate(_4_value, Companion_Default___.Zeros((_8_newPos).Minus(_dafny.IntOfUint32((_4_value).Cardinality()))))) + } + } else { + return m_Wrappers.Companion_Result_.Create_Success_(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate((_4_value).Take((_8_newPos).Uint32()), _dafny.SeqOfString(".")), (_4_value).Drop((_8_newPos).Uint32()))) + } + } + } +} +func (_static *CompanionStruct_Default___) TrimZerosFromValidNumber(n _dafny.Sequence) _dafny.Sequence { + var _0_n _dafny.Sequence = Companion_Default___.SkipLeadingZeros(n) + _ = _0_n + if _dafny.Companion_Sequence_.Contains(_0_n, _dafny.Char('.')) { + return Companion_Default___.SkipTrailingZeros(_0_n) + } else { + return _0_n + } +} +func (_static *CompanionStruct_Default___) NormalizeNumber2(n _dafny.Sequence) m_Wrappers.Result { + var _0_valueOrError0 m_Wrappers.Outcome = m_Wrappers.Companion_Default___.Need((_dafny.IntOfUint32((n).Cardinality())).Sign() == 1, _dafny.SeqOfString("An empty string is not a valid number.")) + _ = _0_valueOrError0 + if (_0_valueOrError0).IsFailure() { + return (_0_valueOrError0).PropagateFailure() + } else { + var _let_tmp_rhs0 _dafny.Tuple = (func() _dafny.Tuple { + if ((n).Select(0).(_dafny.Char)) == (_dafny.Char('-')) { + return _dafny.TupleOf(true, (n).Drop(1)) + } + return (func() _dafny.Tuple { + if ((n).Select(0).(_dafny.Char)) == (_dafny.Char('+')) { + return _dafny.TupleOf(false, (n).Drop(1)) + } + return _dafny.TupleOf(false, n) + })() + })() + _ = _let_tmp_rhs0 + var _1_neg bool = (*(_let_tmp_rhs0).IndexInt(0)).(bool) + _ = _1_neg + var _2_n _dafny.Sequence = (*(_let_tmp_rhs0).IndexInt(1)).(_dafny.Sequence) + _ = _2_n + var _3_valueOrError1 m_Wrappers.Outcome = m_Wrappers.Companion_Default___.Need((_dafny.IntOfUint32((_2_n).Cardinality())).Sign() == 1, _dafny.SeqOfString("An empty string is not a valid number.")) + _ = _3_valueOrError1 + if (_3_valueOrError1).IsFailure() { + return (_3_valueOrError1).PropagateFailure() + } else { + var _4_valueOrError2 m_Wrappers.Result = Companion_Default___.NormalizePositive(_2_n) + _ = _4_valueOrError2 + if (_4_valueOrError2).IsFailure() { + return (_4_valueOrError2).PropagateFailure() + } else { + var _5_n _dafny.Sequence = (_4_valueOrError2).Extract().(_dafny.Sequence) + _ = _5_n + var _6_n _dafny.Sequence = Companion_Default___.TrimZerosFromValidNumber(_5_n) + _ = _6_n + if (_1_neg) && (!_dafny.Companion_Sequence_.Equal(_6_n, _dafny.SeqOfString("0"))) { + return m_Wrappers.Companion_Result_.Create_Success_(_dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfChars(_dafny.Char('-')), _6_n)) + } else { + return m_Wrappers.Companion_Result_.Create_Success_(_6_n) + } + } + } + } +} +func (_static *CompanionStruct_Default___) NormalizeNumber(n _dafny.Sequence) m_Wrappers.Result { + var _0_ret m_Wrappers.Result = Companion_Default___.NormalizeNumber2(n) + _ = _0_ret + if (_0_ret).Is_Success() { + return _0_ret + } else { + return m_Wrappers.Companion_Result_.Create_Failure_(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate((_0_ret).Dtor_error().(_dafny.Sequence), _dafny.SeqOfString(" when parsing '")), n), _dafny.SeqOfString("'."))) + } +} + +// End of class Default__ diff --git a/releases/go/dynamodb-esdk/DynamoDbUpdateExpr/DynamoDbUpdateExpr.go b/releases/go/dynamodb-esdk/DynamoDbUpdateExpr/DynamoDbUpdateExpr.go new file mode 100644 index 000000000..144642e15 --- /dev/null +++ b/releases/go/dynamodb-esdk/DynamoDbUpdateExpr/DynamoDbUpdateExpr.go @@ -0,0 +1,465 @@ +// Package DynamoDbUpdateExpr +// Dafny module DynamoDbUpdateExpr compiled into Go + +package DynamoDbUpdateExpr + +import ( + os "os" + + m_ComAmazonawsDynamodbTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/dynamodb/ComAmazonawsDynamodbTypes" + m_Com_Amazonaws_Dynamodb "github.com/aws/aws-cryptographic-material-providers-library/releases/go/dynamodb/Com_Amazonaws_Dynamodb" + m_ComAmazonawsKmsTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/kms/ComAmazonawsKmsTypes" + m_Com_Amazonaws_Kms "github.com/aws/aws-cryptographic-material-providers-library/releases/go/kms/Com_Amazonaws_Kms" + m_AlgorithmSuites "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AlgorithmSuites" + m_AwsArnParsing "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsArnParsing" + m_AwsCryptographyKeyStoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyKeyStoreOperations" + m_AwsCryptographyKeyStoreTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyKeyStoreTypes" + m_AwsCryptographyMaterialProvidersOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyMaterialProvidersOperations" + m_AwsCryptographyMaterialProvidersTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyMaterialProvidersTypes" + m_AwsKmsDiscoveryKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsDiscoveryKeyring" + m_AwsKmsEcdhKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsEcdhKeyring" + m_AwsKmsHierarchicalKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsHierarchicalKeyring" + m_AwsKmsKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsKeyring" + m_AwsKmsMrkAreUnique "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkAreUnique" + m_AwsKmsMrkDiscoveryKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkDiscoveryKeyring" + m_AwsKmsMrkKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkKeyring" + m_AwsKmsMrkMatchForDecrypt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkMatchForDecrypt" + m_AwsKmsRsaKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsRsaKeyring" + m_AwsKmsUtils "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsUtils" + m_CMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CMM" + m_CacheConstants "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CacheConstants" + m_CanonicalEncryptionContext "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CanonicalEncryptionContext" + m_Commitment "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Commitment" + m_Constants "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Constants" + m_CreateKeyStoreTable "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CreateKeyStoreTable" + m_CreateKeys "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CreateKeys" + m_DDBKeystoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DDBKeystoreOperations" + m_DefaultCMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DefaultCMM" + m_DefaultClientSupplier "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DefaultClientSupplier" + m_Defaults "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Defaults" + m_DiscoveryMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DiscoveryMultiKeyring" + m_EcdhEdkWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/EcdhEdkWrapping" + m_EdkWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/EdkWrapping" + m_ErrorMessages "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/ErrorMessages" + m_GetKeys "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/GetKeys" + m_IntermediateKeyWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/IntermediateKeyWrapping" + m_KMSKeystoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KMSKeystoreOperations" + m_KeyStore "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KeyStore" + m_KeyStoreErrorMessages "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KeyStoreErrorMessages" + m_Keyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Keyring" + m_KmsArn "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KmsArn" + m_LocalCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/LocalCMC" + m_MaterialProviders "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MaterialProviders" + m_MaterialWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MaterialWrapping" + m_Materials "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Materials" + m_MrkAwareDiscoveryMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MrkAwareDiscoveryMultiKeyring" + m_MrkAwareStrictMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MrkAwareStrictMultiKeyring" + m_MultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MultiKeyring" + m_RawAESKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawAESKeyring" + m_RawECDHKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawECDHKeyring" + m_RawRSAKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawRSAKeyring" + m_RequiredEncryptionContextCMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RequiredEncryptionContextCMM" + m_StormTracker "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StormTracker" + m_StormTrackingCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StormTrackingCMC" + m_StrictMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StrictMultiKeyring" + m_Structure "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Structure" + m_SynchronizedLocalCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/SynchronizedLocalCMC" + m_Utils "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Utils" + m_AtomicPrimitives "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AtomicPrimitives" + m_AwsCryptographyPrimitivesOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AwsCryptographyPrimitivesOperations" + m_AwsCryptographyPrimitivesTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AwsCryptographyPrimitivesTypes" + m_Digest "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/Digest" + m_HKDF "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/HKDF" + m_KdfCtr "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/KdfCtr" + m_Random "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/Random" + m_WrappedHKDF "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/WrappedHKDF" + m_WrappedHMAC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/WrappedHMAC" + m_Actions "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Actions" + m_Base64 "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Base64" + m_Base64Lemmas "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Base64Lemmas" + m_BoundedInts "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/BoundedInts" + m_DivInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivInternals" + m_DivInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivInternalsNonlinear" + m_DivMod "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivMod" + m_FileIO "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/FileIO" + m_FloatCompare "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/FloatCompare" + m_Functions "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Functions" + m_GeneralInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/GeneralInternals" + m_GetOpt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/GetOpt" + m_HexStrings "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/HexStrings" + m_Logarithm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Logarithm" + m__Math "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Math_" + m_ModInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/ModInternals" + m_ModInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/ModInternalsNonlinear" + m_Mul "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Mul" + m_MulInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/MulInternals" + m_MulInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/MulInternalsNonlinear" + m_Power "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Power" + m_Relations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Relations" + m_Seq "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Seq" + m_Seq_MergeSort "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Seq_MergeSort" + m_Sorting "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Sorting" + m_StandardLibrary "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary" + m_StandardLibraryInterop "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibraryInterop" + m_StandardLibrary_MemoryMath "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_MemoryMath" + m_StandardLibrary_Sequence "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_Sequence" + m_StandardLibrary_String "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_String" + m_StandardLibrary_UInt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_UInt" + m_Streams "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Streams" + m_UnicodeStrings "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/UnicodeStrings" + m__Unicode "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Unicode_" + m_Utf16EncodingForm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Utf16EncodingForm" + m_Utf8EncodingForm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Utf8EncodingForm" + m_Wrappers "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Wrappers" + m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations" + m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes" + m_AwsCryptographyDbEncryptionSdkDynamoDbOperations "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbOperations" + m_AwsCryptographyDbEncryptionSdkDynamoDbTypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbTypes" + m_AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations" + m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes" + m_Canonize "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/Canonize" + m_DdbVirtualFields "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DdbVirtualFields" + m_DynamoDbEncryption "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbEncryption" + m_DynamoDbEncryptionBranchKeyIdSupplier "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbEncryptionBranchKeyIdSupplier" + m_DynamoDbEncryptionUtil "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbEncryptionUtil" + m_DynamoDbItemEncryptor "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbItemEncryptor" + m_DynamoDbItemEncryptorUtil "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbItemEncryptorUtil" + m_DynamoDbNormalizeNumber "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbNormalizeNumber" + m_DynamoToStruct "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoToStruct" + m_InternalLegacyOverride "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/InternalLegacyOverride" + m__Maps "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/Maps_" + m_OptimizedMergeSort "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/OptimizedMergeSort" + m_Sets "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/Sets" + m_SortCanon "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/SortCanon" + m_StructuredEncryption "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryption" + m_StructuredEncryptionCrypt "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionCrypt" + m_StructuredEncryptionFooter "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionFooter" + m_StructuredEncryptionHeader "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionHeader" + m_StructuredEncryptionPaths "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionPaths" + m_StructuredEncryptionUtil "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionUtil" + m_TermLoc "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/TermLoc" + m__System "github.com/dafny-lang/DafnyRuntimeGo/v4/System_" + _dafny "github.com/dafny-lang/DafnyRuntimeGo/v4/dafny" +) + +var _ = os.Args +var _ _dafny.Dummy__ +var _ m__System.Dummy__ +var _ m_Wrappers.Dummy__ +var _ m_BoundedInts.Dummy__ +var _ m_StandardLibrary_UInt.Dummy__ +var _ m_StandardLibrary_MemoryMath.Dummy__ +var _ m_StandardLibrary_Sequence.Dummy__ +var _ m_StandardLibrary_String.Dummy__ +var _ m_StandardLibrary.Dummy__ +var _ m_AwsCryptographyPrimitivesTypes.Dummy__ +var _ m_Random.Dummy__ +var _ m_Digest.Dummy__ +var _ m_WrappedHMAC.Dummy__ +var _ m_HKDF.Dummy__ +var _ m_WrappedHKDF.Dummy__ +var _ m_KdfCtr.Dummy__ +var _ m_AwsCryptographyPrimitivesOperations.Dummy__ +var _ m_AtomicPrimitives.Dummy__ +var _ m_ComAmazonawsDynamodbTypes.Dummy__ +var _ m_ComAmazonawsKmsTypes.Dummy__ +var _ m_AwsCryptographyKeyStoreTypes.Dummy__ +var _ m_AwsCryptographyMaterialProvidersTypes.Dummy__ +var _ m_Base64.Dummy__ +var _ m_AlgorithmSuites.Dummy__ +var _ m_Materials.Dummy__ +var _ m_Keyring.Dummy__ +var _ m_Relations.Dummy__ +var _ m_Seq_MergeSort.Dummy__ +var _ m__Math.Dummy__ +var _ m_Seq.Dummy__ +var _ m_Actions.Dummy__ +var _ m_CanonicalEncryptionContext.Dummy__ +var _ m_MaterialWrapping.Dummy__ +var _ m_IntermediateKeyWrapping.Dummy__ +var _ m_EdkWrapping.Dummy__ +var _ m_ErrorMessages.Dummy__ +var _ m_RawAESKeyring.Dummy__ +var _ m_AwsArnParsing.Dummy__ +var _ m_Constants.Dummy__ +var _ m_EcdhEdkWrapping.Dummy__ +var _ m_RawECDHKeyring.Dummy__ +var _ m_RawRSAKeyring.Dummy__ +var _ m_AwsKmsMrkMatchForDecrypt.Dummy__ +var _ m_AwsKmsUtils.Dummy__ +var _ m_AwsKmsKeyring.Dummy__ +var _ m_AwsKmsDiscoveryKeyring.Dummy__ +var _ m_AwsKmsEcdhKeyring.Dummy__ +var _ m_FileIO.Dummy__ +var _ m_LocalCMC.Dummy__ +var _ m_SynchronizedLocalCMC.Dummy__ +var _ m_StormTracker.Dummy__ +var _ m_StormTrackingCMC.Dummy__ +var _ m_CacheConstants.Dummy__ +var _ m_AwsKmsHierarchicalKeyring.Dummy__ +var _ m_AwsKmsMrkDiscoveryKeyring.Dummy__ +var _ m_AwsKmsMrkKeyring.Dummy__ +var _ m_AwsKmsRsaKeyring.Dummy__ +var _ m_MultiKeyring.Dummy__ +var _ m_AwsKmsMrkAreUnique.Dummy__ +var _ m_StrictMultiKeyring.Dummy__ +var _ m_Com_Amazonaws_Kms.Dummy__ +var _ m_Com_Amazonaws_Dynamodb.Dummy__ +var _ m_DiscoveryMultiKeyring.Dummy__ +var _ m_MrkAwareDiscoveryMultiKeyring.Dummy__ +var _ m_MrkAwareStrictMultiKeyring.Dummy__ +var _ m_CMM.Dummy__ +var _ m_Defaults.Dummy__ +var _ m_Commitment.Dummy__ +var _ m_DefaultCMM.Dummy__ +var _ m_DefaultClientSupplier.Dummy__ +var _ m_Utils.Dummy__ +var _ m_RequiredEncryptionContextCMM.Dummy__ +var _ m_AwsCryptographyMaterialProvidersOperations.Dummy__ +var _ m_MaterialProviders.Dummy__ +var _ m_KeyStoreErrorMessages.Dummy__ +var _ m_KmsArn.Dummy__ +var _ m_Structure.Dummy__ +var _ m_KMSKeystoreOperations.Dummy__ +var _ m_DDBKeystoreOperations.Dummy__ +var _ m_CreateKeys.Dummy__ +var _ m_CreateKeyStoreTable.Dummy__ +var _ m_GetKeys.Dummy__ +var _ m_AwsCryptographyKeyStoreOperations.Dummy__ +var _ m_KeyStore.Dummy__ +var _ m__Unicode.Dummy__ +var _ m_Functions.Dummy__ +var _ m_Utf8EncodingForm.Dummy__ +var _ m_Utf16EncodingForm.Dummy__ +var _ m_UnicodeStrings.Dummy__ +var _ m_GeneralInternals.Dummy__ +var _ m_MulInternalsNonlinear.Dummy__ +var _ m_MulInternals.Dummy__ +var _ m_Mul.Dummy__ +var _ m_ModInternalsNonlinear.Dummy__ +var _ m_DivInternalsNonlinear.Dummy__ +var _ m_ModInternals.Dummy__ +var _ m_DivInternals.Dummy__ +var _ m_DivMod.Dummy__ +var _ m_Power.Dummy__ +var _ m_Logarithm.Dummy__ +var _ m_StandardLibraryInterop.Dummy__ +var _ m_Streams.Dummy__ +var _ m_Sorting.Dummy__ +var _ m_HexStrings.Dummy__ +var _ m_GetOpt.Dummy__ +var _ m_FloatCompare.Dummy__ +var _ m_Base64Lemmas.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Dummy__ +var _ m_StructuredEncryptionUtil.Dummy__ +var _ m_Sets.Dummy__ +var _ m_StructuredEncryptionPaths.Dummy__ +var _ m_StructuredEncryptionHeader.Dummy__ +var _ m_StructuredEncryptionFooter.Dummy__ +var _ m_OptimizedMergeSort.Dummy__ +var _ m_SortCanon.Dummy__ +var _ m_Canonize.Dummy__ +var _ m_StructuredEncryptionCrypt.Dummy__ +var _ m__Maps.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations.Dummy__ +var _ m_StructuredEncryption.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Dummy__ +var _ m_DynamoDbEncryptionUtil.Dummy__ +var _ m_DynamoDbNormalizeNumber.Dummy__ +var _ m_DynamoToStruct.Dummy__ +var _ m_DynamoDbItemEncryptorUtil.Dummy__ +var _ m_InternalLegacyOverride.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations.Dummy__ +var _ m_DynamoDbItemEncryptor.Dummy__ +var _ m_DynamoDbEncryptionBranchKeyIdSupplier.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbOperations.Dummy__ +var _ m_DynamoDbEncryption.Dummy__ +var _ m_TermLoc.Dummy__ +var _ m_DdbVirtualFields.Dummy__ + +type Dummy__ struct{} + +// Definition of class Default__ +type Default__ struct { + dummy byte +} + +func New_Default___() *Default__ { + _this := Default__{} + + return &_this +} + +type CompanionStruct_Default___ struct { +} + +var Companion_Default___ = CompanionStruct_Default___{} + +func (_this *Default__) Equals(other *Default__) bool { + return _this == other +} + +func (_this *Default__) EqualsGeneric(x interface{}) bool { + other, ok := x.(*Default__) + return ok && _this.Equals(other) +} + +func (*Default__) String() string { + return "DynamoDbUpdateExpr.Default__" +} +func (_this *Default__) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = &Default__{} + +func (_static *CompanionStruct_Default___) ExtractAttributes(s _dafny.Sequence, ex m_Wrappers.Option) _dafny.Sequence { + var _0_x _dafny.Sequence = Companion_Default___.ExtractAttrs(s) + _ = _0_x + if (ex).Is_None() { + return _0_x + } else { + return Companion_Default___.Resolve(_0_x, (ex).Dtor_value().(_dafny.Map)) + } +} +func (_static *CompanionStruct_Default___) IgnoreAttr(s _dafny.Sequence) bool { + return _dafny.Companion_Sequence_.Contains(_dafny.SeqOf(_dafny.SeqOfString("SET"), _dafny.SeqOfString("REMOVE"), _dafny.SeqOfString("ADD"), _dafny.SeqOfString("DELETE"), _dafny.SeqOfString("list_append"), _dafny.SeqOfString("if_not_exists")), s) +} +func (_static *CompanionStruct_Default___) Resolve(names _dafny.Sequence, ex _dafny.Map) _dafny.Sequence { + var _0___accumulator _dafny.Sequence = _dafny.SeqOf() + _ = _0___accumulator + goto TAIL_CALL_START +TAIL_CALL_START: + if (_dafny.IntOfUint32((names).Cardinality())).Sign() == 0 { + return _dafny.Companion_Sequence_.Concatenate(_0___accumulator, _dafny.SeqOf()) + } else if (ex).Contains((names).Select(0).(_dafny.Sequence)) { + _0___accumulator = _dafny.Companion_Sequence_.Concatenate(_0___accumulator, _dafny.SeqOf((ex).Get((names).Select(0).(_dafny.Sequence)).(_dafny.Sequence))) + var _in0 _dafny.Sequence = (names).Drop(1) + _ = _in0 + var _in1 _dafny.Map = ex + _ = _in1 + names = _in0 + ex = _in1 + goto TAIL_CALL_START + } else { + _0___accumulator = _dafny.Companion_Sequence_.Concatenate(_0___accumulator, _dafny.SeqOf((names).Select(0).(_dafny.Sequence))) + var _in2 _dafny.Sequence = (names).Drop(1) + _ = _in2 + var _in3 _dafny.Map = ex + _ = _in3 + names = _in2 + ex = _in3 + goto TAIL_CALL_START + } +} +func (_static *CompanionStruct_Default___) ChopOne(s _dafny.Sequence, ch _dafny.Char) _dafny.Sequence { + if _dafny.Companion_Sequence_.Contains(s, ch) { + return (*(m_StandardLibrary.Companion_Default___.SplitOnce(s, ch)).IndexInt(0)).(_dafny.Sequence) + } else { + return s + } +} +func (_static *CompanionStruct_Default___) Chop(s _dafny.Sequence) _dafny.Sequence { + var _0_s _dafny.Sequence = Companion_Default___.ChopOne(s, _dafny.Char('.')) + _ = _0_s + return Companion_Default___.ChopOne(_0_s, _dafny.Char('[')) +} +func (_static *CompanionStruct_Default___) ExtractAttrs(s _dafny.Sequence) _dafny.Sequence { + var _0___accumulator _dafny.Sequence = _dafny.SeqOf() + _ = _0___accumulator + goto TAIL_CALL_START +TAIL_CALL_START: + if (_dafny.IntOfUint32((s).Cardinality())).Sign() == 0 { + return _dafny.Companion_Sequence_.Concatenate(_0___accumulator, _dafny.SeqOf()) + } else { + var _1_ret _dafny.Tuple = Companion_Default___.FindToken(s) + _ = _1_ret + if ((*(_1_ret).IndexInt(0)).(_dafny.Int)).Sign() == 0 { + return _dafny.Companion_Sequence_.Concatenate(_0___accumulator, _dafny.SeqOf()) + } else if ((*(_1_ret).IndexInt(1)).(m_Wrappers.Option)).Is_None() { + var _in0 _dafny.Sequence = (s).Drop(((*(_1_ret).IndexInt(0)).(_dafny.Int)).Uint32()) + _ = _in0 + s = _in0 + goto TAIL_CALL_START + } else if Companion_Default___.IgnoreAttr(((*(_1_ret).IndexInt(1)).(m_Wrappers.Option)).Dtor_value().(_dafny.Sequence)) { + var _in1 _dafny.Sequence = (s).Drop(((*(_1_ret).IndexInt(0)).(_dafny.Int)).Uint32()) + _ = _in1 + s = _in1 + goto TAIL_CALL_START + } else { + _0___accumulator = _dafny.Companion_Sequence_.Concatenate(_0___accumulator, _dafny.SeqOf(Companion_Default___.Chop(((*(_1_ret).IndexInt(1)).(m_Wrappers.Option)).Dtor_value().(_dafny.Sequence)))) + var _in2 _dafny.Sequence = (s).Drop(((*(_1_ret).IndexInt(0)).(_dafny.Int)).Uint32()) + _ = _in2 + s = _in2 + goto TAIL_CALL_START + } + } +} +func (_static *CompanionStruct_Default___) BadStart(ch _dafny.Char) bool { + return ((ch) == (_dafny.Char(':'))) || (((_dafny.Char('0')) <= (ch)) && ((ch) <= (_dafny.Char('9')))) +} +func (_static *CompanionStruct_Default___) AttrStart(ch _dafny.Char) bool { + if ((_dafny.Char('a')) <= (ch)) && ((ch) <= (_dafny.Char('z'))) { + return true + } else if ((_dafny.Char('A')) <= (ch)) && ((ch) <= (_dafny.Char('Z'))) { + return true + } else if ((ch) == (_dafny.Char('#'))) || ((ch) == (_dafny.Char('_'))) { + return true + } else { + return false + } +} +func (_static *CompanionStruct_Default___) AttrChar(ch _dafny.Char) bool { + if Companion_Default___.AttrStart(ch) { + return true + } else if ((_dafny.Char('0')) <= (ch)) && ((ch) <= (_dafny.Char('9'))) { + return true + } else if _dafny.Companion_Sequence_.Contains(_dafny.SeqOfChars(_dafny.Char('['), _dafny.Char(']'), _dafny.Char('.')), ch) { + return true + } else { + return false + } +} +func (_static *CompanionStruct_Default___) AttrLen(s _dafny.Sequence) _dafny.Int { + var _0___accumulator _dafny.Int = _dafny.Zero + _ = _0___accumulator + goto TAIL_CALL_START +TAIL_CALL_START: + if (_dafny.IntOfUint32((s).Cardinality())).Sign() == 0 { + return (_dafny.Zero).Plus(_0___accumulator) + } else if Companion_Default___.AttrChar((s).Select(0).(_dafny.Char)) { + _0___accumulator = (_dafny.One).Plus(_0___accumulator) + var _in0 _dafny.Sequence = (s).Drop(1) + _ = _in0 + s = _in0 + goto TAIL_CALL_START + } else { + return (_dafny.Zero).Plus(_0___accumulator) + } +} +func (_static *CompanionStruct_Default___) FindToken(s _dafny.Sequence) _dafny.Tuple { + if (_dafny.IntOfUint32((s).Cardinality())).Sign() == 0 { + return _dafny.TupleOf(_dafny.Zero, m_Wrappers.Companion_Option_.Create_None_()) + } else { + var _0_ch _dafny.Char = (s).Select(0).(_dafny.Char) + _ = _0_ch + if (_0_ch) == (_dafny.Char('#')) { + var _1_x _dafny.Int = (Companion_Default___.AttrLen((s).Drop(1))).Plus(_dafny.One) + _ = _1_x + return _dafny.TupleOf(_1_x, m_Wrappers.Companion_Option_.Create_Some_((s).Subsequence(0, (_1_x).Uint32()))) + } else if Companion_Default___.BadStart(_0_ch) { + var _2_x _dafny.Int = (Companion_Default___.AttrLen((s).Drop(1))).Plus(_dafny.One) + _ = _2_x + return _dafny.TupleOf(_2_x, m_Wrappers.Companion_Option_.Create_None_()) + } else if Companion_Default___.AttrStart(_0_ch) { + var _3_x _dafny.Int = (Companion_Default___.AttrLen((s).Drop(1))).Plus(_dafny.One) + _ = _3_x + return _dafny.TupleOf(_3_x, m_Wrappers.Companion_Option_.Create_Some_((s).Subsequence(0, (_3_x).Uint32()))) + } else { + return _dafny.TupleOf(_dafny.One, m_Wrappers.Companion_Option_.Create_None_()) + } + } +} + +// End of class Default__ diff --git a/releases/go/dynamodb-esdk/DynamoToStruct/DynamoToStruct.go b/releases/go/dynamodb-esdk/DynamoToStruct/DynamoToStruct.go new file mode 100644 index 000000000..6df1f4ca8 --- /dev/null +++ b/releases/go/dynamodb-esdk/DynamoToStruct/DynamoToStruct.go @@ -0,0 +1,1872 @@ +// Package DynamoToStruct +// Dafny module DynamoToStruct compiled into Go + +package DynamoToStruct + +import ( + os "os" + + m_ComAmazonawsDynamodbTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/dynamodb/ComAmazonawsDynamodbTypes" + m_Com_Amazonaws_Dynamodb "github.com/aws/aws-cryptographic-material-providers-library/releases/go/dynamodb/Com_Amazonaws_Dynamodb" + m_ComAmazonawsKmsTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/kms/ComAmazonawsKmsTypes" + m_Com_Amazonaws_Kms "github.com/aws/aws-cryptographic-material-providers-library/releases/go/kms/Com_Amazonaws_Kms" + m_AlgorithmSuites "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AlgorithmSuites" + m_AwsArnParsing "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsArnParsing" + m_AwsCryptographyKeyStoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyKeyStoreOperations" + m_AwsCryptographyKeyStoreTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyKeyStoreTypes" + m_AwsCryptographyMaterialProvidersOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyMaterialProvidersOperations" + m_AwsCryptographyMaterialProvidersTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyMaterialProvidersTypes" + m_AwsKmsDiscoveryKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsDiscoveryKeyring" + m_AwsKmsEcdhKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsEcdhKeyring" + m_AwsKmsHierarchicalKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsHierarchicalKeyring" + m_AwsKmsKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsKeyring" + m_AwsKmsMrkAreUnique "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkAreUnique" + m_AwsKmsMrkDiscoveryKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkDiscoveryKeyring" + m_AwsKmsMrkKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkKeyring" + m_AwsKmsMrkMatchForDecrypt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkMatchForDecrypt" + m_AwsKmsRsaKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsRsaKeyring" + m_AwsKmsUtils "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsUtils" + m_CMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CMM" + m_CacheConstants "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CacheConstants" + m_CanonicalEncryptionContext "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CanonicalEncryptionContext" + m_Commitment "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Commitment" + m_Constants "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Constants" + m_CreateKeyStoreTable "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CreateKeyStoreTable" + m_CreateKeys "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CreateKeys" + m_DDBKeystoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DDBKeystoreOperations" + m_DefaultCMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DefaultCMM" + m_DefaultClientSupplier "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DefaultClientSupplier" + m_Defaults "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Defaults" + m_DiscoveryMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DiscoveryMultiKeyring" + m_EcdhEdkWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/EcdhEdkWrapping" + m_EdkWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/EdkWrapping" + m_ErrorMessages "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/ErrorMessages" + m_GetKeys "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/GetKeys" + m_IntermediateKeyWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/IntermediateKeyWrapping" + m_KMSKeystoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KMSKeystoreOperations" + m_KeyStore "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KeyStore" + m_KeyStoreErrorMessages "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KeyStoreErrorMessages" + m_Keyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Keyring" + m_KmsArn "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KmsArn" + m_LocalCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/LocalCMC" + m_MaterialProviders "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MaterialProviders" + m_MaterialWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MaterialWrapping" + m_Materials "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Materials" + m_MrkAwareDiscoveryMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MrkAwareDiscoveryMultiKeyring" + m_MrkAwareStrictMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MrkAwareStrictMultiKeyring" + m_MultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MultiKeyring" + m_RawAESKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawAESKeyring" + m_RawECDHKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawECDHKeyring" + m_RawRSAKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawRSAKeyring" + m_RequiredEncryptionContextCMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RequiredEncryptionContextCMM" + m_StormTracker "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StormTracker" + m_StormTrackingCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StormTrackingCMC" + m_StrictMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StrictMultiKeyring" + m_Structure "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Structure" + m_SynchronizedLocalCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/SynchronizedLocalCMC" + m_Utils "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Utils" + m_AtomicPrimitives "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AtomicPrimitives" + m_AwsCryptographyPrimitivesOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AwsCryptographyPrimitivesOperations" + m_AwsCryptographyPrimitivesTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AwsCryptographyPrimitivesTypes" + m_Digest "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/Digest" + m_HKDF "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/HKDF" + m_KdfCtr "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/KdfCtr" + m_Random "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/Random" + m_WrappedHKDF "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/WrappedHKDF" + m_WrappedHMAC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/WrappedHMAC" + m_Actions "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Actions" + m_Base64 "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Base64" + m_Base64Lemmas "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Base64Lemmas" + m_BoundedInts "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/BoundedInts" + m_DafnyLibraries "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DafnyLibraries" + m_DivInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivInternals" + m_DivInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivInternalsNonlinear" + m_DivMod "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivMod" + m_FileIO "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/FileIO" + m_FloatCompare "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/FloatCompare" + m_Functions "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Functions" + m_GeneralInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/GeneralInternals" + m_GetOpt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/GetOpt" + m_HexStrings "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/HexStrings" + m_Logarithm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Logarithm" + m__Math "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Math_" + m_ModInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/ModInternals" + m_ModInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/ModInternalsNonlinear" + m_Mul "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Mul" + m_MulInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/MulInternals" + m_MulInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/MulInternalsNonlinear" + m_Power "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Power" + m_Relations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Relations" + m_Seq "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Seq" + m_Seq_MergeSort "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Seq_MergeSort" + m_SortedSets "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/SortedSets" + m_Sorting "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Sorting" + m_StandardLibrary "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary" + m_StandardLibraryInterop "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibraryInterop" + m_StandardLibrary_MemoryMath "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_MemoryMath" + m_StandardLibrary_Sequence "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_Sequence" + m_StandardLibrary_String "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_String" + m_StandardLibrary_UInt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_UInt" + m_Streams "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Streams" + m_UTF8 "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/UTF8" + m_UnicodeStrings "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/UnicodeStrings" + m__Unicode "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Unicode_" + m_Utf16EncodingForm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Utf16EncodingForm" + m_Utf8EncodingForm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Utf8EncodingForm" + m_Wrappers "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Wrappers" + m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes" + m_AwsCryptographyDbEncryptionSdkDynamoDbTypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbTypes" + m_AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations" + m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes" + m_Canonize "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/Canonize" + m_DynamoDbEncryptionUtil "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbEncryptionUtil" + m_DynamoDbNormalizeNumber "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbNormalizeNumber" + m__Maps "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/Maps_" + m_OptimizedMergeSort "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/OptimizedMergeSort" + m_Sets "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/Sets" + m_SortCanon "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/SortCanon" + m_StructuredEncryption "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryption" + m_StructuredEncryptionCrypt "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionCrypt" + m_StructuredEncryptionFooter "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionFooter" + m_StructuredEncryptionHeader "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionHeader" + m_StructuredEncryptionPaths "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionPaths" + m_StructuredEncryptionUtil "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionUtil" + m__System "github.com/dafny-lang/DafnyRuntimeGo/v4/System_" + _dafny "github.com/dafny-lang/DafnyRuntimeGo/v4/dafny" +) + +var _ = os.Args +var _ _dafny.Dummy__ +var _ m__System.Dummy__ +var _ m_Wrappers.Dummy__ +var _ m_BoundedInts.Dummy__ +var _ m_StandardLibrary_UInt.Dummy__ +var _ m_StandardLibrary_MemoryMath.Dummy__ +var _ m_StandardLibrary_Sequence.Dummy__ +var _ m_StandardLibrary_String.Dummy__ +var _ m_StandardLibrary.Dummy__ +var _ m_AwsCryptographyPrimitivesTypes.Dummy__ +var _ m_Random.Dummy__ +var _ m_Digest.Dummy__ +var _ m_WrappedHMAC.Dummy__ +var _ m_HKDF.Dummy__ +var _ m_WrappedHKDF.Dummy__ +var _ m_KdfCtr.Dummy__ +var _ m_AwsCryptographyPrimitivesOperations.Dummy__ +var _ m_AtomicPrimitives.Dummy__ +var _ m_ComAmazonawsDynamodbTypes.Dummy__ +var _ m_ComAmazonawsKmsTypes.Dummy__ +var _ m_AwsCryptographyKeyStoreTypes.Dummy__ +var _ m_AwsCryptographyMaterialProvidersTypes.Dummy__ +var _ m_Base64.Dummy__ +var _ m_AlgorithmSuites.Dummy__ +var _ m_Materials.Dummy__ +var _ m_Keyring.Dummy__ +var _ m_Relations.Dummy__ +var _ m_Seq_MergeSort.Dummy__ +var _ m__Math.Dummy__ +var _ m_Seq.Dummy__ +var _ m_Actions.Dummy__ +var _ m_CanonicalEncryptionContext.Dummy__ +var _ m_MaterialWrapping.Dummy__ +var _ m_IntermediateKeyWrapping.Dummy__ +var _ m_EdkWrapping.Dummy__ +var _ m_ErrorMessages.Dummy__ +var _ m_RawAESKeyring.Dummy__ +var _ m_AwsArnParsing.Dummy__ +var _ m_Constants.Dummy__ +var _ m_EcdhEdkWrapping.Dummy__ +var _ m_RawECDHKeyring.Dummy__ +var _ m_RawRSAKeyring.Dummy__ +var _ m_AwsKmsMrkMatchForDecrypt.Dummy__ +var _ m_AwsKmsUtils.Dummy__ +var _ m_AwsKmsKeyring.Dummy__ +var _ m_AwsKmsDiscoveryKeyring.Dummy__ +var _ m_AwsKmsEcdhKeyring.Dummy__ +var _ m_FileIO.Dummy__ +var _ m_LocalCMC.Dummy__ +var _ m_SynchronizedLocalCMC.Dummy__ +var _ m_StormTracker.Dummy__ +var _ m_StormTrackingCMC.Dummy__ +var _ m_CacheConstants.Dummy__ +var _ m_AwsKmsHierarchicalKeyring.Dummy__ +var _ m_AwsKmsMrkDiscoveryKeyring.Dummy__ +var _ m_AwsKmsMrkKeyring.Dummy__ +var _ m_AwsKmsRsaKeyring.Dummy__ +var _ m_MultiKeyring.Dummy__ +var _ m_AwsKmsMrkAreUnique.Dummy__ +var _ m_StrictMultiKeyring.Dummy__ +var _ m_Com_Amazonaws_Kms.Dummy__ +var _ m_Com_Amazonaws_Dynamodb.Dummy__ +var _ m_DiscoveryMultiKeyring.Dummy__ +var _ m_MrkAwareDiscoveryMultiKeyring.Dummy__ +var _ m_MrkAwareStrictMultiKeyring.Dummy__ +var _ m_CMM.Dummy__ +var _ m_Defaults.Dummy__ +var _ m_Commitment.Dummy__ +var _ m_DefaultCMM.Dummy__ +var _ m_DefaultClientSupplier.Dummy__ +var _ m_Utils.Dummy__ +var _ m_RequiredEncryptionContextCMM.Dummy__ +var _ m_AwsCryptographyMaterialProvidersOperations.Dummy__ +var _ m_MaterialProviders.Dummy__ +var _ m_KeyStoreErrorMessages.Dummy__ +var _ m_KmsArn.Dummy__ +var _ m_Structure.Dummy__ +var _ m_KMSKeystoreOperations.Dummy__ +var _ m_DDBKeystoreOperations.Dummy__ +var _ m_CreateKeys.Dummy__ +var _ m_CreateKeyStoreTable.Dummy__ +var _ m_GetKeys.Dummy__ +var _ m_AwsCryptographyKeyStoreOperations.Dummy__ +var _ m_KeyStore.Dummy__ +var _ m__Unicode.Dummy__ +var _ m_Functions.Dummy__ +var _ m_Utf8EncodingForm.Dummy__ +var _ m_Utf16EncodingForm.Dummy__ +var _ m_UnicodeStrings.Dummy__ +var _ m_GeneralInternals.Dummy__ +var _ m_MulInternalsNonlinear.Dummy__ +var _ m_MulInternals.Dummy__ +var _ m_Mul.Dummy__ +var _ m_ModInternalsNonlinear.Dummy__ +var _ m_DivInternalsNonlinear.Dummy__ +var _ m_ModInternals.Dummy__ +var _ m_DivInternals.Dummy__ +var _ m_DivMod.Dummy__ +var _ m_Power.Dummy__ +var _ m_Logarithm.Dummy__ +var _ m_StandardLibraryInterop.Dummy__ +var _ m_Streams.Dummy__ +var _ m_Sorting.Dummy__ +var _ m_HexStrings.Dummy__ +var _ m_GetOpt.Dummy__ +var _ m_FloatCompare.Dummy__ +var _ m_Base64Lemmas.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Dummy__ +var _ m_StructuredEncryptionUtil.Dummy__ +var _ m_Sets.Dummy__ +var _ m_StructuredEncryptionPaths.Dummy__ +var _ m_StructuredEncryptionHeader.Dummy__ +var _ m_StructuredEncryptionFooter.Dummy__ +var _ m_OptimizedMergeSort.Dummy__ +var _ m_SortCanon.Dummy__ +var _ m_Canonize.Dummy__ +var _ m_StructuredEncryptionCrypt.Dummy__ +var _ m__Maps.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations.Dummy__ +var _ m_StructuredEncryption.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Dummy__ +var _ m_DynamoDbEncryptionUtil.Dummy__ +var _ m_DynamoDbNormalizeNumber.Dummy__ + +type Dummy__ struct{} + +// Definition of class Default__ +type Default__ struct { + dummy byte +} + +func New_Default___() *Default__ { + _this := Default__{} + + return &_this +} + +type CompanionStruct_Default___ struct { +} + +var Companion_Default___ = CompanionStruct_Default___{} + +func (_this *Default__) Equals(other *Default__) bool { + return _this == other +} + +func (_this *Default__) EqualsGeneric(x interface{}) bool { + other, ok := x.(*Default__) + return ok && _this.Equals(other) +} + +func (*Default__) String() string { + return "DynamoToStruct.Default__" +} +func (_this *Default__) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = &Default__{} + +func (_static *CompanionStruct_Default___) ItemToStructured2(item _dafny.Map, actions _dafny.Map) m_Wrappers.Result { + var ret m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(_dafny.EmptyMap) + _ = ret + var _0_attrNames _dafny.Sequence + _ = _0_attrNames + var _out0 _dafny.Sequence + _ = _out0 + _out0 = m_SortedSets.SetToSequence((item).Keys()) + _0_attrNames = _out0 + var _1_m *m_DafnyLibraries.MutableMap + _ = _1_m + var _nw0 *m_DafnyLibraries.MutableMap = m_DafnyLibraries.New_MutableMap_() + _ = _nw0 + _1_m = _nw0 + var _hi0 uint64 = uint64((_0_attrNames).Cardinality()) + _ = _hi0 + for _2_i := uint64(0); _2_i < _hi0; _2_i++ { + var _3_k _dafny.Sequence + _ = _3_k + _3_k = (_0_attrNames).Select(uint32(_2_i)).(_dafny.Sequence) + if ((!(actions).Contains(_3_k)) || (!((actions).Get(_3_k).(m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.CryptoAction)).Equals(m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Companion_CryptoAction_.Create_DO__NOTHING_()))) || (_dafny.Companion_Sequence_.IsPrefixOf(m_DynamoDbEncryptionUtil.Companion_Default___.ReservedPrefix(), _3_k)) { + var _4_val m_Wrappers.Result + _ = _4_val + _4_val = Companion_Default___.AttrToStructured((item).Get(_3_k).(m_ComAmazonawsDynamodbTypes.AttributeValue)) + if (_4_val).Is_Failure() { + var _5_result m_Wrappers.Result + _ = _5_result + _5_result = m_Wrappers.Companion_Result_.Create_Failure_(m_DynamoDbEncryptionUtil.Companion_Default___.E((_4_val).Dtor_error().(_dafny.Sequence))) + ret = _5_result + return ret + } + (_1_m).Put(_3_k, (_4_val).Dtor_value().(m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.StructuredDataTerminal)) + } + } + var _6_result m_Wrappers.Result + _ = _6_result + _6_result = m_Wrappers.Companion_Result_.Create_Success_((_1_m).Content()) + ret = _6_result + return ret + return ret +} +func (_static *CompanionStruct_Default___) StructuredToItemEncrypt(s _dafny.Map, orig _dafny.Map, actions _dafny.Map) m_Wrappers.Result { + var ret m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(_dafny.EmptyMap) + _ = ret + var _0_attrNames _dafny.Sequence + _ = _0_attrNames + var _out0 _dafny.Sequence + _ = _out0 + _out0 = m_SortedSets.SetToSequence((orig).Keys()) + _0_attrNames = _out0 + var _1_m *m_DafnyLibraries.MutableMap + _ = _1_m + var _nw0 *m_DafnyLibraries.MutableMap = m_DafnyLibraries.New_MutableMap_() + _ = _nw0 + _1_m = _nw0 + var _hi0 uint64 = uint64((_0_attrNames).Cardinality()) + _ = _hi0 + for _2_i := uint64(0); _2_i < _hi0; _2_i++ { + var _3_k _dafny.Sequence + _ = _3_k + _3_k = (_0_attrNames).Select(uint32(_2_i)).(_dafny.Sequence) + if !(_dafny.Companion_Sequence_.IsPrefixOf(m_DynamoDbEncryptionUtil.Companion_Default___.ReservedPrefix(), _3_k)) { + if (((s).Contains(_3_k)) && ((actions).Contains(_3_k))) && (((actions).Get(_3_k).(m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.CryptoAction)).Equals(m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Companion_CryptoAction_.Create_ENCRYPT__AND__SIGN_())) { + var _4_val m_Wrappers.Result + _ = _4_val + _4_val = Companion_Default___.StructuredToAttr((s).Get(_3_k).(m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.StructuredDataTerminal)) + if (_4_val).Is_Failure() { + var _5_result m_Wrappers.Result + _ = _5_result + _5_result = m_Wrappers.Companion_Result_.Create_Failure_(m_DynamoDbEncryptionUtil.Companion_Default___.E((_4_val).Dtor_error().(_dafny.Sequence))) + ret = _5_result + return ret + } + (_1_m).Put(_3_k, (_4_val).Dtor_value().(m_ComAmazonawsDynamodbTypes.AttributeValue)) + } else { + (_1_m).Put(_3_k, (orig).Get(_3_k).(m_ComAmazonawsDynamodbTypes.AttributeValue)) + } + } + } + var _out1 _dafny.Sequence + _ = _out1 + _out1 = m_SortedSets.SetToSequence((s).Keys()) + _0_attrNames = _out1 + var _hi1 uint64 = uint64((_0_attrNames).Cardinality()) + _ = _hi1 + for _6_i := uint64(0); _6_i < _hi1; _6_i++ { + var _7_k _dafny.Sequence + _ = _7_k + _7_k = (_0_attrNames).Select(uint32(_6_i)).(_dafny.Sequence) + if !(orig).Contains(_7_k) { + var _8_val m_Wrappers.Result + _ = _8_val + _8_val = Companion_Default___.StructuredToAttr((s).Get(_7_k).(m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.StructuredDataTerminal)) + if (_8_val).Is_Failure() { + var _9_result m_Wrappers.Result + _ = _9_result + _9_result = m_Wrappers.Companion_Result_.Create_Failure_(m_DynamoDbEncryptionUtil.Companion_Default___.E((_8_val).Dtor_error().(_dafny.Sequence))) + ret = _9_result + return ret + } + (_1_m).Put(_7_k, (_8_val).Dtor_value().(m_ComAmazonawsDynamodbTypes.AttributeValue)) + } + } + var _10_result m_Wrappers.Result + _ = _10_result + _10_result = m_Wrappers.Companion_Result_.Create_Success_((_1_m).Content()) + ret = _10_result + return ret + return ret +} +func (_static *CompanionStruct_Default___) StructuredToItemDecrypt(s _dafny.Map, orig _dafny.Map, actions _dafny.Map) m_Wrappers.Result { + var ret m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(_dafny.EmptyMap) + _ = ret + var _0_attrNames _dafny.Sequence + _ = _0_attrNames + var _out0 _dafny.Sequence + _ = _out0 + _out0 = m_SortedSets.SetToSequence((orig).Keys()) + _0_attrNames = _out0 + var _1_m *m_DafnyLibraries.MutableMap + _ = _1_m + var _nw0 *m_DafnyLibraries.MutableMap = m_DafnyLibraries.New_MutableMap_() + _ = _nw0 + _1_m = _nw0 + var _hi0 uint64 = uint64((_0_attrNames).Cardinality()) + _ = _hi0 + for _2_i := uint64(0); _2_i < _hi0; _2_i++ { + var _3_k _dafny.Sequence + _ = _3_k + _3_k = (_0_attrNames).Select(uint32(_2_i)).(_dafny.Sequence) + if !(_dafny.Companion_Sequence_.IsPrefixOf(m_DynamoDbEncryptionUtil.Companion_Default___.ReservedPrefix(), _3_k)) { + if (((s).Contains(_3_k)) && ((actions).Contains(_3_k))) && (((actions).Get(_3_k).(m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.CryptoAction)).Equals(m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Companion_CryptoAction_.Create_ENCRYPT__AND__SIGN_())) { + var _4_val m_Wrappers.Result + _ = _4_val + _4_val = Companion_Default___.StructuredToAttr((s).Get(_3_k).(m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.StructuredDataTerminal)) + if (_4_val).Is_Failure() { + var _5_result m_Wrappers.Result + _ = _5_result + _5_result = m_Wrappers.Companion_Result_.Create_Failure_(m_DynamoDbEncryptionUtil.Companion_Default___.E((_4_val).Dtor_error().(_dafny.Sequence))) + ret = _5_result + return ret + } + (_1_m).Put(_3_k, (_4_val).Dtor_value().(m_ComAmazonawsDynamodbTypes.AttributeValue)) + } else { + (_1_m).Put(_3_k, (orig).Get(_3_k).(m_ComAmazonawsDynamodbTypes.AttributeValue)) + } + } + } + var _6_result m_Wrappers.Result + _ = _6_result + _6_result = m_Wrappers.Companion_Result_.Create_Success_((_1_m).Content()) + ret = _6_result + return ret + return ret +} +func (_static *CompanionStruct_Default___) ItemToStructured(item _dafny.Map) m_Wrappers.Result { + var _0_structuredMap _dafny.Map = func() _dafny.Map { + var _coll0 = _dafny.NewMapBuilder() + _ = _coll0 + for _iter11 := _dafny.Iterate((item).Keys().Elements()); ; { + _compr_0, _ok11 := _iter11() + if !_ok11 { + break + } + var _1_k _dafny.Sequence + _1_k = interface{}(_compr_0).(_dafny.Sequence) + if m_ComAmazonawsDynamodbTypes.Companion_AttributeName_.Is_(_1_k) { + if (item).Contains(_1_k) { + _coll0.Add(_1_k, Companion_Default___.AttrToStructured((item).Get(_1_k).(m_ComAmazonawsDynamodbTypes.AttributeValue))) + } + } + } + return _coll0.ToMap() + }() + _ = _0_structuredMap + return Companion_Default___.MapError(Companion_Default___.SimplifyMapValue(_0_structuredMap)) +} +func (_static *CompanionStruct_Default___) StructuredToItem(s _dafny.Map) m_Wrappers.Result { + if _dafny.Quantifier((s).Keys().Elements(), true, func(_forall_var_0 _dafny.Sequence) bool { + var _0_k _dafny.Sequence + _0_k = interface{}(_forall_var_0).(_dafny.Sequence) + return !((s).Contains(_0_k)) || (m_ComAmazonawsDynamodbTypes.Companion_Default___.IsValid__AttributeName(_0_k)) + }) { + var _1_structuredData _dafny.Map = func() _dafny.Map { + var _coll0 = _dafny.NewMapBuilder() + _ = _coll0 + for _iter12 := _dafny.Iterate((s).Keys().Elements()); ; { + _compr_0, _ok12 := _iter12() + if !_ok12 { + break + } + var _2_k _dafny.Sequence + _2_k = interface{}(_compr_0).(_dafny.Sequence) + if m_ComAmazonawsDynamodbTypes.Companion_AttributeName_.Is_(_2_k) { + if (s).Contains(_2_k) { + _coll0.Add(_2_k, Companion_Default___.StructuredToAttr((s).Get(_2_k).(m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.StructuredDataTerminal))) + } + } + } + return _coll0.ToMap() + }() + _ = _1_structuredData + return Companion_Default___.MapError(Companion_Default___.SimplifyMapValue(_1_structuredData)) + } else { + var _3_badNames _dafny.Set = func() _dafny.Set { + var _coll1 = _dafny.NewBuilder() + _ = _coll1 + for _iter13 := _dafny.Iterate((s).Keys().Elements()); ; { + _compr_1, _ok13 := _iter13() + if !_ok13 { + break + } + var _4_k _dafny.Sequence + _4_k = interface{}(_compr_1).(_dafny.Sequence) + if ((s).Contains(_4_k)) && (!(m_ComAmazonawsDynamodbTypes.Companion_Default___.IsValid__AttributeName(_4_k))) { + _coll1.Add(_4_k) + } + } + return _coll1.ToSet() + }() + _ = _3_badNames + var _5_orderedAttrNames _dafny.Sequence = m_SortedSets.SetToOrderedSequence2(_3_badNames, func(coer44 func(_dafny.Char, _dafny.Char) bool) func(interface{}, interface{}) bool { + return func(arg60 interface{}, arg61 interface{}) bool { + return coer44(arg60.(_dafny.Char), arg61.(_dafny.Char)) + } + }(Companion_Default___.CharLess)) + _ = _5_orderedAttrNames + var _6_attrNameList _dafny.Sequence = m_StandardLibrary.Companion_Default___.Join(_5_orderedAttrNames, _dafny.SeqOfString(",")) + _ = _6_attrNameList + return Companion_Default___.MakeError(_dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("Not valid attribute names : "), _6_attrNameList)) + } +} +func (_static *CompanionStruct_Default___) BigEndianPosToU32(x _dafny.Sequence, pos uint64) m_Wrappers.Result { + if (uint64((x).Cardinality())) < (m_StandardLibrary_MemoryMath.Companion_Default___.Add(pos, Companion_Default___.LENGTH__LEN64())) { + return m_Wrappers.Companion_Result_.Create_Failure_(_dafny.SeqOfString("Length of 4-byte integer was less than 4")) + } else { + return m_Wrappers.Companion_Result_.Create_Success_(m_StandardLibrary_UInt.Companion_Default___.SeqPosToUInt32(x, pos)) + } +} +func (_static *CompanionStruct_Default___) BigEndianPosToU32As64(x _dafny.Sequence, pos uint64) m_Wrappers.Result { + if (uint64((x).Cardinality())) < (m_StandardLibrary_MemoryMath.Companion_Default___.Add(pos, Companion_Default___.LENGTH__LEN64())) { + return m_Wrappers.Companion_Result_.Create_Failure_(_dafny.SeqOfString("Length of 4-byte integer was less than 4")) + } else { + return m_Wrappers.Companion_Result_.Create_Success_(uint64(m_StandardLibrary_UInt.Companion_Default___.SeqPosToUInt32(x, pos))) + } +} +func (_static *CompanionStruct_Default___) MakeError(s _dafny.Sequence) m_Wrappers.Result { + return m_Wrappers.Companion_Result_.Create_Failure_(m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Companion_Error_.Create_DynamoDbEncryptionException_(s)) +} +func (_static *CompanionStruct_Default___) MapError(r m_Wrappers.Result) m_Wrappers.Result { + if (r).Is_Success() { + return m_Wrappers.Companion_Result_.Create_Success_((r).Dtor_value()) + } else { + return Companion_Default___.MakeError((r).Dtor_error().(_dafny.Sequence)) + } +} +func (_static *CompanionStruct_Default___) TopLevelAttributeToBytes(a m_ComAmazonawsDynamodbTypes.AttributeValue) m_Wrappers.Result { + return Companion_Default___.AttrToBytes(a, false, uint64(1)) +} +func (_static *CompanionStruct_Default___) AttrToStructured(item m_ComAmazonawsDynamodbTypes.AttributeValue) m_Wrappers.Result { + var _0_valueOrError0 m_Wrappers.Result = Companion_Default___.TopLevelAttributeToBytes(item) + _ = _0_valueOrError0 + if (_0_valueOrError0).IsFailure() { + return (_0_valueOrError0).PropagateFailure() + } else { + var _1_body _dafny.Sequence = (_0_valueOrError0).Extract().(_dafny.Sequence) + _ = _1_body + return m_Wrappers.Companion_Result_.Create_Success_(m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Companion_StructuredDataTerminal_.Create_StructuredDataTerminal_(_1_body, Companion_Default___.AttrToTypeId(item))) + } +} +func (_static *CompanionStruct_Default___) StructuredToAttr(s m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.StructuredDataTerminal) m_Wrappers.Result { + var _0_valueOrError0 m_Wrappers.Outcome = m_Wrappers.Companion_Default___.Need((uint64(((s).Dtor_typeId()).Cardinality())) == (Companion_Default___.TYPEID__LEN64()), _dafny.SeqOfString("Type ID must be two bytes")) + _ = _0_valueOrError0 + if (_0_valueOrError0).IsFailure() { + return (_0_valueOrError0).PropagateFailure() + } else { + var _1_valueOrError1 m_Wrappers.Result = Companion_Default___.BytesToAttr((s).Dtor_value(), (s).Dtor_typeId(), m_Wrappers.Companion_Option_.Create_Some_(uint64(((s).Dtor_value()).Cardinality())), uint64(1), uint64(0)) + _ = _1_valueOrError1 + if (_1_valueOrError1).IsFailure() { + return (_1_valueOrError1).PropagateFailure() + } else { + var _2_attrValueAndLength AttrValueAndLength = (_1_valueOrError1).Extract().(AttrValueAndLength) + _ = _2_attrValueAndLength + if ((_2_attrValueAndLength).Dtor_len()) != (uint64(((s).Dtor_value()).Cardinality())) /* dircomp */ { + return m_Wrappers.Companion_Result_.Create_Failure_(_dafny.SeqOfString("Mismatch between length of encoded data and length of data")) + } else { + return m_Wrappers.Companion_Result_.Create_Success_((_2_attrValueAndLength).Dtor_val()) + } + } + } +} +func (_static *CompanionStruct_Default___) AttrToTypeId(a m_ComAmazonawsDynamodbTypes.AttributeValue) _dafny.Sequence { + var _source0 m_ComAmazonawsDynamodbTypes.AttributeValue = a + _ = _source0 + { + if _source0.Is_S() { + var _0_s _dafny.Sequence = _source0.Get_().(m_ComAmazonawsDynamodbTypes.AttributeValue_S).S + _ = _0_s + return m_StructuredEncryptionUtil.Companion_Default___.STRING() + } + } + { + if _source0.Is_N() { + var _1_n _dafny.Sequence = _source0.Get_().(m_ComAmazonawsDynamodbTypes.AttributeValue_N).N + _ = _1_n + return m_StructuredEncryptionUtil.Companion_Default___.NUMBER() + } + } + { + if _source0.Is_B() { + var _2_b _dafny.Sequence = _source0.Get_().(m_ComAmazonawsDynamodbTypes.AttributeValue_B).B + _ = _2_b + return m_StructuredEncryptionUtil.Companion_Default___.BINARY() + } + } + { + if _source0.Is_SS() { + var _3_ss _dafny.Sequence = _source0.Get_().(m_ComAmazonawsDynamodbTypes.AttributeValue_SS).SS + _ = _3_ss + return m_StructuredEncryptionUtil.Companion_Default___.STRING__SET() + } + } + { + if _source0.Is_NS() { + var _4_ns _dafny.Sequence = _source0.Get_().(m_ComAmazonawsDynamodbTypes.AttributeValue_NS).NS + _ = _4_ns + return m_StructuredEncryptionUtil.Companion_Default___.NUMBER__SET() + } + } + { + if _source0.Is_BS() { + var _5_bs _dafny.Sequence = _source0.Get_().(m_ComAmazonawsDynamodbTypes.AttributeValue_BS).BS + _ = _5_bs + return m_StructuredEncryptionUtil.Companion_Default___.BINARY__SET() + } + } + { + if _source0.Is_M() { + var _6_m _dafny.Map = _source0.Get_().(m_ComAmazonawsDynamodbTypes.AttributeValue_M).M + _ = _6_m + return m_StructuredEncryptionUtil.Companion_Default___.MAP() + } + } + { + if _source0.Is_L() { + var _7_l _dafny.Sequence = _source0.Get_().(m_ComAmazonawsDynamodbTypes.AttributeValue_L).L + _ = _7_l + return m_StructuredEncryptionUtil.Companion_Default___.LIST() + } + } + { + if _source0.Is_NULL() { + var _8_n bool = _source0.Get_().(m_ComAmazonawsDynamodbTypes.AttributeValue_NULL).NULL + _ = _8_n + return m_StructuredEncryptionUtil.Companion_Default___.NULL() + } + } + { + var _9_b bool = _source0.Get_().(m_ComAmazonawsDynamodbTypes.AttributeValue_BOOL).BOOL + _ = _9_b + return m_StructuredEncryptionUtil.Companion_Default___.BOOLEAN() + } +} +func (_static *CompanionStruct_Default___) CharLess(x _dafny.Char, y _dafny.Char) bool { + return (x) < (y) +} +func (_static *CompanionStruct_Default___) AttrToBytes(a m_ComAmazonawsDynamodbTypes.AttributeValue, prefix bool, depth uint64) m_Wrappers.Result { + var _0_valueOrError0 m_Wrappers.Outcome = m_Wrappers.Companion_Default___.Need((depth) <= (m_DynamoDbEncryptionUtil.Companion_Default___.MAX__STRUCTURE__DEPTH()), _dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("Depth of attribute structure to serialize exceeds limit of "), m_DynamoDbEncryptionUtil.Companion_Default___.MAX__STRUCTURE__DEPTH__STR())) + _ = _0_valueOrError0 + if (_0_valueOrError0).IsFailure() { + return (_0_valueOrError0).PropagateFailure() + } else { + var _1_valueOrError1 m_Wrappers.Result = func() m_Wrappers.Result { + var _source0 m_ComAmazonawsDynamodbTypes.AttributeValue = a + _ = _source0 + { + if _source0.Is_S() { + var _2_s _dafny.Sequence = _source0.Get_().(m_ComAmazonawsDynamodbTypes.AttributeValue_S).S + _ = _2_s + return m_UTF8.Encode(_2_s) + } + } + { + if _source0.Is_N() { + var _3_n _dafny.Sequence = _source0.Get_().(m_ComAmazonawsDynamodbTypes.AttributeValue_N).N + _ = _3_n + var _4_valueOrError2 m_Wrappers.Result = m_DynamoDbNormalizeNumber.Companion_Default___.NormalizeNumber(_3_n) + _ = _4_valueOrError2 + if (_4_valueOrError2).IsFailure() { + return (_4_valueOrError2).PropagateFailure() + } else { + var _5_nn _dafny.Sequence = (_4_valueOrError2).Extract().(_dafny.Sequence) + _ = _5_nn + return m_UTF8.Encode(_5_nn) + } + } + } + { + if _source0.Is_B() { + var _6_b _dafny.Sequence = _source0.Get_().(m_ComAmazonawsDynamodbTypes.AttributeValue_B).B + _ = _6_b + return m_Wrappers.Companion_Result_.Create_Success_(_6_b) + } + } + { + if _source0.Is_SS() { + var _7_ss _dafny.Sequence = _source0.Get_().(m_ComAmazonawsDynamodbTypes.AttributeValue_SS).SS + _ = _7_ss + return Companion_Default___.StringSetAttrToBytes(_7_ss) + } + } + { + if _source0.Is_NS() { + var _8_ns _dafny.Sequence = _source0.Get_().(m_ComAmazonawsDynamodbTypes.AttributeValue_NS).NS + _ = _8_ns + return Companion_Default___.NumberSetAttrToBytes(_8_ns) + } + } + { + if _source0.Is_BS() { + var _9_bs _dafny.Sequence = _source0.Get_().(m_ComAmazonawsDynamodbTypes.AttributeValue_BS).BS + _ = _9_bs + return Companion_Default___.BinarySetAttrToBytes(_9_bs) + } + } + { + if _source0.Is_M() { + var _10_m _dafny.Map = _source0.Get_().(m_ComAmazonawsDynamodbTypes.AttributeValue_M).M + _ = _10_m + return Companion_Default___.MapAttrToBytes(a, _10_m, depth) + } + } + { + if _source0.Is_L() { + var _11_l _dafny.Sequence = _source0.Get_().(m_ComAmazonawsDynamodbTypes.AttributeValue_L).L + _ = _11_l + return Companion_Default___.ListAttrToBytes(_11_l, depth) + } + } + { + if _source0.Is_NULL() { + var _12_n bool = _source0.Get_().(m_ComAmazonawsDynamodbTypes.AttributeValue_NULL).NULL + _ = _12_n + return m_Wrappers.Companion_Result_.Create_Success_(_dafny.SeqOf()) + } + } + { + var _13_b bool = _source0.Get_().(m_ComAmazonawsDynamodbTypes.AttributeValue_BOOL).BOOL + _ = _13_b + return m_Wrappers.Companion_Result_.Create_Success_(_dafny.SeqOf(Companion_Default___.BoolToUint8(_13_b))) + } + }() + _ = _1_valueOrError1 + if (_1_valueOrError1).IsFailure() { + return (_1_valueOrError1).PropagateFailure() + } else { + var _14_baseBytes _dafny.Sequence = (_1_valueOrError1).Extract().(_dafny.Sequence) + _ = _14_baseBytes + if prefix { + var _15_valueOrError3 m_Wrappers.Result = Companion_Default___.U32ToBigEndian64(uint64((_14_baseBytes).Cardinality())) + _ = _15_valueOrError3 + if (_15_valueOrError3).IsFailure() { + return (_15_valueOrError3).PropagateFailure() + } else { + var _16_len _dafny.Sequence = (_15_valueOrError3).Extract().(_dafny.Sequence) + _ = _16_len + return m_Wrappers.Companion_Result_.Create_Success_(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(Companion_Default___.AttrToTypeId(a), _16_len), _14_baseBytes)) + } + } else { + return m_Wrappers.Companion_Result_.Create_Success_(_14_baseBytes) + } + } + } +} +func (_static *CompanionStruct_Default___) StringSetAttrToBytes(ss _dafny.Sequence) m_Wrappers.Result { + var _0_asSet _dafny.Set = m_Seq.Companion_Default___.ToSet(ss) + _ = _0_asSet + var _1_valueOrError0 m_Wrappers.Outcome = m_Wrappers.Companion_Default___.Need((uint64((_0_asSet).CardinalityInt())) == (uint64((ss).Cardinality())), _dafny.SeqOfString("String Set had duplicate values")) + _ = _1_valueOrError0 + if (_1_valueOrError0).IsFailure() { + return (_1_valueOrError0).PropagateFailure() + } else { + var _2_sortedList _dafny.Sequence = m_SortedSets.SetToOrderedSequence2(_0_asSet, func(coer45 func(_dafny.Char, _dafny.Char) bool) func(interface{}, interface{}) bool { + return func(arg62 interface{}, arg63 interface{}) bool { + return coer45(arg62.(_dafny.Char), arg63.(_dafny.Char)) + } + }(Companion_Default___.CharLess)) + _ = _2_sortedList + var _3_valueOrError1 m_Wrappers.Result = Companion_Default___.U32ToBigEndian64(uint64((_2_sortedList).Cardinality())) + _ = _3_valueOrError1 + if (_3_valueOrError1).IsFailure() { + return (_3_valueOrError1).PropagateFailure() + } else { + var _4_count _dafny.Sequence = (_3_valueOrError1).Extract().(_dafny.Sequence) + _ = _4_count + var _5_valueOrError2 m_Wrappers.Result = Companion_Default___.CollectString(_2_sortedList, uint64(0), _dafny.SeqOf()) + _ = _5_valueOrError2 + if (_5_valueOrError2).IsFailure() { + return (_5_valueOrError2).PropagateFailure() + } else { + var _6_body _dafny.Sequence = (_5_valueOrError2).Extract().(_dafny.Sequence) + _ = _6_body + return m_Wrappers.Companion_Result_.Create_Success_(_dafny.Companion_Sequence_.Concatenate(_4_count, _6_body)) + } + } + } +} +func (_static *CompanionStruct_Default___) NumberSetAttrToBytes(ns _dafny.Sequence) m_Wrappers.Result { + var _0_asSet _dafny.Set = m_Seq.Companion_Default___.ToSet(ns) + _ = _0_asSet + var _1_valueOrError0 m_Wrappers.Outcome = m_Wrappers.Companion_Default___.Need((uint64((_0_asSet).CardinalityInt())) == (uint64((ns).Cardinality())), _dafny.SeqOfString("Number Set had duplicate values")) + _ = _1_valueOrError0 + if (_1_valueOrError0).IsFailure() { + return (_1_valueOrError0).PropagateFailure() + } else { + var _2_valueOrError1 m_Wrappers.Result = m_StandardLibrary_Sequence.Companion_Default___.MapWithResult(func(coer46 func(_dafny.Sequence) m_Wrappers.Result) func(interface{}) m_Wrappers.Result { + return func(arg64 interface{}) m_Wrappers.Result { + return coer46(arg64.(_dafny.Sequence)) + } + }(func(_3_n _dafny.Sequence) m_Wrappers.Result { + return m_DynamoDbNormalizeNumber.Companion_Default___.NormalizeNumber(_3_n) + }), ns, uint64(0), _dafny.SeqOf()) + _ = _2_valueOrError1 + if (_2_valueOrError1).IsFailure() { + return (_2_valueOrError1).PropagateFailure() + } else { + var _4_normList _dafny.Sequence = (_2_valueOrError1).Extract().(_dafny.Sequence) + _ = _4_normList + var _5_asSet _dafny.Set = m_Seq.Companion_Default___.ToSet(_4_normList) + _ = _5_asSet + var _6_valueOrError2 m_Wrappers.Outcome = m_Wrappers.Companion_Default___.Need((uint64((_5_asSet).CardinalityInt())) == (uint64((_4_normList).Cardinality())), _dafny.SeqOfString("Number Set had duplicate values after normalization.")) + _ = _6_valueOrError2 + if (_6_valueOrError2).IsFailure() { + return (_6_valueOrError2).PropagateFailure() + } else { + var _7_sortedList _dafny.Sequence = m_SortedSets.SetToOrderedSequence2(_5_asSet, func(coer47 func(_dafny.Char, _dafny.Char) bool) func(interface{}, interface{}) bool { + return func(arg65 interface{}, arg66 interface{}) bool { + return coer47(arg65.(_dafny.Char), arg66.(_dafny.Char)) + } + }(Companion_Default___.CharLess)) + _ = _7_sortedList + var _8_valueOrError3 m_Wrappers.Result = Companion_Default___.U32ToBigEndian64(uint64((_7_sortedList).Cardinality())) + _ = _8_valueOrError3 + if (_8_valueOrError3).IsFailure() { + return (_8_valueOrError3).PropagateFailure() + } else { + var _9_count _dafny.Sequence = (_8_valueOrError3).Extract().(_dafny.Sequence) + _ = _9_count + var _10_valueOrError4 m_Wrappers.Result = Companion_Default___.CollectString(_7_sortedList, uint64(0), _dafny.SeqOf()) + _ = _10_valueOrError4 + if (_10_valueOrError4).IsFailure() { + return (_10_valueOrError4).PropagateFailure() + } else { + var _11_body _dafny.Sequence = (_10_valueOrError4).Extract().(_dafny.Sequence) + _ = _11_body + return m_Wrappers.Companion_Result_.Create_Success_(_dafny.Companion_Sequence_.Concatenate(_9_count, _11_body)) + } + } + } + } + } +} +func (_static *CompanionStruct_Default___) BinarySetAttrToBytes(bs _dafny.Sequence) m_Wrappers.Result { + var _0_asSet _dafny.Set = m_Seq.Companion_Default___.ToSet(bs) + _ = _0_asSet + var _1_valueOrError0 m_Wrappers.Outcome = m_Wrappers.Companion_Default___.Need((uint64((_0_asSet).CardinalityInt())) == (uint64((bs).Cardinality())), _dafny.SeqOfString("Binary Set had duplicate values")) + _ = _1_valueOrError0 + if (_1_valueOrError0).IsFailure() { + return (_1_valueOrError0).PropagateFailure() + } else { + var _2_sortedList _dafny.Sequence = m_SortedSets.SetToOrderedSequence2(_0_asSet, func(coer48 func(uint8, uint8) bool) func(interface{}, interface{}) bool { + return func(arg67 interface{}, arg68 interface{}) bool { + return coer48(arg67.(uint8), arg68.(uint8)) + } + }(m_DynamoDbEncryptionUtil.Companion_Default___.ByteLess)) + _ = _2_sortedList + var _3_valueOrError1 m_Wrappers.Result = Companion_Default___.U32ToBigEndian64(uint64((_2_sortedList).Cardinality())) + _ = _3_valueOrError1 + if (_3_valueOrError1).IsFailure() { + return (_3_valueOrError1).PropagateFailure() + } else { + var _4_count _dafny.Sequence = (_3_valueOrError1).Extract().(_dafny.Sequence) + _ = _4_count + var _5_valueOrError2 m_Wrappers.Result = Companion_Default___.CollectBinary(_2_sortedList, uint64(0), _dafny.SeqOf()) + _ = _5_valueOrError2 + if (_5_valueOrError2).IsFailure() { + return (_5_valueOrError2).PropagateFailure() + } else { + var _6_body _dafny.Sequence = (_5_valueOrError2).Extract().(_dafny.Sequence) + _ = _6_body + return m_Wrappers.Companion_Result_.Create_Success_(_dafny.Companion_Sequence_.Concatenate(_4_count, _6_body)) + } + } + } +} +func (_static *CompanionStruct_Default___) MapAttrToBytes(parent m_ComAmazonawsDynamodbTypes.AttributeValue, m _dafny.Map, depth uint64) m_Wrappers.Result { + var ret m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(_dafny.EmptySeq) + _ = ret + var _0_attrNames _dafny.Sequence + _ = _0_attrNames + _0_attrNames = m_SortedSets.SetToOrderedSequence2((m).Keys(), func(coer49 func(_dafny.Char, _dafny.Char) bool) func(interface{}, interface{}) bool { + return func(arg69 interface{}, arg70 interface{}) bool { + return coer49(arg69.(_dafny.Char), arg70.(_dafny.Char)) + } + }(Companion_Default___.CharLess)) + var _1_len uint64 + _ = _1_len + _1_len = uint64((_0_attrNames).Cardinality()) + var _2_valueOrError0 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(_dafny.EmptySeq) + _ = _2_valueOrError0 + _2_valueOrError0 = Companion_Default___.U32ToBigEndian64(_1_len) + if (_2_valueOrError0).IsFailure() { + ret = (_2_valueOrError0).PropagateFailure() + return ret + } + var _3_output _dafny.Sequence + _ = _3_output + _3_output = (_2_valueOrError0).Extract().(_dafny.Sequence) + var _hi0 uint64 = _1_len + _ = _hi0 + for _4_i := uint64(0); _4_i < _hi0; _4_i++ { + var _5_k _dafny.Sequence + _ = _5_k + _5_k = (_0_attrNames).Select(uint32(_4_i)).(_dafny.Sequence) + var _6_val m_Wrappers.Result + _ = _6_val + _6_val = Companion_Default___.AttrToBytes((m).Get(_5_k).(m_ComAmazonawsDynamodbTypes.AttributeValue), true, (depth)+(uint64(1))) + if (_6_val).Is_Failure() { + var _7_result m_Wrappers.Result + _ = _7_result + _7_result = m_Wrappers.Companion_Result_.Create_Failure_((_6_val).Dtor_error().(_dafny.Sequence)) + ret = _7_result + return ret + } + var _8_data m_Wrappers.Result + _ = _8_data + _8_data = Companion_Default___.SerializeMapItem(_5_k, (_6_val).Dtor_value().(_dafny.Sequence)) + if (_8_data).Is_Failure() { + var _9_result m_Wrappers.Result + _ = _9_result + _9_result = m_Wrappers.Companion_Result_.Create_Failure_((_8_data).Dtor_error().(_dafny.Sequence)) + ret = _9_result + return ret + } + _3_output = _dafny.Companion_Sequence_.Concatenate(_3_output, (_8_data).Dtor_value().(_dafny.Sequence)) + } + var _10_result m_Wrappers.Result + _ = _10_result + _10_result = m_Wrappers.Companion_Result_.Create_Success_(_3_output) + ret = _10_result + return ret + return ret +} +func (_static *CompanionStruct_Default___) ListAttrToBytes(l _dafny.Sequence, depth uint64) m_Wrappers.Result { + var _0_valueOrError0 m_Wrappers.Result = Companion_Default___.U32ToBigEndian64(uint64((l).Cardinality())) + _ = _0_valueOrError0 + if (_0_valueOrError0).IsFailure() { + return (_0_valueOrError0).PropagateFailure() + } else { + var _1_count _dafny.Sequence = (_0_valueOrError0).Extract().(_dafny.Sequence) + _ = _1_count + var _2_valueOrError1 m_Wrappers.Result = Companion_Default___.CollectList(l, depth, _dafny.SeqOf()) + _ = _2_valueOrError1 + if (_2_valueOrError1).IsFailure() { + return (_2_valueOrError1).PropagateFailure() + } else { + var _3_body _dafny.Sequence = (_2_valueOrError1).Extract().(_dafny.Sequence) + _ = _3_body + return m_Wrappers.Companion_Result_.Create_Success_(_dafny.Companion_Sequence_.Concatenate(_1_count, _3_body)) + } + } +} +func (_static *CompanionStruct_Default___) U32ToBigEndian64(x uint64) m_Wrappers.Result { + if (x) > (uint64(4294967295)) { + return m_Wrappers.Companion_Result_.Create_Failure_(_dafny.SeqOfString("Length was too big")) + } else { + return m_Wrappers.Companion_Result_.Create_Success_(m_StandardLibrary_UInt.Companion_Default___.UInt32ToSeq(uint32(x))) + } +} +func (_static *CompanionStruct_Default___) BigEndianToU32As32(x _dafny.Sequence) m_Wrappers.Result { + if (uint64((x).Cardinality())) < (Companion_Default___.LENGTH__LEN64()) { + return m_Wrappers.Companion_Result_.Create_Failure_(_dafny.SeqOfString("Length of 4-byte integer was less than 4")) + } else { + return m_Wrappers.Companion_Result_.Create_Success_(m_StandardLibrary_UInt.Companion_Default___.SeqToUInt32((x).Take(uint32(Companion_Default___.LENGTH__LEN64())))) + } +} +func (_static *CompanionStruct_Default___) BigEndianToU32As64(x _dafny.Sequence) m_Wrappers.Result { + if (uint64((x).Cardinality())) < (Companion_Default___.LENGTH__LEN64()) { + return m_Wrappers.Companion_Result_.Create_Failure_(_dafny.SeqOfString("Length of 4-byte integer was less than 4")) + } else { + return m_Wrappers.Companion_Result_.Create_Success_(uint64(m_StandardLibrary_UInt.Companion_Default___.SeqToUInt32((x).Take(uint32(Companion_Default___.LENGTH__LEN64()))))) + } +} +func (_static *CompanionStruct_Default___) EncodeString(s _dafny.Sequence) m_Wrappers.Result { + var _0_valueOrError0 m_Wrappers.Result = m_UTF8.Encode(s) + _ = _0_valueOrError0 + if (_0_valueOrError0).IsFailure() { + return (_0_valueOrError0).PropagateFailure() + } else { + var _1_val _dafny.Sequence = (_0_valueOrError0).Extract().(_dafny.Sequence) + _ = _1_val + var _2_valueOrError1 m_Wrappers.Result = Companion_Default___.U32ToBigEndian64(uint64((_1_val).Cardinality())) + _ = _2_valueOrError1 + if (_2_valueOrError1).IsFailure() { + return (_2_valueOrError1).PropagateFailure() + } else { + var _3_len _dafny.Sequence = (_2_valueOrError1).Extract().(_dafny.Sequence) + _ = _3_len + return m_Wrappers.Companion_Result_.Create_Success_(_dafny.Companion_Sequence_.Concatenate(_3_len, _1_val)) + } + } +} +func (_static *CompanionStruct_Default___) CollectString(setToSerialize _dafny.Sequence, pos uint64, serialized _dafny.Sequence) m_Wrappers.Result { + goto TAIL_CALL_START +TAIL_CALL_START: + if (uint64((setToSerialize).Cardinality())) == (pos) { + return m_Wrappers.Companion_Result_.Create_Success_(serialized) + } else { + var _0_valueOrError0 m_Wrappers.Result = Companion_Default___.EncodeString((setToSerialize).Select(uint32(pos)).(_dafny.Sequence)) + _ = _0_valueOrError0 + if (_0_valueOrError0).IsFailure() { + return (_0_valueOrError0).PropagateFailure() + } else { + var _1_entry _dafny.Sequence = (_0_valueOrError0).Extract().(_dafny.Sequence) + _ = _1_entry + var _in0 _dafny.Sequence = setToSerialize + _ = _in0 + var _in1 uint64 = (pos) + (uint64(1)) + _ = _in1 + var _in2 _dafny.Sequence = _dafny.Companion_Sequence_.Concatenate(serialized, _1_entry) + _ = _in2 + setToSerialize = _in0 + pos = _in1 + serialized = _in2 + goto TAIL_CALL_START + } + } +} +func (_static *CompanionStruct_Default___) SerializeBinaryValue(b _dafny.Sequence) m_Wrappers.Result { + var _0_valueOrError0 m_Wrappers.Result = Companion_Default___.U32ToBigEndian64(uint64((b).Cardinality())) + _ = _0_valueOrError0 + if (_0_valueOrError0).IsFailure() { + return (_0_valueOrError0).PropagateFailure() + } else { + var _1_len _dafny.Sequence = (_0_valueOrError0).Extract().(_dafny.Sequence) + _ = _1_len + return m_Wrappers.Companion_Result_.Create_Success_(_dafny.Companion_Sequence_.Concatenate(_1_len, b)) + } +} +func (_static *CompanionStruct_Default___) CollectBinary(setToSerialize _dafny.Sequence, pos uint64, serialized _dafny.Sequence) m_Wrappers.Result { + goto TAIL_CALL_START +TAIL_CALL_START: + if (uint64((setToSerialize).Cardinality())) == (pos) { + return m_Wrappers.Companion_Result_.Create_Success_(serialized) + } else { + var _0_valueOrError0 m_Wrappers.Result = Companion_Default___.SerializeBinaryValue((setToSerialize).Select(uint32(pos)).(_dafny.Sequence)) + _ = _0_valueOrError0 + if (_0_valueOrError0).IsFailure() { + return (_0_valueOrError0).PropagateFailure() + } else { + var _1_item _dafny.Sequence = (_0_valueOrError0).Extract().(_dafny.Sequence) + _ = _1_item + var _in0 _dafny.Sequence = setToSerialize + _ = _in0 + var _in1 uint64 = (pos) + (uint64(1)) + _ = _in1 + var _in2 _dafny.Sequence = _dafny.Companion_Sequence_.Concatenate(serialized, _1_item) + _ = _in2 + setToSerialize = _in0 + pos = _in1 + serialized = _in2 + goto TAIL_CALL_START + } + } +} +func (_static *CompanionStruct_Default___) CollectList(listToSerialize _dafny.Sequence, depth uint64, serialized _dafny.Sequence) m_Wrappers.Result { + var ret m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(_dafny.EmptySeq) + _ = ret + var _0_result _dafny.Sequence + _ = _0_result + _0_result = serialized + var _hi0 uint64 = uint64((listToSerialize).Cardinality()) + _ = _hi0 + for _1_i := uint64(0); _1_i < _hi0; _1_i++ { + var _2_val m_Wrappers.Result + _ = _2_val + _2_val = Companion_Default___.AttrToBytes((listToSerialize).Select(uint32(_1_i)).(m_ComAmazonawsDynamodbTypes.AttributeValue), true, (depth)+(uint64(1))) + if (_2_val).Is_Failure() { + ret = m_Wrappers.Companion_Result_.Create_Failure_((_2_val).Dtor_error().(_dafny.Sequence)) + return ret + } + _0_result = _dafny.Companion_Sequence_.Concatenate(_0_result, (_2_val).Dtor_value().(_dafny.Sequence)) + } + ret = m_Wrappers.Companion_Result_.Create_Success_(_0_result) + return ret +} +func (_static *CompanionStruct_Default___) SerializeMapItem(key _dafny.Sequence, value _dafny.Sequence) m_Wrappers.Result { + var _0_valueOrError0 m_Wrappers.Result = m_UTF8.Encode(key) + _ = _0_valueOrError0 + if (_0_valueOrError0).IsFailure() { + return (_0_valueOrError0).PropagateFailure() + } else { + var _1_name _dafny.Sequence = (_0_valueOrError0).Extract().(_dafny.Sequence) + _ = _1_name + var _2_valueOrError1 m_Wrappers.Result = Companion_Default___.U32ToBigEndian64(uint64((_1_name).Cardinality())) + _ = _2_valueOrError1 + if (_2_valueOrError1).IsFailure() { + return (_2_valueOrError1).PropagateFailure() + } else { + var _3_len _dafny.Sequence = (_2_valueOrError1).Extract().(_dafny.Sequence) + _ = _3_len + var _4_serialized _dafny.Sequence = _dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(m_StructuredEncryptionUtil.Companion_Default___.STRING(), _3_len), _1_name), value) + _ = _4_serialized + return m_Wrappers.Companion_Result_.Create_Success_(_4_serialized) + } + } +} +func (_static *CompanionStruct_Default___) CollectMap(mapToSerialize _dafny.Map, serialized _dafny.Sequence) m_Wrappers.Result { + var _0_keys _dafny.Sequence = m_SortedSets.SetToOrderedSequence2((mapToSerialize).Keys(), func(coer50 func(_dafny.Char, _dafny.Char) bool) func(interface{}, interface{}) bool { + return func(arg71 interface{}, arg72 interface{}) bool { + return coer50(arg71.(_dafny.Char), arg72.(_dafny.Char)) + } + }(Companion_Default___.CharLess)) + _ = _0_keys + return Companion_Default___.CollectOrderedMapSubset(_0_keys, mapToSerialize, uint64(0), serialized) +} +func (_static *CompanionStruct_Default___) CollectOrderedMapSubset(keys _dafny.Sequence, mapToSerialize _dafny.Map, pos uint64, serialized _dafny.Sequence) m_Wrappers.Result { + goto TAIL_CALL_START +TAIL_CALL_START: + if (uint64((keys).Cardinality())) == (pos) { + return m_Wrappers.Companion_Result_.Create_Success_(serialized) + } else { + var _0_valueOrError0 m_Wrappers.Result = Companion_Default___.SerializeMapItem((keys).Select(uint32(pos)).(_dafny.Sequence), (mapToSerialize).Get((keys).Select(uint32(pos)).(_dafny.Sequence)).(_dafny.Sequence)) + _ = _0_valueOrError0 + if (_0_valueOrError0).IsFailure() { + return (_0_valueOrError0).PropagateFailure() + } else { + var _1_data _dafny.Sequence = (_0_valueOrError0).Extract().(_dafny.Sequence) + _ = _1_data + var _in0 _dafny.Sequence = keys + _ = _in0 + var _in1 _dafny.Map = mapToSerialize + _ = _in1 + var _in2 uint64 = (pos) + (uint64(1)) + _ = _in2 + var _in3 _dafny.Sequence = _dafny.Companion_Sequence_.Concatenate(serialized, _1_data) + _ = _in3 + keys = _in0 + mapToSerialize = _in1 + pos = _in2 + serialized = _in3 + goto TAIL_CALL_START + } + } +} +func (_static *CompanionStruct_Default___) BoolToUint8(b bool) uint8 { + if b { + return uint8(1) + } else { + return uint8(0) + } +} +func (_static *CompanionStruct_Default___) IsUnique(s _dafny.Sequence) bool { + var _0_asSet _dafny.Set = m_Seq.Companion_Default___.ToSet(s) + _ = _0_asSet + if (uint64((_0_asSet).CardinalityInt())) == (uint64((s).Cardinality())) { + return true + } else { + return false + } +} +func (_static *CompanionStruct_Default___) DeserializeBinarySet(serialized _dafny.Sequence, remainingCount uint64, origSerializedSize uint64, resultSet AttrValueAndLength) m_Wrappers.Result { + goto TAIL_CALL_START +TAIL_CALL_START: + if (remainingCount) == (uint64(0)) { + var _0_valueOrError0 m_Wrappers.Outcome = m_Wrappers.Companion_Default___.Need(Companion_Default___.IsUnique(((resultSet).Dtor_val()).Dtor_BS()), _dafny.SeqOfString("Binary set values must not have duplicates")) + _ = _0_valueOrError0 + if (_0_valueOrError0).IsFailure() { + return (_0_valueOrError0).PropagateFailure() + } else { + return m_Wrappers.Companion_Result_.Create_Success_(resultSet) + } + } else if (uint64((serialized).Cardinality())) < (Companion_Default___.LENGTH__LEN64()) { + return m_Wrappers.Companion_Result_.Create_Failure_(_dafny.SeqOfString("Out of bytes reading Binary Set")) + } else { + var _1_valueOrError1 m_Wrappers.Result = Companion_Default___.BigEndianToU32As64(serialized) + _ = _1_valueOrError1 + if (_1_valueOrError1).IsFailure() { + return (_1_valueOrError1).PropagateFailure() + } else { + var _2_len uint64 = (_1_valueOrError1).Extract().(uint64) + _ = _2_len + var _3_serialized _dafny.Sequence = (serialized).Drop(uint32(Companion_Default___.LENGTH__LEN64())) + _ = _3_serialized + if (uint64((_3_serialized).Cardinality())) < (_2_len) { + return m_Wrappers.Companion_Result_.Create_Failure_(_dafny.SeqOfString("Binary Set Structured Data has too few bytes")) + } else { + var _4_nattr m_ComAmazonawsDynamodbTypes.AttributeValue = m_ComAmazonawsDynamodbTypes.Companion_AttributeValue_.Create_BS_(_dafny.Companion_Sequence_.Concatenate(((resultSet).Dtor_val()).Dtor_BS(), _dafny.SeqOf((_3_serialized).Take(uint32(_2_len))))) + _ = _4_nattr + var _in0 _dafny.Sequence = (_3_serialized).Drop(uint32(_2_len)) + _ = _in0 + var _in1 uint64 = (remainingCount) - (func() uint64 { return (uint64(1)) })() + _ = _in1 + var _in2 uint64 = origSerializedSize + _ = _in2 + var _in3 AttrValueAndLength = Companion_AttrValueAndLength_.Create_AttrValueAndLength_(_4_nattr, (((resultSet).Dtor_len())+(_2_len))+(Companion_Default___.LENGTH__LEN64())) + _ = _in3 + serialized = _in0 + remainingCount = _in1 + origSerializedSize = _in2 + resultSet = _in3 + goto TAIL_CALL_START + } + } + } +} +func (_static *CompanionStruct_Default___) DeserializeStringSet(serialized _dafny.Sequence, remainingCount uint64, origSerializedSize uint64, resultSet AttrValueAndLength) m_Wrappers.Result { + goto TAIL_CALL_START +TAIL_CALL_START: + if (remainingCount) == (uint64(0)) { + var _0_valueOrError0 m_Wrappers.Outcome = m_Wrappers.Companion_Default___.Need(Companion_Default___.IsUnique(((resultSet).Dtor_val()).Dtor_SS()), _dafny.SeqOfString("String set values must not have duplicates")) + _ = _0_valueOrError0 + if (_0_valueOrError0).IsFailure() { + return (_0_valueOrError0).PropagateFailure() + } else { + return m_Wrappers.Companion_Result_.Create_Success_(resultSet) + } + } else if (uint64((serialized).Cardinality())) < (Companion_Default___.LENGTH__LEN64()) { + return m_Wrappers.Companion_Result_.Create_Failure_(_dafny.SeqOfString("Out of bytes reading String Set")) + } else { + var _1_valueOrError1 m_Wrappers.Result = Companion_Default___.BigEndianToU32As64(serialized) + _ = _1_valueOrError1 + if (_1_valueOrError1).IsFailure() { + return (_1_valueOrError1).PropagateFailure() + } else { + var _2_len uint64 = (_1_valueOrError1).Extract().(uint64) + _ = _2_len + var _3_serialized _dafny.Sequence = (serialized).Drop(uint32(Companion_Default___.LENGTH__LEN64())) + _ = _3_serialized + if (uint64((_3_serialized).Cardinality())) < (_2_len) { + return m_Wrappers.Companion_Result_.Create_Failure_(_dafny.SeqOfString("String Set Structured Data has too few bytes")) + } else { + var _4_valueOrError2 m_Wrappers.Result = m_UTF8.Decode((_3_serialized).Take(uint32(_2_len))) + _ = _4_valueOrError2 + if (_4_valueOrError2).IsFailure() { + return (_4_valueOrError2).PropagateFailure() + } else { + var _5_nstring _dafny.Sequence = (_4_valueOrError2).Extract().(_dafny.Sequence) + _ = _5_nstring + var _6_nattr m_ComAmazonawsDynamodbTypes.AttributeValue = m_ComAmazonawsDynamodbTypes.Companion_AttributeValue_.Create_SS_(_dafny.Companion_Sequence_.Concatenate(((resultSet).Dtor_val()).Dtor_SS(), _dafny.SeqOf(_5_nstring))) + _ = _6_nattr + var _in0 _dafny.Sequence = (_3_serialized).Drop(uint32(_2_len)) + _ = _in0 + var _in1 uint64 = (remainingCount) - (func() uint64 { return (uint64(1)) })() + _ = _in1 + var _in2 uint64 = origSerializedSize + _ = _in2 + var _in3 AttrValueAndLength = Companion_AttrValueAndLength_.Create_AttrValueAndLength_(_6_nattr, (((resultSet).Dtor_len())+(_2_len))+(Companion_Default___.LENGTH__LEN64())) + _ = _in3 + serialized = _in0 + remainingCount = _in1 + origSerializedSize = _in2 + resultSet = _in3 + goto TAIL_CALL_START + } + } + } + } +} +func (_static *CompanionStruct_Default___) DeserializeNumberSet(serialized _dafny.Sequence, remainingCount uint64, origSerializedSize uint64, resultSet AttrValueAndLength) m_Wrappers.Result { + goto TAIL_CALL_START +TAIL_CALL_START: + if (remainingCount) == (uint64(0)) { + var _0_valueOrError0 m_Wrappers.Outcome = m_Wrappers.Companion_Default___.Need(Companion_Default___.IsUnique(((resultSet).Dtor_val()).Dtor_NS()), _dafny.SeqOfString("Number set values must not have duplicates")) + _ = _0_valueOrError0 + if (_0_valueOrError0).IsFailure() { + return (_0_valueOrError0).PropagateFailure() + } else { + return m_Wrappers.Companion_Result_.Create_Success_(resultSet) + } + } else if (uint64((serialized).Cardinality())) < (Companion_Default___.LENGTH__LEN64()) { + return m_Wrappers.Companion_Result_.Create_Failure_(_dafny.SeqOfString("Out of bytes reading String Set")) + } else { + var _1_valueOrError1 m_Wrappers.Result = Companion_Default___.BigEndianToU32As64(serialized) + _ = _1_valueOrError1 + if (_1_valueOrError1).IsFailure() { + return (_1_valueOrError1).PropagateFailure() + } else { + var _2_len uint64 = (_1_valueOrError1).Extract().(uint64) + _ = _2_len + var _3_serialized _dafny.Sequence = (serialized).Drop(uint32(Companion_Default___.LENGTH__LEN64())) + _ = _3_serialized + if (uint64((_3_serialized).Cardinality())) < (_2_len) { + return m_Wrappers.Companion_Result_.Create_Failure_(_dafny.SeqOfString("Number Set Structured Data has too few bytes")) + } else { + var _4_valueOrError2 m_Wrappers.Result = m_UTF8.Decode((_3_serialized).Take(uint32(_2_len))) + _ = _4_valueOrError2 + if (_4_valueOrError2).IsFailure() { + return (_4_valueOrError2).PropagateFailure() + } else { + var _5_nstring _dafny.Sequence = (_4_valueOrError2).Extract().(_dafny.Sequence) + _ = _5_nstring + var _6_nattr m_ComAmazonawsDynamodbTypes.AttributeValue = m_ComAmazonawsDynamodbTypes.Companion_AttributeValue_.Create_NS_(_dafny.Companion_Sequence_.Concatenate(((resultSet).Dtor_val()).Dtor_NS(), _dafny.SeqOf(_5_nstring))) + _ = _6_nattr + var _in0 _dafny.Sequence = (_3_serialized).Drop(uint32(_2_len)) + _ = _in0 + var _in1 uint64 = (remainingCount) - (func() uint64 { return (uint64(1)) })() + _ = _in1 + var _in2 uint64 = origSerializedSize + _ = _in2 + var _in3 AttrValueAndLength = Companion_AttrValueAndLength_.Create_AttrValueAndLength_(_6_nattr, (((resultSet).Dtor_len())+(_2_len))+(Companion_Default___.LENGTH__LEN64())) + _ = _in3 + serialized = _in0 + remainingCount = _in1 + origSerializedSize = _in2 + resultSet = _in3 + goto TAIL_CALL_START + } + } + } + } +} +func (_static *CompanionStruct_Default___) DeserializeListEntry(serialized _dafny.Sequence, pos uint64, depth uint64, resultList AttrValueAndLength) m_Wrappers.Result { + var _0_serialized__size uint64 = uint64((serialized).Cardinality()) + _ = _0_serialized__size + if ((_0_serialized__size) - (func() uint64 { return (pos) })()) < (Companion_Default___.PREFIX__LEN64()) { + return m_Wrappers.Companion_Result_.Create_Failure_(_dafny.SeqOfString("Out of bytes reading Type of List element")) + } else { + var _1_TerminalTypeId _dafny.Sequence = (serialized).Subsequence(uint32(pos), uint32((pos)+(uint64(2)))) + _ = _1_TerminalTypeId + var _2_valueOrError0 m_Wrappers.Result = Companion_Default___.BigEndianPosToU32As64(serialized, (pos)+(uint64(2))) + _ = _2_valueOrError0 + if (_2_valueOrError0).IsFailure() { + return (_2_valueOrError0).PropagateFailure() + } else { + var _3_len uint64 = (_2_valueOrError0).Extract().(uint64) + _ = _3_len + var _4_new__pos uint64 = (pos) + (Companion_Default___.PREFIX__LEN64()) + _ = _4_new__pos + if ((_0_serialized__size) - (func() uint64 { return (_4_new__pos) })()) < (_3_len) { + return m_Wrappers.Companion_Result_.Create_Failure_(_dafny.SeqOfString("Out of bytes reading Content of List element")) + } else { + var _5_valueOrError1 m_Wrappers.Result = Companion_Default___.BytesToAttr(serialized, _1_TerminalTypeId, m_Wrappers.Companion_Option_.Create_Some_(_3_len), (depth)+(uint64(1)), _4_new__pos) + _ = _5_valueOrError1 + if (_5_valueOrError1).IsFailure() { + return (_5_valueOrError1).PropagateFailure() + } else { + var _6_nval AttrValueAndLength = (_5_valueOrError1).Extract().(AttrValueAndLength) + _ = _6_nval + var _7_new__pos uint64 = m_StandardLibrary_MemoryMath.Companion_Default___.Add(_4_new__pos, (_6_nval).Dtor_len()) + _ = _7_new__pos + var _8_nattr m_ComAmazonawsDynamodbTypes.AttributeValue = m_ComAmazonawsDynamodbTypes.Companion_AttributeValue_.Create_L_(_dafny.Companion_Sequence_.Concatenate(((resultList).Dtor_val()).Dtor_L(), _dafny.SeqOf((_6_nval).Dtor_val()))) + _ = _8_nattr + var _9_nResultList AttrValueAndLength = Companion_AttrValueAndLength_.Create_AttrValueAndLength_(_8_nattr, m_StandardLibrary_MemoryMath.Companion_Default___.Add((resultList).Dtor_len(), (_7_new__pos)-(func() uint64 { return (pos) })())) + _ = _9_nResultList + return m_Wrappers.Companion_Result_.Create_Success_(_dafny.TupleOf(_9_nResultList, _7_new__pos)) + } + } + } + } +} +func (_static *CompanionStruct_Default___) DeserializeList(serialized _dafny.Sequence, pos uint64, remainingCount uint64, depth uint64, resultList AttrValueAndLength) m_Wrappers.Result { + var ret m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(Companion_AttrValueAndLength_.Default()) + _ = ret + var _0_npos uint64 + _ = _0_npos + _0_npos = pos + var _1_newResultList AttrValueAndLength + _ = _1_newResultList + _1_newResultList = resultList + var _hi0 uint64 = remainingCount + _ = _hi0 + for _2_i := uint64(0); _2_i < _hi0; _2_i++ { + var _3_test m_Wrappers.Result + _ = _3_test + _3_test = Companion_Default___.DeserializeListEntry(serialized, _0_npos, depth, _1_newResultList) + if (_3_test).Is_Failure() { + ret = m_Wrappers.Companion_Result_.Create_Failure_((_3_test).Dtor_error().(_dafny.Sequence)) + return ret + } + _1_newResultList = (*((_3_test).Dtor_value().(_dafny.Tuple)).IndexInt(0)).(AttrValueAndLength) + _0_npos = (*((_3_test).Dtor_value().(_dafny.Tuple)).IndexInt(1)).(uint64) + } + ret = m_Wrappers.Companion_Result_.Create_Success_(_1_newResultList) + return ret +} +func (_static *CompanionStruct_Default___) DeserializeMapEntry(serialized _dafny.Sequence, pos uint64, depth uint64, resultMap AttrValueAndLength) m_Wrappers.Result { + var _0_serialized__size uint64 = uint64((serialized).Cardinality()) + _ = _0_serialized__size + var _1_orig__pos uint64 = pos + _ = _1_orig__pos + var _2_valueOrError0 m_Wrappers.Outcome = m_Wrappers.Companion_Default___.Need((Companion_Default___.PREFIX__LEN64()) <= ((_0_serialized__size)-(func() uint64 { return (pos) })()), _dafny.SeqOfString("Out of bytes reading Map Key")) + _ = _2_valueOrError0 + if (_2_valueOrError0).IsFailure() { + return (_2_valueOrError0).PropagateFailure() + } else { + var _3_TerminalTypeId__key _dafny.Sequence = (serialized).Subsequence(uint32(pos), uint32((pos)+(Companion_Default___.TYPEID__LEN64()))) + _ = _3_TerminalTypeId__key + var _4_valueOrError1 m_Wrappers.Outcome = m_Wrappers.Companion_Default___.Need(_dafny.Companion_Sequence_.Equal(_3_TerminalTypeId__key, m_StructuredEncryptionUtil.Companion_Default___.STRING()), _dafny.SeqOfString("Key of Map is not String")) + _ = _4_valueOrError1 + if (_4_valueOrError1).IsFailure() { + return (_4_valueOrError1).PropagateFailure() + } else { + var _5_pos uint64 = (pos) + (Companion_Default___.TYPEID__LEN64()) + _ = _5_pos + var _6_valueOrError2 m_Wrappers.Result = Companion_Default___.BigEndianPosToU32As64(serialized, _5_pos) + _ = _6_valueOrError2 + if (_6_valueOrError2).IsFailure() { + return (_6_valueOrError2).PropagateFailure() + } else { + var _7_len uint64 = (_6_valueOrError2).Extract().(uint64) + _ = _7_len + var _8_pos uint64 = (_5_pos) + (Companion_Default___.LENGTH__LEN64()) + _ = _8_pos + var _9_valueOrError3 m_Wrappers.Outcome = m_Wrappers.Companion_Default___.Need((_7_len) <= ((_0_serialized__size)-(func() uint64 { return (_8_pos) })()), _dafny.SeqOfString("Key of Map of Structured Data has too few bytes")) + _ = _9_valueOrError3 + if (_9_valueOrError3).IsFailure() { + return (_9_valueOrError3).PropagateFailure() + } else { + var _10_valueOrError4 m_Wrappers.Result = m_UTF8.Decode((serialized).Subsequence(uint32(_8_pos), uint32((_8_pos)+(_7_len)))) + _ = _10_valueOrError4 + if (_10_valueOrError4).IsFailure() { + return (_10_valueOrError4).PropagateFailure() + } else { + var _11_key _dafny.Sequence = (_10_valueOrError4).Extract().(_dafny.Sequence) + _ = _11_key + var _12_pos uint64 = (_8_pos) + (_7_len) + _ = _12_pos + var _13_valueOrError5 m_Wrappers.Outcome = m_Wrappers.Companion_Default___.Need((uint64(2)) <= ((_0_serialized__size)-(func() uint64 { return (_12_pos) })()), _dafny.SeqOfString("Out of bytes reading Map Value")) + _ = _13_valueOrError5 + if (_13_valueOrError5).IsFailure() { + return (_13_valueOrError5).PropagateFailure() + } else { + var _14_valueOrError6 m_Wrappers.Outcome = m_Wrappers.Companion_Default___.Need(m_ComAmazonawsDynamodbTypes.Companion_Default___.IsValid__AttributeName(_11_key), _dafny.SeqOfString("Key is not valid AttributeName")) + _ = _14_valueOrError6 + if (_14_valueOrError6).IsFailure() { + return (_14_valueOrError6).PropagateFailure() + } else { + var _15_TerminalTypeId__value _dafny.Sequence = (serialized).Subsequence(uint32(_12_pos), uint32((_12_pos)+(Companion_Default___.TYPEID__LEN64()))) + _ = _15_TerminalTypeId__value + var _16_pos uint64 = (_12_pos) + (Companion_Default___.TYPEID__LEN64()) + _ = _16_pos + var _17_valueOrError7 m_Wrappers.Result = Companion_Default___.BytesToAttr(serialized, _15_TerminalTypeId__value, m_Wrappers.Companion_Option_.Create_None_(), (depth)+(uint64(1)), _16_pos) + _ = _17_valueOrError7 + if (_17_valueOrError7).IsFailure() { + return (_17_valueOrError7).PropagateFailure() + } else { + var _18_nval AttrValueAndLength = (_17_valueOrError7).Extract().(AttrValueAndLength) + _ = _18_nval + var _19_pos uint64 = m_StandardLibrary_MemoryMath.Companion_Default___.Add(_16_pos, (_18_nval).Dtor_len()) + _ = _19_pos + var _20_valueOrError8 m_Wrappers.Outcome = m_Wrappers.Companion_Default___.Need(!(((resultMap).Dtor_val()).Dtor_M()).Contains(_11_key), _dafny.SeqOfString("Duplicate key in map.")) + _ = _20_valueOrError8 + if (_20_valueOrError8).IsFailure() { + return (_20_valueOrError8).PropagateFailure() + } else { + var _21_nattr m_ComAmazonawsDynamodbTypes.AttributeValue = m_ComAmazonawsDynamodbTypes.Companion_AttributeValue_.Create_M_((((resultMap).Dtor_val()).Dtor_M()).Update(_11_key, (_18_nval).Dtor_val())) + _ = _21_nattr + var _22_newResultMap AttrValueAndLength = Companion_AttrValueAndLength_.Create_AttrValueAndLength_(_21_nattr, m_StandardLibrary_MemoryMath.Companion_Default___.Add((resultMap).Dtor_len(), (_19_pos)-(func() uint64 { return (_1_orig__pos) })())) + _ = _22_newResultMap + return m_Wrappers.Companion_Result_.Create_Success_(_dafny.TupleOf(_22_newResultMap, _19_pos)) + } + } + } + } + } + } + } + } + } +} +func (_static *CompanionStruct_Default___) DeserializeMap(serialized _dafny.Sequence, pos uint64, remainingCount uint64, depth uint64, resultMap AttrValueAndLength) m_Wrappers.Result { + var ret m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(Companion_AttrValueAndLength_.Default()) + _ = ret + var _0_npos uint64 + _ = _0_npos + _0_npos = pos + var _1_newResultMap AttrValueAndLength + _ = _1_newResultMap + _1_newResultMap = resultMap + var _hi0 uint64 = remainingCount + _ = _hi0 + for _2_i := uint64(0); _2_i < _hi0; _2_i++ { + var _3_test m_Wrappers.Result + _ = _3_test + _3_test = Companion_Default___.DeserializeMapEntry(serialized, _0_npos, depth, _1_newResultMap) + if (_3_test).Is_Failure() { + ret = m_Wrappers.Companion_Result_.Create_Failure_((_3_test).Dtor_error().(_dafny.Sequence)) + return ret + } + _1_newResultMap = (*((_3_test).Dtor_value().(_dafny.Tuple)).IndexInt(0)).(AttrValueAndLength) + _0_npos = (*((_3_test).Dtor_value().(_dafny.Tuple)).IndexInt(1)).(uint64) + } + ret = m_Wrappers.Companion_Result_.Create_Success_(_1_newResultMap) + return ret +} +func (_static *CompanionStruct_Default___) BytesToAttr(value _dafny.Sequence, typeId _dafny.Sequence, totalBytes m_Wrappers.Option, depth uint64, pos uint64) m_Wrappers.Result { + var _0_value__size uint64 = uint64((value).Cardinality()) + _ = _0_value__size + var _1_valueOrError0 m_Wrappers.Outcome = m_Wrappers.Companion_Default___.Need((depth) <= (m_DynamoDbEncryptionUtil.Companion_Default___.MAX__STRUCTURE__DEPTH()), _dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("Depth of attribute structure to deserialize exceeds limit of "), m_DynamoDbEncryptionUtil.Companion_Default___.MAX__STRUCTURE__DEPTH__STR())) + _ = _1_valueOrError0 + if (_1_valueOrError0).IsFailure() { + return (_1_valueOrError0).PropagateFailure() + } else { + var _2_valueOrError1 m_Wrappers.Result = (func() m_Wrappers.Result { + if (totalBytes).Is_None() { + return Companion_Default___.BigEndianPosToU32As64(value, pos) + } + return m_Wrappers.Companion_Result_.Create_Success_((totalBytes).Dtor_value().(uint64)) + })() + _ = _2_valueOrError1 + if (_2_valueOrError1).IsFailure() { + return (_2_valueOrError1).PropagateFailure() + } else { + var _3_len uint64 = (_2_valueOrError1).Extract().(uint64) + _ = _3_len + var _4_pos uint64 = (func() uint64 { + if (totalBytes).Is_None() { + return m_StandardLibrary_MemoryMath.Companion_Default___.Add(pos, Companion_Default___.LENGTH__LEN64()) + } + return pos + })() + _ = _4_pos + var _5_lengthBytes uint64 = (func() uint64 { + if (totalBytes).Is_None() { + return Companion_Default___.LENGTH__LEN64() + } + return uint64(0) + })() + _ = _5_lengthBytes + if ((_0_value__size) - (func() uint64 { return (_4_pos) })()) < (_3_len) { + return m_Wrappers.Companion_Result_.Create_Failure_(_dafny.SeqOfString("Structured Data has too few bytes")) + } else if _dafny.Companion_Sequence_.Equal(typeId, m_StructuredEncryptionUtil.Companion_Default___.NULL()) { + if (_3_len) != (uint64(0)) /* dircomp */ { + return m_Wrappers.Companion_Result_.Create_Failure_(_dafny.SeqOfString("NULL type did not have length zero")) + } else { + return m_Wrappers.Companion_Result_.Create_Success_(Companion_AttrValueAndLength_.Create_AttrValueAndLength_(m_ComAmazonawsDynamodbTypes.Companion_AttributeValue_.Create_NULL_(true), _5_lengthBytes)) + } + } else if _dafny.Companion_Sequence_.Equal(typeId, m_StructuredEncryptionUtil.Companion_Default___.STRING()) { + var _6_valueOrError2 m_Wrappers.Result = m_UTF8.Decode((value).Subsequence(uint32(_4_pos), uint32((_4_pos)+(_3_len)))) + _ = _6_valueOrError2 + if (_6_valueOrError2).IsFailure() { + return (_6_valueOrError2).PropagateFailure() + } else { + var _7_str _dafny.Sequence = (_6_valueOrError2).Extract().(_dafny.Sequence) + _ = _7_str + return m_Wrappers.Companion_Result_.Create_Success_(Companion_AttrValueAndLength_.Create_AttrValueAndLength_(m_ComAmazonawsDynamodbTypes.Companion_AttributeValue_.Create_S_(_7_str), (_3_len)+(_5_lengthBytes))) + } + } else if _dafny.Companion_Sequence_.Equal(typeId, m_StructuredEncryptionUtil.Companion_Default___.NUMBER()) { + var _8_valueOrError3 m_Wrappers.Result = m_UTF8.Decode((value).Subsequence(uint32(_4_pos), uint32((_4_pos)+(_3_len)))) + _ = _8_valueOrError3 + if (_8_valueOrError3).IsFailure() { + return (_8_valueOrError3).PropagateFailure() + } else { + var _9_str _dafny.Sequence = (_8_valueOrError3).Extract().(_dafny.Sequence) + _ = _9_str + return m_Wrappers.Companion_Result_.Create_Success_(Companion_AttrValueAndLength_.Create_AttrValueAndLength_(m_ComAmazonawsDynamodbTypes.Companion_AttributeValue_.Create_N_(_9_str), (_3_len)+(_5_lengthBytes))) + } + } else if _dafny.Companion_Sequence_.Equal(typeId, m_StructuredEncryptionUtil.Companion_Default___.BINARY()) { + return m_Wrappers.Companion_Result_.Create_Success_(Companion_AttrValueAndLength_.Create_AttrValueAndLength_(m_ComAmazonawsDynamodbTypes.Companion_AttributeValue_.Create_B_((value).Subsequence(uint32(_4_pos), uint32((_4_pos)+(_3_len)))), (_3_len)+(_5_lengthBytes))) + } else if _dafny.Companion_Sequence_.Equal(typeId, m_StructuredEncryptionUtil.Companion_Default___.BOOLEAN()) { + if (_3_len) != (Companion_Default___.BOOL__LEN64()) /* dircomp */ { + return m_Wrappers.Companion_Result_.Create_Failure_(_dafny.SeqOfString("Boolean Structured Data has more than one byte")) + } else if ((value).Select(uint32(_4_pos)).(uint8)) == (uint8(0)) { + return m_Wrappers.Companion_Result_.Create_Success_(Companion_AttrValueAndLength_.Create_AttrValueAndLength_(m_ComAmazonawsDynamodbTypes.Companion_AttributeValue_.Create_BOOL_(false), (Companion_Default___.BOOL__LEN64())+(_5_lengthBytes))) + } else if ((value).Select(uint32(_4_pos)).(uint8)) == (uint8(1)) { + return m_Wrappers.Companion_Result_.Create_Success_(Companion_AttrValueAndLength_.Create_AttrValueAndLength_(m_ComAmazonawsDynamodbTypes.Companion_AttributeValue_.Create_BOOL_(true), (Companion_Default___.BOOL__LEN64())+(_5_lengthBytes))) + } else { + return m_Wrappers.Companion_Result_.Create_Failure_(_dafny.SeqOfString("Boolean Structured Data had inappropriate value")) + } + } else if _dafny.Companion_Sequence_.Equal(typeId, m_StructuredEncryptionUtil.Companion_Default___.STRING__SET()) { + if ((_0_value__size) - (func() uint64 { return (_4_pos) })()) < (Companion_Default___.LENGTH__LEN64()) { + return m_Wrappers.Companion_Result_.Create_Failure_(_dafny.SeqOfString("String Set Structured Data has less than LENGTH_LEN bytes")) + } else { + var _10_valueOrError4 m_Wrappers.Result = Companion_Default___.BigEndianPosToU32As64(value, _4_pos) + _ = _10_valueOrError4 + if (_10_valueOrError4).IsFailure() { + return (_10_valueOrError4).PropagateFailure() + } else { + var _11_len uint64 = (_10_valueOrError4).Extract().(uint64) + _ = _11_len + var _12_pos uint64 = (_4_pos) + (Companion_Default___.LENGTH__LEN64()) + _ = _12_pos + var _13_valueOrError5 m_Wrappers.Result = Companion_Default___.DeserializeStringSet((value).Drop(uint32(_12_pos)), _11_len, m_StandardLibrary_MemoryMath.Companion_Default___.Add3((_0_value__size)-(func() uint64 { return (_12_pos) })(), Companion_Default___.LENGTH__LEN64(), _5_lengthBytes), Companion_AttrValueAndLength_.Create_AttrValueAndLength_(m_ComAmazonawsDynamodbTypes.Companion_AttributeValue_.Create_SS_(_dafny.SeqOf()), (Companion_Default___.LENGTH__LEN64())+(_5_lengthBytes))) + _ = _13_valueOrError5 + if (_13_valueOrError5).IsFailure() { + return (_13_valueOrError5).PropagateFailure() + } else { + var _14_retval AttrValueAndLength = (_13_valueOrError5).Extract().(AttrValueAndLength) + _ = _14_retval + return m_Wrappers.Companion_Result_.Create_Success_(_14_retval) + } + } + } + } else if _dafny.Companion_Sequence_.Equal(typeId, m_StructuredEncryptionUtil.Companion_Default___.NUMBER__SET()) { + if ((_0_value__size) - (func() uint64 { return (_4_pos) })()) < (Companion_Default___.LENGTH__LEN64()) { + return m_Wrappers.Companion_Result_.Create_Failure_(_dafny.SeqOfString("Number Set Structured Data has less than 4 bytes")) + } else { + var _15_valueOrError6 m_Wrappers.Result = Companion_Default___.BigEndianPosToU32As64(value, _4_pos) + _ = _15_valueOrError6 + if (_15_valueOrError6).IsFailure() { + return (_15_valueOrError6).PropagateFailure() + } else { + var _16_len uint64 = (_15_valueOrError6).Extract().(uint64) + _ = _16_len + var _17_pos uint64 = (_4_pos) + (Companion_Default___.LENGTH__LEN64()) + _ = _17_pos + var _18_valueOrError7 m_Wrappers.Result = Companion_Default___.DeserializeNumberSet((value).Drop(uint32(_17_pos)), _16_len, m_StandardLibrary_MemoryMath.Companion_Default___.Add3((_0_value__size)-(func() uint64 { return (_17_pos) })(), Companion_Default___.LENGTH__LEN64(), _5_lengthBytes), Companion_AttrValueAndLength_.Create_AttrValueAndLength_(m_ComAmazonawsDynamodbTypes.Companion_AttributeValue_.Create_NS_(_dafny.SeqOf()), (Companion_Default___.LENGTH__LEN64())+(_5_lengthBytes))) + _ = _18_valueOrError7 + if (_18_valueOrError7).IsFailure() { + return (_18_valueOrError7).PropagateFailure() + } else { + var _19_retval AttrValueAndLength = (_18_valueOrError7).Extract().(AttrValueAndLength) + _ = _19_retval + return m_Wrappers.Companion_Result_.Create_Success_(_19_retval) + } + } + } + } else if _dafny.Companion_Sequence_.Equal(typeId, m_StructuredEncryptionUtil.Companion_Default___.BINARY__SET()) { + if ((_0_value__size) - (func() uint64 { return (_4_pos) })()) < (Companion_Default___.LENGTH__LEN64()) { + return m_Wrappers.Companion_Result_.Create_Failure_(_dafny.SeqOfString("Binary Set Structured Data has less than LENGTH_LEN bytes")) + } else { + var _20_valueOrError8 m_Wrappers.Result = Companion_Default___.BigEndianPosToU32As64(value, _4_pos) + _ = _20_valueOrError8 + if (_20_valueOrError8).IsFailure() { + return (_20_valueOrError8).PropagateFailure() + } else { + var _21_len uint64 = (_20_valueOrError8).Extract().(uint64) + _ = _21_len + var _22_pos uint64 = (_4_pos) + (Companion_Default___.LENGTH__LEN64()) + _ = _22_pos + var _23_valueOrError9 m_Wrappers.Result = Companion_Default___.DeserializeBinarySet((value).Drop(uint32(_22_pos)), _21_len, m_StandardLibrary_MemoryMath.Companion_Default___.Add3((_0_value__size)-(func() uint64 { return (_22_pos) })(), Companion_Default___.LENGTH__LEN64(), _5_lengthBytes), Companion_AttrValueAndLength_.Create_AttrValueAndLength_(m_ComAmazonawsDynamodbTypes.Companion_AttributeValue_.Create_BS_(_dafny.SeqOf()), (Companion_Default___.LENGTH__LEN64())+(_5_lengthBytes))) + _ = _23_valueOrError9 + if (_23_valueOrError9).IsFailure() { + return (_23_valueOrError9).PropagateFailure() + } else { + var _24_retval AttrValueAndLength = (_23_valueOrError9).Extract().(AttrValueAndLength) + _ = _24_retval + return m_Wrappers.Companion_Result_.Create_Success_(_24_retval) + } + } + } + } else if _dafny.Companion_Sequence_.Equal(typeId, m_StructuredEncryptionUtil.Companion_Default___.MAP()) { + if (_0_value__size) < (m_StandardLibrary_MemoryMath.Companion_Default___.Add(Companion_Default___.LENGTH__LEN64(), _4_pos)) { + return m_Wrappers.Companion_Result_.Create_Failure_(_dafny.SeqOfString("List Structured Data has less than 4 bytes")) + } else { + var _25_valueOrError10 m_Wrappers.Result = Companion_Default___.BigEndianPosToU32As64(value, _4_pos) + _ = _25_valueOrError10 + if (_25_valueOrError10).IsFailure() { + return (_25_valueOrError10).PropagateFailure() + } else { + var _26_len uint64 = (_25_valueOrError10).Extract().(uint64) + _ = _26_len + var _27_pos uint64 = (_4_pos) + (Companion_Default___.LENGTH__LEN64()) + _ = _27_pos + var _28_resultMap AttrValueAndLength = Companion_AttrValueAndLength_.Create_AttrValueAndLength_(m_ComAmazonawsDynamodbTypes.Companion_AttributeValue_.Create_M_(_dafny.NewMapBuilder().ToMap()), (Companion_Default___.LENGTH__LEN64())+(_5_lengthBytes)) + _ = _28_resultMap + var _29_valueOrError11 m_Wrappers.Result = Companion_Default___.DeserializeMap(value, _27_pos, _26_len, depth, _28_resultMap) + _ = _29_valueOrError11 + if (_29_valueOrError11).IsFailure() { + return (_29_valueOrError11).PropagateFailure() + } else { + var _30_retval AttrValueAndLength = (_29_valueOrError11).Extract().(AttrValueAndLength) + _ = _30_retval + return m_Wrappers.Companion_Result_.Create_Success_(_30_retval) + } + } + } + } else if _dafny.Companion_Sequence_.Equal(typeId, m_StructuredEncryptionUtil.Companion_Default___.LIST()) { + if (_0_value__size) < (m_StandardLibrary_MemoryMath.Companion_Default___.Add(Companion_Default___.LENGTH__LEN64(), _4_pos)) { + return m_Wrappers.Companion_Result_.Create_Failure_(_dafny.SeqOfString("List Structured Data has less than 4 bytes")) + } else { + var _31_valueOrError12 m_Wrappers.Result = Companion_Default___.BigEndianPosToU32As64(value, _4_pos) + _ = _31_valueOrError12 + if (_31_valueOrError12).IsFailure() { + return (_31_valueOrError12).PropagateFailure() + } else { + var _32_len uint64 = (_31_valueOrError12).Extract().(uint64) + _ = _32_len + var _33_pos uint64 = (_4_pos) + (Companion_Default___.LENGTH__LEN64()) + _ = _33_pos + var _34_resultList AttrValueAndLength = Companion_AttrValueAndLength_.Create_AttrValueAndLength_(m_ComAmazonawsDynamodbTypes.Companion_AttributeValue_.Create_L_(_dafny.SeqOf()), (Companion_Default___.LENGTH__LEN64())+(_5_lengthBytes)) + _ = _34_resultList + var _35_valueOrError13 m_Wrappers.Result = Companion_Default___.DeserializeList(value, _33_pos, _32_len, depth, _34_resultList) + _ = _35_valueOrError13 + if (_35_valueOrError13).IsFailure() { + return (_35_valueOrError13).PropagateFailure() + } else { + var _36_retval AttrValueAndLength = (_35_valueOrError13).Extract().(AttrValueAndLength) + _ = _36_retval + return m_Wrappers.Companion_Result_.Create_Success_(_36_retval) + } + } + } + } else { + return m_Wrappers.Companion_Result_.Create_Failure_(_dafny.SeqOfString("Unsupported TerminalTypeId")) + } + } + } +} +func (_static *CompanionStruct_Default___) FlattenValueMap(m _dafny.Map) _dafny.Map { + return func() _dafny.Map { + var _coll0 = _dafny.NewMapBuilder() + _ = _coll0 + for _iter14 := _dafny.Iterate((m).Keys().Elements()); ; { + _compr_0, _ok14 := _iter14() + if !_ok14 { + break + } + var _0_k interface{} + _0_k = interface{}(_compr_0).(interface{}) + if ((m).Contains(_0_k)) && (((m).Get(_0_k).(m_Wrappers.Result)).Is_Success()) { + _coll0.Add(_0_k, ((m).Get(_0_k).(m_Wrappers.Result)).Dtor_value()) + } + } + return _coll0.ToMap() + }() +} +func (_static *CompanionStruct_Default___) FlattenErrors(m _dafny.Map) _dafny.Set { + return func() _dafny.Set { + var _coll0 = _dafny.NewBuilder() + _ = _coll0 + for _iter15 := _dafny.Iterate((m).Keys().Elements()); ; { + _compr_0, _ok15 := _iter15() + if !_ok15 { + break + } + var _0_k interface{} + _0_k = interface{}(_compr_0).(interface{}) + if ((m).Contains(_0_k)) && (((m).Get(_0_k).(m_Wrappers.Result)).Is_Failure()) { + _coll0.Add(((m).Get(_0_k).(m_Wrappers.Result)).Dtor_error().(_dafny.Sequence)) + } + } + return _coll0.ToSet() + }() +} +func (_static *CompanionStruct_Default___) SimplifyMapValue(m _dafny.Map) m_Wrappers.Result { + if _dafny.Quantifier((m).Keys().Elements(), true, func(_forall_var_0 interface{}) bool { + var _0_k interface{} + _0_k = interface{}(_forall_var_0).(interface{}) + return !((m).Contains(_0_k)) || (((m).Get(_0_k).(m_Wrappers.Result)).Is_Success()) + }) { + var _1_result _dafny.Map = Companion_Default___.FlattenValueMap(m) + _ = _1_result + return m_Wrappers.Companion_Result_.Create_Success_(_1_result) + } else { + var _2_badValues _dafny.Set = Companion_Default___.FlattenErrors(m) + _ = _2_badValues + var _3_badValueSeq _dafny.Sequence = m_SortedSets.SetToOrderedSequence2(_2_badValues, func(coer51 func(_dafny.Char, _dafny.Char) bool) func(interface{}, interface{}) bool { + return func(arg73 interface{}, arg74 interface{}) bool { + return coer51(arg73.(_dafny.Char), arg74.(_dafny.Char)) + } + }(Companion_Default___.CharLess)) + _ = _3_badValueSeq + return m_Wrappers.Companion_Result_.Create_Failure_(m_StandardLibrary.Companion_Default___.Join(_3_badValueSeq, _dafny.SeqOfString("\n"))) + } +} +func (_static *CompanionStruct_Default___) LENGTH__LEN64() uint64 { + return uint64(4) +} +func (_static *CompanionStruct_Default___) TYPEID__LEN64() uint64 { + return uint64(2) +} +func (_static *CompanionStruct_Default___) BOOL__LEN64() uint64 { + return uint64(1) +} +func (_static *CompanionStruct_Default___) PREFIX__LEN64() uint64 { + return uint64(6) +} + +// End of class Default__ + +// Definition of datatype AttrValueAndLength +type AttrValueAndLength struct { + Data_AttrValueAndLength_ +} + +func (_this AttrValueAndLength) Get_() Data_AttrValueAndLength_ { + return _this.Data_AttrValueAndLength_ +} + +type Data_AttrValueAndLength_ interface { + isAttrValueAndLength() +} + +type CompanionStruct_AttrValueAndLength_ struct { +} + +var Companion_AttrValueAndLength_ = CompanionStruct_AttrValueAndLength_{} + +type AttrValueAndLength_AttrValueAndLength struct { + Val m_ComAmazonawsDynamodbTypes.AttributeValue + Len uint64 +} + +func (AttrValueAndLength_AttrValueAndLength) isAttrValueAndLength() {} + +func (CompanionStruct_AttrValueAndLength_) Create_AttrValueAndLength_(Val m_ComAmazonawsDynamodbTypes.AttributeValue, Len uint64) AttrValueAndLength { + return AttrValueAndLength{AttrValueAndLength_AttrValueAndLength{Val, Len}} +} + +func (_this AttrValueAndLength) Is_AttrValueAndLength() bool { + _, ok := _this.Get_().(AttrValueAndLength_AttrValueAndLength) + return ok +} + +func (CompanionStruct_AttrValueAndLength_) Default() AttrValueAndLength { + return Companion_AttrValueAndLength_.Create_AttrValueAndLength_(m_ComAmazonawsDynamodbTypes.Companion_AttributeValue_.Default(), uint64(0)) +} + +func (_this AttrValueAndLength) Dtor_val() m_ComAmazonawsDynamodbTypes.AttributeValue { + return _this.Get_().(AttrValueAndLength_AttrValueAndLength).Val +} + +func (_this AttrValueAndLength) Dtor_len() uint64 { + return _this.Get_().(AttrValueAndLength_AttrValueAndLength).Len +} + +func (_this AttrValueAndLength) String() string { + switch data := _this.Get_().(type) { + case nil: + return "null" + case AttrValueAndLength_AttrValueAndLength: + { + return "DynamoToStruct.AttrValueAndLength.AttrValueAndLength" + "(" + _dafny.String(data.Val) + ", " + _dafny.String(data.Len) + ")" + } + default: + { + return "" + } + } +} + +func (_this AttrValueAndLength) Equals(other AttrValueAndLength) bool { + switch data1 := _this.Get_().(type) { + case AttrValueAndLength_AttrValueAndLength: + { + data2, ok := other.Get_().(AttrValueAndLength_AttrValueAndLength) + return ok && data1.Val.Equals(data2.Val) && data1.Len == data2.Len + } + default: + { + return false // unexpected + } + } +} + +func (_this AttrValueAndLength) EqualsGeneric(other interface{}) bool { + typed, ok := other.(AttrValueAndLength) + return ok && _this.Equals(typed) +} + +func Type_AttrValueAndLength_() _dafny.TypeDescriptor { + return type_AttrValueAndLength_{} +} + +type type_AttrValueAndLength_ struct { +} + +func (_this type_AttrValueAndLength_) Default() interface{} { + return Companion_AttrValueAndLength_.Default() +} + +func (_this type_AttrValueAndLength_) String() string { + return "DynamoToStruct.AttrValueAndLength" +} +func (_this AttrValueAndLength) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = AttrValueAndLength{} + +// End of datatype AttrValueAndLength diff --git a/releases/go/dynamodb-esdk/ExecuteStatementTransform/ExecuteStatementTransform.go b/releases/go/dynamodb-esdk/ExecuteStatementTransform/ExecuteStatementTransform.go new file mode 100644 index 000000000..60b2a76df --- /dev/null +++ b/releases/go/dynamodb-esdk/ExecuteStatementTransform/ExecuteStatementTransform.go @@ -0,0 +1,389 @@ +// Package ExecuteStatementTransform +// Dafny module ExecuteStatementTransform compiled into Go + +package ExecuteStatementTransform + +import ( + os "os" + + m_ComAmazonawsDynamodbTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/dynamodb/ComAmazonawsDynamodbTypes" + m_Com_Amazonaws_Dynamodb "github.com/aws/aws-cryptographic-material-providers-library/releases/go/dynamodb/Com_Amazonaws_Dynamodb" + m_ComAmazonawsKmsTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/kms/ComAmazonawsKmsTypes" + m_Com_Amazonaws_Kms "github.com/aws/aws-cryptographic-material-providers-library/releases/go/kms/Com_Amazonaws_Kms" + m_AlgorithmSuites "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AlgorithmSuites" + m_AwsArnParsing "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsArnParsing" + m_AwsCryptographyKeyStoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyKeyStoreOperations" + m_AwsCryptographyKeyStoreTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyKeyStoreTypes" + m_AwsCryptographyMaterialProvidersOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyMaterialProvidersOperations" + m_AwsCryptographyMaterialProvidersTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyMaterialProvidersTypes" + m_AwsKmsDiscoveryKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsDiscoveryKeyring" + m_AwsKmsEcdhKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsEcdhKeyring" + m_AwsKmsHierarchicalKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsHierarchicalKeyring" + m_AwsKmsKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsKeyring" + m_AwsKmsMrkAreUnique "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkAreUnique" + m_AwsKmsMrkDiscoveryKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkDiscoveryKeyring" + m_AwsKmsMrkKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkKeyring" + m_AwsKmsMrkMatchForDecrypt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkMatchForDecrypt" + m_AwsKmsRsaKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsRsaKeyring" + m_AwsKmsUtils "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsUtils" + m_CMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CMM" + m_CacheConstants "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CacheConstants" + m_CanonicalEncryptionContext "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CanonicalEncryptionContext" + m_Commitment "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Commitment" + m_Constants "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Constants" + m_CreateKeyStoreTable "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CreateKeyStoreTable" + m_CreateKeys "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CreateKeys" + m_DDBKeystoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DDBKeystoreOperations" + m_DefaultCMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DefaultCMM" + m_DefaultClientSupplier "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DefaultClientSupplier" + m_Defaults "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Defaults" + m_DiscoveryMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DiscoveryMultiKeyring" + m_EcdhEdkWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/EcdhEdkWrapping" + m_EdkWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/EdkWrapping" + m_ErrorMessages "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/ErrorMessages" + m_GetKeys "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/GetKeys" + m_IntermediateKeyWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/IntermediateKeyWrapping" + m_KMSKeystoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KMSKeystoreOperations" + m_KeyStore "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KeyStore" + m_KeyStoreErrorMessages "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KeyStoreErrorMessages" + m_Keyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Keyring" + m_KmsArn "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KmsArn" + m_LocalCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/LocalCMC" + m_MaterialProviders "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MaterialProviders" + m_MaterialWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MaterialWrapping" + m_Materials "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Materials" + m_MrkAwareDiscoveryMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MrkAwareDiscoveryMultiKeyring" + m_MrkAwareStrictMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MrkAwareStrictMultiKeyring" + m_MultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MultiKeyring" + m_RawAESKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawAESKeyring" + m_RawECDHKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawECDHKeyring" + m_RawRSAKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawRSAKeyring" + m_RequiredEncryptionContextCMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RequiredEncryptionContextCMM" + m_StormTracker "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StormTracker" + m_StormTrackingCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StormTrackingCMC" + m_StrictMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StrictMultiKeyring" + m_Structure "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Structure" + m_SynchronizedLocalCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/SynchronizedLocalCMC" + m_Utils "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Utils" + m_AtomicPrimitives "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AtomicPrimitives" + m_AwsCryptographyPrimitivesOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AwsCryptographyPrimitivesOperations" + m_AwsCryptographyPrimitivesTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AwsCryptographyPrimitivesTypes" + m_Digest "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/Digest" + m_HKDF "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/HKDF" + m_KdfCtr "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/KdfCtr" + m_Random "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/Random" + m_WrappedHKDF "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/WrappedHKDF" + m_WrappedHMAC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/WrappedHMAC" + m_Actions "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Actions" + m_Base64 "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Base64" + m_Base64Lemmas "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Base64Lemmas" + m_BoundedInts "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/BoundedInts" + m_DivInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivInternals" + m_DivInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivInternalsNonlinear" + m_DivMod "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivMod" + m_FileIO "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/FileIO" + m_FloatCompare "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/FloatCompare" + m_Functions "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Functions" + m_GeneralInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/GeneralInternals" + m_GetOpt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/GetOpt" + m_HexStrings "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/HexStrings" + m_Logarithm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Logarithm" + m__Math "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Math_" + m_ModInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/ModInternals" + m_ModInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/ModInternalsNonlinear" + m_Mul "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Mul" + m_MulInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/MulInternals" + m_MulInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/MulInternalsNonlinear" + m_Power "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Power" + m_Relations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Relations" + m_Seq "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Seq" + m_Seq_MergeSort "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Seq_MergeSort" + m_Sorting "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Sorting" + m_StandardLibrary "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary" + m_StandardLibraryInterop "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibraryInterop" + m_StandardLibrary_MemoryMath "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_MemoryMath" + m_StandardLibrary_Sequence "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_Sequence" + m_StandardLibrary_String "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_String" + m_StandardLibrary_UInt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_UInt" + m_Streams "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Streams" + m_UnicodeStrings "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/UnicodeStrings" + m__Unicode "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Unicode_" + m_Utf16EncodingForm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Utf16EncodingForm" + m_Utf8EncodingForm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Utf8EncodingForm" + m_Wrappers "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Wrappers" + m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations" + m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes" + m_AwsCryptographyDbEncryptionSdkDynamoDbOperations "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbOperations" + m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes" + m_AwsCryptographyDbEncryptionSdkDynamoDbTypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbTypes" + m_AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations" + m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes" + m_BaseBeacon "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/BaseBeacon" + m_BatchGetItemTransform "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/BatchGetItemTransform" + m_BatchWriteItemTransform "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/BatchWriteItemTransform" + m_Canonize "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/Canonize" + m_CompoundBeacon "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/CompoundBeacon" + m_DdbMiddlewareConfig "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DdbMiddlewareConfig" + m_DdbStatement "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DdbStatement" + m_DdbVirtualFields "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DdbVirtualFields" + m_DeleteItemTransform "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DeleteItemTransform" + m_DynamoDBFilterExpr "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDBFilterExpr" + m_DynamoDBSupport "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDBSupport" + m_DynamoDbEncryption "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbEncryption" + m_DynamoDbEncryptionBranchKeyIdSupplier "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbEncryptionBranchKeyIdSupplier" + m_DynamoDbEncryptionUtil "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbEncryptionUtil" + m_DynamoDbItemEncryptor "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbItemEncryptor" + m_DynamoDbItemEncryptorUtil "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbItemEncryptorUtil" + m_DynamoDbMiddlewareSupport "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbMiddlewareSupport" + m_DynamoDbNormalizeNumber "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbNormalizeNumber" + m_DynamoDbUpdateExpr "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbUpdateExpr" + m_DynamoToStruct "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoToStruct" + m_GetItemTransform "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/GetItemTransform" + m_InternalLegacyOverride "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/InternalLegacyOverride" + m__Maps "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/Maps_" + m_OptimizedMergeSort "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/OptimizedMergeSort" + m_PutItemTransform "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/PutItemTransform" + m_QueryTransform "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/QueryTransform" + m_ScanTransform "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/ScanTransform" + m_SearchConfigToInfo "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/SearchConfigToInfo" + m_SearchableEncryptionInfo "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/SearchableEncryptionInfo" + m_Sets "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/Sets" + m_SortCanon "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/SortCanon" + m_StructuredEncryption "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryption" + m_StructuredEncryptionCrypt "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionCrypt" + m_StructuredEncryptionFooter "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionFooter" + m_StructuredEncryptionHeader "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionHeader" + m_StructuredEncryptionPaths "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionPaths" + m_StructuredEncryptionUtil "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionUtil" + m_TermLoc "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/TermLoc" + m_TransactGetItemsTransform "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/TransactGetItemsTransform" + m_TransactWriteItemsTransform "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/TransactWriteItemsTransform" + m_UpdateItemTransform "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/UpdateItemTransform" + m__System "github.com/dafny-lang/DafnyRuntimeGo/v4/System_" + _dafny "github.com/dafny-lang/DafnyRuntimeGo/v4/dafny" +) + +var _ = os.Args +var _ _dafny.Dummy__ +var _ m__System.Dummy__ +var _ m_Wrappers.Dummy__ +var _ m_BoundedInts.Dummy__ +var _ m_StandardLibrary_UInt.Dummy__ +var _ m_StandardLibrary_MemoryMath.Dummy__ +var _ m_StandardLibrary_Sequence.Dummy__ +var _ m_StandardLibrary_String.Dummy__ +var _ m_StandardLibrary.Dummy__ +var _ m_AwsCryptographyPrimitivesTypes.Dummy__ +var _ m_Random.Dummy__ +var _ m_Digest.Dummy__ +var _ m_WrappedHMAC.Dummy__ +var _ m_HKDF.Dummy__ +var _ m_WrappedHKDF.Dummy__ +var _ m_KdfCtr.Dummy__ +var _ m_AwsCryptographyPrimitivesOperations.Dummy__ +var _ m_AtomicPrimitives.Dummy__ +var _ m_ComAmazonawsDynamodbTypes.Dummy__ +var _ m_ComAmazonawsKmsTypes.Dummy__ +var _ m_AwsCryptographyKeyStoreTypes.Dummy__ +var _ m_AwsCryptographyMaterialProvidersTypes.Dummy__ +var _ m_Base64.Dummy__ +var _ m_AlgorithmSuites.Dummy__ +var _ m_Materials.Dummy__ +var _ m_Keyring.Dummy__ +var _ m_Relations.Dummy__ +var _ m_Seq_MergeSort.Dummy__ +var _ m__Math.Dummy__ +var _ m_Seq.Dummy__ +var _ m_Actions.Dummy__ +var _ m_CanonicalEncryptionContext.Dummy__ +var _ m_MaterialWrapping.Dummy__ +var _ m_IntermediateKeyWrapping.Dummy__ +var _ m_EdkWrapping.Dummy__ +var _ m_ErrorMessages.Dummy__ +var _ m_RawAESKeyring.Dummy__ +var _ m_AwsArnParsing.Dummy__ +var _ m_Constants.Dummy__ +var _ m_EcdhEdkWrapping.Dummy__ +var _ m_RawECDHKeyring.Dummy__ +var _ m_RawRSAKeyring.Dummy__ +var _ m_AwsKmsMrkMatchForDecrypt.Dummy__ +var _ m_AwsKmsUtils.Dummy__ +var _ m_AwsKmsKeyring.Dummy__ +var _ m_AwsKmsDiscoveryKeyring.Dummy__ +var _ m_AwsKmsEcdhKeyring.Dummy__ +var _ m_FileIO.Dummy__ +var _ m_LocalCMC.Dummy__ +var _ m_SynchronizedLocalCMC.Dummy__ +var _ m_StormTracker.Dummy__ +var _ m_StormTrackingCMC.Dummy__ +var _ m_CacheConstants.Dummy__ +var _ m_AwsKmsHierarchicalKeyring.Dummy__ +var _ m_AwsKmsMrkDiscoveryKeyring.Dummy__ +var _ m_AwsKmsMrkKeyring.Dummy__ +var _ m_AwsKmsRsaKeyring.Dummy__ +var _ m_MultiKeyring.Dummy__ +var _ m_AwsKmsMrkAreUnique.Dummy__ +var _ m_StrictMultiKeyring.Dummy__ +var _ m_Com_Amazonaws_Kms.Dummy__ +var _ m_Com_Amazonaws_Dynamodb.Dummy__ +var _ m_DiscoveryMultiKeyring.Dummy__ +var _ m_MrkAwareDiscoveryMultiKeyring.Dummy__ +var _ m_MrkAwareStrictMultiKeyring.Dummy__ +var _ m_CMM.Dummy__ +var _ m_Defaults.Dummy__ +var _ m_Commitment.Dummy__ +var _ m_DefaultCMM.Dummy__ +var _ m_DefaultClientSupplier.Dummy__ +var _ m_Utils.Dummy__ +var _ m_RequiredEncryptionContextCMM.Dummy__ +var _ m_AwsCryptographyMaterialProvidersOperations.Dummy__ +var _ m_MaterialProviders.Dummy__ +var _ m_KeyStoreErrorMessages.Dummy__ +var _ m_KmsArn.Dummy__ +var _ m_Structure.Dummy__ +var _ m_KMSKeystoreOperations.Dummy__ +var _ m_DDBKeystoreOperations.Dummy__ +var _ m_CreateKeys.Dummy__ +var _ m_CreateKeyStoreTable.Dummy__ +var _ m_GetKeys.Dummy__ +var _ m_AwsCryptographyKeyStoreOperations.Dummy__ +var _ m_KeyStore.Dummy__ +var _ m__Unicode.Dummy__ +var _ m_Functions.Dummy__ +var _ m_Utf8EncodingForm.Dummy__ +var _ m_Utf16EncodingForm.Dummy__ +var _ m_UnicodeStrings.Dummy__ +var _ m_GeneralInternals.Dummy__ +var _ m_MulInternalsNonlinear.Dummy__ +var _ m_MulInternals.Dummy__ +var _ m_Mul.Dummy__ +var _ m_ModInternalsNonlinear.Dummy__ +var _ m_DivInternalsNonlinear.Dummy__ +var _ m_ModInternals.Dummy__ +var _ m_DivInternals.Dummy__ +var _ m_DivMod.Dummy__ +var _ m_Power.Dummy__ +var _ m_Logarithm.Dummy__ +var _ m_StandardLibraryInterop.Dummy__ +var _ m_Streams.Dummy__ +var _ m_Sorting.Dummy__ +var _ m_HexStrings.Dummy__ +var _ m_GetOpt.Dummy__ +var _ m_FloatCompare.Dummy__ +var _ m_Base64Lemmas.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Dummy__ +var _ m_StructuredEncryptionUtil.Dummy__ +var _ m_Sets.Dummy__ +var _ m_StructuredEncryptionPaths.Dummy__ +var _ m_StructuredEncryptionHeader.Dummy__ +var _ m_StructuredEncryptionFooter.Dummy__ +var _ m_OptimizedMergeSort.Dummy__ +var _ m_SortCanon.Dummy__ +var _ m_Canonize.Dummy__ +var _ m_StructuredEncryptionCrypt.Dummy__ +var _ m__Maps.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations.Dummy__ +var _ m_StructuredEncryption.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Dummy__ +var _ m_DynamoDbEncryptionUtil.Dummy__ +var _ m_DynamoDbNormalizeNumber.Dummy__ +var _ m_DynamoToStruct.Dummy__ +var _ m_DynamoDbItemEncryptorUtil.Dummy__ +var _ m_InternalLegacyOverride.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations.Dummy__ +var _ m_DynamoDbItemEncryptor.Dummy__ +var _ m_DynamoDbEncryptionBranchKeyIdSupplier.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbOperations.Dummy__ +var _ m_DynamoDbEncryption.Dummy__ +var _ m_TermLoc.Dummy__ +var _ m_DdbVirtualFields.Dummy__ +var _ m_DynamoDbUpdateExpr.Dummy__ +var _ m_BaseBeacon.Dummy__ +var _ m_CompoundBeacon.Dummy__ +var _ m_SearchableEncryptionInfo.Dummy__ +var _ m_DynamoDBFilterExpr.Dummy__ +var _ m_DynamoDBSupport.Dummy__ +var _ m_SearchConfigToInfo.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Dummy__ +var _ m_DdbMiddlewareConfig.Dummy__ +var _ m_DdbStatement.Dummy__ +var _ m_DynamoDbMiddlewareSupport.Dummy__ +var _ m_PutItemTransform.Dummy__ +var _ m_GetItemTransform.Dummy__ +var _ m_UpdateItemTransform.Dummy__ +var _ m_BatchWriteItemTransform.Dummy__ +var _ m_TransactWriteItemsTransform.Dummy__ +var _ m_BatchGetItemTransform.Dummy__ +var _ m_ScanTransform.Dummy__ +var _ m_QueryTransform.Dummy__ +var _ m_TransactGetItemsTransform.Dummy__ +var _ m_DeleteItemTransform.Dummy__ + +type Dummy__ struct{} + +// Definition of class Default__ +type Default__ struct { + dummy byte +} + +func New_Default___() *Default__ { + _this := Default__{} + + return &_this +} + +type CompanionStruct_Default___ struct { +} + +var Companion_Default___ = CompanionStruct_Default___{} + +func (_this *Default__) Equals(other *Default__) bool { + return _this == other +} + +func (_this *Default__) EqualsGeneric(x interface{}) bool { + other, ok := x.(*Default__) + return ok && _this.Equals(other) +} + +func (*Default__) String() string { + return "ExecuteStatementTransform.Default__" +} +func (_this *Default__) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = &Default__{} + +func (_static *CompanionStruct_Default___) Input(config m_DdbMiddlewareConfig.Config, input m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.ExecuteStatementInputTransformInput) m_Wrappers.Result { + var output m_Wrappers.Result = m_Wrappers.Result{} + _ = output + var _0_valueOrError0 m_Wrappers.Result = m_Wrappers.Result{} + _ = _0_valueOrError0 + _0_valueOrError0 = m_DdbMiddlewareConfig.Companion_Default___.MapString(m_DdbStatement.Companion_Default___.TableFromStatement(((input).Dtor_sdkInput()).Dtor_Statement())) + if (_0_valueOrError0).IsFailure() { + output = (_0_valueOrError0).PropagateFailure() + return output + } + var _1_tableName _dafny.Sequence + _ = _1_tableName + _1_tableName = (_0_valueOrError0).Extract().(_dafny.Sequence) + if ((config).Dtor_tableEncryptionConfigs()).Contains(_1_tableName) { + output = m_DdbMiddlewareConfig.Companion_Default___.MakeError(_dafny.SeqOfString("ExecuteStatement not Supported on encrypted tables.")) + return output + } else { + output = m_Wrappers.Companion_Result_.Create_Success_(m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_ExecuteStatementInputTransformOutput_.Create_ExecuteStatementInputTransformOutput_((input).Dtor_sdkInput())) + return output + } + return output +} +func (_static *CompanionStruct_Default___) Output(config m_DdbMiddlewareConfig.Config, input m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.ExecuteStatementOutputTransformInput) m_Wrappers.Result { + var output m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_ExecuteStatementOutputTransformOutput_.Default()) + _ = output + output = m_Wrappers.Companion_Result_.Create_Success_(m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_ExecuteStatementOutputTransformOutput_.Create_ExecuteStatementOutputTransformOutput_((input).Dtor_sdkOutput())) + return output + return output +} + +// End of class Default__ diff --git a/releases/go/dynamodb-esdk/ExecuteTransactionTransform/ExecuteTransactionTransform.go b/releases/go/dynamodb-esdk/ExecuteTransactionTransform/ExecuteTransactionTransform.go new file mode 100644 index 000000000..ccec08b8e --- /dev/null +++ b/releases/go/dynamodb-esdk/ExecuteTransactionTransform/ExecuteTransactionTransform.go @@ -0,0 +1,396 @@ +// Package ExecuteTransactionTransform +// Dafny module ExecuteTransactionTransform compiled into Go + +package ExecuteTransactionTransform + +import ( + os "os" + + m_ComAmazonawsDynamodbTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/dynamodb/ComAmazonawsDynamodbTypes" + m_Com_Amazonaws_Dynamodb "github.com/aws/aws-cryptographic-material-providers-library/releases/go/dynamodb/Com_Amazonaws_Dynamodb" + m_ComAmazonawsKmsTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/kms/ComAmazonawsKmsTypes" + m_Com_Amazonaws_Kms "github.com/aws/aws-cryptographic-material-providers-library/releases/go/kms/Com_Amazonaws_Kms" + m_AlgorithmSuites "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AlgorithmSuites" + m_AwsArnParsing "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsArnParsing" + m_AwsCryptographyKeyStoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyKeyStoreOperations" + m_AwsCryptographyKeyStoreTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyKeyStoreTypes" + m_AwsCryptographyMaterialProvidersOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyMaterialProvidersOperations" + m_AwsCryptographyMaterialProvidersTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyMaterialProvidersTypes" + m_AwsKmsDiscoveryKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsDiscoveryKeyring" + m_AwsKmsEcdhKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsEcdhKeyring" + m_AwsKmsHierarchicalKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsHierarchicalKeyring" + m_AwsKmsKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsKeyring" + m_AwsKmsMrkAreUnique "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkAreUnique" + m_AwsKmsMrkDiscoveryKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkDiscoveryKeyring" + m_AwsKmsMrkKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkKeyring" + m_AwsKmsMrkMatchForDecrypt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkMatchForDecrypt" + m_AwsKmsRsaKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsRsaKeyring" + m_AwsKmsUtils "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsUtils" + m_CMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CMM" + m_CacheConstants "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CacheConstants" + m_CanonicalEncryptionContext "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CanonicalEncryptionContext" + m_Commitment "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Commitment" + m_Constants "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Constants" + m_CreateKeyStoreTable "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CreateKeyStoreTable" + m_CreateKeys "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CreateKeys" + m_DDBKeystoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DDBKeystoreOperations" + m_DefaultCMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DefaultCMM" + m_DefaultClientSupplier "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DefaultClientSupplier" + m_Defaults "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Defaults" + m_DiscoveryMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DiscoveryMultiKeyring" + m_EcdhEdkWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/EcdhEdkWrapping" + m_EdkWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/EdkWrapping" + m_ErrorMessages "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/ErrorMessages" + m_GetKeys "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/GetKeys" + m_IntermediateKeyWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/IntermediateKeyWrapping" + m_KMSKeystoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KMSKeystoreOperations" + m_KeyStore "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KeyStore" + m_KeyStoreErrorMessages "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KeyStoreErrorMessages" + m_Keyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Keyring" + m_KmsArn "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KmsArn" + m_LocalCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/LocalCMC" + m_MaterialProviders "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MaterialProviders" + m_MaterialWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MaterialWrapping" + m_Materials "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Materials" + m_MrkAwareDiscoveryMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MrkAwareDiscoveryMultiKeyring" + m_MrkAwareStrictMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MrkAwareStrictMultiKeyring" + m_MultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MultiKeyring" + m_RawAESKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawAESKeyring" + m_RawECDHKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawECDHKeyring" + m_RawRSAKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawRSAKeyring" + m_RequiredEncryptionContextCMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RequiredEncryptionContextCMM" + m_StormTracker "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StormTracker" + m_StormTrackingCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StormTrackingCMC" + m_StrictMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StrictMultiKeyring" + m_Structure "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Structure" + m_SynchronizedLocalCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/SynchronizedLocalCMC" + m_Utils "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Utils" + m_AtomicPrimitives "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AtomicPrimitives" + m_AwsCryptographyPrimitivesOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AwsCryptographyPrimitivesOperations" + m_AwsCryptographyPrimitivesTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AwsCryptographyPrimitivesTypes" + m_Digest "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/Digest" + m_HKDF "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/HKDF" + m_KdfCtr "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/KdfCtr" + m_Random "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/Random" + m_WrappedHKDF "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/WrappedHKDF" + m_WrappedHMAC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/WrappedHMAC" + m_Actions "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Actions" + m_Base64 "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Base64" + m_Base64Lemmas "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Base64Lemmas" + m_BoundedInts "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/BoundedInts" + m_DivInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivInternals" + m_DivInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivInternalsNonlinear" + m_DivMod "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivMod" + m_FileIO "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/FileIO" + m_FloatCompare "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/FloatCompare" + m_Functions "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Functions" + m_GeneralInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/GeneralInternals" + m_GetOpt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/GetOpt" + m_HexStrings "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/HexStrings" + m_Logarithm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Logarithm" + m__Math "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Math_" + m_ModInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/ModInternals" + m_ModInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/ModInternalsNonlinear" + m_Mul "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Mul" + m_MulInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/MulInternals" + m_MulInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/MulInternalsNonlinear" + m_Power "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Power" + m_Relations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Relations" + m_Seq "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Seq" + m_Seq_MergeSort "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Seq_MergeSort" + m_Sorting "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Sorting" + m_StandardLibrary "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary" + m_StandardLibraryInterop "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibraryInterop" + m_StandardLibrary_MemoryMath "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_MemoryMath" + m_StandardLibrary_Sequence "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_Sequence" + m_StandardLibrary_String "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_String" + m_StandardLibrary_UInt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_UInt" + m_Streams "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Streams" + m_UnicodeStrings "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/UnicodeStrings" + m__Unicode "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Unicode_" + m_Utf16EncodingForm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Utf16EncodingForm" + m_Utf8EncodingForm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Utf8EncodingForm" + m_Wrappers "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Wrappers" + m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations" + m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes" + m_AwsCryptographyDbEncryptionSdkDynamoDbOperations "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbOperations" + m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes" + m_AwsCryptographyDbEncryptionSdkDynamoDbTypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbTypes" + m_AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations" + m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes" + m_BaseBeacon "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/BaseBeacon" + m_BatchExecuteStatementTransform "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/BatchExecuteStatementTransform" + m_BatchGetItemTransform "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/BatchGetItemTransform" + m_BatchWriteItemTransform "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/BatchWriteItemTransform" + m_Canonize "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/Canonize" + m_CompoundBeacon "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/CompoundBeacon" + m_DdbMiddlewareConfig "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DdbMiddlewareConfig" + m_DdbStatement "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DdbStatement" + m_DdbVirtualFields "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DdbVirtualFields" + m_DeleteItemTransform "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DeleteItemTransform" + m_DynamoDBFilterExpr "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDBFilterExpr" + m_DynamoDBSupport "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDBSupport" + m_DynamoDbEncryption "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbEncryption" + m_DynamoDbEncryptionBranchKeyIdSupplier "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbEncryptionBranchKeyIdSupplier" + m_DynamoDbEncryptionUtil "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbEncryptionUtil" + m_DynamoDbItemEncryptor "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbItemEncryptor" + m_DynamoDbItemEncryptorUtil "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbItemEncryptorUtil" + m_DynamoDbMiddlewareSupport "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbMiddlewareSupport" + m_DynamoDbNormalizeNumber "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbNormalizeNumber" + m_DynamoDbUpdateExpr "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbUpdateExpr" + m_DynamoToStruct "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoToStruct" + m_ExecuteStatementTransform "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/ExecuteStatementTransform" + m_GetItemTransform "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/GetItemTransform" + m_InternalLegacyOverride "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/InternalLegacyOverride" + m__Maps "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/Maps_" + m_OptimizedMergeSort "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/OptimizedMergeSort" + m_PutItemTransform "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/PutItemTransform" + m_QueryTransform "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/QueryTransform" + m_ScanTransform "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/ScanTransform" + m_SearchConfigToInfo "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/SearchConfigToInfo" + m_SearchableEncryptionInfo "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/SearchableEncryptionInfo" + m_Sets "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/Sets" + m_SortCanon "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/SortCanon" + m_StructuredEncryption "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryption" + m_StructuredEncryptionCrypt "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionCrypt" + m_StructuredEncryptionFooter "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionFooter" + m_StructuredEncryptionHeader "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionHeader" + m_StructuredEncryptionPaths "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionPaths" + m_StructuredEncryptionUtil "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionUtil" + m_TermLoc "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/TermLoc" + m_TransactGetItemsTransform "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/TransactGetItemsTransform" + m_TransactWriteItemsTransform "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/TransactWriteItemsTransform" + m_UpdateItemTransform "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/UpdateItemTransform" + m__System "github.com/dafny-lang/DafnyRuntimeGo/v4/System_" + _dafny "github.com/dafny-lang/DafnyRuntimeGo/v4/dafny" +) + +var _ = os.Args +var _ _dafny.Dummy__ +var _ m__System.Dummy__ +var _ m_Wrappers.Dummy__ +var _ m_BoundedInts.Dummy__ +var _ m_StandardLibrary_UInt.Dummy__ +var _ m_StandardLibrary_MemoryMath.Dummy__ +var _ m_StandardLibrary_Sequence.Dummy__ +var _ m_StandardLibrary_String.Dummy__ +var _ m_StandardLibrary.Dummy__ +var _ m_AwsCryptographyPrimitivesTypes.Dummy__ +var _ m_Random.Dummy__ +var _ m_Digest.Dummy__ +var _ m_WrappedHMAC.Dummy__ +var _ m_HKDF.Dummy__ +var _ m_WrappedHKDF.Dummy__ +var _ m_KdfCtr.Dummy__ +var _ m_AwsCryptographyPrimitivesOperations.Dummy__ +var _ m_AtomicPrimitives.Dummy__ +var _ m_ComAmazonawsDynamodbTypes.Dummy__ +var _ m_ComAmazonawsKmsTypes.Dummy__ +var _ m_AwsCryptographyKeyStoreTypes.Dummy__ +var _ m_AwsCryptographyMaterialProvidersTypes.Dummy__ +var _ m_Base64.Dummy__ +var _ m_AlgorithmSuites.Dummy__ +var _ m_Materials.Dummy__ +var _ m_Keyring.Dummy__ +var _ m_Relations.Dummy__ +var _ m_Seq_MergeSort.Dummy__ +var _ m__Math.Dummy__ +var _ m_Seq.Dummy__ +var _ m_Actions.Dummy__ +var _ m_CanonicalEncryptionContext.Dummy__ +var _ m_MaterialWrapping.Dummy__ +var _ m_IntermediateKeyWrapping.Dummy__ +var _ m_EdkWrapping.Dummy__ +var _ m_ErrorMessages.Dummy__ +var _ m_RawAESKeyring.Dummy__ +var _ m_AwsArnParsing.Dummy__ +var _ m_Constants.Dummy__ +var _ m_EcdhEdkWrapping.Dummy__ +var _ m_RawECDHKeyring.Dummy__ +var _ m_RawRSAKeyring.Dummy__ +var _ m_AwsKmsMrkMatchForDecrypt.Dummy__ +var _ m_AwsKmsUtils.Dummy__ +var _ m_AwsKmsKeyring.Dummy__ +var _ m_AwsKmsDiscoveryKeyring.Dummy__ +var _ m_AwsKmsEcdhKeyring.Dummy__ +var _ m_FileIO.Dummy__ +var _ m_LocalCMC.Dummy__ +var _ m_SynchronizedLocalCMC.Dummy__ +var _ m_StormTracker.Dummy__ +var _ m_StormTrackingCMC.Dummy__ +var _ m_CacheConstants.Dummy__ +var _ m_AwsKmsHierarchicalKeyring.Dummy__ +var _ m_AwsKmsMrkDiscoveryKeyring.Dummy__ +var _ m_AwsKmsMrkKeyring.Dummy__ +var _ m_AwsKmsRsaKeyring.Dummy__ +var _ m_MultiKeyring.Dummy__ +var _ m_AwsKmsMrkAreUnique.Dummy__ +var _ m_StrictMultiKeyring.Dummy__ +var _ m_Com_Amazonaws_Kms.Dummy__ +var _ m_Com_Amazonaws_Dynamodb.Dummy__ +var _ m_DiscoveryMultiKeyring.Dummy__ +var _ m_MrkAwareDiscoveryMultiKeyring.Dummy__ +var _ m_MrkAwareStrictMultiKeyring.Dummy__ +var _ m_CMM.Dummy__ +var _ m_Defaults.Dummy__ +var _ m_Commitment.Dummy__ +var _ m_DefaultCMM.Dummy__ +var _ m_DefaultClientSupplier.Dummy__ +var _ m_Utils.Dummy__ +var _ m_RequiredEncryptionContextCMM.Dummy__ +var _ m_AwsCryptographyMaterialProvidersOperations.Dummy__ +var _ m_MaterialProviders.Dummy__ +var _ m_KeyStoreErrorMessages.Dummy__ +var _ m_KmsArn.Dummy__ +var _ m_Structure.Dummy__ +var _ m_KMSKeystoreOperations.Dummy__ +var _ m_DDBKeystoreOperations.Dummy__ +var _ m_CreateKeys.Dummy__ +var _ m_CreateKeyStoreTable.Dummy__ +var _ m_GetKeys.Dummy__ +var _ m_AwsCryptographyKeyStoreOperations.Dummy__ +var _ m_KeyStore.Dummy__ +var _ m__Unicode.Dummy__ +var _ m_Functions.Dummy__ +var _ m_Utf8EncodingForm.Dummy__ +var _ m_Utf16EncodingForm.Dummy__ +var _ m_UnicodeStrings.Dummy__ +var _ m_GeneralInternals.Dummy__ +var _ m_MulInternalsNonlinear.Dummy__ +var _ m_MulInternals.Dummy__ +var _ m_Mul.Dummy__ +var _ m_ModInternalsNonlinear.Dummy__ +var _ m_DivInternalsNonlinear.Dummy__ +var _ m_ModInternals.Dummy__ +var _ m_DivInternals.Dummy__ +var _ m_DivMod.Dummy__ +var _ m_Power.Dummy__ +var _ m_Logarithm.Dummy__ +var _ m_StandardLibraryInterop.Dummy__ +var _ m_Streams.Dummy__ +var _ m_Sorting.Dummy__ +var _ m_HexStrings.Dummy__ +var _ m_GetOpt.Dummy__ +var _ m_FloatCompare.Dummy__ +var _ m_Base64Lemmas.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Dummy__ +var _ m_StructuredEncryptionUtil.Dummy__ +var _ m_Sets.Dummy__ +var _ m_StructuredEncryptionPaths.Dummy__ +var _ m_StructuredEncryptionHeader.Dummy__ +var _ m_StructuredEncryptionFooter.Dummy__ +var _ m_OptimizedMergeSort.Dummy__ +var _ m_SortCanon.Dummy__ +var _ m_Canonize.Dummy__ +var _ m_StructuredEncryptionCrypt.Dummy__ +var _ m__Maps.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations.Dummy__ +var _ m_StructuredEncryption.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Dummy__ +var _ m_DynamoDbEncryptionUtil.Dummy__ +var _ m_DynamoDbNormalizeNumber.Dummy__ +var _ m_DynamoToStruct.Dummy__ +var _ m_DynamoDbItemEncryptorUtil.Dummy__ +var _ m_InternalLegacyOverride.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations.Dummy__ +var _ m_DynamoDbItemEncryptor.Dummy__ +var _ m_DynamoDbEncryptionBranchKeyIdSupplier.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbOperations.Dummy__ +var _ m_DynamoDbEncryption.Dummy__ +var _ m_TermLoc.Dummy__ +var _ m_DdbVirtualFields.Dummy__ +var _ m_DynamoDbUpdateExpr.Dummy__ +var _ m_BaseBeacon.Dummy__ +var _ m_CompoundBeacon.Dummy__ +var _ m_SearchableEncryptionInfo.Dummy__ +var _ m_DynamoDBFilterExpr.Dummy__ +var _ m_DynamoDBSupport.Dummy__ +var _ m_SearchConfigToInfo.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Dummy__ +var _ m_DdbMiddlewareConfig.Dummy__ +var _ m_DdbStatement.Dummy__ +var _ m_DynamoDbMiddlewareSupport.Dummy__ +var _ m_PutItemTransform.Dummy__ +var _ m_GetItemTransform.Dummy__ +var _ m_UpdateItemTransform.Dummy__ +var _ m_BatchWriteItemTransform.Dummy__ +var _ m_TransactWriteItemsTransform.Dummy__ +var _ m_BatchGetItemTransform.Dummy__ +var _ m_ScanTransform.Dummy__ +var _ m_QueryTransform.Dummy__ +var _ m_TransactGetItemsTransform.Dummy__ +var _ m_DeleteItemTransform.Dummy__ +var _ m_ExecuteStatementTransform.Dummy__ +var _ m_BatchExecuteStatementTransform.Dummy__ + +type Dummy__ struct{} + +// Definition of class Default__ +type Default__ struct { + dummy byte +} + +func New_Default___() *Default__ { + _this := Default__{} + + return &_this +} + +type CompanionStruct_Default___ struct { +} + +var Companion_Default___ = CompanionStruct_Default___{} + +func (_this *Default__) Equals(other *Default__) bool { + return _this == other +} + +func (_this *Default__) EqualsGeneric(x interface{}) bool { + other, ok := x.(*Default__) + return ok && _this.Equals(other) +} + +func (*Default__) String() string { + return "ExecuteTransactionTransform.Default__" +} +func (_this *Default__) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = &Default__{} + +func (_static *CompanionStruct_Default___) Input(config m_DdbMiddlewareConfig.Config, input m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.ExecuteTransactionInputTransformInput) m_Wrappers.Result { + var output m_Wrappers.Result = m_Wrappers.Result{} + _ = output + var _hi0 _dafny.Int = _dafny.IntOfUint32((((input).Dtor_sdkInput()).Dtor_TransactStatements()).Cardinality()) + _ = _hi0 + for _0_i := _dafny.Zero; _0_i.Cmp(_hi0) < 0; _0_i = _0_i.Plus(_dafny.One) { + var _1_statement _dafny.Sequence + _ = _1_statement + _1_statement = ((((input).Dtor_sdkInput()).Dtor_TransactStatements()).Select((_0_i).Uint32()).(m_ComAmazonawsDynamodbTypes.ParameterizedStatement)).Dtor_Statement() + var _2_tableName m_Wrappers.Result + _ = _2_tableName + _2_tableName = m_DdbStatement.Companion_Default___.TableFromStatement(_1_statement) + if (_2_tableName).Is_Failure() { + output = m_Wrappers.Companion_Result_.Create_Failure_(m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_Error_.Create_DynamoDbEncryptionTransformsException_((_2_tableName).Dtor_error().(_dafny.Sequence))) + return output + } + if ((config).Dtor_tableEncryptionConfigs()).Contains((_2_tableName).Dtor_value().(_dafny.Sequence)) { + output = m_DdbMiddlewareConfig.Companion_Default___.MakeError(_dafny.SeqOfString("ExecuteTransaction not Supported on encrypted tables.")) + return output + } + } + output = m_Wrappers.Companion_Result_.Create_Success_(m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_ExecuteTransactionInputTransformOutput_.Create_ExecuteTransactionInputTransformOutput_((input).Dtor_sdkInput())) + return output + return output +} +func (_static *CompanionStruct_Default___) Output(config m_DdbMiddlewareConfig.Config, input m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.ExecuteTransactionOutputTransformInput) m_Wrappers.Result { + var output m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_ExecuteTransactionOutputTransformOutput_.Default()) + _ = output + output = m_Wrappers.Companion_Result_.Create_Success_(m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_ExecuteTransactionOutputTransformOutput_.Create_ExecuteTransactionOutputTransformOutput_((input).Dtor_sdkOutput())) + return output + return output +} + +// End of class Default__ diff --git a/releases/go/dynamodb-esdk/GetItemTransform/GetItemTransform.go b/releases/go/dynamodb-esdk/GetItemTransform/GetItemTransform.go new file mode 100644 index 000000000..5581a7e17 --- /dev/null +++ b/releases/go/dynamodb-esdk/GetItemTransform/GetItemTransform.go @@ -0,0 +1,402 @@ +// Package GetItemTransform +// Dafny module GetItemTransform compiled into Go + +package GetItemTransform + +import ( + os "os" + + m_ComAmazonawsDynamodbTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/dynamodb/ComAmazonawsDynamodbTypes" + m_Com_Amazonaws_Dynamodb "github.com/aws/aws-cryptographic-material-providers-library/releases/go/dynamodb/Com_Amazonaws_Dynamodb" + m_ComAmazonawsKmsTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/kms/ComAmazonawsKmsTypes" + m_Com_Amazonaws_Kms "github.com/aws/aws-cryptographic-material-providers-library/releases/go/kms/Com_Amazonaws_Kms" + m_AlgorithmSuites "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AlgorithmSuites" + m_AwsArnParsing "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsArnParsing" + m_AwsCryptographyKeyStoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyKeyStoreOperations" + m_AwsCryptographyKeyStoreTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyKeyStoreTypes" + m_AwsCryptographyMaterialProvidersOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyMaterialProvidersOperations" + m_AwsCryptographyMaterialProvidersTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyMaterialProvidersTypes" + m_AwsKmsDiscoveryKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsDiscoveryKeyring" + m_AwsKmsEcdhKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsEcdhKeyring" + m_AwsKmsHierarchicalKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsHierarchicalKeyring" + m_AwsKmsKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsKeyring" + m_AwsKmsMrkAreUnique "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkAreUnique" + m_AwsKmsMrkDiscoveryKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkDiscoveryKeyring" + m_AwsKmsMrkKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkKeyring" + m_AwsKmsMrkMatchForDecrypt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkMatchForDecrypt" + m_AwsKmsRsaKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsRsaKeyring" + m_AwsKmsUtils "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsUtils" + m_CMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CMM" + m_CacheConstants "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CacheConstants" + m_CanonicalEncryptionContext "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CanonicalEncryptionContext" + m_Commitment "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Commitment" + m_Constants "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Constants" + m_CreateKeyStoreTable "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CreateKeyStoreTable" + m_CreateKeys "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CreateKeys" + m_DDBKeystoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DDBKeystoreOperations" + m_DefaultCMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DefaultCMM" + m_DefaultClientSupplier "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DefaultClientSupplier" + m_Defaults "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Defaults" + m_DiscoveryMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DiscoveryMultiKeyring" + m_EcdhEdkWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/EcdhEdkWrapping" + m_EdkWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/EdkWrapping" + m_ErrorMessages "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/ErrorMessages" + m_GetKeys "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/GetKeys" + m_IntermediateKeyWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/IntermediateKeyWrapping" + m_KMSKeystoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KMSKeystoreOperations" + m_KeyStore "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KeyStore" + m_KeyStoreErrorMessages "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KeyStoreErrorMessages" + m_Keyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Keyring" + m_KmsArn "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KmsArn" + m_LocalCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/LocalCMC" + m_MaterialProviders "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MaterialProviders" + m_MaterialWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MaterialWrapping" + m_Materials "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Materials" + m_MrkAwareDiscoveryMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MrkAwareDiscoveryMultiKeyring" + m_MrkAwareStrictMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MrkAwareStrictMultiKeyring" + m_MultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MultiKeyring" + m_RawAESKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawAESKeyring" + m_RawECDHKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawECDHKeyring" + m_RawRSAKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawRSAKeyring" + m_RequiredEncryptionContextCMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RequiredEncryptionContextCMM" + m_StormTracker "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StormTracker" + m_StormTrackingCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StormTrackingCMC" + m_StrictMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StrictMultiKeyring" + m_Structure "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Structure" + m_SynchronizedLocalCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/SynchronizedLocalCMC" + m_Utils "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Utils" + m_AtomicPrimitives "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AtomicPrimitives" + m_AwsCryptographyPrimitivesOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AwsCryptographyPrimitivesOperations" + m_AwsCryptographyPrimitivesTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AwsCryptographyPrimitivesTypes" + m_Digest "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/Digest" + m_HKDF "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/HKDF" + m_KdfCtr "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/KdfCtr" + m_Random "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/Random" + m_WrappedHKDF "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/WrappedHKDF" + m_WrappedHMAC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/WrappedHMAC" + m_Actions "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Actions" + m_Base64 "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Base64" + m_Base64Lemmas "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Base64Lemmas" + m_BoundedInts "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/BoundedInts" + m_DivInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivInternals" + m_DivInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivInternalsNonlinear" + m_DivMod "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivMod" + m_FileIO "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/FileIO" + m_FloatCompare "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/FloatCompare" + m_Functions "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Functions" + m_GeneralInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/GeneralInternals" + m_GetOpt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/GetOpt" + m_HexStrings "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/HexStrings" + m_Logarithm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Logarithm" + m__Math "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Math_" + m_ModInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/ModInternals" + m_ModInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/ModInternalsNonlinear" + m_Mul "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Mul" + m_MulInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/MulInternals" + m_MulInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/MulInternalsNonlinear" + m_Power "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Power" + m_Relations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Relations" + m_Seq "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Seq" + m_Seq_MergeSort "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Seq_MergeSort" + m_Sorting "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Sorting" + m_StandardLibrary "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary" + m_StandardLibraryInterop "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibraryInterop" + m_StandardLibrary_MemoryMath "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_MemoryMath" + m_StandardLibrary_Sequence "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_Sequence" + m_StandardLibrary_String "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_String" + m_StandardLibrary_UInt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_UInt" + m_Streams "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Streams" + m_UnicodeStrings "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/UnicodeStrings" + m__Unicode "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Unicode_" + m_Utf16EncodingForm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Utf16EncodingForm" + m_Utf8EncodingForm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Utf8EncodingForm" + m_Wrappers "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Wrappers" + m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations" + m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes" + m_AwsCryptographyDbEncryptionSdkDynamoDbOperations "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbOperations" + m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes" + m_AwsCryptographyDbEncryptionSdkDynamoDbTypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbTypes" + m_AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations" + m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes" + m_BaseBeacon "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/BaseBeacon" + m_Canonize "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/Canonize" + m_CompoundBeacon "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/CompoundBeacon" + m_DdbMiddlewareConfig "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DdbMiddlewareConfig" + m_DdbStatement "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DdbStatement" + m_DdbVirtualFields "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DdbVirtualFields" + m_DynamoDBFilterExpr "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDBFilterExpr" + m_DynamoDBSupport "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDBSupport" + m_DynamoDbEncryption "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbEncryption" + m_DynamoDbEncryptionBranchKeyIdSupplier "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbEncryptionBranchKeyIdSupplier" + m_DynamoDbEncryptionUtil "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbEncryptionUtil" + m_DynamoDbItemEncryptor "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbItemEncryptor" + m_DynamoDbItemEncryptorUtil "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbItemEncryptorUtil" + m_DynamoDbMiddlewareSupport "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbMiddlewareSupport" + m_DynamoDbNormalizeNumber "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbNormalizeNumber" + m_DynamoDbUpdateExpr "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbUpdateExpr" + m_DynamoToStruct "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoToStruct" + m_InternalLegacyOverride "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/InternalLegacyOverride" + m__Maps "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/Maps_" + m_OptimizedMergeSort "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/OptimizedMergeSort" + m_PutItemTransform "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/PutItemTransform" + m_SearchConfigToInfo "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/SearchConfigToInfo" + m_SearchableEncryptionInfo "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/SearchableEncryptionInfo" + m_Sets "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/Sets" + m_SortCanon "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/SortCanon" + m_StructuredEncryption "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryption" + m_StructuredEncryptionCrypt "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionCrypt" + m_StructuredEncryptionFooter "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionFooter" + m_StructuredEncryptionHeader "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionHeader" + m_StructuredEncryptionPaths "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionPaths" + m_StructuredEncryptionUtil "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionUtil" + m_TermLoc "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/TermLoc" + m__System "github.com/dafny-lang/DafnyRuntimeGo/v4/System_" + _dafny "github.com/dafny-lang/DafnyRuntimeGo/v4/dafny" +) + +var _ = os.Args +var _ _dafny.Dummy__ +var _ m__System.Dummy__ +var _ m_Wrappers.Dummy__ +var _ m_BoundedInts.Dummy__ +var _ m_StandardLibrary_UInt.Dummy__ +var _ m_StandardLibrary_MemoryMath.Dummy__ +var _ m_StandardLibrary_Sequence.Dummy__ +var _ m_StandardLibrary_String.Dummy__ +var _ m_StandardLibrary.Dummy__ +var _ m_AwsCryptographyPrimitivesTypes.Dummy__ +var _ m_Random.Dummy__ +var _ m_Digest.Dummy__ +var _ m_WrappedHMAC.Dummy__ +var _ m_HKDF.Dummy__ +var _ m_WrappedHKDF.Dummy__ +var _ m_KdfCtr.Dummy__ +var _ m_AwsCryptographyPrimitivesOperations.Dummy__ +var _ m_AtomicPrimitives.Dummy__ +var _ m_ComAmazonawsDynamodbTypes.Dummy__ +var _ m_ComAmazonawsKmsTypes.Dummy__ +var _ m_AwsCryptographyKeyStoreTypes.Dummy__ +var _ m_AwsCryptographyMaterialProvidersTypes.Dummy__ +var _ m_Base64.Dummy__ +var _ m_AlgorithmSuites.Dummy__ +var _ m_Materials.Dummy__ +var _ m_Keyring.Dummy__ +var _ m_Relations.Dummy__ +var _ m_Seq_MergeSort.Dummy__ +var _ m__Math.Dummy__ +var _ m_Seq.Dummy__ +var _ m_Actions.Dummy__ +var _ m_CanonicalEncryptionContext.Dummy__ +var _ m_MaterialWrapping.Dummy__ +var _ m_IntermediateKeyWrapping.Dummy__ +var _ m_EdkWrapping.Dummy__ +var _ m_ErrorMessages.Dummy__ +var _ m_RawAESKeyring.Dummy__ +var _ m_AwsArnParsing.Dummy__ +var _ m_Constants.Dummy__ +var _ m_EcdhEdkWrapping.Dummy__ +var _ m_RawECDHKeyring.Dummy__ +var _ m_RawRSAKeyring.Dummy__ +var _ m_AwsKmsMrkMatchForDecrypt.Dummy__ +var _ m_AwsKmsUtils.Dummy__ +var _ m_AwsKmsKeyring.Dummy__ +var _ m_AwsKmsDiscoveryKeyring.Dummy__ +var _ m_AwsKmsEcdhKeyring.Dummy__ +var _ m_FileIO.Dummy__ +var _ m_LocalCMC.Dummy__ +var _ m_SynchronizedLocalCMC.Dummy__ +var _ m_StormTracker.Dummy__ +var _ m_StormTrackingCMC.Dummy__ +var _ m_CacheConstants.Dummy__ +var _ m_AwsKmsHierarchicalKeyring.Dummy__ +var _ m_AwsKmsMrkDiscoveryKeyring.Dummy__ +var _ m_AwsKmsMrkKeyring.Dummy__ +var _ m_AwsKmsRsaKeyring.Dummy__ +var _ m_MultiKeyring.Dummy__ +var _ m_AwsKmsMrkAreUnique.Dummy__ +var _ m_StrictMultiKeyring.Dummy__ +var _ m_Com_Amazonaws_Kms.Dummy__ +var _ m_Com_Amazonaws_Dynamodb.Dummy__ +var _ m_DiscoveryMultiKeyring.Dummy__ +var _ m_MrkAwareDiscoveryMultiKeyring.Dummy__ +var _ m_MrkAwareStrictMultiKeyring.Dummy__ +var _ m_CMM.Dummy__ +var _ m_Defaults.Dummy__ +var _ m_Commitment.Dummy__ +var _ m_DefaultCMM.Dummy__ +var _ m_DefaultClientSupplier.Dummy__ +var _ m_Utils.Dummy__ +var _ m_RequiredEncryptionContextCMM.Dummy__ +var _ m_AwsCryptographyMaterialProvidersOperations.Dummy__ +var _ m_MaterialProviders.Dummy__ +var _ m_KeyStoreErrorMessages.Dummy__ +var _ m_KmsArn.Dummy__ +var _ m_Structure.Dummy__ +var _ m_KMSKeystoreOperations.Dummy__ +var _ m_DDBKeystoreOperations.Dummy__ +var _ m_CreateKeys.Dummy__ +var _ m_CreateKeyStoreTable.Dummy__ +var _ m_GetKeys.Dummy__ +var _ m_AwsCryptographyKeyStoreOperations.Dummy__ +var _ m_KeyStore.Dummy__ +var _ m__Unicode.Dummy__ +var _ m_Functions.Dummy__ +var _ m_Utf8EncodingForm.Dummy__ +var _ m_Utf16EncodingForm.Dummy__ +var _ m_UnicodeStrings.Dummy__ +var _ m_GeneralInternals.Dummy__ +var _ m_MulInternalsNonlinear.Dummy__ +var _ m_MulInternals.Dummy__ +var _ m_Mul.Dummy__ +var _ m_ModInternalsNonlinear.Dummy__ +var _ m_DivInternalsNonlinear.Dummy__ +var _ m_ModInternals.Dummy__ +var _ m_DivInternals.Dummy__ +var _ m_DivMod.Dummy__ +var _ m_Power.Dummy__ +var _ m_Logarithm.Dummy__ +var _ m_StandardLibraryInterop.Dummy__ +var _ m_Streams.Dummy__ +var _ m_Sorting.Dummy__ +var _ m_HexStrings.Dummy__ +var _ m_GetOpt.Dummy__ +var _ m_FloatCompare.Dummy__ +var _ m_Base64Lemmas.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Dummy__ +var _ m_StructuredEncryptionUtil.Dummy__ +var _ m_Sets.Dummy__ +var _ m_StructuredEncryptionPaths.Dummy__ +var _ m_StructuredEncryptionHeader.Dummy__ +var _ m_StructuredEncryptionFooter.Dummy__ +var _ m_OptimizedMergeSort.Dummy__ +var _ m_SortCanon.Dummy__ +var _ m_Canonize.Dummy__ +var _ m_StructuredEncryptionCrypt.Dummy__ +var _ m__Maps.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations.Dummy__ +var _ m_StructuredEncryption.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Dummy__ +var _ m_DynamoDbEncryptionUtil.Dummy__ +var _ m_DynamoDbNormalizeNumber.Dummy__ +var _ m_DynamoToStruct.Dummy__ +var _ m_DynamoDbItemEncryptorUtil.Dummy__ +var _ m_InternalLegacyOverride.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations.Dummy__ +var _ m_DynamoDbItemEncryptor.Dummy__ +var _ m_DynamoDbEncryptionBranchKeyIdSupplier.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbOperations.Dummy__ +var _ m_DynamoDbEncryption.Dummy__ +var _ m_TermLoc.Dummy__ +var _ m_DdbVirtualFields.Dummy__ +var _ m_DynamoDbUpdateExpr.Dummy__ +var _ m_BaseBeacon.Dummy__ +var _ m_CompoundBeacon.Dummy__ +var _ m_SearchableEncryptionInfo.Dummy__ +var _ m_DynamoDBFilterExpr.Dummy__ +var _ m_DynamoDBSupport.Dummy__ +var _ m_SearchConfigToInfo.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Dummy__ +var _ m_DdbMiddlewareConfig.Dummy__ +var _ m_DdbStatement.Dummy__ +var _ m_DynamoDbMiddlewareSupport.Dummy__ +var _ m_PutItemTransform.Dummy__ + +type Dummy__ struct{} + +// Definition of class Default__ +type Default__ struct { + dummy byte +} + +func New_Default___() *Default__ { + _this := Default__{} + + return &_this +} + +type CompanionStruct_Default___ struct { +} + +var Companion_Default___ = CompanionStruct_Default___{} + +func (_this *Default__) Equals(other *Default__) bool { + return _this == other +} + +func (_this *Default__) EqualsGeneric(x interface{}) bool { + other, ok := x.(*Default__) + return ok && _this.Equals(other) +} + +func (*Default__) String() string { + return "GetItemTransform.Default__" +} +func (_this *Default__) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = &Default__{} + +func (_static *CompanionStruct_Default___) Input(config m_DdbMiddlewareConfig.Config, input m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.GetItemInputTransformInput) m_Wrappers.Result { + var output m_Wrappers.Result = m_Wrappers.Result{} + _ = output + output = m_Wrappers.Companion_Result_.Create_Success_(m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_GetItemInputTransformOutput_.Create_GetItemInputTransformOutput_((input).Dtor_sdkInput())) + return output + return output +} +func (_static *CompanionStruct_Default___) Output(config m_DdbMiddlewareConfig.Config, input m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.GetItemOutputTransformInput) m_Wrappers.Result { + var output m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_GetItemOutputTransformOutput_.Default()) + _ = output + var _0_tableName _dafny.Sequence + _ = _0_tableName + _0_tableName = ((input).Dtor_originalInput()).Dtor_TableName() + if (!((config).Dtor_tableEncryptionConfigs()).Contains(_0_tableName)) || (m_DynamoDbMiddlewareSupport.Companion_Default___.NoMap(((input).Dtor_sdkOutput()).Dtor_Item())) { + output = m_Wrappers.Companion_Result_.Create_Success_(m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_GetItemOutputTransformOutput_.Create_GetItemOutputTransformOutput_((input).Dtor_sdkOutput())) + return output + } + var _1_tableConfig m_DdbMiddlewareConfig.TableConfig + _ = _1_tableConfig + _1_tableConfig = ((config).Dtor_tableEncryptionConfigs()).Get(_0_tableName).(m_DdbMiddlewareConfig.TableConfig) + var _2_decryptRes m_Wrappers.Result + _ = _2_decryptRes + var _out0 m_Wrappers.Result + _ = _out0 + _out0 = ((_1_tableConfig).Dtor_itemEncryptor()).DecryptItem(m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Companion_DecryptItemInput_.Create_DecryptItemInput_((((input).Dtor_sdkOutput()).Dtor_Item()).Dtor_value().(_dafny.Map))) + _2_decryptRes = _out0 + var _3_valueOrError0 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Companion_DecryptItemOutput_.Default()) + _ = _3_valueOrError0 + _3_valueOrError0 = m_DdbMiddlewareConfig.Companion_Default___.MapError(_2_decryptRes) + if (_3_valueOrError0).IsFailure() { + output = (_3_valueOrError0).PropagateFailure() + return output + } + var _4_decrypted m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.DecryptItemOutput + _ = _4_decrypted + _4_decrypted = (_3_valueOrError0).Extract().(m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.DecryptItemOutput) + var _5_valueOrError1 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(_dafny.EmptyMap) + _ = _5_valueOrError1 + _5_valueOrError1 = m_DynamoDbMiddlewareSupport.Companion_Default___.RemoveBeacons(_1_tableConfig, (_4_decrypted).Dtor_plaintextItem()) + if (_5_valueOrError1).IsFailure() { + output = (_5_valueOrError1).PropagateFailure() + return output + } + var _6_item _dafny.Map + _ = _6_item + _6_item = (_5_valueOrError1).Extract().(_dafny.Map) + var _pat_let_tv0 = _6_item + _ = _pat_let_tv0 + output = m_Wrappers.Companion_Result_.Create_Success_(m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_GetItemOutputTransformOutput_.Create_GetItemOutputTransformOutput_(func(_pat_let27_0 m_ComAmazonawsDynamodbTypes.GetItemOutput) m_ComAmazonawsDynamodbTypes.GetItemOutput { + return func(_7_dt__update__tmp_h0 m_ComAmazonawsDynamodbTypes.GetItemOutput) m_ComAmazonawsDynamodbTypes.GetItemOutput { + return func(_pat_let28_0 m_Wrappers.Option) m_ComAmazonawsDynamodbTypes.GetItemOutput { + return func(_8_dt__update_hItem_h0 m_Wrappers.Option) m_ComAmazonawsDynamodbTypes.GetItemOutput { + return m_ComAmazonawsDynamodbTypes.Companion_GetItemOutput_.Create_GetItemOutput_(_8_dt__update_hItem_h0, (_7_dt__update__tmp_h0).Dtor_ConsumedCapacity()) + }(_pat_let28_0) + }(m_Wrappers.Companion_Option_.Create_Some_(_pat_let_tv0)) + }(_pat_let27_0) + }((input).Dtor_sdkOutput()))) + return output + return output +} + +// End of class Default__ diff --git a/releases/go/dynamodb-esdk/InternalLegacyOverride/InternalLegacyOverride.go b/releases/go/dynamodb-esdk/InternalLegacyOverride/InternalLegacyOverride.go new file mode 100644 index 000000000..9dd9ee6ea --- /dev/null +++ b/releases/go/dynamodb-esdk/InternalLegacyOverride/InternalLegacyOverride.go @@ -0,0 +1,349 @@ +// Package InternalLegacyOverride +// Dafny module InternalLegacyOverride compiled into Go + +package InternalLegacyOverride + +import ( + os "os" + + m_ComAmazonawsDynamodbTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/dynamodb/ComAmazonawsDynamodbTypes" + m_Com_Amazonaws_Dynamodb "github.com/aws/aws-cryptographic-material-providers-library/releases/go/dynamodb/Com_Amazonaws_Dynamodb" + m_ComAmazonawsKmsTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/kms/ComAmazonawsKmsTypes" + m_Com_Amazonaws_Kms "github.com/aws/aws-cryptographic-material-providers-library/releases/go/kms/Com_Amazonaws_Kms" + m_AlgorithmSuites "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AlgorithmSuites" + m_AwsArnParsing "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsArnParsing" + m_AwsCryptographyKeyStoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyKeyStoreOperations" + m_AwsCryptographyKeyStoreTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyKeyStoreTypes" + m_AwsCryptographyMaterialProvidersOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyMaterialProvidersOperations" + m_AwsCryptographyMaterialProvidersTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyMaterialProvidersTypes" + m_AwsKmsDiscoveryKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsDiscoveryKeyring" + m_AwsKmsEcdhKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsEcdhKeyring" + m_AwsKmsHierarchicalKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsHierarchicalKeyring" + m_AwsKmsKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsKeyring" + m_AwsKmsMrkAreUnique "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkAreUnique" + m_AwsKmsMrkDiscoveryKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkDiscoveryKeyring" + m_AwsKmsMrkKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkKeyring" + m_AwsKmsMrkMatchForDecrypt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkMatchForDecrypt" + m_AwsKmsRsaKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsRsaKeyring" + m_AwsKmsUtils "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsUtils" + m_CMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CMM" + m_CacheConstants "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CacheConstants" + m_CanonicalEncryptionContext "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CanonicalEncryptionContext" + m_Commitment "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Commitment" + m_Constants "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Constants" + m_CreateKeyStoreTable "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CreateKeyStoreTable" + m_CreateKeys "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CreateKeys" + m_DDBKeystoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DDBKeystoreOperations" + m_DefaultCMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DefaultCMM" + m_DefaultClientSupplier "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DefaultClientSupplier" + m_Defaults "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Defaults" + m_DiscoveryMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DiscoveryMultiKeyring" + m_EcdhEdkWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/EcdhEdkWrapping" + m_EdkWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/EdkWrapping" + m_ErrorMessages "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/ErrorMessages" + m_GetKeys "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/GetKeys" + m_IntermediateKeyWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/IntermediateKeyWrapping" + m_KMSKeystoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KMSKeystoreOperations" + m_KeyStore "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KeyStore" + m_KeyStoreErrorMessages "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KeyStoreErrorMessages" + m_Keyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Keyring" + m_KmsArn "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KmsArn" + m_LocalCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/LocalCMC" + m_MaterialProviders "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MaterialProviders" + m_MaterialWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MaterialWrapping" + m_Materials "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Materials" + m_MrkAwareDiscoveryMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MrkAwareDiscoveryMultiKeyring" + m_MrkAwareStrictMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MrkAwareStrictMultiKeyring" + m_MultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MultiKeyring" + m_RawAESKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawAESKeyring" + m_RawECDHKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawECDHKeyring" + m_RawRSAKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawRSAKeyring" + m_RequiredEncryptionContextCMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RequiredEncryptionContextCMM" + m_StormTracker "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StormTracker" + m_StormTrackingCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StormTrackingCMC" + m_StrictMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StrictMultiKeyring" + m_Structure "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Structure" + m_SynchronizedLocalCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/SynchronizedLocalCMC" + m_Utils "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Utils" + m_AtomicPrimitives "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AtomicPrimitives" + m_AwsCryptographyPrimitivesOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AwsCryptographyPrimitivesOperations" + m_AwsCryptographyPrimitivesTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AwsCryptographyPrimitivesTypes" + m_Digest "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/Digest" + m_HKDF "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/HKDF" + m_KdfCtr "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/KdfCtr" + m_Random "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/Random" + m_WrappedHKDF "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/WrappedHKDF" + m_WrappedHMAC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/WrappedHMAC" + m_Actions "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Actions" + m_Base64 "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Base64" + m_Base64Lemmas "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Base64Lemmas" + m_BoundedInts "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/BoundedInts" + m_DivInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivInternals" + m_DivInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivInternalsNonlinear" + m_DivMod "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivMod" + m_FileIO "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/FileIO" + m_FloatCompare "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/FloatCompare" + m_Functions "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Functions" + m_GeneralInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/GeneralInternals" + m_GetOpt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/GetOpt" + m_HexStrings "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/HexStrings" + m_Logarithm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Logarithm" + m__Math "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Math_" + m_ModInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/ModInternals" + m_ModInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/ModInternalsNonlinear" + m_Mul "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Mul" + m_MulInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/MulInternals" + m_MulInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/MulInternalsNonlinear" + m_Power "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Power" + m_Relations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Relations" + m_Seq "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Seq" + m_Seq_MergeSort "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Seq_MergeSort" + m_Sorting "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Sorting" + m_StandardLibrary "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary" + m_StandardLibraryInterop "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibraryInterop" + m_StandardLibrary_MemoryMath "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_MemoryMath" + m_StandardLibrary_Sequence "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_Sequence" + m_StandardLibrary_String "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_String" + m_StandardLibrary_UInt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_UInt" + m_Streams "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Streams" + m_UnicodeStrings "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/UnicodeStrings" + m__Unicode "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Unicode_" + m_Utf16EncodingForm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Utf16EncodingForm" + m_Utf8EncodingForm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Utf8EncodingForm" + m_Wrappers "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Wrappers" + m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes" + m_AwsCryptographyDbEncryptionSdkDynamoDbTypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbTypes" + m_AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations" + m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes" + m_Canonize "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/Canonize" + m_DynamoDbEncryptionUtil "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbEncryptionUtil" + m_DynamoDbItemEncryptorUtil "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbItemEncryptorUtil" + m_DynamoDbNormalizeNumber "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbNormalizeNumber" + m_DynamoToStruct "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoToStruct" + m__Maps "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/Maps_" + m_OptimizedMergeSort "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/OptimizedMergeSort" + m_Sets "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/Sets" + m_SortCanon "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/SortCanon" + m_StructuredEncryption "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryption" + m_StructuredEncryptionCrypt "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionCrypt" + m_StructuredEncryptionFooter "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionFooter" + m_StructuredEncryptionHeader "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionHeader" + m_StructuredEncryptionPaths "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionPaths" + m_StructuredEncryptionUtil "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionUtil" + m__System "github.com/dafny-lang/DafnyRuntimeGo/v4/System_" + _dafny "github.com/dafny-lang/DafnyRuntimeGo/v4/dafny" +) + +var _ = os.Args +var _ _dafny.Dummy__ +var _ m__System.Dummy__ +var _ m_Wrappers.Dummy__ +var _ m_BoundedInts.Dummy__ +var _ m_StandardLibrary_UInt.Dummy__ +var _ m_StandardLibrary_MemoryMath.Dummy__ +var _ m_StandardLibrary_Sequence.Dummy__ +var _ m_StandardLibrary_String.Dummy__ +var _ m_StandardLibrary.Dummy__ +var _ m_AwsCryptographyPrimitivesTypes.Dummy__ +var _ m_Random.Dummy__ +var _ m_Digest.Dummy__ +var _ m_WrappedHMAC.Dummy__ +var _ m_HKDF.Dummy__ +var _ m_WrappedHKDF.Dummy__ +var _ m_KdfCtr.Dummy__ +var _ m_AwsCryptographyPrimitivesOperations.Dummy__ +var _ m_AtomicPrimitives.Dummy__ +var _ m_ComAmazonawsDynamodbTypes.Dummy__ +var _ m_ComAmazonawsKmsTypes.Dummy__ +var _ m_AwsCryptographyKeyStoreTypes.Dummy__ +var _ m_AwsCryptographyMaterialProvidersTypes.Dummy__ +var _ m_Base64.Dummy__ +var _ m_AlgorithmSuites.Dummy__ +var _ m_Materials.Dummy__ +var _ m_Keyring.Dummy__ +var _ m_Relations.Dummy__ +var _ m_Seq_MergeSort.Dummy__ +var _ m__Math.Dummy__ +var _ m_Seq.Dummy__ +var _ m_Actions.Dummy__ +var _ m_CanonicalEncryptionContext.Dummy__ +var _ m_MaterialWrapping.Dummy__ +var _ m_IntermediateKeyWrapping.Dummy__ +var _ m_EdkWrapping.Dummy__ +var _ m_ErrorMessages.Dummy__ +var _ m_RawAESKeyring.Dummy__ +var _ m_AwsArnParsing.Dummy__ +var _ m_Constants.Dummy__ +var _ m_EcdhEdkWrapping.Dummy__ +var _ m_RawECDHKeyring.Dummy__ +var _ m_RawRSAKeyring.Dummy__ +var _ m_AwsKmsMrkMatchForDecrypt.Dummy__ +var _ m_AwsKmsUtils.Dummy__ +var _ m_AwsKmsKeyring.Dummy__ +var _ m_AwsKmsDiscoveryKeyring.Dummy__ +var _ m_AwsKmsEcdhKeyring.Dummy__ +var _ m_FileIO.Dummy__ +var _ m_LocalCMC.Dummy__ +var _ m_SynchronizedLocalCMC.Dummy__ +var _ m_StormTracker.Dummy__ +var _ m_StormTrackingCMC.Dummy__ +var _ m_CacheConstants.Dummy__ +var _ m_AwsKmsHierarchicalKeyring.Dummy__ +var _ m_AwsKmsMrkDiscoveryKeyring.Dummy__ +var _ m_AwsKmsMrkKeyring.Dummy__ +var _ m_AwsKmsRsaKeyring.Dummy__ +var _ m_MultiKeyring.Dummy__ +var _ m_AwsKmsMrkAreUnique.Dummy__ +var _ m_StrictMultiKeyring.Dummy__ +var _ m_Com_Amazonaws_Kms.Dummy__ +var _ m_Com_Amazonaws_Dynamodb.Dummy__ +var _ m_DiscoveryMultiKeyring.Dummy__ +var _ m_MrkAwareDiscoveryMultiKeyring.Dummy__ +var _ m_MrkAwareStrictMultiKeyring.Dummy__ +var _ m_CMM.Dummy__ +var _ m_Defaults.Dummy__ +var _ m_Commitment.Dummy__ +var _ m_DefaultCMM.Dummy__ +var _ m_DefaultClientSupplier.Dummy__ +var _ m_Utils.Dummy__ +var _ m_RequiredEncryptionContextCMM.Dummy__ +var _ m_AwsCryptographyMaterialProvidersOperations.Dummy__ +var _ m_MaterialProviders.Dummy__ +var _ m_KeyStoreErrorMessages.Dummy__ +var _ m_KmsArn.Dummy__ +var _ m_Structure.Dummy__ +var _ m_KMSKeystoreOperations.Dummy__ +var _ m_DDBKeystoreOperations.Dummy__ +var _ m_CreateKeys.Dummy__ +var _ m_CreateKeyStoreTable.Dummy__ +var _ m_GetKeys.Dummy__ +var _ m_AwsCryptographyKeyStoreOperations.Dummy__ +var _ m_KeyStore.Dummy__ +var _ m__Unicode.Dummy__ +var _ m_Functions.Dummy__ +var _ m_Utf8EncodingForm.Dummy__ +var _ m_Utf16EncodingForm.Dummy__ +var _ m_UnicodeStrings.Dummy__ +var _ m_GeneralInternals.Dummy__ +var _ m_MulInternalsNonlinear.Dummy__ +var _ m_MulInternals.Dummy__ +var _ m_Mul.Dummy__ +var _ m_ModInternalsNonlinear.Dummy__ +var _ m_DivInternalsNonlinear.Dummy__ +var _ m_ModInternals.Dummy__ +var _ m_DivInternals.Dummy__ +var _ m_DivMod.Dummy__ +var _ m_Power.Dummy__ +var _ m_Logarithm.Dummy__ +var _ m_StandardLibraryInterop.Dummy__ +var _ m_Streams.Dummy__ +var _ m_Sorting.Dummy__ +var _ m_HexStrings.Dummy__ +var _ m_GetOpt.Dummy__ +var _ m_FloatCompare.Dummy__ +var _ m_Base64Lemmas.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Dummy__ +var _ m_StructuredEncryptionUtil.Dummy__ +var _ m_Sets.Dummy__ +var _ m_StructuredEncryptionPaths.Dummy__ +var _ m_StructuredEncryptionHeader.Dummy__ +var _ m_StructuredEncryptionFooter.Dummy__ +var _ m_OptimizedMergeSort.Dummy__ +var _ m_SortCanon.Dummy__ +var _ m_Canonize.Dummy__ +var _ m_StructuredEncryptionCrypt.Dummy__ +var _ m__Maps.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations.Dummy__ +var _ m_StructuredEncryption.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Dummy__ +var _ m_DynamoDbEncryptionUtil.Dummy__ +var _ m_DynamoDbNormalizeNumber.Dummy__ +var _ m_DynamoToStruct.Dummy__ +var _ m_DynamoDbItemEncryptorUtil.Dummy__ + +type Dummy__ struct{} + +// Definition of class InternalLegacyOverride +type InternalLegacyOverride struct { + dummy byte +} + +func New_InternalLegacyOverride_() *InternalLegacyOverride { + _this := InternalLegacyOverride{} + + return &_this +} + +type CompanionStruct_InternalLegacyOverride_ struct { +} + +var Companion_InternalLegacyOverride_ = CompanionStruct_InternalLegacyOverride_{} + +func (_this *InternalLegacyOverride) Equals(other *InternalLegacyOverride) bool { + return _this == other +} + +func (_this *InternalLegacyOverride) EqualsGeneric(x interface{}) bool { + other, ok := x.(*InternalLegacyOverride) + return ok && _this.Equals(other) +} + +func (*InternalLegacyOverride) String() string { + return "InternalLegacyOverride.InternalLegacyOverride" +} + +func Type_InternalLegacyOverride_() _dafny.TypeDescriptor { + return type_InternalLegacyOverride_{} +} + +type type_InternalLegacyOverride_ struct { +} + +func (_this type_InternalLegacyOverride_) Default() interface{} { + return (*InternalLegacyOverride)(nil) +} + +func (_this type_InternalLegacyOverride_) String() string { + return "InternalLegacyOverride.InternalLegacyOverride" +} +func (_this *InternalLegacyOverride) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = &InternalLegacyOverride{} + +func (_static *CompanionStruct_InternalLegacyOverride_) CreateBuildSuccess(value m_Wrappers.Option) m_Wrappers.Result { + return m_Wrappers.Companion_Result_.Create_Success_(value) +} +func (_static *CompanionStruct_InternalLegacyOverride_) CreateBuildFailure(error_ m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Error) m_Wrappers.Result { + return m_Wrappers.Companion_Result_.Create_Failure_(error_) +} +func (_static *CompanionStruct_InternalLegacyOverride_) CreateInternalLegacyOverrideSome(value *InternalLegacyOverride) m_Wrappers.Option { + return m_Wrappers.Companion_Option_.Create_Some_(value) +} +func (_static *CompanionStruct_InternalLegacyOverride_) CreateInternalLegacyOverrideNone() m_Wrappers.Option { + return m_Wrappers.Companion_Option_.Create_None_() +} +func (_this *InternalLegacyOverride) CreateEncryptItemSuccess(value m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.EncryptItemOutput) m_Wrappers.Result { + { + return m_Wrappers.Companion_Result_.Create_Success_(value) + } +} +func (_this *InternalLegacyOverride) CreateEncryptItemFailure(error_ m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Error) m_Wrappers.Result { + { + return m_Wrappers.Companion_Result_.Create_Failure_(error_) + } +} +func (_this *InternalLegacyOverride) CreateDecryptItemSuccess(value m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.DecryptItemOutput) m_Wrappers.Result { + { + return m_Wrappers.Companion_Result_.Create_Success_(value) + } +} +func (_this *InternalLegacyOverride) CreateDecryptItemFailure(error_ m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Error) m_Wrappers.Result { + { + return m_Wrappers.Companion_Result_.Create_Failure_(error_) + } +} + +// End of class InternalLegacyOverride diff --git a/releases/go/dynamodb-esdk/InternalLegacyOverride/extern.go b/releases/go/dynamodb-esdk/InternalLegacyOverride/extern.go new file mode 100644 index 000000000..fceec46fd --- /dev/null +++ b/releases/go/dynamodb-esdk/InternalLegacyOverride/extern.go @@ -0,0 +1,45 @@ +package InternalLegacyOverride + +import ( + "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Wrappers" + "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbTypes" + "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkdynamodbitemencryptorsmithygeneratedtypes" +) + +var policy = AwsCryptographyDbEncryptionSdkDynamoDbTypes.Companion_LegacyPolicy_.Create_FORBID__LEGACY__ENCRYPT__FORBID__LEGACY__DECRYPT_() + +func (InternalLegacyOverride) Policy() AwsCryptographyDbEncryptionSdkDynamoDbTypes.LegacyPolicy { + return policy +} + +func (CompanionStruct_InternalLegacyOverride_) Build(config interface{}) Wrappers.Result { + // Go does not support the Legacy DDB-EC + if policy.Is_FORBID__LEGACY__ENCRYPT__FORBID__LEGACY__DECRYPT() { + return Wrappers.Companion_Result_.Create_Success_(Wrappers.Companion_Option_.Create_None_()) + } + err := &awscryptographydbencryptionsdkdynamodbitemencryptorsmithygeneratedtypes.DynamoDbItemEncryptorException{ + Message: "Legacy configuration unsupported.", + } + return Wrappers.Companion_Result_.Create_Failure_(err) +} + +func (InternalLegacyOverride) EncryptItem(config interface{}) Wrappers.Result { + // Go does not support the Legacy DDB-EC. So, this function will not be reached. + err := &awscryptographydbencryptionsdkdynamodbitemencryptorsmithygeneratedtypes.DynamoDbItemEncryptorException{ + Message: "Legacy configuration unsupported.", + } + return Wrappers.Companion_Result_.Create_Failure_(err) +} + +func (InternalLegacyOverride) DecryptItem(config interface{}) Wrappers.Result { + // Go does not support the Legacy DDB-EC. So, this function will not be reached. + err := &awscryptographydbencryptionsdkdynamodbitemencryptorsmithygeneratedtypes.DynamoDbItemEncryptorException{ + Message: "Legacy configuration unsupported.", + } + return Wrappers.Companion_Result_.Create_Failure_(err) +} + +func (InternalLegacyOverride) IsLegacyInput(config interface{}) bool { + // Go does not support the Legacy DDB-EC + return false +} diff --git a/releases/go/dynamodb-esdk/Maps_/Maps_.go b/releases/go/dynamodb-esdk/Maps_/Maps_.go new file mode 100644 index 000000000..a0f0f4c3a --- /dev/null +++ b/releases/go/dynamodb-esdk/Maps_/Maps_.go @@ -0,0 +1,353 @@ +// Package _Maps +// Dafny module _Maps compiled into Go + +package _Maps + +import ( + os "os" + + m_ComAmazonawsDynamodbTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/dynamodb/ComAmazonawsDynamodbTypes" + m_Com_Amazonaws_Dynamodb "github.com/aws/aws-cryptographic-material-providers-library/releases/go/dynamodb/Com_Amazonaws_Dynamodb" + m_ComAmazonawsKmsTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/kms/ComAmazonawsKmsTypes" + m_Com_Amazonaws_Kms "github.com/aws/aws-cryptographic-material-providers-library/releases/go/kms/Com_Amazonaws_Kms" + m_AlgorithmSuites "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AlgorithmSuites" + m_AwsArnParsing "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsArnParsing" + m_AwsCryptographyKeyStoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyKeyStoreOperations" + m_AwsCryptographyKeyStoreTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyKeyStoreTypes" + m_AwsCryptographyMaterialProvidersOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyMaterialProvidersOperations" + m_AwsCryptographyMaterialProvidersTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyMaterialProvidersTypes" + m_AwsKmsDiscoveryKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsDiscoveryKeyring" + m_AwsKmsEcdhKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsEcdhKeyring" + m_AwsKmsHierarchicalKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsHierarchicalKeyring" + m_AwsKmsKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsKeyring" + m_AwsKmsMrkAreUnique "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkAreUnique" + m_AwsKmsMrkDiscoveryKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkDiscoveryKeyring" + m_AwsKmsMrkKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkKeyring" + m_AwsKmsMrkMatchForDecrypt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkMatchForDecrypt" + m_AwsKmsRsaKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsRsaKeyring" + m_AwsKmsUtils "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsUtils" + m_CMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CMM" + m_CacheConstants "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CacheConstants" + m_CanonicalEncryptionContext "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CanonicalEncryptionContext" + m_Commitment "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Commitment" + m_Constants "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Constants" + m_CreateKeyStoreTable "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CreateKeyStoreTable" + m_CreateKeys "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CreateKeys" + m_DDBKeystoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DDBKeystoreOperations" + m_DefaultCMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DefaultCMM" + m_DefaultClientSupplier "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DefaultClientSupplier" + m_Defaults "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Defaults" + m_DiscoveryMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DiscoveryMultiKeyring" + m_EcdhEdkWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/EcdhEdkWrapping" + m_EdkWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/EdkWrapping" + m_ErrorMessages "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/ErrorMessages" + m_GetKeys "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/GetKeys" + m_IntermediateKeyWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/IntermediateKeyWrapping" + m_KMSKeystoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KMSKeystoreOperations" + m_KeyStore "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KeyStore" + m_KeyStoreErrorMessages "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KeyStoreErrorMessages" + m_Keyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Keyring" + m_KmsArn "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KmsArn" + m_LocalCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/LocalCMC" + m_MaterialProviders "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MaterialProviders" + m_MaterialWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MaterialWrapping" + m_Materials "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Materials" + m_MrkAwareDiscoveryMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MrkAwareDiscoveryMultiKeyring" + m_MrkAwareStrictMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MrkAwareStrictMultiKeyring" + m_MultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MultiKeyring" + m_RawAESKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawAESKeyring" + m_RawECDHKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawECDHKeyring" + m_RawRSAKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawRSAKeyring" + m_RequiredEncryptionContextCMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RequiredEncryptionContextCMM" + m_StormTracker "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StormTracker" + m_StormTrackingCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StormTrackingCMC" + m_StrictMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StrictMultiKeyring" + m_Structure "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Structure" + m_SynchronizedLocalCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/SynchronizedLocalCMC" + m_Utils "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Utils" + m_AtomicPrimitives "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AtomicPrimitives" + m_AwsCryptographyPrimitivesOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AwsCryptographyPrimitivesOperations" + m_AwsCryptographyPrimitivesTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AwsCryptographyPrimitivesTypes" + m_Digest "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/Digest" + m_HKDF "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/HKDF" + m_KdfCtr "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/KdfCtr" + m_Random "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/Random" + m_WrappedHKDF "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/WrappedHKDF" + m_WrappedHMAC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/WrappedHMAC" + m_Actions "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Actions" + m_Base64 "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Base64" + m_Base64Lemmas "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Base64Lemmas" + m_BoundedInts "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/BoundedInts" + m_DivInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivInternals" + m_DivInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivInternalsNonlinear" + m_DivMod "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivMod" + m_FileIO "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/FileIO" + m_FloatCompare "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/FloatCompare" + m_Functions "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Functions" + m_GeneralInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/GeneralInternals" + m_GetOpt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/GetOpt" + m_HexStrings "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/HexStrings" + m_Logarithm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Logarithm" + m__Math "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Math_" + m_ModInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/ModInternals" + m_ModInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/ModInternalsNonlinear" + m_Mul "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Mul" + m_MulInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/MulInternals" + m_MulInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/MulInternalsNonlinear" + m_Power "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Power" + m_Relations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Relations" + m_Seq "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Seq" + m_Seq_MergeSort "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Seq_MergeSort" + m_Sorting "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Sorting" + m_StandardLibrary "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary" + m_StandardLibraryInterop "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibraryInterop" + m_StandardLibrary_MemoryMath "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_MemoryMath" + m_StandardLibrary_Sequence "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_Sequence" + m_StandardLibrary_String "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_String" + m_StandardLibrary_UInt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_UInt" + m_Streams "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Streams" + m_UnicodeStrings "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/UnicodeStrings" + m__Unicode "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Unicode_" + m_Utf16EncodingForm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Utf16EncodingForm" + m_Utf8EncodingForm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Utf8EncodingForm" + m_Wrappers "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Wrappers" + m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes" + m_Canonize "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/Canonize" + m_OptimizedMergeSort "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/OptimizedMergeSort" + m_Sets "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/Sets" + m_SortCanon "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/SortCanon" + m_StructuredEncryptionCrypt "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionCrypt" + m_StructuredEncryptionFooter "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionFooter" + m_StructuredEncryptionHeader "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionHeader" + m_StructuredEncryptionPaths "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionPaths" + m_StructuredEncryptionUtil "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionUtil" + m__System "github.com/dafny-lang/DafnyRuntimeGo/v4/System_" + _dafny "github.com/dafny-lang/DafnyRuntimeGo/v4/dafny" +) + +var _ = os.Args +var _ _dafny.Dummy__ +var _ m__System.Dummy__ +var _ m_Wrappers.Dummy__ +var _ m_BoundedInts.Dummy__ +var _ m_StandardLibrary_UInt.Dummy__ +var _ m_StandardLibrary_MemoryMath.Dummy__ +var _ m_StandardLibrary_Sequence.Dummy__ +var _ m_StandardLibrary_String.Dummy__ +var _ m_StandardLibrary.Dummy__ +var _ m_AwsCryptographyPrimitivesTypes.Dummy__ +var _ m_Random.Dummy__ +var _ m_Digest.Dummy__ +var _ m_WrappedHMAC.Dummy__ +var _ m_HKDF.Dummy__ +var _ m_WrappedHKDF.Dummy__ +var _ m_KdfCtr.Dummy__ +var _ m_AwsCryptographyPrimitivesOperations.Dummy__ +var _ m_AtomicPrimitives.Dummy__ +var _ m_ComAmazonawsDynamodbTypes.Dummy__ +var _ m_ComAmazonawsKmsTypes.Dummy__ +var _ m_AwsCryptographyKeyStoreTypes.Dummy__ +var _ m_AwsCryptographyMaterialProvidersTypes.Dummy__ +var _ m_Base64.Dummy__ +var _ m_AlgorithmSuites.Dummy__ +var _ m_Materials.Dummy__ +var _ m_Keyring.Dummy__ +var _ m_Relations.Dummy__ +var _ m_Seq_MergeSort.Dummy__ +var _ m__Math.Dummy__ +var _ m_Seq.Dummy__ +var _ m_Actions.Dummy__ +var _ m_CanonicalEncryptionContext.Dummy__ +var _ m_MaterialWrapping.Dummy__ +var _ m_IntermediateKeyWrapping.Dummy__ +var _ m_EdkWrapping.Dummy__ +var _ m_ErrorMessages.Dummy__ +var _ m_RawAESKeyring.Dummy__ +var _ m_AwsArnParsing.Dummy__ +var _ m_Constants.Dummy__ +var _ m_EcdhEdkWrapping.Dummy__ +var _ m_RawECDHKeyring.Dummy__ +var _ m_RawRSAKeyring.Dummy__ +var _ m_AwsKmsMrkMatchForDecrypt.Dummy__ +var _ m_AwsKmsUtils.Dummy__ +var _ m_AwsKmsKeyring.Dummy__ +var _ m_AwsKmsDiscoveryKeyring.Dummy__ +var _ m_AwsKmsEcdhKeyring.Dummy__ +var _ m_FileIO.Dummy__ +var _ m_LocalCMC.Dummy__ +var _ m_SynchronizedLocalCMC.Dummy__ +var _ m_StormTracker.Dummy__ +var _ m_StormTrackingCMC.Dummy__ +var _ m_CacheConstants.Dummy__ +var _ m_AwsKmsHierarchicalKeyring.Dummy__ +var _ m_AwsKmsMrkDiscoveryKeyring.Dummy__ +var _ m_AwsKmsMrkKeyring.Dummy__ +var _ m_AwsKmsRsaKeyring.Dummy__ +var _ m_MultiKeyring.Dummy__ +var _ m_AwsKmsMrkAreUnique.Dummy__ +var _ m_StrictMultiKeyring.Dummy__ +var _ m_Com_Amazonaws_Kms.Dummy__ +var _ m_Com_Amazonaws_Dynamodb.Dummy__ +var _ m_DiscoveryMultiKeyring.Dummy__ +var _ m_MrkAwareDiscoveryMultiKeyring.Dummy__ +var _ m_MrkAwareStrictMultiKeyring.Dummy__ +var _ m_CMM.Dummy__ +var _ m_Defaults.Dummy__ +var _ m_Commitment.Dummy__ +var _ m_DefaultCMM.Dummy__ +var _ m_DefaultClientSupplier.Dummy__ +var _ m_Utils.Dummy__ +var _ m_RequiredEncryptionContextCMM.Dummy__ +var _ m_AwsCryptographyMaterialProvidersOperations.Dummy__ +var _ m_MaterialProviders.Dummy__ +var _ m_KeyStoreErrorMessages.Dummy__ +var _ m_KmsArn.Dummy__ +var _ m_Structure.Dummy__ +var _ m_KMSKeystoreOperations.Dummy__ +var _ m_DDBKeystoreOperations.Dummy__ +var _ m_CreateKeys.Dummy__ +var _ m_CreateKeyStoreTable.Dummy__ +var _ m_GetKeys.Dummy__ +var _ m_AwsCryptographyKeyStoreOperations.Dummy__ +var _ m_KeyStore.Dummy__ +var _ m__Unicode.Dummy__ +var _ m_Functions.Dummy__ +var _ m_Utf8EncodingForm.Dummy__ +var _ m_Utf16EncodingForm.Dummy__ +var _ m_UnicodeStrings.Dummy__ +var _ m_GeneralInternals.Dummy__ +var _ m_MulInternalsNonlinear.Dummy__ +var _ m_MulInternals.Dummy__ +var _ m_Mul.Dummy__ +var _ m_ModInternalsNonlinear.Dummy__ +var _ m_DivInternalsNonlinear.Dummy__ +var _ m_ModInternals.Dummy__ +var _ m_DivInternals.Dummy__ +var _ m_DivMod.Dummy__ +var _ m_Power.Dummy__ +var _ m_Logarithm.Dummy__ +var _ m_StandardLibraryInterop.Dummy__ +var _ m_Streams.Dummy__ +var _ m_Sorting.Dummy__ +var _ m_HexStrings.Dummy__ +var _ m_GetOpt.Dummy__ +var _ m_FloatCompare.Dummy__ +var _ m_Base64Lemmas.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Dummy__ +var _ m_StructuredEncryptionUtil.Dummy__ +var _ m_Sets.Dummy__ +var _ m_StructuredEncryptionPaths.Dummy__ +var _ m_StructuredEncryptionHeader.Dummy__ +var _ m_StructuredEncryptionFooter.Dummy__ +var _ m_OptimizedMergeSort.Dummy__ +var _ m_SortCanon.Dummy__ +var _ m_Canonize.Dummy__ +var _ m_StructuredEncryptionCrypt.Dummy__ + +type Dummy__ struct{} + +// Definition of class Default__ +type Default__ struct { + dummy byte +} + +func New_Default___() *Default__ { + _this := Default__{} + + return &_this +} + +type CompanionStruct_Default___ struct { +} + +var Companion_Default___ = CompanionStruct_Default___{} + +func (_this *Default__) Equals(other *Default__) bool { + return _this == other +} + +func (_this *Default__) EqualsGeneric(x interface{}) bool { + other, ok := x.(*Default__) + return ok && _this.Equals(other) +} + +func (*Default__) String() string { + return "_Maps.Default__" +} +func (_this *Default__) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = &Default__{} + +func (_static *CompanionStruct_Default___) Get(m _dafny.Map, x interface{}) m_Wrappers.Option { + if (m).Contains(x) { + return m_Wrappers.Companion_Option_.Create_Some_((m).Get(x).(interface{})) + } else { + return m_Wrappers.Companion_Option_.Create_None_() + } +} +func (_static *CompanionStruct_Default___) ToImap(m _dafny.Map) _dafny.Map { + return func() _dafny.Map { + var _coll0 = _dafny.NewMapBuilder() + _ = _coll0 + for _iter8 := _dafny.Iterate((m).Keys().Elements()); ; { + _compr_0, _ok8 := _iter8() + if !_ok8 { + break + } + var _0_x interface{} + _0_x = interface{}(_compr_0).(interface{}) + if (m).Contains(_0_x) { + _coll0.Add(_0_x, (m).Get(_0_x).(interface{})) + } + } + return _coll0.ToMap() + }() +} +func (_static *CompanionStruct_Default___) RemoveKeys(m _dafny.Map, xs _dafny.Set) _dafny.Map { + return (m).Subtract(xs) +} +func (_static *CompanionStruct_Default___) Remove(m _dafny.Map, x interface{}) _dafny.Map { + var _0_m_k _dafny.Map = func() _dafny.Map { + var _coll0 = _dafny.NewMapBuilder() + _ = _coll0 + for _iter9 := _dafny.Iterate((m).Keys().Elements()); ; { + _compr_0, _ok9 := _iter9() + if !_ok9 { + break + } + var _1_x_k interface{} + _1_x_k = interface{}(_compr_0).(interface{}) + if ((m).Contains(_1_x_k)) && (!_dafny.AreEqual(_1_x_k, x)) { + _coll0.Add(_1_x_k, (m).Get(_1_x_k).(interface{})) + } + } + return _coll0.ToMap() + }() + _ = _0_m_k + return _0_m_k +} +func (_static *CompanionStruct_Default___) Restrict(m _dafny.Map, xs _dafny.Set) _dafny.Map { + return func() _dafny.Map { + var _coll0 = _dafny.NewMapBuilder() + _ = _coll0 + for _iter10 := _dafny.Iterate((xs).Elements()); ; { + _compr_0, _ok10 := _iter10() + if !_ok10 { + break + } + var _0_x interface{} + _0_x = interface{}(_compr_0).(interface{}) + if ((xs).Contains(_0_x)) && ((m).Contains(_0_x)) { + _coll0.Add(_0_x, (m).Get(_0_x).(interface{})) + } + } + return _coll0.ToMap() + }() +} +func (_static *CompanionStruct_Default___) Union(m _dafny.Map, m_k _dafny.Map) _dafny.Map { + return (m).Merge(m_k) +} + +// End of class Default__ diff --git a/releases/go/dynamodb-esdk/OptimizedMergeSort/OptimizedMergeSort.go b/releases/go/dynamodb-esdk/OptimizedMergeSort/OptimizedMergeSort.go new file mode 100644 index 000000000..abf04d2ad --- /dev/null +++ b/releases/go/dynamodb-esdk/OptimizedMergeSort/OptimizedMergeSort.go @@ -0,0 +1,661 @@ +// Package OptimizedMergeSort +// Dafny module OptimizedMergeSort compiled into Go + +package OptimizedMergeSort + +import ( + os "os" + + m_ComAmazonawsDynamodbTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/dynamodb/ComAmazonawsDynamodbTypes" + m_Com_Amazonaws_Dynamodb "github.com/aws/aws-cryptographic-material-providers-library/releases/go/dynamodb/Com_Amazonaws_Dynamodb" + m_ComAmazonawsKmsTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/kms/ComAmazonawsKmsTypes" + m_Com_Amazonaws_Kms "github.com/aws/aws-cryptographic-material-providers-library/releases/go/kms/Com_Amazonaws_Kms" + m_AlgorithmSuites "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AlgorithmSuites" + m_AwsArnParsing "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsArnParsing" + m_AwsCryptographyKeyStoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyKeyStoreOperations" + m_AwsCryptographyKeyStoreTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyKeyStoreTypes" + m_AwsCryptographyMaterialProvidersOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyMaterialProvidersOperations" + m_AwsCryptographyMaterialProvidersTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyMaterialProvidersTypes" + m_AwsKmsDiscoveryKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsDiscoveryKeyring" + m_AwsKmsEcdhKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsEcdhKeyring" + m_AwsKmsHierarchicalKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsHierarchicalKeyring" + m_AwsKmsKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsKeyring" + m_AwsKmsMrkAreUnique "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkAreUnique" + m_AwsKmsMrkDiscoveryKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkDiscoveryKeyring" + m_AwsKmsMrkKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkKeyring" + m_AwsKmsMrkMatchForDecrypt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkMatchForDecrypt" + m_AwsKmsRsaKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsRsaKeyring" + m_AwsKmsUtils "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsUtils" + m_CMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CMM" + m_CacheConstants "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CacheConstants" + m_CanonicalEncryptionContext "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CanonicalEncryptionContext" + m_Commitment "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Commitment" + m_Constants "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Constants" + m_CreateKeyStoreTable "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CreateKeyStoreTable" + m_CreateKeys "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CreateKeys" + m_DDBKeystoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DDBKeystoreOperations" + m_DefaultCMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DefaultCMM" + m_DefaultClientSupplier "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DefaultClientSupplier" + m_Defaults "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Defaults" + m_DiscoveryMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DiscoveryMultiKeyring" + m_EcdhEdkWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/EcdhEdkWrapping" + m_EdkWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/EdkWrapping" + m_ErrorMessages "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/ErrorMessages" + m_GetKeys "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/GetKeys" + m_IntermediateKeyWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/IntermediateKeyWrapping" + m_KMSKeystoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KMSKeystoreOperations" + m_KeyStore "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KeyStore" + m_KeyStoreErrorMessages "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KeyStoreErrorMessages" + m_Keyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Keyring" + m_KmsArn "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KmsArn" + m_LocalCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/LocalCMC" + m_MaterialProviders "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MaterialProviders" + m_MaterialWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MaterialWrapping" + m_Materials "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Materials" + m_MrkAwareDiscoveryMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MrkAwareDiscoveryMultiKeyring" + m_MrkAwareStrictMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MrkAwareStrictMultiKeyring" + m_MultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MultiKeyring" + m_RawAESKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawAESKeyring" + m_RawECDHKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawECDHKeyring" + m_RawRSAKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawRSAKeyring" + m_RequiredEncryptionContextCMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RequiredEncryptionContextCMM" + m_StormTracker "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StormTracker" + m_StormTrackingCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StormTrackingCMC" + m_StrictMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StrictMultiKeyring" + m_Structure "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Structure" + m_SynchronizedLocalCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/SynchronizedLocalCMC" + m_Utils "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Utils" + m_AtomicPrimitives "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AtomicPrimitives" + m_AwsCryptographyPrimitivesOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AwsCryptographyPrimitivesOperations" + m_AwsCryptographyPrimitivesTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AwsCryptographyPrimitivesTypes" + m_Digest "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/Digest" + m_HKDF "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/HKDF" + m_KdfCtr "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/KdfCtr" + m_Random "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/Random" + m_WrappedHKDF "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/WrappedHKDF" + m_WrappedHMAC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/WrappedHMAC" + m_Actions "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Actions" + m_Base64 "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Base64" + m_Base64Lemmas "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Base64Lemmas" + m_BoundedInts "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/BoundedInts" + m_DivInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivInternals" + m_DivInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivInternalsNonlinear" + m_DivMod "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivMod" + m_FileIO "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/FileIO" + m_FloatCompare "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/FloatCompare" + m_Functions "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Functions" + m_GeneralInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/GeneralInternals" + m_GetOpt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/GetOpt" + m_HexStrings "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/HexStrings" + m_Logarithm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Logarithm" + m__Math "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Math_" + m_ModInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/ModInternals" + m_ModInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/ModInternalsNonlinear" + m_Mul "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Mul" + m_MulInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/MulInternals" + m_MulInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/MulInternalsNonlinear" + m_Power "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Power" + m_Relations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Relations" + m_Seq "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Seq" + m_Seq_MergeSort "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Seq_MergeSort" + m_Sorting "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Sorting" + m_StandardLibrary "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary" + m_StandardLibraryInterop "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibraryInterop" + m_StandardLibrary_MemoryMath "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_MemoryMath" + m_StandardLibrary_Sequence "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_Sequence" + m_StandardLibrary_String "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_String" + m_StandardLibrary_UInt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_UInt" + m_Streams "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Streams" + m_UnicodeStrings "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/UnicodeStrings" + m__Unicode "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Unicode_" + m_Utf16EncodingForm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Utf16EncodingForm" + m_Utf8EncodingForm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Utf8EncodingForm" + m_Wrappers "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Wrappers" + m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes" + m_Sets "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/Sets" + m_StructuredEncryptionFooter "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionFooter" + m_StructuredEncryptionHeader "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionHeader" + m_StructuredEncryptionPaths "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionPaths" + m_StructuredEncryptionUtil "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionUtil" + m__System "github.com/dafny-lang/DafnyRuntimeGo/v4/System_" + _dafny "github.com/dafny-lang/DafnyRuntimeGo/v4/dafny" +) + +var _ = os.Args +var _ _dafny.Dummy__ +var _ m__System.Dummy__ +var _ m_Wrappers.Dummy__ +var _ m_BoundedInts.Dummy__ +var _ m_StandardLibrary_UInt.Dummy__ +var _ m_StandardLibrary_MemoryMath.Dummy__ +var _ m_StandardLibrary_Sequence.Dummy__ +var _ m_StandardLibrary_String.Dummy__ +var _ m_StandardLibrary.Dummy__ +var _ m_AwsCryptographyPrimitivesTypes.Dummy__ +var _ m_Random.Dummy__ +var _ m_Digest.Dummy__ +var _ m_WrappedHMAC.Dummy__ +var _ m_HKDF.Dummy__ +var _ m_WrappedHKDF.Dummy__ +var _ m_KdfCtr.Dummy__ +var _ m_AwsCryptographyPrimitivesOperations.Dummy__ +var _ m_AtomicPrimitives.Dummy__ +var _ m_ComAmazonawsDynamodbTypes.Dummy__ +var _ m_ComAmazonawsKmsTypes.Dummy__ +var _ m_AwsCryptographyKeyStoreTypes.Dummy__ +var _ m_AwsCryptographyMaterialProvidersTypes.Dummy__ +var _ m_Base64.Dummy__ +var _ m_AlgorithmSuites.Dummy__ +var _ m_Materials.Dummy__ +var _ m_Keyring.Dummy__ +var _ m_Relations.Dummy__ +var _ m_Seq_MergeSort.Dummy__ +var _ m__Math.Dummy__ +var _ m_Seq.Dummy__ +var _ m_Actions.Dummy__ +var _ m_CanonicalEncryptionContext.Dummy__ +var _ m_MaterialWrapping.Dummy__ +var _ m_IntermediateKeyWrapping.Dummy__ +var _ m_EdkWrapping.Dummy__ +var _ m_ErrorMessages.Dummy__ +var _ m_RawAESKeyring.Dummy__ +var _ m_AwsArnParsing.Dummy__ +var _ m_Constants.Dummy__ +var _ m_EcdhEdkWrapping.Dummy__ +var _ m_RawECDHKeyring.Dummy__ +var _ m_RawRSAKeyring.Dummy__ +var _ m_AwsKmsMrkMatchForDecrypt.Dummy__ +var _ m_AwsKmsUtils.Dummy__ +var _ m_AwsKmsKeyring.Dummy__ +var _ m_AwsKmsDiscoveryKeyring.Dummy__ +var _ m_AwsKmsEcdhKeyring.Dummy__ +var _ m_FileIO.Dummy__ +var _ m_LocalCMC.Dummy__ +var _ m_SynchronizedLocalCMC.Dummy__ +var _ m_StormTracker.Dummy__ +var _ m_StormTrackingCMC.Dummy__ +var _ m_CacheConstants.Dummy__ +var _ m_AwsKmsHierarchicalKeyring.Dummy__ +var _ m_AwsKmsMrkDiscoveryKeyring.Dummy__ +var _ m_AwsKmsMrkKeyring.Dummy__ +var _ m_AwsKmsRsaKeyring.Dummy__ +var _ m_MultiKeyring.Dummy__ +var _ m_AwsKmsMrkAreUnique.Dummy__ +var _ m_StrictMultiKeyring.Dummy__ +var _ m_Com_Amazonaws_Kms.Dummy__ +var _ m_Com_Amazonaws_Dynamodb.Dummy__ +var _ m_DiscoveryMultiKeyring.Dummy__ +var _ m_MrkAwareDiscoveryMultiKeyring.Dummy__ +var _ m_MrkAwareStrictMultiKeyring.Dummy__ +var _ m_CMM.Dummy__ +var _ m_Defaults.Dummy__ +var _ m_Commitment.Dummy__ +var _ m_DefaultCMM.Dummy__ +var _ m_DefaultClientSupplier.Dummy__ +var _ m_Utils.Dummy__ +var _ m_RequiredEncryptionContextCMM.Dummy__ +var _ m_AwsCryptographyMaterialProvidersOperations.Dummy__ +var _ m_MaterialProviders.Dummy__ +var _ m_KeyStoreErrorMessages.Dummy__ +var _ m_KmsArn.Dummy__ +var _ m_Structure.Dummy__ +var _ m_KMSKeystoreOperations.Dummy__ +var _ m_DDBKeystoreOperations.Dummy__ +var _ m_CreateKeys.Dummy__ +var _ m_CreateKeyStoreTable.Dummy__ +var _ m_GetKeys.Dummy__ +var _ m_AwsCryptographyKeyStoreOperations.Dummy__ +var _ m_KeyStore.Dummy__ +var _ m__Unicode.Dummy__ +var _ m_Functions.Dummy__ +var _ m_Utf8EncodingForm.Dummy__ +var _ m_Utf16EncodingForm.Dummy__ +var _ m_UnicodeStrings.Dummy__ +var _ m_GeneralInternals.Dummy__ +var _ m_MulInternalsNonlinear.Dummy__ +var _ m_MulInternals.Dummy__ +var _ m_Mul.Dummy__ +var _ m_ModInternalsNonlinear.Dummy__ +var _ m_DivInternalsNonlinear.Dummy__ +var _ m_ModInternals.Dummy__ +var _ m_DivInternals.Dummy__ +var _ m_DivMod.Dummy__ +var _ m_Power.Dummy__ +var _ m_Logarithm.Dummy__ +var _ m_StandardLibraryInterop.Dummy__ +var _ m_Streams.Dummy__ +var _ m_Sorting.Dummy__ +var _ m_HexStrings.Dummy__ +var _ m_GetOpt.Dummy__ +var _ m_FloatCompare.Dummy__ +var _ m_Base64Lemmas.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Dummy__ +var _ m_StructuredEncryptionUtil.Dummy__ +var _ m_Sets.Dummy__ +var _ m_StructuredEncryptionPaths.Dummy__ +var _ m_StructuredEncryptionHeader.Dummy__ +var _ m_StructuredEncryptionFooter.Dummy__ + +type Dummy__ struct{} + +// Definition of class Default__ +type Default__ struct { + dummy byte +} + +func New_Default___() *Default__ { + _this := Default__{} + + return &_this +} + +type CompanionStruct_Default___ struct { +} + +var Companion_Default___ = CompanionStruct_Default___{} + +func (_this *Default__) Equals(other *Default__) bool { + return _this == other +} + +func (_this *Default__) EqualsGeneric(x interface{}) bool { + other, ok := x.(*Default__) + return ok && _this.Equals(other) +} + +func (*Default__) String() string { + return "OptimizedMergeSort.Default__" +} +func (_this *Default__) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = &Default__{} + +func (_static *CompanionStruct_Default___) MergeSort(s _dafny.Sequence, lessThanOrEq func(interface{}, interface{}) bool) _dafny.Sequence { + var result _dafny.Sequence = _dafny.EmptySeq + _ = result + if (uint64((s).Cardinality())) <= (uint64(1)) { + result = s + return result + } else { + var _0_left _dafny.Array + _ = _0_left + var _len0_0 _dafny.Int = _dafny.IntOfAny(uint64((s).Cardinality())) + _ = _len0_0 + var _nw0 _dafny.Array + _ = _nw0 + if _len0_0.Cmp(_dafny.Zero) == 0 { + _nw0 = _dafny.NewArray(_len0_0) + } else { + var _init0 func(_dafny.Int) interface{} = (func(_1_s _dafny.Sequence) func(_dafny.Int) interface{} { + return func(_2_i _dafny.Int) interface{} { + return (_1_s).Select(uint32((_2_i).Uint64())).(interface{}) + } + })(s) + _ = _init0 + var _element0_0 = _init0(_dafny.Zero) + _ = _element0_0 + _nw0 = _dafny.NewArrayFromExample(_element0_0, nil, _len0_0) + (_nw0).ArraySet1(_element0_0, 0) + var _nativeLen0_0 = (_len0_0).Int() + _ = _nativeLen0_0 + for _i0_0 := 1; _i0_0 < _nativeLen0_0; _i0_0++ { + (_nw0).ArraySet1(_init0(_dafny.IntOf(_i0_0)), _i0_0) + } + } + _0_left = _nw0 + var _3_right _dafny.Array + _ = _3_right + var _len0_1 _dafny.Int = _dafny.IntOfAny(uint64((s).Cardinality())) + _ = _len0_1 + var _nw1 _dafny.Array + _ = _nw1 + if _len0_1.Cmp(_dafny.Zero) == 0 { + _nw1 = _dafny.NewArray(_len0_1) + } else { + var _init1 func(_dafny.Int) interface{} = (func(_4_s _dafny.Sequence) func(_dafny.Int) interface{} { + return func(_5_i _dafny.Int) interface{} { + return (_4_s).Select(uint32((_5_i).Uint64())).(interface{}) + } + })(s) + _ = _init1 + var _element0_1 = _init1(_dafny.Zero) + _ = _element0_1 + _nw1 = _dafny.NewArrayFromExample(_element0_1, nil, _len0_1) + (_nw1).ArraySet1(_element0_1, 0) + var _nativeLen0_1 = (_len0_1).Int() + _ = _nativeLen0_1 + for _i0_1 := 1; _i0_1 < _nativeLen0_1; _i0_1++ { + (_nw1).ArraySet1(_init1(_dafny.IntOf(_i0_1)), _i0_1) + } + } + _3_right = _nw1 + var _6_boundedLo uint64 + _ = _6_boundedLo + var _7_boundedHi uint64 + _ = _7_boundedHi + var _rhs0 uint64 = uint64(0) + _ = _rhs0 + var _rhs1 uint64 = uint64(_dafny.ArrayLenInt(_3_right, 0)) + _ = _rhs1 + _6_boundedLo = _rhs0 + _7_boundedHi = _rhs1 + var _out0 PlaceResults + _ = _out0 + _out0 = Companion_Default___.MergeSortMethod(_0_left, _3_right, func(coer10 func(interface{}, interface{}) bool) func(interface{}, interface{}) bool { + return func(arg13 interface{}, arg14 interface{}) bool { + return coer10(arg13, arg14) + } + }(lessThanOrEq), _6_boundedLo, _7_boundedHi, Companion_PlaceResults_.Create_Right_()) + result = _dafny.ArrayRangeToSeq(_3_right, _dafny.NilInt, _dafny.NilInt) + } + return result +} +func (_static *CompanionStruct_Default___) MergeSortNat(s _dafny.Sequence, lessThanOrEq func(interface{}, interface{}) bool) _dafny.Sequence { + return Companion_Default___.MergeSort(s, func(coer11 func(interface{}, interface{}) bool) func(interface{}, interface{}) bool { + return func(arg15 interface{}, arg16 interface{}) bool { + return coer11(arg15, arg16) + } + }(lessThanOrEq)) +} +func (_static *CompanionStruct_Default___) MergeSortMethod(left _dafny.Array, right _dafny.Array, lessThanOrEq func(interface{}, interface{}) bool, lo uint64, hi uint64, where PlaceResults) PlaceResults { + var resultPlacement PlaceResults = PlaceResults{} + _ = resultPlacement + if ((hi) - (func() uint64 { return (lo) })()) == (uint64(1)) { + if (where).Equals(Companion_PlaceResults_.Create_Right_()) { + (right).ArraySet1((left).ArrayGet1(int(lo)), int((lo))) + resultPlacement = Companion_PlaceResults_.Create_Right_() + return resultPlacement + } else { + resultPlacement = Companion_PlaceResults_.Create_Left_() + return resultPlacement + } + } + var _0_mid uint64 + _ = _0_mid + _0_mid = (((hi) - (func() uint64 { return (lo) })()) / (uint64(2))) + (lo) + var _1_placement_q PlaceResults + _ = _1_placement_q + var _out0 PlaceResults + _ = _out0 + _out0 = Companion_Default___.MergeSortMethod(left, right, lessThanOrEq, lo, _0_mid, Companion_PlaceResults_.Create_Either_()) + _1_placement_q = _out0 + var _out1 PlaceResults + _ = _out1 + _out1 = Companion_Default___.MergeSortMethod(left, right, lessThanOrEq, _0_mid, hi, _1_placement_q) + if (_1_placement_q).Is_Left() { + Companion_Default___.MergeIntoRight(left, right, func(coer12 func(interface{}, interface{}) bool) func(interface{}, interface{}) bool { + return func(arg17 interface{}, arg18 interface{}) bool { + return coer12(arg17, arg18) + } + }(lessThanOrEq), lo, _0_mid, hi) + var _rhs0 PlaceResults = Companion_PlaceResults_.Create_Right_() + _ = _rhs0 + resultPlacement = _rhs0 + } else { + Companion_Default___.MergeIntoRight(right, left, func(coer13 func(interface{}, interface{}) bool) func(interface{}, interface{}) bool { + return func(arg19 interface{}, arg20 interface{}) bool { + return coer13(arg19, arg20) + } + }(lessThanOrEq), lo, _0_mid, hi) + var _rhs1 PlaceResults = Companion_PlaceResults_.Create_Left_() + _ = _rhs1 + resultPlacement = _rhs1 + } + { + goto L1 + } +L1: + if ((resultPlacement).Is_Left()) && ((where).Equals(Companion_PlaceResults_.Create_Right_())) { + var _hi0 uint64 = hi + _ = _hi0 + for _2_i := lo; _2_i < _hi0; _2_i++ { + (right).ArraySet1((left).ArrayGet1(int(_2_i)), int((_2_i))) + } + resultPlacement = Companion_PlaceResults_.Create_Right_() + } + if ((resultPlacement).Is_Right()) && ((where).Equals(Companion_PlaceResults_.Create_Left_())) { + var _hi1 uint64 = hi + _ = _hi1 + for _3_i := lo; _3_i < _hi1; _3_i++ { + (left).ArraySet1((right).ArrayGet1(int(_3_i)), int((_3_i))) + } + resultPlacement = Companion_PlaceResults_.Create_Left_() + } + return resultPlacement +} +func (_static *CompanionStruct_Default___) MergeIntoRight(left _dafny.Array, right _dafny.Array, lessThanOrEq func(interface{}, interface{}) bool, lo uint64, mid uint64, hi uint64) { + var _0_leftPosition uint64 + _ = _0_leftPosition + var _1_rightPosition uint64 + _ = _1_rightPosition + var _2_iter uint64 + _ = _2_iter + var _rhs0 uint64 = lo + _ = _rhs0 + var _rhs1 uint64 = mid + _ = _rhs1 + var _rhs2 uint64 = lo + _ = _rhs2 + _0_leftPosition = _rhs0 + _1_rightPosition = _rhs1 + _2_iter = _rhs2 + for (_2_iter) < (hi) { + if ((_0_leftPosition) == (mid)) || (((_1_rightPosition) < (hi)) && ((lessThanOrEq)((left).ArrayGet1(int(_1_rightPosition)), (left).ArrayGet1(int(_0_leftPosition))))) { + (right).ArraySet1((left).ArrayGet1(int(_1_rightPosition)), int((_2_iter))) + var _rhs3 uint64 = (_1_rightPosition) + (uint64(1)) + _ = _rhs3 + var _rhs4 uint64 = (_2_iter) + (uint64(1)) + _ = _rhs4 + _1_rightPosition = _rhs3 + _2_iter = _rhs4 + } else { + (right).ArraySet1((left).ArrayGet1(int(_0_leftPosition)), int((_2_iter))) + var _rhs5 uint64 = (_0_leftPosition) + (uint64(1)) + _ = _rhs5 + var _rhs6 uint64 = (_2_iter) + (uint64(1)) + _ = _rhs6 + _0_leftPosition = _rhs5 + _2_iter = _rhs6 + } + } +} + +// End of class Default__ + +// Definition of datatype PlaceResults +type PlaceResults struct { + Data_PlaceResults_ +} + +func (_this PlaceResults) Get_() Data_PlaceResults_ { + return _this.Data_PlaceResults_ +} + +type Data_PlaceResults_ interface { + isPlaceResults() +} + +type CompanionStruct_PlaceResults_ struct { +} + +var Companion_PlaceResults_ = CompanionStruct_PlaceResults_{} + +type PlaceResults_Left struct { +} + +func (PlaceResults_Left) isPlaceResults() {} + +func (CompanionStruct_PlaceResults_) Create_Left_() PlaceResults { + return PlaceResults{PlaceResults_Left{}} +} + +func (_this PlaceResults) Is_Left() bool { + _, ok := _this.Get_().(PlaceResults_Left) + return ok +} + +type PlaceResults_Right struct { +} + +func (PlaceResults_Right) isPlaceResults() {} + +func (CompanionStruct_PlaceResults_) Create_Right_() PlaceResults { + return PlaceResults{PlaceResults_Right{}} +} + +func (_this PlaceResults) Is_Right() bool { + _, ok := _this.Get_().(PlaceResults_Right) + return ok +} + +type PlaceResults_Either struct { +} + +func (PlaceResults_Either) isPlaceResults() {} + +func (CompanionStruct_PlaceResults_) Create_Either_() PlaceResults { + return PlaceResults{PlaceResults_Either{}} +} + +func (_this PlaceResults) Is_Either() bool { + _, ok := _this.Get_().(PlaceResults_Either) + return ok +} + +func (CompanionStruct_PlaceResults_) Default() PlaceResults { + return Companion_PlaceResults_.Create_Left_() +} + +func (_ CompanionStruct_PlaceResults_) AllSingletonConstructors() _dafny.Iterator { + i := -1 + return func() (interface{}, bool) { + i++ + switch i { + case 0: + return Companion_PlaceResults_.Create_Left_(), true + case 1: + return Companion_PlaceResults_.Create_Right_(), true + case 2: + return Companion_PlaceResults_.Create_Either_(), true + default: + return PlaceResults{}, false + } + } +} + +func (_this PlaceResults) String() string { + switch _this.Get_().(type) { + case nil: + return "null" + case PlaceResults_Left: + { + return "OptimizedMergeSort.PlaceResults.Left" + } + case PlaceResults_Right: + { + return "OptimizedMergeSort.PlaceResults.Right" + } + case PlaceResults_Either: + { + return "OptimizedMergeSort.PlaceResults.Either" + } + default: + { + return "" + } + } +} + +func (_this PlaceResults) Equals(other PlaceResults) bool { + switch _this.Get_().(type) { + case PlaceResults_Left: + { + _, ok := other.Get_().(PlaceResults_Left) + return ok + } + case PlaceResults_Right: + { + _, ok := other.Get_().(PlaceResults_Right) + return ok + } + case PlaceResults_Either: + { + _, ok := other.Get_().(PlaceResults_Either) + return ok + } + default: + { + return false // unexpected + } + } +} + +func (_this PlaceResults) EqualsGeneric(other interface{}) bool { + typed, ok := other.(PlaceResults) + return ok && _this.Equals(typed) +} + +func Type_PlaceResults_() _dafny.TypeDescriptor { + return type_PlaceResults_{} +} + +type type_PlaceResults_ struct { +} + +func (_this type_PlaceResults_) Default() interface{} { + return Companion_PlaceResults_.Default() +} + +func (_this type_PlaceResults_) String() string { + return "OptimizedMergeSort.PlaceResults" +} +func (_this PlaceResults) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = PlaceResults{} + +// End of datatype PlaceResults + +// Definition of class ResultPlacement +type ResultPlacement struct { +} + +func New_ResultPlacement_() *ResultPlacement { + _this := ResultPlacement{} + + return &_this +} + +type CompanionStruct_ResultPlacement_ struct { +} + +var Companion_ResultPlacement_ = CompanionStruct_ResultPlacement_{} + +func (*ResultPlacement) String() string { + return "OptimizedMergeSort.ResultPlacement" +} + +// End of class ResultPlacement + +func Type_ResultPlacement_() _dafny.TypeDescriptor { + return type_ResultPlacement_{} +} + +type type_ResultPlacement_ struct { +} + +func (_this type_ResultPlacement_) Default() interface{} { + return Companion_PlaceResults_.Default() +} + +func (_this type_ResultPlacement_) String() string { + return "OptimizedMergeSort.ResultPlacement" +} +func (_this *CompanionStruct_ResultPlacement_) Is_(__source PlaceResults) bool { + var _0_r PlaceResults = (__source) + _ = _0_r + return !((_0_r).Is_Either()) +} diff --git a/releases/go/dynamodb-esdk/PutItemTransform/PutItemTransform.go b/releases/go/dynamodb-esdk/PutItemTransform/PutItemTransform.go new file mode 100644 index 000000000..170480cd9 --- /dev/null +++ b/releases/go/dynamodb-esdk/PutItemTransform/PutItemTransform.go @@ -0,0 +1,508 @@ +// Package PutItemTransform +// Dafny module PutItemTransform compiled into Go + +package PutItemTransform + +import ( + os "os" + + m_ComAmazonawsDynamodbTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/dynamodb/ComAmazonawsDynamodbTypes" + m_Com_Amazonaws_Dynamodb "github.com/aws/aws-cryptographic-material-providers-library/releases/go/dynamodb/Com_Amazonaws_Dynamodb" + m_ComAmazonawsKmsTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/kms/ComAmazonawsKmsTypes" + m_Com_Amazonaws_Kms "github.com/aws/aws-cryptographic-material-providers-library/releases/go/kms/Com_Amazonaws_Kms" + m_AlgorithmSuites "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AlgorithmSuites" + m_AwsArnParsing "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsArnParsing" + m_AwsCryptographyKeyStoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyKeyStoreOperations" + m_AwsCryptographyKeyStoreTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyKeyStoreTypes" + m_AwsCryptographyMaterialProvidersOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyMaterialProvidersOperations" + m_AwsCryptographyMaterialProvidersTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyMaterialProvidersTypes" + m_AwsKmsDiscoveryKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsDiscoveryKeyring" + m_AwsKmsEcdhKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsEcdhKeyring" + m_AwsKmsHierarchicalKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsHierarchicalKeyring" + m_AwsKmsKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsKeyring" + m_AwsKmsMrkAreUnique "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkAreUnique" + m_AwsKmsMrkDiscoveryKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkDiscoveryKeyring" + m_AwsKmsMrkKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkKeyring" + m_AwsKmsMrkMatchForDecrypt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkMatchForDecrypt" + m_AwsKmsRsaKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsRsaKeyring" + m_AwsKmsUtils "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsUtils" + m_CMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CMM" + m_CacheConstants "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CacheConstants" + m_CanonicalEncryptionContext "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CanonicalEncryptionContext" + m_Commitment "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Commitment" + m_Constants "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Constants" + m_CreateKeyStoreTable "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CreateKeyStoreTable" + m_CreateKeys "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CreateKeys" + m_DDBKeystoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DDBKeystoreOperations" + m_DefaultCMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DefaultCMM" + m_DefaultClientSupplier "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DefaultClientSupplier" + m_Defaults "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Defaults" + m_DiscoveryMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DiscoveryMultiKeyring" + m_EcdhEdkWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/EcdhEdkWrapping" + m_EdkWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/EdkWrapping" + m_ErrorMessages "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/ErrorMessages" + m_GetKeys "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/GetKeys" + m_IntermediateKeyWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/IntermediateKeyWrapping" + m_KMSKeystoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KMSKeystoreOperations" + m_KeyStore "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KeyStore" + m_KeyStoreErrorMessages "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KeyStoreErrorMessages" + m_Keyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Keyring" + m_KmsArn "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KmsArn" + m_LocalCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/LocalCMC" + m_MaterialProviders "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MaterialProviders" + m_MaterialWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MaterialWrapping" + m_Materials "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Materials" + m_MrkAwareDiscoveryMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MrkAwareDiscoveryMultiKeyring" + m_MrkAwareStrictMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MrkAwareStrictMultiKeyring" + m_MultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MultiKeyring" + m_RawAESKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawAESKeyring" + m_RawECDHKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawECDHKeyring" + m_RawRSAKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawRSAKeyring" + m_RequiredEncryptionContextCMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RequiredEncryptionContextCMM" + m_StormTracker "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StormTracker" + m_StormTrackingCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StormTrackingCMC" + m_StrictMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StrictMultiKeyring" + m_Structure "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Structure" + m_SynchronizedLocalCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/SynchronizedLocalCMC" + m_Utils "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Utils" + m_AtomicPrimitives "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AtomicPrimitives" + m_AwsCryptographyPrimitivesOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AwsCryptographyPrimitivesOperations" + m_AwsCryptographyPrimitivesTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AwsCryptographyPrimitivesTypes" + m_Digest "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/Digest" + m_HKDF "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/HKDF" + m_KdfCtr "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/KdfCtr" + m_Random "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/Random" + m_WrappedHKDF "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/WrappedHKDF" + m_WrappedHMAC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/WrappedHMAC" + m_Actions "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Actions" + m_Base64 "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Base64" + m_Base64Lemmas "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Base64Lemmas" + m_BoundedInts "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/BoundedInts" + m_DivInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivInternals" + m_DivInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivInternalsNonlinear" + m_DivMod "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivMod" + m_FileIO "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/FileIO" + m_FloatCompare "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/FloatCompare" + m_Functions "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Functions" + m_GeneralInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/GeneralInternals" + m_GetOpt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/GetOpt" + m_HexStrings "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/HexStrings" + m_Logarithm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Logarithm" + m__Math "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Math_" + m_ModInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/ModInternals" + m_ModInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/ModInternalsNonlinear" + m_Mul "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Mul" + m_MulInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/MulInternals" + m_MulInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/MulInternalsNonlinear" + m_Power "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Power" + m_Relations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Relations" + m_Seq "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Seq" + m_Seq_MergeSort "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Seq_MergeSort" + m_Sorting "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Sorting" + m_StandardLibrary "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary" + m_StandardLibraryInterop "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibraryInterop" + m_StandardLibrary_MemoryMath "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_MemoryMath" + m_StandardLibrary_Sequence "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_Sequence" + m_StandardLibrary_String "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_String" + m_StandardLibrary_UInt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_UInt" + m_Streams "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Streams" + m_UnicodeStrings "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/UnicodeStrings" + m__Unicode "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Unicode_" + m_Utf16EncodingForm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Utf16EncodingForm" + m_Utf8EncodingForm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Utf8EncodingForm" + m_Wrappers "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Wrappers" + m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations" + m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes" + m_AwsCryptographyDbEncryptionSdkDynamoDbOperations "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbOperations" + m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes" + m_AwsCryptographyDbEncryptionSdkDynamoDbTypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbTypes" + m_AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations" + m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes" + m_BaseBeacon "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/BaseBeacon" + m_Canonize "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/Canonize" + m_CompoundBeacon "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/CompoundBeacon" + m_DdbMiddlewareConfig "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DdbMiddlewareConfig" + m_DdbStatement "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DdbStatement" + m_DdbVirtualFields "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DdbVirtualFields" + m_DynamoDBFilterExpr "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDBFilterExpr" + m_DynamoDBSupport "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDBSupport" + m_DynamoDbEncryption "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbEncryption" + m_DynamoDbEncryptionBranchKeyIdSupplier "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbEncryptionBranchKeyIdSupplier" + m_DynamoDbEncryptionUtil "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbEncryptionUtil" + m_DynamoDbItemEncryptor "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbItemEncryptor" + m_DynamoDbItemEncryptorUtil "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbItemEncryptorUtil" + m_DynamoDbMiddlewareSupport "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbMiddlewareSupport" + m_DynamoDbNormalizeNumber "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbNormalizeNumber" + m_DynamoDbUpdateExpr "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbUpdateExpr" + m_DynamoToStruct "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoToStruct" + m_InternalLegacyOverride "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/InternalLegacyOverride" + m__Maps "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/Maps_" + m_OptimizedMergeSort "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/OptimizedMergeSort" + m_SearchConfigToInfo "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/SearchConfigToInfo" + m_SearchableEncryptionInfo "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/SearchableEncryptionInfo" + m_Sets "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/Sets" + m_SortCanon "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/SortCanon" + m_StructuredEncryption "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryption" + m_StructuredEncryptionCrypt "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionCrypt" + m_StructuredEncryptionFooter "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionFooter" + m_StructuredEncryptionHeader "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionHeader" + m_StructuredEncryptionPaths "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionPaths" + m_StructuredEncryptionUtil "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionUtil" + m_TermLoc "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/TermLoc" + m__System "github.com/dafny-lang/DafnyRuntimeGo/v4/System_" + _dafny "github.com/dafny-lang/DafnyRuntimeGo/v4/dafny" +) + +var _ = os.Args +var _ _dafny.Dummy__ +var _ m__System.Dummy__ +var _ m_Wrappers.Dummy__ +var _ m_BoundedInts.Dummy__ +var _ m_StandardLibrary_UInt.Dummy__ +var _ m_StandardLibrary_MemoryMath.Dummy__ +var _ m_StandardLibrary_Sequence.Dummy__ +var _ m_StandardLibrary_String.Dummy__ +var _ m_StandardLibrary.Dummy__ +var _ m_AwsCryptographyPrimitivesTypes.Dummy__ +var _ m_Random.Dummy__ +var _ m_Digest.Dummy__ +var _ m_WrappedHMAC.Dummy__ +var _ m_HKDF.Dummy__ +var _ m_WrappedHKDF.Dummy__ +var _ m_KdfCtr.Dummy__ +var _ m_AwsCryptographyPrimitivesOperations.Dummy__ +var _ m_AtomicPrimitives.Dummy__ +var _ m_ComAmazonawsDynamodbTypes.Dummy__ +var _ m_ComAmazonawsKmsTypes.Dummy__ +var _ m_AwsCryptographyKeyStoreTypes.Dummy__ +var _ m_AwsCryptographyMaterialProvidersTypes.Dummy__ +var _ m_Base64.Dummy__ +var _ m_AlgorithmSuites.Dummy__ +var _ m_Materials.Dummy__ +var _ m_Keyring.Dummy__ +var _ m_Relations.Dummy__ +var _ m_Seq_MergeSort.Dummy__ +var _ m__Math.Dummy__ +var _ m_Seq.Dummy__ +var _ m_Actions.Dummy__ +var _ m_CanonicalEncryptionContext.Dummy__ +var _ m_MaterialWrapping.Dummy__ +var _ m_IntermediateKeyWrapping.Dummy__ +var _ m_EdkWrapping.Dummy__ +var _ m_ErrorMessages.Dummy__ +var _ m_RawAESKeyring.Dummy__ +var _ m_AwsArnParsing.Dummy__ +var _ m_Constants.Dummy__ +var _ m_EcdhEdkWrapping.Dummy__ +var _ m_RawECDHKeyring.Dummy__ +var _ m_RawRSAKeyring.Dummy__ +var _ m_AwsKmsMrkMatchForDecrypt.Dummy__ +var _ m_AwsKmsUtils.Dummy__ +var _ m_AwsKmsKeyring.Dummy__ +var _ m_AwsKmsDiscoveryKeyring.Dummy__ +var _ m_AwsKmsEcdhKeyring.Dummy__ +var _ m_FileIO.Dummy__ +var _ m_LocalCMC.Dummy__ +var _ m_SynchronizedLocalCMC.Dummy__ +var _ m_StormTracker.Dummy__ +var _ m_StormTrackingCMC.Dummy__ +var _ m_CacheConstants.Dummy__ +var _ m_AwsKmsHierarchicalKeyring.Dummy__ +var _ m_AwsKmsMrkDiscoveryKeyring.Dummy__ +var _ m_AwsKmsMrkKeyring.Dummy__ +var _ m_AwsKmsRsaKeyring.Dummy__ +var _ m_MultiKeyring.Dummy__ +var _ m_AwsKmsMrkAreUnique.Dummy__ +var _ m_StrictMultiKeyring.Dummy__ +var _ m_Com_Amazonaws_Kms.Dummy__ +var _ m_Com_Amazonaws_Dynamodb.Dummy__ +var _ m_DiscoveryMultiKeyring.Dummy__ +var _ m_MrkAwareDiscoveryMultiKeyring.Dummy__ +var _ m_MrkAwareStrictMultiKeyring.Dummy__ +var _ m_CMM.Dummy__ +var _ m_Defaults.Dummy__ +var _ m_Commitment.Dummy__ +var _ m_DefaultCMM.Dummy__ +var _ m_DefaultClientSupplier.Dummy__ +var _ m_Utils.Dummy__ +var _ m_RequiredEncryptionContextCMM.Dummy__ +var _ m_AwsCryptographyMaterialProvidersOperations.Dummy__ +var _ m_MaterialProviders.Dummy__ +var _ m_KeyStoreErrorMessages.Dummy__ +var _ m_KmsArn.Dummy__ +var _ m_Structure.Dummy__ +var _ m_KMSKeystoreOperations.Dummy__ +var _ m_DDBKeystoreOperations.Dummy__ +var _ m_CreateKeys.Dummy__ +var _ m_CreateKeyStoreTable.Dummy__ +var _ m_GetKeys.Dummy__ +var _ m_AwsCryptographyKeyStoreOperations.Dummy__ +var _ m_KeyStore.Dummy__ +var _ m__Unicode.Dummy__ +var _ m_Functions.Dummy__ +var _ m_Utf8EncodingForm.Dummy__ +var _ m_Utf16EncodingForm.Dummy__ +var _ m_UnicodeStrings.Dummy__ +var _ m_GeneralInternals.Dummy__ +var _ m_MulInternalsNonlinear.Dummy__ +var _ m_MulInternals.Dummy__ +var _ m_Mul.Dummy__ +var _ m_ModInternalsNonlinear.Dummy__ +var _ m_DivInternalsNonlinear.Dummy__ +var _ m_ModInternals.Dummy__ +var _ m_DivInternals.Dummy__ +var _ m_DivMod.Dummy__ +var _ m_Power.Dummy__ +var _ m_Logarithm.Dummy__ +var _ m_StandardLibraryInterop.Dummy__ +var _ m_Streams.Dummy__ +var _ m_Sorting.Dummy__ +var _ m_HexStrings.Dummy__ +var _ m_GetOpt.Dummy__ +var _ m_FloatCompare.Dummy__ +var _ m_Base64Lemmas.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Dummy__ +var _ m_StructuredEncryptionUtil.Dummy__ +var _ m_Sets.Dummy__ +var _ m_StructuredEncryptionPaths.Dummy__ +var _ m_StructuredEncryptionHeader.Dummy__ +var _ m_StructuredEncryptionFooter.Dummy__ +var _ m_OptimizedMergeSort.Dummy__ +var _ m_SortCanon.Dummy__ +var _ m_Canonize.Dummy__ +var _ m_StructuredEncryptionCrypt.Dummy__ +var _ m__Maps.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations.Dummy__ +var _ m_StructuredEncryption.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Dummy__ +var _ m_DynamoDbEncryptionUtil.Dummy__ +var _ m_DynamoDbNormalizeNumber.Dummy__ +var _ m_DynamoToStruct.Dummy__ +var _ m_DynamoDbItemEncryptorUtil.Dummy__ +var _ m_InternalLegacyOverride.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations.Dummy__ +var _ m_DynamoDbItemEncryptor.Dummy__ +var _ m_DynamoDbEncryptionBranchKeyIdSupplier.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbOperations.Dummy__ +var _ m_DynamoDbEncryption.Dummy__ +var _ m_TermLoc.Dummy__ +var _ m_DdbVirtualFields.Dummy__ +var _ m_DynamoDbUpdateExpr.Dummy__ +var _ m_BaseBeacon.Dummy__ +var _ m_CompoundBeacon.Dummy__ +var _ m_SearchableEncryptionInfo.Dummy__ +var _ m_DynamoDBFilterExpr.Dummy__ +var _ m_DynamoDBSupport.Dummy__ +var _ m_SearchConfigToInfo.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Dummy__ +var _ m_DdbMiddlewareConfig.Dummy__ +var _ m_DdbStatement.Dummy__ +var _ m_DynamoDbMiddlewareSupport.Dummy__ + +type Dummy__ struct{} + +// Definition of class Default__ +type Default__ struct { + dummy byte +} + +func New_Default___() *Default__ { + _this := Default__{} + + return &_this +} + +type CompanionStruct_Default___ struct { +} + +var Companion_Default___ = CompanionStruct_Default___{} + +func (_this *Default__) Equals(other *Default__) bool { + return _this == other +} + +func (_this *Default__) EqualsGeneric(x interface{}) bool { + other, ok := x.(*Default__) + return ok && _this.Equals(other) +} + +func (*Default__) String() string { + return "PutItemTransform.Default__" +} +func (_this *Default__) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = &Default__{} + +func (_static *CompanionStruct_Default___) Input(config m_DdbMiddlewareConfig.Config, input m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.PutItemInputTransformInput) m_Wrappers.Result { + var output m_Wrappers.Result = m_Wrappers.Result{} + _ = output + if m_DdbMiddlewareConfig.Companion_Default___.IsPlainWrite(config, ((input).Dtor_sdkInput()).Dtor_TableName()) { + output = m_Wrappers.Companion_Result_.Create_Success_(m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_PutItemInputTransformOutput_.Create_PutItemInputTransformOutput_((input).Dtor_sdkInput())) + return output + } + var _0_tableConfig m_DdbMiddlewareConfig.TableConfig + _ = _0_tableConfig + _0_tableConfig = ((config).Dtor_tableEncryptionConfigs()).Get(((input).Dtor_sdkInput()).Dtor_TableName()).(m_DdbMiddlewareConfig.TableConfig) + var _1_valueOrError0 m_Wrappers.Outcome = m_Wrappers.Companion_Outcome_.Default() + _ = _1_valueOrError0 + _1_valueOrError0 = m_Wrappers.Companion_Default___.Need(m_DynamoDbMiddlewareSupport.Companion_Default___.NoMap(((input).Dtor_sdkInput()).Dtor_Expected()), m_DdbMiddlewareConfig.Companion_Default___.E(_dafny.SeqOfString("Legacy parameter 'Expected' not supported in PutItem with Encryption."))) + if (_1_valueOrError0).IsFailure() { + output = (_1_valueOrError0).PropagateFailure() + return output + } + var _2_valueOrError1 m_Wrappers.Outcome = m_Wrappers.Companion_Outcome_.Default() + _ = _2_valueOrError1 + _2_valueOrError1 = m_Wrappers.Companion_Default___.Need((((input).Dtor_sdkInput()).Dtor_ConditionalOperator()).Is_None(), m_DdbMiddlewareConfig.Companion_Default___.E(_dafny.SeqOfString("Legacy parameter 'ConditionalOperator' not supported in PutItem with Encryption."))) + if (_2_valueOrError1).IsFailure() { + output = (_2_valueOrError1).PropagateFailure() + return output + } + var _3_valueOrError2 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(false) + _ = _3_valueOrError2 + var _out0 m_Wrappers.Result + _ = _out0 + _out0 = m_DynamoDbMiddlewareSupport.Companion_Default___.IsWriteable(_0_tableConfig, ((input).Dtor_sdkInput()).Dtor_Item()) + _3_valueOrError2 = _out0 + if (_3_valueOrError2).IsFailure() { + output = (_3_valueOrError2).PropagateFailure() + return output + } + var _4___v0 bool + _ = _4___v0 + _4___v0 = (_3_valueOrError2).Extract().(bool) + var _5_valueOrError3 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(false) + _ = _5_valueOrError3 + _5_valueOrError3 = m_DynamoDbMiddlewareSupport.Companion_Default___.TestConditionExpression(_0_tableConfig, ((input).Dtor_sdkInput()).Dtor_ConditionExpression(), ((input).Dtor_sdkInput()).Dtor_ExpressionAttributeNames(), ((input).Dtor_sdkInput()).Dtor_ExpressionAttributeValues()) + if (_5_valueOrError3).IsFailure() { + output = (_5_valueOrError3).PropagateFailure() + return output + } + var _6___v1 bool + _ = _6___v1 + _6___v1 = (_5_valueOrError3).Extract().(bool) + var _7_valueOrError4 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(_dafny.EmptyMap) + _ = _7_valueOrError4 + var _out1 m_Wrappers.Result + _ = _out1 + _out1 = m_DynamoDbMiddlewareSupport.Companion_Default___.AddSignedBeacons(_0_tableConfig, ((input).Dtor_sdkInput()).Dtor_Item()) + _7_valueOrError4 = _out1 + if (_7_valueOrError4).IsFailure() { + output = (_7_valueOrError4).PropagateFailure() + return output + } + var _8_item _dafny.Map + _ = _8_item + _8_item = (_7_valueOrError4).Extract().(_dafny.Map) + var _9_encryptRes m_Wrappers.Result + _ = _9_encryptRes + var _out2 m_Wrappers.Result + _ = _out2 + _out2 = ((_0_tableConfig).Dtor_itemEncryptor()).EncryptItem(m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Companion_EncryptItemInput_.Create_EncryptItemInput_(_8_item)) + _9_encryptRes = _out2 + var _10_valueOrError5 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Companion_EncryptItemOutput_.Default()) + _ = _10_valueOrError5 + _10_valueOrError5 = m_DdbMiddlewareConfig.Companion_Default___.MapError(_9_encryptRes) + if (_10_valueOrError5).IsFailure() { + output = (_10_valueOrError5).PropagateFailure() + return output + } + var _11_encrypted m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.EncryptItemOutput + _ = _11_encrypted + _11_encrypted = (_10_valueOrError5).Extract().(m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.EncryptItemOutput) + var _12_valueOrError6 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(m_Wrappers.Companion_Option_.Default()) + _ = _12_valueOrError6 + _12_valueOrError6 = m_DynamoDbMiddlewareSupport.Companion_Default___.GetKeyIdFromHeader(_0_tableConfig, _11_encrypted) + if (_12_valueOrError6).IsFailure() { + output = (_12_valueOrError6).PropagateFailure() + return output + } + var _13_keyId m_Wrappers.Option + _ = _13_keyId + _13_keyId = (_12_valueOrError6).Extract().(m_Wrappers.Option) + var _14_valueOrError7 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(_dafny.EmptyMap) + _ = _14_valueOrError7 + var _out3 m_Wrappers.Result + _ = _out3 + _out3 = m_DynamoDbMiddlewareSupport.Companion_Default___.GetEncryptedBeacons(_0_tableConfig, ((input).Dtor_sdkInput()).Dtor_Item(), m_DynamoDbEncryptionUtil.Companion_Default___.MaybeFromOptionKeyId(_13_keyId)) + _14_valueOrError7 = _out3 + if (_14_valueOrError7).IsFailure() { + output = (_14_valueOrError7).PropagateFailure() + return output + } + var _15_beacons _dafny.Map + _ = _15_beacons + _15_beacons = (_14_valueOrError7).Extract().(_dafny.Map) + var _pat_let_tv0 = _11_encrypted + _ = _pat_let_tv0 + var _pat_let_tv1 = _15_beacons + _ = _pat_let_tv1 + output = m_Wrappers.Companion_Result_.Create_Success_(m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_PutItemInputTransformOutput_.Create_PutItemInputTransformOutput_(func(_pat_let23_0 m_ComAmazonawsDynamodbTypes.PutItemInput) m_ComAmazonawsDynamodbTypes.PutItemInput { + return func(_16_dt__update__tmp_h0 m_ComAmazonawsDynamodbTypes.PutItemInput) m_ComAmazonawsDynamodbTypes.PutItemInput { + return func(_pat_let24_0 _dafny.Map) m_ComAmazonawsDynamodbTypes.PutItemInput { + return func(_17_dt__update_hItem_h0 _dafny.Map) m_ComAmazonawsDynamodbTypes.PutItemInput { + return m_ComAmazonawsDynamodbTypes.Companion_PutItemInput_.Create_PutItemInput_((_16_dt__update__tmp_h0).Dtor_TableName(), _17_dt__update_hItem_h0, (_16_dt__update__tmp_h0).Dtor_Expected(), (_16_dt__update__tmp_h0).Dtor_ReturnValues(), (_16_dt__update__tmp_h0).Dtor_ReturnConsumedCapacity(), (_16_dt__update__tmp_h0).Dtor_ReturnItemCollectionMetrics(), (_16_dt__update__tmp_h0).Dtor_ConditionalOperator(), (_16_dt__update__tmp_h0).Dtor_ConditionExpression(), (_16_dt__update__tmp_h0).Dtor_ExpressionAttributeNames(), (_16_dt__update__tmp_h0).Dtor_ExpressionAttributeValues(), (_16_dt__update__tmp_h0).Dtor_ReturnValuesOnConditionCheckFailure()) + }(_pat_let24_0) + }(((_pat_let_tv0).Dtor_encryptedItem()).Merge(_pat_let_tv1)) + }(_pat_let23_0) + }((input).Dtor_sdkInput()))) + return output + return output +} +func (_static *CompanionStruct_Default___) Output(config m_DdbMiddlewareConfig.Config, input m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.PutItemOutputTransformInput) m_Wrappers.Result { + var output m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_PutItemOutputTransformOutput_.Default()) + _ = output + var _0_tableName _dafny.Sequence + _ = _0_tableName + _0_tableName = ((input).Dtor_originalInput()).Dtor_TableName() + if (!((config).Dtor_tableEncryptionConfigs()).Contains(_0_tableName)) || (m_DynamoDbMiddlewareSupport.Companion_Default___.NoMap(((input).Dtor_sdkOutput()).Dtor_Attributes())) { + output = m_Wrappers.Companion_Result_.Create_Success_(m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_PutItemOutputTransformOutput_.Create_PutItemOutputTransformOutput_((input).Dtor_sdkOutput())) + return output + } + var _1_tableConfig m_DdbMiddlewareConfig.TableConfig + _ = _1_tableConfig + _1_tableConfig = ((config).Dtor_tableEncryptionConfigs()).Get(_0_tableName).(m_DdbMiddlewareConfig.TableConfig) + var _2_decryptRes m_Wrappers.Result + _ = _2_decryptRes + var _out0 m_Wrappers.Result + _ = _out0 + _out0 = ((_1_tableConfig).Dtor_itemEncryptor()).DecryptItem(m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Companion_DecryptItemInput_.Create_DecryptItemInput_((((input).Dtor_sdkOutput()).Dtor_Attributes()).Dtor_value().(_dafny.Map))) + _2_decryptRes = _out0 + var _3_valueOrError0 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Companion_DecryptItemOutput_.Default()) + _ = _3_valueOrError0 + _3_valueOrError0 = m_DdbMiddlewareConfig.Companion_Default___.MapError(_2_decryptRes) + if (_3_valueOrError0).IsFailure() { + output = (_3_valueOrError0).PropagateFailure() + return output + } + var _4_decrypted m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.DecryptItemOutput + _ = _4_decrypted + _4_decrypted = (_3_valueOrError0).Extract().(m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.DecryptItemOutput) + var _5_valueOrError1 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(_dafny.EmptyMap) + _ = _5_valueOrError1 + _5_valueOrError1 = m_DynamoDbMiddlewareSupport.Companion_Default___.RemoveBeacons(_1_tableConfig, (_4_decrypted).Dtor_plaintextItem()) + if (_5_valueOrError1).IsFailure() { + output = (_5_valueOrError1).PropagateFailure() + return output + } + var _6_item _dafny.Map + _ = _6_item + _6_item = (_5_valueOrError1).Extract().(_dafny.Map) + var _pat_let_tv0 = _6_item + _ = _pat_let_tv0 + output = m_Wrappers.Companion_Result_.Create_Success_(m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_PutItemOutputTransformOutput_.Create_PutItemOutputTransformOutput_(func(_pat_let25_0 m_ComAmazonawsDynamodbTypes.PutItemOutput) m_ComAmazonawsDynamodbTypes.PutItemOutput { + return func(_7_dt__update__tmp_h0 m_ComAmazonawsDynamodbTypes.PutItemOutput) m_ComAmazonawsDynamodbTypes.PutItemOutput { + return func(_pat_let26_0 m_Wrappers.Option) m_ComAmazonawsDynamodbTypes.PutItemOutput { + return func(_8_dt__update_hAttributes_h0 m_Wrappers.Option) m_ComAmazonawsDynamodbTypes.PutItemOutput { + return m_ComAmazonawsDynamodbTypes.Companion_PutItemOutput_.Create_PutItemOutput_(_8_dt__update_hAttributes_h0, (_7_dt__update__tmp_h0).Dtor_ConsumedCapacity(), (_7_dt__update__tmp_h0).Dtor_ItemCollectionMetrics()) + }(_pat_let26_0) + }(m_Wrappers.Companion_Option_.Create_Some_(_pat_let_tv0)) + }(_pat_let25_0) + }((input).Dtor_sdkOutput()))) + return output + return output +} + +// End of class Default__ diff --git a/releases/go/dynamodb-esdk/QueryTransform/QueryTransform.go b/releases/go/dynamodb-esdk/QueryTransform/QueryTransform.go new file mode 100644 index 000000000..62d2cf6fe --- /dev/null +++ b/releases/go/dynamodb-esdk/QueryTransform/QueryTransform.go @@ -0,0 +1,520 @@ +// Package QueryTransform +// Dafny module QueryTransform compiled into Go + +package QueryTransform + +import ( + os "os" + + m_ComAmazonawsDynamodbTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/dynamodb/ComAmazonawsDynamodbTypes" + m_Com_Amazonaws_Dynamodb "github.com/aws/aws-cryptographic-material-providers-library/releases/go/dynamodb/Com_Amazonaws_Dynamodb" + m_ComAmazonawsKmsTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/kms/ComAmazonawsKmsTypes" + m_Com_Amazonaws_Kms "github.com/aws/aws-cryptographic-material-providers-library/releases/go/kms/Com_Amazonaws_Kms" + m_AlgorithmSuites "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AlgorithmSuites" + m_AwsArnParsing "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsArnParsing" + m_AwsCryptographyKeyStoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyKeyStoreOperations" + m_AwsCryptographyKeyStoreTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyKeyStoreTypes" + m_AwsCryptographyMaterialProvidersOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyMaterialProvidersOperations" + m_AwsCryptographyMaterialProvidersTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyMaterialProvidersTypes" + m_AwsKmsDiscoveryKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsDiscoveryKeyring" + m_AwsKmsEcdhKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsEcdhKeyring" + m_AwsKmsHierarchicalKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsHierarchicalKeyring" + m_AwsKmsKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsKeyring" + m_AwsKmsMrkAreUnique "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkAreUnique" + m_AwsKmsMrkDiscoveryKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkDiscoveryKeyring" + m_AwsKmsMrkKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkKeyring" + m_AwsKmsMrkMatchForDecrypt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkMatchForDecrypt" + m_AwsKmsRsaKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsRsaKeyring" + m_AwsKmsUtils "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsUtils" + m_CMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CMM" + m_CacheConstants "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CacheConstants" + m_CanonicalEncryptionContext "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CanonicalEncryptionContext" + m_Commitment "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Commitment" + m_Constants "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Constants" + m_CreateKeyStoreTable "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CreateKeyStoreTable" + m_CreateKeys "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CreateKeys" + m_DDBKeystoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DDBKeystoreOperations" + m_DefaultCMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DefaultCMM" + m_DefaultClientSupplier "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DefaultClientSupplier" + m_Defaults "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Defaults" + m_DiscoveryMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DiscoveryMultiKeyring" + m_EcdhEdkWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/EcdhEdkWrapping" + m_EdkWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/EdkWrapping" + m_ErrorMessages "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/ErrorMessages" + m_GetKeys "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/GetKeys" + m_IntermediateKeyWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/IntermediateKeyWrapping" + m_KMSKeystoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KMSKeystoreOperations" + m_KeyStore "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KeyStore" + m_KeyStoreErrorMessages "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KeyStoreErrorMessages" + m_Keyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Keyring" + m_KmsArn "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KmsArn" + m_LocalCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/LocalCMC" + m_MaterialProviders "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MaterialProviders" + m_MaterialWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MaterialWrapping" + m_Materials "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Materials" + m_MrkAwareDiscoveryMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MrkAwareDiscoveryMultiKeyring" + m_MrkAwareStrictMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MrkAwareStrictMultiKeyring" + m_MultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MultiKeyring" + m_RawAESKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawAESKeyring" + m_RawECDHKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawECDHKeyring" + m_RawRSAKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawRSAKeyring" + m_RequiredEncryptionContextCMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RequiredEncryptionContextCMM" + m_StormTracker "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StormTracker" + m_StormTrackingCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StormTrackingCMC" + m_StrictMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StrictMultiKeyring" + m_Structure "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Structure" + m_SynchronizedLocalCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/SynchronizedLocalCMC" + m_Utils "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Utils" + m_AtomicPrimitives "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AtomicPrimitives" + m_AwsCryptographyPrimitivesOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AwsCryptographyPrimitivesOperations" + m_AwsCryptographyPrimitivesTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AwsCryptographyPrimitivesTypes" + m_Digest "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/Digest" + m_HKDF "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/HKDF" + m_KdfCtr "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/KdfCtr" + m_Random "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/Random" + m_WrappedHKDF "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/WrappedHKDF" + m_WrappedHMAC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/WrappedHMAC" + m_Actions "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Actions" + m_Base64 "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Base64" + m_Base64Lemmas "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Base64Lemmas" + m_BoundedInts "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/BoundedInts" + m_DivInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivInternals" + m_DivInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivInternalsNonlinear" + m_DivMod "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivMod" + m_FileIO "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/FileIO" + m_FloatCompare "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/FloatCompare" + m_Functions "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Functions" + m_GeneralInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/GeneralInternals" + m_GetOpt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/GetOpt" + m_HexStrings "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/HexStrings" + m_Logarithm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Logarithm" + m__Math "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Math_" + m_ModInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/ModInternals" + m_ModInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/ModInternalsNonlinear" + m_Mul "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Mul" + m_MulInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/MulInternals" + m_MulInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/MulInternalsNonlinear" + m_Power "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Power" + m_Relations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Relations" + m_Seq "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Seq" + m_Seq_MergeSort "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Seq_MergeSort" + m_Sorting "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Sorting" + m_StandardLibrary "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary" + m_StandardLibraryInterop "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibraryInterop" + m_StandardLibrary_MemoryMath "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_MemoryMath" + m_StandardLibrary_Sequence "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_Sequence" + m_StandardLibrary_String "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_String" + m_StandardLibrary_UInt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_UInt" + m_Streams "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Streams" + m_UTF8 "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/UTF8" + m_UnicodeStrings "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/UnicodeStrings" + m__Unicode "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Unicode_" + m_Utf16EncodingForm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Utf16EncodingForm" + m_Utf8EncodingForm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Utf8EncodingForm" + m_Wrappers "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Wrappers" + m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations" + m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes" + m_AwsCryptographyDbEncryptionSdkDynamoDbOperations "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbOperations" + m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes" + m_AwsCryptographyDbEncryptionSdkDynamoDbTypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbTypes" + m_AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations" + m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes" + m_BaseBeacon "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/BaseBeacon" + m_BatchGetItemTransform "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/BatchGetItemTransform" + m_BatchWriteItemTransform "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/BatchWriteItemTransform" + m_Canonize "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/Canonize" + m_CompoundBeacon "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/CompoundBeacon" + m_DdbMiddlewareConfig "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DdbMiddlewareConfig" + m_DdbStatement "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DdbStatement" + m_DdbVirtualFields "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DdbVirtualFields" + m_DynamoDBFilterExpr "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDBFilterExpr" + m_DynamoDBSupport "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDBSupport" + m_DynamoDbEncryption "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbEncryption" + m_DynamoDbEncryptionBranchKeyIdSupplier "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbEncryptionBranchKeyIdSupplier" + m_DynamoDbEncryptionUtil "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbEncryptionUtil" + m_DynamoDbItemEncryptor "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbItemEncryptor" + m_DynamoDbItemEncryptorUtil "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbItemEncryptorUtil" + m_DynamoDbMiddlewareSupport "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbMiddlewareSupport" + m_DynamoDbNormalizeNumber "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbNormalizeNumber" + m_DynamoDbUpdateExpr "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbUpdateExpr" + m_DynamoToStruct "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoToStruct" + m_GetItemTransform "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/GetItemTransform" + m_InternalLegacyOverride "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/InternalLegacyOverride" + m__Maps "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/Maps_" + m_OptimizedMergeSort "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/OptimizedMergeSort" + m_PutItemTransform "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/PutItemTransform" + m_ScanTransform "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/ScanTransform" + m_SearchConfigToInfo "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/SearchConfigToInfo" + m_SearchableEncryptionInfo "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/SearchableEncryptionInfo" + m_Sets "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/Sets" + m_SortCanon "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/SortCanon" + m_StructuredEncryption "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryption" + m_StructuredEncryptionCrypt "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionCrypt" + m_StructuredEncryptionFooter "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionFooter" + m_StructuredEncryptionHeader "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionHeader" + m_StructuredEncryptionPaths "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionPaths" + m_StructuredEncryptionUtil "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionUtil" + m_TermLoc "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/TermLoc" + m_TransactWriteItemsTransform "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/TransactWriteItemsTransform" + m_UpdateItemTransform "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/UpdateItemTransform" + m__System "github.com/dafny-lang/DafnyRuntimeGo/v4/System_" + _dafny "github.com/dafny-lang/DafnyRuntimeGo/v4/dafny" +) + +var _ = os.Args +var _ _dafny.Dummy__ +var _ m__System.Dummy__ +var _ m_Wrappers.Dummy__ +var _ m_BoundedInts.Dummy__ +var _ m_StandardLibrary_UInt.Dummy__ +var _ m_StandardLibrary_MemoryMath.Dummy__ +var _ m_StandardLibrary_Sequence.Dummy__ +var _ m_StandardLibrary_String.Dummy__ +var _ m_StandardLibrary.Dummy__ +var _ m_AwsCryptographyPrimitivesTypes.Dummy__ +var _ m_Random.Dummy__ +var _ m_Digest.Dummy__ +var _ m_WrappedHMAC.Dummy__ +var _ m_HKDF.Dummy__ +var _ m_WrappedHKDF.Dummy__ +var _ m_KdfCtr.Dummy__ +var _ m_AwsCryptographyPrimitivesOperations.Dummy__ +var _ m_AtomicPrimitives.Dummy__ +var _ m_ComAmazonawsDynamodbTypes.Dummy__ +var _ m_ComAmazonawsKmsTypes.Dummy__ +var _ m_AwsCryptographyKeyStoreTypes.Dummy__ +var _ m_AwsCryptographyMaterialProvidersTypes.Dummy__ +var _ m_Base64.Dummy__ +var _ m_AlgorithmSuites.Dummy__ +var _ m_Materials.Dummy__ +var _ m_Keyring.Dummy__ +var _ m_Relations.Dummy__ +var _ m_Seq_MergeSort.Dummy__ +var _ m__Math.Dummy__ +var _ m_Seq.Dummy__ +var _ m_Actions.Dummy__ +var _ m_CanonicalEncryptionContext.Dummy__ +var _ m_MaterialWrapping.Dummy__ +var _ m_IntermediateKeyWrapping.Dummy__ +var _ m_EdkWrapping.Dummy__ +var _ m_ErrorMessages.Dummy__ +var _ m_RawAESKeyring.Dummy__ +var _ m_AwsArnParsing.Dummy__ +var _ m_Constants.Dummy__ +var _ m_EcdhEdkWrapping.Dummy__ +var _ m_RawECDHKeyring.Dummy__ +var _ m_RawRSAKeyring.Dummy__ +var _ m_AwsKmsMrkMatchForDecrypt.Dummy__ +var _ m_AwsKmsUtils.Dummy__ +var _ m_AwsKmsKeyring.Dummy__ +var _ m_AwsKmsDiscoveryKeyring.Dummy__ +var _ m_AwsKmsEcdhKeyring.Dummy__ +var _ m_FileIO.Dummy__ +var _ m_LocalCMC.Dummy__ +var _ m_SynchronizedLocalCMC.Dummy__ +var _ m_StormTracker.Dummy__ +var _ m_StormTrackingCMC.Dummy__ +var _ m_CacheConstants.Dummy__ +var _ m_AwsKmsHierarchicalKeyring.Dummy__ +var _ m_AwsKmsMrkDiscoveryKeyring.Dummy__ +var _ m_AwsKmsMrkKeyring.Dummy__ +var _ m_AwsKmsRsaKeyring.Dummy__ +var _ m_MultiKeyring.Dummy__ +var _ m_AwsKmsMrkAreUnique.Dummy__ +var _ m_StrictMultiKeyring.Dummy__ +var _ m_Com_Amazonaws_Kms.Dummy__ +var _ m_Com_Amazonaws_Dynamodb.Dummy__ +var _ m_DiscoveryMultiKeyring.Dummy__ +var _ m_MrkAwareDiscoveryMultiKeyring.Dummy__ +var _ m_MrkAwareStrictMultiKeyring.Dummy__ +var _ m_CMM.Dummy__ +var _ m_Defaults.Dummy__ +var _ m_Commitment.Dummy__ +var _ m_DefaultCMM.Dummy__ +var _ m_DefaultClientSupplier.Dummy__ +var _ m_Utils.Dummy__ +var _ m_RequiredEncryptionContextCMM.Dummy__ +var _ m_AwsCryptographyMaterialProvidersOperations.Dummy__ +var _ m_MaterialProviders.Dummy__ +var _ m_KeyStoreErrorMessages.Dummy__ +var _ m_KmsArn.Dummy__ +var _ m_Structure.Dummy__ +var _ m_KMSKeystoreOperations.Dummy__ +var _ m_DDBKeystoreOperations.Dummy__ +var _ m_CreateKeys.Dummy__ +var _ m_CreateKeyStoreTable.Dummy__ +var _ m_GetKeys.Dummy__ +var _ m_AwsCryptographyKeyStoreOperations.Dummy__ +var _ m_KeyStore.Dummy__ +var _ m__Unicode.Dummy__ +var _ m_Functions.Dummy__ +var _ m_Utf8EncodingForm.Dummy__ +var _ m_Utf16EncodingForm.Dummy__ +var _ m_UnicodeStrings.Dummy__ +var _ m_GeneralInternals.Dummy__ +var _ m_MulInternalsNonlinear.Dummy__ +var _ m_MulInternals.Dummy__ +var _ m_Mul.Dummy__ +var _ m_ModInternalsNonlinear.Dummy__ +var _ m_DivInternalsNonlinear.Dummy__ +var _ m_ModInternals.Dummy__ +var _ m_DivInternals.Dummy__ +var _ m_DivMod.Dummy__ +var _ m_Power.Dummy__ +var _ m_Logarithm.Dummy__ +var _ m_StandardLibraryInterop.Dummy__ +var _ m_Streams.Dummy__ +var _ m_Sorting.Dummy__ +var _ m_HexStrings.Dummy__ +var _ m_GetOpt.Dummy__ +var _ m_FloatCompare.Dummy__ +var _ m_Base64Lemmas.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Dummy__ +var _ m_StructuredEncryptionUtil.Dummy__ +var _ m_Sets.Dummy__ +var _ m_StructuredEncryptionPaths.Dummy__ +var _ m_StructuredEncryptionHeader.Dummy__ +var _ m_StructuredEncryptionFooter.Dummy__ +var _ m_OptimizedMergeSort.Dummy__ +var _ m_SortCanon.Dummy__ +var _ m_Canonize.Dummy__ +var _ m_StructuredEncryptionCrypt.Dummy__ +var _ m__Maps.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations.Dummy__ +var _ m_StructuredEncryption.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Dummy__ +var _ m_DynamoDbEncryptionUtil.Dummy__ +var _ m_DynamoDbNormalizeNumber.Dummy__ +var _ m_DynamoToStruct.Dummy__ +var _ m_DynamoDbItemEncryptorUtil.Dummy__ +var _ m_InternalLegacyOverride.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations.Dummy__ +var _ m_DynamoDbItemEncryptor.Dummy__ +var _ m_DynamoDbEncryptionBranchKeyIdSupplier.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbOperations.Dummy__ +var _ m_DynamoDbEncryption.Dummy__ +var _ m_TermLoc.Dummy__ +var _ m_DdbVirtualFields.Dummy__ +var _ m_DynamoDbUpdateExpr.Dummy__ +var _ m_BaseBeacon.Dummy__ +var _ m_CompoundBeacon.Dummy__ +var _ m_SearchableEncryptionInfo.Dummy__ +var _ m_DynamoDBFilterExpr.Dummy__ +var _ m_DynamoDBSupport.Dummy__ +var _ m_SearchConfigToInfo.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Dummy__ +var _ m_DdbMiddlewareConfig.Dummy__ +var _ m_DdbStatement.Dummy__ +var _ m_DynamoDbMiddlewareSupport.Dummy__ +var _ m_PutItemTransform.Dummy__ +var _ m_GetItemTransform.Dummy__ +var _ m_UpdateItemTransform.Dummy__ +var _ m_BatchWriteItemTransform.Dummy__ +var _ m_TransactWriteItemsTransform.Dummy__ +var _ m_BatchGetItemTransform.Dummy__ +var _ m_ScanTransform.Dummy__ + +type Dummy__ struct{} + +// Definition of class Default__ +type Default__ struct { + dummy byte +} + +func New_Default___() *Default__ { + _this := Default__{} + + return &_this +} + +type CompanionStruct_Default___ struct { +} + +var Companion_Default___ = CompanionStruct_Default___{} + +func (_this *Default__) Equals(other *Default__) bool { + return _this == other +} + +func (_this *Default__) EqualsGeneric(x interface{}) bool { + other, ok := x.(*Default__) + return ok && _this.Equals(other) +} + +func (*Default__) String() string { + return "QueryTransform.Default__" +} +func (_this *Default__) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = &Default__{} + +func (_static *CompanionStruct_Default___) Input(config m_DdbMiddlewareConfig.Config, input m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.QueryInputTransformInput) m_Wrappers.Result { + var output m_Wrappers.Result = m_Wrappers.Result{} + _ = output + if !((config).Dtor_tableEncryptionConfigs()).Contains(((input).Dtor_sdkInput()).Dtor_TableName()) { + output = m_Wrappers.Companion_Result_.Create_Success_(m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_QueryInputTransformOutput_.Create_QueryInputTransformOutput_((input).Dtor_sdkInput())) + return output + } else { + var _0_valueOrError0 m_Wrappers.Outcome = m_Wrappers.Companion_Outcome_.Default() + _ = _0_valueOrError0 + _0_valueOrError0 = m_Wrappers.Companion_Default___.Need(m_DynamoDbMiddlewareSupport.Companion_Default___.NoList(((input).Dtor_sdkInput()).Dtor_AttributesToGet()), m_DdbMiddlewareConfig.Companion_Default___.E(_dafny.SeqOfString("Legacy parameter 'AttributesToGet' not supported in Query with Encryption"))) + if (_0_valueOrError0).IsFailure() { + output = (_0_valueOrError0).PropagateFailure() + return output + } + var _1_valueOrError1 m_Wrappers.Outcome = m_Wrappers.Companion_Outcome_.Default() + _ = _1_valueOrError1 + _1_valueOrError1 = m_Wrappers.Companion_Default___.Need(m_DynamoDbMiddlewareSupport.Companion_Default___.NoMap(((input).Dtor_sdkInput()).Dtor_KeyConditions()), m_DdbMiddlewareConfig.Companion_Default___.E(_dafny.SeqOfString("Legacy parameter 'KeyConditions' not supported in Query with Encryption"))) + if (_1_valueOrError1).IsFailure() { + output = (_1_valueOrError1).PropagateFailure() + return output + } + var _2_valueOrError2 m_Wrappers.Outcome = m_Wrappers.Companion_Outcome_.Default() + _ = _2_valueOrError2 + _2_valueOrError2 = m_Wrappers.Companion_Default___.Need(m_DynamoDbMiddlewareSupport.Companion_Default___.NoMap(((input).Dtor_sdkInput()).Dtor_QueryFilter()), m_DdbMiddlewareConfig.Companion_Default___.E(_dafny.SeqOfString("Legacy parameter 'QueryFilter' not supported in Query with Encryption"))) + if (_2_valueOrError2).IsFailure() { + output = (_2_valueOrError2).PropagateFailure() + return output + } + var _3_valueOrError3 m_Wrappers.Outcome = m_Wrappers.Companion_Outcome_.Default() + _ = _3_valueOrError3 + _3_valueOrError3 = m_Wrappers.Companion_Default___.Need((((input).Dtor_sdkInput()).Dtor_ConditionalOperator()).Is_None(), m_DdbMiddlewareConfig.Companion_Default___.E(_dafny.SeqOfString("Legacy parameter 'ConditionalOperator' not supported in Query with Encryption"))) + if (_3_valueOrError3).IsFailure() { + output = (_3_valueOrError3).PropagateFailure() + return output + } + var _4_tableConfig m_DdbMiddlewareConfig.TableConfig + _ = _4_tableConfig + _4_tableConfig = ((config).Dtor_tableEncryptionConfigs()).Get(((input).Dtor_sdkInput()).Dtor_TableName()).(m_DdbMiddlewareConfig.TableConfig) + var _5_valueOrError4 m_Wrappers.Result = m_Wrappers.Result{} + _ = _5_valueOrError4 + var _out0 m_Wrappers.Result + _ = _out0 + _out0 = m_DynamoDbMiddlewareSupport.Companion_Default___.QueryInputForBeacons(_4_tableConfig, (input).Dtor_sdkInput()) + _5_valueOrError4 = _out0 + if (_5_valueOrError4).IsFailure() { + output = (_5_valueOrError4).PropagateFailure() + return output + } + var _6_finalResult m_ComAmazonawsDynamodbTypes.QueryInput + _ = _6_finalResult + _6_finalResult = (_5_valueOrError4).Extract().(m_ComAmazonawsDynamodbTypes.QueryInput) + output = m_Wrappers.Companion_Result_.Create_Success_(m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_QueryInputTransformOutput_.Create_QueryInputTransformOutput_(_6_finalResult)) + return output + } + return output +} +func (_static *CompanionStruct_Default___) Output(config m_DdbMiddlewareConfig.Config, input m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.QueryOutputTransformInput) m_Wrappers.Result { + var output m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_QueryOutputTransformOutput_.Default()) + _ = output + var _0_tableName _dafny.Sequence + _ = _0_tableName + _0_tableName = ((input).Dtor_originalInput()).Dtor_TableName() + if (!((config).Dtor_tableEncryptionConfigs()).Contains(_0_tableName)) || (m_DynamoDbMiddlewareSupport.Companion_Default___.NoList(((input).Dtor_sdkOutput()).Dtor_Items())) { + output = m_Wrappers.Companion_Result_.Create_Success_(m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_QueryOutputTransformOutput_.Create_QueryOutputTransformOutput_((input).Dtor_sdkOutput())) + return output + } + var _1_tableConfig m_DdbMiddlewareConfig.TableConfig + _ = _1_tableConfig + _1_tableConfig = ((config).Dtor_tableEncryptionConfigs()).Get(_0_tableName).(m_DdbMiddlewareConfig.TableConfig) + var _2_decryptedItems _dafny.Sequence + _ = _2_decryptedItems + _2_decryptedItems = _dafny.SeqOf() + var _3_encryptedItems _dafny.Sequence + _ = _3_encryptedItems + _3_encryptedItems = (((input).Dtor_sdkOutput()).Dtor_Items()).Dtor_value().(_dafny.Sequence) + var _4_valueOrError0 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(m_DynamoDbEncryptionUtil.Companion_MaybeKeyId_.Default()) + _ = _4_valueOrError0 + _4_valueOrError0 = m_DynamoDbMiddlewareSupport.Companion_Default___.GetBeaconKeyId(_1_tableConfig, ((input).Dtor_originalInput()).Dtor_KeyConditionExpression(), ((input).Dtor_originalInput()).Dtor_FilterExpression(), ((input).Dtor_originalInput()).Dtor_ExpressionAttributeValues(), ((input).Dtor_originalInput()).Dtor_ExpressionAttributeNames()) + if (_4_valueOrError0).IsFailure() { + output = (_4_valueOrError0).PropagateFailure() + return output + } + var _5_keyId m_DynamoDbEncryptionUtil.MaybeKeyId + _ = _5_keyId + _5_keyId = (_4_valueOrError0).Extract().(m_DynamoDbEncryptionUtil.MaybeKeyId) + var _6_keyIdUtf8 _dafny.Sequence + _ = _6_keyIdUtf8 + _6_keyIdUtf8 = _dafny.SeqOf() + if (_5_keyId).Is_KeyId() { + var _7_valueOrError1 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(m_UTF8.Companion_ValidUTF8Bytes_.Witness()) + _ = _7_valueOrError1 + _7_valueOrError1 = (m_UTF8.Encode((_5_keyId).Dtor_value())).MapFailure(func(coer162 func(_dafny.Sequence) m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Error) func(interface{}) interface{} { + return func(arg200 interface{}) interface{} { + return coer162(arg200.(_dafny.Sequence)) + } + }(func(_8_e _dafny.Sequence) m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Error { + return m_DdbMiddlewareConfig.Companion_Default___.E(_8_e) + })) + if (_7_valueOrError1).IsFailure() { + output = (_7_valueOrError1).PropagateFailure() + return output + } + _6_keyIdUtf8 = (_7_valueOrError1).Extract().(_dafny.Sequence) + } + var _hi0 _dafny.Int = _dafny.IntOfUint32((_3_encryptedItems).Cardinality()) + _ = _hi0 + for _9_x := _dafny.Zero; _9_x.Cmp(_hi0) < 0; _9_x = _9_x.Plus(_dafny.One) { + var _10_decryptInput m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.DecryptItemInput + _ = _10_decryptInput + _10_decryptInput = m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Companion_DecryptItemInput_.Create_DecryptItemInput_((_3_encryptedItems).Select((_9_x).Uint32()).(_dafny.Map)) + var _11_decryptRes m_Wrappers.Result + _ = _11_decryptRes + var _out0 m_Wrappers.Result + _ = _out0 + _out0 = ((_1_tableConfig).Dtor_itemEncryptor()).DecryptItem(_10_decryptInput) + _11_decryptRes = _out0 + var _12_valueOrError2 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Companion_DecryptItemOutput_.Default()) + _ = _12_valueOrError2 + _12_valueOrError2 = m_DdbMiddlewareConfig.Companion_Default___.MapError(_11_decryptRes) + if (_12_valueOrError2).IsFailure() { + output = (_12_valueOrError2).PropagateFailure() + return output + } + var _13_decrypted m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.DecryptItemOutput + _ = _13_decrypted + _13_decrypted = (_12_valueOrError2).Extract().(m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.DecryptItemOutput) + if ((_5_keyId).Is_KeyId()) && (((_13_decrypted).Dtor_parsedHeader()).Is_Some()) { + var _14_valueOrError3 m_Wrappers.Outcome = m_Wrappers.Companion_Outcome_.Default() + _ = _14_valueOrError3 + _14_valueOrError3 = m_Wrappers.Companion_Default___.Need((_dafny.IntOfUint32(((((_13_decrypted).Dtor_parsedHeader()).Dtor_value().(m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.ParsedHeader)).Dtor_encryptedDataKeys()).Cardinality())).Cmp(_dafny.One) == 0, m_DdbMiddlewareConfig.Companion_Default___.E(_dafny.SeqOfString("Query result has more than one Encrypted Data Key"))) + if (_14_valueOrError3).IsFailure() { + output = (_14_valueOrError3).PropagateFailure() + return output + } + if _dafny.Companion_Sequence_.Equal((((((_13_decrypted).Dtor_parsedHeader()).Dtor_value().(m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.ParsedHeader)).Dtor_encryptedDataKeys()).Select(0).(m_AwsCryptographyMaterialProvidersTypes.EncryptedDataKey)).Dtor_keyProviderInfo(), _6_keyIdUtf8) { + _2_decryptedItems = _dafny.Companion_Sequence_.Concatenate(_2_decryptedItems, _dafny.SeqOf((_13_decrypted).Dtor_plaintextItem())) + } + } else { + _2_decryptedItems = _dafny.Companion_Sequence_.Concatenate(_2_decryptedItems, _dafny.SeqOf((_13_decrypted).Dtor_plaintextItem())) + } + } + var _15_decryptedOutput m_ComAmazonawsDynamodbTypes.QueryOutput + _ = _15_decryptedOutput + var _16_dt__update__tmp_h0 m_ComAmazonawsDynamodbTypes.QueryOutput = (input).Dtor_sdkOutput() + _ = _16_dt__update__tmp_h0 + var _17_dt__update_hItems_h0 m_Wrappers.Option = m_Wrappers.Companion_Option_.Create_Some_(_2_decryptedItems) + _ = _17_dt__update_hItems_h0 + _15_decryptedOutput = m_ComAmazonawsDynamodbTypes.Companion_QueryOutput_.Create_QueryOutput_(_17_dt__update_hItems_h0, (_16_dt__update__tmp_h0).Dtor_Count(), (_16_dt__update__tmp_h0).Dtor_ScannedCount(), (_16_dt__update__tmp_h0).Dtor_LastEvaluatedKey(), (_16_dt__update__tmp_h0).Dtor_ConsumedCapacity()) + var _18_valueOrError4 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(m_ComAmazonawsDynamodbTypes.Companion_QueryOutput_.Default()) + _ = _18_valueOrError4 + var _out1 m_Wrappers.Result + _ = _out1 + _out1 = m_DynamoDbMiddlewareSupport.Companion_Default___.QueryOutputForBeacons(_1_tableConfig, (input).Dtor_originalInput(), _15_decryptedOutput) + _18_valueOrError4 = _out1 + if (_18_valueOrError4).IsFailure() { + output = (_18_valueOrError4).PropagateFailure() + return output + } + var _19_finalResult m_ComAmazonawsDynamodbTypes.QueryOutput + _ = _19_finalResult + _19_finalResult = (_18_valueOrError4).Extract().(m_ComAmazonawsDynamodbTypes.QueryOutput) + output = m_Wrappers.Companion_Result_.Create_Success_(m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_QueryOutputTransformOutput_.Create_QueryOutputTransformOutput_(_19_finalResult)) + return output + return output +} + +// End of class Default__ diff --git a/releases/go/dynamodb-esdk/ScanTransform/ScanTransform.go b/releases/go/dynamodb-esdk/ScanTransform/ScanTransform.go new file mode 100644 index 000000000..b95aeff7f --- /dev/null +++ b/releases/go/dynamodb-esdk/ScanTransform/ScanTransform.go @@ -0,0 +1,511 @@ +// Package ScanTransform +// Dafny module ScanTransform compiled into Go + +package ScanTransform + +import ( + os "os" + + m_ComAmazonawsDynamodbTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/dynamodb/ComAmazonawsDynamodbTypes" + m_Com_Amazonaws_Dynamodb "github.com/aws/aws-cryptographic-material-providers-library/releases/go/dynamodb/Com_Amazonaws_Dynamodb" + m_ComAmazonawsKmsTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/kms/ComAmazonawsKmsTypes" + m_Com_Amazonaws_Kms "github.com/aws/aws-cryptographic-material-providers-library/releases/go/kms/Com_Amazonaws_Kms" + m_AlgorithmSuites "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AlgorithmSuites" + m_AwsArnParsing "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsArnParsing" + m_AwsCryptographyKeyStoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyKeyStoreOperations" + m_AwsCryptographyKeyStoreTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyKeyStoreTypes" + m_AwsCryptographyMaterialProvidersOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyMaterialProvidersOperations" + m_AwsCryptographyMaterialProvidersTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyMaterialProvidersTypes" + m_AwsKmsDiscoveryKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsDiscoveryKeyring" + m_AwsKmsEcdhKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsEcdhKeyring" + m_AwsKmsHierarchicalKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsHierarchicalKeyring" + m_AwsKmsKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsKeyring" + m_AwsKmsMrkAreUnique "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkAreUnique" + m_AwsKmsMrkDiscoveryKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkDiscoveryKeyring" + m_AwsKmsMrkKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkKeyring" + m_AwsKmsMrkMatchForDecrypt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkMatchForDecrypt" + m_AwsKmsRsaKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsRsaKeyring" + m_AwsKmsUtils "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsUtils" + m_CMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CMM" + m_CacheConstants "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CacheConstants" + m_CanonicalEncryptionContext "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CanonicalEncryptionContext" + m_Commitment "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Commitment" + m_Constants "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Constants" + m_CreateKeyStoreTable "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CreateKeyStoreTable" + m_CreateKeys "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CreateKeys" + m_DDBKeystoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DDBKeystoreOperations" + m_DefaultCMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DefaultCMM" + m_DefaultClientSupplier "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DefaultClientSupplier" + m_Defaults "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Defaults" + m_DiscoveryMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DiscoveryMultiKeyring" + m_EcdhEdkWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/EcdhEdkWrapping" + m_EdkWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/EdkWrapping" + m_ErrorMessages "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/ErrorMessages" + m_GetKeys "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/GetKeys" + m_IntermediateKeyWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/IntermediateKeyWrapping" + m_KMSKeystoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KMSKeystoreOperations" + m_KeyStore "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KeyStore" + m_KeyStoreErrorMessages "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KeyStoreErrorMessages" + m_Keyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Keyring" + m_KmsArn "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KmsArn" + m_LocalCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/LocalCMC" + m_MaterialProviders "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MaterialProviders" + m_MaterialWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MaterialWrapping" + m_Materials "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Materials" + m_MrkAwareDiscoveryMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MrkAwareDiscoveryMultiKeyring" + m_MrkAwareStrictMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MrkAwareStrictMultiKeyring" + m_MultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MultiKeyring" + m_RawAESKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawAESKeyring" + m_RawECDHKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawECDHKeyring" + m_RawRSAKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawRSAKeyring" + m_RequiredEncryptionContextCMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RequiredEncryptionContextCMM" + m_StormTracker "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StormTracker" + m_StormTrackingCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StormTrackingCMC" + m_StrictMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StrictMultiKeyring" + m_Structure "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Structure" + m_SynchronizedLocalCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/SynchronizedLocalCMC" + m_Utils "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Utils" + m_AtomicPrimitives "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AtomicPrimitives" + m_AwsCryptographyPrimitivesOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AwsCryptographyPrimitivesOperations" + m_AwsCryptographyPrimitivesTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AwsCryptographyPrimitivesTypes" + m_Digest "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/Digest" + m_HKDF "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/HKDF" + m_KdfCtr "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/KdfCtr" + m_Random "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/Random" + m_WrappedHKDF "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/WrappedHKDF" + m_WrappedHMAC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/WrappedHMAC" + m_Actions "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Actions" + m_Base64 "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Base64" + m_Base64Lemmas "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Base64Lemmas" + m_BoundedInts "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/BoundedInts" + m_DivInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivInternals" + m_DivInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivInternalsNonlinear" + m_DivMod "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivMod" + m_FileIO "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/FileIO" + m_FloatCompare "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/FloatCompare" + m_Functions "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Functions" + m_GeneralInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/GeneralInternals" + m_GetOpt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/GetOpt" + m_HexStrings "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/HexStrings" + m_Logarithm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Logarithm" + m__Math "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Math_" + m_ModInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/ModInternals" + m_ModInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/ModInternalsNonlinear" + m_Mul "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Mul" + m_MulInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/MulInternals" + m_MulInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/MulInternalsNonlinear" + m_Power "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Power" + m_Relations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Relations" + m_Seq "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Seq" + m_Seq_MergeSort "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Seq_MergeSort" + m_Sorting "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Sorting" + m_StandardLibrary "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary" + m_StandardLibraryInterop "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibraryInterop" + m_StandardLibrary_MemoryMath "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_MemoryMath" + m_StandardLibrary_Sequence "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_Sequence" + m_StandardLibrary_String "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_String" + m_StandardLibrary_UInt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_UInt" + m_Streams "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Streams" + m_UTF8 "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/UTF8" + m_UnicodeStrings "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/UnicodeStrings" + m__Unicode "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Unicode_" + m_Utf16EncodingForm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Utf16EncodingForm" + m_Utf8EncodingForm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Utf8EncodingForm" + m_Wrappers "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Wrappers" + m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations" + m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes" + m_AwsCryptographyDbEncryptionSdkDynamoDbOperations "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbOperations" + m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes" + m_AwsCryptographyDbEncryptionSdkDynamoDbTypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbTypes" + m_AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations" + m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes" + m_BaseBeacon "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/BaseBeacon" + m_BatchGetItemTransform "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/BatchGetItemTransform" + m_BatchWriteItemTransform "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/BatchWriteItemTransform" + m_Canonize "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/Canonize" + m_CompoundBeacon "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/CompoundBeacon" + m_DdbMiddlewareConfig "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DdbMiddlewareConfig" + m_DdbStatement "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DdbStatement" + m_DdbVirtualFields "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DdbVirtualFields" + m_DynamoDBFilterExpr "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDBFilterExpr" + m_DynamoDBSupport "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDBSupport" + m_DynamoDbEncryption "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbEncryption" + m_DynamoDbEncryptionBranchKeyIdSupplier "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbEncryptionBranchKeyIdSupplier" + m_DynamoDbEncryptionUtil "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbEncryptionUtil" + m_DynamoDbItemEncryptor "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbItemEncryptor" + m_DynamoDbItemEncryptorUtil "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbItemEncryptorUtil" + m_DynamoDbMiddlewareSupport "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbMiddlewareSupport" + m_DynamoDbNormalizeNumber "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbNormalizeNumber" + m_DynamoDbUpdateExpr "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbUpdateExpr" + m_DynamoToStruct "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoToStruct" + m_GetItemTransform "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/GetItemTransform" + m_InternalLegacyOverride "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/InternalLegacyOverride" + m__Maps "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/Maps_" + m_OptimizedMergeSort "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/OptimizedMergeSort" + m_PutItemTransform "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/PutItemTransform" + m_SearchConfigToInfo "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/SearchConfigToInfo" + m_SearchableEncryptionInfo "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/SearchableEncryptionInfo" + m_Sets "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/Sets" + m_SortCanon "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/SortCanon" + m_StructuredEncryption "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryption" + m_StructuredEncryptionCrypt "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionCrypt" + m_StructuredEncryptionFooter "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionFooter" + m_StructuredEncryptionHeader "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionHeader" + m_StructuredEncryptionPaths "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionPaths" + m_StructuredEncryptionUtil "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionUtil" + m_TermLoc "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/TermLoc" + m_TransactWriteItemsTransform "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/TransactWriteItemsTransform" + m_UpdateItemTransform "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/UpdateItemTransform" + m__System "github.com/dafny-lang/DafnyRuntimeGo/v4/System_" + _dafny "github.com/dafny-lang/DafnyRuntimeGo/v4/dafny" +) + +var _ = os.Args +var _ _dafny.Dummy__ +var _ m__System.Dummy__ +var _ m_Wrappers.Dummy__ +var _ m_BoundedInts.Dummy__ +var _ m_StandardLibrary_UInt.Dummy__ +var _ m_StandardLibrary_MemoryMath.Dummy__ +var _ m_StandardLibrary_Sequence.Dummy__ +var _ m_StandardLibrary_String.Dummy__ +var _ m_StandardLibrary.Dummy__ +var _ m_AwsCryptographyPrimitivesTypes.Dummy__ +var _ m_Random.Dummy__ +var _ m_Digest.Dummy__ +var _ m_WrappedHMAC.Dummy__ +var _ m_HKDF.Dummy__ +var _ m_WrappedHKDF.Dummy__ +var _ m_KdfCtr.Dummy__ +var _ m_AwsCryptographyPrimitivesOperations.Dummy__ +var _ m_AtomicPrimitives.Dummy__ +var _ m_ComAmazonawsDynamodbTypes.Dummy__ +var _ m_ComAmazonawsKmsTypes.Dummy__ +var _ m_AwsCryptographyKeyStoreTypes.Dummy__ +var _ m_AwsCryptographyMaterialProvidersTypes.Dummy__ +var _ m_Base64.Dummy__ +var _ m_AlgorithmSuites.Dummy__ +var _ m_Materials.Dummy__ +var _ m_Keyring.Dummy__ +var _ m_Relations.Dummy__ +var _ m_Seq_MergeSort.Dummy__ +var _ m__Math.Dummy__ +var _ m_Seq.Dummy__ +var _ m_Actions.Dummy__ +var _ m_CanonicalEncryptionContext.Dummy__ +var _ m_MaterialWrapping.Dummy__ +var _ m_IntermediateKeyWrapping.Dummy__ +var _ m_EdkWrapping.Dummy__ +var _ m_ErrorMessages.Dummy__ +var _ m_RawAESKeyring.Dummy__ +var _ m_AwsArnParsing.Dummy__ +var _ m_Constants.Dummy__ +var _ m_EcdhEdkWrapping.Dummy__ +var _ m_RawECDHKeyring.Dummy__ +var _ m_RawRSAKeyring.Dummy__ +var _ m_AwsKmsMrkMatchForDecrypt.Dummy__ +var _ m_AwsKmsUtils.Dummy__ +var _ m_AwsKmsKeyring.Dummy__ +var _ m_AwsKmsDiscoveryKeyring.Dummy__ +var _ m_AwsKmsEcdhKeyring.Dummy__ +var _ m_FileIO.Dummy__ +var _ m_LocalCMC.Dummy__ +var _ m_SynchronizedLocalCMC.Dummy__ +var _ m_StormTracker.Dummy__ +var _ m_StormTrackingCMC.Dummy__ +var _ m_CacheConstants.Dummy__ +var _ m_AwsKmsHierarchicalKeyring.Dummy__ +var _ m_AwsKmsMrkDiscoveryKeyring.Dummy__ +var _ m_AwsKmsMrkKeyring.Dummy__ +var _ m_AwsKmsRsaKeyring.Dummy__ +var _ m_MultiKeyring.Dummy__ +var _ m_AwsKmsMrkAreUnique.Dummy__ +var _ m_StrictMultiKeyring.Dummy__ +var _ m_Com_Amazonaws_Kms.Dummy__ +var _ m_Com_Amazonaws_Dynamodb.Dummy__ +var _ m_DiscoveryMultiKeyring.Dummy__ +var _ m_MrkAwareDiscoveryMultiKeyring.Dummy__ +var _ m_MrkAwareStrictMultiKeyring.Dummy__ +var _ m_CMM.Dummy__ +var _ m_Defaults.Dummy__ +var _ m_Commitment.Dummy__ +var _ m_DefaultCMM.Dummy__ +var _ m_DefaultClientSupplier.Dummy__ +var _ m_Utils.Dummy__ +var _ m_RequiredEncryptionContextCMM.Dummy__ +var _ m_AwsCryptographyMaterialProvidersOperations.Dummy__ +var _ m_MaterialProviders.Dummy__ +var _ m_KeyStoreErrorMessages.Dummy__ +var _ m_KmsArn.Dummy__ +var _ m_Structure.Dummy__ +var _ m_KMSKeystoreOperations.Dummy__ +var _ m_DDBKeystoreOperations.Dummy__ +var _ m_CreateKeys.Dummy__ +var _ m_CreateKeyStoreTable.Dummy__ +var _ m_GetKeys.Dummy__ +var _ m_AwsCryptographyKeyStoreOperations.Dummy__ +var _ m_KeyStore.Dummy__ +var _ m__Unicode.Dummy__ +var _ m_Functions.Dummy__ +var _ m_Utf8EncodingForm.Dummy__ +var _ m_Utf16EncodingForm.Dummy__ +var _ m_UnicodeStrings.Dummy__ +var _ m_GeneralInternals.Dummy__ +var _ m_MulInternalsNonlinear.Dummy__ +var _ m_MulInternals.Dummy__ +var _ m_Mul.Dummy__ +var _ m_ModInternalsNonlinear.Dummy__ +var _ m_DivInternalsNonlinear.Dummy__ +var _ m_ModInternals.Dummy__ +var _ m_DivInternals.Dummy__ +var _ m_DivMod.Dummy__ +var _ m_Power.Dummy__ +var _ m_Logarithm.Dummy__ +var _ m_StandardLibraryInterop.Dummy__ +var _ m_Streams.Dummy__ +var _ m_Sorting.Dummy__ +var _ m_HexStrings.Dummy__ +var _ m_GetOpt.Dummy__ +var _ m_FloatCompare.Dummy__ +var _ m_Base64Lemmas.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Dummy__ +var _ m_StructuredEncryptionUtil.Dummy__ +var _ m_Sets.Dummy__ +var _ m_StructuredEncryptionPaths.Dummy__ +var _ m_StructuredEncryptionHeader.Dummy__ +var _ m_StructuredEncryptionFooter.Dummy__ +var _ m_OptimizedMergeSort.Dummy__ +var _ m_SortCanon.Dummy__ +var _ m_Canonize.Dummy__ +var _ m_StructuredEncryptionCrypt.Dummy__ +var _ m__Maps.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations.Dummy__ +var _ m_StructuredEncryption.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Dummy__ +var _ m_DynamoDbEncryptionUtil.Dummy__ +var _ m_DynamoDbNormalizeNumber.Dummy__ +var _ m_DynamoToStruct.Dummy__ +var _ m_DynamoDbItemEncryptorUtil.Dummy__ +var _ m_InternalLegacyOverride.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations.Dummy__ +var _ m_DynamoDbItemEncryptor.Dummy__ +var _ m_DynamoDbEncryptionBranchKeyIdSupplier.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbOperations.Dummy__ +var _ m_DynamoDbEncryption.Dummy__ +var _ m_TermLoc.Dummy__ +var _ m_DdbVirtualFields.Dummy__ +var _ m_DynamoDbUpdateExpr.Dummy__ +var _ m_BaseBeacon.Dummy__ +var _ m_CompoundBeacon.Dummy__ +var _ m_SearchableEncryptionInfo.Dummy__ +var _ m_DynamoDBFilterExpr.Dummy__ +var _ m_DynamoDBSupport.Dummy__ +var _ m_SearchConfigToInfo.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Dummy__ +var _ m_DdbMiddlewareConfig.Dummy__ +var _ m_DdbStatement.Dummy__ +var _ m_DynamoDbMiddlewareSupport.Dummy__ +var _ m_PutItemTransform.Dummy__ +var _ m_GetItemTransform.Dummy__ +var _ m_UpdateItemTransform.Dummy__ +var _ m_BatchWriteItemTransform.Dummy__ +var _ m_TransactWriteItemsTransform.Dummy__ +var _ m_BatchGetItemTransform.Dummy__ + +type Dummy__ struct{} + +// Definition of class Default__ +type Default__ struct { + dummy byte +} + +func New_Default___() *Default__ { + _this := Default__{} + + return &_this +} + +type CompanionStruct_Default___ struct { +} + +var Companion_Default___ = CompanionStruct_Default___{} + +func (_this *Default__) Equals(other *Default__) bool { + return _this == other +} + +func (_this *Default__) EqualsGeneric(x interface{}) bool { + other, ok := x.(*Default__) + return ok && _this.Equals(other) +} + +func (*Default__) String() string { + return "ScanTransform.Default__" +} +func (_this *Default__) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = &Default__{} + +func (_static *CompanionStruct_Default___) Input(config m_DdbMiddlewareConfig.Config, input m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.ScanInputTransformInput) m_Wrappers.Result { + var output m_Wrappers.Result = m_Wrappers.Result{} + _ = output + if !((config).Dtor_tableEncryptionConfigs()).Contains(((input).Dtor_sdkInput()).Dtor_TableName()) { + output = m_Wrappers.Companion_Result_.Create_Success_(m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_ScanInputTransformOutput_.Create_ScanInputTransformOutput_((input).Dtor_sdkInput())) + return output + } else { + var _0_valueOrError0 m_Wrappers.Outcome = m_Wrappers.Companion_Outcome_.Default() + _ = _0_valueOrError0 + _0_valueOrError0 = m_Wrappers.Companion_Default___.Need(m_DynamoDbMiddlewareSupport.Companion_Default___.NoList(((input).Dtor_sdkInput()).Dtor_AttributesToGet()), m_DdbMiddlewareConfig.Companion_Default___.E(_dafny.SeqOfString("Legacy parameter 'AttributesToGet' not supported in UpdateItem with Encryption"))) + if (_0_valueOrError0).IsFailure() { + output = (_0_valueOrError0).PropagateFailure() + return output + } + var _1_valueOrError1 m_Wrappers.Outcome = m_Wrappers.Companion_Outcome_.Default() + _ = _1_valueOrError1 + _1_valueOrError1 = m_Wrappers.Companion_Default___.Need(m_DynamoDbMiddlewareSupport.Companion_Default___.NoMap(((input).Dtor_sdkInput()).Dtor_ScanFilter()), m_DdbMiddlewareConfig.Companion_Default___.E(_dafny.SeqOfString("Legacy parameter 'ScanFilter' not supported in UpdateItem with Encryption"))) + if (_1_valueOrError1).IsFailure() { + output = (_1_valueOrError1).PropagateFailure() + return output + } + var _2_valueOrError2 m_Wrappers.Outcome = m_Wrappers.Companion_Outcome_.Default() + _ = _2_valueOrError2 + _2_valueOrError2 = m_Wrappers.Companion_Default___.Need((((input).Dtor_sdkInput()).Dtor_ConditionalOperator()).Is_None(), m_DdbMiddlewareConfig.Companion_Default___.E(_dafny.SeqOfString("Legacy parameter 'ConditionalOperator' not supported in UpdateItem with Encryption"))) + if (_2_valueOrError2).IsFailure() { + output = (_2_valueOrError2).PropagateFailure() + return output + } + var _3_tableConfig m_DdbMiddlewareConfig.TableConfig + _ = _3_tableConfig + _3_tableConfig = ((config).Dtor_tableEncryptionConfigs()).Get(((input).Dtor_sdkInput()).Dtor_TableName()).(m_DdbMiddlewareConfig.TableConfig) + var _4_valueOrError3 m_Wrappers.Result = m_Wrappers.Result{} + _ = _4_valueOrError3 + var _out0 m_Wrappers.Result + _ = _out0 + _out0 = m_DynamoDbMiddlewareSupport.Companion_Default___.ScanInputForBeacons(_3_tableConfig, (input).Dtor_sdkInput()) + _4_valueOrError3 = _out0 + if (_4_valueOrError3).IsFailure() { + output = (_4_valueOrError3).PropagateFailure() + return output + } + var _5_finalResult m_ComAmazonawsDynamodbTypes.ScanInput + _ = _5_finalResult + _5_finalResult = (_4_valueOrError3).Extract().(m_ComAmazonawsDynamodbTypes.ScanInput) + output = m_Wrappers.Companion_Result_.Create_Success_(m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_ScanInputTransformOutput_.Create_ScanInputTransformOutput_(_5_finalResult)) + return output + } + return output +} +func (_static *CompanionStruct_Default___) Output(config m_DdbMiddlewareConfig.Config, input m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.ScanOutputTransformInput) m_Wrappers.Result { + var output m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_ScanOutputTransformOutput_.Default()) + _ = output + var _0_tableName _dafny.Sequence + _ = _0_tableName + _0_tableName = ((input).Dtor_originalInput()).Dtor_TableName() + if (!((config).Dtor_tableEncryptionConfigs()).Contains(_0_tableName)) || (m_DynamoDbMiddlewareSupport.Companion_Default___.NoList(((input).Dtor_sdkOutput()).Dtor_Items())) { + output = m_Wrappers.Companion_Result_.Create_Success_(m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_ScanOutputTransformOutput_.Create_ScanOutputTransformOutput_((input).Dtor_sdkOutput())) + return output + } + var _1_tableConfig m_DdbMiddlewareConfig.TableConfig + _ = _1_tableConfig + _1_tableConfig = ((config).Dtor_tableEncryptionConfigs()).Get(_0_tableName).(m_DdbMiddlewareConfig.TableConfig) + var _2_decryptedItems _dafny.Sequence + _ = _2_decryptedItems + _2_decryptedItems = _dafny.SeqOf() + var _3_encryptedItems _dafny.Sequence + _ = _3_encryptedItems + _3_encryptedItems = (((input).Dtor_sdkOutput()).Dtor_Items()).Dtor_value().(_dafny.Sequence) + var _4_valueOrError0 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(m_DynamoDbEncryptionUtil.Companion_MaybeKeyId_.Default()) + _ = _4_valueOrError0 + _4_valueOrError0 = m_DynamoDbMiddlewareSupport.Companion_Default___.GetBeaconKeyId(_1_tableConfig, m_Wrappers.Companion_Option_.Create_None_(), ((input).Dtor_originalInput()).Dtor_FilterExpression(), ((input).Dtor_originalInput()).Dtor_ExpressionAttributeValues(), ((input).Dtor_originalInput()).Dtor_ExpressionAttributeNames()) + if (_4_valueOrError0).IsFailure() { + output = (_4_valueOrError0).PropagateFailure() + return output + } + var _5_keyId m_DynamoDbEncryptionUtil.MaybeKeyId + _ = _5_keyId + _5_keyId = (_4_valueOrError0).Extract().(m_DynamoDbEncryptionUtil.MaybeKeyId) + var _6_keyIdUtf8 _dafny.Sequence + _ = _6_keyIdUtf8 + _6_keyIdUtf8 = _dafny.SeqOf() + if (_5_keyId).Is_KeyId() { + var _7_valueOrError1 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(m_UTF8.Companion_ValidUTF8Bytes_.Witness()) + _ = _7_valueOrError1 + _7_valueOrError1 = (m_UTF8.Encode((_5_keyId).Dtor_value())).MapFailure(func(coer161 func(_dafny.Sequence) m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Error) func(interface{}) interface{} { + return func(arg199 interface{}) interface{} { + return coer161(arg199.(_dafny.Sequence)) + } + }(func(_8_e _dafny.Sequence) m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Error { + return m_DdbMiddlewareConfig.Companion_Default___.E(_8_e) + })) + if (_7_valueOrError1).IsFailure() { + output = (_7_valueOrError1).PropagateFailure() + return output + } + _6_keyIdUtf8 = (_7_valueOrError1).Extract().(_dafny.Sequence) + } + var _hi0 _dafny.Int = _dafny.IntOfUint32((_3_encryptedItems).Cardinality()) + _ = _hi0 + for _9_x := _dafny.Zero; _9_x.Cmp(_hi0) < 0; _9_x = _9_x.Plus(_dafny.One) { + var _10_decryptInput m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.DecryptItemInput + _ = _10_decryptInput + _10_decryptInput = m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Companion_DecryptItemInput_.Create_DecryptItemInput_((_3_encryptedItems).Select((_9_x).Uint32()).(_dafny.Map)) + var _11_decryptRes m_Wrappers.Result + _ = _11_decryptRes + var _out0 m_Wrappers.Result + _ = _out0 + _out0 = ((_1_tableConfig).Dtor_itemEncryptor()).DecryptItem(_10_decryptInput) + _11_decryptRes = _out0 + var _12_valueOrError2 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Companion_DecryptItemOutput_.Default()) + _ = _12_valueOrError2 + _12_valueOrError2 = m_DdbMiddlewareConfig.Companion_Default___.MapError(_11_decryptRes) + if (_12_valueOrError2).IsFailure() { + output = (_12_valueOrError2).PropagateFailure() + return output + } + var _13_decrypted m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.DecryptItemOutput + _ = _13_decrypted + _13_decrypted = (_12_valueOrError2).Extract().(m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.DecryptItemOutput) + if ((_5_keyId).Is_KeyId()) && (((_13_decrypted).Dtor_parsedHeader()).Is_Some()) { + var _14_valueOrError3 m_Wrappers.Outcome = m_Wrappers.Companion_Outcome_.Default() + _ = _14_valueOrError3 + _14_valueOrError3 = m_Wrappers.Companion_Default___.Need((_dafny.IntOfUint32(((((_13_decrypted).Dtor_parsedHeader()).Dtor_value().(m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.ParsedHeader)).Dtor_encryptedDataKeys()).Cardinality())).Cmp(_dafny.One) == 0, m_DdbMiddlewareConfig.Companion_Default___.E(_dafny.SeqOfString("Scan result has more than one Encrypted Data Key"))) + if (_14_valueOrError3).IsFailure() { + output = (_14_valueOrError3).PropagateFailure() + return output + } + if _dafny.Companion_Sequence_.Equal((((((_13_decrypted).Dtor_parsedHeader()).Dtor_value().(m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.ParsedHeader)).Dtor_encryptedDataKeys()).Select(0).(m_AwsCryptographyMaterialProvidersTypes.EncryptedDataKey)).Dtor_keyProviderInfo(), _6_keyIdUtf8) { + _2_decryptedItems = _dafny.Companion_Sequence_.Concatenate(_2_decryptedItems, _dafny.SeqOf((_13_decrypted).Dtor_plaintextItem())) + } + } else { + _2_decryptedItems = _dafny.Companion_Sequence_.Concatenate(_2_decryptedItems, _dafny.SeqOf((_13_decrypted).Dtor_plaintextItem())) + } + } + var _15_decryptedOutput m_ComAmazonawsDynamodbTypes.ScanOutput + _ = _15_decryptedOutput + var _16_dt__update__tmp_h0 m_ComAmazonawsDynamodbTypes.ScanOutput = (input).Dtor_sdkOutput() + _ = _16_dt__update__tmp_h0 + var _17_dt__update_hItems_h0 m_Wrappers.Option = m_Wrappers.Companion_Option_.Create_Some_(_2_decryptedItems) + _ = _17_dt__update_hItems_h0 + _15_decryptedOutput = m_ComAmazonawsDynamodbTypes.Companion_ScanOutput_.Create_ScanOutput_(_17_dt__update_hItems_h0, (_16_dt__update__tmp_h0).Dtor_Count(), (_16_dt__update__tmp_h0).Dtor_ScannedCount(), (_16_dt__update__tmp_h0).Dtor_LastEvaluatedKey(), (_16_dt__update__tmp_h0).Dtor_ConsumedCapacity()) + var _18_valueOrError4 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(m_ComAmazonawsDynamodbTypes.Companion_ScanOutput_.Default()) + _ = _18_valueOrError4 + var _out1 m_Wrappers.Result + _ = _out1 + _out1 = m_DynamoDbMiddlewareSupport.Companion_Default___.ScanOutputForBeacons(_1_tableConfig, (input).Dtor_originalInput(), _15_decryptedOutput) + _18_valueOrError4 = _out1 + if (_18_valueOrError4).IsFailure() { + output = (_18_valueOrError4).PropagateFailure() + return output + } + var _19_finalResult m_ComAmazonawsDynamodbTypes.ScanOutput + _ = _19_finalResult + _19_finalResult = (_18_valueOrError4).Extract().(m_ComAmazonawsDynamodbTypes.ScanOutput) + output = m_Wrappers.Companion_Result_.Create_Success_(m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_ScanOutputTransformOutput_.Create_ScanOutputTransformOutput_(_19_finalResult)) + return output + return output +} + +// End of class Default__ diff --git a/releases/go/dynamodb-esdk/SearchConfigToInfo/SearchConfigToInfo.go b/releases/go/dynamodb-esdk/SearchConfigToInfo/SearchConfigToInfo.go new file mode 100644 index 000000000..4bf855225 --- /dev/null +++ b/releases/go/dynamodb-esdk/SearchConfigToInfo/SearchConfigToInfo.go @@ -0,0 +1,1942 @@ +// Package SearchConfigToInfo +// Dafny module SearchConfigToInfo compiled into Go + +package SearchConfigToInfo + +import ( + os "os" + + m_ComAmazonawsDynamodbTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/dynamodb/ComAmazonawsDynamodbTypes" + m_Com_Amazonaws_Dynamodb "github.com/aws/aws-cryptographic-material-providers-library/releases/go/dynamodb/Com_Amazonaws_Dynamodb" + m_ComAmazonawsKmsTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/kms/ComAmazonawsKmsTypes" + m_Com_Amazonaws_Kms "github.com/aws/aws-cryptographic-material-providers-library/releases/go/kms/Com_Amazonaws_Kms" + m_AlgorithmSuites "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AlgorithmSuites" + m_AwsArnParsing "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsArnParsing" + m_AwsCryptographyKeyStoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyKeyStoreOperations" + m_AwsCryptographyKeyStoreTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyKeyStoreTypes" + m_AwsCryptographyMaterialProvidersOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyMaterialProvidersOperations" + m_AwsCryptographyMaterialProvidersTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyMaterialProvidersTypes" + m_AwsKmsDiscoveryKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsDiscoveryKeyring" + m_AwsKmsEcdhKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsEcdhKeyring" + m_AwsKmsHierarchicalKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsHierarchicalKeyring" + m_AwsKmsKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsKeyring" + m_AwsKmsMrkAreUnique "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkAreUnique" + m_AwsKmsMrkDiscoveryKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkDiscoveryKeyring" + m_AwsKmsMrkKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkKeyring" + m_AwsKmsMrkMatchForDecrypt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkMatchForDecrypt" + m_AwsKmsRsaKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsRsaKeyring" + m_AwsKmsUtils "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsUtils" + m_CMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CMM" + m_CacheConstants "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CacheConstants" + m_CanonicalEncryptionContext "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CanonicalEncryptionContext" + m_Commitment "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Commitment" + m_Constants "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Constants" + m_CreateKeyStoreTable "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CreateKeyStoreTable" + m_CreateKeys "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CreateKeys" + m_DDBKeystoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DDBKeystoreOperations" + m_DefaultCMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DefaultCMM" + m_DefaultClientSupplier "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DefaultClientSupplier" + m_Defaults "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Defaults" + m_DiscoveryMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DiscoveryMultiKeyring" + m_EcdhEdkWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/EcdhEdkWrapping" + m_EdkWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/EdkWrapping" + m_ErrorMessages "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/ErrorMessages" + m_GetKeys "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/GetKeys" + m_IntermediateKeyWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/IntermediateKeyWrapping" + m_KMSKeystoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KMSKeystoreOperations" + m_KeyStore "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KeyStore" + m_KeyStoreErrorMessages "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KeyStoreErrorMessages" + m_Keyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Keyring" + m_KmsArn "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KmsArn" + m_LocalCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/LocalCMC" + m_MaterialProviders "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MaterialProviders" + m_MaterialWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MaterialWrapping" + m_Materials "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Materials" + m_MrkAwareDiscoveryMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MrkAwareDiscoveryMultiKeyring" + m_MrkAwareStrictMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MrkAwareStrictMultiKeyring" + m_MultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MultiKeyring" + m_RawAESKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawAESKeyring" + m_RawECDHKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawECDHKeyring" + m_RawRSAKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawRSAKeyring" + m_RequiredEncryptionContextCMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RequiredEncryptionContextCMM" + m_StormTracker "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StormTracker" + m_StormTrackingCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StormTrackingCMC" + m_StrictMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StrictMultiKeyring" + m_Structure "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Structure" + m_SynchronizedLocalCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/SynchronizedLocalCMC" + m_Utils "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Utils" + m_AtomicPrimitives "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AtomicPrimitives" + m_AwsCryptographyPrimitivesOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AwsCryptographyPrimitivesOperations" + m_AwsCryptographyPrimitivesTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AwsCryptographyPrimitivesTypes" + m_Digest "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/Digest" + m_HKDF "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/HKDF" + m_KdfCtr "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/KdfCtr" + m_Random "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/Random" + m_WrappedHKDF "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/WrappedHKDF" + m_WrappedHMAC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/WrappedHMAC" + m_Actions "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Actions" + m_Base64 "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Base64" + m_Base64Lemmas "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Base64Lemmas" + m_BoundedInts "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/BoundedInts" + m_DivInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivInternals" + m_DivInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivInternalsNonlinear" + m_DivMod "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivMod" + m_FileIO "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/FileIO" + m_FloatCompare "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/FloatCompare" + m_Functions "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Functions" + m_GeneralInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/GeneralInternals" + m_GetOpt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/GetOpt" + m_HexStrings "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/HexStrings" + m_Logarithm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Logarithm" + m__Math "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Math_" + m_ModInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/ModInternals" + m_ModInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/ModInternalsNonlinear" + m_Mul "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Mul" + m_MulInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/MulInternals" + m_MulInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/MulInternalsNonlinear" + m_Power "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Power" + m_Relations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Relations" + m_Seq "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Seq" + m_Seq_MergeSort "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Seq_MergeSort" + m_SortedSets "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/SortedSets" + m_Sorting "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Sorting" + m_StandardLibrary "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary" + m_StandardLibraryInterop "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibraryInterop" + m_StandardLibrary_MemoryMath "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_MemoryMath" + m_StandardLibrary_Sequence "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_Sequence" + m_StandardLibrary_String "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_String" + m_StandardLibrary_UInt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_UInt" + m_Streams "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Streams" + m_UTF8 "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/UTF8" + m_UnicodeStrings "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/UnicodeStrings" + m__Unicode "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Unicode_" + m_Utf16EncodingForm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Utf16EncodingForm" + m_Utf8EncodingForm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Utf8EncodingForm" + m_Wrappers "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Wrappers" + m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations" + m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes" + m_AwsCryptographyDbEncryptionSdkDynamoDbOperations "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbOperations" + m_AwsCryptographyDbEncryptionSdkDynamoDbTypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbTypes" + m_AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations" + m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes" + m_BaseBeacon "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/BaseBeacon" + m_Canonize "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/Canonize" + m_CompoundBeacon "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/CompoundBeacon" + m_DdbVirtualFields "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DdbVirtualFields" + m_DynamoDBFilterExpr "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDBFilterExpr" + m_DynamoDBSupport "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDBSupport" + m_DynamoDbEncryption "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbEncryption" + m_DynamoDbEncryptionBranchKeyIdSupplier "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbEncryptionBranchKeyIdSupplier" + m_DynamoDbEncryptionUtil "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbEncryptionUtil" + m_DynamoDbItemEncryptor "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbItemEncryptor" + m_DynamoDbItemEncryptorUtil "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbItemEncryptorUtil" + m_DynamoDbNormalizeNumber "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbNormalizeNumber" + m_DynamoDbUpdateExpr "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbUpdateExpr" + m_DynamoToStruct "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoToStruct" + m_InternalLegacyOverride "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/InternalLegacyOverride" + m__Maps "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/Maps_" + m_OptimizedMergeSort "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/OptimizedMergeSort" + m_SearchableEncryptionInfo "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/SearchableEncryptionInfo" + m_Sets "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/Sets" + m_SortCanon "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/SortCanon" + m_StructuredEncryption "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryption" + m_StructuredEncryptionCrypt "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionCrypt" + m_StructuredEncryptionFooter "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionFooter" + m_StructuredEncryptionHeader "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionHeader" + m_StructuredEncryptionPaths "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionPaths" + m_StructuredEncryptionUtil "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionUtil" + m_TermLoc "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/TermLoc" + m__System "github.com/dafny-lang/DafnyRuntimeGo/v4/System_" + _dafny "github.com/dafny-lang/DafnyRuntimeGo/v4/dafny" +) + +var _ = os.Args +var _ _dafny.Dummy__ +var _ m__System.Dummy__ +var _ m_Wrappers.Dummy__ +var _ m_BoundedInts.Dummy__ +var _ m_StandardLibrary_UInt.Dummy__ +var _ m_StandardLibrary_MemoryMath.Dummy__ +var _ m_StandardLibrary_Sequence.Dummy__ +var _ m_StandardLibrary_String.Dummy__ +var _ m_StandardLibrary.Dummy__ +var _ m_AwsCryptographyPrimitivesTypes.Dummy__ +var _ m_Random.Dummy__ +var _ m_Digest.Dummy__ +var _ m_WrappedHMAC.Dummy__ +var _ m_HKDF.Dummy__ +var _ m_WrappedHKDF.Dummy__ +var _ m_KdfCtr.Dummy__ +var _ m_AwsCryptographyPrimitivesOperations.Dummy__ +var _ m_AtomicPrimitives.Dummy__ +var _ m_ComAmazonawsDynamodbTypes.Dummy__ +var _ m_ComAmazonawsKmsTypes.Dummy__ +var _ m_AwsCryptographyKeyStoreTypes.Dummy__ +var _ m_AwsCryptographyMaterialProvidersTypes.Dummy__ +var _ m_Base64.Dummy__ +var _ m_AlgorithmSuites.Dummy__ +var _ m_Materials.Dummy__ +var _ m_Keyring.Dummy__ +var _ m_Relations.Dummy__ +var _ m_Seq_MergeSort.Dummy__ +var _ m__Math.Dummy__ +var _ m_Seq.Dummy__ +var _ m_Actions.Dummy__ +var _ m_CanonicalEncryptionContext.Dummy__ +var _ m_MaterialWrapping.Dummy__ +var _ m_IntermediateKeyWrapping.Dummy__ +var _ m_EdkWrapping.Dummy__ +var _ m_ErrorMessages.Dummy__ +var _ m_RawAESKeyring.Dummy__ +var _ m_AwsArnParsing.Dummy__ +var _ m_Constants.Dummy__ +var _ m_EcdhEdkWrapping.Dummy__ +var _ m_RawECDHKeyring.Dummy__ +var _ m_RawRSAKeyring.Dummy__ +var _ m_AwsKmsMrkMatchForDecrypt.Dummy__ +var _ m_AwsKmsUtils.Dummy__ +var _ m_AwsKmsKeyring.Dummy__ +var _ m_AwsKmsDiscoveryKeyring.Dummy__ +var _ m_AwsKmsEcdhKeyring.Dummy__ +var _ m_FileIO.Dummy__ +var _ m_LocalCMC.Dummy__ +var _ m_SynchronizedLocalCMC.Dummy__ +var _ m_StormTracker.Dummy__ +var _ m_StormTrackingCMC.Dummy__ +var _ m_CacheConstants.Dummy__ +var _ m_AwsKmsHierarchicalKeyring.Dummy__ +var _ m_AwsKmsMrkDiscoveryKeyring.Dummy__ +var _ m_AwsKmsMrkKeyring.Dummy__ +var _ m_AwsKmsRsaKeyring.Dummy__ +var _ m_MultiKeyring.Dummy__ +var _ m_AwsKmsMrkAreUnique.Dummy__ +var _ m_StrictMultiKeyring.Dummy__ +var _ m_Com_Amazonaws_Kms.Dummy__ +var _ m_Com_Amazonaws_Dynamodb.Dummy__ +var _ m_DiscoveryMultiKeyring.Dummy__ +var _ m_MrkAwareDiscoveryMultiKeyring.Dummy__ +var _ m_MrkAwareStrictMultiKeyring.Dummy__ +var _ m_CMM.Dummy__ +var _ m_Defaults.Dummy__ +var _ m_Commitment.Dummy__ +var _ m_DefaultCMM.Dummy__ +var _ m_DefaultClientSupplier.Dummy__ +var _ m_Utils.Dummy__ +var _ m_RequiredEncryptionContextCMM.Dummy__ +var _ m_AwsCryptographyMaterialProvidersOperations.Dummy__ +var _ m_MaterialProviders.Dummy__ +var _ m_KeyStoreErrorMessages.Dummy__ +var _ m_KmsArn.Dummy__ +var _ m_Structure.Dummy__ +var _ m_KMSKeystoreOperations.Dummy__ +var _ m_DDBKeystoreOperations.Dummy__ +var _ m_CreateKeys.Dummy__ +var _ m_CreateKeyStoreTable.Dummy__ +var _ m_GetKeys.Dummy__ +var _ m_AwsCryptographyKeyStoreOperations.Dummy__ +var _ m_KeyStore.Dummy__ +var _ m__Unicode.Dummy__ +var _ m_Functions.Dummy__ +var _ m_Utf8EncodingForm.Dummy__ +var _ m_Utf16EncodingForm.Dummy__ +var _ m_UnicodeStrings.Dummy__ +var _ m_GeneralInternals.Dummy__ +var _ m_MulInternalsNonlinear.Dummy__ +var _ m_MulInternals.Dummy__ +var _ m_Mul.Dummy__ +var _ m_ModInternalsNonlinear.Dummy__ +var _ m_DivInternalsNonlinear.Dummy__ +var _ m_ModInternals.Dummy__ +var _ m_DivInternals.Dummy__ +var _ m_DivMod.Dummy__ +var _ m_Power.Dummy__ +var _ m_Logarithm.Dummy__ +var _ m_StandardLibraryInterop.Dummy__ +var _ m_Streams.Dummy__ +var _ m_Sorting.Dummy__ +var _ m_HexStrings.Dummy__ +var _ m_GetOpt.Dummy__ +var _ m_FloatCompare.Dummy__ +var _ m_Base64Lemmas.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Dummy__ +var _ m_StructuredEncryptionUtil.Dummy__ +var _ m_Sets.Dummy__ +var _ m_StructuredEncryptionPaths.Dummy__ +var _ m_StructuredEncryptionHeader.Dummy__ +var _ m_StructuredEncryptionFooter.Dummy__ +var _ m_OptimizedMergeSort.Dummy__ +var _ m_SortCanon.Dummy__ +var _ m_Canonize.Dummy__ +var _ m_StructuredEncryptionCrypt.Dummy__ +var _ m__Maps.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations.Dummy__ +var _ m_StructuredEncryption.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Dummy__ +var _ m_DynamoDbEncryptionUtil.Dummy__ +var _ m_DynamoDbNormalizeNumber.Dummy__ +var _ m_DynamoToStruct.Dummy__ +var _ m_DynamoDbItemEncryptorUtil.Dummy__ +var _ m_InternalLegacyOverride.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations.Dummy__ +var _ m_DynamoDbItemEncryptor.Dummy__ +var _ m_DynamoDbEncryptionBranchKeyIdSupplier.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbOperations.Dummy__ +var _ m_DynamoDbEncryption.Dummy__ +var _ m_TermLoc.Dummy__ +var _ m_DdbVirtualFields.Dummy__ +var _ m_DynamoDbUpdateExpr.Dummy__ +var _ m_BaseBeacon.Dummy__ +var _ m_CompoundBeacon.Dummy__ +var _ m_SearchableEncryptionInfo.Dummy__ +var _ m_DynamoDBFilterExpr.Dummy__ +var _ m_DynamoDBSupport.Dummy__ + +type Dummy__ struct{} + +// Definition of class Default__ +type Default__ struct { + dummy byte +} + +func New_Default___() *Default__ { + _this := Default__{} + + return &_this +} + +type CompanionStruct_Default___ struct { +} + +var Companion_Default___ = CompanionStruct_Default___{} + +func (_this *Default__) Equals(other *Default__) bool { + return _this == other +} + +func (_this *Default__) EqualsGeneric(x interface{}) bool { + other, ok := x.(*Default__) + return ok && _this.Equals(other) +} + +func (*Default__) String() string { + return "SearchConfigToInfo.Default__" +} +func (_this *Default__) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = &Default__{} + +func (_static *CompanionStruct_Default___) Convert(outer m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.DynamoDbTableEncryptionConfig) m_Wrappers.Result { + var output m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(m_Wrappers.Companion_Option_.Default()) + _ = output + if ((outer).Dtor_search()).Is_None() { + output = m_Wrappers.Companion_Result_.Create_Success_(m_Wrappers.Companion_Option_.Create_None_()) + return output + } else { + var _0_valueOrError0 m_Wrappers.Outcome = m_Wrappers.Companion_Outcome_.Default() + _ = _0_valueOrError0 + _0_valueOrError0 = m_Wrappers.Companion_Default___.Need(((((outer).Dtor_search()).Dtor_value().(m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.SearchConfig)).Dtor_writeVersion()) == (int32(1)), m_DynamoDbEncryptionUtil.Companion_Default___.E(_dafny.SeqOfString("writeVersion must be '1'."))) + if (_0_valueOrError0).IsFailure() { + output = (_0_valueOrError0).PropagateFailure() + return output + } + var _1_valueOrError1 m_Wrappers.Outcome = m_Wrappers.Companion_Outcome_.Default() + _ = _1_valueOrError1 + _1_valueOrError1 = m_Wrappers.Companion_Default___.Need((_dafny.IntOfUint32(((((outer).Dtor_search()).Dtor_value().(m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.SearchConfig)).Dtor_versions()).Cardinality())).Cmp(_dafny.One) == 0, m_DynamoDbEncryptionUtil.Companion_Default___.E(_dafny.SeqOfString("search config must be have exactly one version."))) + if (_1_valueOrError1).IsFailure() { + output = (_1_valueOrError1).PropagateFailure() + return output + } + var _2_beaconVersionConfig m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.BeaconVersion + _ = _2_beaconVersionConfig + _2_beaconVersionConfig = ((((outer).Dtor_search()).Dtor_value().(m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.SearchConfig)).Dtor_versions()).Select(0).(m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.BeaconVersion) + var _3_valueOrError2 m_Wrappers.Result = m_Wrappers.Result{} + _ = _3_valueOrError2 + var _out0 m_Wrappers.Result + _ = _out0 + _out0 = Companion_Default___.ConvertVersion(outer, _2_beaconVersionConfig) + _3_valueOrError2 = _out0 + if (_3_valueOrError2).IsFailure() { + output = (_3_valueOrError2).PropagateFailure() + return output + } + var _4_version m_SearchableEncryptionInfo.BeaconVersion + _ = _4_version + _4_version = (_3_valueOrError2).Extract().(m_SearchableEncryptionInfo.BeaconVersion) + var _5_info m_SearchableEncryptionInfo.SearchInfo + _ = _5_info + _5_info = m_SearchableEncryptionInfo.Companion_Default___.MakeSearchInfo(_4_version) + output = m_Wrappers.Companion_Result_.Create_Success_(m_Wrappers.Companion_Option_.Create_Some_(_5_info)) + return output + } + return output +} +func (_static *CompanionStruct_Default___) ShouldDeleteKeyField(outer m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.DynamoDbTableEncryptionConfig, keyFieldName _dafny.Sequence) m_Wrappers.Result { + if !((outer).Dtor_attributeActionsOnEncrypt()).Contains(keyFieldName) { + return m_Wrappers.Companion_Result_.Create_Success_(true) + } else { + var _source0 m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.CryptoAction = ((outer).Dtor_attributeActionsOnEncrypt()).Get(keyFieldName).(m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.CryptoAction) + _ = _source0 + { + if _source0.Is_DO__NOTHING() { + return m_Wrappers.Companion_Result_.Create_Success_(true) + } + } + { + if _source0.Is_SIGN__ONLY() { + return m_Wrappers.Companion_Result_.Create_Success_(false) + } + } + { + if _source0.Is_SIGN__AND__INCLUDE__IN__ENCRYPTION__CONTEXT() { + return m_Wrappers.Companion_Result_.Create_Success_(false) + } + } + { + return m_Wrappers.Companion_Result_.Create_Failure_(m_DynamoDbEncryptionUtil.Companion_Default___.E(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("Beacon key field name "), keyFieldName), _dafny.SeqOfString(" is configured as ENCRYPT_AND_SIGN which is not allowed.")))) + } + } +} +func (_static *CompanionStruct_Default___) MakeKeySource(outer m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.DynamoDbTableEncryptionConfig, keyStore m_AwsCryptographyKeyStoreTypes.IKeyStoreClient, config m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.BeaconKeySource, client *m_AtomicPrimitives.AtomicPrimitivesClient) m_Wrappers.Result { + var output m_Wrappers.Result = m_Wrappers.Result{} + _ = output + var _0_mplR m_Wrappers.Result + _ = _0_mplR + var _out0 m_Wrappers.Result + _ = _out0 + _out0 = m_MaterialProviders.Companion_Default___.MaterialProviders(m_MaterialProviders.Companion_Default___.DefaultMaterialProvidersConfig()) + _0_mplR = _out0 + var _1_valueOrError0 m_Wrappers.Result = m_Wrappers.Result{} + _ = _1_valueOrError0 + _1_valueOrError0 = (_0_mplR).MapFailure(func(coer129 func(m_AwsCryptographyMaterialProvidersTypes.Error) m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Error) func(interface{}) interface{} { + return func(arg163 interface{}) interface{} { + return coer129(arg163.(m_AwsCryptographyMaterialProvidersTypes.Error)) + } + }(func(_2_e m_AwsCryptographyMaterialProvidersTypes.Error) m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Error { + return m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Companion_Error_.Create_AwsCryptographyMaterialProviders_(_2_e) + })) + if (_1_valueOrError0).IsFailure() { + output = (_1_valueOrError0).PropagateFailure() + return output + } + var _3_mpl *m_MaterialProviders.MaterialProvidersClient + _ = _3_mpl + _3_mpl = (_1_valueOrError0).Extract().(*m_MaterialProviders.MaterialProvidersClient) + var _4_cacheType m_AwsCryptographyMaterialProvidersTypes.CacheType + _ = _4_cacheType + if (config).Is_multi() { + if (((config).Dtor_multi()).Dtor_cache()).Is_Some() { + _4_cacheType = (((config).Dtor_multi()).Dtor_cache()).Dtor_value().(m_AwsCryptographyMaterialProvidersTypes.CacheType) + } else { + _4_cacheType = m_AwsCryptographyMaterialProvidersTypes.Companion_CacheType_.Create_Default_(m_AwsCryptographyMaterialProvidersTypes.Companion_DefaultCache_.Create_DefaultCache_(int32(1000))) + } + } else if (((config).Dtor_single()).Dtor_cache()).Is_Some() { + _4_cacheType = (((config).Dtor_single()).Dtor_cache()).Dtor_value().(m_AwsCryptographyMaterialProvidersTypes.CacheType) + } else { + _4_cacheType = m_AwsCryptographyMaterialProvidersTypes.Companion_CacheType_.Create_Default_(m_AwsCryptographyMaterialProvidersTypes.Companion_DefaultCache_.Create_DefaultCache_(int32(1))) + } + var _5_cache m_AwsCryptographyMaterialProvidersTypes.ICryptographicMaterialsCache = (m_AwsCryptographyMaterialProvidersTypes.ICryptographicMaterialsCache)(nil) + _ = _5_cache + if (_4_cacheType).Is_Shared() { + _5_cache = (_4_cacheType).Dtor_Shared() + } else { + var _6_input m_AwsCryptographyMaterialProvidersTypes.CreateCryptographicMaterialsCacheInput + _ = _6_input + _6_input = m_AwsCryptographyMaterialProvidersTypes.Companion_CreateCryptographicMaterialsCacheInput_.Create_CreateCryptographicMaterialsCacheInput_(_4_cacheType) + var _7_maybeCache m_Wrappers.Result + _ = _7_maybeCache + var _out1 m_Wrappers.Result + _ = _out1 + _out1 = (_3_mpl).CreateCryptographicMaterialsCache(_6_input) + _7_maybeCache = _out1 + var _8_valueOrError1 m_Wrappers.Result = m_Wrappers.Result{} + _ = _8_valueOrError1 + _8_valueOrError1 = (_7_maybeCache).MapFailure(func(coer130 func(m_AwsCryptographyMaterialProvidersTypes.Error) m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Error) func(interface{}) interface{} { + return func(arg164 interface{}) interface{} { + return coer130(arg164.(m_AwsCryptographyMaterialProvidersTypes.Error)) + } + }(func(_9_e m_AwsCryptographyMaterialProvidersTypes.Error) m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Error { + return m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Companion_Error_.Create_AwsCryptographyMaterialProviders_(_9_e) + })) + if (_8_valueOrError1).IsFailure() { + output = (_8_valueOrError1).PropagateFailure() + return output + } + _5_cache = m_AwsCryptographyMaterialProvidersTypes.Companion_ICryptographicMaterialsCache_.CastTo_((_8_valueOrError1).Extract()) + } + var _10_partitionIdBytes _dafny.Sequence = _dafny.EmptySeq + _ = _10_partitionIdBytes + if ((config).Is_multi()) && ((((config).Dtor_multi()).Dtor_partitionId()).Is_Some()) { + var _11_valueOrError2 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(m_UTF8.Companion_ValidUTF8Bytes_.Witness()) + _ = _11_valueOrError2 + _11_valueOrError2 = (m_UTF8.Encode((((config).Dtor_multi()).Dtor_partitionId()).Dtor_value().(_dafny.Sequence))).MapFailure(func(coer131 func(_dafny.Sequence) m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Error) func(interface{}) interface{} { + return func(arg165 interface{}) interface{} { + return coer131(arg165.(_dafny.Sequence)) + } + }(func(_12_e _dafny.Sequence) m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Error { + return m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Companion_Error_.Create_DynamoDbEncryptionException_(_dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("Could not UTF-8 Encode Partition ID from MultiKeyStore: "), _12_e)) + })) + if (_11_valueOrError2).IsFailure() { + output = (_11_valueOrError2).PropagateFailure() + return output + } + _10_partitionIdBytes = (_11_valueOrError2).Extract().(_dafny.Sequence) + } else if ((config).Is_single()) && ((((config).Dtor_single()).Dtor_partitionId()).Is_Some()) { + var _13_valueOrError3 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(m_UTF8.Companion_ValidUTF8Bytes_.Witness()) + _ = _13_valueOrError3 + _13_valueOrError3 = (m_UTF8.Encode((((config).Dtor_single()).Dtor_partitionId()).Dtor_value().(_dafny.Sequence))).MapFailure(func(coer132 func(_dafny.Sequence) m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Error) func(interface{}) interface{} { + return func(arg166 interface{}) interface{} { + return coer132(arg166.(_dafny.Sequence)) + } + }(func(_14_e _dafny.Sequence) m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Error { + return m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Companion_Error_.Create_DynamoDbEncryptionException_(_dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("Could not UTF-8 Encode Partition ID from SingleKeyStore: "), _14_e)) + })) + if (_13_valueOrError3).IsFailure() { + output = (_13_valueOrError3).PropagateFailure() + return output + } + _10_partitionIdBytes = (_13_valueOrError3).Extract().(_dafny.Sequence) + } else { + var _15_valueOrError4 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(_dafny.EmptySeq) + _ = _15_valueOrError4 + var _out2 m_Wrappers.Result + _ = _out2 + _out2 = m_SearchableEncryptionInfo.Companion_Default___.GenerateUuidBytes() + _15_valueOrError4 = _out2 + if (_15_valueOrError4).IsFailure() { + output = (_15_valueOrError4).PropagateFailure() + return output + } + _10_partitionIdBytes = (_15_valueOrError4).Extract().(_dafny.Sequence) + } + var _16_getKeyStoreInfoOutput_q m_Wrappers.Result + _ = _16_getKeyStoreInfoOutput_q + var _out3 m_Wrappers.Result + _ = _out3 + _out3 = (keyStore).GetKeyStoreInfo() + _16_getKeyStoreInfoOutput_q = _out3 + var _17_valueOrError5 m_Wrappers.Result = m_Wrappers.Result{} + _ = _17_valueOrError5 + _17_valueOrError5 = (_16_getKeyStoreInfoOutput_q).MapFailure(func(coer133 func(m_AwsCryptographyKeyStoreTypes.Error) m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Error) func(interface{}) interface{} { + return func(arg167 interface{}) interface{} { + return coer133(arg167.(m_AwsCryptographyKeyStoreTypes.Error)) + } + }(func(_18_e m_AwsCryptographyKeyStoreTypes.Error) m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Error { + return m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Companion_Error_.Create_AwsCryptographyKeyStore_(_18_e) + })) + if (_17_valueOrError5).IsFailure() { + output = (_17_valueOrError5).PropagateFailure() + return output + } + var _19_getKeyStoreInfoOutput m_AwsCryptographyKeyStoreTypes.GetKeyStoreInfoOutput + _ = _19_getKeyStoreInfoOutput + _19_getKeyStoreInfoOutput = (_17_valueOrError5).Extract().(m_AwsCryptographyKeyStoreTypes.GetKeyStoreInfoOutput) + var _20_logicalKeyStoreName _dafny.Sequence + _ = _20_logicalKeyStoreName + _20_logicalKeyStoreName = (_19_getKeyStoreInfoOutput).Dtor_logicalKeyStoreName() + var _21_valueOrError6 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(m_UTF8.Companion_ValidUTF8Bytes_.Witness()) + _ = _21_valueOrError6 + _21_valueOrError6 = (m_UTF8.Encode(_20_logicalKeyStoreName)).MapFailure(func(coer134 func(_dafny.Sequence) m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Error) func(interface{}) interface{} { + return func(arg168 interface{}) interface{} { + return coer134(arg168.(_dafny.Sequence)) + } + }(func(_22_e _dafny.Sequence) m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Error { + return m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Companion_Error_.Create_DynamoDbEncryptionException_(_dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("Could not UTF-8 Encode Logical Key Store Name: "), _22_e)) + })) + if (_21_valueOrError6).IsFailure() { + output = (_21_valueOrError6).PropagateFailure() + return output + } + var _23_logicalKeyStoreNameBytes _dafny.Sequence + _ = _23_logicalKeyStoreNameBytes + _23_logicalKeyStoreNameBytes = (_21_valueOrError6).Extract().(_dafny.Sequence) + if (config).Is_multi() { + var _24_valueOrError7 m_Wrappers.Outcome = m_Wrappers.Companion_Outcome_.Default() + _ = _24_valueOrError7 + _24_valueOrError7 = m_Wrappers.Companion_Default___.Need((int32(0)) < (((config).Dtor_multi()).Dtor_cacheTTL()), m_DynamoDbEncryptionUtil.Companion_Default___.E(_dafny.SeqOfString("Beacon Cache TTL must be at least 1."))) + if (_24_valueOrError7).IsFailure() { + output = (_24_valueOrError7).PropagateFailure() + return output + } + var _25_valueOrError8 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(false) + _ = _25_valueOrError8 + _25_valueOrError8 = Companion_Default___.ShouldDeleteKeyField(outer, ((config).Dtor_multi()).Dtor_keyFieldName()) + if (_25_valueOrError8).IsFailure() { + output = (_25_valueOrError8).PropagateFailure() + return output + } + var _26_deleteKey bool + _ = _26_deleteKey + _26_deleteKey = (_25_valueOrError8).Extract().(bool) + output = m_Wrappers.Companion_Result_.Create_Success_(m_SearchableEncryptionInfo.Companion_KeySource_.Create_KeySource_(client, keyStore, m_SearchableEncryptionInfo.Companion_KeyLocation_.Create_MultiLoc_(((config).Dtor_multi()).Dtor_keyFieldName(), _26_deleteKey), _5_cache, uint32(((config).Dtor_multi()).Dtor_cacheTTL()), _10_partitionIdBytes, _23_logicalKeyStoreNameBytes)) + } else { + var _27_valueOrError9 m_Wrappers.Outcome = m_Wrappers.Companion_Outcome_.Default() + _ = _27_valueOrError9 + _27_valueOrError9 = m_Wrappers.Companion_Default___.Need((int32(0)) < (((config).Dtor_single()).Dtor_cacheTTL()), m_DynamoDbEncryptionUtil.Companion_Default___.E(_dafny.SeqOfString("Beacon Cache TTL must be at least 1."))) + if (_27_valueOrError9).IsFailure() { + output = (_27_valueOrError9).PropagateFailure() + return output + } + output = m_Wrappers.Companion_Result_.Create_Success_(m_SearchableEncryptionInfo.Companion_KeySource_.Create_KeySource_(client, keyStore, m_SearchableEncryptionInfo.Companion_KeyLocation_.Create_SingleLoc_(((config).Dtor_single()).Dtor_keyId()), _5_cache, uint32(((config).Dtor_single()).Dtor_cacheTTL()), _10_partitionIdBytes, _23_logicalKeyStoreNameBytes)) + } + return output +} +func (_static *CompanionStruct_Default___) ConvertVersion(outer m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.DynamoDbTableEncryptionConfig, config m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.BeaconVersion) m_Wrappers.Result { + var output m_Wrappers.Result = m_Wrappers.Result{} + _ = output + var _0_valueOrError0 m_Wrappers.Outcome = m_Wrappers.Companion_Outcome_.Default() + _ = _0_valueOrError0 + _0_valueOrError0 = m_Wrappers.Companion_Default___.Need(((config).Dtor_version()) == (int32(1)), m_DynamoDbEncryptionUtil.Companion_Default___.E(_dafny.SeqOfString("Version number in BeaconVersion must be '1'."))) + if (_0_valueOrError0).IsFailure() { + output = (_0_valueOrError0).PropagateFailure() + return output + } + var _1_valueOrError1 m_Wrappers.Outcome = m_Wrappers.Companion_Outcome_.Default() + _ = _1_valueOrError1 + _1_valueOrError1 = m_Wrappers.Companion_Default___.Need((_dafny.IntOfUint32(((config).Dtor_standardBeacons()).Cardinality())).Sign() == 1, m_DynamoDbEncryptionUtil.Companion_Default___.E(_dafny.SeqOfString("At least one standard beacon must be configured."))) + if (_1_valueOrError1).IsFailure() { + output = (_1_valueOrError1).PropagateFailure() + return output + } + var _2_maybePrimitives m_Wrappers.Result + _ = _2_maybePrimitives + var _out0 m_Wrappers.Result + _ = _out0 + _out0 = m_AtomicPrimitives.Companion_Default___.AtomicPrimitives(m_AtomicPrimitives.Companion_Default___.DefaultCryptoConfig()) + _2_maybePrimitives = _out0 + var _3_valueOrError2 m_Wrappers.Result = m_Wrappers.Result{} + _ = _3_valueOrError2 + _3_valueOrError2 = (_2_maybePrimitives).MapFailure(func(coer135 func(m_AwsCryptographyPrimitivesTypes.Error) m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Error) func(interface{}) interface{} { + return func(arg169 interface{}) interface{} { + return coer135(arg169.(m_AwsCryptographyPrimitivesTypes.Error)) + } + }(func(_4_e m_AwsCryptographyPrimitivesTypes.Error) m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Error { + return m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Companion_Error_.Create_AwsCryptographyPrimitives_(_4_e) + })) + if (_3_valueOrError2).IsFailure() { + output = (_3_valueOrError2).PropagateFailure() + return output + } + var _5_primitives *m_AtomicPrimitives.AtomicPrimitivesClient + _ = _5_primitives + _5_primitives = (_3_valueOrError2).Extract().(*m_AtomicPrimitives.AtomicPrimitivesClient) + var _6_valueOrError3 m_Wrappers.Result = m_Wrappers.Result{} + _ = _6_valueOrError3 + var _out1 m_Wrappers.Result + _ = _out1 + _out1 = Companion_Default___.MakeKeySource(outer, (config).Dtor_keyStore(), (config).Dtor_keySource(), _5_primitives) + _6_valueOrError3 = _out1 + if (_6_valueOrError3).IsFailure() { + output = (_6_valueOrError3).PropagateFailure() + return output + } + var _7_source m_SearchableEncryptionInfo.KeySource + _ = _7_source + _7_source = (_6_valueOrError3).Extract().(m_SearchableEncryptionInfo.KeySource) + var _out2 m_Wrappers.Result + _ = _out2 + _out2 = Companion_Default___.ConvertVersionWithSource(outer, config, _7_source) + output = _out2 + return output +} +func (_static *CompanionStruct_Default___) ConvertVersionWithSource(outer m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.DynamoDbTableEncryptionConfig, config m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.BeaconVersion, source m_SearchableEncryptionInfo.KeySource) m_Wrappers.Result { + var output m_Wrappers.Result = m_Wrappers.Result{} + _ = output + var _0_valueOrError0 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(_dafny.EmptyMap) + _ = _0_valueOrError0 + _0_valueOrError0 = Companion_Default___.ConvertVirtualFields(outer, (config).Dtor_virtualFields()) + if (_0_valueOrError0).IsFailure() { + output = (_0_valueOrError0).PropagateFailure() + return output + } + var _1_virtualFields _dafny.Map + _ = _1_virtualFields + _1_virtualFields = (_0_valueOrError0).Extract().(_dafny.Map) + var _2_valueOrError1 m_Wrappers.Result = m_Wrappers.Result{} + _ = _2_valueOrError1 + var _out0 m_Wrappers.Result + _ = _out0 + _out0 = Companion_Default___.AddStandardBeacons((config).Dtor_standardBeacons(), outer, (source).Dtor_client(), _1_virtualFields, _dafny.NewMapBuilder().ToMap()) + _2_valueOrError1 = _out0 + if (_2_valueOrError1).IsFailure() { + output = (_2_valueOrError1).PropagateFailure() + return output + } + var _3_std _dafny.Map + _ = _3_std + _3_std = (_2_valueOrError1).Extract().(_dafny.Map) + var _4_signed _dafny.Sequence + _ = _4_signed + if ((config).Dtor_signedParts()).Is_Some() { + _4_signed = ((config).Dtor_signedParts()).Dtor_value().(_dafny.Sequence) + } else { + _4_signed = _dafny.SeqOf() + } + var _5_valueOrError2 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(Companion_PartSet_.Default()) + _ = _5_valueOrError2 + _5_valueOrError2 = Companion_Default___.GetSignedParts(_4_signed, outer, _dafny.SeqOfString("Global Parts List"), Companion_PartSet_.Create_PartSet_(_dafny.SeqOf(), _dafny.SetOf(), _dafny.SetOf())) + if (_5_valueOrError2).IsFailure() { + output = (_5_valueOrError2).PropagateFailure() + return output + } + var _6_globalSignedParts PartSet + _ = _6_globalSignedParts + _6_globalSignedParts = (_5_valueOrError2).Extract().(PartSet) + var _7_globalEncryptedParts PartSet + _ = _7_globalEncryptedParts + _7_globalEncryptedParts = Companion_PartSet_.Create_PartSet_(_dafny.SeqOf(), _dafny.SetOf(), _dafny.SetOf()) + if ((config).Dtor_encryptedParts()).Is_Some() { + var _8_valueOrError3 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(Companion_PartSet_.Default()) + _ = _8_valueOrError3 + _8_valueOrError3 = Companion_Default___.GetEncryptedParts(((config).Dtor_encryptedParts()).Dtor_value().(_dafny.Sequence), _3_std, _dafny.SeqOfString("Global Parts List"), Companion_PartSet_.Create_PartSet_(_dafny.SeqOf(), _dafny.SetOf(), _dafny.SetOf())) + if (_8_valueOrError3).IsFailure() { + output = (_8_valueOrError3).PropagateFailure() + return output + } + _7_globalEncryptedParts = (_8_valueOrError3).Extract().(PartSet) + } + var _9_beacons _dafny.Map = _dafny.EmptyMap + _ = _9_beacons + if ((config).Dtor_compoundBeacons()).Is_Some() { + var _10_valueOrError4 m_Wrappers.Result = m_Wrappers.Result{} + _ = _10_valueOrError4 + var _out1 m_Wrappers.Result + _ = _out1 + _out1 = Companion_Default___.AddCompoundBeacons(((config).Dtor_compoundBeacons()).Dtor_value().(_dafny.Sequence), outer, (source).Dtor_client(), _1_virtualFields, _3_std, _6_globalSignedParts, _7_globalEncryptedParts) + _10_valueOrError4 = _out1 + if (_10_valueOrError4).IsFailure() { + output = (_10_valueOrError4).PropagateFailure() + return output + } + _9_beacons = (_10_valueOrError4).Extract().(_dafny.Map) + } else { + _9_beacons = _3_std + } + var _11_valueOrError5 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(false) + _ = _11_valueOrError5 + _11_valueOrError5 = Companion_Default___.CheckBeacons(_9_beacons) + if (_11_valueOrError5).IsFailure() { + output = (_11_valueOrError5).PropagateFailure() + return output + } + var _12___v0 bool + _ = _12___v0 + _12___v0 = (_11_valueOrError5).Extract().(bool) + if ((source).Dtor_keyLoc()).Is_MultiLoc() { + var _13_name _dafny.Sequence + _ = _13_name + _13_name = ((source).Dtor_keyLoc()).Dtor_keyName() + if (_9_beacons).Contains(_13_name) { + output = m_Wrappers.Companion_Result_.Create_Failure_(m_DynamoDbEncryptionUtil.Companion_Default___.E(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("A beacon key field name of "), _13_name), _dafny.SeqOfString(" was configured, but there's also a beacon of that name.")))) + return output + } + if (_1_virtualFields).Contains(_13_name) { + output = m_Wrappers.Companion_Result_.Create_Failure_(m_DynamoDbEncryptionUtil.Companion_Default___.E(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("A beacon key field name of "), _13_name), _dafny.SeqOfString(" was configured, but there's also a virtual field of that name.")))) + return output + } + } + output = m_SearchableEncryptionInfo.Companion_Default___.MakeBeaconVersion(uint8((config).Dtor_version()), source, _9_beacons, _1_virtualFields, (outer).Dtor_attributeActionsOnEncrypt()) + return output + return output +} +func (_static *CompanionStruct_Default___) ConvertVirtualFields(outer m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.DynamoDbTableEncryptionConfig, vf m_Wrappers.Option) m_Wrappers.Result { + if (vf).Is_None() { + return m_Wrappers.Companion_Result_.Create_Success_(_dafny.NewMapBuilder().ToMap()) + } else { + return Companion_Default___.AddVirtualFields((vf).Dtor_value().(_dafny.Sequence), outer, _dafny.NewMapBuilder().ToMap()) + } +} +func (_static *CompanionStruct_Default___) IsSigned(outer m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.DynamoDbTableEncryptionConfig, loc _dafny.Sequence) bool { + var _pat_let_tv0 = outer + _ = _pat_let_tv0 + var _pat_let_tv1 = outer + _ = _pat_let_tv1 + return (true) && (func(_pat_let20_0 _dafny.Sequence) bool { + return func(_0_name _dafny.Sequence) bool { + return (((_pat_let_tv0).Dtor_attributeActionsOnEncrypt()).Contains(_0_name)) && (!(((_pat_let_tv1).Dtor_attributeActionsOnEncrypt()).Get(_0_name).(m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.CryptoAction)).Equals(m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Companion_CryptoAction_.Create_DO__NOTHING_())) + }(_pat_let20_0) + }(((loc).Select(0).(m_TermLoc.Selector)).Dtor_key())) +} +func (_static *CompanionStruct_Default___) IsSignOnly(outer m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.DynamoDbTableEncryptionConfig, loc _dafny.Sequence) bool { + var _pat_let_tv0 = outer + _ = _pat_let_tv0 + var _pat_let_tv1 = outer + _ = _pat_let_tv1 + var _pat_let_tv2 = outer + _ = _pat_let_tv2 + return (true) && (func(_pat_let21_0 _dafny.Sequence) bool { + return func(_0_name _dafny.Sequence) bool { + return (((_pat_let_tv0).Dtor_attributeActionsOnEncrypt()).Contains(_0_name)) && (((((_pat_let_tv1).Dtor_attributeActionsOnEncrypt()).Get(_0_name).(m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.CryptoAction)).Equals(m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Companion_CryptoAction_.Create_SIGN__AND__INCLUDE__IN__ENCRYPTION__CONTEXT_())) || ((((_pat_let_tv2).Dtor_attributeActionsOnEncrypt()).Get(_0_name).(m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.CryptoAction)).Equals(m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Companion_CryptoAction_.Create_SIGN__ONLY_()))) + }(_pat_let21_0) + }(((loc).Select(0).(m_TermLoc.Selector)).Dtor_key())) +} +func (_static *CompanionStruct_Default___) IsEncrypted(outer m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.DynamoDbTableEncryptionConfig, loc _dafny.Sequence) bool { + var _pat_let_tv0 = outer + _ = _pat_let_tv0 + var _pat_let_tv1 = outer + _ = _pat_let_tv1 + return (true) && (func(_pat_let22_0 _dafny.Sequence) bool { + return func(_0_name _dafny.Sequence) bool { + return (((_pat_let_tv0).Dtor_attributeActionsOnEncrypt()).Contains(_0_name)) && ((((_pat_let_tv1).Dtor_attributeActionsOnEncrypt()).Get(_0_name).(m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.CryptoAction)).Equals(m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Companion_CryptoAction_.Create_ENCRYPT__AND__SIGN_())) + }(_pat_let22_0) + }(((loc).Select(0).(m_TermLoc.Selector)).Dtor_key())) +} +func (_static *CompanionStruct_Default___) IsEncryptedV(outer m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.DynamoDbTableEncryptionConfig, virtualFields _dafny.Map, loc _dafny.Sequence) bool { + return (Companion_Default___.IsEncrypted(outer, loc)) || (((virtualFields).Contains(((loc).Select(0).(m_TermLoc.Selector)).Dtor_key())) && (((virtualFields).Get(((loc).Select(0).(m_TermLoc.Selector)).Dtor_key()).(m_DdbVirtualFields.VirtField)).Examine((func(_0_outer m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.DynamoDbTableEncryptionConfig) func(_dafny.Sequence) bool { + return func(_1_t _dafny.Sequence) bool { + return Companion_Default___.IsEncrypted(_0_outer, _1_t) + } + })(outer)))) +} +func (_static *CompanionStruct_Default___) BeaconNameAllowed(outer m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.DynamoDbTableEncryptionConfig, virtualFields _dafny.Map, name _dafny.Sequence, context _dafny.Sequence, isSignedBeacon bool) m_Wrappers.Result { + if (((outer).Dtor_attributeActionsOnEncrypt()).Contains(name)) && (!(((outer).Dtor_attributeActionsOnEncrypt()).Get(name).(m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.CryptoAction)).Equals(m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Companion_CryptoAction_.Create_ENCRYPT__AND__SIGN_())) { + return m_Wrappers.Companion_Result_.Create_Failure_(m_DynamoDbEncryptionUtil.Companion_Default___.E(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(name, _dafny.SeqOfString(" not allowed as a ")), context), _dafny.SeqOfString(" because it is already an unencrypted attribute.")))) + } else if (isSignedBeacon) && (((outer).Dtor_attributeActionsOnEncrypt()).Contains(name)) { + return m_Wrappers.Companion_Result_.Create_Failure_(m_DynamoDbEncryptionUtil.Companion_Default___.E(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(name, _dafny.SeqOfString(" not allowed as a ")), context), _dafny.SeqOfString(" because a fully signed beacon cannot have the same name as an existing attribute.")))) + } else if (((outer).Dtor_allowedUnsignedAttributes()).Is_Some()) && (_dafny.Companion_Sequence_.Contains(((outer).Dtor_allowedUnsignedAttributes()).Dtor_value().(_dafny.Sequence), name)) { + return m_Wrappers.Companion_Result_.Create_Failure_(m_DynamoDbEncryptionUtil.Companion_Default___.E(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(name, _dafny.SeqOfString(" not allowed as a ")), context), _dafny.SeqOfString(" because it is already an allowed unauthenticated attribute.")))) + } else if (((outer).Dtor_allowedUnsignedAttributePrefix()).Is_Some()) && (_dafny.Companion_Sequence_.IsPrefixOf(((outer).Dtor_allowedUnsignedAttributePrefix()).Dtor_value().(_dafny.Sequence), name)) { + return m_Wrappers.Companion_Result_.Create_Failure_(m_DynamoDbEncryptionUtil.Companion_Default___.E(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(name, _dafny.SeqOfString(" not allowed as a ")), context), _dafny.SeqOfString(" because it begins with the allowed unauthenticated prefix.")))) + } else if _dafny.Companion_Sequence_.IsPrefixOf(m_DynamoDbEncryptionUtil.Companion_Default___.ReservedPrefix(), name) { + return m_Wrappers.Companion_Result_.Create_Failure_(m_DynamoDbEncryptionUtil.Companion_Default___.E(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(name, _dafny.SeqOfString(" not allowed as a ")), context), _dafny.SeqOfString(" because it begins with the reserved prefix.")))) + } else { + return m_Wrappers.Companion_Result_.Create_Success_(true) + } +} +func (_static *CompanionStruct_Default___) VirtualFieldNameAllowed(outer m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.DynamoDbTableEncryptionConfig, name _dafny.Sequence) m_Wrappers.Result { + if ((outer).Dtor_attributeActionsOnEncrypt()).Contains(name) { + return m_Wrappers.Companion_Result_.Create_Failure_(m_DynamoDbEncryptionUtil.Companion_Default___.E(_dafny.Companion_Sequence_.Concatenate(name, _dafny.SeqOfString(" not allowed as a Virtual Field because it is already a configured attribute.")))) + } else if (((outer).Dtor_allowedUnsignedAttributes()).Is_Some()) && (_dafny.Companion_Sequence_.Contains(((outer).Dtor_allowedUnsignedAttributes()).Dtor_value().(_dafny.Sequence), name)) { + return m_Wrappers.Companion_Result_.Create_Failure_(m_DynamoDbEncryptionUtil.Companion_Default___.E(_dafny.Companion_Sequence_.Concatenate(name, _dafny.SeqOfString(" not allowed as a Virtual Field because it is already an allowed unauthenticated attribute.")))) + } else if (((outer).Dtor_allowedUnsignedAttributePrefix()).Is_Some()) && (_dafny.Companion_Sequence_.IsPrefixOf(((outer).Dtor_allowedUnsignedAttributePrefix()).Dtor_value().(_dafny.Sequence), name)) { + return m_Wrappers.Companion_Result_.Create_Failure_(m_DynamoDbEncryptionUtil.Companion_Default___.E(_dafny.Companion_Sequence_.Concatenate(name, _dafny.SeqOfString(" not allowed as a Virtual Field because it begins with the allowed unauthenticated prefix.")))) + } else if _dafny.Companion_Sequence_.IsPrefixOf(m_DynamoDbEncryptionUtil.Companion_Default___.ReservedPrefix(), name) { + return m_Wrappers.Companion_Result_.Create_Failure_(m_DynamoDbEncryptionUtil.Companion_Default___.E(_dafny.Companion_Sequence_.Concatenate(name, _dafny.SeqOfString(" not allowed as a Virtual Field because it begins with the reserved prefix.")))) + } else { + return m_Wrappers.Companion_Result_.Create_Success_(true) + } +} +func (_static *CompanionStruct_Default___) FindVirtualFieldWithThisLocation(fields _dafny.Map, locs _dafny.Set) m_Wrappers.Option { + var _0_badNames _dafny.Set = func() _dafny.Set { + var _coll0 = _dafny.NewBuilder() + _ = _coll0 + for _iter27 := _dafny.Iterate((fields).Keys().Elements()); ; { + _compr_0, _ok27 := _iter27() + if !_ok27 { + break + } + var _1_b _dafny.Sequence + _1_b = interface{}(_compr_0).(_dafny.Sequence) + if ((fields).Contains(_1_b)) && ((((fields).Get(_1_b).(m_DdbVirtualFields.VirtField)).GetLocs()).Equals(locs)) { + _coll0.Add(_1_b) + } + } + return _coll0.ToSet() + }() + _ = _0_badNames + if ((_0_badNames).Cardinality()).Sign() == 0 { + return m_Wrappers.Companion_Option_.Create_None_() + } else { + var _2_badSeq _dafny.Sequence = m_SortedSets.SetToOrderedSequence2(_0_badNames, func(coer136 func(_dafny.Char, _dafny.Char) bool) func(interface{}, interface{}) bool { + return func(arg170 interface{}, arg171 interface{}) bool { + return coer136(arg170.(_dafny.Char), arg171.(_dafny.Char)) + } + }(m_DynamoDbEncryptionUtil.Companion_Default___.CharLess)) + _ = _2_badSeq + return m_Wrappers.Companion_Option_.Create_Some_((_2_badSeq).Select(0).(_dafny.Sequence)) + } +} +func (_static *CompanionStruct_Default___) ExistsConstructorWithTheseRequired(cons _dafny.Sequence, locs _dafny.Set) bool { + return (Companion_Default___.SeqCount(func(coer137 func(m_CompoundBeacon.Constructor) bool) func(interface{}) bool { + return func(arg172 interface{}) bool { + return coer137(arg172.(m_CompoundBeacon.Constructor)) + } + }((func(_0_locs _dafny.Set) func(m_CompoundBeacon.Constructor) bool { + return func(_1_c m_CompoundBeacon.Constructor) bool { + return ((_1_c).GetReqParts()).Equals(_0_locs) + } + })(locs)), cons)).Sign() == 1 +} +func (_static *CompanionStruct_Default___) GetPartsString(c m_CompoundBeacon.Constructor) _dafny.Sequence { + var _0_req _dafny.Sequence = m_Seq.Companion_Default___.Filter(func(coer138 func(m_CompoundBeacon.ConstructorPart) bool) func(interface{}) bool { + return func(arg173 interface{}) bool { + return coer138(arg173.(m_CompoundBeacon.ConstructorPart)) + } + }(func(_1_p m_CompoundBeacon.ConstructorPart) bool { + return (_1_p).Dtor_required() + }), (c).Dtor_parts()) + _ = _0_req + var _2_names _dafny.Sequence = m_Seq.Companion_Default___.Map(func(coer139 func(m_CompoundBeacon.ConstructorPart) _dafny.Sequence) func(interface{}) interface{} { + return func(arg174 interface{}) interface{} { + return coer139(arg174.(m_CompoundBeacon.ConstructorPart)) + } + }(func(_3_p m_CompoundBeacon.ConstructorPart) _dafny.Sequence { + return ((_3_p).Dtor_part()).GetName() + }), _0_req) + _ = _2_names + if (_dafny.IntOfUint32((_2_names).Cardinality())).Sign() == 0 { + return _dafny.SeqOfString("") + } else { + return m_StandardLibrary.Companion_Default___.Join(_2_names, _dafny.SeqOfString(", ")) + } +} +func (_static *CompanionStruct_Default___) AddVirtualFields(vf _dafny.Sequence, outer m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.DynamoDbTableEncryptionConfig, converted _dafny.Map) m_Wrappers.Result { + goto TAIL_CALL_START +TAIL_CALL_START: + if (_dafny.IntOfUint32((vf).Cardinality())).Sign() == 0 { + return m_Wrappers.Companion_Result_.Create_Success_(converted) + } else { + var _0_valueOrError0 m_Wrappers.Outcome = m_Wrappers.Companion_Default___.Need(!(converted).Contains(((vf).Select(0).(m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.VirtualField)).Dtor_name()), m_DynamoDbEncryptionUtil.Companion_Default___.E(_dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("Duplicate VirtualField name : "), ((vf).Select(0).(m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.VirtualField)).Dtor_name()))) + _ = _0_valueOrError0 + if (_0_valueOrError0).IsFailure() { + return (_0_valueOrError0).PropagateFailure() + } else { + var _1_valueOrError1 m_Wrappers.Result = Companion_Default___.VirtualFieldNameAllowed(outer, ((vf).Select(0).(m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.VirtualField)).Dtor_name()) + _ = _1_valueOrError1 + if (_1_valueOrError1).IsFailure() { + return (_1_valueOrError1).PropagateFailure() + } else { + var _2___v1 bool = (_1_valueOrError1).Extract().(bool) + _ = _2___v1 + var _3_valueOrError2 m_Wrappers.Result = m_DdbVirtualFields.Companion_Default___.ParseVirtualFieldConfig((vf).Select(0).(m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.VirtualField)) + _ = _3_valueOrError2 + if (_3_valueOrError2).IsFailure() { + return (_3_valueOrError2).PropagateFailure() + } else { + var _4_newField m_DdbVirtualFields.VirtField = (_3_valueOrError2).Extract().(m_DdbVirtualFields.VirtField) + _ = _4_newField + var _5_valueOrError3 m_Wrappers.Outcome = m_Wrappers.Companion_Default___.Need(!((_4_newField).Examine((func(_6_outer m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.DynamoDbTableEncryptionConfig) func(_dafny.Sequence) bool { + return func(_7_t _dafny.Sequence) bool { + return !(Companion_Default___.IsSigned(_6_outer, _7_t)) + } + })(outer))), m_DynamoDbEncryptionUtil.Companion_Default___.E(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("VirtualField "), ((vf).Select(0).(m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.VirtualField)).Dtor_name()), _dafny.SeqOfString(" must be defined on signed fields.")))) + _ = _5_valueOrError3 + if (_5_valueOrError3).IsFailure() { + return (_5_valueOrError3).PropagateFailure() + } else { + var _8_badField m_Wrappers.Option = Companion_Default___.FindVirtualFieldWithThisLocation(converted, (_4_newField).GetLocs()) + _ = _8_badField + if (_8_badField).Is_Some() { + return m_Wrappers.Companion_Result_.Create_Failure_(m_DynamoDbEncryptionUtil.Companion_Default___.E(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("Virtual field "), ((vf).Select(0).(m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.VirtualField)).Dtor_name()), _dafny.SeqOfString(" is defined on the same locations as ")), (_8_badField).Dtor_value().(_dafny.Sequence)), _dafny.SeqOfString(".")))) + } else { + var _in0 _dafny.Sequence = (vf).Drop(1) + _ = _in0 + var _in1 m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.DynamoDbTableEncryptionConfig = outer + _ = _in1 + var _in2 _dafny.Map = (converted).Update(((vf).Select(0).(m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.VirtualField)).Dtor_name(), _4_newField) + _ = _in2 + vf = _in0 + outer = _in1 + converted = _in2 + goto TAIL_CALL_START + } + } + } + } + } + } +} +func (_static *CompanionStruct_Default___) FindBeaconWithThisLocation(beacons _dafny.Map, loc _dafny.Sequence) m_Wrappers.Option { + var _0_badNames _dafny.Set = func() _dafny.Set { + var _coll0 = _dafny.NewBuilder() + _ = _coll0 + for _iter28 := _dafny.Iterate((beacons).Keys().Elements()); ; { + _compr_0, _ok28 := _iter28() + if !_ok28 { + break + } + var _1_b _dafny.Sequence + _1_b = interface{}(_compr_0).(_dafny.Sequence) + if (((beacons).Contains(_1_b)) && (((beacons).Get(_1_b).(m_SearchableEncryptionInfo.Beacon)).Is_Standard())) && (_dafny.Companion_Sequence_.Equal((((beacons).Get(_1_b).(m_SearchableEncryptionInfo.Beacon)).Dtor_std()).Dtor_loc(), loc)) { + _coll0.Add(_1_b) + } + } + return _coll0.ToSet() + }() + _ = _0_badNames + if ((_0_badNames).Cardinality()).Sign() == 0 { + return m_Wrappers.Companion_Option_.Create_None_() + } else { + var _2_badSeq _dafny.Sequence = m_SortedSets.SetToOrderedSequence2(_0_badNames, func(coer140 func(_dafny.Char, _dafny.Char) bool) func(interface{}, interface{}) bool { + return func(arg175 interface{}, arg176 interface{}) bool { + return coer140(arg175.(_dafny.Char), arg176.(_dafny.Char)) + } + }(m_DynamoDbEncryptionUtil.Companion_Default___.CharLess)) + _ = _2_badSeq + return m_Wrappers.Companion_Option_.Create_Some_((_2_badSeq).Select(0).(_dafny.Sequence)) + } +} +func (_static *CompanionStruct_Default___) IsValidShare(converted _dafny.Map, name _dafny.Sequence, length uint8, share _dafny.Sequence) m_Wrappers.Result { + if (converted).Contains(share) { + var _0_tb m_SearchableEncryptionInfo.Beacon = (converted).Get(share).(m_SearchableEncryptionInfo.Beacon) + _ = _0_tb + if (_0_tb).Is_Standard() { + if (((_0_tb).Dtor_std()).Dtor_share()).Is_Some() { + if _dafny.Companion_Sequence_.Equal(name, share) { + return m_Wrappers.Companion_Result_.Create_Failure_(m_DynamoDbEncryptionUtil.Companion_Default___.E(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("Beacon "), name), _dafny.SeqOfString(" is shared to itself.")))) + } else { + return m_Wrappers.Companion_Result_.Create_Failure_(m_DynamoDbEncryptionUtil.Companion_Default___.E(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("Beacon "), name), _dafny.SeqOfString(" is shared to ")), share), _dafny.SeqOfString(" which is in turn shared to ")), (((_0_tb).Dtor_std()).Dtor_share()).Dtor_value().(_dafny.Sequence)), _dafny.SeqOfString(". Share chains are not allowed.")))) + } + } else if (((_0_tb).Dtor_std()).Dtor_length()) == (length) { + return m_Wrappers.Companion_Result_.Create_Success_(true) + } else { + return m_Wrappers.Companion_Result_.Create_Failure_(m_DynamoDbEncryptionUtil.Companion_Default___.E(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("Beacon "), name), _dafny.SeqOfString(" is shared to ")), share), _dafny.SeqOfString(" but ")), name), _dafny.SeqOfString(" has length ")), m_StandardLibrary_String.Companion_Default___.Base10Int2String(_dafny.IntOfUint8(length))), _dafny.SeqOfString(" and ")), share), _dafny.SeqOfString(" has length ")), m_StandardLibrary_String.Companion_Default___.Base10Int2String(_dafny.IntOfUint8(((_0_tb).Dtor_std()).Dtor_length()))), _dafny.SeqOfString(".")))) + } + } else { + return m_Wrappers.Companion_Result_.Create_Failure_(m_DynamoDbEncryptionUtil.Companion_Default___.E(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("Beacon "), name), _dafny.SeqOfString(" is shared to ")), share), _dafny.SeqOfString(" but ")), share), _dafny.SeqOfString(" is a compound beacon.")))) + } + } else { + return m_Wrappers.Companion_Result_.Create_Failure_(m_DynamoDbEncryptionUtil.Companion_Default___.E(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("Beacon "), name), _dafny.SeqOfString(" is shared to ")), share), _dafny.SeqOfString(" which is not defined.")))) + } +} +func (_static *CompanionStruct_Default___) AddStandardBeacons(beacons _dafny.Sequence, outer m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.DynamoDbTableEncryptionConfig, client *m_AtomicPrimitives.AtomicPrimitivesClient, virtualFields _dafny.Map, converted _dafny.Map) m_Wrappers.Result { + var output m_Wrappers.Result = m_Wrappers.Result{} + _ = output + if (_dafny.IntOfUint32((beacons).Cardinality())).Sign() == 0 { + output = m_Wrappers.Companion_Result_.Create_Success_(converted) + return output + } + var _0_valueOrError0 m_Wrappers.Outcome = m_Wrappers.Companion_Outcome_.Default() + _ = _0_valueOrError0 + _0_valueOrError0 = m_Wrappers.Companion_Default___.Need(!(converted).Contains(((beacons).Select(0).(m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.StandardBeacon)).Dtor_name()), m_DynamoDbEncryptionUtil.Companion_Default___.E(_dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("Duplicate StandardBeacon name : "), ((beacons).Select(0).(m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.StandardBeacon)).Dtor_name()))) + if (_0_valueOrError0).IsFailure() { + output = (_0_valueOrError0).PropagateFailure() + return output + } + var _1_valueOrError1 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(false) + _ = _1_valueOrError1 + _1_valueOrError1 = Companion_Default___.BeaconNameAllowed(outer, virtualFields, ((beacons).Select(0).(m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.StandardBeacon)).Dtor_name(), _dafny.SeqOfString("StandardBeacon"), false) + if (_1_valueOrError1).IsFailure() { + output = (_1_valueOrError1).PropagateFailure() + return output + } + var _2___v2 bool + _ = _2___v2 + _2___v2 = (_1_valueOrError1).Extract().(bool) + var _3_locString _dafny.Sequence + _ = _3_locString + _3_locString = Companion_Default___.GetLocStr(((beacons).Select(0).(m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.StandardBeacon)).Dtor_name(), ((beacons).Select(0).(m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.StandardBeacon)).Dtor_loc()) + var _4_isPartOnly bool + _ = _4_isPartOnly + _4_isPartOnly = false + var _5_isAsSet bool + _ = _5_isAsSet + _5_isAsSet = false + var _6_share m_Wrappers.Option + _ = _6_share + _6_share = m_Wrappers.Companion_Option_.Create_None_() + if (((beacons).Select(0).(m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.StandardBeacon)).Dtor_style()).Is_Some() { + var _source0 m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.BeaconStyle = (((beacons).Select(0).(m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.StandardBeacon)).Dtor_style()).Dtor_value().(m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.BeaconStyle) + _ = _source0 + { + { + if _source0.Is_partOnly() { + var _7_t m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.PartOnly = _source0.Get_().(m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.BeaconStyle_partOnly).PartOnly + _ = _7_t + _4_isPartOnly = true + goto Lmatch0 + } + } + { + if _source0.Is_shared() { + var _8_t m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Shared = _source0.Get_().(m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.BeaconStyle_shared).Shared + _ = _8_t + _6_share = m_Wrappers.Companion_Option_.Create_Some_((_8_t).Dtor_other()) + goto Lmatch0 + } + } + { + if _source0.Is_asSet() { + var _9_t m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.AsSet = _source0.Get_().(m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.BeaconStyle_asSet).AsSet + _ = _9_t + _5_isAsSet = true + goto Lmatch0 + } + } + { + var _10_t m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.SharedSet = _source0.Get_().(m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.BeaconStyle_sharedSet).SharedSet + _ = _10_t + _6_share = m_Wrappers.Companion_Option_.Create_Some_((_10_t).Dtor_other()) + _5_isAsSet = true + } + goto Lmatch0 + } + Lmatch0: + } + var _11_valueOrError2 m_Wrappers.Result = m_Wrappers.Result{} + _ = _11_valueOrError2 + _11_valueOrError2 = m_BaseBeacon.Companion_Default___.MakeStandardBeacon(client, ((beacons).Select(0).(m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.StandardBeacon)).Dtor_name(), uint8(((beacons).Select(0).(m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.StandardBeacon)).Dtor_length()), _3_locString, _4_isPartOnly, _5_isAsSet, _6_share) + if (_11_valueOrError2).IsFailure() { + output = (_11_valueOrError2).PropagateFailure() + return output + } + var _12_newBeacon m_BaseBeacon.StandardBeacon + _ = _12_newBeacon + _12_newBeacon = (_11_valueOrError2).Extract().(m_BaseBeacon.StandardBeacon) + var _13_valueOrError3 m_Wrappers.Outcome = m_Wrappers.Companion_Outcome_.Default() + _ = _13_valueOrError3 + _13_valueOrError3 = m_Wrappers.Companion_Default___.Need(Companion_Default___.IsEncryptedV(outer, virtualFields, (_12_newBeacon).Dtor_loc()), m_DynamoDbEncryptionUtil.Companion_Default___.E(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("StandardBeacon "), ((beacons).Select(0).(m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.StandardBeacon)).Dtor_name()), _dafny.SeqOfString(" not defined on an encrypted field.")))) + if (_13_valueOrError3).IsFailure() { + output = (_13_valueOrError3).PropagateFailure() + return output + } + var _14_badBeacon m_Wrappers.Option + _ = _14_badBeacon + _14_badBeacon = Companion_Default___.FindBeaconWithThisLocation(converted, (_12_newBeacon).Dtor_loc()) + if (_14_badBeacon).Is_Some() { + output = m_Wrappers.Companion_Result_.Create_Failure_(m_DynamoDbEncryptionUtil.Companion_Default___.E(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("Beacon "), ((beacons).Select(0).(m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.StandardBeacon)).Dtor_name()), _dafny.SeqOfString(" is defined on location ")), m_TermLoc.Companion_Default___.TermLocToString((_12_newBeacon).Dtor_loc())), _dafny.SeqOfString(", but beacon ")), (_14_badBeacon).Dtor_value().(_dafny.Sequence)), _dafny.SeqOfString(" is already defined on that location.")))) + return output + } + var _15_badField m_Wrappers.Option + _ = _15_badField + _15_badField = Companion_Default___.FindVirtualFieldWithThisLocation(virtualFields, _dafny.SetOf((_12_newBeacon).Dtor_loc())) + if (_15_badField).Is_Some() { + output = m_Wrappers.Companion_Result_.Create_Failure_(m_DynamoDbEncryptionUtil.Companion_Default___.E(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("Beacon "), ((beacons).Select(0).(m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.StandardBeacon)).Dtor_name()), _dafny.SeqOfString(" is defined on location ")), m_TermLoc.Companion_Default___.TermLocToString((_12_newBeacon).Dtor_loc())), _dafny.SeqOfString(", but virtual field ")), (_15_badField).Dtor_value().(_dafny.Sequence)), _dafny.SeqOfString(" is already defined on that single location.")))) + return output + } + var _out0 m_Wrappers.Result + _ = _out0 + _out0 = Companion_Default___.AddStandardBeacons((beacons).Drop(1), outer, client, virtualFields, (converted).Update(((beacons).Select(0).(m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.StandardBeacon)).Dtor_name(), m_SearchableEncryptionInfo.Companion_Beacon_.Create_Standard_(_12_newBeacon))) + output = _out0 + return output +} +func (_static *CompanionStruct_Default___) GetLoc(name _dafny.Sequence, loc m_Wrappers.Option) m_Wrappers.Result { + if (loc).Is_None() { + return m_Wrappers.Companion_Result_.Create_Success_(m_TermLoc.Companion_Default___.TermLocMap(name)) + } else { + return m_TermLoc.Companion_Default___.MakeTermLoc((loc).Dtor_value().(_dafny.Sequence)) + } +} +func (_static *CompanionStruct_Default___) GetLocStr(name _dafny.Sequence, loc m_Wrappers.Option) _dafny.Sequence { + if (loc).Is_None() { + return name + } else { + return (loc).Dtor_value().(_dafny.Sequence) + } +} +func (_static *CompanionStruct_Default___) GetSignedParts(parts _dafny.Sequence, outer m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.DynamoDbTableEncryptionConfig, name _dafny.Sequence, converted PartSet) m_Wrappers.Result { + goto TAIL_CALL_START +TAIL_CALL_START: + if (_dafny.IntOfUint32((parts).Cardinality())).Sign() == 0 { + return m_Wrappers.Companion_Result_.Create_Success_(converted) + } else { + var _0_valueOrError0 m_Wrappers.Result = Companion_Default___.GetLoc(((parts).Select(0).(m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.SignedPart)).Dtor_name(), ((parts).Select(0).(m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.SignedPart)).Dtor_loc()) + _ = _0_valueOrError0 + if (_0_valueOrError0).IsFailure() { + return (_0_valueOrError0).PropagateFailure() + } else { + var _1_loc _dafny.Sequence = (_0_valueOrError0).Extract().(_dafny.Sequence) + _ = _1_loc + var _2_newPart m_CompoundBeacon.BeaconPart = m_CompoundBeacon.Companion_BeaconPart_.Create_Signed_(((parts).Select(0).(m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.SignedPart)).Dtor_prefix(), ((parts).Select(0).(m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.SignedPart)).Dtor_name(), _1_loc) + _ = _2_newPart + var _3_valueOrError1 m_Wrappers.Outcome = m_Wrappers.Companion_Default___.Need(Companion_Default___.IsSignOnly(outer, (_2_newPart).Dtor_loc()), m_DynamoDbEncryptionUtil.Companion_Default___.E(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("Signed Part "), (_2_newPart).Dtor_name()), _dafny.SeqOfString(" is built from ")), Companion_Default___.GetLocStr(((parts).Select(0).(m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.SignedPart)).Dtor_name(), ((parts).Select(0).(m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.SignedPart)).Dtor_loc())), _dafny.SeqOfString(" which is not SIGN_ONLY.")))) + _ = _3_valueOrError1 + if (_3_valueOrError1).IsFailure() { + return (_3_valueOrError1).PropagateFailure() + } else { + var _4_valueOrError2 m_Wrappers.Result = (converted).Add(_2_newPart, name) + _ = _4_valueOrError2 + if (_4_valueOrError2).IsFailure() { + return (_4_valueOrError2).PropagateFailure() + } else { + var _5_newParts PartSet = (_4_valueOrError2).Extract().(PartSet) + _ = _5_newParts + var _in0 _dafny.Sequence = (parts).Drop(1) + _ = _in0 + var _in1 m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.DynamoDbTableEncryptionConfig = outer + _ = _in1 + var _in2 _dafny.Sequence = name + _ = _in2 + var _in3 PartSet = _5_newParts + _ = _in3 + parts = _in0 + outer = _in1 + name = _in2 + converted = _in3 + goto TAIL_CALL_START + } + } + } + } +} +func (_static *CompanionStruct_Default___) GetEncryptedParts(parts _dafny.Sequence, std _dafny.Map, name _dafny.Sequence, converted PartSet) m_Wrappers.Result { + goto TAIL_CALL_START +TAIL_CALL_START: + if (_dafny.IntOfUint32((parts).Cardinality())).Sign() == 0 { + return m_Wrappers.Companion_Result_.Create_Success_(converted) + } else if (((std).Contains(((parts).Select(0).(m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.EncryptedPart)).Dtor_name())) && (((std).Get(((parts).Select(0).(m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.EncryptedPart)).Dtor_name()).(m_SearchableEncryptionInfo.Beacon)).Is_Standard())) && ((((std).Get(((parts).Select(0).(m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.EncryptedPart)).Dtor_name()).(m_SearchableEncryptionInfo.Beacon)).Dtor_std()).Dtor_asSet()) { + return m_Wrappers.Companion_Result_.Create_Failure_(m_DynamoDbEncryptionUtil.Companion_Default___.E(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(name, _dafny.SeqOfString(" uses ")), ((parts).Select(0).(m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.EncryptedPart)).Dtor_name()), _dafny.SeqOfString(" which is an AsSet beacon, and therefore cannot be used in a Compound Beacon.")))) + } else if ((std).Contains(((parts).Select(0).(m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.EncryptedPart)).Dtor_name())) && (((std).Get(((parts).Select(0).(m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.EncryptedPart)).Dtor_name()).(m_SearchableEncryptionInfo.Beacon)).Is_Standard()) { + var _0_newPart m_CompoundBeacon.BeaconPart = m_CompoundBeacon.Companion_BeaconPart_.Create_Encrypted_(((parts).Select(0).(m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.EncryptedPart)).Dtor_prefix(), ((std).Get(((parts).Select(0).(m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.EncryptedPart)).Dtor_name()).(m_SearchableEncryptionInfo.Beacon)).Dtor_std()) + _ = _0_newPart + var _1_valueOrError0 m_Wrappers.Result = (converted).Add(_0_newPart, name) + _ = _1_valueOrError0 + if (_1_valueOrError0).IsFailure() { + return (_1_valueOrError0).PropagateFailure() + } else { + var _2_newParts PartSet = (_1_valueOrError0).Extract().(PartSet) + _ = _2_newParts + var _in0 _dafny.Sequence = (parts).Drop(1) + _ = _in0 + var _in1 _dafny.Map = std + _ = _in1 + var _in2 _dafny.Sequence = name + _ = _in2 + var _in3 PartSet = _2_newParts + _ = _in3 + parts = _in0 + std = _in1 + name = _in2 + converted = _in3 + goto TAIL_CALL_START + } + } else { + return m_Wrappers.Companion_Result_.Create_Failure_(m_DynamoDbEncryptionUtil.Companion_Default___.E(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(name, _dafny.SeqOfString(" refers to standard beacon ")), ((parts).Select(0).(m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.EncryptedPart)).Dtor_name()), _dafny.SeqOfString(" which is not configured.")))) + } +} +func (_static *CompanionStruct_Default___) MakeDefaultConstructor(parts _dafny.Sequence, converted _dafny.Sequence) m_Wrappers.Result { + goto TAIL_CALL_START +TAIL_CALL_START: + if (_dafny.IntOfUint32((parts).Cardinality())).Sign() == 0 { + return m_Wrappers.Companion_Result_.Create_Success_(_dafny.SeqOf(m_CompoundBeacon.Companion_Constructor_.Create_Constructor_(converted))) + } else { + var _in0 _dafny.Sequence = (parts).Drop(1) + _ = _in0 + var _in1 _dafny.Sequence = _dafny.Companion_Sequence_.Concatenate(converted, _dafny.SeqOf(m_CompoundBeacon.Companion_ConstructorPart_.Create_ConstructorPart_((parts).Select(0).(m_CompoundBeacon.BeaconPart), true))) + _ = _in1 + parts = _in0 + converted = _in1 + goto TAIL_CALL_START + } +} +func (_static *CompanionStruct_Default___) MyFilter(f func(interface{}) bool, xs _dafny.Sequence) _dafny.Sequence { + var _0___accumulator _dafny.Sequence = _dafny.SeqOf() + _ = _0___accumulator + goto TAIL_CALL_START +TAIL_CALL_START: + if (_dafny.IntOfUint32((xs).Cardinality())).Sign() == 0 { + return _dafny.Companion_Sequence_.Concatenate(_0___accumulator, _dafny.SeqOf()) + } else { + _0___accumulator = _dafny.Companion_Sequence_.Concatenate(_0___accumulator, (func() _dafny.Sequence { + if (f)((xs).Select(0).(interface{})) { + return _dafny.SeqOf((xs).Select(0).(interface{})) + } + return _dafny.SeqOf() + })()) + var _in0 func(interface{}) bool = f + _ = _in0 + var _in1 _dafny.Sequence = (xs).Drop(1) + _ = _in1 + f = _in0 + xs = _in1 + goto TAIL_CALL_START + } +} +func (_static *CompanionStruct_Default___) SeqCount(f func(interface{}) bool, xs _dafny.Sequence) _dafny.Int { + var _0___accumulator _dafny.Int = _dafny.Zero + _ = _0___accumulator + goto TAIL_CALL_START +TAIL_CALL_START: + if (_dafny.IntOfUint32((xs).Cardinality())).Sign() == 0 { + return (_dafny.Zero).Plus(_0___accumulator) + } else { + _0___accumulator = (_0___accumulator).Plus((func() _dafny.Int { + if (f)((xs).Select(0).(interface{})) { + return _dafny.One + } + return _dafny.Zero + })()) + var _in0 func(interface{}) bool = f + _ = _in0 + var _in1 _dafny.Sequence = (xs).Drop(1) + _ = _in1 + f = _in0 + xs = _in1 + goto TAIL_CALL_START + } +} +func (_static *CompanionStruct_Default___) MakeConstructor2(c _dafny.Sequence, parts _dafny.Sequence, origSize _dafny.Int, converted _dafny.Sequence) m_Wrappers.Result { + goto TAIL_CALL_START +TAIL_CALL_START: + if (_dafny.IntOfUint32((c).Cardinality())).Sign() == 0 { + return m_Wrappers.Companion_Result_.Create_Success_(converted) + } else { + var _0_thePart _dafny.Sequence = Companion_Default___.MyFilter(func(coer141 func(m_CompoundBeacon.BeaconPart) bool) func(interface{}) bool { + return func(arg177 interface{}) bool { + return coer141(arg177.(m_CompoundBeacon.BeaconPart)) + } + }((func(_1_c _dafny.Sequence) func(m_CompoundBeacon.BeaconPart) bool { + return func(_2_p m_CompoundBeacon.BeaconPart) bool { + return _dafny.Companion_Sequence_.Equal((_2_p).GetName(), ((_1_c).Select(0).(m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.ConstructorPart)).Dtor_name()) + } + })(c)), parts) + _ = _0_thePart + var _3_valueOrError0 m_Wrappers.Outcome = m_Wrappers.Companion_Default___.Need((_dafny.IntOfUint32((_0_thePart).Cardinality())).Sign() == 1, m_DynamoDbEncryptionUtil.Companion_Default___.E(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("Constructor refers to part name "), ((c).Select(0).(m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.ConstructorPart)).Dtor_name()), _dafny.SeqOfString(" but there is no part by that name.")))) + _ = _3_valueOrError0 + if (_3_valueOrError0).IsFailure() { + return (_3_valueOrError0).PropagateFailure() + } else { + var _4_newPart m_CompoundBeacon.ConstructorPart = m_CompoundBeacon.Companion_ConstructorPart_.Create_ConstructorPart_((_0_thePart).Select(0).(m_CompoundBeacon.BeaconPart), ((c).Select(0).(m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.ConstructorPart)).Dtor_required()) + _ = _4_newPart + var _in0 _dafny.Sequence = (c).Drop(1) + _ = _in0 + var _in1 _dafny.Sequence = parts + _ = _in1 + var _in2 _dafny.Int = origSize + _ = _in2 + var _in3 _dafny.Sequence = _dafny.Companion_Sequence_.Concatenate(converted, _dafny.SeqOf(_4_newPart)) + _ = _in3 + c = _in0 + parts = _in1 + origSize = _in2 + converted = _in3 + goto TAIL_CALL_START + } + } +} +func (_static *CompanionStruct_Default___) MakeConstructor(c m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Constructor, parts _dafny.Sequence) m_Wrappers.Result { + var _0_valueOrError0 m_Wrappers.Result = Companion_Default___.MakeConstructor2((c).Dtor_parts(), parts, _dafny.IntOfUint32(((c).Dtor_parts()).Cardinality()), _dafny.SeqOf()) + _ = _0_valueOrError0 + if (_0_valueOrError0).IsFailure() { + return (_0_valueOrError0).PropagateFailure() + } else { + var _1_newParts _dafny.Sequence = (_0_valueOrError0).Extract().(_dafny.Sequence) + _ = _1_newParts + return m_Wrappers.Companion_Result_.Create_Success_(m_CompoundBeacon.Companion_Constructor_.Create_Constructor_(_1_newParts)) + } +} +func (_static *CompanionStruct_Default___) AddConstructors2(constructors _dafny.Sequence, name _dafny.Sequence, parts _dafny.Sequence, origSize _dafny.Int, converted _dafny.Sequence) m_Wrappers.Result { + goto TAIL_CALL_START +TAIL_CALL_START: + if (_dafny.IntOfUint32((constructors).Cardinality())).Sign() == 0 { + return m_Wrappers.Companion_Result_.Create_Success_(converted) + } else { + var _0_valueOrError0 m_Wrappers.Outcome = m_Wrappers.Companion_Default___.Need((_dafny.IntOfUint32((((constructors).Select(0).(m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Constructor)).Dtor_parts()).Cardinality())).Sign() == 1, m_DynamoDbEncryptionUtil.Companion_Default___.E(_dafny.SeqOfString("Every constructor must have at least one part."))) + _ = _0_valueOrError0 + if (_0_valueOrError0).IsFailure() { + return (_0_valueOrError0).PropagateFailure() + } else { + var _1_valueOrError1 m_Wrappers.Outcome = m_Wrappers.Companion_Default___.Need((Companion_Default___.SeqCount(func(coer142 func(m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.ConstructorPart) bool) func(interface{}) bool { + return func(arg178 interface{}) bool { + return coer142(arg178.(m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.ConstructorPart)) + } + }(func(_2_p m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.ConstructorPart) bool { + return (_2_p).Dtor_required() + }), ((constructors).Select(0).(m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Constructor)).Dtor_parts())).Sign() == 1, m_DynamoDbEncryptionUtil.Companion_Default___.E(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("A Constructor for beacon "), name), _dafny.SeqOfString(" lacks any required parts")))) + _ = _1_valueOrError1 + if (_1_valueOrError1).IsFailure() { + return (_1_valueOrError1).PropagateFailure() + } else { + var _3_valueOrError2 m_Wrappers.Result = Companion_Default___.MakeConstructor((constructors).Select(0).(m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Constructor), parts) + _ = _3_valueOrError2 + if (_3_valueOrError2).IsFailure() { + return (_3_valueOrError2).PropagateFailure() + } else { + var _4_c m_CompoundBeacon.Constructor = (_3_valueOrError2).Extract().(m_CompoundBeacon.Constructor) + _ = _4_c + if Companion_Default___.ExistsConstructorWithTheseRequired(converted, (_4_c).GetReqParts()) { + var _5_p _dafny.Sequence = Companion_Default___.GetPartsString(_4_c) + _ = _5_p + return m_Wrappers.Companion_Result_.Create_Failure_(m_DynamoDbEncryptionUtil.Companion_Default___.E(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("Multiple constructors for "), name), _dafny.SeqOfString(" have the same set of required parts : ")), _5_p))) + } else { + var _in0 _dafny.Sequence = (constructors).Drop(1) + _ = _in0 + var _in1 _dafny.Sequence = name + _ = _in1 + var _in2 _dafny.Sequence = parts + _ = _in2 + var _in3 _dafny.Int = origSize + _ = _in3 + var _in4 _dafny.Sequence = _dafny.Companion_Sequence_.Concatenate(converted, _dafny.SeqOf(_4_c)) + _ = _in4 + constructors = _in0 + name = _in1 + parts = _in2 + origSize = _in3 + converted = _in4 + goto TAIL_CALL_START + } + } + } + } + } +} +func (_static *CompanionStruct_Default___) AddConstructors(constructors m_Wrappers.Option, name _dafny.Sequence, parts _dafny.Sequence) m_Wrappers.Result { + if (constructors).Is_None() { + return Companion_Default___.MakeDefaultConstructor(parts, _dafny.SeqOf()) + } else { + return Companion_Default___.AddConstructors2((constructors).Dtor_value().(_dafny.Sequence), name, parts, _dafny.IntOfUint32(((constructors).Dtor_value().(_dafny.Sequence)).Cardinality()), _dafny.SeqOf()) + } +} +func (_static *CompanionStruct_Default___) GetGlobalPartsFrom(cons _dafny.Sequence, globalParts PartSet, signed bool, parts PartSet) m_Wrappers.Result { + goto TAIL_CALL_START +TAIL_CALL_START: + if (_dafny.IntOfUint32((cons).Cardinality())).Sign() == 0 { + return m_Wrappers.Companion_Result_.Create_Success_(parts) + } else { + var _0_newPart m_Wrappers.Option = Companion_Default___.FindGlobalPart((globalParts).Dtor_parts(), (cons).Select(0).(m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.ConstructorPart), signed) + _ = _0_newPart + if (_0_newPart).Is_Some() { + var _1_valueOrError0 m_Wrappers.Result = (parts).Add((_0_newPart).Dtor_value().(m_CompoundBeacon.BeaconPart), _dafny.SeqOfString("Global Parts List")) + _ = _1_valueOrError0 + if (_1_valueOrError0).IsFailure() { + return (_1_valueOrError0).PropagateFailure() + } else { + var _2_newParts PartSet = (_1_valueOrError0).Extract().(PartSet) + _ = _2_newParts + var _in0 _dafny.Sequence = (cons).Drop(1) + _ = _in0 + var _in1 PartSet = globalParts + _ = _in1 + var _in2 bool = signed + _ = _in2 + var _in3 PartSet = _2_newParts + _ = _in3 + cons = _in0 + globalParts = _in1 + signed = _in2 + parts = _in3 + goto TAIL_CALL_START + } + } else { + var _in4 _dafny.Sequence = (cons).Drop(1) + _ = _in4 + var _in5 PartSet = globalParts + _ = _in5 + var _in6 bool = signed + _ = _in6 + var _in7 PartSet = parts + _ = _in7 + cons = _in4 + globalParts = _in5 + signed = _in6 + parts = _in7 + goto TAIL_CALL_START + } + } +} +func (_static *CompanionStruct_Default___) GetGlobalParts(cons _dafny.Sequence, globalParts PartSet, signed bool, parts PartSet) m_Wrappers.Result { + goto TAIL_CALL_START +TAIL_CALL_START: + if (_dafny.IntOfUint32((cons).Cardinality())).Sign() == 0 { + return m_Wrappers.Companion_Result_.Create_Success_(parts) + } else { + var _0_valueOrError0 m_Wrappers.Result = Companion_Default___.GetGlobalPartsFrom(((cons).Select(0).(m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Constructor)).Dtor_parts(), globalParts, signed, parts) + _ = _0_valueOrError0 + if (_0_valueOrError0).IsFailure() { + return (_0_valueOrError0).PropagateFailure() + } else { + var _1_newParts PartSet = (_0_valueOrError0).Extract().(PartSet) + _ = _1_newParts + var _in0 _dafny.Sequence = (cons).Drop(1) + _ = _in0 + var _in1 PartSet = globalParts + _ = _in1 + var _in2 bool = signed + _ = _in2 + var _in3 PartSet = _1_newParts + _ = _in3 + cons = _in0 + globalParts = _in1 + signed = _in2 + parts = _in3 + goto TAIL_CALL_START + } + } +} +func (_static *CompanionStruct_Default___) GetAllEncryptedParts(parts _dafny.Sequence, cons _dafny.Sequence, globalEncryptedParts PartSet, name _dafny.Sequence, std _dafny.Map) m_Wrappers.Result { + var _0_valueOrError0 m_Wrappers.Result = Companion_Default___.GetEncryptedParts(parts, std, _dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("Compound beacon "), name), Companion_PartSet_.Create_PartSet_(_dafny.SeqOf(), _dafny.SetOf(), _dafny.SetOf())) + _ = _0_valueOrError0 + if (_0_valueOrError0).IsFailure() { + return (_0_valueOrError0).PropagateFailure() + } else { + var _1_p1 PartSet = (_0_valueOrError0).Extract().(PartSet) + _ = _1_p1 + var _2_valueOrError1 m_Wrappers.Result = Companion_Default___.GetGlobalParts(cons, globalEncryptedParts, false, Companion_PartSet_.Create_PartSet_(_dafny.SeqOf(), _dafny.SetOf(), _dafny.SetOf())) + _ = _2_valueOrError1 + if (_2_valueOrError1).IsFailure() { + return (_2_valueOrError1).PropagateFailure() + } else { + var _3_p2 PartSet = (_2_valueOrError1).Extract().(PartSet) + _ = _3_p2 + var _4_valueOrError2 m_Wrappers.Result = (_1_p1).Combine(_3_p2, name, _dafny.SeqOfString("Global Parts List")) + _ = _4_valueOrError2 + if (_4_valueOrError2).IsFailure() { + return (_4_valueOrError2).PropagateFailure() + } else { + var _5_both PartSet = (_4_valueOrError2).Extract().(PartSet) + _ = _5_both + return m_Wrappers.Companion_Result_.Create_Success_((_5_both).Dtor_parts()) + } + } + } +} +func (_static *CompanionStruct_Default___) IsSignedPart(part m_CompoundBeacon.BeaconPart, signed bool) bool { + if signed { + return (part).Is_Signed() + } else { + return (part).Is_Encrypted() + } +} +func (_static *CompanionStruct_Default___) FindGlobalPart(globalParts _dafny.Sequence, cons m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.ConstructorPart, signed bool) m_Wrappers.Option { + goto TAIL_CALL_START +TAIL_CALL_START: + if (_dafny.IntOfUint32((globalParts).Cardinality())).Sign() == 0 { + return m_Wrappers.Companion_Option_.Create_None_() + } else if (Companion_Default___.IsSignedPart((globalParts).Select(0).(m_CompoundBeacon.BeaconPart), signed)) && (_dafny.Companion_Sequence_.Equal(((globalParts).Select(0).(m_CompoundBeacon.BeaconPart)).GetName(), (cons).Dtor_name())) { + return m_Wrappers.Companion_Option_.Create_Some_((globalParts).Select(0).(m_CompoundBeacon.BeaconPart)) + } else { + var _in0 _dafny.Sequence = (globalParts).Drop(1) + _ = _in0 + var _in1 m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.ConstructorPart = cons + _ = _in1 + var _in2 bool = signed + _ = _in2 + globalParts = _in0 + cons = _in1 + signed = _in2 + goto TAIL_CALL_START + } +} +func (_static *CompanionStruct_Default___) GetAllSignedParts(parts _dafny.Sequence, cons _dafny.Sequence, globalSignedParts PartSet, name _dafny.Sequence, outer m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.DynamoDbTableEncryptionConfig) m_Wrappers.Result { + var _0_valueOrError0 m_Wrappers.Result = Companion_Default___.GetSignedParts(parts, outer, name, Companion_PartSet_.Create_PartSet_(_dafny.SeqOf(), _dafny.SetOf(), _dafny.SetOf())) + _ = _0_valueOrError0 + if (_0_valueOrError0).IsFailure() { + return (_0_valueOrError0).PropagateFailure() + } else { + var _1_p1 PartSet = (_0_valueOrError0).Extract().(PartSet) + _ = _1_p1 + var _2_valueOrError1 m_Wrappers.Result = Companion_Default___.GetGlobalParts(cons, globalSignedParts, true, Companion_PartSet_.Create_PartSet_(_dafny.SeqOf(), _dafny.SetOf(), _dafny.SetOf())) + _ = _2_valueOrError1 + if (_2_valueOrError1).IsFailure() { + return (_2_valueOrError1).PropagateFailure() + } else { + var _3_p2 PartSet = (_2_valueOrError1).Extract().(PartSet) + _ = _3_p2 + var _4_valueOrError2 m_Wrappers.Result = (_1_p1).Combine(_3_p2, name, _dafny.SeqOfString("Global Parts List")) + _ = _4_valueOrError2 + if (_4_valueOrError2).IsFailure() { + return (_4_valueOrError2).PropagateFailure() + } else { + var _5_both PartSet = (_4_valueOrError2).Extract().(PartSet) + _ = _5_both + return m_Wrappers.Companion_Result_.Create_Success_((_5_both).Dtor_parts()) + } + } + } +} +func (_static *CompanionStruct_Default___) CheckSignedParts(parts _dafny.Sequence, globals PartSet, name _dafny.Sequence) m_Wrappers.Result { + goto TAIL_CALL_START +TAIL_CALL_START: + if (_dafny.IntOfUint32((parts).Cardinality())).Sign() == 0 { + return m_Wrappers.Companion_Result_.Create_Success_(true) + } else if ((globals).Dtor_names()).Contains(((parts).Select(0).(m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.SignedPart)).Dtor_name()) { + return m_Wrappers.Companion_Result_.Create_Failure_(m_DynamoDbEncryptionUtil.Companion_Default___.E(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("Compound beacon "), name), _dafny.SeqOfString(" defines signed part ")), ((parts).Select(0).(m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.SignedPart)).Dtor_name()), _dafny.SeqOfString(" which is already defined as a global part.")))) + } else if ((globals).Dtor_prefixes()).Contains(((parts).Select(0).(m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.SignedPart)).Dtor_prefix()) { + return m_Wrappers.Companion_Result_.Create_Failure_(m_DynamoDbEncryptionUtil.Companion_Default___.E(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("Compound beacon "), name), _dafny.SeqOfString(" defines signed part ")), ((parts).Select(0).(m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.SignedPart)).Dtor_name()), _dafny.SeqOfString(" with prefix ")), ((parts).Select(0).(m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.SignedPart)).Dtor_prefix()), _dafny.SeqOfString(" which is already defined as the prefix of a global part.")))) + } else { + var _in0 _dafny.Sequence = (parts).Drop(1) + _ = _in0 + var _in1 PartSet = globals + _ = _in1 + var _in2 _dafny.Sequence = name + _ = _in2 + parts = _in0 + globals = _in1 + name = _in2 + goto TAIL_CALL_START + } +} +func (_static *CompanionStruct_Default___) CheckEncryptedParts(parts _dafny.Sequence, globals PartSet, name _dafny.Sequence) m_Wrappers.Result { + goto TAIL_CALL_START +TAIL_CALL_START: + if (_dafny.IntOfUint32((parts).Cardinality())).Sign() == 0 { + return m_Wrappers.Companion_Result_.Create_Success_(true) + } else if ((globals).Dtor_names()).Contains(((parts).Select(0).(m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.EncryptedPart)).Dtor_name()) { + return m_Wrappers.Companion_Result_.Create_Failure_(m_DynamoDbEncryptionUtil.Companion_Default___.E(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("Compound beacon "), name), _dafny.SeqOfString(" defines encrypted part ")), ((parts).Select(0).(m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.EncryptedPart)).Dtor_name()), _dafny.SeqOfString(" which is already defined as a global part.")))) + } else if ((globals).Dtor_prefixes()).Contains(((parts).Select(0).(m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.EncryptedPart)).Dtor_prefix()) { + return m_Wrappers.Companion_Result_.Create_Failure_(m_DynamoDbEncryptionUtil.Companion_Default___.E(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("Compound beacon "), name), _dafny.SeqOfString(" defines encrypted part ")), ((parts).Select(0).(m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.EncryptedPart)).Dtor_name()), _dafny.SeqOfString(" with prefix ")), ((parts).Select(0).(m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.EncryptedPart)).Dtor_prefix()), _dafny.SeqOfString(" which is already defined as the prefix of a global part.")))) + } else { + var _in0 _dafny.Sequence = (parts).Drop(1) + _ = _in0 + var _in1 PartSet = globals + _ = _in1 + var _in2 _dafny.Sequence = name + _ = _in2 + parts = _in0 + globals = _in1 + name = _in2 + goto TAIL_CALL_START + } +} +func (_static *CompanionStruct_Default___) CreateCompoundBeacon(beacon m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.CompoundBeacon, outer m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.DynamoDbTableEncryptionConfig, client *m_AtomicPrimitives.AtomicPrimitivesClient, virtualFields _dafny.Map, converted _dafny.Map, globalSignedParts PartSet, globalEncryptedParts PartSet) m_Wrappers.Result { + var _0_signedParts _dafny.Sequence = (func() _dafny.Sequence { + if ((beacon).Dtor_signed()).Is_Some() { + return ((beacon).Dtor_signed()).Dtor_value().(_dafny.Sequence) + } + return _dafny.SeqOf() + })() + _ = _0_signedParts + var _1_encryptedParts _dafny.Sequence = (func() _dafny.Sequence { + if ((beacon).Dtor_encrypted()).Is_Some() { + return ((beacon).Dtor_encrypted()).Dtor_value().(_dafny.Sequence) + } + return _dafny.SeqOf() + })() + _ = _1_encryptedParts + var _2_constructors _dafny.Sequence = (func() _dafny.Sequence { + if ((beacon).Dtor_constructors()).Is_Some() { + return ((beacon).Dtor_constructors()).Dtor_value().(_dafny.Sequence) + } + return _dafny.SeqOf() + })() + _ = _2_constructors + var _3_valueOrError0 m_Wrappers.Result = (globalSignedParts).Combine(globalEncryptedParts, _dafny.SeqOfString("Global Signed Parts List"), _dafny.SeqOfString("Global Encrypted Parts List")) + _ = _3_valueOrError0 + if (_3_valueOrError0).IsFailure() { + return (_3_valueOrError0).PropagateFailure() + } else { + var _4_globalParts PartSet = (_3_valueOrError0).Extract().(PartSet) + _ = _4_globalParts + var _5_valueOrError1 m_Wrappers.Result = Companion_Default___.CheckSignedParts(_0_signedParts, _4_globalParts, (beacon).Dtor_name()) + _ = _5_valueOrError1 + if (_5_valueOrError1).IsFailure() { + return (_5_valueOrError1).PropagateFailure() + } else { + var _6___v3 bool = (_5_valueOrError1).Extract().(bool) + _ = _6___v3 + var _7_valueOrError2 m_Wrappers.Result = Companion_Default___.CheckEncryptedParts(_1_encryptedParts, _4_globalParts, (beacon).Dtor_name()) + _ = _7_valueOrError2 + if (_7_valueOrError2).IsFailure() { + return (_7_valueOrError2).PropagateFailure() + } else { + var _8___v4 bool = (_7_valueOrError2).Extract().(bool) + _ = _8___v4 + var _9_valueOrError3 m_Wrappers.Result = Companion_Default___.GetAllSignedParts(_0_signedParts, _2_constructors, globalSignedParts, (beacon).Dtor_name(), outer) + _ = _9_valueOrError3 + if (_9_valueOrError3).IsFailure() { + return (_9_valueOrError3).PropagateFailure() + } else { + var _10_signed _dafny.Sequence = (_9_valueOrError3).Extract().(_dafny.Sequence) + _ = _10_signed + var _11_valueOrError4 m_Wrappers.Result = Companion_Default___.GetAllEncryptedParts(_1_encryptedParts, _2_constructors, globalEncryptedParts, (beacon).Dtor_name(), converted) + _ = _11_valueOrError4 + if (_11_valueOrError4).IsFailure() { + return (_11_valueOrError4).PropagateFailure() + } else { + var _12_encrypted _dafny.Sequence = (_11_valueOrError4).Extract().(_dafny.Sequence) + _ = _12_encrypted + var _13_valueOrError5 m_Wrappers.Outcome = m_Wrappers.Companion_Default___.Need(!(converted).Contains((beacon).Dtor_name()), m_DynamoDbEncryptionUtil.Companion_Default___.E(_dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("Duplicate CompoundBeacon name : "), (beacon).Dtor_name()))) + _ = _13_valueOrError5 + if (_13_valueOrError5).IsFailure() { + return (_13_valueOrError5).PropagateFailure() + } else { + var _14_valueOrError6 m_Wrappers.Outcome = m_Wrappers.Companion_Default___.Need((((beacon).Dtor_constructors()).Is_None()) || ((_dafny.IntOfUint32((((beacon).Dtor_constructors()).Dtor_value().(_dafny.Sequence)).Cardinality())).Sign() == 1), m_DynamoDbEncryptionUtil.Companion_Default___.E(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("For beacon "), (beacon).Dtor_name()), _dafny.SeqOfString(" an empty constructor list was supplied.")))) + _ = _14_valueOrError6 + if (_14_valueOrError6).IsFailure() { + return (_14_valueOrError6).PropagateFailure() + } else { + var _15_valueOrError7 m_Wrappers.Outcome = m_Wrappers.Companion_Default___.Need(((((beacon).Dtor_constructors()).Is_Some()) || ((_dafny.IntOfUint32((_0_signedParts).Cardinality())).Sign() != 0)) || ((_dafny.IntOfUint32((_1_encryptedParts).Cardinality())).Sign() != 0), m_DynamoDbEncryptionUtil.Companion_Default___.E(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("Compound beacon "), (beacon).Dtor_name()), _dafny.SeqOfString(" defines no constructors, and also no local parts. Cannot make a default constructor from global parts.")))) + _ = _15_valueOrError7 + if (_15_valueOrError7).IsFailure() { + return (_15_valueOrError7).PropagateFailure() + } else { + var _16_numNon uint64 = uint64((_10_signed).Cardinality()) + _ = _16_numNon + var _17_allParts _dafny.Sequence = _dafny.Companion_Sequence_.Concatenate(_10_signed, _12_encrypted) + _ = _17_allParts + var _18_isSignedBeacon bool = (_dafny.IntOfUint32((_12_encrypted).Cardinality())).Sign() == 0 + _ = _18_isSignedBeacon + var _19_valueOrError8 m_Wrappers.Result = Companion_Default___.BeaconNameAllowed(outer, virtualFields, (beacon).Dtor_name(), _dafny.SeqOfString("CompoundBeacon"), _18_isSignedBeacon) + _ = _19_valueOrError8 + if (_19_valueOrError8).IsFailure() { + return (_19_valueOrError8).PropagateFailure() + } else { + var _20___v5 bool = (_19_valueOrError8).Extract().(bool) + _ = _20___v5 + var _21_valueOrError9 m_Wrappers.Outcome = m_Wrappers.Companion_Default___.Need((_dafny.IntOfUint32((_17_allParts).Cardinality())).Sign() == 1, m_DynamoDbEncryptionUtil.Companion_Default___.E(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("For beacon "), (beacon).Dtor_name()), _dafny.SeqOfString(" no parts were supplied.")))) + _ = _21_valueOrError9 + if (_21_valueOrError9).IsFailure() { + return (_21_valueOrError9).PropagateFailure() + } else { + var _22_valueOrError10 m_Wrappers.Result = Companion_Default___.AddConstructors((beacon).Dtor_constructors(), (beacon).Dtor_name(), _17_allParts) + _ = _22_valueOrError10 + if (_22_valueOrError10).IsFailure() { + return (_22_valueOrError10).PropagateFailure() + } else { + var _23_constructors _dafny.Sequence = (_22_valueOrError10).Extract().(_dafny.Sequence) + _ = _23_constructors + var _24_beaconName _dafny.Sequence = (func() _dafny.Sequence { + if _18_isSignedBeacon { + return (beacon).Dtor_name() + } + return _dafny.Companion_Sequence_.Concatenate(m_DynamoDbEncryptionUtil.Companion_Default___.BeaconPrefix(), (beacon).Dtor_name()) + })() + _ = _24_beaconName + var _25_valueOrError11 m_Wrappers.Outcome = m_Wrappers.Companion_Default___.Need(m_ComAmazonawsDynamodbTypes.Companion_Default___.IsValid__AttributeName(_24_beaconName), m_DynamoDbEncryptionUtil.Companion_Default___.E(_dafny.Companion_Sequence_.Concatenate(_24_beaconName, _dafny.SeqOfString(" is not a valid attribute name.")))) + _ = _25_valueOrError11 + if (_25_valueOrError11).IsFailure() { + return (_25_valueOrError11).PropagateFailure() + } else { + return m_CompoundBeacon.Companion_Default___.MakeCompoundBeacon(m_BaseBeacon.Companion_BeaconBase_.Create_BeaconBase_(client, (beacon).Dtor_name(), _24_beaconName), ((beacon).Dtor_split()).Select(0).(_dafny.Char), _17_allParts, _dafny.IntOfUint64(_16_numNon), _23_constructors) + } + } + } + } + } + } + } + } + } + } + } + } +} +func (_static *CompanionStruct_Default___) AddCompoundBeacons(beacons _dafny.Sequence, outer m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.DynamoDbTableEncryptionConfig, client *m_AtomicPrimitives.AtomicPrimitivesClient, virtualFields _dafny.Map, converted _dafny.Map, globalSignedParts PartSet, globalEncryptedParts PartSet) m_Wrappers.Result { + var output m_Wrappers.Result = m_Wrappers.Result{} + _ = output + if (_dafny.IntOfUint32((beacons).Cardinality())).Sign() == 0 { + output = m_Wrappers.Companion_Result_.Create_Success_(converted) + return output + } + var _0_valueOrError0 m_Wrappers.Result = m_Wrappers.Result{} + _ = _0_valueOrError0 + _0_valueOrError0 = Companion_Default___.CreateCompoundBeacon((beacons).Select(0).(m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.CompoundBeacon), outer, client, virtualFields, converted, globalSignedParts, globalEncryptedParts) + if (_0_valueOrError0).IsFailure() { + output = (_0_valueOrError0).PropagateFailure() + return output + } + var _1_newBeacon m_CompoundBeacon.CompoundBeacon + _ = _1_newBeacon + _1_newBeacon = (_0_valueOrError0).Extract().(m_CompoundBeacon.CompoundBeacon) + var _out0 m_Wrappers.Result + _ = _out0 + _out0 = Companion_Default___.AddCompoundBeacons((beacons).Drop(1), outer, client, virtualFields, (converted).Update(((beacons).Select(0).(m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.CompoundBeacon)).Dtor_name(), m_SearchableEncryptionInfo.Companion_Beacon_.Create_Compound_(_1_newBeacon)), globalSignedParts, globalEncryptedParts) + output = _out0 + return output +} +func (_static *CompanionStruct_Default___) ExistsInCompound(names _dafny.Sequence, name _dafny.Sequence, data _dafny.Map) bool { + goto TAIL_CALL_START +TAIL_CALL_START: + if (_dafny.IntOfUint32((names).Cardinality())).Sign() == 0 { + return false + } else { + var _0_b m_SearchableEncryptionInfo.Beacon = (data).Get((names).Select(0).(_dafny.Sequence)).(m_SearchableEncryptionInfo.Beacon) + _ = _0_b + if ((_0_b).Is_Compound()) && (((_0_b).Dtor_cmp()).HasBeacon(name)) { + return true + } else { + var _in0 _dafny.Sequence = (names).Drop(1) + _ = _in0 + var _in1 _dafny.Sequence = name + _ = _in1 + var _in2 _dafny.Map = data + _ = _in2 + names = _in0 + name = _in1 + data = _in2 + goto TAIL_CALL_START + } + } +} +func (_static *CompanionStruct_Default___) CheckAllBeacons(names _dafny.Sequence, allNames _dafny.Sequence, data _dafny.Map) m_Wrappers.Result { + goto TAIL_CALL_START +TAIL_CALL_START: + if (_dafny.IntOfUint32((names).Cardinality())).Sign() == 0 { + return m_Wrappers.Companion_Result_.Create_Success_(true) + } else { + var _0_b m_SearchableEncryptionInfo.Beacon = (data).Get((names).Select(0).(_dafny.Sequence)).(m_SearchableEncryptionInfo.Beacon) + _ = _0_b + if (m_SearchableEncryptionInfo.Companion_Default___.IsPartOnly(_0_b)) && (!(Companion_Default___.ExistsInCompound(allNames, (names).Select(0).(_dafny.Sequence), data))) { + return m_Wrappers.Companion_Result_.Create_Failure_(m_DynamoDbEncryptionUtil.Companion_Default___.E(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("PartOnly beacon "), (names).Select(0).(_dafny.Sequence)), _dafny.SeqOfString(" MUST be used in a compound beacon.")))) + } else if ((_0_b).Is_Standard()) && ((((_0_b).Dtor_std()).Dtor_share()).Is_Some()) { + var _1_valueOrError0 m_Wrappers.Result = Companion_Default___.IsValidShare(data, (names).Select(0).(_dafny.Sequence), ((_0_b).Dtor_std()).Dtor_length(), (((_0_b).Dtor_std()).Dtor_share()).Dtor_value().(_dafny.Sequence)) + _ = _1_valueOrError0 + if (_1_valueOrError0).IsFailure() { + return (_1_valueOrError0).PropagateFailure() + } else { + var _2___v6 bool = (_1_valueOrError0).Extract().(bool) + _ = _2___v6 + var _in0 _dafny.Sequence = (names).Drop(1) + _ = _in0 + var _in1 _dafny.Sequence = allNames + _ = _in1 + var _in2 _dafny.Map = data + _ = _in2 + names = _in0 + allNames = _in1 + data = _in2 + goto TAIL_CALL_START + } + } else { + var _in3 _dafny.Sequence = (names).Drop(1) + _ = _in3 + var _in4 _dafny.Sequence = allNames + _ = _in4 + var _in5 _dafny.Map = data + _ = _in5 + names = _in3 + allNames = _in4 + data = _in5 + goto TAIL_CALL_START + } + } +} +func (_static *CompanionStruct_Default___) CheckBeacons(data _dafny.Map) m_Wrappers.Result { + var _0_beaconNames _dafny.Sequence = m_SortedSets.SetToOrderedSequence2((data).Keys(), func(coer143 func(_dafny.Char, _dafny.Char) bool) func(interface{}, interface{}) bool { + return func(arg179 interface{}, arg180 interface{}) bool { + return coer143(arg179.(_dafny.Char), arg180.(_dafny.Char)) + } + }(m_DynamoDbEncryptionUtil.Companion_Default___.CharLess)) + _ = _0_beaconNames + return Companion_Default___.CheckAllBeacons(_0_beaconNames, _0_beaconNames, data) +} + +// End of class Default__ + +// Definition of datatype PartSet +type PartSet struct { + Data_PartSet_ +} + +func (_this PartSet) Get_() Data_PartSet_ { + return _this.Data_PartSet_ +} + +type Data_PartSet_ interface { + isPartSet() +} + +type CompanionStruct_PartSet_ struct { +} + +var Companion_PartSet_ = CompanionStruct_PartSet_{} + +type PartSet_PartSet struct { + Parts _dafny.Sequence + Names _dafny.Set + Prefixes _dafny.Set +} + +func (PartSet_PartSet) isPartSet() {} + +func (CompanionStruct_PartSet_) Create_PartSet_(Parts _dafny.Sequence, Names _dafny.Set, Prefixes _dafny.Set) PartSet { + return PartSet{PartSet_PartSet{Parts, Names, Prefixes}} +} + +func (_this PartSet) Is_PartSet() bool { + _, ok := _this.Get_().(PartSet_PartSet) + return ok +} + +func (CompanionStruct_PartSet_) Default() PartSet { + return Companion_PartSet_.Create_PartSet_(_dafny.EmptySeq, _dafny.EmptySet, _dafny.EmptySet) +} + +func (_this PartSet) Dtor_parts() _dafny.Sequence { + return _this.Get_().(PartSet_PartSet).Parts +} + +func (_this PartSet) Dtor_names() _dafny.Set { + return _this.Get_().(PartSet_PartSet).Names +} + +func (_this PartSet) Dtor_prefixes() _dafny.Set { + return _this.Get_().(PartSet_PartSet).Prefixes +} + +func (_this PartSet) String() string { + switch data := _this.Get_().(type) { + case nil: + return "null" + case PartSet_PartSet: + { + return "SearchConfigToInfo.PartSet.PartSet" + "(" + _dafny.String(data.Parts) + ", " + _dafny.String(data.Names) + ", " + _dafny.String(data.Prefixes) + ")" + } + default: + { + return "" + } + } +} + +func (_this PartSet) Equals(other PartSet) bool { + switch data1 := _this.Get_().(type) { + case PartSet_PartSet: + { + data2, ok := other.Get_().(PartSet_PartSet) + return ok && data1.Parts.Equals(data2.Parts) && data1.Names.Equals(data2.Names) && data1.Prefixes.Equals(data2.Prefixes) + } + default: + { + return false // unexpected + } + } +} + +func (_this PartSet) EqualsGeneric(other interface{}) bool { + typed, ok := other.(PartSet) + return ok && _this.Equals(typed) +} + +func Type_PartSet_() _dafny.TypeDescriptor { + return type_PartSet_{} +} + +type type_PartSet_ struct { +} + +func (_this type_PartSet_) Default() interface{} { + return Companion_PartSet_.Default() +} + +func (_this type_PartSet_) String() string { + return "SearchConfigToInfo.PartSet" +} +func (_this PartSet) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = PartSet{} + +func (_this PartSet) Add(part m_CompoundBeacon.BeaconPart, name _dafny.Sequence) m_Wrappers.Result { + { + if ((_this).Dtor_names()).Contains((part).GetName()) { + return m_Wrappers.Companion_Result_.Create_Failure_(m_DynamoDbEncryptionUtil.Companion_Default___.E(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("Duplicate part name "), (part).GetName()), _dafny.SeqOfString(" in ")), name), _dafny.SeqOfString(".")))) + } else if ((_this).Dtor_prefixes()).Contains((part).GetPrefix()) { + return m_Wrappers.Companion_Result_.Create_Failure_(m_DynamoDbEncryptionUtil.Companion_Default___.E(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("Duplicate prefix "), (part).GetPrefix()), _dafny.SeqOfString(" in ")), name), _dafny.SeqOfString(".")))) + } else { + return m_Wrappers.Companion_Result_.Create_Success_(Companion_PartSet_.Create_PartSet_(_dafny.Companion_Sequence_.Concatenate((_this).Dtor_parts(), _dafny.SeqOf(part)), ((_this).Dtor_names()).Union(_dafny.SetOf((part).GetName())), ((_this).Dtor_prefixes()).Union(_dafny.SetOf((part).GetPrefix())))) + } + } +} +func (_this PartSet) GetSetAsString(strings _dafny.Set) _dafny.Sequence { + { + var _0_names _dafny.Sequence = m_SortedSets.SetToOrderedSequence2(strings, func(coer144 func(_dafny.Char, _dafny.Char) bool) func(interface{}, interface{}) bool { + return func(arg181 interface{}, arg182 interface{}) bool { + return coer144(arg181.(_dafny.Char), arg182.(_dafny.Char)) + } + }(m_DynamoDbEncryptionUtil.Companion_Default___.CharLess)) + _ = _0_names + return m_StandardLibrary.Companion_Default___.Join(_0_names, _dafny.SeqOfString(", ")) + } +} +func (_this PartSet) Combine(other PartSet, name _dafny.Sequence, otherName _dafny.Sequence) m_Wrappers.Result { + { + if ((((_this).Dtor_names()).Intersection((other).Dtor_names())).Cardinality()).Sign() != 0 { + var _0_tags _dafny.Sequence = (_this).GetSetAsString(((_this).Dtor_names()).Intersection((other).Dtor_names())) + _ = _0_tags + return m_Wrappers.Companion_Result_.Create_Failure_(m_DynamoDbEncryptionUtil.Companion_Default___.E(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("Duplicate part name(s) "), _0_tags), _dafny.SeqOfString(" between ")), name), _dafny.SeqOfString(" and ")), otherName), _dafny.SeqOfString(".")))) + } else if ((((_this).Dtor_prefixes()).Intersection((other).Dtor_prefixes())).Cardinality()).Sign() != 0 { + var _1_tags _dafny.Sequence = (_this).GetSetAsString(((_this).Dtor_prefixes()).Intersection((other).Dtor_prefixes())) + _ = _1_tags + return m_Wrappers.Companion_Result_.Create_Failure_(m_DynamoDbEncryptionUtil.Companion_Default___.E(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("Duplicate prefix(es) "), _1_tags), _dafny.SeqOfString(" between ")), name), _dafny.SeqOfString(" and ")), otherName), _dafny.SeqOfString(".")))) + } else { + return m_Wrappers.Companion_Result_.Create_Success_(Companion_PartSet_.Create_PartSet_(_dafny.Companion_Sequence_.Concatenate((_this).Dtor_parts(), (other).Dtor_parts()), ((_this).Dtor_names()).Union((other).Dtor_names()), ((_this).Dtor_prefixes()).Union((other).Dtor_prefixes()))) + } + } +} + +// End of datatype PartSet diff --git a/releases/go/dynamodb-esdk/SearchableEncryptionInfo/SearchableEncryptionInfo.go b/releases/go/dynamodb-esdk/SearchableEncryptionInfo/SearchableEncryptionInfo.go new file mode 100644 index 000000000..32337f894 --- /dev/null +++ b/releases/go/dynamodb-esdk/SearchableEncryptionInfo/SearchableEncryptionInfo.go @@ -0,0 +1,2161 @@ +// Package SearchableEncryptionInfo +// Dafny module SearchableEncryptionInfo compiled into Go + +package SearchableEncryptionInfo + +import ( + os "os" + + m_ComAmazonawsDynamodbTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/dynamodb/ComAmazonawsDynamodbTypes" + m_Com_Amazonaws_Dynamodb "github.com/aws/aws-cryptographic-material-providers-library/releases/go/dynamodb/Com_Amazonaws_Dynamodb" + m_ComAmazonawsKmsTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/kms/ComAmazonawsKmsTypes" + m_Com_Amazonaws_Kms "github.com/aws/aws-cryptographic-material-providers-library/releases/go/kms/Com_Amazonaws_Kms" + m_AlgorithmSuites "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AlgorithmSuites" + m_AwsArnParsing "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsArnParsing" + m_AwsCryptographyKeyStoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyKeyStoreOperations" + m_AwsCryptographyKeyStoreTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyKeyStoreTypes" + m_AwsCryptographyMaterialProvidersOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyMaterialProvidersOperations" + m_AwsCryptographyMaterialProvidersTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyMaterialProvidersTypes" + m_AwsKmsDiscoveryKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsDiscoveryKeyring" + m_AwsKmsEcdhKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsEcdhKeyring" + m_AwsKmsHierarchicalKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsHierarchicalKeyring" + m_AwsKmsKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsKeyring" + m_AwsKmsMrkAreUnique "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkAreUnique" + m_AwsKmsMrkDiscoveryKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkDiscoveryKeyring" + m_AwsKmsMrkKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkKeyring" + m_AwsKmsMrkMatchForDecrypt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkMatchForDecrypt" + m_AwsKmsRsaKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsRsaKeyring" + m_AwsKmsUtils "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsUtils" + m_CMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CMM" + m_CacheConstants "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CacheConstants" + m_CanonicalEncryptionContext "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CanonicalEncryptionContext" + m_Commitment "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Commitment" + m_Constants "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Constants" + m_CreateKeyStoreTable "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CreateKeyStoreTable" + m_CreateKeys "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CreateKeys" + m_DDBKeystoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DDBKeystoreOperations" + m_DefaultCMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DefaultCMM" + m_DefaultClientSupplier "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DefaultClientSupplier" + m_Defaults "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Defaults" + m_DiscoveryMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DiscoveryMultiKeyring" + m_EcdhEdkWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/EcdhEdkWrapping" + m_EdkWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/EdkWrapping" + m_ErrorMessages "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/ErrorMessages" + m_GetKeys "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/GetKeys" + m_IntermediateKeyWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/IntermediateKeyWrapping" + m_KMSKeystoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KMSKeystoreOperations" + m_KeyStore "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KeyStore" + m_KeyStoreErrorMessages "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KeyStoreErrorMessages" + m_Keyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Keyring" + m_KmsArn "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KmsArn" + m_LocalCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/LocalCMC" + m_MaterialProviders "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MaterialProviders" + m_MaterialWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MaterialWrapping" + m_Materials "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Materials" + m_MrkAwareDiscoveryMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MrkAwareDiscoveryMultiKeyring" + m_MrkAwareStrictMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MrkAwareStrictMultiKeyring" + m_MultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MultiKeyring" + m_RawAESKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawAESKeyring" + m_RawECDHKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawECDHKeyring" + m_RawRSAKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawRSAKeyring" + m_RequiredEncryptionContextCMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RequiredEncryptionContextCMM" + m_StormTracker "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StormTracker" + m_StormTrackingCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StormTrackingCMC" + m_StrictMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StrictMultiKeyring" + m_Structure "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Structure" + m_SynchronizedLocalCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/SynchronizedLocalCMC" + m_Utils "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Utils" + m_AtomicPrimitives "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AtomicPrimitives" + m_AwsCryptographyPrimitivesOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AwsCryptographyPrimitivesOperations" + m_AwsCryptographyPrimitivesTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AwsCryptographyPrimitivesTypes" + m_Digest "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/Digest" + m_HKDF "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/HKDF" + m_KdfCtr "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/KdfCtr" + m_Random "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/Random" + m_WrappedHKDF "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/WrappedHKDF" + m_WrappedHMAC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/WrappedHMAC" + m_Actions "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Actions" + m_Base64 "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Base64" + m_Base64Lemmas "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Base64Lemmas" + m_BoundedInts "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/BoundedInts" + m_DivInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivInternals" + m_DivInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivInternalsNonlinear" + m_DivMod "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivMod" + m_FileIO "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/FileIO" + m_FloatCompare "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/FloatCompare" + m_Functions "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Functions" + m_GeneralInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/GeneralInternals" + m_GetOpt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/GetOpt" + m_HexStrings "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/HexStrings" + m_Logarithm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Logarithm" + m__Math "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Math_" + m_ModInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/ModInternals" + m_ModInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/ModInternalsNonlinear" + m_Mul "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Mul" + m_MulInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/MulInternals" + m_MulInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/MulInternalsNonlinear" + m_Power "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Power" + m_Relations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Relations" + m_Seq "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Seq" + m_Seq_MergeSort "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Seq_MergeSort" + m_SortedSets "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/SortedSets" + m_Sorting "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Sorting" + m_StandardLibrary "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary" + m_StandardLibraryInterop "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibraryInterop" + m_StandardLibrary_MemoryMath "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_MemoryMath" + m_StandardLibrary_Sequence "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_Sequence" + m_StandardLibrary_String "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_String" + m_StandardLibrary_UInt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_UInt" + m_Streams "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Streams" + m__Time "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Time_" + m_UTF8 "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/UTF8" + m_UUID "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/UUID" + m_UnicodeStrings "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/UnicodeStrings" + m__Unicode "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Unicode_" + m_Utf16EncodingForm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Utf16EncodingForm" + m_Utf8EncodingForm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Utf8EncodingForm" + m_Wrappers "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Wrappers" + m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations" + m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes" + m_AwsCryptographyDbEncryptionSdkDynamoDbOperations "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbOperations" + m_AwsCryptographyDbEncryptionSdkDynamoDbTypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbTypes" + m_AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations" + m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes" + m_BaseBeacon "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/BaseBeacon" + m_Canonize "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/Canonize" + m_CompoundBeacon "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/CompoundBeacon" + m_DdbVirtualFields "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DdbVirtualFields" + m_DynamoDbEncryption "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbEncryption" + m_DynamoDbEncryptionBranchKeyIdSupplier "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbEncryptionBranchKeyIdSupplier" + m_DynamoDbEncryptionUtil "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbEncryptionUtil" + m_DynamoDbItemEncryptor "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbItemEncryptor" + m_DynamoDbItemEncryptorUtil "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbItemEncryptorUtil" + m_DynamoDbNormalizeNumber "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbNormalizeNumber" + m_DynamoDbUpdateExpr "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbUpdateExpr" + m_DynamoToStruct "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoToStruct" + m_InternalLegacyOverride "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/InternalLegacyOverride" + m__Maps "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/Maps_" + m_OptimizedMergeSort "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/OptimizedMergeSort" + m_Sets "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/Sets" + m_SortCanon "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/SortCanon" + m_StructuredEncryption "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryption" + m_StructuredEncryptionCrypt "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionCrypt" + m_StructuredEncryptionFooter "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionFooter" + m_StructuredEncryptionHeader "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionHeader" + m_StructuredEncryptionPaths "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionPaths" + m_StructuredEncryptionUtil "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionUtil" + m_TermLoc "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/TermLoc" + m__System "github.com/dafny-lang/DafnyRuntimeGo/v4/System_" + _dafny "github.com/dafny-lang/DafnyRuntimeGo/v4/dafny" +) + +var _ = os.Args +var _ _dafny.Dummy__ +var _ m__System.Dummy__ +var _ m_Wrappers.Dummy__ +var _ m_BoundedInts.Dummy__ +var _ m_StandardLibrary_UInt.Dummy__ +var _ m_StandardLibrary_MemoryMath.Dummy__ +var _ m_StandardLibrary_Sequence.Dummy__ +var _ m_StandardLibrary_String.Dummy__ +var _ m_StandardLibrary.Dummy__ +var _ m_AwsCryptographyPrimitivesTypes.Dummy__ +var _ m_Random.Dummy__ +var _ m_Digest.Dummy__ +var _ m_WrappedHMAC.Dummy__ +var _ m_HKDF.Dummy__ +var _ m_WrappedHKDF.Dummy__ +var _ m_KdfCtr.Dummy__ +var _ m_AwsCryptographyPrimitivesOperations.Dummy__ +var _ m_AtomicPrimitives.Dummy__ +var _ m_ComAmazonawsDynamodbTypes.Dummy__ +var _ m_ComAmazonawsKmsTypes.Dummy__ +var _ m_AwsCryptographyKeyStoreTypes.Dummy__ +var _ m_AwsCryptographyMaterialProvidersTypes.Dummy__ +var _ m_Base64.Dummy__ +var _ m_AlgorithmSuites.Dummy__ +var _ m_Materials.Dummy__ +var _ m_Keyring.Dummy__ +var _ m_Relations.Dummy__ +var _ m_Seq_MergeSort.Dummy__ +var _ m__Math.Dummy__ +var _ m_Seq.Dummy__ +var _ m_Actions.Dummy__ +var _ m_CanonicalEncryptionContext.Dummy__ +var _ m_MaterialWrapping.Dummy__ +var _ m_IntermediateKeyWrapping.Dummy__ +var _ m_EdkWrapping.Dummy__ +var _ m_ErrorMessages.Dummy__ +var _ m_RawAESKeyring.Dummy__ +var _ m_AwsArnParsing.Dummy__ +var _ m_Constants.Dummy__ +var _ m_EcdhEdkWrapping.Dummy__ +var _ m_RawECDHKeyring.Dummy__ +var _ m_RawRSAKeyring.Dummy__ +var _ m_AwsKmsMrkMatchForDecrypt.Dummy__ +var _ m_AwsKmsUtils.Dummy__ +var _ m_AwsKmsKeyring.Dummy__ +var _ m_AwsKmsDiscoveryKeyring.Dummy__ +var _ m_AwsKmsEcdhKeyring.Dummy__ +var _ m_FileIO.Dummy__ +var _ m_LocalCMC.Dummy__ +var _ m_SynchronizedLocalCMC.Dummy__ +var _ m_StormTracker.Dummy__ +var _ m_StormTrackingCMC.Dummy__ +var _ m_CacheConstants.Dummy__ +var _ m_AwsKmsHierarchicalKeyring.Dummy__ +var _ m_AwsKmsMrkDiscoveryKeyring.Dummy__ +var _ m_AwsKmsMrkKeyring.Dummy__ +var _ m_AwsKmsRsaKeyring.Dummy__ +var _ m_MultiKeyring.Dummy__ +var _ m_AwsKmsMrkAreUnique.Dummy__ +var _ m_StrictMultiKeyring.Dummy__ +var _ m_Com_Amazonaws_Kms.Dummy__ +var _ m_Com_Amazonaws_Dynamodb.Dummy__ +var _ m_DiscoveryMultiKeyring.Dummy__ +var _ m_MrkAwareDiscoveryMultiKeyring.Dummy__ +var _ m_MrkAwareStrictMultiKeyring.Dummy__ +var _ m_CMM.Dummy__ +var _ m_Defaults.Dummy__ +var _ m_Commitment.Dummy__ +var _ m_DefaultCMM.Dummy__ +var _ m_DefaultClientSupplier.Dummy__ +var _ m_Utils.Dummy__ +var _ m_RequiredEncryptionContextCMM.Dummy__ +var _ m_AwsCryptographyMaterialProvidersOperations.Dummy__ +var _ m_MaterialProviders.Dummy__ +var _ m_KeyStoreErrorMessages.Dummy__ +var _ m_KmsArn.Dummy__ +var _ m_Structure.Dummy__ +var _ m_KMSKeystoreOperations.Dummy__ +var _ m_DDBKeystoreOperations.Dummy__ +var _ m_CreateKeys.Dummy__ +var _ m_CreateKeyStoreTable.Dummy__ +var _ m_GetKeys.Dummy__ +var _ m_AwsCryptographyKeyStoreOperations.Dummy__ +var _ m_KeyStore.Dummy__ +var _ m__Unicode.Dummy__ +var _ m_Functions.Dummy__ +var _ m_Utf8EncodingForm.Dummy__ +var _ m_Utf16EncodingForm.Dummy__ +var _ m_UnicodeStrings.Dummy__ +var _ m_GeneralInternals.Dummy__ +var _ m_MulInternalsNonlinear.Dummy__ +var _ m_MulInternals.Dummy__ +var _ m_Mul.Dummy__ +var _ m_ModInternalsNonlinear.Dummy__ +var _ m_DivInternalsNonlinear.Dummy__ +var _ m_ModInternals.Dummy__ +var _ m_DivInternals.Dummy__ +var _ m_DivMod.Dummy__ +var _ m_Power.Dummy__ +var _ m_Logarithm.Dummy__ +var _ m_StandardLibraryInterop.Dummy__ +var _ m_Streams.Dummy__ +var _ m_Sorting.Dummy__ +var _ m_HexStrings.Dummy__ +var _ m_GetOpt.Dummy__ +var _ m_FloatCompare.Dummy__ +var _ m_Base64Lemmas.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Dummy__ +var _ m_StructuredEncryptionUtil.Dummy__ +var _ m_Sets.Dummy__ +var _ m_StructuredEncryptionPaths.Dummy__ +var _ m_StructuredEncryptionHeader.Dummy__ +var _ m_StructuredEncryptionFooter.Dummy__ +var _ m_OptimizedMergeSort.Dummy__ +var _ m_SortCanon.Dummy__ +var _ m_Canonize.Dummy__ +var _ m_StructuredEncryptionCrypt.Dummy__ +var _ m__Maps.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations.Dummy__ +var _ m_StructuredEncryption.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Dummy__ +var _ m_DynamoDbEncryptionUtil.Dummy__ +var _ m_DynamoDbNormalizeNumber.Dummy__ +var _ m_DynamoToStruct.Dummy__ +var _ m_DynamoDbItemEncryptorUtil.Dummy__ +var _ m_InternalLegacyOverride.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations.Dummy__ +var _ m_DynamoDbItemEncryptor.Dummy__ +var _ m_DynamoDbEncryptionBranchKeyIdSupplier.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbOperations.Dummy__ +var _ m_DynamoDbEncryption.Dummy__ +var _ m_TermLoc.Dummy__ +var _ m_DdbVirtualFields.Dummy__ +var _ m_DynamoDbUpdateExpr.Dummy__ +var _ m_BaseBeacon.Dummy__ +var _ m_CompoundBeacon.Dummy__ + +type Dummy__ struct{} + +// Definition of class Default__ +type Default__ struct { + dummy byte +} + +func New_Default___() *Default__ { + _this := Default__{} + + return &_this +} + +type CompanionStruct_Default___ struct { +} + +var Companion_Default___ = CompanionStruct_Default___{} + +func (_this *Default__) Equals(other *Default__) bool { + return _this == other +} + +func (_this *Default__) EqualsGeneric(x interface{}) bool { + other, ok := x.(*Default__) + return ok && _this.Equals(other) +} + +func (*Default__) String() string { + return "SearchableEncryptionInfo.Default__" +} +func (_this *Default__) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = &Default__{} + +func (_static *CompanionStruct_Default___) GetAllKeys(client *m_AtomicPrimitives.AtomicPrimitivesClient, stdNames _dafny.Sequence, key _dafny.Sequence) m_Wrappers.Result { + var output m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(_dafny.EmptyMap) + _ = output + var _0_valueOrError0 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(_dafny.EmptyMap) + _ = _0_valueOrError0 + var _out0 m_Wrappers.Result + _ = _out0 + _out0 = Companion_Default___.GetHmacKeys(client, stdNames, stdNames, key, _dafny.NewMapBuilder().ToMap()) + _0_valueOrError0 = _out0 + if (_0_valueOrError0).IsFailure() { + output = (_0_valueOrError0).PropagateFailure() + return output + } + var _1_newKeys _dafny.Map + _ = _1_newKeys + _1_newKeys = (_0_valueOrError0).Extract().(_dafny.Map) + output = m_Wrappers.Companion_Result_.Create_Success_(_1_newKeys) + return output + return output +} +func (_static *CompanionStruct_Default___) GetHmacKeys(client *m_AtomicPrimitives.AtomicPrimitivesClient, allKeys _dafny.Sequence, keysLeft _dafny.Sequence, key _dafny.Sequence, acc _dafny.Map) m_Wrappers.Result { + var output m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(_dafny.EmptyMap) + _ = output + if (_dafny.IntOfUint32((keysLeft).Cardinality())).Sign() == 0 { + output = m_Wrappers.Companion_Result_.Create_Success_(acc) + return output + } else { + var _0_valueOrError0 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(_dafny.EmptySeq) + _ = _0_valueOrError0 + var _out0 m_Wrappers.Result + _ = _out0 + _out0 = Companion_Default___.GetBeaconKey(client, key, (keysLeft).Select(0).(_dafny.Sequence)) + _0_valueOrError0 = _out0 + if (_0_valueOrError0).IsFailure() { + output = (_0_valueOrError0).PropagateFailure() + return output + } + var _1_newKey _dafny.Sequence + _ = _1_newKey + _1_newKey = (_0_valueOrError0).Extract().(_dafny.Sequence) + var _out1 m_Wrappers.Result + _ = _out1 + _out1 = Companion_Default___.GetHmacKeys(client, allKeys, (keysLeft).Drop(1), key, (acc).Update((keysLeft).Select(0).(_dafny.Sequence), _1_newKey)) + output = _out1 + } + return output +} +func (_static *CompanionStruct_Default___) GetBeaconKey(client *m_AtomicPrimitives.AtomicPrimitivesClient, key _dafny.Sequence, name _dafny.Sequence) m_Wrappers.Result { + var output m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(_dafny.EmptySeq) + _ = output + var _0_valueOrError0 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(m_UTF8.Companion_ValidUTF8Bytes_.Witness()) + _ = _0_valueOrError0 + _0_valueOrError0 = (m_UTF8.Encode(_dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("AWS_DBE_SCAN_BEACON"), name))).MapFailure(func(coer103 func(_dafny.Sequence) m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Error) func(interface{}) interface{} { + return func(arg131 interface{}) interface{} { + return coer103(arg131.(_dafny.Sequence)) + } + }(func(_1_e _dafny.Sequence) m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Error { + return m_DynamoDbEncryptionUtil.Companion_Default___.E(_1_e) + })) + if (_0_valueOrError0).IsFailure() { + output = (_0_valueOrError0).PropagateFailure() + return output + } + var _2_info _dafny.Sequence + _ = _2_info + _2_info = (_0_valueOrError0).Extract().(_dafny.Sequence) + var _3_keyR m_Wrappers.Result + _ = _3_keyR + var _out0 m_Wrappers.Result + _ = _out0 + _out0 = (client).Hkdf(m_AwsCryptographyPrimitivesTypes.Companion_HkdfInput_.Create_HkdfInput_(m_AwsCryptographyPrimitivesTypes.Companion_DigestAlgorithm_.Create_SHA__512_(), m_Wrappers.Companion_Option_.Create_None_(), key, _2_info, int32(64))) + _3_keyR = _out0 + var _4_valueOrError1 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(_dafny.EmptySeq) + _ = _4_valueOrError1 + _4_valueOrError1 = (_3_keyR).MapFailure(func(coer104 func(m_AwsCryptographyPrimitivesTypes.Error) m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Error) func(interface{}) interface{} { + return func(arg132 interface{}) interface{} { + return coer104(arg132.(m_AwsCryptographyPrimitivesTypes.Error)) + } + }(func(_5_e m_AwsCryptographyPrimitivesTypes.Error) m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Error { + return m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Companion_Error_.Create_AwsCryptographyPrimitives_(_5_e) + })) + if (_4_valueOrError1).IsFailure() { + output = (_4_valueOrError1).PropagateFailure() + return output + } + var _6_newKey _dafny.Sequence + _ = _6_newKey + _6_newKey = (_4_valueOrError1).Extract().(_dafny.Sequence) + output = m_Wrappers.Companion_Result_.Create_Success_(_6_newKey) + return output + return output +} +func (_static *CompanionStruct_Default___) GenerateUuidBytes() m_Wrappers.Result { + var output m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(_dafny.EmptySeq) + _ = output + var _0_uuid_q m_Wrappers.Result + _ = _0_uuid_q + var _out0 m_Wrappers.Result + _ = _out0 + _out0 = m_UUID.GenerateUUID() + _0_uuid_q = _out0 + var _1_valueOrError0 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(_dafny.EmptySeq.SetString()) + _ = _1_valueOrError0 + _1_valueOrError0 = (_0_uuid_q).MapFailure(func(coer105 func(_dafny.Sequence) m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Error) func(interface{}) interface{} { + return func(arg133 interface{}) interface{} { + return coer105(arg133.(_dafny.Sequence)) + } + }(func(_2_e _dafny.Sequence) m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Error { + return m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Companion_Error_.Create_DynamoDbEncryptionException_(_2_e) + })) + if (_1_valueOrError0).IsFailure() { + output = (_1_valueOrError0).PropagateFailure() + return output + } + var _3_uuid _dafny.Sequence + _ = _3_uuid + _3_uuid = (_1_valueOrError0).Extract().(_dafny.Sequence) + output = (m_UUID.ToByteArray(_3_uuid)).MapFailure(func(coer106 func(_dafny.Sequence) m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Error) func(interface{}) interface{} { + return func(arg134 interface{}) interface{} { + return coer106(arg134.(_dafny.Sequence)) + } + }(func(_4_e _dafny.Sequence) m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Error { + return m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Companion_Error_.Create_DynamoDbEncryptionException_(_4_e) + })) + return output +} +func (_static *CompanionStruct_Default___) MakeSearchInfo(version BeaconVersion) SearchInfo { + return Companion_SearchInfo_.Create_SearchInfo_(_dafny.SeqOf(version), _dafny.Zero) +} +func (_static *CompanionStruct_Default___) IsPartOnly(b Beacon) bool { + return ((b).Is_Standard()) && (((b).Dtor_std()).Dtor_partOnly()) +} +func (_static *CompanionStruct_Default___) IsBeaconOfType(b Beacon, t BeaconType) bool { + var _source0 BeaconType = t + _ = _source0 + { + if _source0.Is_AnyBeacon() { + return true + } + } + { + if _source0.Is_SignedBeacon() { + return !((b).IsEncrypted()) + } + } + { + return (b).IsEncrypted() + } +} +func (_static *CompanionStruct_Default___) MakeBeaconVersion(version uint8, keySource KeySource, beacons _dafny.Map, virtualFields _dafny.Map, actions _dafny.Map) m_Wrappers.Result { + var _0_beaconNames _dafny.Sequence = m_SortedSets.SetToOrderedSequence2((beacons).Keys(), func(coer107 func(_dafny.Char, _dafny.Char) bool) func(interface{}, interface{}) bool { + return func(arg135 interface{}, arg136 interface{}) bool { + return coer107(arg135.(_dafny.Char), arg136.(_dafny.Char)) + } + }(m_DynamoDbEncryptionUtil.Companion_Default___.CharLess)) + _ = _0_beaconNames + var _1_stdKeys _dafny.Sequence = m_Seq.Companion_Default___.Filter(func(coer108 func(_dafny.Sequence) bool) func(interface{}) bool { + return func(arg137 interface{}) bool { + return coer108(arg137.(_dafny.Sequence)) + } + }((func(_2_beacons _dafny.Map) func(_dafny.Sequence) bool { + return func(_3_k _dafny.Sequence) bool { + return ((_2_beacons).Contains(_3_k)) && (((_2_beacons).Get(_3_k).(Beacon)).Is_Standard()) + } + })(beacons)), _0_beaconNames) + _ = _1_stdKeys + var _4_encrypted _dafny.Set = func() _dafny.Set { + var _coll0 = _dafny.NewBuilder() + _ = _coll0 + for _iter21 := _dafny.Iterate((actions).Keys().Elements()); ; { + _compr_0, _ok21 := _iter21() + if !_ok21 { + break + } + var _5_k _dafny.Sequence + _5_k = interface{}(_compr_0).(_dafny.Sequence) + if ((actions).Contains(_5_k)) && (((actions).Get(_5_k).(m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.CryptoAction)).Equals(m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Companion_CryptoAction_.Create_ENCRYPT__AND__SIGN_())) { + _coll0.Add(_5_k) + } + } + return _coll0.ToSet() + }() + _ = _4_encrypted + var _6_bv BeaconVersion = Companion_BeaconVersion_.Create_BeaconVersion_(version, keySource, virtualFields, beacons, _0_beaconNames, _1_stdKeys, _4_encrypted) + _ = _6_bv + return m_Wrappers.Companion_Result_.Create_Success_(_6_bv) +} + +// End of class Default__ + +// Definition of class VersionNumber +type VersionNumber struct { +} + +func New_VersionNumber_() *VersionNumber { + _this := VersionNumber{} + + return &_this +} + +type CompanionStruct_VersionNumber_ struct { +} + +var Companion_VersionNumber_ = CompanionStruct_VersionNumber_{} + +func (*VersionNumber) String() string { + return "SearchableEncryptionInfo.VersionNumber" +} +func (_this *VersionNumber) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = &VersionNumber{} + +func (_this *CompanionStruct_VersionNumber_) IntegerRange(lo _dafny.Int, hi _dafny.Int) _dafny.Iterator { + iter := _dafny.IntegerRange(lo, hi) + return func() (interface{}, bool) { + next, ok := iter() + if !ok { + return uint8(0), false + } + return next.(_dafny.Int).Uint8(), true + } +} +func (_this *CompanionStruct_VersionNumber_) Witness() uint8 { + return (_dafny.One).Uint8() +} + +// End of class VersionNumber + +func Type_VersionNumber_() _dafny.TypeDescriptor { + return type_VersionNumber_{} +} + +type type_VersionNumber_ struct { +} + +func (_this type_VersionNumber_) Default() interface{} { + return Companion_VersionNumber_.Witness() +} + +func (_this type_VersionNumber_) String() string { + return "SearchableEncryptionInfo.VersionNumber" +} +func (_this *CompanionStruct_VersionNumber_) Is_(__source uint8) bool { + var _7_x _dafny.Int = _dafny.IntOfUint8(__source) + _ = _7_x + return (_7_x).Cmp(_dafny.One) == 0 +} + +// Definition of class ValidSearchInfo +type ValidSearchInfo struct { +} + +func New_ValidSearchInfo_() *ValidSearchInfo { + _this := ValidSearchInfo{} + + return &_this +} + +type CompanionStruct_ValidSearchInfo_ struct { +} + +var Companion_ValidSearchInfo_ = CompanionStruct_ValidSearchInfo_{} + +func (*ValidSearchInfo) String() string { + return "SearchableEncryptionInfo.ValidSearchInfo" +} + +// End of class ValidSearchInfo + +func Type_ValidSearchInfo_() _dafny.TypeDescriptor { + return type_ValidSearchInfo_{} +} + +type type_ValidSearchInfo_ struct { +} + +func (_this type_ValidSearchInfo_) Default() interface{} { + return Companion_SearchInfo_.Default() +} + +func (_this type_ValidSearchInfo_) String() string { + return "SearchableEncryptionInfo.ValidSearchInfo" +} + +// Definition of class ValidStore +type ValidStore struct { +} + +func New_ValidStore_() *ValidStore { + _this := ValidStore{} + + return &_this +} + +type CompanionStruct_ValidStore_ struct { +} + +var Companion_ValidStore_ = CompanionStruct_ValidStore_{} + +func (*ValidStore) String() string { + return "SearchableEncryptionInfo.ValidStore" +} + +// End of class ValidStore + +func Type_ValidStore_() _dafny.TypeDescriptor { + return type_ValidStore_{} +} + +type type_ValidStore_ struct { +} + +func (_this type_ValidStore_) Default() interface{} { + return (m_AwsCryptographyKeyStoreTypes.IKeyStoreClient)(nil) +} + +func (_this type_ValidStore_) String() string { + return "SearchableEncryptionInfo.ValidStore" +} + +// Definition of datatype KeyLocation +type KeyLocation struct { + Data_KeyLocation_ +} + +func (_this KeyLocation) Get_() Data_KeyLocation_ { + return _this.Data_KeyLocation_ +} + +type Data_KeyLocation_ interface { + isKeyLocation() +} + +type CompanionStruct_KeyLocation_ struct { +} + +var Companion_KeyLocation_ = CompanionStruct_KeyLocation_{} + +type KeyLocation_LiteralLoc struct { + Keys _dafny.Map +} + +func (KeyLocation_LiteralLoc) isKeyLocation() {} + +func (CompanionStruct_KeyLocation_) Create_LiteralLoc_(Keys _dafny.Map) KeyLocation { + return KeyLocation{KeyLocation_LiteralLoc{Keys}} +} + +func (_this KeyLocation) Is_LiteralLoc() bool { + _, ok := _this.Get_().(KeyLocation_LiteralLoc) + return ok +} + +type KeyLocation_SingleLoc struct { + KeyId _dafny.Sequence +} + +func (KeyLocation_SingleLoc) isKeyLocation() {} + +func (CompanionStruct_KeyLocation_) Create_SingleLoc_(KeyId _dafny.Sequence) KeyLocation { + return KeyLocation{KeyLocation_SingleLoc{KeyId}} +} + +func (_this KeyLocation) Is_SingleLoc() bool { + _, ok := _this.Get_().(KeyLocation_SingleLoc) + return ok +} + +type KeyLocation_MultiLoc struct { + KeyName _dafny.Sequence + DeleteKey bool +} + +func (KeyLocation_MultiLoc) isKeyLocation() {} + +func (CompanionStruct_KeyLocation_) Create_MultiLoc_(KeyName _dafny.Sequence, DeleteKey bool) KeyLocation { + return KeyLocation{KeyLocation_MultiLoc{KeyName, DeleteKey}} +} + +func (_this KeyLocation) Is_MultiLoc() bool { + _, ok := _this.Get_().(KeyLocation_MultiLoc) + return ok +} + +func (CompanionStruct_KeyLocation_) Default() KeyLocation { + return Companion_KeyLocation_.Create_LiteralLoc_(_dafny.EmptyMap) +} + +func (_this KeyLocation) Dtor_keys() _dafny.Map { + return _this.Get_().(KeyLocation_LiteralLoc).Keys +} + +func (_this KeyLocation) Dtor_keyId() _dafny.Sequence { + return _this.Get_().(KeyLocation_SingleLoc).KeyId +} + +func (_this KeyLocation) Dtor_keyName() _dafny.Sequence { + return _this.Get_().(KeyLocation_MultiLoc).KeyName +} + +func (_this KeyLocation) Dtor_deleteKey() bool { + return _this.Get_().(KeyLocation_MultiLoc).DeleteKey +} + +func (_this KeyLocation) String() string { + switch data := _this.Get_().(type) { + case nil: + return "null" + case KeyLocation_LiteralLoc: + { + return "SearchableEncryptionInfo.KeyLocation.LiteralLoc" + "(" + _dafny.String(data.Keys) + ")" + } + case KeyLocation_SingleLoc: + { + return "SearchableEncryptionInfo.KeyLocation.SingleLoc" + "(" + _dafny.String(data.KeyId) + ")" + } + case KeyLocation_MultiLoc: + { + return "SearchableEncryptionInfo.KeyLocation.MultiLoc" + "(" + _dafny.String(data.KeyName) + ", " + _dafny.String(data.DeleteKey) + ")" + } + default: + { + return "" + } + } +} + +func (_this KeyLocation) Equals(other KeyLocation) bool { + switch data1 := _this.Get_().(type) { + case KeyLocation_LiteralLoc: + { + data2, ok := other.Get_().(KeyLocation_LiteralLoc) + return ok && data1.Keys.Equals(data2.Keys) + } + case KeyLocation_SingleLoc: + { + data2, ok := other.Get_().(KeyLocation_SingleLoc) + return ok && data1.KeyId.Equals(data2.KeyId) + } + case KeyLocation_MultiLoc: + { + data2, ok := other.Get_().(KeyLocation_MultiLoc) + return ok && data1.KeyName.Equals(data2.KeyName) && data1.DeleteKey == data2.DeleteKey + } + default: + { + return false // unexpected + } + } +} + +func (_this KeyLocation) EqualsGeneric(other interface{}) bool { + typed, ok := other.(KeyLocation) + return ok && _this.Equals(typed) +} + +func Type_KeyLocation_() _dafny.TypeDescriptor { + return type_KeyLocation_{} +} + +type type_KeyLocation_ struct { +} + +func (_this type_KeyLocation_) Default() interface{} { + return Companion_KeyLocation_.Default() +} + +func (_this type_KeyLocation_) String() string { + return "SearchableEncryptionInfo.KeyLocation" +} +func (_this KeyLocation) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = KeyLocation{} + +// End of datatype KeyLocation + +// Definition of datatype KeySource +type KeySource struct { + Data_KeySource_ +} + +func (_this KeySource) Get_() Data_KeySource_ { + return _this.Data_KeySource_ +} + +type Data_KeySource_ interface { + isKeySource() +} + +type CompanionStruct_KeySource_ struct { +} + +var Companion_KeySource_ = CompanionStruct_KeySource_{} + +type KeySource_KeySource struct { + Client *m_AtomicPrimitives.AtomicPrimitivesClient + Store m_AwsCryptographyKeyStoreTypes.IKeyStoreClient + KeyLoc KeyLocation + Cache m_AwsCryptographyMaterialProvidersTypes.ICryptographicMaterialsCache + CacheTTL uint32 + PartitionIdBytes _dafny.Sequence + LogicalKeyStoreNameBytes _dafny.Sequence +} + +func (KeySource_KeySource) isKeySource() {} + +func (CompanionStruct_KeySource_) Create_KeySource_(Client *m_AtomicPrimitives.AtomicPrimitivesClient, Store m_AwsCryptographyKeyStoreTypes.IKeyStoreClient, KeyLoc KeyLocation, Cache m_AwsCryptographyMaterialProvidersTypes.ICryptographicMaterialsCache, CacheTTL uint32, PartitionIdBytes _dafny.Sequence, LogicalKeyStoreNameBytes _dafny.Sequence) KeySource { + return KeySource{KeySource_KeySource{Client, Store, KeyLoc, Cache, CacheTTL, PartitionIdBytes, LogicalKeyStoreNameBytes}} +} + +func (_this KeySource) Is_KeySource() bool { + _, ok := _this.Get_().(KeySource_KeySource) + return ok +} + +func (CompanionStruct_KeySource_) Default() KeySource { + return Companion_KeySource_.Create_KeySource_((*m_AtomicPrimitives.AtomicPrimitivesClient)(nil), (m_AwsCryptographyKeyStoreTypes.IKeyStoreClient)(nil), Companion_KeyLocation_.Default(), (m_AwsCryptographyMaterialProvidersTypes.ICryptographicMaterialsCache)(nil), uint32(0), _dafny.EmptySeq, _dafny.EmptySeq) +} + +func (_this KeySource) Dtor_client() *m_AtomicPrimitives.AtomicPrimitivesClient { + return _this.Get_().(KeySource_KeySource).Client +} + +func (_this KeySource) Dtor_store() m_AwsCryptographyKeyStoreTypes.IKeyStoreClient { + return _this.Get_().(KeySource_KeySource).Store +} + +func (_this KeySource) Dtor_keyLoc() KeyLocation { + return _this.Get_().(KeySource_KeySource).KeyLoc +} + +func (_this KeySource) Dtor_cache() m_AwsCryptographyMaterialProvidersTypes.ICryptographicMaterialsCache { + return _this.Get_().(KeySource_KeySource).Cache +} + +func (_this KeySource) Dtor_cacheTTL() uint32 { + return _this.Get_().(KeySource_KeySource).CacheTTL +} + +func (_this KeySource) Dtor_partitionIdBytes() _dafny.Sequence { + return _this.Get_().(KeySource_KeySource).PartitionIdBytes +} + +func (_this KeySource) Dtor_logicalKeyStoreNameBytes() _dafny.Sequence { + return _this.Get_().(KeySource_KeySource).LogicalKeyStoreNameBytes +} + +func (_this KeySource) String() string { + switch data := _this.Get_().(type) { + case nil: + return "null" + case KeySource_KeySource: + { + return "SearchableEncryptionInfo.KeySource.KeySource" + "(" + _dafny.String(data.Client) + ", " + _dafny.String(data.Store) + ", " + _dafny.String(data.KeyLoc) + ", " + _dafny.String(data.Cache) + ", " + _dafny.String(data.CacheTTL) + ", " + _dafny.String(data.PartitionIdBytes) + ", " + _dafny.String(data.LogicalKeyStoreNameBytes) + ")" + } + default: + { + return "" + } + } +} + +func (_this KeySource) Equals(other KeySource) bool { + switch data1 := _this.Get_().(type) { + case KeySource_KeySource: + { + data2, ok := other.Get_().(KeySource_KeySource) + return ok && data1.Client == data2.Client && _dafny.AreEqual(data1.Store, data2.Store) && data1.KeyLoc.Equals(data2.KeyLoc) && _dafny.AreEqual(data1.Cache, data2.Cache) && data1.CacheTTL == data2.CacheTTL && data1.PartitionIdBytes.Equals(data2.PartitionIdBytes) && data1.LogicalKeyStoreNameBytes.Equals(data2.LogicalKeyStoreNameBytes) + } + default: + { + return false // unexpected + } + } +} + +func (_this KeySource) EqualsGeneric(other interface{}) bool { + typed, ok := other.(KeySource) + return ok && _this.Equals(typed) +} + +func Type_KeySource_() _dafny.TypeDescriptor { + return type_KeySource_{} +} + +type type_KeySource_ struct { +} + +func (_this type_KeySource_) Default() interface{} { + return Companion_KeySource_.Default() +} + +func (_this type_KeySource_) String() string { + return "SearchableEncryptionInfo.KeySource" +} +func (_this KeySource) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = KeySource{} + +func (_this KeySource) GetKeyMap(stdNames _dafny.Sequence, keyId m_DynamoDbEncryptionUtil.MaybeKeyId) m_Wrappers.Result { + { + var output m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(m_DynamoDbEncryptionUtil.Companion_MaybeKeyMap_.Default()) + _ = output + if ((_this).Dtor_keyLoc()).Is_SingleLoc() { + var _0_valueOrError0 m_Wrappers.Outcome = m_Wrappers.Companion_Outcome_.Default() + _ = _0_valueOrError0 + _0_valueOrError0 = m_Wrappers.Companion_Default___.Need((keyId).Is_DontUseKeyId(), m_DynamoDbEncryptionUtil.Companion_Default___.E(_dafny.SeqOfString("KeyID should not be supplied with a SingleKeyStore"))) + if (_0_valueOrError0).IsFailure() { + output = (_0_valueOrError0).PropagateFailure() + return output + } + var _1_now int64 + _ = _1_now + var _out0 int64 + _ = _out0 + _out0 = m__Time.CurrentRelativeTime() + _1_now = _out0 + var _2_valueOrError1 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(_dafny.EmptyMap) + _ = _2_valueOrError1 + var _out1 m_Wrappers.Result + _ = _out1 + _out1 = (_this).GetKeysCache((_this).Dtor_client(), stdNames, ((_this).Dtor_keyLoc()).Dtor_keyId(), int64((_this).Dtor_cacheTTL()), (_this).Dtor_partitionIdBytes(), (_this).Dtor_logicalKeyStoreNameBytes(), (_1_now)) + _2_valueOrError1 = _out1 + if (_2_valueOrError1).IsFailure() { + output = (_2_valueOrError1).PropagateFailure() + return output + } + var _3_theMap _dafny.Map + _ = _3_theMap + _3_theMap = (_2_valueOrError1).Extract().(_dafny.Map) + output = m_Wrappers.Companion_Result_.Create_Success_(m_DynamoDbEncryptionUtil.Companion_MaybeKeyMap_.Create_Keys_(_3_theMap)) + return output + } else if ((_this).Dtor_keyLoc()).Is_LiteralLoc() { + var _4_valueOrError2 m_Wrappers.Outcome = m_Wrappers.Companion_Outcome_.Default() + _ = _4_valueOrError2 + _4_valueOrError2 = m_Wrappers.Companion_Default___.Need((keyId).Is_DontUseKeyId(), m_DynamoDbEncryptionUtil.Companion_Default___.E(_dafny.SeqOfString("KeyID should not be supplied with a LiteralKeyStore"))) + if (_4_valueOrError2).IsFailure() { + output = (_4_valueOrError2).PropagateFailure() + return output + } + var _5_valueOrError3 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(_dafny.EmptyMap) + _ = _5_valueOrError3 + var _out2 m_Wrappers.Result + _ = _out2 + _out2 = (_this).GetKeysLiteral() + _5_valueOrError3 = _out2 + if (_5_valueOrError3).IsFailure() { + output = (_5_valueOrError3).PropagateFailure() + return output + } + var _6_theMap _dafny.Map + _ = _6_theMap + _6_theMap = (_5_valueOrError3).Extract().(_dafny.Map) + output = m_Wrappers.Companion_Result_.Create_Success_(m_DynamoDbEncryptionUtil.Companion_MaybeKeyMap_.Create_Keys_(_6_theMap)) + return output + } else { + var _source0 m_DynamoDbEncryptionUtil.MaybeKeyId = keyId + _ = _source0 + { + { + if _source0.Is_DontUseKeyId() { + output = m_Wrappers.Companion_Result_.Create_Failure_(m_DynamoDbEncryptionUtil.Companion_Default___.E(_dafny.SeqOfString("Fixed KeyID must not be supplied with a MultiKeyStore"))) + return output + goto Lmatch0 + } + } + { + if _source0.Is_ShouldHaveKeyId() { + output = m_Wrappers.Companion_Result_.Create_Success_(m_DynamoDbEncryptionUtil.Companion_MaybeKeyMap_.Create_ShouldHaveKeys_()) + return output + goto Lmatch0 + } + } + { + var _7_id _dafny.Sequence = _source0.Get_().(m_DynamoDbEncryptionUtil.MaybeKeyId_KeyId).Value + _ = _7_id + var _8_now int64 + _ = _8_now + var _out3 int64 + _ = _out3 + _out3 = m__Time.CurrentRelativeTime() + _8_now = _out3 + var _9_valueOrError4 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(_dafny.EmptyMap) + _ = _9_valueOrError4 + var _out4 m_Wrappers.Result + _ = _out4 + _out4 = (_this).GetKeysCache((_this).Dtor_client(), stdNames, _7_id, int64((_this).Dtor_cacheTTL()), (_this).Dtor_partitionIdBytes(), (_this).Dtor_logicalKeyStoreNameBytes(), (_8_now)) + _9_valueOrError4 = _out4 + if (_9_valueOrError4).IsFailure() { + output = (_9_valueOrError4).PropagateFailure() + return output + } + var _10_theMap _dafny.Map + _ = _10_theMap + _10_theMap = (_9_valueOrError4).Extract().(_dafny.Map) + output = m_Wrappers.Companion_Result_.Create_Success_(m_DynamoDbEncryptionUtil.Companion_MaybeKeyMap_.Create_Keys_(_10_theMap)) + return output + } + goto Lmatch0 + } + Lmatch0: + } + return output + } +} +func (_this KeySource) GetKeysLiteral() m_Wrappers.Result { + { + var output m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(_dafny.EmptyMap) + _ = output + output = m_Wrappers.Companion_Result_.Create_Success_(((_this).Dtor_keyLoc()).Dtor_keys()) + return output + return output + } +} +func (_this KeySource) PosLongAdd(x int64, y int64) int64 { + { + if ((_dafny.IntOfInt64(x)).Plus(_dafny.IntOfInt64(y))).Cmp(m_StandardLibrary_UInt.Companion_Default___.INT64__MAX__LIMIT()) < 0 { + return (x) + (y) + } else { + return (m_StandardLibrary_UInt.Companion_Default___.INT64__MAX__LIMIT()).Int64() + } + } +} +func (_this KeySource) PosLongSub(x int64, y int64) int64 { + { + if (x) <= (y) { + return int64(0) + } else { + return (x) - (y) + } + } +} +func (_this KeySource) CacheEntryWithinLimits(creationTime int64, now int64, ttlSeconds int64) bool { + { + if (now) <= (creationTime) { + return true + } else { + return ((_this).PosLongSub(now, creationTime)) <= (ttlSeconds) + } + } +} +func (_this KeySource) GetKeysCache(client *m_AtomicPrimitives.AtomicPrimitivesClient, stdNames _dafny.Sequence, keyId _dafny.Sequence, cacheTTL int64, partitionIdBytes _dafny.Sequence, logicalKeyStoreNameBytes _dafny.Sequence, now int64) m_Wrappers.Result { + { + var output m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(_dafny.EmptyMap) + _ = output + var _0_resourceId _dafny.Sequence + _ = _0_resourceId + _0_resourceId = m_CacheConstants.Companion_Default___.RESOURCE__ID__HIERARCHICAL__KEYRING() + var _1_scopeId _dafny.Sequence + _ = _1_scopeId + _1_scopeId = m_CacheConstants.Companion_Default___.SCOPE__ID__SEARCHABLE__ENCRYPTION() + var _2_keyIdBytesR m_Wrappers.Result + _ = _2_keyIdBytesR + _2_keyIdBytesR = m_UTF8.Encode(keyId) + var _3_valueOrError0 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(m_UTF8.Companion_ValidUTF8Bytes_.Witness()) + _ = _3_valueOrError0 + _3_valueOrError0 = (_2_keyIdBytesR).MapFailure(func(coer109 func(_dafny.Sequence) m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Error) func(interface{}) interface{} { + return func(arg138 interface{}) interface{} { + return coer109(arg138.(_dafny.Sequence)) + } + }(func(_4_e _dafny.Sequence) m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Error { + return m_DynamoDbEncryptionUtil.Companion_Default___.E(_4_e) + })) + if (_3_valueOrError0).IsFailure() { + output = (_3_valueOrError0).PropagateFailure() + return output + } + var _5_keyIdBytes _dafny.Sequence + _ = _5_keyIdBytes + _5_keyIdBytes = (_3_valueOrError0).Extract().(_dafny.Sequence) + var _6_suffix _dafny.Sequence + _ = _6_suffix + _6_suffix = _dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(logicalKeyStoreNameBytes, m_CacheConstants.Companion_Default___.NULL__BYTE()), _5_keyIdBytes) + var _7_identifier _dafny.Sequence + _ = _7_identifier + _7_identifier = _dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_0_resourceId, m_CacheConstants.Companion_Default___.NULL__BYTE()), _1_scopeId), m_CacheConstants.Companion_Default___.NULL__BYTE()), partitionIdBytes), m_CacheConstants.Companion_Default___.NULL__BYTE()), _6_suffix) + var _8_hashAlgorithm m_AwsCryptographyPrimitivesTypes.DigestAlgorithm + _ = _8_hashAlgorithm + _8_hashAlgorithm = m_AwsCryptographyPrimitivesTypes.Companion_DigestAlgorithm_.Create_SHA__384_() + var _9_identifierDigestInput m_AwsCryptographyPrimitivesTypes.DigestInput + _ = _9_identifierDigestInput + _9_identifierDigestInput = m_AwsCryptographyPrimitivesTypes.Companion_DigestInput_.Create_DigestInput_(_8_hashAlgorithm, _7_identifier) + var _10_maybeCacheDigest m_Wrappers.Result + _ = _10_maybeCacheDigest + var _out0 m_Wrappers.Result + _ = _out0 + _out0 = (client).Digest(_9_identifierDigestInput) + _10_maybeCacheDigest = _out0 + var _11_valueOrError1 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(_dafny.EmptySeq) + _ = _11_valueOrError1 + _11_valueOrError1 = (_10_maybeCacheDigest).MapFailure(func(coer110 func(m_AwsCryptographyPrimitivesTypes.Error) m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Error) func(interface{}) interface{} { + return func(arg139 interface{}) interface{} { + return coer110(arg139.(m_AwsCryptographyPrimitivesTypes.Error)) + } + }(func(_12_e m_AwsCryptographyPrimitivesTypes.Error) m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Error { + return m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Companion_Error_.Create_AwsCryptographyPrimitives_(_12_e) + })) + if (_11_valueOrError1).IsFailure() { + output = (_11_valueOrError1).PropagateFailure() + return output + } + var _13_cacheDigest _dafny.Sequence + _ = _13_cacheDigest + _13_cacheDigest = (_11_valueOrError1).Extract().(_dafny.Sequence) + var _14_getCacheInput m_AwsCryptographyMaterialProvidersTypes.GetCacheEntryInput + _ = _14_getCacheInput + _14_getCacheInput = m_AwsCryptographyMaterialProvidersTypes.Companion_GetCacheEntryInput_.Create_GetCacheEntryInput_(_13_cacheDigest, m_Wrappers.Companion_Option_.Create_None_()) + var _15_getCacheOutput m_Wrappers.Result + _ = _15_getCacheOutput + var _out1 m_Wrappers.Result + _ = _out1 + _out1 = ((_this).Dtor_cache()).GetCacheEntry(_14_getCacheInput) + _15_getCacheOutput = _out1 + if ((_15_getCacheOutput).Is_Failure()) && (!(((_15_getCacheOutput).Dtor_error().(m_AwsCryptographyMaterialProvidersTypes.Error)).Is_EntryDoesNotExist())) { + output = m_Wrappers.Companion_Result_.Create_Failure_(m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Companion_Error_.Create_AwsCryptographyMaterialProviders_((_15_getCacheOutput).Dtor_error().(m_AwsCryptographyMaterialProvidersTypes.Error))) + return output + } + if ((_15_getCacheOutput).Is_Failure()) || (!((_this).CacheEntryWithinLimits(((_15_getCacheOutput).Dtor_value().(m_AwsCryptographyMaterialProvidersTypes.GetCacheEntryOutput)).Dtor_creationTime(), now, cacheTTL))) { + var _16_maybeRawBeaconKeyMaterials m_Wrappers.Result + _ = _16_maybeRawBeaconKeyMaterials + var _out2 m_Wrappers.Result + _ = _out2 + _out2 = ((_this).Dtor_store()).GetBeaconKey(m_AwsCryptographyKeyStoreTypes.Companion_GetBeaconKeyInput_.Create_GetBeaconKeyInput_(keyId)) + _16_maybeRawBeaconKeyMaterials = _out2 + var _17_valueOrError2 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(m_AwsCryptographyKeyStoreTypes.Companion_GetBeaconKeyOutput_.Default()) + _ = _17_valueOrError2 + _17_valueOrError2 = (_16_maybeRawBeaconKeyMaterials).MapFailure(func(coer111 func(m_AwsCryptographyKeyStoreTypes.Error) m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Error) func(interface{}) interface{} { + return func(arg140 interface{}) interface{} { + return coer111(arg140.(m_AwsCryptographyKeyStoreTypes.Error)) + } + }(func(_18_e m_AwsCryptographyKeyStoreTypes.Error) m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Error { + return m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Companion_Error_.Create_AwsCryptographyKeyStore_(_18_e) + })) + if (_17_valueOrError2).IsFailure() { + output = (_17_valueOrError2).PropagateFailure() + return output + } + var _19_rawBeaconKeyMaterials m_AwsCryptographyKeyStoreTypes.GetBeaconKeyOutput + _ = _19_rawBeaconKeyMaterials + _19_rawBeaconKeyMaterials = (_17_valueOrError2).Extract().(m_AwsCryptographyKeyStoreTypes.GetBeaconKeyOutput) + var _20_key m_Wrappers.Option + _ = _20_key + _20_key = ((_19_rawBeaconKeyMaterials).Dtor_beaconKeyMaterials()).Dtor_beaconKey() + var _21_valueOrError3 m_Wrappers.Outcome = m_Wrappers.Companion_Outcome_.Default() + _ = _21_valueOrError3 + _21_valueOrError3 = m_Wrappers.Companion_Default___.Need((_20_key).Is_Some(), m_DynamoDbEncryptionUtil.Companion_Default___.E(_dafny.SeqOfString("beacon key unexpectedly empty"))) + if (_21_valueOrError3).IsFailure() { + output = (_21_valueOrError3).PropagateFailure() + return output + } + var _22_valueOrError4 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(_dafny.EmptyMap) + _ = _22_valueOrError4 + var _out3 m_Wrappers.Result + _ = _out3 + _out3 = (_this).GetAllKeys(stdNames, (_20_key).Dtor_value().(_dafny.Sequence)) + _22_valueOrError4 = _out3 + if (_22_valueOrError4).IsFailure() { + output = (_22_valueOrError4).PropagateFailure() + return output + } + var _23_keyMap _dafny.Map + _ = _23_keyMap + _23_keyMap = (_22_valueOrError4).Extract().(_dafny.Map) + var _24_beaconKeyMaterials m_AwsCryptographyKeyStoreTypes.BeaconKeyMaterials + _ = _24_beaconKeyMaterials + var _25_dt__update__tmp_h0 m_AwsCryptographyKeyStoreTypes.BeaconKeyMaterials = (_19_rawBeaconKeyMaterials).Dtor_beaconKeyMaterials() + _ = _25_dt__update__tmp_h0 + var _26_dt__update_hhmacKeys_h0 m_Wrappers.Option = m_Wrappers.Companion_Option_.Create_Some_(_23_keyMap) + _ = _26_dt__update_hhmacKeys_h0 + var _27_dt__update_hbeaconKey_h0 m_Wrappers.Option = m_Wrappers.Companion_Option_.Create_None_() + _ = _27_dt__update_hbeaconKey_h0 + _24_beaconKeyMaterials = m_AwsCryptographyKeyStoreTypes.Companion_BeaconKeyMaterials_.Create_BeaconKeyMaterials_((_25_dt__update__tmp_h0).Dtor_beaconKeyIdentifier(), (_25_dt__update__tmp_h0).Dtor_encryptionContext(), _27_dt__update_hbeaconKey_h0, _26_dt__update_hhmacKeys_h0) + var _28_putCacheEntryInput m_AwsCryptographyMaterialProvidersTypes.PutCacheEntryInput + _ = _28_putCacheEntryInput + _28_putCacheEntryInput = m_AwsCryptographyMaterialProvidersTypes.Companion_PutCacheEntryInput_.Create_PutCacheEntryInput_(_13_cacheDigest, m_AwsCryptographyMaterialProvidersTypes.Companion_Materials_.Create_BeaconKey_(_24_beaconKeyMaterials), now, (_this).PosLongAdd(now, cacheTTL), m_Wrappers.Companion_Option_.Create_None_(), m_Wrappers.Companion_Option_.Create_None_()) + var _29_putResult m_Wrappers.Result + _ = _29_putResult + var _out4 m_Wrappers.Result + _ = _out4 + _out4 = ((_this).Dtor_cache()).PutCacheEntry(_28_putCacheEntryInput) + _29_putResult = _out4 + if ((_29_putResult).Is_Failure()) && (!(((_29_putResult).Dtor_error().(m_AwsCryptographyMaterialProvidersTypes.Error)).Is_EntryAlreadyExists())) { + output = m_Wrappers.Companion_Result_.Create_Failure_(m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Companion_Error_.Create_AwsCryptographyMaterialProviders_((_29_putResult).Dtor_error().(m_AwsCryptographyMaterialProvidersTypes.Error))) + return output + } + output = m_Wrappers.Companion_Result_.Create_Success_(_23_keyMap) + return output + } else { + var _30_valueOrError5 m_Wrappers.Outcome = m_Wrappers.Companion_Outcome_.Default() + _ = _30_valueOrError5 + _30_valueOrError5 = m_Wrappers.Companion_Default___.Need(((((((_15_getCacheOutput).Dtor_value().(m_AwsCryptographyMaterialProvidersTypes.GetCacheEntryOutput)).Dtor_materials()).Is_BeaconKey()) && ((((((_15_getCacheOutput).Dtor_value().(m_AwsCryptographyMaterialProvidersTypes.GetCacheEntryOutput)).Dtor_materials()).Dtor_BeaconKey()).Dtor_hmacKeys()).Is_Some())) && (_dafny.Companion_Sequence_.Equal(((((_15_getCacheOutput).Dtor_value().(m_AwsCryptographyMaterialProvidersTypes.GetCacheEntryOutput)).Dtor_materials()).Dtor_BeaconKey()).Dtor_beaconKeyIdentifier(), keyId))) && ((((((_15_getCacheOutput).Dtor_value().(m_AwsCryptographyMaterialProvidersTypes.GetCacheEntryOutput)).Dtor_materials()).Dtor_BeaconKey()).Dtor_hmacKeys()).Is_Some()), m_DynamoDbEncryptionUtil.Companion_Default___.E(_dafny.SeqOfString("Invalid Material Type."))) + if (_30_valueOrError5).IsFailure() { + output = (_30_valueOrError5).PropagateFailure() + return output + } + output = m_Wrappers.Companion_Result_.Create_Success_((((((_15_getCacheOutput).Dtor_value().(m_AwsCryptographyMaterialProvidersTypes.GetCacheEntryOutput)).Dtor_materials()).Dtor_BeaconKey()).Dtor_hmacKeys()).Dtor_value().(_dafny.Map)) + return output + } + return output + } +} +func (_this KeySource) GetAllKeys(stdNames _dafny.Sequence, key _dafny.Sequence) m_Wrappers.Result { + { + var output m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(_dafny.EmptyMap) + _ = output + var _out0 m_Wrappers.Result + _ = _out0 + _out0 = Companion_Default___.GetAllKeys((_this).Dtor_client(), stdNames, key) + output = _out0 + return output + } +} + +// End of datatype KeySource + +// Definition of datatype SearchInfo +type SearchInfo struct { + Data_SearchInfo_ +} + +func (_this SearchInfo) Get_() Data_SearchInfo_ { + return _this.Data_SearchInfo_ +} + +type Data_SearchInfo_ interface { + isSearchInfo() +} + +type CompanionStruct_SearchInfo_ struct { +} + +var Companion_SearchInfo_ = CompanionStruct_SearchInfo_{} + +type SearchInfo_SearchInfo struct { + Versions _dafny.Sequence + CurrWrite _dafny.Int +} + +func (SearchInfo_SearchInfo) isSearchInfo() {} + +func (CompanionStruct_SearchInfo_) Create_SearchInfo_(Versions _dafny.Sequence, CurrWrite _dafny.Int) SearchInfo { + return SearchInfo{SearchInfo_SearchInfo{Versions, CurrWrite}} +} + +func (_this SearchInfo) Is_SearchInfo() bool { + _, ok := _this.Get_().(SearchInfo_SearchInfo) + return ok +} + +func (CompanionStruct_SearchInfo_) Default() SearchInfo { + return Companion_SearchInfo_.Create_SearchInfo_(_dafny.EmptySeq, _dafny.Zero) +} + +func (_this SearchInfo) Dtor_versions() _dafny.Sequence { + return _this.Get_().(SearchInfo_SearchInfo).Versions +} + +func (_this SearchInfo) Dtor_currWrite() _dafny.Int { + return _this.Get_().(SearchInfo_SearchInfo).CurrWrite +} + +func (_this SearchInfo) String() string { + switch data := _this.Get_().(type) { + case nil: + return "null" + case SearchInfo_SearchInfo: + { + return "SearchableEncryptionInfo.SearchInfo.SearchInfo" + "(" + _dafny.String(data.Versions) + ", " + _dafny.String(data.CurrWrite) + ")" + } + default: + { + return "" + } + } +} + +func (_this SearchInfo) Equals(other SearchInfo) bool { + switch data1 := _this.Get_().(type) { + case SearchInfo_SearchInfo: + { + data2, ok := other.Get_().(SearchInfo_SearchInfo) + return ok && data1.Versions.Equals(data2.Versions) && data1.CurrWrite.Cmp(data2.CurrWrite) == 0 + } + default: + { + return false // unexpected + } + } +} + +func (_this SearchInfo) EqualsGeneric(other interface{}) bool { + typed, ok := other.(SearchInfo) + return ok && _this.Equals(typed) +} + +func Type_SearchInfo_() _dafny.TypeDescriptor { + return type_SearchInfo_{} +} + +type type_SearchInfo_ struct { +} + +func (_this type_SearchInfo_) Default() interface{} { + return Companion_SearchInfo_.Default() +} + +func (_this type_SearchInfo_) String() string { + return "SearchableEncryptionInfo.SearchInfo" +} +func (_this SearchInfo) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = SearchInfo{} + +func (_this SearchInfo) Curr() BeaconVersion { + { + return ((_this).Dtor_versions()).Select(((_this).Dtor_currWrite()).Uint32()).(BeaconVersion) + } +} +func (_this SearchInfo) IsBeacon(field _dafny.Sequence) bool { + { + return (((_this).Dtor_versions()).Select(((_this).Dtor_currWrite()).Uint32()).(BeaconVersion)).IsBeacon(field) + } +} +func (_this SearchInfo) IsVirtualField(field _dafny.Sequence) bool { + { + return (((_this).Dtor_versions()).Select(((_this).Dtor_currWrite()).Uint32()).(BeaconVersion)).IsVirtualField(field) + } +} +func (_this SearchInfo) GeneratePlainBeacons(item _dafny.Map) m_Wrappers.Result { + { + var output m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(_dafny.EmptyMap) + _ = output + var _out0 m_Wrappers.Result + _ = _out0 + _out0 = (((_this).Dtor_versions()).Select(((_this).Dtor_currWrite()).Uint32()).(BeaconVersion)).GeneratePlainBeacons(item) + output = _out0 + return output + } +} +func (_this SearchInfo) GenerateSignedBeacons(item _dafny.Map) m_Wrappers.Result { + { + var output m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(_dafny.EmptyMap) + _ = output + var _out0 m_Wrappers.Result + _ = _out0 + _out0 = (((_this).Dtor_versions()).Select(((_this).Dtor_currWrite()).Uint32()).(BeaconVersion)).GenerateSignedBeacons(item) + output = _out0 + return output + } +} +func (_this SearchInfo) GenerateEncryptedBeacons(item _dafny.Map, keyId m_DynamoDbEncryptionUtil.MaybeKeyId) m_Wrappers.Result { + { + var output m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(_dafny.EmptyMap) + _ = output + var _out0 m_Wrappers.Result + _ = _out0 + _out0 = (((_this).Dtor_versions()).Select(((_this).Dtor_currWrite()).Uint32()).(BeaconVersion)).GenerateEncryptedBeacons(item, keyId) + output = _out0 + return output + } +} + +// End of datatype SearchInfo + +// Definition of datatype Beacon +type Beacon struct { + Data_Beacon_ +} + +func (_this Beacon) Get_() Data_Beacon_ { + return _this.Data_Beacon_ +} + +type Data_Beacon_ interface { + isBeacon() +} + +type CompanionStruct_Beacon_ struct { +} + +var Companion_Beacon_ = CompanionStruct_Beacon_{} + +type Beacon_Standard struct { + Std m_BaseBeacon.StandardBeacon +} + +func (Beacon_Standard) isBeacon() {} + +func (CompanionStruct_Beacon_) Create_Standard_(Std m_BaseBeacon.StandardBeacon) Beacon { + return Beacon{Beacon_Standard{Std}} +} + +func (_this Beacon) Is_Standard() bool { + _, ok := _this.Get_().(Beacon_Standard) + return ok +} + +type Beacon_Compound struct { + Cmp m_CompoundBeacon.CompoundBeacon +} + +func (Beacon_Compound) isBeacon() {} + +func (CompanionStruct_Beacon_) Create_Compound_(Cmp m_CompoundBeacon.CompoundBeacon) Beacon { + return Beacon{Beacon_Compound{Cmp}} +} + +func (_this Beacon) Is_Compound() bool { + _, ok := _this.Get_().(Beacon_Compound) + return ok +} + +func (CompanionStruct_Beacon_) Default() Beacon { + return Companion_Beacon_.Create_Standard_(m_BaseBeacon.Companion_StandardBeacon_.Default()) +} + +func (_this Beacon) Dtor_std() m_BaseBeacon.StandardBeacon { + return _this.Get_().(Beacon_Standard).Std +} + +func (_this Beacon) Dtor_cmp() m_CompoundBeacon.CompoundBeacon { + return _this.Get_().(Beacon_Compound).Cmp +} + +func (_this Beacon) String() string { + switch data := _this.Get_().(type) { + case nil: + return "null" + case Beacon_Standard: + { + return "SearchableEncryptionInfo.Beacon.Standard" + "(" + _dafny.String(data.Std) + ")" + } + case Beacon_Compound: + { + return "SearchableEncryptionInfo.Beacon.Compound" + "(" + _dafny.String(data.Cmp) + ")" + } + default: + { + return "" + } + } +} + +func (_this Beacon) Equals(other Beacon) bool { + switch data1 := _this.Get_().(type) { + case Beacon_Standard: + { + data2, ok := other.Get_().(Beacon_Standard) + return ok && data1.Std.Equals(data2.Std) + } + case Beacon_Compound: + { + data2, ok := other.Get_().(Beacon_Compound) + return ok && data1.Cmp.Equals(data2.Cmp) + } + default: + { + return false // unexpected + } + } +} + +func (_this Beacon) EqualsGeneric(other interface{}) bool { + typed, ok := other.(Beacon) + return ok && _this.Equals(typed) +} + +func Type_Beacon_() _dafny.TypeDescriptor { + return type_Beacon_{} +} + +type type_Beacon_ struct { +} + +func (_this type_Beacon_) Default() interface{} { + return Companion_Beacon_.Default() +} + +func (_this type_Beacon_) String() string { + return "SearchableEncryptionInfo.Beacon" +} +func (_this Beacon) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = Beacon{} + +func (_this Beacon) IsEncrypted() bool { + { + if (_this).Is_Standard() { + return true + } else { + return ((_this).Dtor_cmp()).IsEncrypted() + } + } +} +func (_this Beacon) Hash(item _dafny.Map, vf _dafny.Map, keys m_DynamoDbEncryptionUtil.MaybeKeyMap) m_Wrappers.Result { + { + if (_this).Is_Standard() { + var _0_valueOrError0 m_Wrappers.Outcome = m_Wrappers.Companion_Default___.Need((keys).Is_Keys(), m_DynamoDbEncryptionUtil.Companion_Default___.E(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("Need key for beacon "), ((_this).Dtor_std()).KeyName()), _dafny.SeqOfString(" but no keyId found in query.")))) + _ = _0_valueOrError0 + if (_0_valueOrError0).IsFailure() { + return (_0_valueOrError0).PropagateFailure() + } else if ((keys).Dtor_value()).Contains(((_this).Dtor_std()).KeyName()) { + return ((_this).Dtor_std()).GetHash(item, vf, ((keys).Dtor_value()).Get(((_this).Dtor_std()).KeyName()).(_dafny.Sequence)) + } else { + return m_Wrappers.Companion_Result_.Create_Failure_(m_DynamoDbEncryptionUtil.Companion_Default___.E(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("Internal error. Beacon "), ((_this).Dtor_std()).KeyName()), _dafny.SeqOfString(" has no key!")))) + } + } else { + var _1_valueOrError1 m_Wrappers.Result = ((_this).Dtor_cmp()).Hash(item, vf, keys) + _ = _1_valueOrError1 + if (_1_valueOrError1).IsFailure() { + return (_1_valueOrError1).PropagateFailure() + } else { + var _2_strHash m_Wrappers.Option = (_1_valueOrError1).Extract().(m_Wrappers.Option) + _ = _2_strHash + if (_2_strHash).Is_None() { + return m_Wrappers.Companion_Result_.Create_Success_(m_Wrappers.Companion_Option_.Create_None_()) + } else { + return m_Wrappers.Companion_Result_.Create_Success_(m_Wrappers.Companion_Option_.Create_Some_(m_ComAmazonawsDynamodbTypes.Companion_AttributeValue_.Create_S_((_2_strHash).Dtor_value().(_dafny.Sequence)))) + } + } + } + } +} +func (_this Beacon) Naked(item _dafny.Map, vf _dafny.Map) m_Wrappers.Result { + { + if (_this).Is_Standard() { + return ((_this).Dtor_std()).GetNaked(item, vf) + } else { + var _0_valueOrError0 m_Wrappers.Result = ((_this).Dtor_cmp()).GetNaked(item, vf) + _ = _0_valueOrError0 + if (_0_valueOrError0).IsFailure() { + return (_0_valueOrError0).PropagateFailure() + } else { + var _1_str m_Wrappers.Option = (_0_valueOrError0).Extract().(m_Wrappers.Option) + _ = _1_str + if (_1_str).Is_None() { + return m_Wrappers.Companion_Result_.Create_Success_(m_Wrappers.Companion_Option_.Create_None_()) + } else { + return m_Wrappers.Companion_Result_.Create_Success_(m_Wrappers.Companion_Option_.Create_Some_(m_DdbVirtualFields.Companion_Default___.DS((_1_str).Dtor_value().(_dafny.Sequence)))) + } + } + } + } +} +func (_this Beacon) AttrHash(item _dafny.Map, vf _dafny.Map, keys m_DynamoDbEncryptionUtil.MaybeKeyMap) m_Wrappers.Result { + { + if (keys).Is_DontUseKeys() { + return (_this).Naked(item, vf) + } else { + return (_this).Hash(item, vf, keys) + } + } +} +func (_this Beacon) GetName() _dafny.Sequence { + { + if (_this).Is_Standard() { + return (((_this).Dtor_std()).Dtor_base()).Dtor_name() + } else { + return (((_this).Dtor_cmp()).Dtor_base()).Dtor_name() + } + } +} +func (_this Beacon) GetBeaconName() _dafny.Sequence { + { + if (_this).Is_Standard() { + return (((_this).Dtor_std()).Dtor_base()).Dtor_beaconName() + } else { + return (((_this).Dtor_cmp()).Dtor_base()).Dtor_beaconName() + } + } +} +func (_this Beacon) GetFields(virtualFields _dafny.Map) _dafny.Sequence { + { + if (_this).Is_Standard() { + return ((_this).Dtor_std()).GetFields(virtualFields) + } else { + return ((_this).Dtor_cmp()).GetFields(virtualFields) + } + } +} +func (_this Beacon) GetBeaconValue(value m_ComAmazonawsDynamodbTypes.AttributeValue, keys m_DynamoDbEncryptionUtil.MaybeKeyMap, forEquality bool, forContains bool) m_Wrappers.Result { + { + if (keys).Is_DontUseKeys() { + return m_Wrappers.Companion_Result_.Create_Success_(value) + } else if (_this).Is_Standard() { + var _0_valueOrError0 m_Wrappers.Outcome = m_Wrappers.Companion_Default___.Need(!((keys).Is_ShouldHaveKeys()), m_DynamoDbEncryptionUtil.Companion_Default___.E(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("Need KeyId because of beacon "), ((_this).Dtor_std()).KeyName()), _dafny.SeqOfString(" but no KeyId found in query")))) + _ = _0_valueOrError0 + if (_0_valueOrError0).IsFailure() { + return (_0_valueOrError0).PropagateFailure() + } else { + var _1_keys _dafny.Map = (keys).Dtor_value() + _ = _1_keys + if (_1_keys).Contains(((_this).Dtor_std()).KeyName()) { + return ((_this).Dtor_std()).GetBeaconValue(value, (_1_keys).Get(((_this).Dtor_std()).KeyName()).(_dafny.Sequence), forContains) + } else { + return m_Wrappers.Companion_Result_.Create_Failure_(m_DynamoDbEncryptionUtil.Companion_Default___.E(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("Internal error. Beacon "), ((_this).Dtor_std()).KeyName()), _dafny.SeqOfString(" has no key.")))) + } + } + } else { + return ((_this).Dtor_cmp()).GetBeaconValue(value, keys, forEquality) + } + } +} + +// End of datatype Beacon + +// Definition of class BeaconMap +type BeaconMap struct { +} + +func New_BeaconMap_() *BeaconMap { + _this := BeaconMap{} + + return &_this +} + +type CompanionStruct_BeaconMap_ struct { +} + +var Companion_BeaconMap_ = CompanionStruct_BeaconMap_{} + +func (*BeaconMap) String() string { + return "SearchableEncryptionInfo.BeaconMap" +} + +// End of class BeaconMap + +func Type_BeaconMap_() _dafny.TypeDescriptor { + return type_BeaconMap_{} +} + +type type_BeaconMap_ struct { +} + +func (_this type_BeaconMap_) Default() interface{} { + return _dafny.EmptyMap +} + +func (_this type_BeaconMap_) String() string { + return "SearchableEncryptionInfo.BeaconMap" +} + +// Definition of datatype BeaconType +type BeaconType struct { + Data_BeaconType_ +} + +func (_this BeaconType) Get_() Data_BeaconType_ { + return _this.Data_BeaconType_ +} + +type Data_BeaconType_ interface { + isBeaconType() +} + +type CompanionStruct_BeaconType_ struct { +} + +var Companion_BeaconType_ = CompanionStruct_BeaconType_{} + +type BeaconType_AnyBeacon struct { +} + +func (BeaconType_AnyBeacon) isBeaconType() {} + +func (CompanionStruct_BeaconType_) Create_AnyBeacon_() BeaconType { + return BeaconType{BeaconType_AnyBeacon{}} +} + +func (_this BeaconType) Is_AnyBeacon() bool { + _, ok := _this.Get_().(BeaconType_AnyBeacon) + return ok +} + +type BeaconType_SignedBeacon struct { +} + +func (BeaconType_SignedBeacon) isBeaconType() {} + +func (CompanionStruct_BeaconType_) Create_SignedBeacon_() BeaconType { + return BeaconType{BeaconType_SignedBeacon{}} +} + +func (_this BeaconType) Is_SignedBeacon() bool { + _, ok := _this.Get_().(BeaconType_SignedBeacon) + return ok +} + +type BeaconType_EncryptedBeacon struct { +} + +func (BeaconType_EncryptedBeacon) isBeaconType() {} + +func (CompanionStruct_BeaconType_) Create_EncryptedBeacon_() BeaconType { + return BeaconType{BeaconType_EncryptedBeacon{}} +} + +func (_this BeaconType) Is_EncryptedBeacon() bool { + _, ok := _this.Get_().(BeaconType_EncryptedBeacon) + return ok +} + +func (CompanionStruct_BeaconType_) Default() BeaconType { + return Companion_BeaconType_.Create_AnyBeacon_() +} + +func (_ CompanionStruct_BeaconType_) AllSingletonConstructors() _dafny.Iterator { + i := -1 + return func() (interface{}, bool) { + i++ + switch i { + case 0: + return Companion_BeaconType_.Create_AnyBeacon_(), true + case 1: + return Companion_BeaconType_.Create_SignedBeacon_(), true + case 2: + return Companion_BeaconType_.Create_EncryptedBeacon_(), true + default: + return BeaconType{}, false + } + } +} + +func (_this BeaconType) String() string { + switch _this.Get_().(type) { + case nil: + return "null" + case BeaconType_AnyBeacon: + { + return "SearchableEncryptionInfo.BeaconType.AnyBeacon" + } + case BeaconType_SignedBeacon: + { + return "SearchableEncryptionInfo.BeaconType.SignedBeacon" + } + case BeaconType_EncryptedBeacon: + { + return "SearchableEncryptionInfo.BeaconType.EncryptedBeacon" + } + default: + { + return "" + } + } +} + +func (_this BeaconType) Equals(other BeaconType) bool { + switch _this.Get_().(type) { + case BeaconType_AnyBeacon: + { + _, ok := other.Get_().(BeaconType_AnyBeacon) + return ok + } + case BeaconType_SignedBeacon: + { + _, ok := other.Get_().(BeaconType_SignedBeacon) + return ok + } + case BeaconType_EncryptedBeacon: + { + _, ok := other.Get_().(BeaconType_EncryptedBeacon) + return ok + } + default: + { + return false // unexpected + } + } +} + +func (_this BeaconType) EqualsGeneric(other interface{}) bool { + typed, ok := other.(BeaconType) + return ok && _this.Equals(typed) +} + +func Type_BeaconType_() _dafny.TypeDescriptor { + return type_BeaconType_{} +} + +type type_BeaconType_ struct { +} + +func (_this type_BeaconType_) Default() interface{} { + return Companion_BeaconType_.Default() +} + +func (_this type_BeaconType_) String() string { + return "SearchableEncryptionInfo.BeaconType" +} +func (_this BeaconType) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = BeaconType{} + +// End of datatype BeaconType + +// Definition of class ValidBeaconVersion +type ValidBeaconVersion struct { +} + +func New_ValidBeaconVersion_() *ValidBeaconVersion { + _this := ValidBeaconVersion{} + + return &_this +} + +type CompanionStruct_ValidBeaconVersion_ struct { +} + +var Companion_ValidBeaconVersion_ = CompanionStruct_ValidBeaconVersion_{} + +func (*ValidBeaconVersion) String() string { + return "SearchableEncryptionInfo.ValidBeaconVersion" +} + +// End of class ValidBeaconVersion + +func Type_ValidBeaconVersion_() _dafny.TypeDescriptor { + return type_ValidBeaconVersion_{} +} + +type type_ValidBeaconVersion_ struct { +} + +func (_this type_ValidBeaconVersion_) Default() interface{} { + return Companion_BeaconVersion_.Default() +} + +func (_this type_ValidBeaconVersion_) String() string { + return "SearchableEncryptionInfo.ValidBeaconVersion" +} + +// Definition of datatype BeaconVersion +type BeaconVersion struct { + Data_BeaconVersion_ +} + +func (_this BeaconVersion) Get_() Data_BeaconVersion_ { + return _this.Data_BeaconVersion_ +} + +type Data_BeaconVersion_ interface { + isBeaconVersion() +} + +type CompanionStruct_BeaconVersion_ struct { +} + +var Companion_BeaconVersion_ = CompanionStruct_BeaconVersion_{} + +type BeaconVersion_BeaconVersion struct { + Version uint8 + KeySource KeySource + VirtualFields _dafny.Map + Beacons _dafny.Map + BeaconNames _dafny.Sequence + StdNames _dafny.Sequence + EncryptedFields _dafny.Set +} + +func (BeaconVersion_BeaconVersion) isBeaconVersion() {} + +func (CompanionStruct_BeaconVersion_) Create_BeaconVersion_(Version uint8, KeySource KeySource, VirtualFields _dafny.Map, Beacons _dafny.Map, BeaconNames _dafny.Sequence, StdNames _dafny.Sequence, EncryptedFields _dafny.Set) BeaconVersion { + return BeaconVersion{BeaconVersion_BeaconVersion{Version, KeySource, VirtualFields, Beacons, BeaconNames, StdNames, EncryptedFields}} +} + +func (_this BeaconVersion) Is_BeaconVersion() bool { + _, ok := _this.Get_().(BeaconVersion_BeaconVersion) + return ok +} + +func (CompanionStruct_BeaconVersion_) Default() BeaconVersion { + return Companion_BeaconVersion_.Create_BeaconVersion_(Companion_VersionNumber_.Witness(), Companion_KeySource_.Default(), _dafny.EmptyMap, _dafny.EmptyMap, _dafny.EmptySeq, _dafny.EmptySeq, _dafny.EmptySet) +} + +func (_this BeaconVersion) Dtor_version() uint8 { + return _this.Get_().(BeaconVersion_BeaconVersion).Version +} + +func (_this BeaconVersion) Dtor_keySource() KeySource { + return _this.Get_().(BeaconVersion_BeaconVersion).KeySource +} + +func (_this BeaconVersion) Dtor_virtualFields() _dafny.Map { + return _this.Get_().(BeaconVersion_BeaconVersion).VirtualFields +} + +func (_this BeaconVersion) Dtor_beacons() _dafny.Map { + return _this.Get_().(BeaconVersion_BeaconVersion).Beacons +} + +func (_this BeaconVersion) Dtor_beaconNames() _dafny.Sequence { + return _this.Get_().(BeaconVersion_BeaconVersion).BeaconNames +} + +func (_this BeaconVersion) Dtor_stdNames() _dafny.Sequence { + return _this.Get_().(BeaconVersion_BeaconVersion).StdNames +} + +func (_this BeaconVersion) Dtor_encryptedFields() _dafny.Set { + return _this.Get_().(BeaconVersion_BeaconVersion).EncryptedFields +} + +func (_this BeaconVersion) String() string { + switch data := _this.Get_().(type) { + case nil: + return "null" + case BeaconVersion_BeaconVersion: + { + return "SearchableEncryptionInfo.BeaconVersion.BeaconVersion" + "(" + _dafny.String(data.Version) + ", " + _dafny.String(data.KeySource) + ", " + _dafny.String(data.VirtualFields) + ", " + _dafny.String(data.Beacons) + ", " + _dafny.String(data.BeaconNames) + ", " + _dafny.String(data.StdNames) + ", " + _dafny.String(data.EncryptedFields) + ")" + } + default: + { + return "" + } + } +} + +func (_this BeaconVersion) Equals(other BeaconVersion) bool { + switch data1 := _this.Get_().(type) { + case BeaconVersion_BeaconVersion: + { + data2, ok := other.Get_().(BeaconVersion_BeaconVersion) + return ok && data1.Version == data2.Version && data1.KeySource.Equals(data2.KeySource) && data1.VirtualFields.Equals(data2.VirtualFields) && data1.Beacons.Equals(data2.Beacons) && data1.BeaconNames.Equals(data2.BeaconNames) && data1.StdNames.Equals(data2.StdNames) && data1.EncryptedFields.Equals(data2.EncryptedFields) + } + default: + { + return false // unexpected + } + } +} + +func (_this BeaconVersion) EqualsGeneric(other interface{}) bool { + typed, ok := other.(BeaconVersion) + return ok && _this.Equals(typed) +} + +func Type_BeaconVersion_() _dafny.TypeDescriptor { + return type_BeaconVersion_{} +} + +type type_BeaconVersion_ struct { +} + +func (_this type_BeaconVersion_) Default() interface{} { + return Companion_BeaconVersion_.Default() +} + +func (_this type_BeaconVersion_) String() string { + return "SearchableEncryptionInfo.BeaconVersion" +} +func (_this BeaconVersion) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = BeaconVersion{} + +func (_this BeaconVersion) IsBeacon(field _dafny.Sequence) bool { + { + return ((_this).Dtor_beacons()).Contains(field) + } +} +func (_this BeaconVersion) IsVirtualField(field _dafny.Sequence) bool { + { + return ((_this).Dtor_virtualFields()).Contains(field) + } +} +func (_this BeaconVersion) GetFields(field _dafny.Sequence) _dafny.Sequence { + { + if (_this).IsBeacon(field) { + return _dafny.Companion_Sequence_.Concatenate((((_this).Dtor_beacons()).Get(field).(Beacon)).GetFields((_this).Dtor_virtualFields()), _dafny.SeqOf(_dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("aws_dbe_b_"), field))) + } else { + return _dafny.SeqOf(field) + } + } +} +func (_this BeaconVersion) GetKeyMap(keyId m_DynamoDbEncryptionUtil.MaybeKeyId) m_Wrappers.Result { + { + var output m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(m_DynamoDbEncryptionUtil.Companion_MaybeKeyMap_.Default()) + _ = output + var _out0 m_Wrappers.Result + _ = _out0 + _out0 = ((_this).Dtor_keySource()).GetKeyMap((_this).Dtor_stdNames(), keyId) + output = _out0 + return output + } +} +func (_this BeaconVersion) ListSignedBeacons() _dafny.Sequence { + { + return m_Seq.Companion_Default___.Filter(func(coer112 func(_dafny.Sequence) bool) func(interface{}) bool { + return func(arg141 interface{}) bool { + return coer112(arg141.(_dafny.Sequence)) + } + }(func(_0_s _dafny.Sequence) bool { + return Companion_Default___.IsBeaconOfType(((_this).Dtor_beacons()).Get(_0_s).(Beacon), Companion_BeaconType_.Create_SignedBeacon_()) + }), (_this).Dtor_beaconNames()) + } +} +func (_this BeaconVersion) GeneratePlainBeacons(item _dafny.Map) m_Wrappers.Result { + { + var output m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(_dafny.EmptyMap) + _ = output + output = (_this).GenerateBeacons2((_this).Dtor_beaconNames(), item, m_DynamoDbEncryptionUtil.Companion_MaybeKeyMap_.Create_DontUseKeys_(), Companion_BeaconType_.Create_AnyBeacon_(), _dafny.NewMapBuilder().ToMap()) + return output + } +} +func (_this BeaconVersion) GenerateSignedBeacons(item _dafny.Map) m_Wrappers.Result { + { + var output m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(_dafny.EmptyMap) + _ = output + output = (_this).GenerateBeacons2((_this).Dtor_beaconNames(), item, m_DynamoDbEncryptionUtil.Companion_MaybeKeyMap_.Create_DontUseKeys_(), Companion_BeaconType_.Create_SignedBeacon_(), _dafny.NewMapBuilder().ToMap()) + return output + } +} +func (_this BeaconVersion) GenerateEncryptedBeacons(item _dafny.Map, keyId m_DynamoDbEncryptionUtil.MaybeKeyId) m_Wrappers.Result { + { + var output m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(_dafny.EmptyMap) + _ = output + var _0_valueOrError0 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(m_DynamoDbEncryptionUtil.Companion_MaybeKeyMap_.Default()) + _ = _0_valueOrError0 + var _out0 m_Wrappers.Result + _ = _out0 + _out0 = (_this).GetKeyMap(keyId) + _0_valueOrError0 = _out0 + if (_0_valueOrError0).IsFailure() { + output = (_0_valueOrError0).PropagateFailure() + return output + } + var _1_hmacKeys m_DynamoDbEncryptionUtil.MaybeKeyMap + _ = _1_hmacKeys + _1_hmacKeys = (_0_valueOrError0).Extract().(m_DynamoDbEncryptionUtil.MaybeKeyMap) + output = (_this).GenerateBeacons2((_this).Dtor_beaconNames(), item, _1_hmacKeys, Companion_BeaconType_.Create_EncryptedBeacon_(), _dafny.NewMapBuilder().ToMap()) + return output + } +} +func (_this BeaconVersion) GenerateBeacon(name _dafny.Sequence, item _dafny.Map, keys m_DynamoDbEncryptionUtil.MaybeKeyMap) m_Wrappers.Result { + { + return (((_this).Dtor_beacons()).Get(name).(Beacon)).AttrHash(item, (_this).Dtor_virtualFields(), keys) + } +} +func (_this BeaconVersion) GenerateBeacons2(names _dafny.Sequence, item _dafny.Map, keys m_DynamoDbEncryptionUtil.MaybeKeyMap, bType BeaconType, acc _dafny.Map) m_Wrappers.Result { + { + goto TAIL_CALL_START + TAIL_CALL_START: + if (_dafny.IntOfUint32((names).Cardinality())).Sign() == 0 { + return m_Wrappers.Companion_Result_.Create_Success_(acc) + } else if (Companion_Default___.IsBeaconOfType(((_this).Dtor_beacons()).Get((names).Select(0).(_dafny.Sequence)).(Beacon), bType)) && (!(Companion_Default___.IsPartOnly(((_this).Dtor_beacons()).Get((names).Select(0).(_dafny.Sequence)).(Beacon)))) { + var _0_valueOrError0 m_Wrappers.Result = (_this).GenerateBeacon((names).Select(0).(_dafny.Sequence), item, keys) + _ = _0_valueOrError0 + if (_0_valueOrError0).IsFailure() { + return (_0_valueOrError0).PropagateFailure() + } else { + var _1_value m_Wrappers.Option = (_0_valueOrError0).Extract().(m_Wrappers.Option) + _ = _1_value + if (_1_value).Is_Some() { + var _in0 BeaconVersion = _this + _ = _in0 + var _in1 _dafny.Sequence = (names).Drop(1) + _ = _in1 + var _in2 _dafny.Map = item + _ = _in2 + var _in3 m_DynamoDbEncryptionUtil.MaybeKeyMap = keys + _ = _in3 + var _in4 BeaconType = bType + _ = _in4 + var _in5 _dafny.Map = (acc).Update((((_this).Dtor_beacons()).Get((names).Select(0).(_dafny.Sequence)).(Beacon)).GetBeaconName(), (_1_value).Dtor_value().(m_ComAmazonawsDynamodbTypes.AttributeValue)) + _ = _in5 + _this = _in0 + + names = _in1 + item = _in2 + keys = _in3 + bType = _in4 + acc = _in5 + goto TAIL_CALL_START + } else { + var _in6 BeaconVersion = _this + _ = _in6 + var _in7 _dafny.Sequence = (names).Drop(1) + _ = _in7 + var _in8 _dafny.Map = item + _ = _in8 + var _in9 m_DynamoDbEncryptionUtil.MaybeKeyMap = keys + _ = _in9 + var _in10 BeaconType = bType + _ = _in10 + var _in11 _dafny.Map = acc + _ = _in11 + _this = _in6 + + names = _in7 + item = _in8 + keys = _in9 + bType = _in10 + acc = _in11 + goto TAIL_CALL_START + } + } + } else { + var _in12 BeaconVersion = _this + _ = _in12 + var _in13 _dafny.Sequence = (names).Drop(1) + _ = _in13 + var _in14 _dafny.Map = item + _ = _in14 + var _in15 m_DynamoDbEncryptionUtil.MaybeKeyMap = keys + _ = _in15 + var _in16 BeaconType = bType + _ = _in16 + var _in17 _dafny.Map = acc + _ = _in17 + _this = _in12 + + names = _in13 + item = _in14 + keys = _in15 + bType = _in16 + acc = _in17 + goto TAIL_CALL_START + } + } +} + +// End of datatype BeaconVersion diff --git a/releases/go/dynamodb-esdk/Sets/Sets.go b/releases/go/dynamodb-esdk/Sets/Sets.go new file mode 100644 index 000000000..648b33ad7 --- /dev/null +++ b/releases/go/dynamodb-esdk/Sets/Sets.go @@ -0,0 +1,351 @@ +// Package Sets +// Dafny module Sets compiled into Go + +package Sets + +import ( + os "os" + + m_ComAmazonawsDynamodbTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/dynamodb/ComAmazonawsDynamodbTypes" + m_Com_Amazonaws_Dynamodb "github.com/aws/aws-cryptographic-material-providers-library/releases/go/dynamodb/Com_Amazonaws_Dynamodb" + m_ComAmazonawsKmsTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/kms/ComAmazonawsKmsTypes" + m_Com_Amazonaws_Kms "github.com/aws/aws-cryptographic-material-providers-library/releases/go/kms/Com_Amazonaws_Kms" + m_AlgorithmSuites "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AlgorithmSuites" + m_AwsArnParsing "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsArnParsing" + m_AwsCryptographyKeyStoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyKeyStoreOperations" + m_AwsCryptographyKeyStoreTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyKeyStoreTypes" + m_AwsCryptographyMaterialProvidersOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyMaterialProvidersOperations" + m_AwsCryptographyMaterialProvidersTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyMaterialProvidersTypes" + m_AwsKmsDiscoveryKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsDiscoveryKeyring" + m_AwsKmsEcdhKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsEcdhKeyring" + m_AwsKmsHierarchicalKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsHierarchicalKeyring" + m_AwsKmsKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsKeyring" + m_AwsKmsMrkAreUnique "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkAreUnique" + m_AwsKmsMrkDiscoveryKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkDiscoveryKeyring" + m_AwsKmsMrkKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkKeyring" + m_AwsKmsMrkMatchForDecrypt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkMatchForDecrypt" + m_AwsKmsRsaKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsRsaKeyring" + m_AwsKmsUtils "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsUtils" + m_CMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CMM" + m_CacheConstants "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CacheConstants" + m_CanonicalEncryptionContext "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CanonicalEncryptionContext" + m_Commitment "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Commitment" + m_Constants "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Constants" + m_CreateKeyStoreTable "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CreateKeyStoreTable" + m_CreateKeys "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CreateKeys" + m_DDBKeystoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DDBKeystoreOperations" + m_DefaultCMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DefaultCMM" + m_DefaultClientSupplier "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DefaultClientSupplier" + m_Defaults "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Defaults" + m_DiscoveryMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DiscoveryMultiKeyring" + m_EcdhEdkWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/EcdhEdkWrapping" + m_EdkWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/EdkWrapping" + m_ErrorMessages "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/ErrorMessages" + m_GetKeys "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/GetKeys" + m_IntermediateKeyWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/IntermediateKeyWrapping" + m_KMSKeystoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KMSKeystoreOperations" + m_KeyStore "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KeyStore" + m_KeyStoreErrorMessages "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KeyStoreErrorMessages" + m_Keyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Keyring" + m_KmsArn "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KmsArn" + m_LocalCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/LocalCMC" + m_MaterialProviders "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MaterialProviders" + m_MaterialWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MaterialWrapping" + m_Materials "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Materials" + m_MrkAwareDiscoveryMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MrkAwareDiscoveryMultiKeyring" + m_MrkAwareStrictMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MrkAwareStrictMultiKeyring" + m_MultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MultiKeyring" + m_RawAESKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawAESKeyring" + m_RawECDHKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawECDHKeyring" + m_RawRSAKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawRSAKeyring" + m_RequiredEncryptionContextCMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RequiredEncryptionContextCMM" + m_StormTracker "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StormTracker" + m_StormTrackingCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StormTrackingCMC" + m_StrictMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StrictMultiKeyring" + m_Structure "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Structure" + m_SynchronizedLocalCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/SynchronizedLocalCMC" + m_Utils "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Utils" + m_AtomicPrimitives "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AtomicPrimitives" + m_AwsCryptographyPrimitivesOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AwsCryptographyPrimitivesOperations" + m_AwsCryptographyPrimitivesTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AwsCryptographyPrimitivesTypes" + m_Digest "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/Digest" + m_HKDF "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/HKDF" + m_KdfCtr "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/KdfCtr" + m_Random "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/Random" + m_WrappedHKDF "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/WrappedHKDF" + m_WrappedHMAC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/WrappedHMAC" + m_Actions "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Actions" + m_Base64 "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Base64" + m_Base64Lemmas "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Base64Lemmas" + m_BoundedInts "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/BoundedInts" + m_DivInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivInternals" + m_DivInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivInternalsNonlinear" + m_DivMod "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivMod" + m_FileIO "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/FileIO" + m_FloatCompare "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/FloatCompare" + m_Functions "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Functions" + m_GeneralInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/GeneralInternals" + m_GetOpt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/GetOpt" + m_HexStrings "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/HexStrings" + m_Logarithm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Logarithm" + m__Math "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Math_" + m_ModInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/ModInternals" + m_ModInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/ModInternalsNonlinear" + m_Mul "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Mul" + m_MulInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/MulInternals" + m_MulInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/MulInternalsNonlinear" + m_Power "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Power" + m_Relations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Relations" + m_Seq "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Seq" + m_Seq_MergeSort "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Seq_MergeSort" + m_Sorting "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Sorting" + m_StandardLibrary "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary" + m_StandardLibraryInterop "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibraryInterop" + m_StandardLibrary_MemoryMath "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_MemoryMath" + m_StandardLibrary_Sequence "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_Sequence" + m_StandardLibrary_String "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_String" + m_StandardLibrary_UInt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_UInt" + m_Streams "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Streams" + m_UnicodeStrings "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/UnicodeStrings" + m__Unicode "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Unicode_" + m_Utf16EncodingForm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Utf16EncodingForm" + m_Utf8EncodingForm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Utf8EncodingForm" + m_Wrappers "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Wrappers" + m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes" + m_StructuredEncryptionUtil "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionUtil" + m__System "github.com/dafny-lang/DafnyRuntimeGo/v4/System_" + _dafny "github.com/dafny-lang/DafnyRuntimeGo/v4/dafny" +) + +var _ = os.Args +var _ _dafny.Dummy__ +var _ m__System.Dummy__ +var _ m_Wrappers.Dummy__ +var _ m_BoundedInts.Dummy__ +var _ m_StandardLibrary_UInt.Dummy__ +var _ m_StandardLibrary_MemoryMath.Dummy__ +var _ m_StandardLibrary_Sequence.Dummy__ +var _ m_StandardLibrary_String.Dummy__ +var _ m_StandardLibrary.Dummy__ +var _ m_AwsCryptographyPrimitivesTypes.Dummy__ +var _ m_Random.Dummy__ +var _ m_Digest.Dummy__ +var _ m_WrappedHMAC.Dummy__ +var _ m_HKDF.Dummy__ +var _ m_WrappedHKDF.Dummy__ +var _ m_KdfCtr.Dummy__ +var _ m_AwsCryptographyPrimitivesOperations.Dummy__ +var _ m_AtomicPrimitives.Dummy__ +var _ m_ComAmazonawsDynamodbTypes.Dummy__ +var _ m_ComAmazonawsKmsTypes.Dummy__ +var _ m_AwsCryptographyKeyStoreTypes.Dummy__ +var _ m_AwsCryptographyMaterialProvidersTypes.Dummy__ +var _ m_Base64.Dummy__ +var _ m_AlgorithmSuites.Dummy__ +var _ m_Materials.Dummy__ +var _ m_Keyring.Dummy__ +var _ m_Relations.Dummy__ +var _ m_Seq_MergeSort.Dummy__ +var _ m__Math.Dummy__ +var _ m_Seq.Dummy__ +var _ m_Actions.Dummy__ +var _ m_CanonicalEncryptionContext.Dummy__ +var _ m_MaterialWrapping.Dummy__ +var _ m_IntermediateKeyWrapping.Dummy__ +var _ m_EdkWrapping.Dummy__ +var _ m_ErrorMessages.Dummy__ +var _ m_RawAESKeyring.Dummy__ +var _ m_AwsArnParsing.Dummy__ +var _ m_Constants.Dummy__ +var _ m_EcdhEdkWrapping.Dummy__ +var _ m_RawECDHKeyring.Dummy__ +var _ m_RawRSAKeyring.Dummy__ +var _ m_AwsKmsMrkMatchForDecrypt.Dummy__ +var _ m_AwsKmsUtils.Dummy__ +var _ m_AwsKmsKeyring.Dummy__ +var _ m_AwsKmsDiscoveryKeyring.Dummy__ +var _ m_AwsKmsEcdhKeyring.Dummy__ +var _ m_FileIO.Dummy__ +var _ m_LocalCMC.Dummy__ +var _ m_SynchronizedLocalCMC.Dummy__ +var _ m_StormTracker.Dummy__ +var _ m_StormTrackingCMC.Dummy__ +var _ m_CacheConstants.Dummy__ +var _ m_AwsKmsHierarchicalKeyring.Dummy__ +var _ m_AwsKmsMrkDiscoveryKeyring.Dummy__ +var _ m_AwsKmsMrkKeyring.Dummy__ +var _ m_AwsKmsRsaKeyring.Dummy__ +var _ m_MultiKeyring.Dummy__ +var _ m_AwsKmsMrkAreUnique.Dummy__ +var _ m_StrictMultiKeyring.Dummy__ +var _ m_Com_Amazonaws_Kms.Dummy__ +var _ m_Com_Amazonaws_Dynamodb.Dummy__ +var _ m_DiscoveryMultiKeyring.Dummy__ +var _ m_MrkAwareDiscoveryMultiKeyring.Dummy__ +var _ m_MrkAwareStrictMultiKeyring.Dummy__ +var _ m_CMM.Dummy__ +var _ m_Defaults.Dummy__ +var _ m_Commitment.Dummy__ +var _ m_DefaultCMM.Dummy__ +var _ m_DefaultClientSupplier.Dummy__ +var _ m_Utils.Dummy__ +var _ m_RequiredEncryptionContextCMM.Dummy__ +var _ m_AwsCryptographyMaterialProvidersOperations.Dummy__ +var _ m_MaterialProviders.Dummy__ +var _ m_KeyStoreErrorMessages.Dummy__ +var _ m_KmsArn.Dummy__ +var _ m_Structure.Dummy__ +var _ m_KMSKeystoreOperations.Dummy__ +var _ m_DDBKeystoreOperations.Dummy__ +var _ m_CreateKeys.Dummy__ +var _ m_CreateKeyStoreTable.Dummy__ +var _ m_GetKeys.Dummy__ +var _ m_AwsCryptographyKeyStoreOperations.Dummy__ +var _ m_KeyStore.Dummy__ +var _ m__Unicode.Dummy__ +var _ m_Functions.Dummy__ +var _ m_Utf8EncodingForm.Dummy__ +var _ m_Utf16EncodingForm.Dummy__ +var _ m_UnicodeStrings.Dummy__ +var _ m_GeneralInternals.Dummy__ +var _ m_MulInternalsNonlinear.Dummy__ +var _ m_MulInternals.Dummy__ +var _ m_Mul.Dummy__ +var _ m_ModInternalsNonlinear.Dummy__ +var _ m_DivInternalsNonlinear.Dummy__ +var _ m_ModInternals.Dummy__ +var _ m_DivInternals.Dummy__ +var _ m_DivMod.Dummy__ +var _ m_Power.Dummy__ +var _ m_Logarithm.Dummy__ +var _ m_StandardLibraryInterop.Dummy__ +var _ m_Streams.Dummy__ +var _ m_Sorting.Dummy__ +var _ m_HexStrings.Dummy__ +var _ m_GetOpt.Dummy__ +var _ m_FloatCompare.Dummy__ +var _ m_Base64Lemmas.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Dummy__ +var _ m_StructuredEncryptionUtil.Dummy__ + +type Dummy__ struct{} + +// Definition of class Default__ +type Default__ struct { + dummy byte +} + +func New_Default___() *Default__ { + _this := Default__{} + + return &_this +} + +type CompanionStruct_Default___ struct { +} + +var Companion_Default___ = CompanionStruct_Default___{} + +func (_this *Default__) Equals(other *Default__) bool { + return _this == other +} + +func (_this *Default__) EqualsGeneric(x interface{}) bool { + other, ok := x.(*Default__) + return ok && _this.Equals(other) +} + +func (*Default__) String() string { + return "Sets.Default__" +} +func (_this *Default__) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = &Default__{} + +func (_static *CompanionStruct_Default___) ExtractFromSingleton(s _dafny.Set) interface{} { + return func(_let_dummy_0 int) interface{} { + var _0_x interface{} = (interface{})(nil) + _ = _0_x + { + for _iter3 := _dafny.Iterate((s).Elements()); ; { + _assign_such_that_0, _ok3 := _iter3() + if !_ok3 { + break + } + _0_x = interface{}(_assign_such_that_0).(interface{}) + if (s).Contains(_0_x) { + goto L_ASSIGN_SUCH_THAT_0 + } + } + panic("assign-such-that search produced no value") + goto L_ASSIGN_SUCH_THAT_0 + } + L_ASSIGN_SUCH_THAT_0: + return _0_x + }(0) +} +func (_static *CompanionStruct_Default___) Map(xs _dafny.Set, f func(interface{}) interface{}) _dafny.Set { + var _0_ys _dafny.Set = func() _dafny.Set { + var _coll0 = _dafny.NewBuilder() + _ = _coll0 + for _iter4 := _dafny.Iterate((xs).Elements()); ; { + _compr_0, _ok4 := _iter4() + if !_ok4 { + break + } + var _1_x interface{} + _1_x = interface{}(_compr_0).(interface{}) + if (xs).Contains(_1_x) { + _coll0.Add((f)(_1_x)) + } + } + return _coll0.ToSet() + }() + _ = _0_ys + return _0_ys +} +func (_static *CompanionStruct_Default___) Filter(xs _dafny.Set, f func(interface{}) bool) _dafny.Set { + var _0_ys _dafny.Set = func() _dafny.Set { + var _coll0 = _dafny.NewBuilder() + _ = _coll0 + for _iter5 := _dafny.Iterate((xs).Elements()); ; { + _compr_0, _ok5 := _iter5() + if !_ok5 { + break + } + var _1_x interface{} + _1_x = interface{}(_compr_0).(interface{}) + if ((xs).Contains(_1_x)) && ((f)(_1_x)) { + _coll0.Add(_1_x) + } + } + return _coll0.ToSet() + }() + _ = _0_ys + return _0_ys +} +func (_static *CompanionStruct_Default___) SetRange(a _dafny.Int, b _dafny.Int) _dafny.Set { + var _0___accumulator _dafny.Set = _dafny.SetOf() + _ = _0___accumulator + goto TAIL_CALL_START +TAIL_CALL_START: + if (a).Cmp(b) == 0 { + return (_dafny.SetOf()).Union(_0___accumulator) + } else { + _0___accumulator = (_0___accumulator).Union(_dafny.SetOf(a)) + var _in0 _dafny.Int = (a).Plus(_dafny.One) + _ = _in0 + var _in1 _dafny.Int = b + _ = _in1 + a = _in0 + b = _in1 + goto TAIL_CALL_START + } +} +func (_static *CompanionStruct_Default___) SetRangeZeroBound(n _dafny.Int) _dafny.Set { + return Companion_Default___.SetRange(_dafny.Zero, n) +} + +// End of class Default__ diff --git a/releases/go/dynamodb-esdk/SortCanon/SortCanon.go b/releases/go/dynamodb-esdk/SortCanon/SortCanon.go new file mode 100644 index 000000000..a6c7e4cc8 --- /dev/null +++ b/releases/go/dynamodb-esdk/SortCanon/SortCanon.go @@ -0,0 +1,347 @@ +// Package SortCanon +// Dafny module SortCanon compiled into Go + +package SortCanon + +import ( + os "os" + + m_ComAmazonawsDynamodbTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/dynamodb/ComAmazonawsDynamodbTypes" + m_Com_Amazonaws_Dynamodb "github.com/aws/aws-cryptographic-material-providers-library/releases/go/dynamodb/Com_Amazonaws_Dynamodb" + m_ComAmazonawsKmsTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/kms/ComAmazonawsKmsTypes" + m_Com_Amazonaws_Kms "github.com/aws/aws-cryptographic-material-providers-library/releases/go/kms/Com_Amazonaws_Kms" + m_AlgorithmSuites "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AlgorithmSuites" + m_AwsArnParsing "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsArnParsing" + m_AwsCryptographyKeyStoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyKeyStoreOperations" + m_AwsCryptographyKeyStoreTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyKeyStoreTypes" + m_AwsCryptographyMaterialProvidersOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyMaterialProvidersOperations" + m_AwsCryptographyMaterialProvidersTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyMaterialProvidersTypes" + m_AwsKmsDiscoveryKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsDiscoveryKeyring" + m_AwsKmsEcdhKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsEcdhKeyring" + m_AwsKmsHierarchicalKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsHierarchicalKeyring" + m_AwsKmsKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsKeyring" + m_AwsKmsMrkAreUnique "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkAreUnique" + m_AwsKmsMrkDiscoveryKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkDiscoveryKeyring" + m_AwsKmsMrkKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkKeyring" + m_AwsKmsMrkMatchForDecrypt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkMatchForDecrypt" + m_AwsKmsRsaKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsRsaKeyring" + m_AwsKmsUtils "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsUtils" + m_CMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CMM" + m_CacheConstants "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CacheConstants" + m_CanonicalEncryptionContext "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CanonicalEncryptionContext" + m_Commitment "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Commitment" + m_Constants "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Constants" + m_CreateKeyStoreTable "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CreateKeyStoreTable" + m_CreateKeys "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CreateKeys" + m_DDBKeystoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DDBKeystoreOperations" + m_DefaultCMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DefaultCMM" + m_DefaultClientSupplier "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DefaultClientSupplier" + m_Defaults "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Defaults" + m_DiscoveryMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DiscoveryMultiKeyring" + m_EcdhEdkWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/EcdhEdkWrapping" + m_EdkWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/EdkWrapping" + m_ErrorMessages "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/ErrorMessages" + m_GetKeys "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/GetKeys" + m_IntermediateKeyWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/IntermediateKeyWrapping" + m_KMSKeystoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KMSKeystoreOperations" + m_KeyStore "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KeyStore" + m_KeyStoreErrorMessages "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KeyStoreErrorMessages" + m_Keyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Keyring" + m_KmsArn "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KmsArn" + m_LocalCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/LocalCMC" + m_MaterialProviders "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MaterialProviders" + m_MaterialWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MaterialWrapping" + m_Materials "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Materials" + m_MrkAwareDiscoveryMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MrkAwareDiscoveryMultiKeyring" + m_MrkAwareStrictMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MrkAwareStrictMultiKeyring" + m_MultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MultiKeyring" + m_RawAESKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawAESKeyring" + m_RawECDHKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawECDHKeyring" + m_RawRSAKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawRSAKeyring" + m_RequiredEncryptionContextCMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RequiredEncryptionContextCMM" + m_StormTracker "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StormTracker" + m_StormTrackingCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StormTrackingCMC" + m_StrictMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StrictMultiKeyring" + m_Structure "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Structure" + m_SynchronizedLocalCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/SynchronizedLocalCMC" + m_Utils "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Utils" + m_AtomicPrimitives "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AtomicPrimitives" + m_AwsCryptographyPrimitivesOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AwsCryptographyPrimitivesOperations" + m_AwsCryptographyPrimitivesTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AwsCryptographyPrimitivesTypes" + m_Digest "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/Digest" + m_HKDF "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/HKDF" + m_KdfCtr "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/KdfCtr" + m_Random "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/Random" + m_WrappedHKDF "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/WrappedHKDF" + m_WrappedHMAC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/WrappedHMAC" + m_Actions "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Actions" + m_Base64 "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Base64" + m_Base64Lemmas "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Base64Lemmas" + m_BoundedInts "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/BoundedInts" + m_DivInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivInternals" + m_DivInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivInternalsNonlinear" + m_DivMod "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivMod" + m_FileIO "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/FileIO" + m_FloatCompare "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/FloatCompare" + m_Functions "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Functions" + m_GeneralInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/GeneralInternals" + m_GetOpt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/GetOpt" + m_HexStrings "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/HexStrings" + m_Logarithm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Logarithm" + m__Math "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Math_" + m_ModInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/ModInternals" + m_ModInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/ModInternalsNonlinear" + m_Mul "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Mul" + m_MulInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/MulInternals" + m_MulInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/MulInternalsNonlinear" + m_Power "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Power" + m_Relations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Relations" + m_Seq "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Seq" + m_Seq_MergeSort "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Seq_MergeSort" + m_Sorting "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Sorting" + m_StandardLibrary "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary" + m_StandardLibraryInterop "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibraryInterop" + m_StandardLibrary_MemoryMath "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_MemoryMath" + m_StandardLibrary_Sequence "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_Sequence" + m_StandardLibrary_String "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_String" + m_StandardLibrary_UInt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_UInt" + m_Streams "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Streams" + m_UnicodeStrings "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/UnicodeStrings" + m__Unicode "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Unicode_" + m_Utf16EncodingForm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Utf16EncodingForm" + m_Utf8EncodingForm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Utf8EncodingForm" + m_Wrappers "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Wrappers" + m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes" + m_OptimizedMergeSort "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/OptimizedMergeSort" + m_Sets "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/Sets" + m_StructuredEncryptionFooter "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionFooter" + m_StructuredEncryptionHeader "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionHeader" + m_StructuredEncryptionPaths "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionPaths" + m_StructuredEncryptionUtil "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionUtil" + m__System "github.com/dafny-lang/DafnyRuntimeGo/v4/System_" + _dafny "github.com/dafny-lang/DafnyRuntimeGo/v4/dafny" +) + +var _ = os.Args +var _ _dafny.Dummy__ +var _ m__System.Dummy__ +var _ m_Wrappers.Dummy__ +var _ m_BoundedInts.Dummy__ +var _ m_StandardLibrary_UInt.Dummy__ +var _ m_StandardLibrary_MemoryMath.Dummy__ +var _ m_StandardLibrary_Sequence.Dummy__ +var _ m_StandardLibrary_String.Dummy__ +var _ m_StandardLibrary.Dummy__ +var _ m_AwsCryptographyPrimitivesTypes.Dummy__ +var _ m_Random.Dummy__ +var _ m_Digest.Dummy__ +var _ m_WrappedHMAC.Dummy__ +var _ m_HKDF.Dummy__ +var _ m_WrappedHKDF.Dummy__ +var _ m_KdfCtr.Dummy__ +var _ m_AwsCryptographyPrimitivesOperations.Dummy__ +var _ m_AtomicPrimitives.Dummy__ +var _ m_ComAmazonawsDynamodbTypes.Dummy__ +var _ m_ComAmazonawsKmsTypes.Dummy__ +var _ m_AwsCryptographyKeyStoreTypes.Dummy__ +var _ m_AwsCryptographyMaterialProvidersTypes.Dummy__ +var _ m_Base64.Dummy__ +var _ m_AlgorithmSuites.Dummy__ +var _ m_Materials.Dummy__ +var _ m_Keyring.Dummy__ +var _ m_Relations.Dummy__ +var _ m_Seq_MergeSort.Dummy__ +var _ m__Math.Dummy__ +var _ m_Seq.Dummy__ +var _ m_Actions.Dummy__ +var _ m_CanonicalEncryptionContext.Dummy__ +var _ m_MaterialWrapping.Dummy__ +var _ m_IntermediateKeyWrapping.Dummy__ +var _ m_EdkWrapping.Dummy__ +var _ m_ErrorMessages.Dummy__ +var _ m_RawAESKeyring.Dummy__ +var _ m_AwsArnParsing.Dummy__ +var _ m_Constants.Dummy__ +var _ m_EcdhEdkWrapping.Dummy__ +var _ m_RawECDHKeyring.Dummy__ +var _ m_RawRSAKeyring.Dummy__ +var _ m_AwsKmsMrkMatchForDecrypt.Dummy__ +var _ m_AwsKmsUtils.Dummy__ +var _ m_AwsKmsKeyring.Dummy__ +var _ m_AwsKmsDiscoveryKeyring.Dummy__ +var _ m_AwsKmsEcdhKeyring.Dummy__ +var _ m_FileIO.Dummy__ +var _ m_LocalCMC.Dummy__ +var _ m_SynchronizedLocalCMC.Dummy__ +var _ m_StormTracker.Dummy__ +var _ m_StormTrackingCMC.Dummy__ +var _ m_CacheConstants.Dummy__ +var _ m_AwsKmsHierarchicalKeyring.Dummy__ +var _ m_AwsKmsMrkDiscoveryKeyring.Dummy__ +var _ m_AwsKmsMrkKeyring.Dummy__ +var _ m_AwsKmsRsaKeyring.Dummy__ +var _ m_MultiKeyring.Dummy__ +var _ m_AwsKmsMrkAreUnique.Dummy__ +var _ m_StrictMultiKeyring.Dummy__ +var _ m_Com_Amazonaws_Kms.Dummy__ +var _ m_Com_Amazonaws_Dynamodb.Dummy__ +var _ m_DiscoveryMultiKeyring.Dummy__ +var _ m_MrkAwareDiscoveryMultiKeyring.Dummy__ +var _ m_MrkAwareStrictMultiKeyring.Dummy__ +var _ m_CMM.Dummy__ +var _ m_Defaults.Dummy__ +var _ m_Commitment.Dummy__ +var _ m_DefaultCMM.Dummy__ +var _ m_DefaultClientSupplier.Dummy__ +var _ m_Utils.Dummy__ +var _ m_RequiredEncryptionContextCMM.Dummy__ +var _ m_AwsCryptographyMaterialProvidersOperations.Dummy__ +var _ m_MaterialProviders.Dummy__ +var _ m_KeyStoreErrorMessages.Dummy__ +var _ m_KmsArn.Dummy__ +var _ m_Structure.Dummy__ +var _ m_KMSKeystoreOperations.Dummy__ +var _ m_DDBKeystoreOperations.Dummy__ +var _ m_CreateKeys.Dummy__ +var _ m_CreateKeyStoreTable.Dummy__ +var _ m_GetKeys.Dummy__ +var _ m_AwsCryptographyKeyStoreOperations.Dummy__ +var _ m_KeyStore.Dummy__ +var _ m__Unicode.Dummy__ +var _ m_Functions.Dummy__ +var _ m_Utf8EncodingForm.Dummy__ +var _ m_Utf16EncodingForm.Dummy__ +var _ m_UnicodeStrings.Dummy__ +var _ m_GeneralInternals.Dummy__ +var _ m_MulInternalsNonlinear.Dummy__ +var _ m_MulInternals.Dummy__ +var _ m_Mul.Dummy__ +var _ m_ModInternalsNonlinear.Dummy__ +var _ m_DivInternalsNonlinear.Dummy__ +var _ m_ModInternals.Dummy__ +var _ m_DivInternals.Dummy__ +var _ m_DivMod.Dummy__ +var _ m_Power.Dummy__ +var _ m_Logarithm.Dummy__ +var _ m_StandardLibraryInterop.Dummy__ +var _ m_Streams.Dummy__ +var _ m_Sorting.Dummy__ +var _ m_HexStrings.Dummy__ +var _ m_GetOpt.Dummy__ +var _ m_FloatCompare.Dummy__ +var _ m_Base64Lemmas.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Dummy__ +var _ m_StructuredEncryptionUtil.Dummy__ +var _ m_Sets.Dummy__ +var _ m_StructuredEncryptionPaths.Dummy__ +var _ m_StructuredEncryptionHeader.Dummy__ +var _ m_StructuredEncryptionFooter.Dummy__ +var _ m_OptimizedMergeSort.Dummy__ + +type Dummy__ struct{} + +// Definition of class Default__ +type Default__ struct { + dummy byte +} + +func New_Default___() *Default__ { + _this := Default__{} + + return &_this +} + +type CompanionStruct_Default___ struct { +} + +var Companion_Default___ = CompanionStruct_Default___{} + +func (_this *Default__) Equals(other *Default__) bool { + return _this == other +} + +func (_this *Default__) EqualsGeneric(x interface{}) bool { + other, ok := x.(*Default__) + return ok && _this.Equals(other) +} + +func (*Default__) String() string { + return "SortCanon.Default__" +} +func (_this *Default__) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = &Default__{} + +func (_static *CompanionStruct_Default___) AuthBelow(x m_StructuredEncryptionUtil.CanonAuthItem, y m_StructuredEncryptionUtil.CanonAuthItem) bool { + return Companion_Default___.Below((x).Dtor_key(), (y).Dtor_key()) +} +func (_static *CompanionStruct_Default___) CryptoBelow(x m_StructuredEncryptionUtil.CanonCryptoItem, y m_StructuredEncryptionUtil.CanonCryptoItem) bool { + return Companion_Default___.Below((x).Dtor_key(), (y).Dtor_key()) +} +func (_static *CompanionStruct_Default___) Below(x _dafny.Sequence, y _dafny.Sequence) bool { + var _hresult bool = false + _ = _hresult + _hresult = Companion_Default___.BoundedBelow(x, y) + return _hresult + return _hresult +} +func (_static *CompanionStruct_Default___) BoundedBelow(x _dafny.Sequence, y _dafny.Sequence) bool { + var _hresult bool = false + _ = _hresult + var _0_xLength uint64 + _ = _0_xLength + _0_xLength = uint64((x).Cardinality()) + var _1_yLength uint64 + _ = _1_yLength + _1_yLength = uint64((y).Cardinality()) + if (_0_xLength) == (uint64(0)) { + _hresult = true + return _hresult + } + if (_1_yLength) == (uint64(0)) { + _hresult = false + return _hresult + } + var _hi0 uint64 = _0_xLength + _ = _hi0 + for _2_i := uint64(0); _2_i < _hi0; _2_i++ { + if (_1_yLength) <= (_2_i) { + _hresult = false + return _hresult + } else if ((y).Select(uint32(_2_i)).(uint8)) < ((x).Select(uint32(_2_i)).(uint8)) { + _hresult = false + return _hresult + } else if ((x).Select(uint32(_2_i)).(uint8)) < ((y).Select(uint32(_2_i)).(uint8)) { + _hresult = true + return _hresult + } else { + } + } + _hresult = true + return _hresult + return _hresult +} +func (_static *CompanionStruct_Default___) AuthSort(x _dafny.Sequence) _dafny.Sequence { + var result _dafny.Sequence = _dafny.EmptySeq + _ = result + result = m_OptimizedMergeSort.Companion_Default___.MergeSortNat(x, func(coer14 func(m_StructuredEncryptionUtil.CanonAuthItem, m_StructuredEncryptionUtil.CanonAuthItem) bool) func(interface{}, interface{}) bool { + return func(arg21 interface{}, arg22 interface{}) bool { + return coer14(arg21.(m_StructuredEncryptionUtil.CanonAuthItem), arg22.(m_StructuredEncryptionUtil.CanonAuthItem)) + } + }(Companion_Default___.AuthBelow)) + return result +} +func (_static *CompanionStruct_Default___) CryptoSort(x _dafny.Sequence) _dafny.Sequence { + var result _dafny.Sequence = _dafny.EmptySeq + _ = result + result = m_OptimizedMergeSort.Companion_Default___.MergeSortNat(x, func(coer15 func(m_StructuredEncryptionUtil.CanonCryptoItem, m_StructuredEncryptionUtil.CanonCryptoItem) bool) func(interface{}, interface{}) bool { + return func(arg23 interface{}, arg24 interface{}) bool { + return coer15(arg23.(m_StructuredEncryptionUtil.CanonCryptoItem), arg24.(m_StructuredEncryptionUtil.CanonCryptoItem)) + } + }(Companion_Default___.CryptoBelow)) + return result +} + +// End of class Default__ diff --git a/releases/go/dynamodb-esdk/StructuredEncryption/StructuredEncryption.go b/releases/go/dynamodb-esdk/StructuredEncryption/StructuredEncryption.go new file mode 100644 index 000000000..bd1681311 --- /dev/null +++ b/releases/go/dynamodb-esdk/StructuredEncryption/StructuredEncryption.go @@ -0,0 +1,473 @@ +// Package StructuredEncryption +// Dafny module StructuredEncryption compiled into Go + +package StructuredEncryption + +import ( + os "os" + + m_ComAmazonawsDynamodbTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/dynamodb/ComAmazonawsDynamodbTypes" + m_Com_Amazonaws_Dynamodb "github.com/aws/aws-cryptographic-material-providers-library/releases/go/dynamodb/Com_Amazonaws_Dynamodb" + m_ComAmazonawsKmsTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/kms/ComAmazonawsKmsTypes" + m_Com_Amazonaws_Kms "github.com/aws/aws-cryptographic-material-providers-library/releases/go/kms/Com_Amazonaws_Kms" + m_AlgorithmSuites "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AlgorithmSuites" + m_AwsArnParsing "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsArnParsing" + m_AwsCryptographyKeyStoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyKeyStoreOperations" + m_AwsCryptographyKeyStoreTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyKeyStoreTypes" + m_AwsCryptographyMaterialProvidersOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyMaterialProvidersOperations" + m_AwsCryptographyMaterialProvidersTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyMaterialProvidersTypes" + m_AwsKmsDiscoveryKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsDiscoveryKeyring" + m_AwsKmsEcdhKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsEcdhKeyring" + m_AwsKmsHierarchicalKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsHierarchicalKeyring" + m_AwsKmsKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsKeyring" + m_AwsKmsMrkAreUnique "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkAreUnique" + m_AwsKmsMrkDiscoveryKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkDiscoveryKeyring" + m_AwsKmsMrkKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkKeyring" + m_AwsKmsMrkMatchForDecrypt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkMatchForDecrypt" + m_AwsKmsRsaKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsRsaKeyring" + m_AwsKmsUtils "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsUtils" + m_CMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CMM" + m_CacheConstants "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CacheConstants" + m_CanonicalEncryptionContext "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CanonicalEncryptionContext" + m_Commitment "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Commitment" + m_Constants "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Constants" + m_CreateKeyStoreTable "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CreateKeyStoreTable" + m_CreateKeys "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CreateKeys" + m_DDBKeystoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DDBKeystoreOperations" + m_DefaultCMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DefaultCMM" + m_DefaultClientSupplier "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DefaultClientSupplier" + m_Defaults "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Defaults" + m_DiscoveryMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DiscoveryMultiKeyring" + m_EcdhEdkWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/EcdhEdkWrapping" + m_EdkWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/EdkWrapping" + m_ErrorMessages "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/ErrorMessages" + m_GetKeys "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/GetKeys" + m_IntermediateKeyWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/IntermediateKeyWrapping" + m_KMSKeystoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KMSKeystoreOperations" + m_KeyStore "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KeyStore" + m_KeyStoreErrorMessages "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KeyStoreErrorMessages" + m_Keyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Keyring" + m_KmsArn "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KmsArn" + m_LocalCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/LocalCMC" + m_MaterialProviders "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MaterialProviders" + m_MaterialWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MaterialWrapping" + m_Materials "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Materials" + m_MrkAwareDiscoveryMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MrkAwareDiscoveryMultiKeyring" + m_MrkAwareStrictMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MrkAwareStrictMultiKeyring" + m_MultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MultiKeyring" + m_RawAESKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawAESKeyring" + m_RawECDHKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawECDHKeyring" + m_RawRSAKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawRSAKeyring" + m_RequiredEncryptionContextCMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RequiredEncryptionContextCMM" + m_StormTracker "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StormTracker" + m_StormTrackingCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StormTrackingCMC" + m_StrictMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StrictMultiKeyring" + m_Structure "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Structure" + m_SynchronizedLocalCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/SynchronizedLocalCMC" + m_Utils "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Utils" + m_AtomicPrimitives "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AtomicPrimitives" + m_AwsCryptographyPrimitivesOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AwsCryptographyPrimitivesOperations" + m_AwsCryptographyPrimitivesTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AwsCryptographyPrimitivesTypes" + m_Digest "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/Digest" + m_HKDF "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/HKDF" + m_KdfCtr "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/KdfCtr" + m_Random "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/Random" + m_WrappedHKDF "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/WrappedHKDF" + m_WrappedHMAC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/WrappedHMAC" + m_Actions "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Actions" + m_Base64 "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Base64" + m_Base64Lemmas "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Base64Lemmas" + m_BoundedInts "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/BoundedInts" + m_DivInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivInternals" + m_DivInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivInternalsNonlinear" + m_DivMod "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivMod" + m_FileIO "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/FileIO" + m_FloatCompare "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/FloatCompare" + m_Functions "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Functions" + m_GeneralInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/GeneralInternals" + m_GetOpt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/GetOpt" + m_HexStrings "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/HexStrings" + m_Logarithm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Logarithm" + m__Math "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Math_" + m_ModInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/ModInternals" + m_ModInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/ModInternalsNonlinear" + m_Mul "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Mul" + m_MulInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/MulInternals" + m_MulInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/MulInternalsNonlinear" + m_Power "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Power" + m_Relations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Relations" + m_Seq "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Seq" + m_Seq_MergeSort "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Seq_MergeSort" + m_Sorting "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Sorting" + m_StandardLibrary "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary" + m_StandardLibraryInterop "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibraryInterop" + m_StandardLibrary_MemoryMath "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_MemoryMath" + m_StandardLibrary_Sequence "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_Sequence" + m_StandardLibrary_String "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_String" + m_StandardLibrary_UInt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_UInt" + m_Streams "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Streams" + m_UnicodeStrings "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/UnicodeStrings" + m__Unicode "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Unicode_" + m_Utf16EncodingForm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Utf16EncodingForm" + m_Utf8EncodingForm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Utf8EncodingForm" + m_Wrappers "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Wrappers" + m_AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations" + m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes" + m_Canonize "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/Canonize" + m__Maps "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/Maps_" + m_OptimizedMergeSort "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/OptimizedMergeSort" + m_Sets "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/Sets" + m_SortCanon "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/SortCanon" + m_StructuredEncryptionCrypt "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionCrypt" + m_StructuredEncryptionFooter "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionFooter" + m_StructuredEncryptionHeader "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionHeader" + m_StructuredEncryptionPaths "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionPaths" + m_StructuredEncryptionUtil "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionUtil" + m__System "github.com/dafny-lang/DafnyRuntimeGo/v4/System_" + _dafny "github.com/dafny-lang/DafnyRuntimeGo/v4/dafny" +) + +var _ = os.Args +var _ _dafny.Dummy__ +var _ m__System.Dummy__ +var _ m_Wrappers.Dummy__ +var _ m_BoundedInts.Dummy__ +var _ m_StandardLibrary_UInt.Dummy__ +var _ m_StandardLibrary_MemoryMath.Dummy__ +var _ m_StandardLibrary_Sequence.Dummy__ +var _ m_StandardLibrary_String.Dummy__ +var _ m_StandardLibrary.Dummy__ +var _ m_AwsCryptographyPrimitivesTypes.Dummy__ +var _ m_Random.Dummy__ +var _ m_Digest.Dummy__ +var _ m_WrappedHMAC.Dummy__ +var _ m_HKDF.Dummy__ +var _ m_WrappedHKDF.Dummy__ +var _ m_KdfCtr.Dummy__ +var _ m_AwsCryptographyPrimitivesOperations.Dummy__ +var _ m_AtomicPrimitives.Dummy__ +var _ m_ComAmazonawsDynamodbTypes.Dummy__ +var _ m_ComAmazonawsKmsTypes.Dummy__ +var _ m_AwsCryptographyKeyStoreTypes.Dummy__ +var _ m_AwsCryptographyMaterialProvidersTypes.Dummy__ +var _ m_Base64.Dummy__ +var _ m_AlgorithmSuites.Dummy__ +var _ m_Materials.Dummy__ +var _ m_Keyring.Dummy__ +var _ m_Relations.Dummy__ +var _ m_Seq_MergeSort.Dummy__ +var _ m__Math.Dummy__ +var _ m_Seq.Dummy__ +var _ m_Actions.Dummy__ +var _ m_CanonicalEncryptionContext.Dummy__ +var _ m_MaterialWrapping.Dummy__ +var _ m_IntermediateKeyWrapping.Dummy__ +var _ m_EdkWrapping.Dummy__ +var _ m_ErrorMessages.Dummy__ +var _ m_RawAESKeyring.Dummy__ +var _ m_AwsArnParsing.Dummy__ +var _ m_Constants.Dummy__ +var _ m_EcdhEdkWrapping.Dummy__ +var _ m_RawECDHKeyring.Dummy__ +var _ m_RawRSAKeyring.Dummy__ +var _ m_AwsKmsMrkMatchForDecrypt.Dummy__ +var _ m_AwsKmsUtils.Dummy__ +var _ m_AwsKmsKeyring.Dummy__ +var _ m_AwsKmsDiscoveryKeyring.Dummy__ +var _ m_AwsKmsEcdhKeyring.Dummy__ +var _ m_FileIO.Dummy__ +var _ m_LocalCMC.Dummy__ +var _ m_SynchronizedLocalCMC.Dummy__ +var _ m_StormTracker.Dummy__ +var _ m_StormTrackingCMC.Dummy__ +var _ m_CacheConstants.Dummy__ +var _ m_AwsKmsHierarchicalKeyring.Dummy__ +var _ m_AwsKmsMrkDiscoveryKeyring.Dummy__ +var _ m_AwsKmsMrkKeyring.Dummy__ +var _ m_AwsKmsRsaKeyring.Dummy__ +var _ m_MultiKeyring.Dummy__ +var _ m_AwsKmsMrkAreUnique.Dummy__ +var _ m_StrictMultiKeyring.Dummy__ +var _ m_Com_Amazonaws_Kms.Dummy__ +var _ m_Com_Amazonaws_Dynamodb.Dummy__ +var _ m_DiscoveryMultiKeyring.Dummy__ +var _ m_MrkAwareDiscoveryMultiKeyring.Dummy__ +var _ m_MrkAwareStrictMultiKeyring.Dummy__ +var _ m_CMM.Dummy__ +var _ m_Defaults.Dummy__ +var _ m_Commitment.Dummy__ +var _ m_DefaultCMM.Dummy__ +var _ m_DefaultClientSupplier.Dummy__ +var _ m_Utils.Dummy__ +var _ m_RequiredEncryptionContextCMM.Dummy__ +var _ m_AwsCryptographyMaterialProvidersOperations.Dummy__ +var _ m_MaterialProviders.Dummy__ +var _ m_KeyStoreErrorMessages.Dummy__ +var _ m_KmsArn.Dummy__ +var _ m_Structure.Dummy__ +var _ m_KMSKeystoreOperations.Dummy__ +var _ m_DDBKeystoreOperations.Dummy__ +var _ m_CreateKeys.Dummy__ +var _ m_CreateKeyStoreTable.Dummy__ +var _ m_GetKeys.Dummy__ +var _ m_AwsCryptographyKeyStoreOperations.Dummy__ +var _ m_KeyStore.Dummy__ +var _ m__Unicode.Dummy__ +var _ m_Functions.Dummy__ +var _ m_Utf8EncodingForm.Dummy__ +var _ m_Utf16EncodingForm.Dummy__ +var _ m_UnicodeStrings.Dummy__ +var _ m_GeneralInternals.Dummy__ +var _ m_MulInternalsNonlinear.Dummy__ +var _ m_MulInternals.Dummy__ +var _ m_Mul.Dummy__ +var _ m_ModInternalsNonlinear.Dummy__ +var _ m_DivInternalsNonlinear.Dummy__ +var _ m_ModInternals.Dummy__ +var _ m_DivInternals.Dummy__ +var _ m_DivMod.Dummy__ +var _ m_Power.Dummy__ +var _ m_Logarithm.Dummy__ +var _ m_StandardLibraryInterop.Dummy__ +var _ m_Streams.Dummy__ +var _ m_Sorting.Dummy__ +var _ m_HexStrings.Dummy__ +var _ m_GetOpt.Dummy__ +var _ m_FloatCompare.Dummy__ +var _ m_Base64Lemmas.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Dummy__ +var _ m_StructuredEncryptionUtil.Dummy__ +var _ m_Sets.Dummy__ +var _ m_StructuredEncryptionPaths.Dummy__ +var _ m_StructuredEncryptionHeader.Dummy__ +var _ m_StructuredEncryptionFooter.Dummy__ +var _ m_OptimizedMergeSort.Dummy__ +var _ m_SortCanon.Dummy__ +var _ m_Canonize.Dummy__ +var _ m_StructuredEncryptionCrypt.Dummy__ +var _ m__Maps.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations.Dummy__ + +type Dummy__ struct{} + +// Definition of class Default__ +type Default__ struct { + dummy byte +} + +func New_Default___() *Default__ { + _this := Default__{} + + return &_this +} + +type CompanionStruct_Default___ struct { +} + +var Companion_Default___ = CompanionStruct_Default___{} + +func (_this *Default__) Equals(other *Default__) bool { + return _this == other +} + +func (_this *Default__) EqualsGeneric(x interface{}) bool { + other, ok := x.(*Default__) + return ok && _this.Equals(other) +} + +func (*Default__) String() string { + return "StructuredEncryption.Default__" +} +func (_this *Default__) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = &Default__{} + +func (_static *CompanionStruct_Default___) DefaultStructuredEncryptionConfig() m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.StructuredEncryptionConfig { + return m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Companion_StructuredEncryptionConfig_.Create_StructuredEncryptionConfig_() +} +func (_static *CompanionStruct_Default___) StructuredEncryption(config m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.StructuredEncryptionConfig) m_Wrappers.Result { + var res m_Wrappers.Result = m_Wrappers.Result{} + _ = res + var _0_maybePrimitives m_Wrappers.Result + _ = _0_maybePrimitives + var _out0 m_Wrappers.Result + _ = _out0 + _out0 = m_AtomicPrimitives.Companion_Default___.AtomicPrimitives(m_AtomicPrimitives.Companion_Default___.DefaultCryptoConfig()) + _0_maybePrimitives = _out0 + var _1_valueOrError0 m_Wrappers.Result = m_Wrappers.Result{} + _ = _1_valueOrError0 + _1_valueOrError0 = (_0_maybePrimitives).MapFailure(func(coer41 func(m_AwsCryptographyPrimitivesTypes.Error) m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Error) func(interface{}) interface{} { + return func(arg57 interface{}) interface{} { + return coer41(arg57.(m_AwsCryptographyPrimitivesTypes.Error)) + } + }(func(_2_e m_AwsCryptographyPrimitivesTypes.Error) m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Error { + return m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Companion_Error_.Create_AwsCryptographyPrimitives_(_2_e) + })) + if (_1_valueOrError0).IsFailure() { + res = (_1_valueOrError0).PropagateFailure() + return res + } + var _3_primitives *m_AtomicPrimitives.AtomicPrimitivesClient + _ = _3_primitives + _3_primitives = (_1_valueOrError0).Extract().(*m_AtomicPrimitives.AtomicPrimitivesClient) + var _4_maybeMatProv m_Wrappers.Result + _ = _4_maybeMatProv + var _out1 m_Wrappers.Result + _ = _out1 + _out1 = m_MaterialProviders.Companion_Default___.MaterialProviders(m_MaterialProviders.Companion_Default___.DefaultMaterialProvidersConfig()) + _4_maybeMatProv = _out1 + var _5_valueOrError1 m_Wrappers.Result = m_Wrappers.Result{} + _ = _5_valueOrError1 + _5_valueOrError1 = (_4_maybeMatProv).MapFailure(func(coer42 func(m_AwsCryptographyMaterialProvidersTypes.Error) m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Error) func(interface{}) interface{} { + return func(arg58 interface{}) interface{} { + return coer42(arg58.(m_AwsCryptographyMaterialProvidersTypes.Error)) + } + }(func(_6_e m_AwsCryptographyMaterialProvidersTypes.Error) m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Error { + return m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Companion_Error_.Create_AwsCryptographyMaterialProviders_(_6_e) + })) + if (_5_valueOrError1).IsFailure() { + res = (_5_valueOrError1).PropagateFailure() + return res + } + var _7_matProv *m_MaterialProviders.MaterialProvidersClient + _ = _7_matProv + _7_matProv = (_5_valueOrError1).Extract().(*m_MaterialProviders.MaterialProvidersClient) + var _8_client *StructuredEncryptionClient + _ = _8_client + var _nw0 *StructuredEncryptionClient = New_StructuredEncryptionClient_() + _ = _nw0 + _nw0.Ctor__(m_AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations.Companion_Config_.Create_Config_(_3_primitives, _7_matProv)) + _8_client = _nw0 + res = m_Wrappers.Companion_Result_.Create_Success_(_8_client) + return res + return res +} +func (_static *CompanionStruct_Default___) CreateSuccessOfClient(client m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.IStructuredEncryptionClient) m_Wrappers.Result { + return m_Wrappers.Companion_Result_.Create_Success_(client) +} +func (_static *CompanionStruct_Default___) CreateFailureOfError(error_ m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Error) m_Wrappers.Result { + return m_Wrappers.Companion_Result_.Create_Failure_(error_) +} + +// End of class Default__ + +// Definition of class StructuredEncryptionClient +type StructuredEncryptionClient struct { + _config m_AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations.Config +} + +func New_StructuredEncryptionClient_() *StructuredEncryptionClient { + _this := StructuredEncryptionClient{} + + _this._config = m_AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations.Config{} + return &_this +} + +type CompanionStruct_StructuredEncryptionClient_ struct { +} + +var Companion_StructuredEncryptionClient_ = CompanionStruct_StructuredEncryptionClient_{} + +func (_this *StructuredEncryptionClient) Equals(other *StructuredEncryptionClient) bool { + return _this == other +} + +func (_this *StructuredEncryptionClient) EqualsGeneric(x interface{}) bool { + other, ok := x.(*StructuredEncryptionClient) + return ok && _this.Equals(other) +} + +func (*StructuredEncryptionClient) String() string { + return "StructuredEncryption.StructuredEncryptionClient" +} + +func Type_StructuredEncryptionClient_() _dafny.TypeDescriptor { + return type_StructuredEncryptionClient_{} +} + +type type_StructuredEncryptionClient_ struct { +} + +func (_this type_StructuredEncryptionClient_) Default() interface{} { + return (*StructuredEncryptionClient)(nil) +} + +func (_this type_StructuredEncryptionClient_) String() string { + return "StructuredEncryption.StructuredEncryptionClient" +} +func (_this *StructuredEncryptionClient) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Companion_IStructuredEncryptionClient_.TraitID_} +} + +var _ m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.IStructuredEncryptionClient = &StructuredEncryptionClient{} +var _ _dafny.TraitOffspring = &StructuredEncryptionClient{} + +func (_this *StructuredEncryptionClient) Ctor__(config m_AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations.Config) { + { + (_this)._config = config + } +} +func (_this *StructuredEncryptionClient) EncryptStructure(input m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.EncryptStructureInput) m_Wrappers.Result { + { + var output m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Companion_EncryptStructureOutput_.Default()) + _ = output + var _out0 m_Wrappers.Result + _ = _out0 + _out0 = m_AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations.Companion_Default___.EncryptStructure((_this).Config(), input) + output = _out0 + return output + } +} +func (_this *StructuredEncryptionClient) DecryptStructure(input m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.DecryptStructureInput) m_Wrappers.Result { + { + var output m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Companion_DecryptStructureOutput_.Default()) + _ = output + var _out0 m_Wrappers.Result + _ = _out0 + _out0 = m_AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations.Companion_Default___.DecryptStructure((_this).Config(), input) + output = _out0 + return output + } +} +func (_this *StructuredEncryptionClient) EncryptPathStructure(input m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.EncryptPathStructureInput) m_Wrappers.Result { + { + var output m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Companion_EncryptPathStructureOutput_.Default()) + _ = output + var _out0 m_Wrappers.Result + _ = _out0 + _out0 = m_AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations.Companion_Default___.EncryptPathStructure((_this).Config(), input) + output = _out0 + return output + } +} +func (_this *StructuredEncryptionClient) DecryptPathStructure(input m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.DecryptPathStructureInput) m_Wrappers.Result { + { + var output m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Companion_DecryptPathStructureOutput_.Default()) + _ = output + var _out0 m_Wrappers.Result + _ = _out0 + _out0 = m_AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations.Companion_Default___.DecryptPathStructure((_this).Config(), input) + output = _out0 + return output + } +} +func (_this *StructuredEncryptionClient) ResolveAuthActions(input m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.ResolveAuthActionsInput) m_Wrappers.Result { + { + var output m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Companion_ResolveAuthActionsOutput_.Default()) + _ = output + var _out0 m_Wrappers.Result + _ = _out0 + _out0 = m_AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations.Companion_Default___.ResolveAuthActions((_this).Config(), input) + output = _out0 + return output + } +} +func (_this *StructuredEncryptionClient) Config() m_AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations.Config { + { + return _this._config + } +} + +// End of class StructuredEncryptionClient diff --git a/releases/go/dynamodb-esdk/StructuredEncryptionCrypt/StructuredEncryptionCrypt.go b/releases/go/dynamodb-esdk/StructuredEncryptionCrypt/StructuredEncryptionCrypt.go new file mode 100644 index 000000000..fc286eaab --- /dev/null +++ b/releases/go/dynamodb-esdk/StructuredEncryptionCrypt/StructuredEncryptionCrypt.go @@ -0,0 +1,602 @@ +// Package StructuredEncryptionCrypt +// Dafny module StructuredEncryptionCrypt compiled into Go + +package StructuredEncryptionCrypt + +import ( + os "os" + + m_ComAmazonawsDynamodbTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/dynamodb/ComAmazonawsDynamodbTypes" + m_Com_Amazonaws_Dynamodb "github.com/aws/aws-cryptographic-material-providers-library/releases/go/dynamodb/Com_Amazonaws_Dynamodb" + m_ComAmazonawsKmsTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/kms/ComAmazonawsKmsTypes" + m_Com_Amazonaws_Kms "github.com/aws/aws-cryptographic-material-providers-library/releases/go/kms/Com_Amazonaws_Kms" + m_AlgorithmSuites "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AlgorithmSuites" + m_AwsArnParsing "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsArnParsing" + m_AwsCryptographyKeyStoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyKeyStoreOperations" + m_AwsCryptographyKeyStoreTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyKeyStoreTypes" + m_AwsCryptographyMaterialProvidersOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyMaterialProvidersOperations" + m_AwsCryptographyMaterialProvidersTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyMaterialProvidersTypes" + m_AwsKmsDiscoveryKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsDiscoveryKeyring" + m_AwsKmsEcdhKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsEcdhKeyring" + m_AwsKmsHierarchicalKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsHierarchicalKeyring" + m_AwsKmsKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsKeyring" + m_AwsKmsMrkAreUnique "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkAreUnique" + m_AwsKmsMrkDiscoveryKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkDiscoveryKeyring" + m_AwsKmsMrkKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkKeyring" + m_AwsKmsMrkMatchForDecrypt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkMatchForDecrypt" + m_AwsKmsRsaKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsRsaKeyring" + m_AwsKmsUtils "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsUtils" + m_CMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CMM" + m_CacheConstants "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CacheConstants" + m_CanonicalEncryptionContext "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CanonicalEncryptionContext" + m_Commitment "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Commitment" + m_Constants "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Constants" + m_CreateKeyStoreTable "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CreateKeyStoreTable" + m_CreateKeys "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CreateKeys" + m_DDBKeystoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DDBKeystoreOperations" + m_DefaultCMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DefaultCMM" + m_DefaultClientSupplier "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DefaultClientSupplier" + m_Defaults "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Defaults" + m_DiscoveryMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DiscoveryMultiKeyring" + m_EcdhEdkWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/EcdhEdkWrapping" + m_EdkWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/EdkWrapping" + m_ErrorMessages "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/ErrorMessages" + m_GetKeys "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/GetKeys" + m_IntermediateKeyWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/IntermediateKeyWrapping" + m_KMSKeystoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KMSKeystoreOperations" + m_KeyStore "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KeyStore" + m_KeyStoreErrorMessages "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KeyStoreErrorMessages" + m_Keyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Keyring" + m_KmsArn "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KmsArn" + m_LocalCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/LocalCMC" + m_MaterialProviders "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MaterialProviders" + m_MaterialWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MaterialWrapping" + m_Materials "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Materials" + m_MrkAwareDiscoveryMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MrkAwareDiscoveryMultiKeyring" + m_MrkAwareStrictMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MrkAwareStrictMultiKeyring" + m_MultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MultiKeyring" + m_RawAESKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawAESKeyring" + m_RawECDHKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawECDHKeyring" + m_RawRSAKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawRSAKeyring" + m_RequiredEncryptionContextCMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RequiredEncryptionContextCMM" + m_StormTracker "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StormTracker" + m_StormTrackingCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StormTrackingCMC" + m_StrictMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StrictMultiKeyring" + m_Structure "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Structure" + m_SynchronizedLocalCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/SynchronizedLocalCMC" + m_Utils "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Utils" + m_AesKdfCtr "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AesKdfCtr" + m_AtomicPrimitives "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AtomicPrimitives" + m_AwsCryptographyPrimitivesOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AwsCryptographyPrimitivesOperations" + m_AwsCryptographyPrimitivesTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AwsCryptographyPrimitivesTypes" + m_Digest "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/Digest" + m_HKDF "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/HKDF" + m_KdfCtr "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/KdfCtr" + m_Random "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/Random" + m_WrappedHKDF "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/WrappedHKDF" + m_WrappedHMAC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/WrappedHMAC" + m_Actions "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Actions" + m_Base64 "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Base64" + m_Base64Lemmas "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Base64Lemmas" + m_BoundedInts "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/BoundedInts" + m_DivInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivInternals" + m_DivInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivInternalsNonlinear" + m_DivMod "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivMod" + m_FileIO "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/FileIO" + m_FloatCompare "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/FloatCompare" + m_Functions "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Functions" + m_GeneralInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/GeneralInternals" + m_GetOpt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/GetOpt" + m_HexStrings "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/HexStrings" + m_Logarithm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Logarithm" + m__Math "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Math_" + m_ModInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/ModInternals" + m_ModInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/ModInternalsNonlinear" + m_Mul "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Mul" + m_MulInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/MulInternals" + m_MulInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/MulInternalsNonlinear" + m_Power "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Power" + m_Relations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Relations" + m_Seq "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Seq" + m_Seq_MergeSort "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Seq_MergeSort" + m_Sorting "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Sorting" + m_StandardLibrary "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary" + m_StandardLibraryInterop "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibraryInterop" + m_StandardLibrary_MemoryMath "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_MemoryMath" + m_StandardLibrary_Sequence "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_Sequence" + m_StandardLibrary_String "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_String" + m_StandardLibrary_UInt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_UInt" + m_Streams "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Streams" + m_UnicodeStrings "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/UnicodeStrings" + m__Unicode "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Unicode_" + m_Utf16EncodingForm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Utf16EncodingForm" + m_Utf8EncodingForm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Utf8EncodingForm" + m_Wrappers "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Wrappers" + m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes" + m_Canonize "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/Canonize" + m_OptimizedMergeSort "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/OptimizedMergeSort" + m_Sets "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/Sets" + m_SortCanon "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/SortCanon" + m_StructuredEncryptionFooter "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionFooter" + m_StructuredEncryptionHeader "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionHeader" + m_StructuredEncryptionPaths "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionPaths" + m_StructuredEncryptionUtil "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionUtil" + m__System "github.com/dafny-lang/DafnyRuntimeGo/v4/System_" + _dafny "github.com/dafny-lang/DafnyRuntimeGo/v4/dafny" +) + +var _ = os.Args +var _ _dafny.Dummy__ +var _ m__System.Dummy__ +var _ m_Wrappers.Dummy__ +var _ m_BoundedInts.Dummy__ +var _ m_StandardLibrary_UInt.Dummy__ +var _ m_StandardLibrary_MemoryMath.Dummy__ +var _ m_StandardLibrary_Sequence.Dummy__ +var _ m_StandardLibrary_String.Dummy__ +var _ m_StandardLibrary.Dummy__ +var _ m_AwsCryptographyPrimitivesTypes.Dummy__ +var _ m_Random.Dummy__ +var _ m_Digest.Dummy__ +var _ m_WrappedHMAC.Dummy__ +var _ m_HKDF.Dummy__ +var _ m_WrappedHKDF.Dummy__ +var _ m_KdfCtr.Dummy__ +var _ m_AwsCryptographyPrimitivesOperations.Dummy__ +var _ m_AtomicPrimitives.Dummy__ +var _ m_ComAmazonawsDynamodbTypes.Dummy__ +var _ m_ComAmazonawsKmsTypes.Dummy__ +var _ m_AwsCryptographyKeyStoreTypes.Dummy__ +var _ m_AwsCryptographyMaterialProvidersTypes.Dummy__ +var _ m_Base64.Dummy__ +var _ m_AlgorithmSuites.Dummy__ +var _ m_Materials.Dummy__ +var _ m_Keyring.Dummy__ +var _ m_Relations.Dummy__ +var _ m_Seq_MergeSort.Dummy__ +var _ m__Math.Dummy__ +var _ m_Seq.Dummy__ +var _ m_Actions.Dummy__ +var _ m_CanonicalEncryptionContext.Dummy__ +var _ m_MaterialWrapping.Dummy__ +var _ m_IntermediateKeyWrapping.Dummy__ +var _ m_EdkWrapping.Dummy__ +var _ m_ErrorMessages.Dummy__ +var _ m_RawAESKeyring.Dummy__ +var _ m_AwsArnParsing.Dummy__ +var _ m_Constants.Dummy__ +var _ m_EcdhEdkWrapping.Dummy__ +var _ m_RawECDHKeyring.Dummy__ +var _ m_RawRSAKeyring.Dummy__ +var _ m_AwsKmsMrkMatchForDecrypt.Dummy__ +var _ m_AwsKmsUtils.Dummy__ +var _ m_AwsKmsKeyring.Dummy__ +var _ m_AwsKmsDiscoveryKeyring.Dummy__ +var _ m_AwsKmsEcdhKeyring.Dummy__ +var _ m_FileIO.Dummy__ +var _ m_LocalCMC.Dummy__ +var _ m_SynchronizedLocalCMC.Dummy__ +var _ m_StormTracker.Dummy__ +var _ m_StormTrackingCMC.Dummy__ +var _ m_CacheConstants.Dummy__ +var _ m_AwsKmsHierarchicalKeyring.Dummy__ +var _ m_AwsKmsMrkDiscoveryKeyring.Dummy__ +var _ m_AwsKmsMrkKeyring.Dummy__ +var _ m_AwsKmsRsaKeyring.Dummy__ +var _ m_MultiKeyring.Dummy__ +var _ m_AwsKmsMrkAreUnique.Dummy__ +var _ m_StrictMultiKeyring.Dummy__ +var _ m_Com_Amazonaws_Kms.Dummy__ +var _ m_Com_Amazonaws_Dynamodb.Dummy__ +var _ m_DiscoveryMultiKeyring.Dummy__ +var _ m_MrkAwareDiscoveryMultiKeyring.Dummy__ +var _ m_MrkAwareStrictMultiKeyring.Dummy__ +var _ m_CMM.Dummy__ +var _ m_Defaults.Dummy__ +var _ m_Commitment.Dummy__ +var _ m_DefaultCMM.Dummy__ +var _ m_DefaultClientSupplier.Dummy__ +var _ m_Utils.Dummy__ +var _ m_RequiredEncryptionContextCMM.Dummy__ +var _ m_AwsCryptographyMaterialProvidersOperations.Dummy__ +var _ m_MaterialProviders.Dummy__ +var _ m_KeyStoreErrorMessages.Dummy__ +var _ m_KmsArn.Dummy__ +var _ m_Structure.Dummy__ +var _ m_KMSKeystoreOperations.Dummy__ +var _ m_DDBKeystoreOperations.Dummy__ +var _ m_CreateKeys.Dummy__ +var _ m_CreateKeyStoreTable.Dummy__ +var _ m_GetKeys.Dummy__ +var _ m_AwsCryptographyKeyStoreOperations.Dummy__ +var _ m_KeyStore.Dummy__ +var _ m__Unicode.Dummy__ +var _ m_Functions.Dummy__ +var _ m_Utf8EncodingForm.Dummy__ +var _ m_Utf16EncodingForm.Dummy__ +var _ m_UnicodeStrings.Dummy__ +var _ m_GeneralInternals.Dummy__ +var _ m_MulInternalsNonlinear.Dummy__ +var _ m_MulInternals.Dummy__ +var _ m_Mul.Dummy__ +var _ m_ModInternalsNonlinear.Dummy__ +var _ m_DivInternalsNonlinear.Dummy__ +var _ m_ModInternals.Dummy__ +var _ m_DivInternals.Dummy__ +var _ m_DivMod.Dummy__ +var _ m_Power.Dummy__ +var _ m_Logarithm.Dummy__ +var _ m_StandardLibraryInterop.Dummy__ +var _ m_Streams.Dummy__ +var _ m_Sorting.Dummy__ +var _ m_HexStrings.Dummy__ +var _ m_GetOpt.Dummy__ +var _ m_FloatCompare.Dummy__ +var _ m_Base64Lemmas.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Dummy__ +var _ m_StructuredEncryptionUtil.Dummy__ +var _ m_Sets.Dummy__ +var _ m_StructuredEncryptionPaths.Dummy__ +var _ m_StructuredEncryptionHeader.Dummy__ +var _ m_StructuredEncryptionFooter.Dummy__ +var _ m_OptimizedMergeSort.Dummy__ +var _ m_SortCanon.Dummy__ +var _ m_Canonize.Dummy__ + +type Dummy__ struct{} + +// Definition of class Default__ +type Default__ struct { + dummy byte +} + +func New_Default___() *Default__ { + _this := Default__{} + + return &_this +} + +type CompanionStruct_Default___ struct { +} + +var Companion_Default___ = CompanionStruct_Default___{} + +func (_this *Default__) Equals(other *Default__) bool { + return _this == other +} + +func (_this *Default__) EqualsGeneric(x interface{}) bool { + other, ok := x.(*Default__) + return ok && _this.Equals(other) +} + +func (*Default__) String() string { + return "StructuredEncryptionCrypt.Default__" +} +func (_this *Default__) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = &Default__{} + +func (_static *CompanionStruct_Default___) FieldKey(HKDFOutput _dafny.Sequence, offset uint32) m_Wrappers.Result { + var _0_valueOrError0 m_Wrappers.Outcome = m_Wrappers.Companion_Default___.Need((offset) < (Companion_Default___.ONE__THIRD__MAX__INT()), m_StructuredEncryptionUtil.Companion_Default___.E(_dafny.SeqOfString("Too many encrypted fields."))) + _ = _0_valueOrError0 + if (_0_valueOrError0).IsFailure() { + return (_0_valueOrError0).PropagateFailure() + } else { + var _1_keyR m_Wrappers.Result = m_AesKdfCtr.AesKdfCtrStream(Companion_Default___.FieldKeyNonce((offset)*(uint32(3))), HKDFOutput, uint32((m_StructuredEncryptionUtil.Companion_Default___.KeySize64())+(m_StructuredEncryptionUtil.Companion_Default___.NonceSize64()))) + _ = _1_keyR + return (_1_keyR).MapFailure(func(coer18 func(m_AwsCryptographyPrimitivesTypes.Error) m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Error) func(interface{}) interface{} { + return func(arg27 interface{}) interface{} { + return coer18(arg27.(m_AwsCryptographyPrimitivesTypes.Error)) + } + }(func(_2_e m_AwsCryptographyPrimitivesTypes.Error) m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Error { + return m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Companion_Error_.Create_AwsCryptographyPrimitives_(_2_e) + })) + } +} +func (_static *CompanionStruct_Default___) FieldKeyNonce(offset uint32) _dafny.Sequence { + return _dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(Companion_Default___.AwsDbeField(), _dafny.SeqOf(uint8((m_StructuredEncryptionUtil.Companion_Default___.KeySize64())+(m_StructuredEncryptionUtil.Companion_Default___.NonceSize64())))), m_StandardLibrary_UInt.Companion_Default___.UInt32ToSeq(offset)) +} +func (_static *CompanionStruct_Default___) GetCommitKey(client *m_AtomicPrimitives.AtomicPrimitivesClient, alg m_AwsCryptographyMaterialProvidersTypes.AlgorithmSuiteInfo, key _dafny.Sequence, msgID _dafny.Sequence) m_Wrappers.Result { + var ret m_Wrappers.Result = m_Wrappers.Result{} + _ = ret + var _0_commitKey m_Wrappers.Result + _ = _0_commitKey + var _out0 m_Wrappers.Result + _ = _out0 + _out0 = (client).Hkdf(m_AwsCryptographyPrimitivesTypes.Companion_HkdfInput_.Create_HkdfInput_((((alg).Dtor_commitment()).Dtor_HKDF()).Dtor_hmac(), m_Wrappers.Companion_Option_.Create_None_(), key, _dafny.Companion_Sequence_.Concatenate(Companion_Default___.LABEL__COMMITMENT__KEY(), msgID), (((alg).Dtor_commitment()).Dtor_HKDF()).Dtor_outputKeyLength())) + _0_commitKey = _out0 + ret = (_0_commitKey).MapFailure(func(coer19 func(m_AwsCryptographyPrimitivesTypes.Error) m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Error) func(interface{}) interface{} { + return func(arg28 interface{}) interface{} { + return coer19(arg28.(m_AwsCryptographyPrimitivesTypes.Error)) + } + }(func(_1_e m_AwsCryptographyPrimitivesTypes.Error) m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Error { + return m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Companion_Error_.Create_AwsCryptographyPrimitives_(_1_e) + })) + return ret + return ret +} +func (_static *CompanionStruct_Default___) Encrypt(client *m_AtomicPrimitives.AtomicPrimitivesClient, alg m_AwsCryptographyMaterialProvidersTypes.AlgorithmSuiteInfo, key _dafny.Sequence, head m_StructuredEncryptionHeader.PartialHeader, data _dafny.Sequence) m_Wrappers.Result { + var ret m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(_dafny.EmptySeq) + _ = ret + var _0_valueOrError0 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(_dafny.EmptySeq) + _ = _0_valueOrError0 + var _out0 m_Wrappers.Result + _ = _out0 + _out0 = Companion_Default___.Crypt(m_Canonize.Companion_EncryptionSelector_.Create_DoEncrypt_(), client, alg, key, head, data) + _0_valueOrError0 = _out0 + if (_0_valueOrError0).IsFailure() { + ret = (_0_valueOrError0).PropagateFailure() + return ret + } + var _1_result _dafny.Sequence + _ = _1_result + _1_result = (_0_valueOrError0).Extract().(_dafny.Sequence) + ret = m_Wrappers.Companion_Result_.Create_Success_(_1_result) + return ret + return ret +} +func (_static *CompanionStruct_Default___) Decrypt(client *m_AtomicPrimitives.AtomicPrimitivesClient, alg m_AwsCryptographyMaterialProvidersTypes.AlgorithmSuiteInfo, key _dafny.Sequence, head m_StructuredEncryptionHeader.PartialHeader, data _dafny.Sequence) m_Wrappers.Result { + var ret m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(_dafny.EmptySeq) + _ = ret + var _0_valueOrError0 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(_dafny.EmptySeq) + _ = _0_valueOrError0 + var _out0 m_Wrappers.Result + _ = _out0 + _out0 = Companion_Default___.Crypt(m_Canonize.Companion_EncryptionSelector_.Create_DoDecrypt_(), client, alg, key, head, data) + _0_valueOrError0 = _out0 + if (_0_valueOrError0).IsFailure() { + ret = (_0_valueOrError0).PropagateFailure() + return ret + } + var _1_result _dafny.Sequence + _ = _1_result + _1_result = (_0_valueOrError0).Extract().(_dafny.Sequence) + ret = m_Wrappers.Companion_Result_.Create_Success_(_1_result) + return ret + return ret +} +func (_static *CompanionStruct_Default___) Crypt(mode m_Canonize.EncryptionSelector, client *m_AtomicPrimitives.AtomicPrimitivesClient, alg m_AwsCryptographyMaterialProvidersTypes.AlgorithmSuiteInfo, key _dafny.Sequence, head m_StructuredEncryptionHeader.PartialHeader, data _dafny.Sequence) m_Wrappers.Result { + var ret m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(_dafny.EmptySeq) + _ = ret + var _0_fieldRootKeyR m_Wrappers.Result + _ = _0_fieldRootKeyR + var _out0 m_Wrappers.Result + _ = _out0 + _out0 = (client).Hkdf(m_AwsCryptographyPrimitivesTypes.Companion_HkdfInput_.Create_HkdfInput_((((alg).Dtor_kdf()).Dtor_HKDF()).Dtor_hmac(), m_Wrappers.Companion_Option_.Create_None_(), key, _dafny.Companion_Sequence_.Concatenate(Companion_Default___.LABEL__ENCRYPTION__KEY(), (head).Dtor_msgID()), (((alg).Dtor_kdf()).Dtor_HKDF()).Dtor_outputKeyLength())) + _0_fieldRootKeyR = _out0 + var _1_valueOrError0 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(_dafny.EmptySeq) + _ = _1_valueOrError0 + _1_valueOrError0 = (_0_fieldRootKeyR).MapFailure(func(coer20 func(m_AwsCryptographyPrimitivesTypes.Error) m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Error) func(interface{}) interface{} { + return func(arg29 interface{}) interface{} { + return coer20(arg29.(m_AwsCryptographyPrimitivesTypes.Error)) + } + }(func(_2_e m_AwsCryptographyPrimitivesTypes.Error) m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Error { + return m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Companion_Error_.Create_AwsCryptographyPrimitives_(_2_e) + })) + if (_1_valueOrError0).IsFailure() { + ret = (_1_valueOrError0).PropagateFailure() + return ret + } + var _3_fieldRootKey _dafny.Sequence + _ = _3_fieldRootKey + _3_fieldRootKey = (_1_valueOrError0).Extract().(_dafny.Sequence) + var _4_valueOrError1 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(_dafny.EmptySeq) + _ = _4_valueOrError1 + var _out1 m_Wrappers.Result + _ = _out1 + _out1 = Companion_Default___.CryptList(mode, client, alg, _3_fieldRootKey, data) + _4_valueOrError1 = _out1 + if (_4_valueOrError1).IsFailure() { + ret = (_4_valueOrError1).PropagateFailure() + return ret + } + var _5_result _dafny.Sequence + _ = _5_result + _5_result = (_4_valueOrError1).Extract().(_dafny.Sequence) + ret = m_Wrappers.Companion_Result_.Create_Success_(_5_result) + return ret + return ret +} +func (_static *CompanionStruct_Default___) CryptList(mode m_Canonize.EncryptionSelector, client *m_AtomicPrimitives.AtomicPrimitivesClient, alg m_AwsCryptographyMaterialProvidersTypes.AlgorithmSuiteInfo, fieldRootKey _dafny.Sequence, data _dafny.Sequence) m_Wrappers.Result { + var ret m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(_dafny.EmptySeq) + _ = ret + var _0_result _dafny.Sequence + _ = _0_result + _0_result = _dafny.SeqOf() + var _1_pos uint32 + _ = _1_pos + _1_pos = uint32(0) + var _2_valueOrError0 m_Wrappers.Outcome = m_Wrappers.Companion_Outcome_.Default() + _ = _2_valueOrError0 + _2_valueOrError0 = m_Wrappers.Companion_Default___.Need((uint64((data).Cardinality())) < ((m_StandardLibrary_UInt.Companion_Default___.UINT32__LIMIT()).Uint64()), m_StructuredEncryptionUtil.Companion_Default___.E(_dafny.SeqOfString("Too many fields."))) + if (_2_valueOrError0).IsFailure() { + ret = (_2_valueOrError0).PropagateFailure() + return ret + } + var _hi0 uint64 = uint64((data).Cardinality()) + _ = _hi0 + for _3_i := uint64(0); _3_i < _hi0; _3_i++ { + if (((data).Select(uint32(_3_i)).(m_StructuredEncryptionUtil.CanonCryptoItem)).Dtor_action()).Equals(m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Companion_CryptoAction_.Create_ENCRYPT__AND__SIGN_()) { + var _4_newTerminal m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.StructuredDataTerminal = m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.StructuredDataTerminal{} + _ = _4_newTerminal + if (mode).Equals(m_Canonize.Companion_EncryptionSelector_.Create_DoEncrypt_()) { + var _5_valueOrError1 m_Wrappers.Result = m_Wrappers.Result{} + _ = _5_valueOrError1 + var _out0 m_Wrappers.Result + _ = _out0 + _out0 = Companion_Default___.EncryptTerminal(client, alg, fieldRootKey, _1_pos, ((data).Select(uint32(_3_i)).(m_StructuredEncryptionUtil.CanonCryptoItem)).Dtor_key(), ((data).Select(uint32(_3_i)).(m_StructuredEncryptionUtil.CanonCryptoItem)).Dtor_data()) + _5_valueOrError1 = _out0 + if (_5_valueOrError1).IsFailure() { + ret = (_5_valueOrError1).PropagateFailure() + return ret + } + _4_newTerminal = (_5_valueOrError1).Extract().(m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.StructuredDataTerminal) + } else { + var _6_valueOrError2 m_Wrappers.Result = m_Wrappers.Result{} + _ = _6_valueOrError2 + var _out1 m_Wrappers.Result + _ = _out1 + _out1 = Companion_Default___.DecryptTerminal(client, alg, fieldRootKey, _1_pos, ((data).Select(uint32(_3_i)).(m_StructuredEncryptionUtil.CanonCryptoItem)).Dtor_key(), ((data).Select(uint32(_3_i)).(m_StructuredEncryptionUtil.CanonCryptoItem)).Dtor_data()) + _6_valueOrError2 = _out1 + if (_6_valueOrError2).IsFailure() { + ret = (_6_valueOrError2).PropagateFailure() + return ret + } + _4_newTerminal = (_6_valueOrError2).Extract().(m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.StructuredDataTerminal) + } + _1_pos = (_1_pos) + (uint32(1)) + var _7_newItem m_StructuredEncryptionUtil.CanonCryptoItem + _ = _7_newItem + var _8_dt__update__tmp_h0 m_StructuredEncryptionUtil.CanonCryptoItem = (data).Select(uint32(_3_i)).(m_StructuredEncryptionUtil.CanonCryptoItem) + _ = _8_dt__update__tmp_h0 + var _9_dt__update_hdata_h0 m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.StructuredDataTerminal = _4_newTerminal + _ = _9_dt__update_hdata_h0 + _7_newItem = m_StructuredEncryptionUtil.Companion_CanonCryptoItem_.Create_CanonCryptoItem_((_8_dt__update__tmp_h0).Dtor_key(), (_8_dt__update__tmp_h0).Dtor_origKey(), _9_dt__update_hdata_h0, (_8_dt__update__tmp_h0).Dtor_action()) + _0_result = _dafny.Companion_Sequence_.Concatenate(_0_result, _dafny.SeqOf(_7_newItem)) + } else { + _0_result = _dafny.Companion_Sequence_.Concatenate(_0_result, _dafny.SeqOf((data).Select(uint32(_3_i)).(m_StructuredEncryptionUtil.CanonCryptoItem))) + } + } + ret = m_Wrappers.Companion_Result_.Create_Success_(_0_result) + return ret + return ret +} +func (_static *CompanionStruct_Default___) EncryptTerminal(client *m_AtomicPrimitives.AtomicPrimitivesClient, alg m_AwsCryptographyMaterialProvidersTypes.AlgorithmSuiteInfo, fieldRootKey _dafny.Sequence, offset uint32, path _dafny.Sequence, data m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.StructuredDataTerminal) m_Wrappers.Result { + var ret m_Wrappers.Result = m_Wrappers.Result{} + _ = ret + var _0_valueOrError0 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(_dafny.EmptySeq) + _ = _0_valueOrError0 + _0_valueOrError0 = Companion_Default___.FieldKey(fieldRootKey, offset) + if (_0_valueOrError0).IsFailure() { + ret = (_0_valueOrError0).PropagateFailure() + return ret + } + var _1_fieldKey _dafny.Sequence + _ = _1_fieldKey + _1_fieldKey = (_0_valueOrError0).Extract().(_dafny.Sequence) + var _2_cipherkey _dafny.Sequence + _ = _2_cipherkey + _2_cipherkey = (_1_fieldKey).Take(uint32(m_StructuredEncryptionUtil.Companion_Default___.KeySize64())) + var _3_nonce _dafny.Sequence + _ = _3_nonce + _3_nonce = (_1_fieldKey).Drop(uint32(m_StructuredEncryptionUtil.Companion_Default___.KeySize64())) + var _4_value _dafny.Sequence + _ = _4_value + _4_value = (data).Dtor_value() + var _5_encInput m_AwsCryptographyPrimitivesTypes.AESEncryptInput + _ = _5_encInput + _5_encInput = m_AwsCryptographyPrimitivesTypes.Companion_AESEncryptInput_.Create_AESEncryptInput_(((alg).Dtor_encrypt()).Dtor_AES__GCM(), _3_nonce, _2_cipherkey, _4_value, path) + var _6_encOutR m_Wrappers.Result + _ = _6_encOutR + var _out0 m_Wrappers.Result + _ = _out0 + _out0 = (client).AESEncrypt(_5_encInput) + _6_encOutR = _out0 + var _7_valueOrError1 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(m_AwsCryptographyPrimitivesTypes.Companion_AESEncryptOutput_.Default()) + _ = _7_valueOrError1 + _7_valueOrError1 = (_6_encOutR).MapFailure(func(coer21 func(m_AwsCryptographyPrimitivesTypes.Error) m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Error) func(interface{}) interface{} { + return func(arg30 interface{}) interface{} { + return coer21(arg30.(m_AwsCryptographyPrimitivesTypes.Error)) + } + }(func(_8_e m_AwsCryptographyPrimitivesTypes.Error) m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Error { + return m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Companion_Error_.Create_AwsCryptographyPrimitives_(_8_e) + })) + if (_7_valueOrError1).IsFailure() { + ret = (_7_valueOrError1).PropagateFailure() + return ret + } + var _9_encOut m_AwsCryptographyPrimitivesTypes.AESEncryptOutput + _ = _9_encOut + _9_encOut = (_7_valueOrError1).Extract().(m_AwsCryptographyPrimitivesTypes.AESEncryptOutput) + var _10_valueOrError2 m_Wrappers.Outcome = m_Wrappers.Companion_Outcome_.Default() + _ = _10_valueOrError2 + _10_valueOrError2 = m_Wrappers.Companion_Default___.Need((uint64(((_9_encOut).Dtor_authTag()).Cardinality())) == (m_StructuredEncryptionUtil.Companion_Default___.AuthTagSize64()), m_StructuredEncryptionUtil.Companion_Default___.E(_dafny.SeqOfString("Auth Tag Wrong Size."))) + if (_10_valueOrError2).IsFailure() { + ret = (_10_valueOrError2).PropagateFailure() + return ret + } + ret = m_Wrappers.Companion_Result_.Create_Success_(m_StructuredEncryptionUtil.Companion_Default___.ValueToData(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate((data).Dtor_typeId(), (_9_encOut).Dtor_cipherText()), (_9_encOut).Dtor_authTag()), m_StructuredEncryptionUtil.Companion_Default___.BYTES__TYPE__ID())) + return ret + return ret +} +func (_static *CompanionStruct_Default___) DecryptTerminal(client *m_AtomicPrimitives.AtomicPrimitivesClient, alg m_AwsCryptographyMaterialProvidersTypes.AlgorithmSuiteInfo, fieldRootKey _dafny.Sequence, offset uint32, path _dafny.Sequence, data m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.StructuredDataTerminal) m_Wrappers.Result { + var ret m_Wrappers.Result = m_Wrappers.Result{} + _ = ret + var _0_valueOrError0 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(_dafny.EmptySeq) + _ = _0_valueOrError0 + _0_valueOrError0 = Companion_Default___.FieldKey(fieldRootKey, offset) + if (_0_valueOrError0).IsFailure() { + ret = (_0_valueOrError0).PropagateFailure() + return ret + } + var _1_dataKey _dafny.Sequence + _ = _1_dataKey + _1_dataKey = (_0_valueOrError0).Extract().(_dafny.Sequence) + var _2_encryptionKey _dafny.Sequence + _ = _2_encryptionKey + _2_encryptionKey = (_1_dataKey).Take(uint32(m_StructuredEncryptionUtil.Companion_Default___.KeySize64())) + var _3_nonce _dafny.Sequence + _ = _3_nonce + _3_nonce = (_1_dataKey).Drop(uint32(m_StructuredEncryptionUtil.Companion_Default___.KeySize64())) + var _4_value _dafny.Sequence + _ = _4_value + _4_value = (data).Dtor_value() + var _5_valueOrError1 m_Wrappers.Outcome = m_Wrappers.Companion_Outcome_.Default() + _ = _5_valueOrError1 + _5_valueOrError1 = m_Wrappers.Companion_Default___.Need(((m_StructuredEncryptionUtil.Companion_Default___.AuthTagSize64())+(uint64(2))) <= (uint64((_4_value).Cardinality())), m_StructuredEncryptionUtil.Companion_Default___.E(_dafny.SeqOfString("cipherTxt too short."))) + if (_5_valueOrError1).IsFailure() { + ret = (_5_valueOrError1).PropagateFailure() + return ret + } + var _6_decInput m_AwsCryptographyPrimitivesTypes.AESDecryptInput + _ = _6_decInput + _6_decInput = m_AwsCryptographyPrimitivesTypes.Companion_AESDecryptInput_.Create_AESDecryptInput_(((alg).Dtor_encrypt()).Dtor_AES__GCM(), _2_encryptionKey, (_4_value).Subsequence(uint32(m_StructuredEncryptionUtil.Companion_Default___.TYPEID__LEN64()), uint32((uint64((_4_value).Cardinality()))-(func() uint64 { return (m_StructuredEncryptionUtil.Companion_Default___.AuthTagSize64()) })())), (_4_value).Drop(uint32((uint64((_4_value).Cardinality()))-(func() uint64 { return (m_StructuredEncryptionUtil.Companion_Default___.AuthTagSize64()) })())), _3_nonce, path) + var _7_decOutR m_Wrappers.Result + _ = _7_decOutR + var _out0 m_Wrappers.Result + _ = _out0 + _out0 = (client).AESDecrypt(_6_decInput) + _7_decOutR = _out0 + var _8_valueOrError2 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(_dafny.EmptySeq) + _ = _8_valueOrError2 + _8_valueOrError2 = (_7_decOutR).MapFailure(func(coer22 func(m_AwsCryptographyPrimitivesTypes.Error) m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Error) func(interface{}) interface{} { + return func(arg31 interface{}) interface{} { + return coer22(arg31.(m_AwsCryptographyPrimitivesTypes.Error)) + } + }(func(_9_e m_AwsCryptographyPrimitivesTypes.Error) m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Error { + return m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Companion_Error_.Create_AwsCryptographyPrimitives_(_9_e) + })) + if (_8_valueOrError2).IsFailure() { + ret = (_8_valueOrError2).PropagateFailure() + return ret + } + var _10_decOut _dafny.Sequence + _ = _10_decOut + _10_decOut = (_8_valueOrError2).Extract().(_dafny.Sequence) + ret = m_Wrappers.Companion_Result_.Create_Success_(m_StructuredEncryptionUtil.Companion_Default___.ValueToData(_10_decOut, (_4_value).Take(uint32(m_StructuredEncryptionUtil.Companion_Default___.TYPEID__LEN64())))) + return ret + return ret +} +func (_static *CompanionStruct_Default___) ONE__THIRD__MAX__INT() uint32 { + return uint32(1431655765) +} +func (_static *CompanionStruct_Default___) AwsDbeField() _dafny.Sequence { + var _0_s _dafny.Sequence = _dafny.SeqOf(uint8(65), uint8(119), uint8(115), uint8(68), uint8(98), uint8(101), uint8(70), uint8(105), uint8(101), uint8(108), uint8(100)) + _ = _0_s + return _0_s +} +func (_static *CompanionStruct_Default___) LABEL__COMMITMENT__KEY() _dafny.Sequence { + var _0_s _dafny.Sequence = _dafny.SeqOf(uint8(65), uint8(87), uint8(83), uint8(95), uint8(68), uint8(66), uint8(69), uint8(95), uint8(67), uint8(79), uint8(77), uint8(77), uint8(73), uint8(84), uint8(95), uint8(75), uint8(69), uint8(89)) + _ = _0_s + return _0_s +} +func (_static *CompanionStruct_Default___) LABEL__ENCRYPTION__KEY() _dafny.Sequence { + var _0_s _dafny.Sequence = _dafny.SeqOf(uint8(65), uint8(87), uint8(83), uint8(95), uint8(68), uint8(66), uint8(69), uint8(95), uint8(68), uint8(69), uint8(82), uint8(73), uint8(86), uint8(69), uint8(95), uint8(75), uint8(69), uint8(89)) + _ = _0_s + return _0_s +} + +// End of class Default__ diff --git a/releases/go/dynamodb-esdk/StructuredEncryptionFooter/StructuredEncryptionFooter.go b/releases/go/dynamodb-esdk/StructuredEncryptionFooter/StructuredEncryptionFooter.go new file mode 100644 index 000000000..763ae0481 --- /dev/null +++ b/releases/go/dynamodb-esdk/StructuredEncryptionFooter/StructuredEncryptionFooter.go @@ -0,0 +1,897 @@ +// Package StructuredEncryptionFooter +// Dafny module StructuredEncryptionFooter compiled into Go + +package StructuredEncryptionFooter + +import ( + os "os" + + m_ComAmazonawsDynamodbTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/dynamodb/ComAmazonawsDynamodbTypes" + m_Com_Amazonaws_Dynamodb "github.com/aws/aws-cryptographic-material-providers-library/releases/go/dynamodb/Com_Amazonaws_Dynamodb" + m_ComAmazonawsKmsTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/kms/ComAmazonawsKmsTypes" + m_Com_Amazonaws_Kms "github.com/aws/aws-cryptographic-material-providers-library/releases/go/kms/Com_Amazonaws_Kms" + m_AlgorithmSuites "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AlgorithmSuites" + m_AwsArnParsing "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsArnParsing" + m_AwsCryptographyKeyStoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyKeyStoreOperations" + m_AwsCryptographyKeyStoreTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyKeyStoreTypes" + m_AwsCryptographyMaterialProvidersOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyMaterialProvidersOperations" + m_AwsCryptographyMaterialProvidersTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyMaterialProvidersTypes" + m_AwsKmsDiscoveryKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsDiscoveryKeyring" + m_AwsKmsEcdhKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsEcdhKeyring" + m_AwsKmsHierarchicalKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsHierarchicalKeyring" + m_AwsKmsKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsKeyring" + m_AwsKmsMrkAreUnique "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkAreUnique" + m_AwsKmsMrkDiscoveryKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkDiscoveryKeyring" + m_AwsKmsMrkKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkKeyring" + m_AwsKmsMrkMatchForDecrypt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkMatchForDecrypt" + m_AwsKmsRsaKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsRsaKeyring" + m_AwsKmsUtils "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsUtils" + m_CMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CMM" + m_CacheConstants "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CacheConstants" + m_CanonicalEncryptionContext "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CanonicalEncryptionContext" + m_Commitment "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Commitment" + m_Constants "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Constants" + m_CreateKeyStoreTable "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CreateKeyStoreTable" + m_CreateKeys "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CreateKeys" + m_DDBKeystoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DDBKeystoreOperations" + m_DefaultCMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DefaultCMM" + m_DefaultClientSupplier "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DefaultClientSupplier" + m_Defaults "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Defaults" + m_DiscoveryMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DiscoveryMultiKeyring" + m_EcdhEdkWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/EcdhEdkWrapping" + m_EdkWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/EdkWrapping" + m_ErrorMessages "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/ErrorMessages" + m_GetKeys "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/GetKeys" + m_IntermediateKeyWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/IntermediateKeyWrapping" + m_KMSKeystoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KMSKeystoreOperations" + m_KeyStore "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KeyStore" + m_KeyStoreErrorMessages "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KeyStoreErrorMessages" + m_Keyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Keyring" + m_KmsArn "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KmsArn" + m_LocalCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/LocalCMC" + m_MaterialProviders "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MaterialProviders" + m_MaterialWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MaterialWrapping" + m_Materials "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Materials" + m_MrkAwareDiscoveryMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MrkAwareDiscoveryMultiKeyring" + m_MrkAwareStrictMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MrkAwareStrictMultiKeyring" + m_MultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MultiKeyring" + m_RawAESKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawAESKeyring" + m_RawECDHKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawECDHKeyring" + m_RawRSAKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawRSAKeyring" + m_RequiredEncryptionContextCMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RequiredEncryptionContextCMM" + m_StormTracker "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StormTracker" + m_StormTrackingCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StormTrackingCMC" + m_StrictMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StrictMultiKeyring" + m_Structure "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Structure" + m_SynchronizedLocalCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/SynchronizedLocalCMC" + m_Utils "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Utils" + m_AtomicPrimitives "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AtomicPrimitives" + m_AwsCryptographyPrimitivesOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AwsCryptographyPrimitivesOperations" + m_AwsCryptographyPrimitivesTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AwsCryptographyPrimitivesTypes" + m_Digest "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/Digest" + m_HKDF "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/HKDF" + m_KdfCtr "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/KdfCtr" + m_Random "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/Random" + m_WrappedHKDF "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/WrappedHKDF" + m_WrappedHMAC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/WrappedHMAC" + m_Actions "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Actions" + m_Base64 "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Base64" + m_Base64Lemmas "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Base64Lemmas" + m_BoundedInts "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/BoundedInts" + m_DivInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivInternals" + m_DivInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivInternalsNonlinear" + m_DivMod "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivMod" + m_FileIO "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/FileIO" + m_FloatCompare "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/FloatCompare" + m_Functions "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Functions" + m_GeneralInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/GeneralInternals" + m_GetOpt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/GetOpt" + m_HexStrings "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/HexStrings" + m_Logarithm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Logarithm" + m__Math "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Math_" + m_ModInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/ModInternals" + m_ModInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/ModInternalsNonlinear" + m_Mul "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Mul" + m_MulInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/MulInternals" + m_MulInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/MulInternalsNonlinear" + m_Power "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Power" + m_Relations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Relations" + m_Seq "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Seq" + m_Seq_MergeSort "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Seq_MergeSort" + m_Sorting "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Sorting" + m_StandardLibrary "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary" + m_StandardLibraryInterop "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibraryInterop" + m_StandardLibrary_MemoryMath "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_MemoryMath" + m_StandardLibrary_Sequence "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_Sequence" + m_StandardLibrary_String "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_String" + m_StandardLibrary_UInt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_UInt" + m_Streams "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Streams" + m_UnicodeStrings "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/UnicodeStrings" + m__Unicode "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Unicode_" + m_Utf16EncodingForm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Utf16EncodingForm" + m_Utf8EncodingForm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Utf8EncodingForm" + m_Wrappers "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Wrappers" + m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes" + m_Sets "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/Sets" + m_StructuredEncryptionHeader "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionHeader" + m_StructuredEncryptionPaths "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionPaths" + m_StructuredEncryptionUtil "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionUtil" + m__System "github.com/dafny-lang/DafnyRuntimeGo/v4/System_" + _dafny "github.com/dafny-lang/DafnyRuntimeGo/v4/dafny" +) + +var _ = os.Args +var _ _dafny.Dummy__ +var _ m__System.Dummy__ +var _ m_Wrappers.Dummy__ +var _ m_BoundedInts.Dummy__ +var _ m_StandardLibrary_UInt.Dummy__ +var _ m_StandardLibrary_MemoryMath.Dummy__ +var _ m_StandardLibrary_Sequence.Dummy__ +var _ m_StandardLibrary_String.Dummy__ +var _ m_StandardLibrary.Dummy__ +var _ m_AwsCryptographyPrimitivesTypes.Dummy__ +var _ m_Random.Dummy__ +var _ m_Digest.Dummy__ +var _ m_WrappedHMAC.Dummy__ +var _ m_HKDF.Dummy__ +var _ m_WrappedHKDF.Dummy__ +var _ m_KdfCtr.Dummy__ +var _ m_AwsCryptographyPrimitivesOperations.Dummy__ +var _ m_AtomicPrimitives.Dummy__ +var _ m_ComAmazonawsDynamodbTypes.Dummy__ +var _ m_ComAmazonawsKmsTypes.Dummy__ +var _ m_AwsCryptographyKeyStoreTypes.Dummy__ +var _ m_AwsCryptographyMaterialProvidersTypes.Dummy__ +var _ m_Base64.Dummy__ +var _ m_AlgorithmSuites.Dummy__ +var _ m_Materials.Dummy__ +var _ m_Keyring.Dummy__ +var _ m_Relations.Dummy__ +var _ m_Seq_MergeSort.Dummy__ +var _ m__Math.Dummy__ +var _ m_Seq.Dummy__ +var _ m_Actions.Dummy__ +var _ m_CanonicalEncryptionContext.Dummy__ +var _ m_MaterialWrapping.Dummy__ +var _ m_IntermediateKeyWrapping.Dummy__ +var _ m_EdkWrapping.Dummy__ +var _ m_ErrorMessages.Dummy__ +var _ m_RawAESKeyring.Dummy__ +var _ m_AwsArnParsing.Dummy__ +var _ m_Constants.Dummy__ +var _ m_EcdhEdkWrapping.Dummy__ +var _ m_RawECDHKeyring.Dummy__ +var _ m_RawRSAKeyring.Dummy__ +var _ m_AwsKmsMrkMatchForDecrypt.Dummy__ +var _ m_AwsKmsUtils.Dummy__ +var _ m_AwsKmsKeyring.Dummy__ +var _ m_AwsKmsDiscoveryKeyring.Dummy__ +var _ m_AwsKmsEcdhKeyring.Dummy__ +var _ m_FileIO.Dummy__ +var _ m_LocalCMC.Dummy__ +var _ m_SynchronizedLocalCMC.Dummy__ +var _ m_StormTracker.Dummy__ +var _ m_StormTrackingCMC.Dummy__ +var _ m_CacheConstants.Dummy__ +var _ m_AwsKmsHierarchicalKeyring.Dummy__ +var _ m_AwsKmsMrkDiscoveryKeyring.Dummy__ +var _ m_AwsKmsMrkKeyring.Dummy__ +var _ m_AwsKmsRsaKeyring.Dummy__ +var _ m_MultiKeyring.Dummy__ +var _ m_AwsKmsMrkAreUnique.Dummy__ +var _ m_StrictMultiKeyring.Dummy__ +var _ m_Com_Amazonaws_Kms.Dummy__ +var _ m_Com_Amazonaws_Dynamodb.Dummy__ +var _ m_DiscoveryMultiKeyring.Dummy__ +var _ m_MrkAwareDiscoveryMultiKeyring.Dummy__ +var _ m_MrkAwareStrictMultiKeyring.Dummy__ +var _ m_CMM.Dummy__ +var _ m_Defaults.Dummy__ +var _ m_Commitment.Dummy__ +var _ m_DefaultCMM.Dummy__ +var _ m_DefaultClientSupplier.Dummy__ +var _ m_Utils.Dummy__ +var _ m_RequiredEncryptionContextCMM.Dummy__ +var _ m_AwsCryptographyMaterialProvidersOperations.Dummy__ +var _ m_MaterialProviders.Dummy__ +var _ m_KeyStoreErrorMessages.Dummy__ +var _ m_KmsArn.Dummy__ +var _ m_Structure.Dummy__ +var _ m_KMSKeystoreOperations.Dummy__ +var _ m_DDBKeystoreOperations.Dummy__ +var _ m_CreateKeys.Dummy__ +var _ m_CreateKeyStoreTable.Dummy__ +var _ m_GetKeys.Dummy__ +var _ m_AwsCryptographyKeyStoreOperations.Dummy__ +var _ m_KeyStore.Dummy__ +var _ m__Unicode.Dummy__ +var _ m_Functions.Dummy__ +var _ m_Utf8EncodingForm.Dummy__ +var _ m_Utf16EncodingForm.Dummy__ +var _ m_UnicodeStrings.Dummy__ +var _ m_GeneralInternals.Dummy__ +var _ m_MulInternalsNonlinear.Dummy__ +var _ m_MulInternals.Dummy__ +var _ m_Mul.Dummy__ +var _ m_ModInternalsNonlinear.Dummy__ +var _ m_DivInternalsNonlinear.Dummy__ +var _ m_ModInternals.Dummy__ +var _ m_DivInternals.Dummy__ +var _ m_DivMod.Dummy__ +var _ m_Power.Dummy__ +var _ m_Logarithm.Dummy__ +var _ m_StandardLibraryInterop.Dummy__ +var _ m_Streams.Dummy__ +var _ m_Sorting.Dummy__ +var _ m_HexStrings.Dummy__ +var _ m_GetOpt.Dummy__ +var _ m_FloatCompare.Dummy__ +var _ m_Base64Lemmas.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Dummy__ +var _ m_StructuredEncryptionUtil.Dummy__ +var _ m_Sets.Dummy__ +var _ m_StructuredEncryptionPaths.Dummy__ +var _ m_StructuredEncryptionHeader.Dummy__ + +type Dummy__ struct{} + +// Definition of class Default__ +type Default__ struct { + dummy byte +} + +func New_Default___() *Default__ { + _this := Default__{} + + return &_this +} + +type CompanionStruct_Default___ struct { +} + +var Companion_Default___ = CompanionStruct_Default___{} + +func (_this *Default__) Equals(other *Default__) bool { + return _this == other +} + +func (_this *Default__) EqualsGeneric(x interface{}) bool { + other, ok := x.(*Default__) + return ok && _this.Equals(other) +} + +func (*Default__) String() string { + return "StructuredEncryptionFooter.Default__" +} +func (_this *Default__) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = &Default__{} + +func (_static *CompanionStruct_Default___) GetCanonicalType(value m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.StructuredDataTerminal, isEncrypted bool) m_Wrappers.Result { + var _0_value__len uint64 = uint64(((value).Dtor_value()).Cardinality()) + _ = _0_value__len + if isEncrypted { + var _1_valueOrError0 m_Wrappers.Outcome = m_Wrappers.Companion_Default___.Need((uint64(2)) <= (_0_value__len), m_StructuredEncryptionUtil.Companion_Default___.E(_dafny.SeqOfString("Bad length."))) + _ = _1_valueOrError0 + if (_1_valueOrError0).IsFailure() { + return (_1_valueOrError0).PropagateFailure() + } else { + return m_Wrappers.Companion_Result_.Create_Success_(_dafny.Companion_Sequence_.Concatenate(m_StandardLibrary_UInt.Companion_Default___.UInt64ToSeq((_0_value__len)-(func() uint64 { return (uint64(2)) })()), Companion_Default___.ENCRYPTED())) + } + } else { + var _2_valueOrError1 m_Wrappers.Outcome = m_Wrappers.Companion_Default___.Need(m_StandardLibrary_UInt.Companion_Default___.HasUint64Len((value).Dtor_value()), m_StructuredEncryptionUtil.Companion_Default___.E(_dafny.SeqOfString("Bad length."))) + _ = _2_valueOrError1 + if (_2_valueOrError1).IsFailure() { + return (_2_valueOrError1).PropagateFailure() + } else { + return m_Wrappers.Companion_Result_.Create_Success_(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(m_StandardLibrary_UInt.Companion_Default___.UInt64ToSeq(_0_value__len), Companion_Default___.PLAINTEXT()), (value).Dtor_typeId())) + } + } +} +func (_static *CompanionStruct_Default___) GetCanonicalEncryptedField(fieldName _dafny.Sequence, value m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.StructuredDataTerminal) m_Wrappers.Result { + var _0_valueOrError0 m_Wrappers.Outcome = m_Wrappers.Companion_Default___.Need((uint64(2)) <= (uint64(((value).Dtor_value()).Cardinality())), m_StructuredEncryptionUtil.Companion_Default___.E(_dafny.SeqOfString("Bad length."))) + _ = _0_valueOrError0 + if (_0_valueOrError0).IsFailure() { + return (_0_valueOrError0).PropagateFailure() + } else { + return m_Wrappers.Companion_Result_.Create_Success_(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(fieldName, m_StandardLibrary_UInt.Companion_Default___.UInt64ToSeq((uint64(((value).Dtor_value()).Cardinality()))-(func() uint64 { return (uint64(2)) })())), Companion_Default___.ENCRYPTED()), (value).Dtor_value())) + } +} +func (_static *CompanionStruct_Default___) GetCanonicalPlaintextField(fieldName _dafny.Sequence, value m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.StructuredDataTerminal) m_Wrappers.Result { + var _0_valueOrError0 m_Wrappers.Outcome = m_Wrappers.Companion_Default___.Need(m_StandardLibrary_UInt.Companion_Default___.HasUint64Len((value).Dtor_value()), m_StructuredEncryptionUtil.Companion_Default___.E(_dafny.SeqOfString("Bad length."))) + _ = _0_valueOrError0 + if (_0_valueOrError0).IsFailure() { + return (_0_valueOrError0).PropagateFailure() + } else { + return m_Wrappers.Companion_Result_.Create_Success_(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(fieldName, m_StandardLibrary_UInt.Companion_Default___.UInt64ToSeq(uint64(((value).Dtor_value()).Cardinality()))), Companion_Default___.PLAINTEXT()), (value).Dtor_typeId()), (value).Dtor_value())) + } +} +func (_static *CompanionStruct_Default___) GetCanonicalItem(data m_StructuredEncryptionUtil.CanonCryptoItem) m_Wrappers.Result { + if ((data).Dtor_action()).Equals(m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Companion_CryptoAction_.Create_ENCRYPT__AND__SIGN_()) { + return Companion_Default___.GetCanonicalEncryptedField((data).Dtor_key(), (data).Dtor_data()) + } else { + return Companion_Default___.GetCanonicalPlaintextField((data).Dtor_key(), (data).Dtor_data()) + } +} +func (_static *CompanionStruct_Default___) CanonContent(data _dafny.Sequence) m_Wrappers.Result { + var _hresult m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(_dafny.EmptySeq) + _ = _hresult + var _0_i uint64 + _ = _0_i + _0_i = uint64((data).Cardinality()) + var _1_vectors _dafny.Sequence + _ = _1_vectors + _1_vectors = _dafny.SeqOf() + for (_0_i) != (uint64(0)) /* dircomp */ { + _0_i = (_0_i) - (func() uint64 { return (uint64(1)) })() + if !(((data).Select(uint32(_0_i)).(m_StructuredEncryptionUtil.CanonCryptoItem)).Dtor_action()).Equals(m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Companion_CryptoAction_.Create_DO__NOTHING_()) { + var _2_test m_Wrappers.Result + _ = _2_test + _2_test = Companion_Default___.GetCanonicalItem((data).Select(uint32(_0_i)).(m_StructuredEncryptionUtil.CanonCryptoItem)) + if (_2_test).Is_Failure() { + _hresult = m_Wrappers.Companion_Result_.Create_Failure_((_2_test).Dtor_error().(m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Error)) + return _hresult + } + _1_vectors = _dafny.Companion_Sequence_.Concatenate((_2_test).Dtor_value().(_dafny.Sequence), _1_vectors) + } + } + _hresult = m_Wrappers.Companion_Result_.Create_Success_(_1_vectors) + return _hresult + return _hresult +} +func (_static *CompanionStruct_Default___) CanonRecord(data _dafny.Sequence, header _dafny.Sequence, enc _dafny.Map) m_Wrappers.Result { + var _0_valueOrError0 m_Wrappers.Result = Companion_Default___.CanonContent(data) + _ = _0_valueOrError0 + if (_0_valueOrError0).IsFailure() { + return (_0_valueOrError0).PropagateFailure() + } else { + var _1_canon _dafny.Sequence = (_0_valueOrError0).Extract().(_dafny.Sequence) + _ = _1_canon + var _2_AAD _dafny.Sequence = m_StructuredEncryptionHeader.Companion_Default___.SerializeContext(enc) + _ = _2_AAD + var _3_valueOrError1 m_Wrappers.Outcome = m_Wrappers.Companion_Default___.Need(m_StandardLibrary_UInt.Companion_Default___.HasUint64Len(_2_AAD), m_StructuredEncryptionUtil.Companion_Default___.E(_dafny.SeqOfString("AAD too long."))) + _ = _3_valueOrError1 + if (_3_valueOrError1).IsFailure() { + return (_3_valueOrError1).PropagateFailure() + } else { + var _4_len _dafny.Sequence = m_StandardLibrary_UInt.Companion_Default___.UInt64ToSeq(uint64((_2_AAD).Cardinality())) + _ = _4_len + return m_Wrappers.Companion_Result_.Create_Success_(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(header, _4_len), _2_AAD), _1_canon)) + } + } +} +func (_static *CompanionStruct_Default___) CanonHash(data _dafny.Sequence, header _dafny.Sequence, enc _dafny.Map) m_Wrappers.Result { + var ret m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(_dafny.EmptySeq) + _ = ret + var _0_valueOrError0 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(_dafny.EmptySeq) + _ = _0_valueOrError0 + _0_valueOrError0 = Companion_Default___.CanonRecord(data, header, enc) + if (_0_valueOrError0).IsFailure() { + ret = (_0_valueOrError0).PropagateFailure() + return ret + } + var _1_data _dafny.Sequence + _ = _1_data + _1_data = (_0_valueOrError0).Extract().(_dafny.Sequence) + var _2_resultR m_Wrappers.Result + _ = _2_resultR + var _out0 m_Wrappers.Result + _ = _out0 + _out0 = m_Digest.Companion_Default___.Digest(m_AwsCryptographyPrimitivesTypes.Companion_DigestInput_.Create_DigestInput_(m_AwsCryptographyPrimitivesTypes.Companion_DigestAlgorithm_.Create_SHA__384_(), _1_data)) + _2_resultR = _out0 + ret = (_2_resultR).MapFailure(func(coer5 func(m_AwsCryptographyPrimitivesTypes.Error) m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Error) func(interface{}) interface{} { + return func(arg8 interface{}) interface{} { + return coer5(arg8.(m_AwsCryptographyPrimitivesTypes.Error)) + } + }(func(_3_e m_AwsCryptographyPrimitivesTypes.Error) m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Error { + return m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Companion_Error_.Create_AwsCryptographyPrimitives_(_3_e) + })) + return ret + return ret +} +func (_static *CompanionStruct_Default___) CreateFooter(client *m_AtomicPrimitives.AtomicPrimitivesClient, mat m_AwsCryptographyMaterialProvidersTypes.EncryptionMaterials, data _dafny.Sequence, header _dafny.Sequence) m_Wrappers.Result { + var ret m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(Companion_Footer_.Default()) + _ = ret + var _0_valueOrError0 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(_dafny.EmptySeq) + _ = _0_valueOrError0 + var _out0 m_Wrappers.Result + _ = _out0 + _out0 = Companion_Default___.CanonHash(data, header, (mat).Dtor_encryptionContext()) + _0_valueOrError0 = _out0 + if (_0_valueOrError0).IsFailure() { + ret = (_0_valueOrError0).PropagateFailure() + return ret + } + var _1_canonicalHash _dafny.Sequence + _ = _1_canonicalHash + _1_canonicalHash = (_0_valueOrError0).Extract().(_dafny.Sequence) + var _2_tags _dafny.Sequence + _ = _2_tags + _2_tags = _dafny.SeqOf() + var _hi0 uint64 = uint64(((mat).Dtor_encryptedDataKeys()).Cardinality()) + _ = _hi0 + for _3_i := uint64(0); _3_i < _hi0; _3_i++ { + var _4_input m_AwsCryptographyPrimitivesTypes.HMacInput + _ = _4_input + _4_input = m_AwsCryptographyPrimitivesTypes.Companion_HMacInput_.Create_HMacInput_((((mat).Dtor_algorithmSuite()).Dtor_symmetricSignature()).Dtor_HMAC(), (((mat).Dtor_symmetricSigningKeys()).Dtor_value().(_dafny.Sequence)).Select(uint32(_3_i)).(_dafny.Sequence), _1_canonicalHash) + var _5_hashR m_Wrappers.Result + _ = _5_hashR + _5_hashR = (client).HMac(_4_input) + var _6_valueOrError1 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(_dafny.EmptySeq) + _ = _6_valueOrError1 + _6_valueOrError1 = (_5_hashR).MapFailure(func(coer6 func(m_AwsCryptographyPrimitivesTypes.Error) m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Error) func(interface{}) interface{} { + return func(arg9 interface{}) interface{} { + return coer6(arg9.(m_AwsCryptographyPrimitivesTypes.Error)) + } + }(func(_7_e m_AwsCryptographyPrimitivesTypes.Error) m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Error { + return m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Companion_Error_.Create_AwsCryptographyPrimitives_(_7_e) + })) + if (_6_valueOrError1).IsFailure() { + ret = (_6_valueOrError1).PropagateFailure() + return ret + } + var _8_hash _dafny.Sequence + _ = _8_hash + _8_hash = (_6_valueOrError1).Extract().(_dafny.Sequence) + var _9_valueOrError2 m_Wrappers.Outcome = m_Wrappers.Companion_Outcome_.Default() + _ = _9_valueOrError2 + _9_valueOrError2 = m_Wrappers.Companion_Default___.Need((uint64((_8_hash).Cardinality())) == (uint64(48)), m_StructuredEncryptionUtil.Companion_Default___.E(_dafny.SeqOfString("Bad hash length"))) + if (_9_valueOrError2).IsFailure() { + ret = (_9_valueOrError2).PropagateFailure() + return ret + } + _2_tags = _dafny.Companion_Sequence_.Concatenate(_2_tags, _dafny.SeqOf(_8_hash)) + } + if (((mat).Dtor_algorithmSuite()).Dtor_signature()).Is_ECDSA() { + var _10_verInput m_AwsCryptographyPrimitivesTypes.ECDSASignInput + _ = _10_verInput + _10_verInput = m_AwsCryptographyPrimitivesTypes.Companion_ECDSASignInput_.Create_ECDSASignInput_(((((mat).Dtor_algorithmSuite()).Dtor_signature()).Dtor_ECDSA()).Dtor_curve(), ((mat).Dtor_signingKey()).Dtor_value().(_dafny.Sequence), _1_canonicalHash) + var _11_sigR m_Wrappers.Result + _ = _11_sigR + var _out1 m_Wrappers.Result + _ = _out1 + _out1 = (client).ECDSASign(_10_verInput) + _11_sigR = _out1 + var _12_valueOrError3 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(_dafny.EmptySeq) + _ = _12_valueOrError3 + _12_valueOrError3 = (_11_sigR).MapFailure(func(coer7 func(m_AwsCryptographyPrimitivesTypes.Error) m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Error) func(interface{}) interface{} { + return func(arg10 interface{}) interface{} { + return coer7(arg10.(m_AwsCryptographyPrimitivesTypes.Error)) + } + }(func(_13_e m_AwsCryptographyPrimitivesTypes.Error) m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Error { + return m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Companion_Error_.Create_AwsCryptographyPrimitives_(_13_e) + })) + if (_12_valueOrError3).IsFailure() { + ret = (_12_valueOrError3).PropagateFailure() + return ret + } + var _14_sig _dafny.Sequence + _ = _14_sig + _14_sig = (_12_valueOrError3).Extract().(_dafny.Sequence) + var _15_valueOrError4 m_Wrappers.Outcome = m_Wrappers.Companion_Outcome_.Default() + _ = _15_valueOrError4 + _15_valueOrError4 = m_Wrappers.Companion_Default___.Need((uint64((_14_sig).Cardinality())) == (Companion_Default___.SignatureSize()), m_StructuredEncryptionUtil.Companion_Default___.E(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("Signature is "), m_StandardLibrary_String.Companion_Default___.Base10Int2String(_dafny.IntOfUint32((_14_sig).Cardinality()))), _dafny.SeqOfString(" bytes, should have been ")), m_StandardLibrary_String.Companion_Default___.Base10Int2String(_dafny.IntOfUint64(Companion_Default___.SignatureSize()))), _dafny.SeqOfString(" bytes.")))) + if (_15_valueOrError4).IsFailure() { + ret = (_15_valueOrError4).PropagateFailure() + return ret + } + ret = m_Wrappers.Companion_Result_.Create_Success_(Companion_Footer_.Create_Footer_(_2_tags, m_Wrappers.Companion_Option_.Create_Some_(_14_sig))) + return ret + } else { + ret = m_Wrappers.Companion_Result_.Create_Success_(Companion_Footer_.Create_Footer_(_2_tags, m_Wrappers.Companion_Option_.Create_None_())) + return ret + } + return ret +} +func (_static *CompanionStruct_Default___) SerializeTags(tags _dafny.Sequence) _dafny.Sequence { + var _hresult _dafny.Sequence = _dafny.EmptySeq + _ = _hresult + var _0_result _dafny.Sequence + _ = _0_result + _0_result = _dafny.SeqOf() + var _lo0 uint64 = uint64(0) + _ = _lo0 + for _1_i := uint64((tags).Cardinality()); _lo0 < _1_i; { + _1_i-- + _0_result = _dafny.Companion_Sequence_.Concatenate((tags).Select(uint32(_1_i)).(_dafny.Sequence), _0_result) + } + _hresult = _0_result + return _hresult + return _hresult +} +func (_static *CompanionStruct_Default___) SerializeSig(sig m_Wrappers.Option) _dafny.Sequence { + if (sig).Is_Some() { + return (sig).Dtor_value().(_dafny.Sequence) + } else { + return _dafny.SeqOf() + } +} +func (_static *CompanionStruct_Default___) GatherTags(data _dafny.Sequence) _dafny.Sequence { + var _0___accumulator _dafny.Sequence = _dafny.SeqOf() + _ = _0___accumulator + goto TAIL_CALL_START +TAIL_CALL_START: + if (uint64((data).Cardinality())) == (uint64(0)) { + return _dafny.Companion_Sequence_.Concatenate(_0___accumulator, _dafny.SeqOf()) + } else { + _0___accumulator = _dafny.Companion_Sequence_.Concatenate(_0___accumulator, _dafny.SeqOf((data).Subsequence(uint32(uint32(0)), uint32(Companion_Default___.RecipientTagSize())))) + var _in0 _dafny.Sequence = (data).Drop(uint32(Companion_Default___.RecipientTagSize())) + _ = _in0 + data = _in0 + goto TAIL_CALL_START + } +} +func (_static *CompanionStruct_Default___) DeserializeFooter(data _dafny.Sequence, hasSig bool) m_Wrappers.Result { + var _0_data__len uint64 = uint64((data).Cardinality()) + _ = _0_data__len + if hasSig { + var _1_valueOrError0 m_Wrappers.Outcome = m_Wrappers.Companion_Default___.Need((_0_data__len) >= ((Companion_Default___.RecipientTagSize())+(Companion_Default___.SignatureSize())), m_StructuredEncryptionUtil.Companion_Default___.E(_dafny.SeqOfString("Footer too short."))) + _ = _1_valueOrError0 + if (_1_valueOrError0).IsFailure() { + return (_1_valueOrError0).PropagateFailure() + } else { + var _2_valueOrError1 m_Wrappers.Outcome = m_Wrappers.Companion_Default___.Need((((_0_data__len)-(func() uint64 { return (Companion_Default___.SignatureSize()) })())%(Companion_Default___.RecipientTagSize())) == (uint64(0)), m_StructuredEncryptionUtil.Companion_Default___.E(_dafny.SeqOfString("Mangled signed footer has strange size"))) + _ = _2_valueOrError1 + if (_2_valueOrError1).IsFailure() { + return (_2_valueOrError1).PropagateFailure() + } else { + return m_Wrappers.Companion_Result_.Create_Success_(Companion_Footer_.Create_Footer_(Companion_Default___.GatherTags((data).Take(uint32((_0_data__len)-(func() uint64 { return (Companion_Default___.SignatureSize()) })()))), m_Wrappers.Companion_Option_.Create_Some_((data).Drop(uint32((_0_data__len)-(func() uint64 { return (Companion_Default___.SignatureSize()) })()))))) + } + } + } else { + var _3_valueOrError2 m_Wrappers.Outcome = m_Wrappers.Companion_Default___.Need(((_0_data__len)%(Companion_Default___.RecipientTagSize())) == (uint64(0)), m_StructuredEncryptionUtil.Companion_Default___.E(_dafny.SeqOfString("Mangled unsigned footer has strange size"))) + _ = _3_valueOrError2 + if (_3_valueOrError2).IsFailure() { + return (_3_valueOrError2).PropagateFailure() + } else { + var _4_valueOrError3 m_Wrappers.Outcome = m_Wrappers.Companion_Default___.Need((_0_data__len) >= (Companion_Default___.RecipientTagSize()), m_StructuredEncryptionUtil.Companion_Default___.E(_dafny.SeqOfString("Footer too short."))) + _ = _4_valueOrError3 + if (_4_valueOrError3).IsFailure() { + return (_4_valueOrError3).PropagateFailure() + } else { + return m_Wrappers.Companion_Result_.Create_Success_(Companion_Footer_.Create_Footer_(Companion_Default___.GatherTags(data), m_Wrappers.Companion_Option_.Create_None_())) + } + } + } +} +func (_static *CompanionStruct_Default___) ENCRYPTED() _dafny.Sequence { + var _0_s _dafny.Sequence = _dafny.SeqOf(uint8(69), uint8(78), uint8(67), uint8(82), uint8(89), uint8(80), uint8(84), uint8(69), uint8(68)) + _ = _0_s + return _0_s +} +func (_static *CompanionStruct_Default___) PLAINTEXT() _dafny.Sequence { + var _0_s _dafny.Sequence = _dafny.SeqOf(uint8(80), uint8(76), uint8(65), uint8(73), uint8(78), uint8(84), uint8(69), uint8(88), uint8(84)) + _ = _0_s + return _0_s +} +func (_static *CompanionStruct_Default___) RecipientTagSize() uint64 { + return uint64(48) +} +func (_static *CompanionStruct_Default___) SignatureSize() uint64 { + return uint64(103) +} + +// End of class Default__ + +// Definition of class RecipientTag +type RecipientTag struct { +} + +func New_RecipientTag_() *RecipientTag { + _this := RecipientTag{} + + return &_this +} + +type CompanionStruct_RecipientTag_ struct { +} + +var Companion_RecipientTag_ = CompanionStruct_RecipientTag_{} + +func (*RecipientTag) String() string { + return "StructuredEncryptionFooter.RecipientTag" +} + +// End of class RecipientTag + +func Type_RecipientTag_() _dafny.TypeDescriptor { + return type_RecipientTag_{} +} + +type type_RecipientTag_ struct { +} + +func (_this type_RecipientTag_) Default() interface{} { + return _dafny.EmptySeq +} + +func (_this type_RecipientTag_) String() string { + return "StructuredEncryptionFooter.RecipientTag" +} +func (_this *CompanionStruct_RecipientTag_) Is_(__source _dafny.Sequence) bool { + var _0_x _dafny.Sequence = (__source) + _ = _0_x + return (_dafny.IntOfUint32((_0_x).Cardinality())).Cmp(_dafny.IntOfUint64(Companion_Default___.RecipientTagSize())) == 0 +} + +// Definition of class Signature +type Signature struct { +} + +func New_Signature_() *Signature { + _this := Signature{} + + return &_this +} + +type CompanionStruct_Signature_ struct { +} + +var Companion_Signature_ = CompanionStruct_Signature_{} + +func (*Signature) String() string { + return "StructuredEncryptionFooter.Signature" +} + +// End of class Signature + +func Type_Signature_() _dafny.TypeDescriptor { + return type_Signature_{} +} + +type type_Signature_ struct { +} + +func (_this type_Signature_) Default() interface{} { + return _dafny.EmptySeq +} + +func (_this type_Signature_) String() string { + return "StructuredEncryptionFooter.Signature" +} +func (_this *CompanionStruct_Signature_) Is_(__source _dafny.Sequence) bool { + var _1_x _dafny.Sequence = (__source) + _ = _1_x + return (_dafny.IntOfUint32((_1_x).Cardinality())).Cmp(_dafny.IntOfUint64(Companion_Default___.SignatureSize())) == 0 +} + +// Definition of datatype Footer +type Footer struct { + Data_Footer_ +} + +func (_this Footer) Get_() Data_Footer_ { + return _this.Data_Footer_ +} + +type Data_Footer_ interface { + isFooter() +} + +type CompanionStruct_Footer_ struct { +} + +var Companion_Footer_ = CompanionStruct_Footer_{} + +type Footer_Footer struct { + Tags _dafny.Sequence + Sig m_Wrappers.Option +} + +func (Footer_Footer) isFooter() {} + +func (CompanionStruct_Footer_) Create_Footer_(Tags _dafny.Sequence, Sig m_Wrappers.Option) Footer { + return Footer{Footer_Footer{Tags, Sig}} +} + +func (_this Footer) Is_Footer() bool { + _, ok := _this.Get_().(Footer_Footer) + return ok +} + +func (CompanionStruct_Footer_) Default() Footer { + return Companion_Footer_.Create_Footer_(_dafny.EmptySeq, m_Wrappers.Companion_Option_.Default()) +} + +func (_this Footer) Dtor_tags() _dafny.Sequence { + return _this.Get_().(Footer_Footer).Tags +} + +func (_this Footer) Dtor_sig() m_Wrappers.Option { + return _this.Get_().(Footer_Footer).Sig +} + +func (_this Footer) String() string { + switch data := _this.Get_().(type) { + case nil: + return "null" + case Footer_Footer: + { + return "StructuredEncryptionFooter.Footer.Footer" + "(" + _dafny.String(data.Tags) + ", " + _dafny.String(data.Sig) + ")" + } + default: + { + return "" + } + } +} + +func (_this Footer) Equals(other Footer) bool { + switch data1 := _this.Get_().(type) { + case Footer_Footer: + { + data2, ok := other.Get_().(Footer_Footer) + return ok && data1.Tags.Equals(data2.Tags) && data1.Sig.Equals(data2.Sig) + } + default: + { + return false // unexpected + } + } +} + +func (_this Footer) EqualsGeneric(other interface{}) bool { + typed, ok := other.(Footer) + return ok && _this.Equals(typed) +} + +func Type_Footer_() _dafny.TypeDescriptor { + return type_Footer_{} +} + +type type_Footer_ struct { +} + +func (_this type_Footer_) Default() interface{} { + return Companion_Footer_.Default() +} + +func (_this type_Footer_) String() string { + return "StructuredEncryptionFooter.Footer" +} +func (_this Footer) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = Footer{} + +func (_this Footer) Serialize() _dafny.Sequence { + { + return _dafny.Companion_Sequence_.Concatenate(Companion_Default___.SerializeTags((_this).Dtor_tags()), Companion_Default___.SerializeSig((_this).Dtor_sig())) + } +} +func (_this Footer) MakeTerminal() m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.StructuredDataTerminal { + { + return m_StructuredEncryptionUtil.Companion_Default___.ValueToData((_this).Serialize(), m_StructuredEncryptionUtil.Companion_Default___.BYTES__TYPE__ID()) + } +} +func (_this Footer) Validate(client *m_AtomicPrimitives.AtomicPrimitivesClient, mat m_AwsCryptographyMaterialProvidersTypes.DecryptionMaterials, edks _dafny.Sequence, data _dafny.Sequence, header _dafny.Sequence) m_Wrappers.Result { + { + var ret m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(false) + _ = ret + var _0_valueOrError0 m_Wrappers.Outcome = m_Wrappers.Companion_Outcome_.Default() + _ = _0_valueOrError0 + _0_valueOrError0 = m_Wrappers.Companion_Default___.Need((uint64((edks).Cardinality())) == (uint64(((_this).Dtor_tags()).Cardinality())), m_StructuredEncryptionUtil.Companion_Default___.E(_dafny.SeqOfString("There are a different number of recipient tags in the stored header than there are in the decryption materials."))) + if (_0_valueOrError0).IsFailure() { + ret = (_0_valueOrError0).PropagateFailure() + return ret + } + var _1_valueOrError1 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(_dafny.EmptySeq) + _ = _1_valueOrError1 + var _out0 m_Wrappers.Result + _ = _out0 + _out0 = Companion_Default___.CanonHash(data, header, (mat).Dtor_encryptionContext()) + _1_valueOrError1 = _out0 + if (_1_valueOrError1).IsFailure() { + ret = (_1_valueOrError1).PropagateFailure() + return ret + } + var _2_canonicalHash _dafny.Sequence + _ = _2_canonicalHash + _2_canonicalHash = (_1_valueOrError1).Extract().(_dafny.Sequence) + var _3_input m_AwsCryptographyPrimitivesTypes.HMacInput + _ = _3_input + _3_input = m_AwsCryptographyPrimitivesTypes.Companion_HMacInput_.Create_HMacInput_((((mat).Dtor_algorithmSuite()).Dtor_symmetricSignature()).Dtor_HMAC(), ((mat).Dtor_symmetricSigningKey()).Dtor_value().(_dafny.Sequence), _2_canonicalHash) + var _4_hashR m_Wrappers.Result + _ = _4_hashR + _4_hashR = (client).HMac(_3_input) + var _5_valueOrError2 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(_dafny.EmptySeq) + _ = _5_valueOrError2 + _5_valueOrError2 = (_4_hashR).MapFailure(func(coer8 func(m_AwsCryptographyPrimitivesTypes.Error) m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Error) func(interface{}) interface{} { + return func(arg11 interface{}) interface{} { + return coer8(arg11.(m_AwsCryptographyPrimitivesTypes.Error)) + } + }(func(_6_e m_AwsCryptographyPrimitivesTypes.Error) m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Error { + return m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Companion_Error_.Create_AwsCryptographyPrimitives_(_6_e) + })) + if (_5_valueOrError2).IsFailure() { + ret = (_5_valueOrError2).PropagateFailure() + return ret + } + var _7_hash _dafny.Sequence + _ = _7_hash + _7_hash = (_5_valueOrError2).Extract().(_dafny.Sequence) + var _8_valueOrError3 m_Wrappers.Outcome = m_Wrappers.Companion_Outcome_.Default() + _ = _8_valueOrError3 + _8_valueOrError3 = m_Wrappers.Companion_Default___.Need((uint64((_7_hash).Cardinality())) == (uint64(48)), m_StructuredEncryptionUtil.Companion_Default___.E(_dafny.SeqOfString("Bad hash length"))) + if (_8_valueOrError3).IsFailure() { + ret = (_8_valueOrError3).PropagateFailure() + return ret + } + var _9_foundTag bool + _ = _9_foundTag + _9_foundTag = false + { + var _hi0 uint64 = uint64(((_this).Dtor_tags()).Cardinality()) + _ = _hi0 + for _10_i := uint64(0); _10_i < _hi0; _10_i++ { + { + if m_StructuredEncryptionUtil.Companion_Default___.ConstantTimeEquals(_7_hash, ((_this).Dtor_tags()).Select(uint32(_10_i)).(_dafny.Sequence)) { + _9_foundTag = true + goto L0 + } + goto C0 + } + C0: + } + goto L0 + } + L0: + var _11_valueOrError4 m_Wrappers.Outcome = m_Wrappers.Companion_Outcome_.Default() + _ = _11_valueOrError4 + _11_valueOrError4 = m_Wrappers.Companion_Default___.Need(_9_foundTag, m_StructuredEncryptionUtil.Companion_Default___.E(_dafny.SeqOfString("Signature of record does not match the signature computed when the record was encrypted."))) + if (_11_valueOrError4).IsFailure() { + ret = (_11_valueOrError4).PropagateFailure() + return ret + } + var _12_valueOrError5 m_Wrappers.Outcome = m_Wrappers.Companion_Outcome_.Default() + _ = _12_valueOrError5 + _12_valueOrError5 = m_Wrappers.Companion_Default___.Need((((_this).Dtor_sig()).Is_Some()) == ((((mat).Dtor_algorithmSuite()).Dtor_signature()).Is_ECDSA()), m_StructuredEncryptionUtil.Companion_Default___.E(_dafny.SeqOfString("Internal error. Signature both does and does not exist."))) + if (_12_valueOrError5).IsFailure() { + ret = (_12_valueOrError5).PropagateFailure() + return ret + } + if ((_this).Dtor_sig()).Is_Some() { + var _13_verInput m_AwsCryptographyPrimitivesTypes.ECDSAVerifyInput + _ = _13_verInput + _13_verInput = m_AwsCryptographyPrimitivesTypes.Companion_ECDSAVerifyInput_.Create_ECDSAVerifyInput_(((((mat).Dtor_algorithmSuite()).Dtor_signature()).Dtor_ECDSA()).Dtor_curve(), ((mat).Dtor_verificationKey()).Dtor_value().(_dafny.Sequence), _2_canonicalHash, ((_this).Dtor_sig()).Dtor_value().(_dafny.Sequence)) + var _14_verR m_Wrappers.Result + _ = _14_verR + var _out1 m_Wrappers.Result + _ = _out1 + _out1 = (client).ECDSAVerify(_13_verInput) + _14_verR = _out1 + var _15_valueOrError6 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(false) + _ = _15_valueOrError6 + _15_valueOrError6 = (_14_verR).MapFailure(func(coer9 func(m_AwsCryptographyPrimitivesTypes.Error) m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Error) func(interface{}) interface{} { + return func(arg12 interface{}) interface{} { + return coer9(arg12.(m_AwsCryptographyPrimitivesTypes.Error)) + } + }(func(_16_e m_AwsCryptographyPrimitivesTypes.Error) m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Error { + return m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Companion_Error_.Create_AwsCryptographyPrimitives_(_16_e) + })) + if (_15_valueOrError6).IsFailure() { + ret = (_15_valueOrError6).PropagateFailure() + return ret + } + var _17_ver bool + _ = _17_ver + _17_ver = (_15_valueOrError6).Extract().(bool) + var _18_valueOrError7 m_Wrappers.Outcome = m_Wrappers.Companion_Outcome_.Default() + _ = _18_valueOrError7 + _18_valueOrError7 = m_Wrappers.Companion_Default___.Need(_17_ver, m_StructuredEncryptionUtil.Companion_Default___.E(_dafny.SeqOfString("Signature did not verify"))) + if (_18_valueOrError7).IsFailure() { + ret = (_18_valueOrError7).PropagateFailure() + return ret + } + } + ret = m_Wrappers.Companion_Result_.Create_Success_(true) + return ret + return ret + } +} + +// End of datatype Footer diff --git a/releases/go/dynamodb-esdk/StructuredEncryptionHeader/StructuredEncryptionHeader.go b/releases/go/dynamodb-esdk/StructuredEncryptionHeader/StructuredEncryptionHeader.go new file mode 100644 index 000000000..acab66311 --- /dev/null +++ b/releases/go/dynamodb-esdk/StructuredEncryptionHeader/StructuredEncryptionHeader.go @@ -0,0 +1,1622 @@ +// Package StructuredEncryptionHeader +// Dafny module StructuredEncryptionHeader compiled into Go + +package StructuredEncryptionHeader + +import ( + os "os" + + m_ComAmazonawsDynamodbTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/dynamodb/ComAmazonawsDynamodbTypes" + m_Com_Amazonaws_Dynamodb "github.com/aws/aws-cryptographic-material-providers-library/releases/go/dynamodb/Com_Amazonaws_Dynamodb" + m_ComAmazonawsKmsTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/kms/ComAmazonawsKmsTypes" + m_Com_Amazonaws_Kms "github.com/aws/aws-cryptographic-material-providers-library/releases/go/kms/Com_Amazonaws_Kms" + m_AlgorithmSuites "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AlgorithmSuites" + m_AwsArnParsing "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsArnParsing" + m_AwsCryptographyKeyStoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyKeyStoreOperations" + m_AwsCryptographyKeyStoreTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyKeyStoreTypes" + m_AwsCryptographyMaterialProvidersOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyMaterialProvidersOperations" + m_AwsCryptographyMaterialProvidersTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyMaterialProvidersTypes" + m_AwsKmsDiscoveryKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsDiscoveryKeyring" + m_AwsKmsEcdhKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsEcdhKeyring" + m_AwsKmsHierarchicalKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsHierarchicalKeyring" + m_AwsKmsKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsKeyring" + m_AwsKmsMrkAreUnique "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkAreUnique" + m_AwsKmsMrkDiscoveryKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkDiscoveryKeyring" + m_AwsKmsMrkKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkKeyring" + m_AwsKmsMrkMatchForDecrypt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkMatchForDecrypt" + m_AwsKmsRsaKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsRsaKeyring" + m_AwsKmsUtils "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsUtils" + m_CMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CMM" + m_CacheConstants "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CacheConstants" + m_CanonicalEncryptionContext "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CanonicalEncryptionContext" + m_Commitment "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Commitment" + m_Constants "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Constants" + m_CreateKeyStoreTable "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CreateKeyStoreTable" + m_CreateKeys "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CreateKeys" + m_DDBKeystoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DDBKeystoreOperations" + m_DefaultCMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DefaultCMM" + m_DefaultClientSupplier "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DefaultClientSupplier" + m_Defaults "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Defaults" + m_DiscoveryMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DiscoveryMultiKeyring" + m_EcdhEdkWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/EcdhEdkWrapping" + m_EdkWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/EdkWrapping" + m_ErrorMessages "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/ErrorMessages" + m_GetKeys "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/GetKeys" + m_IntermediateKeyWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/IntermediateKeyWrapping" + m_KMSKeystoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KMSKeystoreOperations" + m_KeyStore "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KeyStore" + m_KeyStoreErrorMessages "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KeyStoreErrorMessages" + m_Keyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Keyring" + m_KmsArn "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KmsArn" + m_LocalCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/LocalCMC" + m_MaterialProviders "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MaterialProviders" + m_MaterialWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MaterialWrapping" + m_Materials "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Materials" + m_MrkAwareDiscoveryMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MrkAwareDiscoveryMultiKeyring" + m_MrkAwareStrictMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MrkAwareStrictMultiKeyring" + m_MultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MultiKeyring" + m_RawAESKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawAESKeyring" + m_RawECDHKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawECDHKeyring" + m_RawRSAKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawRSAKeyring" + m_RequiredEncryptionContextCMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RequiredEncryptionContextCMM" + m_StormTracker "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StormTracker" + m_StormTrackingCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StormTrackingCMC" + m_StrictMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StrictMultiKeyring" + m_Structure "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Structure" + m_SynchronizedLocalCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/SynchronizedLocalCMC" + m_Utils "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Utils" + m_AtomicPrimitives "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AtomicPrimitives" + m_AwsCryptographyPrimitivesOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AwsCryptographyPrimitivesOperations" + m_AwsCryptographyPrimitivesTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AwsCryptographyPrimitivesTypes" + m_Digest "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/Digest" + m_HKDF "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/HKDF" + m_KdfCtr "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/KdfCtr" + m_Random "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/Random" + m_WrappedHKDF "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/WrappedHKDF" + m_WrappedHMAC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/WrappedHMAC" + m_Actions "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Actions" + m_Base64 "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Base64" + m_Base64Lemmas "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Base64Lemmas" + m_BoundedInts "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/BoundedInts" + m_DivInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivInternals" + m_DivInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivInternalsNonlinear" + m_DivMod "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivMod" + m_FileIO "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/FileIO" + m_FloatCompare "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/FloatCompare" + m_Functions "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Functions" + m_GeneralInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/GeneralInternals" + m_GetOpt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/GetOpt" + m_HexStrings "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/HexStrings" + m_Logarithm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Logarithm" + m__Math "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Math_" + m_ModInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/ModInternals" + m_ModInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/ModInternalsNonlinear" + m_Mul "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Mul" + m_MulInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/MulInternals" + m_MulInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/MulInternalsNonlinear" + m_Power "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Power" + m_Relations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Relations" + m_Seq "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Seq" + m_Seq_MergeSort "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Seq_MergeSort" + m_SortedSets "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/SortedSets" + m_Sorting "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Sorting" + m_StandardLibrary "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary" + m_StandardLibraryInterop "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibraryInterop" + m_StandardLibrary_MemoryMath "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_MemoryMath" + m_StandardLibrary_Sequence "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_Sequence" + m_StandardLibrary_String "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_String" + m_StandardLibrary_UInt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_UInt" + m_Streams "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Streams" + m_UTF8 "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/UTF8" + m_UnicodeStrings "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/UnicodeStrings" + m__Unicode "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Unicode_" + m_Utf16EncodingForm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Utf16EncodingForm" + m_Utf8EncodingForm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Utf8EncodingForm" + m_Wrappers "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Wrappers" + m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes" + m_Sets "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/Sets" + m_StructuredEncryptionPaths "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionPaths" + m_StructuredEncryptionUtil "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionUtil" + m__System "github.com/dafny-lang/DafnyRuntimeGo/v4/System_" + _dafny "github.com/dafny-lang/DafnyRuntimeGo/v4/dafny" +) + +var _ = os.Args +var _ _dafny.Dummy__ +var _ m__System.Dummy__ +var _ m_Wrappers.Dummy__ +var _ m_BoundedInts.Dummy__ +var _ m_StandardLibrary_UInt.Dummy__ +var _ m_StandardLibrary_MemoryMath.Dummy__ +var _ m_StandardLibrary_Sequence.Dummy__ +var _ m_StandardLibrary_String.Dummy__ +var _ m_StandardLibrary.Dummy__ +var _ m_AwsCryptographyPrimitivesTypes.Dummy__ +var _ m_Random.Dummy__ +var _ m_Digest.Dummy__ +var _ m_WrappedHMAC.Dummy__ +var _ m_HKDF.Dummy__ +var _ m_WrappedHKDF.Dummy__ +var _ m_KdfCtr.Dummy__ +var _ m_AwsCryptographyPrimitivesOperations.Dummy__ +var _ m_AtomicPrimitives.Dummy__ +var _ m_ComAmazonawsDynamodbTypes.Dummy__ +var _ m_ComAmazonawsKmsTypes.Dummy__ +var _ m_AwsCryptographyKeyStoreTypes.Dummy__ +var _ m_AwsCryptographyMaterialProvidersTypes.Dummy__ +var _ m_Base64.Dummy__ +var _ m_AlgorithmSuites.Dummy__ +var _ m_Materials.Dummy__ +var _ m_Keyring.Dummy__ +var _ m_Relations.Dummy__ +var _ m_Seq_MergeSort.Dummy__ +var _ m__Math.Dummy__ +var _ m_Seq.Dummy__ +var _ m_Actions.Dummy__ +var _ m_CanonicalEncryptionContext.Dummy__ +var _ m_MaterialWrapping.Dummy__ +var _ m_IntermediateKeyWrapping.Dummy__ +var _ m_EdkWrapping.Dummy__ +var _ m_ErrorMessages.Dummy__ +var _ m_RawAESKeyring.Dummy__ +var _ m_AwsArnParsing.Dummy__ +var _ m_Constants.Dummy__ +var _ m_EcdhEdkWrapping.Dummy__ +var _ m_RawECDHKeyring.Dummy__ +var _ m_RawRSAKeyring.Dummy__ +var _ m_AwsKmsMrkMatchForDecrypt.Dummy__ +var _ m_AwsKmsUtils.Dummy__ +var _ m_AwsKmsKeyring.Dummy__ +var _ m_AwsKmsDiscoveryKeyring.Dummy__ +var _ m_AwsKmsEcdhKeyring.Dummy__ +var _ m_FileIO.Dummy__ +var _ m_LocalCMC.Dummy__ +var _ m_SynchronizedLocalCMC.Dummy__ +var _ m_StormTracker.Dummy__ +var _ m_StormTrackingCMC.Dummy__ +var _ m_CacheConstants.Dummy__ +var _ m_AwsKmsHierarchicalKeyring.Dummy__ +var _ m_AwsKmsMrkDiscoveryKeyring.Dummy__ +var _ m_AwsKmsMrkKeyring.Dummy__ +var _ m_AwsKmsRsaKeyring.Dummy__ +var _ m_MultiKeyring.Dummy__ +var _ m_AwsKmsMrkAreUnique.Dummy__ +var _ m_StrictMultiKeyring.Dummy__ +var _ m_Com_Amazonaws_Kms.Dummy__ +var _ m_Com_Amazonaws_Dynamodb.Dummy__ +var _ m_DiscoveryMultiKeyring.Dummy__ +var _ m_MrkAwareDiscoveryMultiKeyring.Dummy__ +var _ m_MrkAwareStrictMultiKeyring.Dummy__ +var _ m_CMM.Dummy__ +var _ m_Defaults.Dummy__ +var _ m_Commitment.Dummy__ +var _ m_DefaultCMM.Dummy__ +var _ m_DefaultClientSupplier.Dummy__ +var _ m_Utils.Dummy__ +var _ m_RequiredEncryptionContextCMM.Dummy__ +var _ m_AwsCryptographyMaterialProvidersOperations.Dummy__ +var _ m_MaterialProviders.Dummy__ +var _ m_KeyStoreErrorMessages.Dummy__ +var _ m_KmsArn.Dummy__ +var _ m_Structure.Dummy__ +var _ m_KMSKeystoreOperations.Dummy__ +var _ m_DDBKeystoreOperations.Dummy__ +var _ m_CreateKeys.Dummy__ +var _ m_CreateKeyStoreTable.Dummy__ +var _ m_GetKeys.Dummy__ +var _ m_AwsCryptographyKeyStoreOperations.Dummy__ +var _ m_KeyStore.Dummy__ +var _ m__Unicode.Dummy__ +var _ m_Functions.Dummy__ +var _ m_Utf8EncodingForm.Dummy__ +var _ m_Utf16EncodingForm.Dummy__ +var _ m_UnicodeStrings.Dummy__ +var _ m_GeneralInternals.Dummy__ +var _ m_MulInternalsNonlinear.Dummy__ +var _ m_MulInternals.Dummy__ +var _ m_Mul.Dummy__ +var _ m_ModInternalsNonlinear.Dummy__ +var _ m_DivInternalsNonlinear.Dummy__ +var _ m_ModInternals.Dummy__ +var _ m_DivInternals.Dummy__ +var _ m_DivMod.Dummy__ +var _ m_Power.Dummy__ +var _ m_Logarithm.Dummy__ +var _ m_StandardLibraryInterop.Dummy__ +var _ m_Streams.Dummy__ +var _ m_Sorting.Dummy__ +var _ m_HexStrings.Dummy__ +var _ m_GetOpt.Dummy__ +var _ m_FloatCompare.Dummy__ +var _ m_Base64Lemmas.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Dummy__ +var _ m_StructuredEncryptionUtil.Dummy__ +var _ m_Sets.Dummy__ +var _ m_StructuredEncryptionPaths.Dummy__ + +type Dummy__ struct{} + +// Definition of class Default__ +type Default__ struct { + dummy byte +} + +func New_Default___() *Default__ { + _this := Default__{} + + return &_this +} + +type CompanionStruct_Default___ struct { +} + +var Companion_Default___ = CompanionStruct_Default___{} + +func (_this *Default__) Equals(other *Default__) bool { + return _this == other +} + +func (_this *Default__) EqualsGeneric(x interface{}) bool { + other, ok := x.(*Default__) + return ok && _this.Equals(other) +} + +func (*Default__) String() string { + return "StructuredEncryptionHeader.Default__" +} +func (_this *Default__) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = &Default__{} + +func (_static *CompanionStruct_Default___) ValidVersion(x uint8) bool { + return ((x) == (uint8(1))) || ((x) == (uint8(2))) +} +func (_static *CompanionStruct_Default___) IsVersion2Schema(data _dafny.Sequence, pos uint32) bool { + goto TAIL_CALL_START +TAIL_CALL_START: + if (pos) == (uint32((data).Cardinality())) { + return false + } else if (((data).Select(uint32(pos)).(m_StructuredEncryptionUtil.CanonCryptoItem)).Dtor_action()).Equals(m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Companion_CryptoAction_.Create_SIGN__AND__INCLUDE__IN__ENCRYPTION__CONTEXT_()) { + return true + } else { + var _in0 _dafny.Sequence = data + _ = _in0 + var _in1 uint32 = (pos) + (uint32(1)) + _ = _in1 + data = _in0 + pos = _in1 + goto TAIL_CALL_START + } +} +func (_static *CompanionStruct_Default___) VersionFromSchema(data _dafny.Sequence) uint8 { + if Companion_Default___.IsVersion2Schema(data, uint32(0)) { + return uint8(2) + } else { + return uint8(1) + } +} +func (_static *CompanionStruct_Default___) ValidFlavor(x uint8) bool { + return _dafny.Companion_Sequence_.Contains(_dafny.SeqOf(uint8(0), uint8(1)), x) +} +func (_static *CompanionStruct_Default___) ValidLegendByte(x uint8) bool { + return _dafny.Companion_Sequence_.Contains(_dafny.SeqOf(Companion_Default___.ENCRYPT__AND__SIGN__LEGEND(), Companion_Default___.SIGN__AND__INCLUDE__IN__ENCRYPTION__CONTEXT__LEGEND(), Companion_Default___.SIGN__ONLY__LEGEND()), x) +} +func (_static *CompanionStruct_Default___) ValidEncryptionContext(x _dafny.Map) bool { + return ((uint64((x).CardinalityInt())) < ((m_StandardLibrary_UInt.Companion_Default___.UINT16__LIMIT()).Uint64())) && (_dafny.Quantifier((x).Keys().Elements(), true, func(_forall_var_0 _dafny.Sequence) bool { + var _0_k _dafny.Sequence + _0_k = interface{}(_forall_var_0).(_dafny.Sequence) + return !((x).Contains(_0_k)) || (((uint64((_0_k).Cardinality())) < ((m_StandardLibrary_UInt.Companion_Default___.UINT16__LIMIT()).Uint64())) && ((uint64(((x).Get(_0_k).(_dafny.Sequence)).Cardinality())) < ((m_StandardLibrary_UInt.Companion_Default___.UINT16__LIMIT()).Uint64()))) + })) +} +func (_static *CompanionStruct_Default___) ValidEncryptedDataKey(x m_AwsCryptographyMaterialProvidersTypes.EncryptedDataKey) bool { + return (((uint64(((x).Dtor_keyProviderId()).Cardinality())) < ((m_StandardLibrary_UInt.Companion_Default___.UINT16__LIMIT()).Uint64())) && ((uint64(((x).Dtor_keyProviderInfo()).Cardinality())) < ((m_StandardLibrary_UInt.Companion_Default___.UINT16__LIMIT()).Uint64()))) && ((uint64(((x).Dtor_ciphertext()).Cardinality())) < ((m_StandardLibrary_UInt.Companion_Default___.UINT16__LIMIT()).Uint64())) +} +func (_static *CompanionStruct_Default___) Serialize(client m_AwsCryptographyPrimitivesTypes.IAwsCryptographicPrimitivesClient, alg m_AwsCryptographyMaterialProvidersTypes.AlgorithmSuiteInfo, commitKey _dafny.Sequence, PartialHeader PartialHeader) m_Wrappers.Result { + var _0_body _dafny.Sequence = (PartialHeader).Serialize() + _ = _0_body + var _1_valueOrError0 m_Wrappers.Result = Companion_Default___.CalculateHeaderCommitment(client, alg, commitKey, _0_body) + _ = _1_valueOrError0 + if (_1_valueOrError0).IsFailure() { + return (_1_valueOrError0).PropagateFailure() + } else { + var _2_commitment _dafny.Sequence = (_1_valueOrError0).Extract().(_dafny.Sequence) + _ = _2_commitment + return m_Wrappers.Companion_Result_.Create_Success_(_dafny.Companion_Sequence_.Concatenate(_0_body, _2_commitment)) + } +} +func (_static *CompanionStruct_Default___) Create(tableName _dafny.Sequence, schema _dafny.Sequence, msgID _dafny.Sequence, mat m_AwsCryptographyMaterialProvidersTypes.EncryptionMaterials) m_Wrappers.Result { + var _0_valueOrError0 m_Wrappers.Outcome = m_Wrappers.Companion_Default___.Need((uint64((schema).Cardinality())) < ((m_StandardLibrary_UInt.Companion_Default___.UINT32__LIMIT()).Uint64()), m_StructuredEncryptionUtil.Companion_Default___.E(_dafny.SeqOfString("Unexpected large schema"))) + _ = _0_valueOrError0 + if (_0_valueOrError0).IsFailure() { + return (_0_valueOrError0).PropagateFailure() + } else { + var _1_valueOrError1 m_Wrappers.Outcome = m_Wrappers.Companion_Default___.Need(Companion_Default___.ValidEncryptionContext((mat).Dtor_encryptionContext()), m_StructuredEncryptionUtil.Companion_Default___.E(_dafny.SeqOfString("Invalid Encryption Context"))) + _ = _1_valueOrError1 + if (_1_valueOrError1).IsFailure() { + return (_1_valueOrError1).PropagateFailure() + } else { + var _2_valueOrError2 m_Wrappers.Outcome = m_Wrappers.Companion_Default___.Need((uint64(0)) < (uint64(((mat).Dtor_encryptedDataKeys()).Cardinality())), m_StructuredEncryptionUtil.Companion_Default___.E(_dafny.SeqOfString("There must be at least one data key"))) + _ = _2_valueOrError2 + if (_2_valueOrError2).IsFailure() { + return (_2_valueOrError2).PropagateFailure() + } else { + var _3_valueOrError3 m_Wrappers.Outcome = m_Wrappers.Companion_Default___.Need((uint64(((mat).Dtor_encryptedDataKeys()).Cardinality())) < (Companion_Default___.UINT8__LIMIT64()), m_StructuredEncryptionUtil.Companion_Default___.E(_dafny.SeqOfString("Too many data keys."))) + _ = _3_valueOrError3 + if (_3_valueOrError3).IsFailure() { + return (_3_valueOrError3).PropagateFailure() + } else { + var _4_valueOrError4 m_Wrappers.Outcome = m_Wrappers.Companion_Default___.Need(_dafny.Quantifier(((mat).Dtor_encryptedDataKeys()).UniqueElements(), true, func(_forall_var_0 m_AwsCryptographyMaterialProvidersTypes.EncryptedDataKey) bool { + var _5_x m_AwsCryptographyMaterialProvidersTypes.EncryptedDataKey + _5_x = interface{}(_forall_var_0).(m_AwsCryptographyMaterialProvidersTypes.EncryptedDataKey) + return !(_dafny.Companion_Sequence_.Contains((mat).Dtor_encryptedDataKeys(), _5_x)) || (Companion_Default___.ValidEncryptedDataKey(_5_x)) + }), m_StructuredEncryptionUtil.Companion_Default___.E(_dafny.SeqOfString("Invalid Data Key"))) + _ = _4_valueOrError4 + if (_4_valueOrError4).IsFailure() { + return (_4_valueOrError4).PropagateFailure() + } else { + var _6_valueOrError5 m_Wrappers.Outcome = m_Wrappers.Companion_Default___.Need((uint64((((mat).Dtor_algorithmSuite()).Dtor_binaryId()).Cardinality())) == (uint64(2)), m_StructuredEncryptionUtil.Companion_Default___.E(_dafny.SeqOfString("Invalid Algorithm Suite Binary ID"))) + _ = _6_valueOrError5 + if (_6_valueOrError5).IsFailure() { + return (_6_valueOrError5).PropagateFailure() + } else { + var _7_valueOrError6 m_Wrappers.Outcome = m_Wrappers.Companion_Default___.Need(((((mat).Dtor_algorithmSuite()).Dtor_binaryId()).Select(uint32(uint32(0))).(uint8)) == (m_StructuredEncryptionUtil.Companion_Default___.DbeAlgorithmFamily()), m_StructuredEncryptionUtil.Companion_Default___.E(_dafny.SeqOfString("Algorithm Suite not suitable for structured encryption."))) + _ = _7_valueOrError6 + if (_7_valueOrError6).IsFailure() { + return (_7_valueOrError6).PropagateFailure() + } else { + var _8_valueOrError7 m_Wrappers.Outcome = m_Wrappers.Companion_Default___.Need(Companion_Default___.ValidFlavor((((mat).Dtor_algorithmSuite()).Dtor_binaryId()).Select(uint32(uint32(1))).(uint8)), m_StructuredEncryptionUtil.Companion_Default___.E(_dafny.SeqOfString("Algorithm Suite has unexpected flavor."))) + _ = _8_valueOrError7 + if (_8_valueOrError7).IsFailure() { + return (_8_valueOrError7).PropagateFailure() + } else { + var _9_valueOrError8 m_Wrappers.Result = Companion_Default___.MakeLegend(schema) + _ = _9_valueOrError8 + if (_9_valueOrError8).IsFailure() { + return (_9_valueOrError8).PropagateFailure() + } else { + var _10_legend _dafny.Sequence = (_9_valueOrError8).Extract().(_dafny.Sequence) + _ = _10_legend + var _11_storedEC _dafny.Map = func() _dafny.Map { + var _coll0 = _dafny.NewMapBuilder() + _ = _coll0 + for _iter6 := _dafny.Iterate(((mat).Dtor_encryptionContext()).Keys().Elements()); ; { + _compr_0, _ok6 := _iter6() + if !_ok6 { + break + } + var _12_k _dafny.Sequence + _12_k = interface{}(_compr_0).(_dafny.Sequence) + if m_UTF8.Companion_ValidUTF8Bytes_.Is_(_12_k) { + if (((mat).Dtor_encryptionContext()).Contains(_12_k)) && (!_dafny.Companion_Sequence_.Contains((mat).Dtor_requiredEncryptionContextKeys(), _12_k)) { + _coll0.Add(_12_k, ((mat).Dtor_encryptionContext()).Get(_12_k).(_dafny.Sequence)) + } + } + } + return _coll0.ToMap() + }() + _ = _11_storedEC + var _13_valueOrError9 m_Wrappers.Outcome = m_Wrappers.Companion_Default___.Need(Companion_Default___.ValidEncryptionContext(_11_storedEC), m_StructuredEncryptionUtil.Companion_Default___.E(_dafny.SeqOfString("Invalid Encryption Context"))) + _ = _13_valueOrError9 + if (_13_valueOrError9).IsFailure() { + return (_13_valueOrError9).PropagateFailure() + } else { + return m_Wrappers.Companion_Result_.Create_Success_(Companion_PartialHeader_.Create_PartialHeader_(Companion_Default___.VersionFromSchema(schema), (((mat).Dtor_algorithmSuite()).Dtor_binaryId()).Select(uint32(uint32(1))).(uint8), msgID, _10_legend, _11_storedEC, (mat).Dtor_encryptedDataKeys())) + } + } + } + } + } + } + } + } + } + } +} +func (_static *CompanionStruct_Default___) PartialDeserialize(data _dafny.Sequence) m_Wrappers.Result { + var _0_valueOrError0 m_Wrappers.Outcome = m_Wrappers.Companion_Default___.Need((Companion_Default___.PREFIX__LEN64()) <= (uint64((data).Cardinality())), m_StructuredEncryptionUtil.Companion_Default___.E(_dafny.SeqOfString("Serialized PartialHeader too short."))) + _ = _0_valueOrError0 + if (_0_valueOrError0).IsFailure() { + return (_0_valueOrError0).PropagateFailure() + } else { + var _1_version uint8 = (data).Select(uint32(uint32(0))).(uint8) + _ = _1_version + var _2_valueOrError1 m_Wrappers.Outcome = m_Wrappers.Companion_Default___.Need(Companion_Default___.ValidVersion(_1_version), m_StructuredEncryptionUtil.Companion_Default___.E(_dafny.SeqOfString("Invalid Version Number"))) + _ = _2_valueOrError1 + if (_2_valueOrError1).IsFailure() { + return (_2_valueOrError1).PropagateFailure() + } else { + var _3_flavor uint8 = (data).Select(uint32(uint32(1))).(uint8) + _ = _3_flavor + var _4_valueOrError2 m_Wrappers.Outcome = m_Wrappers.Companion_Default___.Need(Companion_Default___.ValidFlavor(_3_flavor), m_StructuredEncryptionUtil.Companion_Default___.E(_dafny.SeqOfString("Invalid Flavor"))) + _ = _4_valueOrError2 + if (_4_valueOrError2).IsFailure() { + return (_4_valueOrError2).PropagateFailure() + } else { + var _5_msgID _dafny.Sequence = (data).Subsequence(uint32(uint32(2)), uint32(Companion_Default___.PREFIX__LEN64())) + _ = _5_msgID + var _6_legendData _dafny.Sequence = (data).Drop(uint32(Companion_Default___.PREFIX__LEN64())) + _ = _6_legendData + var _7_valueOrError3 m_Wrappers.Result = Companion_Default___.GetLegend(_6_legendData) + _ = _7_valueOrError3 + if (_7_valueOrError3).IsFailure() { + return (_7_valueOrError3).PropagateFailure() + } else { + var _8_legendAndLen _dafny.Tuple = (_7_valueOrError3).Extract().(_dafny.Tuple) + _ = _8_legendAndLen + var _9_legend _dafny.Sequence = (*(_8_legendAndLen).IndexInt(0)).(_dafny.Sequence) + _ = _9_legend + var _10_contextData _dafny.Sequence = (_6_legendData).Drop(uint32((*(_8_legendAndLen).IndexInt(1)).(uint64))) + _ = _10_contextData + var _11_valueOrError4 m_Wrappers.Result = Companion_Default___.GetContext(_10_contextData) + _ = _11_valueOrError4 + if (_11_valueOrError4).IsFailure() { + return (_11_valueOrError4).PropagateFailure() + } else { + var _12_contextAndLen _dafny.Tuple = (_11_valueOrError4).Extract().(_dafny.Tuple) + _ = _12_contextAndLen + var _13_encContext _dafny.Map = (*(_12_contextAndLen).IndexInt(0)).(_dafny.Map) + _ = _13_encContext + var _14_keysData _dafny.Sequence = (_10_contextData).Drop(uint32((*(_12_contextAndLen).IndexInt(1)).(uint64))) + _ = _14_keysData + var _15_valueOrError5 m_Wrappers.Result = Companion_Default___.GetDataKeys(_14_keysData) + _ = _15_valueOrError5 + if (_15_valueOrError5).IsFailure() { + return (_15_valueOrError5).PropagateFailure() + } else { + var _16_keysAndLen _dafny.Tuple = (_15_valueOrError5).Extract().(_dafny.Tuple) + _ = _16_keysAndLen + var _17_dataKeys _dafny.Sequence = (*(_16_keysAndLen).IndexInt(0)).(_dafny.Sequence) + _ = _17_dataKeys + var _18_trailingData _dafny.Sequence = (_14_keysData).Drop(uint32((*(_16_keysAndLen).IndexInt(1)).(uint64))) + _ = _18_trailingData + var _19_valueOrError6 m_Wrappers.Outcome = m_Wrappers.Companion_Default___.Need((uint64((_18_trailingData).Cardinality())) >= (Companion_Default___.COMMITMENT__LEN64()), m_StructuredEncryptionUtil.Companion_Default___.E(_dafny.SeqOfString("Invalid header serialization: unexpected end of data."))) + _ = _19_valueOrError6 + if (_19_valueOrError6).IsFailure() { + return (_19_valueOrError6).PropagateFailure() + } else { + var _20_valueOrError7 m_Wrappers.Outcome = m_Wrappers.Companion_Default___.Need((uint64((_18_trailingData).Cardinality())) <= (Companion_Default___.COMMITMENT__LEN64()), m_StructuredEncryptionUtil.Companion_Default___.E(_dafny.SeqOfString("Invalid header serialization: unexpected bytes."))) + _ = _20_valueOrError7 + if (_20_valueOrError7).IsFailure() { + return (_20_valueOrError7).PropagateFailure() + } else { + return m_Wrappers.Companion_Result_.Create_Success_(Companion_PartialHeader_.Create_PartialHeader_(_1_version, _3_flavor, _5_msgID, _9_legend, _13_encContext, _17_dataKeys)) + } + } + } + } + } + } + } + } +} +func (_static *CompanionStruct_Default___) CalculateHeaderCommitment(client m_AwsCryptographyPrimitivesTypes.IAwsCryptographicPrimitivesClient, alg m_AwsCryptographyMaterialProvidersTypes.AlgorithmSuiteInfo, commitKey _dafny.Sequence, data _dafny.Sequence) m_Wrappers.Result { + var _0_input m_AwsCryptographyPrimitivesTypes.HMacInput = m_AwsCryptographyPrimitivesTypes.Companion_HMacInput_.Create_HMacInput_((((alg).Dtor_commitment()).Dtor_HKDF()).Dtor_hmac(), commitKey, data) + _ = _0_input + var _1_outputR m_Wrappers.Result = (client).HMac(_0_input) + _ = _1_outputR + var _2_valueOrError0 m_Wrappers.Result = (_1_outputR).MapFailure(func(coer2 func(m_AwsCryptographyPrimitivesTypes.Error) m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Error) func(interface{}) interface{} { + return func(arg4 interface{}) interface{} { + return coer2(arg4.(m_AwsCryptographyPrimitivesTypes.Error)) + } + }(func(_3_e m_AwsCryptographyPrimitivesTypes.Error) m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Error { + return m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Companion_Error_.Create_AwsCryptographyPrimitives_(_3_e) + })) + _ = _2_valueOrError0 + if (_2_valueOrError0).IsFailure() { + return (_2_valueOrError0).PropagateFailure() + } else { + var _4_output _dafny.Sequence = (_2_valueOrError0).Extract().(_dafny.Sequence) + _ = _4_output + if (uint64((_4_output).Cardinality())) < (Companion_Default___.COMMITMENT__LEN64()) { + return m_Wrappers.Companion_Result_.Create_Failure_(m_StructuredEncryptionUtil.Companion_Default___.E(_dafny.SeqOfString("HMAC did not produce enough bits"))) + } else { + return m_Wrappers.Companion_Result_.Create_Success_((_4_output).Take(uint32(Companion_Default___.COMMITMENT__LEN64()))) + } + } +} +func (_static *CompanionStruct_Default___) MyMap(f func(interface{}) interface{}, m _dafny.Map) _dafny.Map { + return func() _dafny.Map { + var _coll0 = _dafny.NewMapBuilder() + _ = _coll0 + for _iter7 := _dafny.Iterate((m).Keys().Elements()); ; { + _compr_0, _ok7 := _iter7() + if !_ok7 { + break + } + var _0_k interface{} + _0_k = interface{}(_compr_0).(interface{}) + if (m).Contains(_0_k) { + _coll0.Add((f)(_0_k), (m).Get(_0_k).(interface{})) + } + } + return _coll0.ToMap() + }() +} +func (_static *CompanionStruct_Default___) MakeLegend(schema _dafny.Sequence) m_Wrappers.Result { + var _0_valueOrError0 m_Wrappers.Result = Companion_Default___.MakeLegend2(schema, uint64(0), Companion_Default___.EmptyLegend()) + _ = _0_valueOrError0 + if (_0_valueOrError0).IsFailure() { + return (_0_valueOrError0).PropagateFailure() + } else { + var _1_legend _dafny.Sequence = (_0_valueOrError0).Extract().(_dafny.Sequence) + _ = _1_legend + var _2_authCount uint64 = Companion_Default___.CountAuthAttrs(schema, uint64(0), uint64(0)) + _ = _2_authCount + var _3_valueOrError1 m_Wrappers.Outcome = m_Wrappers.Companion_Default___.Need((_2_authCount) == (uint64((_1_legend).Cardinality())), m_StructuredEncryptionUtil.Companion_Default___.E(_dafny.SeqOfString("Internal Error : bad legend calculation."))) + _ = _3_valueOrError1 + if (_3_valueOrError1).IsFailure() { + return (_3_valueOrError1).PropagateFailure() + } else { + return m_Wrappers.Companion_Result_.Create_Success_(_1_legend) + } + } +} +func (_static *CompanionStruct_Default___) MakeLegend2(data _dafny.Sequence, pos uint64, serialized _dafny.Sequence) m_Wrappers.Result { + goto TAIL_CALL_START +TAIL_CALL_START: + if (uint64((data).Cardinality())) == (pos) { + return m_Wrappers.Companion_Result_.Create_Success_(serialized) + } else if m_StructuredEncryptionUtil.Companion_Default___.IsAuthAttr(((data).Select(uint32(pos)).(m_StructuredEncryptionUtil.CanonCryptoItem)).Dtor_action()) { + var _0_valueOrError0 m_Wrappers.Outcome = m_Wrappers.Companion_Default___.Need(((uint64((serialized).Cardinality()))+(uint64(1))) < ((m_StandardLibrary_UInt.Companion_Default___.UINT16__LIMIT()).Uint64()), m_StructuredEncryptionUtil.Companion_Default___.E(_dafny.SeqOfString("Legend Too Long."))) + _ = _0_valueOrError0 + if (_0_valueOrError0).IsFailure() { + return (_0_valueOrError0).PropagateFailure() + } else { + var _1_legendChar uint8 = Companion_Default___.GetActionLegend(((data).Select(uint32(pos)).(m_StructuredEncryptionUtil.CanonCryptoItem)).Dtor_action()) + _ = _1_legendChar + var _in0 _dafny.Sequence = data + _ = _in0 + var _in1 uint64 = (pos) + (uint64(1)) + _ = _in1 + var _in2 _dafny.Sequence = _dafny.Companion_Sequence_.Concatenate(serialized, _dafny.SeqOf(_1_legendChar)) + _ = _in2 + data = _in0 + pos = _in1 + serialized = _in2 + goto TAIL_CALL_START + } + } else { + var _in3 _dafny.Sequence = data + _ = _in3 + var _in4 uint64 = (pos) + (uint64(1)) + _ = _in4 + var _in5 _dafny.Sequence = serialized + _ = _in5 + data = _in3 + pos = _in4 + serialized = _in5 + goto TAIL_CALL_START + } +} +func (_static *CompanionStruct_Default___) GetActionLegend(x m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.CryptoAction) uint8 { + var _source0 m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.CryptoAction = x + _ = _source0 + { + if _source0.Is_ENCRYPT__AND__SIGN() { + return Companion_Default___.ENCRYPT__AND__SIGN__LEGEND() + } + } + { + if _source0.Is_SIGN__AND__INCLUDE__IN__ENCRYPTION__CONTEXT() { + return Companion_Default___.SIGN__AND__INCLUDE__IN__ENCRYPTION__CONTEXT__LEGEND() + } + } + { + return Companion_Default___.SIGN__ONLY__LEGEND() + } +} +func (_static *CompanionStruct_Default___) CountAuthAttrs(data _dafny.Sequence, pos uint64, acc uint64) uint64 { + goto TAIL_CALL_START +TAIL_CALL_START: + if (uint64((data).Cardinality())) == (pos) { + return acc + } else if m_StructuredEncryptionUtil.Companion_Default___.IsAuthAttr(((data).Select(uint32(pos)).(m_StructuredEncryptionUtil.CanonCryptoItem)).Dtor_action()) { + var _in0 _dafny.Sequence = data + _ = _in0 + var _in1 uint64 = (pos) + (uint64(1)) + _ = _in1 + var _in2 uint64 = m_StandardLibrary_MemoryMath.Companion_Default___.Add(acc, uint64(1)) + _ = _in2 + data = _in0 + pos = _in1 + acc = _in2 + goto TAIL_CALL_START + } else { + var _in3 _dafny.Sequence = data + _ = _in3 + var _in4 uint64 = (pos) + (uint64(1)) + _ = _in4 + var _in5 uint64 = acc + _ = _in5 + data = _in3 + pos = _in4 + acc = _in5 + goto TAIL_CALL_START + } +} +func (_static *CompanionStruct_Default___) SerializeLegend(x _dafny.Sequence) _dafny.Sequence { + return _dafny.Companion_Sequence_.Concatenate(m_StandardLibrary_UInt.Companion_Default___.UInt16ToSeq(uint16((x).Cardinality())), x) +} +func (_static *CompanionStruct_Default___) GetLegend(data _dafny.Sequence) m_Wrappers.Result { + var _0_data__size uint64 = uint64((data).Cardinality()) + _ = _0_data__size + var _1_valueOrError0 m_Wrappers.Outcome = m_Wrappers.Companion_Default___.Need((uint64(2)) <= (_0_data__size), m_StructuredEncryptionUtil.Companion_Default___.E(_dafny.SeqOfString("Unexpected end of header data."))) + _ = _1_valueOrError0 + if (_1_valueOrError0).IsFailure() { + return (_1_valueOrError0).PropagateFailure() + } else { + var _2_len uint64 = uint64(m_StandardLibrary_UInt.Companion_Default___.SeqPosToUInt16(data, uint64(0))) + _ = _2_len + var _3_size uint64 = m_StandardLibrary_MemoryMath.Companion_Default___.Add(_2_len, uint64(2)) + _ = _3_size + var _4_valueOrError1 m_Wrappers.Outcome = m_Wrappers.Companion_Default___.Need((_3_size) <= (_0_data__size), m_StructuredEncryptionUtil.Companion_Default___.E(_dafny.SeqOfString("Unexpected end of header data."))) + _ = _4_valueOrError1 + if (_4_valueOrError1).IsFailure() { + return (_4_valueOrError1).PropagateFailure() + } else { + var _5_legend _dafny.Sequence = (data).Subsequence(uint32(uint32(2)), uint32(_3_size)) + _ = _5_legend + var _6_valueOrError2 m_Wrappers.Outcome = m_Wrappers.Companion_Default___.Need(_dafny.Quantifier((_5_legend).UniqueElements(), true, func(_forall_var_0 uint8) bool { + var _7_x uint8 + _7_x = interface{}(_forall_var_0).(uint8) + if true { + return !(_dafny.Companion_Sequence_.Contains(_5_legend, _7_x)) || (Companion_Default___.ValidLegendByte(_7_x)) + } else { + return true + } + }), m_StructuredEncryptionUtil.Companion_Default___.E(_dafny.SeqOfString("Invalid byte in stored legend"))) + _ = _6_valueOrError2 + if (_6_valueOrError2).IsFailure() { + return (_6_valueOrError2).PropagateFailure() + } else { + return m_Wrappers.Companion_Result_.Create_Success_(_dafny.TupleOf(_5_legend, _3_size)) + } + } + } +} +func (_static *CompanionStruct_Default___) GetContext(data _dafny.Sequence) m_Wrappers.Result { + var _0_data__size uint64 = uint64((data).Cardinality()) + _ = _0_data__size + var _1_valueOrError0 m_Wrappers.Outcome = m_Wrappers.Companion_Default___.Need((uint64(2)) <= (_0_data__size), m_StructuredEncryptionUtil.Companion_Default___.E(_dafny.SeqOfString("Unexpected end of header data."))) + _ = _1_valueOrError0 + if (_1_valueOrError0).IsFailure() { + return (_1_valueOrError0).PropagateFailure() + } else { + var _2_count uint64 = uint64(m_StandardLibrary_UInt.Companion_Default___.SeqPosToUInt16(data, uint64(0))) + _ = _2_count + var _3_valueOrError1 m_Wrappers.Result = Companion_Default___.GetContext2(_2_count, data, _dafny.TupleOf(_dafny.NewMapBuilder().ToMap(), uint64(2)), _dafny.SeqOf()) + _ = _3_valueOrError1 + if (_3_valueOrError1).IsFailure() { + return (_3_valueOrError1).PropagateFailure() + } else { + var _4_context _dafny.Tuple = (_3_valueOrError1).Extract().(_dafny.Tuple) + _ = _4_context + return m_Wrappers.Companion_Result_.Create_Success_(_4_context) + } + } +} +func (_static *CompanionStruct_Default___) GetOneKVPair(data _dafny.Sequence, pos uint64) m_Wrappers.Result { + var _0_data__size uint64 = uint64((data).Cardinality()) + _ = _0_data__size + var _1_valueOrError0 m_Wrappers.Outcome = m_Wrappers.Companion_Default___.Need((m_StandardLibrary_MemoryMath.Companion_Default___.Add(uint64(2), pos)) <= (_0_data__size), m_StructuredEncryptionUtil.Companion_Default___.E(_dafny.SeqOfString("Unexpected end of header data."))) + _ = _1_valueOrError0 + if (_1_valueOrError0).IsFailure() { + return (_1_valueOrError0).PropagateFailure() + } else { + var _2_keyLen uint64 = uint64(m_StandardLibrary_UInt.Companion_Default___.SeqPosToUInt16(data, pos)) + _ = _2_keyLen + var _3_valueOrError1 m_Wrappers.Outcome = m_Wrappers.Companion_Default___.Need((m_StandardLibrary_MemoryMath.Companion_Default___.Add3(_2_keyLen, uint64(4), pos)) <= (_0_data__size), m_StructuredEncryptionUtil.Companion_Default___.E(_dafny.SeqOfString("Unexpected end of header data."))) + _ = _3_valueOrError1 + if (_3_valueOrError1).IsFailure() { + return (_3_valueOrError1).PropagateFailure() + } else { + var _4_key _dafny.Sequence = (data).Subsequence(uint32((uint64(2))+(pos)), uint32(m_StandardLibrary_MemoryMath.Companion_Default___.Add3(_2_keyLen, uint64(2), pos))) + _ = _4_key + var _5_valueOrError2 m_Wrappers.Outcome = m_Wrappers.Companion_Default___.Need(m_UTF8.Companion_Default___.ValidUTF8Seq(_4_key), m_StructuredEncryptionUtil.Companion_Default___.E(_dafny.SeqOfString("Invalid UTF8 found in header."))) + _ = _5_valueOrError2 + if (_5_valueOrError2).IsFailure() { + return (_5_valueOrError2).PropagateFailure() + } else { + var _6_valueLen uint64 = uint64(m_StandardLibrary_UInt.Companion_Default___.SeqPosToUInt16(data, m_StandardLibrary_MemoryMath.Companion_Default___.Add3(_2_keyLen, uint64(2), pos))) + _ = _6_valueLen + var _7_kvLen uint64 = (((uint64(2)) + (_2_keyLen)) + (uint64(2))) + (_6_valueLen) + _ = _7_kvLen + var _8_valueOrError3 m_Wrappers.Outcome = m_Wrappers.Companion_Default___.Need((m_StandardLibrary_MemoryMath.Companion_Default___.Add(_7_kvLen, pos)) <= (_0_data__size), m_StructuredEncryptionUtil.Companion_Default___.E(_dafny.SeqOfString("Unexpected end of header data."))) + _ = _8_valueOrError3 + if (_8_valueOrError3).IsFailure() { + return (_8_valueOrError3).PropagateFailure() + } else { + var _9_value _dafny.Sequence = (data).Subsequence(uint32(((_2_keyLen)+(uint64(4)))+(pos)), uint32((_7_kvLen)+(pos))) + _ = _9_value + var _10_valueOrError4 m_Wrappers.Outcome = m_Wrappers.Companion_Default___.Need(m_UTF8.Companion_Default___.ValidUTF8Seq(_9_value), m_StructuredEncryptionUtil.Companion_Default___.E(_dafny.SeqOfString("Invalid UTF8 found in header."))) + _ = _10_valueOrError4 + if (_10_valueOrError4).IsFailure() { + return (_10_valueOrError4).PropagateFailure() + } else { + return m_Wrappers.Companion_Result_.Create_Success_(_dafny.TupleOf(_4_key, _9_value, _7_kvLen)) + } + } + } + } + } +} +func (_static *CompanionStruct_Default___) BytesLess(a _dafny.Sequence, b _dafny.Sequence, pos uint64) bool { + goto TAIL_CALL_START +TAIL_CALL_START: + if _dafny.Companion_Sequence_.Equal(a, b) { + return false + } else if (uint64((a).Cardinality())) == (pos) { + return true + } else if (uint64((b).Cardinality())) == (pos) { + return false + } else if ((a).Select(uint32(pos)).(uint8)) != ((b).Select(uint32(pos)).(uint8)) /* dircomp */ { + return ((a).Select(uint32(pos)).(uint8)) < ((b).Select(uint32(pos)).(uint8)) + } else { + var _in0 _dafny.Sequence = a + _ = _in0 + var _in1 _dafny.Sequence = b + _ = _in1 + var _in2 uint64 = (pos) + (uint64(1)) + _ = _in2 + a = _in0 + b = _in1 + pos = _in2 + goto TAIL_CALL_START + } +} +func (_static *CompanionStruct_Default___) GetContext2(count uint64, data _dafny.Sequence, deserialized _dafny.Tuple, prevKey _dafny.Sequence) m_Wrappers.Result { + goto TAIL_CALL_START +TAIL_CALL_START: + if (count) == (uint64(0)) { + return m_Wrappers.Companion_Result_.Create_Success_(deserialized) + } else { + var _0_valueOrError0 m_Wrappers.Outcome = m_Wrappers.Companion_Default___.Need(((uint64(((*(deserialized).IndexInt(0)).(_dafny.Map)).CardinalityInt()))+(uint64(1))) < ((m_StandardLibrary_UInt.Companion_Default___.UINT16__LIMIT()).Uint64()), m_StructuredEncryptionUtil.Companion_Default___.E(_dafny.SeqOfString("Too much context"))) + _ = _0_valueOrError0 + if (_0_valueOrError0).IsFailure() { + return (_0_valueOrError0).PropagateFailure() + } else { + var _1_valueOrError1 m_Wrappers.Result = Companion_Default___.GetOneKVPair(data, (*(deserialized).IndexInt(1)).(uint64)) + _ = _1_valueOrError1 + if (_1_valueOrError1).IsFailure() { + return (_1_valueOrError1).PropagateFailure() + } else { + var _2_kv _dafny.Tuple = (_1_valueOrError1).Extract().(_dafny.Tuple) + _ = _2_kv + var _3_valueOrError2 m_Wrappers.Outcome = m_Wrappers.Companion_Default___.Need(Companion_Default___.BytesLess(prevKey, (*(_2_kv).IndexInt(0)).(_dafny.Sequence), uint64(0)), m_StructuredEncryptionUtil.Companion_Default___.E(_dafny.SeqOfString("Context keys out of order."))) + _ = _3_valueOrError2 + if (_3_valueOrError2).IsFailure() { + return (_3_valueOrError2).PropagateFailure() + } else { + var _in0 uint64 = (count) - (func() uint64 { return (uint64(1)) })() + _ = _in0 + var _in1 _dafny.Sequence = data + _ = _in1 + var _in2 _dafny.Tuple = _dafny.TupleOf(((*(deserialized).IndexInt(0)).(_dafny.Map)).Update((*(_2_kv).IndexInt(0)).(_dafny.Sequence), (*(_2_kv).IndexInt(1)).(_dafny.Sequence)), m_StandardLibrary_MemoryMath.Companion_Default___.Add((*(deserialized).IndexInt(1)).(uint64), (*(_2_kv).IndexInt(2)).(uint64))) + _ = _in2 + var _in3 _dafny.Sequence = (*(_2_kv).IndexInt(0)).(_dafny.Sequence) + _ = _in3 + count = _in0 + data = _in1 + deserialized = _in2 + prevKey = _in3 + goto TAIL_CALL_START + } + } + } + } +} +func (_static *CompanionStruct_Default___) SerializeContext(x _dafny.Map) _dafny.Sequence { + var _0_keys _dafny.Sequence = m_SortedSets.SetToOrderedSequence2((x).Keys(), func(coer3 func(uint8, uint8) bool) func(interface{}, interface{}) bool { + return func(arg5 interface{}, arg6 interface{}) bool { + return coer3(arg5.(uint8), arg6.(uint8)) + } + }(m_StructuredEncryptionUtil.Companion_Default___.ByteLess)) + _ = _0_keys + return _dafny.Companion_Sequence_.Concatenate(m_StandardLibrary_UInt.Companion_Default___.UInt16ToSeq(uint16((x).CardinalityInt())), Companion_Default___.SerializeContext2(_0_keys, x, uint64(0), _dafny.SeqOf())) +} +func (_static *CompanionStruct_Default___) SerializeOneKVPair(key _dafny.Sequence, value _dafny.Sequence) _dafny.Sequence { + return _dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(m_StandardLibrary_UInt.Companion_Default___.UInt16ToSeq(uint16((key).Cardinality())), key), m_StandardLibrary_UInt.Companion_Default___.UInt16ToSeq(uint16((value).Cardinality()))), value) +} +func (_static *CompanionStruct_Default___) SerializeOneDataKey(k m_AwsCryptographyMaterialProvidersTypes.EncryptedDataKey) _dafny.Sequence { + return _dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(m_StandardLibrary_UInt.Companion_Default___.UInt16ToSeq(uint16(((k).Dtor_keyProviderId()).Cardinality())), (k).Dtor_keyProviderId()), m_StandardLibrary_UInt.Companion_Default___.UInt16ToSeq(uint16(((k).Dtor_keyProviderInfo()).Cardinality()))), (k).Dtor_keyProviderInfo()), m_StandardLibrary_UInt.Companion_Default___.UInt16ToSeq(uint16(((k).Dtor_ciphertext()).Cardinality()))), (k).Dtor_ciphertext()) +} +func (_static *CompanionStruct_Default___) GetOneDataKey(data _dafny.Sequence, pos uint64) m_Wrappers.Result { + var _0_data__size uint64 = uint64((data).Cardinality()) + _ = _0_data__size + var _1_valueOrError0 m_Wrappers.Outcome = m_Wrappers.Companion_Default___.Need((m_StandardLibrary_MemoryMath.Companion_Default___.Add(uint64(2), pos)) < (_0_data__size), m_StructuredEncryptionUtil.Companion_Default___.E(_dafny.SeqOfString("Unexpected end of header data."))) + _ = _1_valueOrError0 + if (_1_valueOrError0).IsFailure() { + return (_1_valueOrError0).PropagateFailure() + } else { + var _2_provIdSize uint64 = uint64(m_StandardLibrary_UInt.Companion_Default___.SeqPosToUInt16(data, pos)) + _ = _2_provIdSize + var _3_valueOrError1 m_Wrappers.Outcome = m_Wrappers.Companion_Default___.Need((m_StandardLibrary_MemoryMath.Companion_Default___.Add3(_2_provIdSize, uint64(2), pos)) < (_0_data__size), m_StructuredEncryptionUtil.Companion_Default___.E(_dafny.SeqOfString("Unexpected end of header data."))) + _ = _3_valueOrError1 + if (_3_valueOrError1).IsFailure() { + return (_3_valueOrError1).PropagateFailure() + } else { + var _4_provId _dafny.Sequence = (data).Subsequence(uint32((pos)+(uint64(2))), uint32(((pos)+(uint64(2)))+(_2_provIdSize))) + _ = _4_provId + var _5_valueOrError2 m_Wrappers.Outcome = m_Wrappers.Companion_Default___.Need(m_UTF8.Companion_Default___.ValidUTF8Seq(_4_provId), m_StructuredEncryptionUtil.Companion_Default___.E(_dafny.SeqOfString("Invalid UTF8 found in header."))) + _ = _5_valueOrError2 + if (_5_valueOrError2).IsFailure() { + return (_5_valueOrError2).PropagateFailure() + } else { + var _6_part1Size uint64 = (uint64(2)) + (_2_provIdSize) + _ = _6_part1Size + var _7_valueOrError3 m_Wrappers.Outcome = m_Wrappers.Companion_Default___.Need((m_StandardLibrary_MemoryMath.Companion_Default___.Add3(_6_part1Size, uint64(2), pos)) <= (_0_data__size), m_StructuredEncryptionUtil.Companion_Default___.E(_dafny.SeqOfString("Unexpected end of header data."))) + _ = _7_valueOrError3 + if (_7_valueOrError3).IsFailure() { + return (_7_valueOrError3).PropagateFailure() + } else { + var _8_provInfoSize uint64 = uint64(m_StandardLibrary_UInt.Companion_Default___.SeqPosToUInt16(data, (pos)+(_6_part1Size))) + _ = _8_provInfoSize + var _9_part2Size uint64 = ((_6_part1Size) + (uint64(2))) + (_8_provInfoSize) + _ = _9_part2Size + var _10_valueOrError4 m_Wrappers.Outcome = m_Wrappers.Companion_Default___.Need((m_StandardLibrary_MemoryMath.Companion_Default___.Add(_9_part2Size, pos)) < (_0_data__size), m_StructuredEncryptionUtil.Companion_Default___.E(_dafny.SeqOfString("Unexpected end of header data."))) + _ = _10_valueOrError4 + if (_10_valueOrError4).IsFailure() { + return (_10_valueOrError4).PropagateFailure() + } else { + var _11_provInfo _dafny.Sequence = (data).Subsequence(uint32(((pos)+(_6_part1Size))+(uint64(2))), uint32((pos)+(_9_part2Size))) + _ = _11_provInfo + var _12_valueOrError5 m_Wrappers.Outcome = m_Wrappers.Companion_Default___.Need((m_StandardLibrary_MemoryMath.Companion_Default___.Add3(_9_part2Size, uint64(2), pos)) <= (_0_data__size), m_StructuredEncryptionUtil.Companion_Default___.E(_dafny.SeqOfString("Unexpected end of header data."))) + _ = _12_valueOrError5 + if (_12_valueOrError5).IsFailure() { + return (_12_valueOrError5).PropagateFailure() + } else { + var _13_cipherSize uint64 = uint64(m_StandardLibrary_UInt.Companion_Default___.SeqPosToUInt16(data, (pos)+(_9_part2Size))) + _ = _13_cipherSize + var _14_part3Size uint64 = ((_9_part2Size) + (uint64(2))) + (_13_cipherSize) + _ = _14_part3Size + var _15_valueOrError6 m_Wrappers.Outcome = m_Wrappers.Companion_Default___.Need((m_StandardLibrary_MemoryMath.Companion_Default___.Add(_14_part3Size, pos)) <= (_0_data__size), m_StructuredEncryptionUtil.Companion_Default___.E(_dafny.SeqOfString("Unexpected end of header data."))) + _ = _15_valueOrError6 + if (_15_valueOrError6).IsFailure() { + return (_15_valueOrError6).PropagateFailure() + } else { + var _16_cipher _dafny.Sequence = (data).Subsequence(uint32(((pos)+(_9_part2Size))+(uint64(2))), uint32((pos)+(_14_part3Size))) + _ = _16_cipher + var _17_edk m_AwsCryptographyMaterialProvidersTypes.EncryptedDataKey = m_AwsCryptographyMaterialProvidersTypes.Companion_EncryptedDataKey_.Create_EncryptedDataKey_(_4_provId, _11_provInfo, _16_cipher) + _ = _17_edk + return m_Wrappers.Companion_Result_.Create_Success_(_dafny.TupleOf(_17_edk, _14_part3Size)) + } + } + } + } + } + } + } +} +func (_static *CompanionStruct_Default___) SerializeContext2(keys _dafny.Sequence, x _dafny.Map, pos uint64, acc _dafny.Sequence) _dafny.Sequence { + goto TAIL_CALL_START +TAIL_CALL_START: + if (uint64((keys).Cardinality())) == (pos) { + return acc + } else { + var _in0 _dafny.Sequence = keys + _ = _in0 + var _in1 _dafny.Map = x + _ = _in1 + var _in2 uint64 = (pos) + (uint64(1)) + _ = _in2 + var _in3 _dafny.Sequence = _dafny.Companion_Sequence_.Concatenate(acc, Companion_Default___.SerializeOneKVPair((keys).Select(uint32(pos)).(_dafny.Sequence), (x).Get((keys).Select(uint32(pos)).(_dafny.Sequence)).(_dafny.Sequence))) + _ = _in3 + keys = _in0 + x = _in1 + pos = _in2 + acc = _in3 + goto TAIL_CALL_START + } +} +func (_static *CompanionStruct_Default___) SerializeDataKeys(x _dafny.Sequence) _dafny.Sequence { + var _0_body _dafny.Sequence = Companion_Default___.SerializeDataKeys2(x, uint64(0), _dafny.SeqOf()) + _ = _0_body + return _dafny.Companion_Sequence_.Concatenate(_dafny.SeqOf(uint8((x).Cardinality())), _0_body) +} +func (_static *CompanionStruct_Default___) SerializeDataKeys2(x _dafny.Sequence, pos uint64, acc _dafny.Sequence) _dafny.Sequence { + goto TAIL_CALL_START +TAIL_CALL_START: + if (uint64((x).Cardinality())) == (pos) { + return acc + } else { + var _in0 _dafny.Sequence = x + _ = _in0 + var _in1 uint64 = (pos) + (uint64(1)) + _ = _in1 + var _in2 _dafny.Sequence = _dafny.Companion_Sequence_.Concatenate(acc, Companion_Default___.SerializeOneDataKey((x).Select(uint32(pos)).(m_AwsCryptographyMaterialProvidersTypes.EncryptedDataKey))) + _ = _in2 + x = _in0 + pos = _in1 + acc = _in2 + goto TAIL_CALL_START + } +} +func (_static *CompanionStruct_Default___) GetDataKeys(data _dafny.Sequence) m_Wrappers.Result { + var _0_valueOrError0 m_Wrappers.Outcome = m_Wrappers.Companion_Default___.Need((uint64(1)) <= (uint64((data).Cardinality())), m_StructuredEncryptionUtil.Companion_Default___.E(_dafny.SeqOfString("Unexpected end of header data."))) + _ = _0_valueOrError0 + if (_0_valueOrError0).IsFailure() { + return (_0_valueOrError0).PropagateFailure() + } else { + var _1_count uint64 = uint64((data).Select(uint32(uint32(0))).(uint8)) + _ = _1_count + var _2_valueOrError1 m_Wrappers.Result = Companion_Default___.GetDataKeys2(_1_count, _1_count, data, _dafny.TupleOf(_dafny.SeqOf(), uint64(1))) + _ = _2_valueOrError1 + if (_2_valueOrError1).IsFailure() { + return (_2_valueOrError1).PropagateFailure() + } else { + var _3_keys _dafny.Tuple = (_2_valueOrError1).Extract().(_dafny.Tuple) + _ = _3_keys + if (uint64(((*(_3_keys).IndexInt(0)).(_dafny.Sequence)).Cardinality())) == (uint64(0)) { + return m_Wrappers.Companion_Result_.Create_Failure_(m_StructuredEncryptionUtil.Companion_Default___.E(_dafny.SeqOfString("At least one Data Key required"))) + } else { + return m_Wrappers.Companion_Result_.Create_Success_(_3_keys) + } + } + } +} +func (_static *CompanionStruct_Default___) GetDataKeys2(count uint64, origCount uint64, data _dafny.Sequence, deserialized _dafny.Tuple) m_Wrappers.Result { + goto TAIL_CALL_START +TAIL_CALL_START: + if (count) == (uint64(0)) { + return m_Wrappers.Companion_Result_.Create_Success_(deserialized) + } else if (uint64(((*(deserialized).IndexInt(0)).(_dafny.Sequence)).Cardinality())) >= (uint64(255)) { + return m_Wrappers.Companion_Result_.Create_Failure_(m_StructuredEncryptionUtil.Companion_Default___.E(_dafny.SeqOfString("Too Many Data Keys"))) + } else { + var _0_valueOrError0 m_Wrappers.Result = Companion_Default___.GetOneDataKey(data, (*(deserialized).IndexInt(1)).(uint64)) + _ = _0_valueOrError0 + if (_0_valueOrError0).IsFailure() { + return (_0_valueOrError0).PropagateFailure() + } else { + var _1_edk _dafny.Tuple = (_0_valueOrError0).Extract().(_dafny.Tuple) + _ = _1_edk + var _in0 uint64 = (count) - (func() uint64 { return (uint64(1)) })() + _ = _in0 + var _in1 uint64 = origCount + _ = _in1 + var _in2 _dafny.Sequence = data + _ = _in2 + var _in3 _dafny.Tuple = _dafny.TupleOf(_dafny.Companion_Sequence_.Concatenate((*(deserialized).IndexInt(0)).(_dafny.Sequence), _dafny.SeqOf((*(_1_edk).IndexInt(0)).(m_AwsCryptographyMaterialProvidersTypes.EncryptedDataKey))), ((*(deserialized).IndexInt(1)).(uint64))+((*(_1_edk).IndexInt(1)).(uint64))) + _ = _in3 + count = _in0 + origCount = _in1 + data = _in2 + deserialized = _in3 + goto TAIL_CALL_START + } + } +} +func (_static *CompanionStruct_Default___) VERSION__LEN64() uint64 { + return uint64(1) +} +func (_static *CompanionStruct_Default___) FLAVOR__LEN64() uint64 { + return uint64(1) +} +func (_static *CompanionStruct_Default___) PREFIX__LEN64() uint64 { + return ((Companion_Default___.VERSION__LEN64()) + (Companion_Default___.FLAVOR__LEN64())) + (m_StructuredEncryptionUtil.Companion_Default___.MSGID__LEN64()) +} +func (_static *CompanionStruct_Default___) ENCRYPT__AND__SIGN__LEGEND() uint8 { + return uint8(101) +} +func (_static *CompanionStruct_Default___) SIGN__AND__INCLUDE__IN__ENCRYPTION__CONTEXT__LEGEND() uint8 { + return uint8(99) +} +func (_static *CompanionStruct_Default___) SIGN__ONLY__LEGEND() uint8 { + return uint8(115) +} +func (_static *CompanionStruct_Default___) COMMITMENT__LEN64() uint64 { + return uint64(32) +} +func (_static *CompanionStruct_Default___) UINT8__LIMIT64() uint64 { + return uint64(256) +} +func (_static *CompanionStruct_Default___) EmptyLegend() _dafny.Sequence { + return _dafny.SeqOf() +} + +// End of class Default__ + +// Definition of class Version +type Version struct { +} + +func New_Version_() *Version { + _this := Version{} + + return &_this +} + +type CompanionStruct_Version_ struct { +} + +var Companion_Version_ = CompanionStruct_Version_{} + +func (*Version) String() string { + return "StructuredEncryptionHeader.Version" +} +func (_this *CompanionStruct_Version_) Witness() uint8 { + return uint8(1) +} + +// End of class Version + +func Type_Version_() _dafny.TypeDescriptor { + return type_Version_{} +} + +type type_Version_ struct { +} + +func (_this type_Version_) Default() interface{} { + return Companion_Version_.Witness() +} + +func (_this type_Version_) String() string { + return "StructuredEncryptionHeader.Version" +} +func (_this *CompanionStruct_Version_) Is_(__source uint8) bool { + var _0_x uint8 = (__source) + _ = _0_x + if true { + return Companion_Default___.ValidVersion(_0_x) + } + return false +} + +// Definition of class Flavor +type Flavor struct { +} + +func New_Flavor_() *Flavor { + _this := Flavor{} + + return &_this +} + +type CompanionStruct_Flavor_ struct { +} + +var Companion_Flavor_ = CompanionStruct_Flavor_{} + +func (*Flavor) String() string { + return "StructuredEncryptionHeader.Flavor" +} + +// End of class Flavor + +func Type_Flavor_() _dafny.TypeDescriptor { + return type_Flavor_{} +} + +type type_Flavor_ struct { +} + +func (_this type_Flavor_) Default() interface{} { + return uint8(0) +} + +func (_this type_Flavor_) String() string { + return "StructuredEncryptionHeader.Flavor" +} +func (_this *CompanionStruct_Flavor_) Is_(__source uint8) bool { + var _1_x uint8 = (__source) + _ = _1_x + if true { + return Companion_Default___.ValidFlavor(_1_x) + } + return false +} + +// Definition of class CMPEncryptedDataKeyList +type CMPEncryptedDataKeyList struct { +} + +func New_CMPEncryptedDataKeyList_() *CMPEncryptedDataKeyList { + _this := CMPEncryptedDataKeyList{} + + return &_this +} + +type CompanionStruct_CMPEncryptedDataKeyList_ struct { +} + +var Companion_CMPEncryptedDataKeyList_ = CompanionStruct_CMPEncryptedDataKeyList_{} + +func (*CMPEncryptedDataKeyList) String() string { + return "StructuredEncryptionHeader.CMPEncryptedDataKeyList" +} + +// End of class CMPEncryptedDataKeyList + +func Type_CMPEncryptedDataKeyList_() _dafny.TypeDescriptor { + return type_CMPEncryptedDataKeyList_{} +} + +type type_CMPEncryptedDataKeyList_ struct { +} + +func (_this type_CMPEncryptedDataKeyList_) Default() interface{} { + return _dafny.EmptySeq +} + +func (_this type_CMPEncryptedDataKeyList_) String() string { + return "StructuredEncryptionHeader.CMPEncryptedDataKeyList" +} + +// Definition of class Commitment +type Commitment struct { +} + +func New_Commitment_() *Commitment { + _this := Commitment{} + + return &_this +} + +type CompanionStruct_Commitment_ struct { +} + +var Companion_Commitment_ = CompanionStruct_Commitment_{} + +func (*Commitment) String() string { + return "StructuredEncryptionHeader.Commitment" +} + +// End of class Commitment + +func Type_Commitment_() _dafny.TypeDescriptor { + return type_Commitment_{} +} + +type type_Commitment_ struct { +} + +func (_this type_Commitment_) Default() interface{} { + return _dafny.EmptySeq +} + +func (_this type_Commitment_) String() string { + return "StructuredEncryptionHeader.Commitment" +} + +// Definition of class CMPEncryptedDataKey +type CMPEncryptedDataKey struct { +} + +func New_CMPEncryptedDataKey_() *CMPEncryptedDataKey { + _this := CMPEncryptedDataKey{} + + return &_this +} + +type CompanionStruct_CMPEncryptedDataKey_ struct { +} + +var Companion_CMPEncryptedDataKey_ = CompanionStruct_CMPEncryptedDataKey_{} + +func (*CMPEncryptedDataKey) String() string { + return "StructuredEncryptionHeader.CMPEncryptedDataKey" +} + +// End of class CMPEncryptedDataKey + +func Type_CMPEncryptedDataKey_() _dafny.TypeDescriptor { + return type_CMPEncryptedDataKey_{} +} + +type type_CMPEncryptedDataKey_ struct { +} + +func (_this type_CMPEncryptedDataKey_) Default() interface{} { + return m_AwsCryptographyMaterialProvidersTypes.Companion_EncryptedDataKey_.Default() +} + +func (_this type_CMPEncryptedDataKey_) String() string { + return "StructuredEncryptionHeader.CMPEncryptedDataKey" +} +func (_this *CompanionStruct_CMPEncryptedDataKey_) Is_(__source m_AwsCryptographyMaterialProvidersTypes.EncryptedDataKey) bool { + var _2_x m_AwsCryptographyMaterialProvidersTypes.EncryptedDataKey = (__source) + _ = _2_x + return Companion_Default___.ValidEncryptedDataKey(_2_x) +} + +// Definition of class CMPEncryptionContext +type CMPEncryptionContext struct { +} + +func New_CMPEncryptionContext_() *CMPEncryptionContext { + _this := CMPEncryptionContext{} + + return &_this +} + +type CompanionStruct_CMPEncryptionContext_ struct { +} + +var Companion_CMPEncryptionContext_ = CompanionStruct_CMPEncryptionContext_{} + +func (*CMPEncryptionContext) String() string { + return "StructuredEncryptionHeader.CMPEncryptionContext" +} + +// End of class CMPEncryptionContext + +func Type_CMPEncryptionContext_() _dafny.TypeDescriptor { + return type_CMPEncryptionContext_{} +} + +type type_CMPEncryptionContext_ struct { +} + +func (_this type_CMPEncryptionContext_) Default() interface{} { + return _dafny.EmptyMap +} + +func (_this type_CMPEncryptionContext_) String() string { + return "StructuredEncryptionHeader.CMPEncryptionContext" +} +func (_this *CompanionStruct_CMPEncryptionContext_) Is_(__source _dafny.Map) bool { + var _3_x _dafny.Map = (__source) + _ = _3_x + return Companion_Default___.ValidEncryptionContext(_3_x) +} + +// Definition of class CMPEncryptedDataKeyListEmptyOK +type CMPEncryptedDataKeyListEmptyOK struct { +} + +func New_CMPEncryptedDataKeyListEmptyOK_() *CMPEncryptedDataKeyListEmptyOK { + _this := CMPEncryptedDataKeyListEmptyOK{} + + return &_this +} + +type CompanionStruct_CMPEncryptedDataKeyListEmptyOK_ struct { +} + +var Companion_CMPEncryptedDataKeyListEmptyOK_ = CompanionStruct_CMPEncryptedDataKeyListEmptyOK_{} + +func (*CMPEncryptedDataKeyListEmptyOK) String() string { + return "StructuredEncryptionHeader.CMPEncryptedDataKeyListEmptyOK" +} + +// End of class CMPEncryptedDataKeyListEmptyOK + +func Type_CMPEncryptedDataKeyListEmptyOK_() _dafny.TypeDescriptor { + return type_CMPEncryptedDataKeyListEmptyOK_{} +} + +type type_CMPEncryptedDataKeyListEmptyOK_ struct { +} + +func (_this type_CMPEncryptedDataKeyListEmptyOK_) Default() interface{} { + return _dafny.EmptySeq +} + +func (_this type_CMPEncryptedDataKeyListEmptyOK_) String() string { + return "StructuredEncryptionHeader.CMPEncryptedDataKeyListEmptyOK" +} + +// Definition of class LegendByte +type LegendByte struct { +} + +func New_LegendByte_() *LegendByte { + _this := LegendByte{} + + return &_this +} + +type CompanionStruct_LegendByte_ struct { +} + +var Companion_LegendByte_ = CompanionStruct_LegendByte_{} + +func (*LegendByte) String() string { + return "StructuredEncryptionHeader.LegendByte" +} +func (_this *CompanionStruct_LegendByte_) Witness() uint8 { + return Companion_Default___.SIGN__ONLY__LEGEND() +} + +// End of class LegendByte + +func Type_LegendByte_() _dafny.TypeDescriptor { + return type_LegendByte_{} +} + +type type_LegendByte_ struct { +} + +func (_this type_LegendByte_) Default() interface{} { + return Companion_LegendByte_.Witness() +} + +func (_this type_LegendByte_) String() string { + return "StructuredEncryptionHeader.LegendByte" +} +func (_this *CompanionStruct_LegendByte_) Is_(__source uint8) bool { + var _4_x uint8 = (__source) + _ = _4_x + if true { + return Companion_Default___.ValidLegendByte(_4_x) + } + return false +} + +// Definition of class Legend +type Legend struct { +} + +func New_Legend_() *Legend { + _this := Legend{} + + return &_this +} + +type CompanionStruct_Legend_ struct { +} + +var Companion_Legend_ = CompanionStruct_Legend_{} + +func (*Legend) String() string { + return "StructuredEncryptionHeader.Legend" +} + +// End of class Legend + +func Type_Legend_() _dafny.TypeDescriptor { + return type_Legend_{} +} + +type type_Legend_ struct { +} + +func (_this type_Legend_) Default() interface{} { + return _dafny.EmptySeq +} + +func (_this type_Legend_) String() string { + return "StructuredEncryptionHeader.Legend" +} +func (_this *CompanionStruct_Legend_) Is_(__source _dafny.Sequence) bool { + var _5_x _dafny.Sequence = (__source) + _ = _5_x + return (_dafny.IntOfUint32((_5_x).Cardinality())).Cmp(m_StandardLibrary_UInt.Companion_Default___.UINT16__LIMIT()) < 0 +} + +// Definition of class CMPUtf8Bytes +type CMPUtf8Bytes struct { +} + +func New_CMPUtf8Bytes_() *CMPUtf8Bytes { + _this := CMPUtf8Bytes{} + + return &_this +} + +type CompanionStruct_CMPUtf8Bytes_ struct { +} + +var Companion_CMPUtf8Bytes_ = CompanionStruct_CMPUtf8Bytes_{} + +func (*CMPUtf8Bytes) String() string { + return "StructuredEncryptionHeader.CMPUtf8Bytes" +} + +// End of class CMPUtf8Bytes + +func Type_CMPUtf8Bytes_() _dafny.TypeDescriptor { + return type_CMPUtf8Bytes_{} +} + +type type_CMPUtf8Bytes_ struct { +} + +func (_this type_CMPUtf8Bytes_) Default() interface{} { + return m_UTF8.Companion_ValidUTF8Bytes_.Witness() +} + +func (_this type_CMPUtf8Bytes_) String() string { + return "StructuredEncryptionHeader.CMPUtf8Bytes" +} +func (_this *CompanionStruct_CMPUtf8Bytes_) Is_(__source _dafny.Sequence) bool { + var _6_x _dafny.Sequence = (__source) + _ = _6_x + if m_UTF8.Companion_ValidUTF8Bytes_.Is_(_6_x) { + return (_dafny.IntOfUint32((_6_x).Cardinality())).Cmp(m_StandardLibrary_UInt.Companion_Default___.UINT16__LIMIT()) < 0 + } + return false +} + +// Definition of datatype PartialHeader +type PartialHeader struct { + Data_PartialHeader_ +} + +func (_this PartialHeader) Get_() Data_PartialHeader_ { + return _this.Data_PartialHeader_ +} + +type Data_PartialHeader_ interface { + isPartialHeader() +} + +type CompanionStruct_PartialHeader_ struct { +} + +var Companion_PartialHeader_ = CompanionStruct_PartialHeader_{} + +type PartialHeader_PartialHeader struct { + Version uint8 + Flavor uint8 + MsgID _dafny.Sequence + Legend _dafny.Sequence + EncContext _dafny.Map + DataKeys _dafny.Sequence +} + +func (PartialHeader_PartialHeader) isPartialHeader() {} + +func (CompanionStruct_PartialHeader_) Create_PartialHeader_(Version uint8, Flavor uint8, MsgID _dafny.Sequence, Legend _dafny.Sequence, EncContext _dafny.Map, DataKeys _dafny.Sequence) PartialHeader { + return PartialHeader{PartialHeader_PartialHeader{Version, Flavor, MsgID, Legend, EncContext, DataKeys}} +} + +func (_this PartialHeader) Is_PartialHeader() bool { + _, ok := _this.Get_().(PartialHeader_PartialHeader) + return ok +} + +func (CompanionStruct_PartialHeader_) Default() PartialHeader { + return Companion_PartialHeader_.Create_PartialHeader_(Companion_Version_.Witness(), uint8(0), _dafny.EmptySeq, _dafny.EmptySeq, _dafny.EmptyMap, _dafny.EmptySeq) +} + +func (_this PartialHeader) Dtor_version() uint8 { + return _this.Get_().(PartialHeader_PartialHeader).Version +} + +func (_this PartialHeader) Dtor_flavor() uint8 { + return _this.Get_().(PartialHeader_PartialHeader).Flavor +} + +func (_this PartialHeader) Dtor_msgID() _dafny.Sequence { + return _this.Get_().(PartialHeader_PartialHeader).MsgID +} + +func (_this PartialHeader) Dtor_legend() _dafny.Sequence { + return _this.Get_().(PartialHeader_PartialHeader).Legend +} + +func (_this PartialHeader) Dtor_encContext() _dafny.Map { + return _this.Get_().(PartialHeader_PartialHeader).EncContext +} + +func (_this PartialHeader) Dtor_dataKeys() _dafny.Sequence { + return _this.Get_().(PartialHeader_PartialHeader).DataKeys +} + +func (_this PartialHeader) String() string { + switch data := _this.Get_().(type) { + case nil: + return "null" + case PartialHeader_PartialHeader: + { + return "StructuredEncryptionHeader.PartialHeader.PartialHeader" + "(" + _dafny.String(data.Version) + ", " + _dafny.String(data.Flavor) + ", " + _dafny.String(data.MsgID) + ", " + _dafny.String(data.Legend) + ", " + _dafny.String(data.EncContext) + ", " + _dafny.String(data.DataKeys) + ")" + } + default: + { + return "" + } + } +} + +func (_this PartialHeader) Equals(other PartialHeader) bool { + switch data1 := _this.Get_().(type) { + case PartialHeader_PartialHeader: + { + data2, ok := other.Get_().(PartialHeader_PartialHeader) + return ok && data1.Version == data2.Version && data1.Flavor == data2.Flavor && data1.MsgID.Equals(data2.MsgID) && data1.Legend.Equals(data2.Legend) && data1.EncContext.Equals(data2.EncContext) && data1.DataKeys.Equals(data2.DataKeys) + } + default: + { + return false // unexpected + } + } +} + +func (_this PartialHeader) EqualsGeneric(other interface{}) bool { + typed, ok := other.(PartialHeader) + return ok && _this.Equals(typed) +} + +func Type_PartialHeader_() _dafny.TypeDescriptor { + return type_PartialHeader_{} +} + +type type_PartialHeader_ struct { +} + +func (_this type_PartialHeader_) Default() interface{} { + return Companion_PartialHeader_.Default() +} + +func (_this type_PartialHeader_) String() string { + return "StructuredEncryptionHeader.PartialHeader" +} +func (_this PartialHeader) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = PartialHeader{} + +func (_this PartialHeader) Serialize() _dafny.Sequence { + { + var _0_context _dafny.Sequence = Companion_Default___.SerializeContext((_this).Dtor_encContext()) + _ = _0_context + var _1_keys _dafny.Sequence = Companion_Default___.SerializeDataKeys((_this).Dtor_dataKeys()) + _ = _1_keys + var _2_leg _dafny.Sequence = Companion_Default___.SerializeLegend((_this).Dtor_legend()) + _ = _2_leg + return _dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.SeqOf((_this).Dtor_version()), _dafny.SeqOf((_this).Dtor_flavor())), (_this).Dtor_msgID()), _2_leg), _0_context), _1_keys) + } +} +func (_this PartialHeader) VerifyCommitment(client m_AwsCryptographyPrimitivesTypes.IAwsCryptographicPrimitivesClient, alg m_AwsCryptographyMaterialProvidersTypes.AlgorithmSuiteInfo, commitKey _dafny.Sequence, data _dafny.Sequence) m_Wrappers.Result { + { + var _0_valueOrError0 m_Wrappers.Outcome = m_Wrappers.Companion_Default___.Need((Companion_Default___.COMMITMENT__LEN64()) < (uint64((data).Cardinality())), m_StructuredEncryptionUtil.Companion_Default___.E(_dafny.SeqOfString("Serialized header too short"))) + _ = _0_valueOrError0 + if (_0_valueOrError0).IsFailure() { + return (_0_valueOrError0).PropagateFailure() + } else { + var _1_storedCommitment _dafny.Sequence = (data).Drop(uint32((uint64((data).Cardinality())) - (func() uint64 { return (Companion_Default___.COMMITMENT__LEN64()) })())) + _ = _1_storedCommitment + var _2_valueOrError1 m_Wrappers.Result = Companion_Default___.CalculateHeaderCommitment(client, alg, commitKey, (data).Take(uint32((uint64((data).Cardinality()))-(func() uint64 { return (Companion_Default___.COMMITMENT__LEN64()) })()))) + _ = _2_valueOrError1 + if (_2_valueOrError1).IsFailure() { + return (_2_valueOrError1).PropagateFailure() + } else { + var _3_calcCommitment _dafny.Sequence = (_2_valueOrError1).Extract().(_dafny.Sequence) + _ = _3_calcCommitment + var _4_valueOrError2 m_Wrappers.Outcome = m_Wrappers.Companion_Default___.Need(m_StructuredEncryptionUtil.Companion_Default___.ConstantTimeEquals(_1_storedCommitment, _3_calcCommitment), m_StructuredEncryptionUtil.Companion_Default___.E(_dafny.SeqOfString("Key commitment mismatch."))) + _ = _4_valueOrError2 + if (_4_valueOrError2).IsFailure() { + return (_4_valueOrError2).PropagateFailure() + } else { + return m_Wrappers.Companion_Result_.Create_Success_(true) + } + } + } + } +} +func (_this PartialHeader) GetAlgorithmSuite(matProv *m_MaterialProviders.MaterialProvidersClient) m_Wrappers.Result { + { + var ret m_Wrappers.Result = m_Wrappers.Result{} + _ = ret + var _0_algorithmSuiteR m_Wrappers.Result + _ = _0_algorithmSuiteR + _0_algorithmSuiteR = (matProv).GetAlgorithmSuiteInfo(_dafny.SeqOf(m_StructuredEncryptionUtil.Companion_Default___.DbeAlgorithmFamily(), (_this).Dtor_flavor())) + if (_0_algorithmSuiteR).Is_Success() { + var _1_valueOrError0 m_Wrappers.Outcome = m_Wrappers.Companion_Outcome_.Default() + _ = _1_valueOrError0 + _1_valueOrError0 = m_Wrappers.Companion_Default___.Need(m_StructuredEncryptionUtil.Companion_Default___.ValidSuite((_0_algorithmSuiteR).Dtor_value().(m_AwsCryptographyMaterialProvidersTypes.AlgorithmSuiteInfo)), m_StructuredEncryptionUtil.Companion_Default___.E(_dafny.SeqOfString("Invalid Algorithm Suite"))) + if (_1_valueOrError0).IsFailure() { + ret = (_1_valueOrError0).PropagateFailure() + return ret + } + ret = m_Wrappers.Companion_Result_.Create_Success_((_0_algorithmSuiteR).Dtor_value().(m_AwsCryptographyMaterialProvidersTypes.AlgorithmSuiteInfo)) + return ret + } else { + ret = (_0_algorithmSuiteR).MapFailure(func(coer4 func(m_AwsCryptographyMaterialProvidersTypes.Error) m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Error) func(interface{}) interface{} { + return func(arg7 interface{}) interface{} { + return coer4(arg7.(m_AwsCryptographyMaterialProvidersTypes.Error)) + } + }(func(_2_e m_AwsCryptographyMaterialProvidersTypes.Error) m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Error { + return m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Companion_Error_.Create_AwsCryptographyMaterialProviders_(_2_e) + })) + return ret + } + return ret + } +} + +// End of datatype PartialHeader diff --git a/releases/go/dynamodb-esdk/StructuredEncryptionPaths/StructuredEncryptionPaths.go b/releases/go/dynamodb-esdk/StructuredEncryptionPaths/StructuredEncryptionPaths.go new file mode 100644 index 000000000..e0df6709c --- /dev/null +++ b/releases/go/dynamodb-esdk/StructuredEncryptionPaths/StructuredEncryptionPaths.go @@ -0,0 +1,519 @@ +// Package StructuredEncryptionPaths +// Dafny module StructuredEncryptionPaths compiled into Go + +package StructuredEncryptionPaths + +import ( + os "os" + + m_ComAmazonawsDynamodbTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/dynamodb/ComAmazonawsDynamodbTypes" + m_Com_Amazonaws_Dynamodb "github.com/aws/aws-cryptographic-material-providers-library/releases/go/dynamodb/Com_Amazonaws_Dynamodb" + m_ComAmazonawsKmsTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/kms/ComAmazonawsKmsTypes" + m_Com_Amazonaws_Kms "github.com/aws/aws-cryptographic-material-providers-library/releases/go/kms/Com_Amazonaws_Kms" + m_AlgorithmSuites "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AlgorithmSuites" + m_AwsArnParsing "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsArnParsing" + m_AwsCryptographyKeyStoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyKeyStoreOperations" + m_AwsCryptographyKeyStoreTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyKeyStoreTypes" + m_AwsCryptographyMaterialProvidersOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyMaterialProvidersOperations" + m_AwsCryptographyMaterialProvidersTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyMaterialProvidersTypes" + m_AwsKmsDiscoveryKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsDiscoveryKeyring" + m_AwsKmsEcdhKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsEcdhKeyring" + m_AwsKmsHierarchicalKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsHierarchicalKeyring" + m_AwsKmsKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsKeyring" + m_AwsKmsMrkAreUnique "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkAreUnique" + m_AwsKmsMrkDiscoveryKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkDiscoveryKeyring" + m_AwsKmsMrkKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkKeyring" + m_AwsKmsMrkMatchForDecrypt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkMatchForDecrypt" + m_AwsKmsRsaKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsRsaKeyring" + m_AwsKmsUtils "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsUtils" + m_CMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CMM" + m_CacheConstants "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CacheConstants" + m_CanonicalEncryptionContext "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CanonicalEncryptionContext" + m_Commitment "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Commitment" + m_Constants "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Constants" + m_CreateKeyStoreTable "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CreateKeyStoreTable" + m_CreateKeys "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CreateKeys" + m_DDBKeystoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DDBKeystoreOperations" + m_DefaultCMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DefaultCMM" + m_DefaultClientSupplier "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DefaultClientSupplier" + m_Defaults "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Defaults" + m_DiscoveryMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DiscoveryMultiKeyring" + m_EcdhEdkWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/EcdhEdkWrapping" + m_EdkWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/EdkWrapping" + m_ErrorMessages "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/ErrorMessages" + m_GetKeys "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/GetKeys" + m_IntermediateKeyWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/IntermediateKeyWrapping" + m_KMSKeystoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KMSKeystoreOperations" + m_KeyStore "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KeyStore" + m_KeyStoreErrorMessages "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KeyStoreErrorMessages" + m_Keyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Keyring" + m_KmsArn "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KmsArn" + m_LocalCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/LocalCMC" + m_MaterialProviders "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MaterialProviders" + m_MaterialWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MaterialWrapping" + m_Materials "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Materials" + m_MrkAwareDiscoveryMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MrkAwareDiscoveryMultiKeyring" + m_MrkAwareStrictMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MrkAwareStrictMultiKeyring" + m_MultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MultiKeyring" + m_RawAESKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawAESKeyring" + m_RawECDHKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawECDHKeyring" + m_RawRSAKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawRSAKeyring" + m_RequiredEncryptionContextCMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RequiredEncryptionContextCMM" + m_StormTracker "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StormTracker" + m_StormTrackingCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StormTrackingCMC" + m_StrictMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StrictMultiKeyring" + m_Structure "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Structure" + m_SynchronizedLocalCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/SynchronizedLocalCMC" + m_Utils "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Utils" + m_AtomicPrimitives "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AtomicPrimitives" + m_AwsCryptographyPrimitivesOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AwsCryptographyPrimitivesOperations" + m_AwsCryptographyPrimitivesTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AwsCryptographyPrimitivesTypes" + m_Digest "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/Digest" + m_HKDF "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/HKDF" + m_KdfCtr "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/KdfCtr" + m_Random "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/Random" + m_WrappedHKDF "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/WrappedHKDF" + m_WrappedHMAC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/WrappedHMAC" + m_Actions "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Actions" + m_Base64 "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Base64" + m_Base64Lemmas "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Base64Lemmas" + m_BoundedInts "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/BoundedInts" + m_DivInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivInternals" + m_DivInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivInternalsNonlinear" + m_DivMod "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivMod" + m_FileIO "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/FileIO" + m_FloatCompare "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/FloatCompare" + m_Functions "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Functions" + m_GeneralInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/GeneralInternals" + m_GetOpt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/GetOpt" + m_HexStrings "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/HexStrings" + m_Logarithm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Logarithm" + m__Math "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Math_" + m_ModInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/ModInternals" + m_ModInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/ModInternalsNonlinear" + m_Mul "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Mul" + m_MulInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/MulInternals" + m_MulInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/MulInternalsNonlinear" + m_Power "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Power" + m_Relations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Relations" + m_Seq "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Seq" + m_Seq_MergeSort "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Seq_MergeSort" + m_Sorting "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Sorting" + m_StandardLibrary "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary" + m_StandardLibraryInterop "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibraryInterop" + m_StandardLibrary_MemoryMath "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_MemoryMath" + m_StandardLibrary_Sequence "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_Sequence" + m_StandardLibrary_String "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_String" + m_StandardLibrary_UInt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_UInt" + m_Streams "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Streams" + m_UTF8 "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/UTF8" + m_UnicodeStrings "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/UnicodeStrings" + m__Unicode "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Unicode_" + m_Utf16EncodingForm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Utf16EncodingForm" + m_Utf8EncodingForm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Utf8EncodingForm" + m_Wrappers "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Wrappers" + m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes" + m_Sets "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/Sets" + m_StructuredEncryptionUtil "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionUtil" + m__System "github.com/dafny-lang/DafnyRuntimeGo/v4/System_" + _dafny "github.com/dafny-lang/DafnyRuntimeGo/v4/dafny" +) + +var _ = os.Args +var _ _dafny.Dummy__ +var _ m__System.Dummy__ +var _ m_Wrappers.Dummy__ +var _ m_BoundedInts.Dummy__ +var _ m_StandardLibrary_UInt.Dummy__ +var _ m_StandardLibrary_MemoryMath.Dummy__ +var _ m_StandardLibrary_Sequence.Dummy__ +var _ m_StandardLibrary_String.Dummy__ +var _ m_StandardLibrary.Dummy__ +var _ m_AwsCryptographyPrimitivesTypes.Dummy__ +var _ m_Random.Dummy__ +var _ m_Digest.Dummy__ +var _ m_WrappedHMAC.Dummy__ +var _ m_HKDF.Dummy__ +var _ m_WrappedHKDF.Dummy__ +var _ m_KdfCtr.Dummy__ +var _ m_AwsCryptographyPrimitivesOperations.Dummy__ +var _ m_AtomicPrimitives.Dummy__ +var _ m_ComAmazonawsDynamodbTypes.Dummy__ +var _ m_ComAmazonawsKmsTypes.Dummy__ +var _ m_AwsCryptographyKeyStoreTypes.Dummy__ +var _ m_AwsCryptographyMaterialProvidersTypes.Dummy__ +var _ m_Base64.Dummy__ +var _ m_AlgorithmSuites.Dummy__ +var _ m_Materials.Dummy__ +var _ m_Keyring.Dummy__ +var _ m_Relations.Dummy__ +var _ m_Seq_MergeSort.Dummy__ +var _ m__Math.Dummy__ +var _ m_Seq.Dummy__ +var _ m_Actions.Dummy__ +var _ m_CanonicalEncryptionContext.Dummy__ +var _ m_MaterialWrapping.Dummy__ +var _ m_IntermediateKeyWrapping.Dummy__ +var _ m_EdkWrapping.Dummy__ +var _ m_ErrorMessages.Dummy__ +var _ m_RawAESKeyring.Dummy__ +var _ m_AwsArnParsing.Dummy__ +var _ m_Constants.Dummy__ +var _ m_EcdhEdkWrapping.Dummy__ +var _ m_RawECDHKeyring.Dummy__ +var _ m_RawRSAKeyring.Dummy__ +var _ m_AwsKmsMrkMatchForDecrypt.Dummy__ +var _ m_AwsKmsUtils.Dummy__ +var _ m_AwsKmsKeyring.Dummy__ +var _ m_AwsKmsDiscoveryKeyring.Dummy__ +var _ m_AwsKmsEcdhKeyring.Dummy__ +var _ m_FileIO.Dummy__ +var _ m_LocalCMC.Dummy__ +var _ m_SynchronizedLocalCMC.Dummy__ +var _ m_StormTracker.Dummy__ +var _ m_StormTrackingCMC.Dummy__ +var _ m_CacheConstants.Dummy__ +var _ m_AwsKmsHierarchicalKeyring.Dummy__ +var _ m_AwsKmsMrkDiscoveryKeyring.Dummy__ +var _ m_AwsKmsMrkKeyring.Dummy__ +var _ m_AwsKmsRsaKeyring.Dummy__ +var _ m_MultiKeyring.Dummy__ +var _ m_AwsKmsMrkAreUnique.Dummy__ +var _ m_StrictMultiKeyring.Dummy__ +var _ m_Com_Amazonaws_Kms.Dummy__ +var _ m_Com_Amazonaws_Dynamodb.Dummy__ +var _ m_DiscoveryMultiKeyring.Dummy__ +var _ m_MrkAwareDiscoveryMultiKeyring.Dummy__ +var _ m_MrkAwareStrictMultiKeyring.Dummy__ +var _ m_CMM.Dummy__ +var _ m_Defaults.Dummy__ +var _ m_Commitment.Dummy__ +var _ m_DefaultCMM.Dummy__ +var _ m_DefaultClientSupplier.Dummy__ +var _ m_Utils.Dummy__ +var _ m_RequiredEncryptionContextCMM.Dummy__ +var _ m_AwsCryptographyMaterialProvidersOperations.Dummy__ +var _ m_MaterialProviders.Dummy__ +var _ m_KeyStoreErrorMessages.Dummy__ +var _ m_KmsArn.Dummy__ +var _ m_Structure.Dummy__ +var _ m_KMSKeystoreOperations.Dummy__ +var _ m_DDBKeystoreOperations.Dummy__ +var _ m_CreateKeys.Dummy__ +var _ m_CreateKeyStoreTable.Dummy__ +var _ m_GetKeys.Dummy__ +var _ m_AwsCryptographyKeyStoreOperations.Dummy__ +var _ m_KeyStore.Dummy__ +var _ m__Unicode.Dummy__ +var _ m_Functions.Dummy__ +var _ m_Utf8EncodingForm.Dummy__ +var _ m_Utf16EncodingForm.Dummy__ +var _ m_UnicodeStrings.Dummy__ +var _ m_GeneralInternals.Dummy__ +var _ m_MulInternalsNonlinear.Dummy__ +var _ m_MulInternals.Dummy__ +var _ m_Mul.Dummy__ +var _ m_ModInternalsNonlinear.Dummy__ +var _ m_DivInternalsNonlinear.Dummy__ +var _ m_ModInternals.Dummy__ +var _ m_DivInternals.Dummy__ +var _ m_DivMod.Dummy__ +var _ m_Power.Dummy__ +var _ m_Logarithm.Dummy__ +var _ m_StandardLibraryInterop.Dummy__ +var _ m_Streams.Dummy__ +var _ m_Sorting.Dummy__ +var _ m_HexStrings.Dummy__ +var _ m_GetOpt.Dummy__ +var _ m_FloatCompare.Dummy__ +var _ m_Base64Lemmas.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Dummy__ +var _ m_StructuredEncryptionUtil.Dummy__ +var _ m_Sets.Dummy__ + +type Dummy__ struct{} + +// Definition of class Default__ +type Default__ struct { + dummy byte +} + +func New_Default___() *Default__ { + _this := Default__{} + + return &_this +} + +type CompanionStruct_Default___ struct { +} + +var Companion_Default___ = CompanionStruct_Default___{} + +func (_this *Default__) Equals(other *Default__) bool { + return _this == other +} + +func (_this *Default__) EqualsGeneric(x interface{}) bool { + other, ok := x.(*Default__) + return ok && _this.Equals(other) +} + +func (*Default__) String() string { + return "StructuredEncryptionPaths.Default__" +} +func (_this *Default__) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = &Default__{} + +func (_static *CompanionStruct_Default___) ValidTerminalSelector(s _dafny.Sequence) bool { + return ((uint64(0)) < (uint64((s).Cardinality()))) && (((s).Select(uint32(uint32(0))).(Selector)).Is_Map()) +} +func (_static *CompanionStruct_Default___) StringToUniPath(x _dafny.Sequence) _dafny.Sequence { + return _dafny.SeqOf(m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Companion_PathSegment_.Create_member_(m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Companion_StructureSegment_.Create_StructureSegment_(x))) +} +func (_static *CompanionStruct_Default___) UniPathToString(x _dafny.Sequence) m_Wrappers.Result { + return m_Wrappers.Companion_Result_.Create_Success_((((x).Select(uint32(uint32(0))).(m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.PathSegment)).Dtor_member()).Dtor_key()) +} +func (_static *CompanionStruct_Default___) ValidPath(path _dafny.Sequence) bool { + return _dafny.Quantifier((path).UniqueElements(), true, func(_forall_var_0 m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.PathSegment) bool { + var _0_x m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.PathSegment + _0_x = interface{}(_forall_var_0).(m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.PathSegment) + return !(_dafny.Companion_Sequence_.Contains(path, _0_x)) || (m_StructuredEncryptionUtil.Companion_Default___.ValidString(((_0_x).Dtor_member()).Dtor_key())) + }) +} +func (_static *CompanionStruct_Default___) CanonPath(table _dafny.Sequence, path _dafny.Sequence) _dafny.Sequence { + var _0_tableName _dafny.Sequence = (m_UTF8.Encode(table)).Dtor_value().(_dafny.Sequence) + _ = _0_tableName + var _1_depth _dafny.Sequence = m_StandardLibrary_UInt.Companion_Default___.UInt64ToSeq(uint64((path).Cardinality())) + _ = _1_depth + var _2_path _dafny.Sequence = Companion_Default___.MakeCanonicalPath(path) + _ = _2_path + return _dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_0_tableName, _1_depth), _2_path) +} +func (_static *CompanionStruct_Default___) TermLocMap_q(attr _dafny.Sequence) m_Wrappers.Result { + var _0_valueOrError0 m_Wrappers.Outcome = m_Wrappers.Companion_Default___.Need(m_StructuredEncryptionUtil.Companion_Default___.ValidString(attr), m_StructuredEncryptionUtil.Companion_Default___.E(_dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("invalid string : "), attr))) + _ = _0_valueOrError0 + if (_0_valueOrError0).IsFailure() { + return (_0_valueOrError0).PropagateFailure() + } else { + return m_Wrappers.Companion_Result_.Create_Success_(_dafny.SeqOf(m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Companion_PathSegment_.Create_member_(m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Companion_StructureSegment_.Create_StructureSegment_(attr)))) + } +} +func (_static *CompanionStruct_Default___) TermLocMap(attr _dafny.Sequence) _dafny.Sequence { + return _dafny.SeqOf(m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Companion_PathSegment_.Create_member_(m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Companion_StructureSegment_.Create_StructureSegment_(attr))) +} +func (_static *CompanionStruct_Default___) SimpleCanon(table _dafny.Sequence, attr _dafny.Sequence) _dafny.Sequence { + return Companion_Default___.CanonPath(table, Companion_Default___.TermLocMap(attr)) +} +func (_static *CompanionStruct_Default___) CanonicalPart(s m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.PathSegment) _dafny.Sequence { + return _dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.SeqOf(Companion_Default___.MAP__TAG()), m_StandardLibrary_UInt.Companion_Default___.UInt64ToSeq(uint64((((s).Dtor_member()).Dtor_key()).Cardinality()))), (m_UTF8.Encode(((s).Dtor_member()).Dtor_key())).Dtor_value().(_dafny.Sequence)) +} +func (_static *CompanionStruct_Default___) MakeCanonicalPath(path _dafny.Sequence) _dafny.Sequence { + var ret _dafny.Sequence = _dafny.EmptySeq + _ = ret + var _0_result _dafny.Sequence + _ = _0_result + _0_result = _dafny.SeqOf() + var _lo0 uint64 = uint64(0) + _ = _lo0 + for _1_i := uint64((path).Cardinality()); _lo0 < _1_i; { + _1_i-- + _0_result = _dafny.Companion_Sequence_.Concatenate(Companion_Default___.CanonicalPart((path).Select(uint32(_1_i)).(m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.PathSegment)), _0_result) + } + ret = _0_result + return ret + return ret +} +func (_static *CompanionStruct_Default___) PathToString(path _dafny.Sequence) _dafny.Sequence { + var _0___accumulator _dafny.Sequence = _dafny.SeqOfChars() + _ = _0___accumulator + goto TAIL_CALL_START +TAIL_CALL_START: + if (uint64((path).Cardinality())) == (uint64(0)) { + return _dafny.Companion_Sequence_.Concatenate(_0___accumulator, _dafny.SeqOfString("")) + } else if (uint64((path).Cardinality())) == (uint64(1)) { + return _dafny.Companion_Sequence_.Concatenate(_0___accumulator, (((path).Select(uint32(uint32(0))).(m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.PathSegment)).Dtor_member()).Dtor_key()) + } else { + _0___accumulator = _dafny.Companion_Sequence_.Concatenate(_0___accumulator, _dafny.Companion_Sequence_.Concatenate((((path).Select(uint32(uint32(0))).(m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.PathSegment)).Dtor_member()).Dtor_key(), _dafny.SeqOfString("."))) + var _in0 _dafny.Sequence = (path).Drop(uint32(uint32(1))) + _ = _in0 + path = _in0 + goto TAIL_CALL_START + } +} +func (_static *CompanionStruct_Default___) MAP__TAG() uint8 { + return uint8(_dafny.Char('$')) +} +func (_static *CompanionStruct_Default___) ARRAY__TAG() uint8 { + return uint8(_dafny.Char('#')) +} + +// End of class Default__ + +// Definition of datatype Selector +type Selector struct { + Data_Selector_ +} + +func (_this Selector) Get_() Data_Selector_ { + return _this.Data_Selector_ +} + +type Data_Selector_ interface { + isSelector() +} + +type CompanionStruct_Selector_ struct { +} + +var Companion_Selector_ = CompanionStruct_Selector_{} + +type Selector_List struct { + Pos uint64 +} + +func (Selector_List) isSelector() {} + +func (CompanionStruct_Selector_) Create_List_(Pos uint64) Selector { + return Selector{Selector_List{Pos}} +} + +func (_this Selector) Is_List() bool { + _, ok := _this.Get_().(Selector_List) + return ok +} + +type Selector_Map struct { + Key _dafny.Sequence +} + +func (Selector_Map) isSelector() {} + +func (CompanionStruct_Selector_) Create_Map_(Key _dafny.Sequence) Selector { + return Selector{Selector_Map{Key}} +} + +func (_this Selector) Is_Map() bool { + _, ok := _this.Get_().(Selector_Map) + return ok +} + +func (CompanionStruct_Selector_) Default() Selector { + return Companion_Selector_.Create_List_(uint64(0)) +} + +func (_this Selector) Dtor_pos() uint64 { + return _this.Get_().(Selector_List).Pos +} + +func (_this Selector) Dtor_key() _dafny.Sequence { + return _this.Get_().(Selector_Map).Key +} + +func (_this Selector) String() string { + switch data := _this.Get_().(type) { + case nil: + return "null" + case Selector_List: + { + return "StructuredEncryptionPaths.Selector.List" + "(" + _dafny.String(data.Pos) + ")" + } + case Selector_Map: + { + return "StructuredEncryptionPaths.Selector.Map" + "(" + _dafny.String(data.Key) + ")" + } + default: + { + return "" + } + } +} + +func (_this Selector) Equals(other Selector) bool { + switch data1 := _this.Get_().(type) { + case Selector_List: + { + data2, ok := other.Get_().(Selector_List) + return ok && data1.Pos == data2.Pos + } + case Selector_Map: + { + data2, ok := other.Get_().(Selector_Map) + return ok && data1.Key.Equals(data2.Key) + } + default: + { + return false // unexpected + } + } +} + +func (_this Selector) EqualsGeneric(other interface{}) bool { + typed, ok := other.(Selector) + return ok && _this.Equals(typed) +} + +func Type_Selector_() _dafny.TypeDescriptor { + return type_Selector_{} +} + +type type_Selector_ struct { +} + +func (_this type_Selector_) Default() interface{} { + return Companion_Selector_.Default() +} + +func (_this type_Selector_) String() string { + return "StructuredEncryptionPaths.Selector" +} +func (_this Selector) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = Selector{} + +// End of datatype Selector + +// Definition of class TerminalSelector +type TerminalSelector struct { +} + +func New_TerminalSelector_() *TerminalSelector { + _this := TerminalSelector{} + + return &_this +} + +type CompanionStruct_TerminalSelector_ struct { +} + +var Companion_TerminalSelector_ = CompanionStruct_TerminalSelector_{} + +func (*TerminalSelector) String() string { + return "StructuredEncryptionPaths.TerminalSelector" +} + +// End of class TerminalSelector + +func Type_TerminalSelector_() _dafny.TypeDescriptor { + return type_TerminalSelector_{} +} + +type type_TerminalSelector_ struct { +} + +func (_this type_TerminalSelector_) Default() interface{} { + return _dafny.EmptySeq +} + +func (_this type_TerminalSelector_) String() string { + return "StructuredEncryptionPaths.TerminalSelector" +} +func (_this *CompanionStruct_TerminalSelector_) Is_(__source _dafny.Sequence) bool { + var _0_x _dafny.Sequence = (__source) + _ = _0_x + return Companion_Default___.ValidTerminalSelector(_0_x) +} diff --git a/releases/go/dynamodb-esdk/StructuredEncryptionUtil/StructuredEncryptionUtil.go b/releases/go/dynamodb-esdk/StructuredEncryptionUtil/StructuredEncryptionUtil.go new file mode 100644 index 000000000..785411ad4 --- /dev/null +++ b/releases/go/dynamodb-esdk/StructuredEncryptionUtil/StructuredEncryptionUtil.go @@ -0,0 +1,1056 @@ +// Package StructuredEncryptionUtil +// Dafny module StructuredEncryptionUtil compiled into Go + +package StructuredEncryptionUtil + +import ( + os "os" + + m_ComAmazonawsDynamodbTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/dynamodb/ComAmazonawsDynamodbTypes" + m_Com_Amazonaws_Dynamodb "github.com/aws/aws-cryptographic-material-providers-library/releases/go/dynamodb/Com_Amazonaws_Dynamodb" + m_ComAmazonawsKmsTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/kms/ComAmazonawsKmsTypes" + m_Com_Amazonaws_Kms "github.com/aws/aws-cryptographic-material-providers-library/releases/go/kms/Com_Amazonaws_Kms" + m_AlgorithmSuites "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AlgorithmSuites" + m_AwsArnParsing "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsArnParsing" + m_AwsCryptographyKeyStoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyKeyStoreOperations" + m_AwsCryptographyKeyStoreTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyKeyStoreTypes" + m_AwsCryptographyMaterialProvidersOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyMaterialProvidersOperations" + m_AwsCryptographyMaterialProvidersTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyMaterialProvidersTypes" + m_AwsKmsDiscoveryKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsDiscoveryKeyring" + m_AwsKmsEcdhKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsEcdhKeyring" + m_AwsKmsHierarchicalKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsHierarchicalKeyring" + m_AwsKmsKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsKeyring" + m_AwsKmsMrkAreUnique "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkAreUnique" + m_AwsKmsMrkDiscoveryKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkDiscoveryKeyring" + m_AwsKmsMrkKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkKeyring" + m_AwsKmsMrkMatchForDecrypt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkMatchForDecrypt" + m_AwsKmsRsaKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsRsaKeyring" + m_AwsKmsUtils "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsUtils" + m_CMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CMM" + m_CacheConstants "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CacheConstants" + m_CanonicalEncryptionContext "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CanonicalEncryptionContext" + m_Commitment "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Commitment" + m_Constants "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Constants" + m_CreateKeyStoreTable "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CreateKeyStoreTable" + m_CreateKeys "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CreateKeys" + m_DDBKeystoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DDBKeystoreOperations" + m_DefaultCMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DefaultCMM" + m_DefaultClientSupplier "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DefaultClientSupplier" + m_Defaults "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Defaults" + m_DiscoveryMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DiscoveryMultiKeyring" + m_EcdhEdkWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/EcdhEdkWrapping" + m_EdkWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/EdkWrapping" + m_ErrorMessages "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/ErrorMessages" + m_GetKeys "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/GetKeys" + m_IntermediateKeyWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/IntermediateKeyWrapping" + m_KMSKeystoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KMSKeystoreOperations" + m_KeyStore "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KeyStore" + m_KeyStoreErrorMessages "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KeyStoreErrorMessages" + m_Keyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Keyring" + m_KmsArn "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KmsArn" + m_LocalCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/LocalCMC" + m_MaterialProviders "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MaterialProviders" + m_MaterialWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MaterialWrapping" + m_Materials "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Materials" + m_MrkAwareDiscoveryMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MrkAwareDiscoveryMultiKeyring" + m_MrkAwareStrictMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MrkAwareStrictMultiKeyring" + m_MultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MultiKeyring" + m_RawAESKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawAESKeyring" + m_RawECDHKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawECDHKeyring" + m_RawRSAKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawRSAKeyring" + m_RequiredEncryptionContextCMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RequiredEncryptionContextCMM" + m_StormTracker "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StormTracker" + m_StormTrackingCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StormTrackingCMC" + m_StrictMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StrictMultiKeyring" + m_Structure "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Structure" + m_SynchronizedLocalCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/SynchronizedLocalCMC" + m_Utils "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Utils" + m_AtomicPrimitives "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AtomicPrimitives" + m_AwsCryptographyPrimitivesOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AwsCryptographyPrimitivesOperations" + m_AwsCryptographyPrimitivesTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AwsCryptographyPrimitivesTypes" + m_Digest "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/Digest" + m_HKDF "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/HKDF" + m_KdfCtr "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/KdfCtr" + m_Random "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/Random" + m_WrappedHKDF "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/WrappedHKDF" + m_WrappedHMAC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/WrappedHMAC" + m_Actions "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Actions" + m_Base64 "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Base64" + m_Base64Lemmas "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Base64Lemmas" + m_BoundedInts "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/BoundedInts" + m_DivInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivInternals" + m_DivInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivInternalsNonlinear" + m_DivMod "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivMod" + m_FileIO "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/FileIO" + m_FloatCompare "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/FloatCompare" + m_Functions "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Functions" + m_GeneralInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/GeneralInternals" + m_GetOpt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/GetOpt" + m_HexStrings "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/HexStrings" + m_Logarithm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Logarithm" + m__Math "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Math_" + m_ModInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/ModInternals" + m_ModInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/ModInternalsNonlinear" + m_Mul "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Mul" + m_MulInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/MulInternals" + m_MulInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/MulInternalsNonlinear" + m_Power "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Power" + m_Relations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Relations" + m_Seq "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Seq" + m_Seq_MergeSort "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Seq_MergeSort" + m_SortedSets "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/SortedSets" + m_Sorting "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Sorting" + m_StandardLibrary "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary" + m_StandardLibraryInterop "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibraryInterop" + m_StandardLibrary_MemoryMath "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_MemoryMath" + m_StandardLibrary_Sequence "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_Sequence" + m_StandardLibrary_String "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_String" + m_StandardLibrary_UInt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_UInt" + m_Streams "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Streams" + m_UTF8 "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/UTF8" + m_UnicodeStrings "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/UnicodeStrings" + m__Unicode "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Unicode_" + m_Utf16EncodingForm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Utf16EncodingForm" + m_Utf8EncodingForm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Utf8EncodingForm" + m_Wrappers "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Wrappers" + m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes" + m__System "github.com/dafny-lang/DafnyRuntimeGo/v4/System_" + _dafny "github.com/dafny-lang/DafnyRuntimeGo/v4/dafny" +) + +var _ = os.Args +var _ _dafny.Dummy__ +var _ m__System.Dummy__ +var _ m_Wrappers.Dummy__ +var _ m_BoundedInts.Dummy__ +var _ m_StandardLibrary_UInt.Dummy__ +var _ m_StandardLibrary_MemoryMath.Dummy__ +var _ m_StandardLibrary_Sequence.Dummy__ +var _ m_StandardLibrary_String.Dummy__ +var _ m_StandardLibrary.Dummy__ +var _ m_AwsCryptographyPrimitivesTypes.Dummy__ +var _ m_Random.Dummy__ +var _ m_Digest.Dummy__ +var _ m_WrappedHMAC.Dummy__ +var _ m_HKDF.Dummy__ +var _ m_WrappedHKDF.Dummy__ +var _ m_KdfCtr.Dummy__ +var _ m_AwsCryptographyPrimitivesOperations.Dummy__ +var _ m_AtomicPrimitives.Dummy__ +var _ m_ComAmazonawsDynamodbTypes.Dummy__ +var _ m_ComAmazonawsKmsTypes.Dummy__ +var _ m_AwsCryptographyKeyStoreTypes.Dummy__ +var _ m_AwsCryptographyMaterialProvidersTypes.Dummy__ +var _ m_Base64.Dummy__ +var _ m_AlgorithmSuites.Dummy__ +var _ m_Materials.Dummy__ +var _ m_Keyring.Dummy__ +var _ m_Relations.Dummy__ +var _ m_Seq_MergeSort.Dummy__ +var _ m__Math.Dummy__ +var _ m_Seq.Dummy__ +var _ m_Actions.Dummy__ +var _ m_CanonicalEncryptionContext.Dummy__ +var _ m_MaterialWrapping.Dummy__ +var _ m_IntermediateKeyWrapping.Dummy__ +var _ m_EdkWrapping.Dummy__ +var _ m_ErrorMessages.Dummy__ +var _ m_RawAESKeyring.Dummy__ +var _ m_AwsArnParsing.Dummy__ +var _ m_Constants.Dummy__ +var _ m_EcdhEdkWrapping.Dummy__ +var _ m_RawECDHKeyring.Dummy__ +var _ m_RawRSAKeyring.Dummy__ +var _ m_AwsKmsMrkMatchForDecrypt.Dummy__ +var _ m_AwsKmsUtils.Dummy__ +var _ m_AwsKmsKeyring.Dummy__ +var _ m_AwsKmsDiscoveryKeyring.Dummy__ +var _ m_AwsKmsEcdhKeyring.Dummy__ +var _ m_FileIO.Dummy__ +var _ m_LocalCMC.Dummy__ +var _ m_SynchronizedLocalCMC.Dummy__ +var _ m_StormTracker.Dummy__ +var _ m_StormTrackingCMC.Dummy__ +var _ m_CacheConstants.Dummy__ +var _ m_AwsKmsHierarchicalKeyring.Dummy__ +var _ m_AwsKmsMrkDiscoveryKeyring.Dummy__ +var _ m_AwsKmsMrkKeyring.Dummy__ +var _ m_AwsKmsRsaKeyring.Dummy__ +var _ m_MultiKeyring.Dummy__ +var _ m_AwsKmsMrkAreUnique.Dummy__ +var _ m_StrictMultiKeyring.Dummy__ +var _ m_Com_Amazonaws_Kms.Dummy__ +var _ m_Com_Amazonaws_Dynamodb.Dummy__ +var _ m_DiscoveryMultiKeyring.Dummy__ +var _ m_MrkAwareDiscoveryMultiKeyring.Dummy__ +var _ m_MrkAwareStrictMultiKeyring.Dummy__ +var _ m_CMM.Dummy__ +var _ m_Defaults.Dummy__ +var _ m_Commitment.Dummy__ +var _ m_DefaultCMM.Dummy__ +var _ m_DefaultClientSupplier.Dummy__ +var _ m_Utils.Dummy__ +var _ m_RequiredEncryptionContextCMM.Dummy__ +var _ m_AwsCryptographyMaterialProvidersOperations.Dummy__ +var _ m_MaterialProviders.Dummy__ +var _ m_KeyStoreErrorMessages.Dummy__ +var _ m_KmsArn.Dummy__ +var _ m_Structure.Dummy__ +var _ m_KMSKeystoreOperations.Dummy__ +var _ m_DDBKeystoreOperations.Dummy__ +var _ m_CreateKeys.Dummy__ +var _ m_CreateKeyStoreTable.Dummy__ +var _ m_GetKeys.Dummy__ +var _ m_AwsCryptographyKeyStoreOperations.Dummy__ +var _ m_KeyStore.Dummy__ +var _ m__Unicode.Dummy__ +var _ m_Functions.Dummy__ +var _ m_Utf8EncodingForm.Dummy__ +var _ m_Utf16EncodingForm.Dummy__ +var _ m_UnicodeStrings.Dummy__ +var _ m_GeneralInternals.Dummy__ +var _ m_MulInternalsNonlinear.Dummy__ +var _ m_MulInternals.Dummy__ +var _ m_Mul.Dummy__ +var _ m_ModInternalsNonlinear.Dummy__ +var _ m_DivInternalsNonlinear.Dummy__ +var _ m_ModInternals.Dummy__ +var _ m_DivInternals.Dummy__ +var _ m_DivMod.Dummy__ +var _ m_Power.Dummy__ +var _ m_Logarithm.Dummy__ +var _ m_StandardLibraryInterop.Dummy__ +var _ m_Streams.Dummy__ +var _ m_Sorting.Dummy__ +var _ m_HexStrings.Dummy__ +var _ m_GetOpt.Dummy__ +var _ m_FloatCompare.Dummy__ +var _ m_Base64Lemmas.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Dummy__ + +type Dummy__ struct{} + +// Definition of class Default__ +type Default__ struct { + dummy byte +} + +func New_Default___() *Default__ { + _this := Default__{} + + return &_this +} + +type CompanionStruct_Default___ struct { +} + +var Companion_Default___ = CompanionStruct_Default___{} + +func (_this *Default__) Equals(other *Default__) bool { + return _this == other +} + +func (_this *Default__) EqualsGeneric(x interface{}) bool { + other, ok := x.(*Default__) + return ok && _this.Equals(other) +} + +func (*Default__) String() string { + return "StructuredEncryptionUtil.Default__" +} +func (_this *Default__) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = &Default__{} + +func (_static *CompanionStruct_Default___) CryptoListToSet(xs _dafny.Sequence) _dafny.Set { + return func() _dafny.Set { + var _coll0 = _dafny.NewBuilder() + _ = _coll0 + for _iter0 := _dafny.Iterate((xs).Elements()); ; { + _compr_0, _ok0 := _iter0() + if !_ok0 { + break + } + var _0_k m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.CryptoItem + _0_k = interface{}(_compr_0).(m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.CryptoItem) + if _dafny.Companion_Sequence_.Contains(xs, _0_k) { + _coll0.Add((_0_k).Dtor_key()) + } + } + return _coll0.ToSet() + }() +} +func (_static *CompanionStruct_Default___) CanonCryptoListToSet(xs _dafny.Sequence) _dafny.Set { + return func() _dafny.Set { + var _coll0 = _dafny.NewBuilder() + _ = _coll0 + for _iter1 := _dafny.Iterate((xs).Elements()); ; { + _compr_0, _ok1 := _iter1() + if !_ok1 { + break + } + var _0_k CanonCryptoItem + _0_k = interface{}(_compr_0).(CanonCryptoItem) + if _dafny.Companion_Sequence_.Contains(xs, _0_k) { + _coll0.Add((_0_k).Dtor_origKey()) + } + } + return _coll0.ToSet() + }() +} +func (_static *CompanionStruct_Default___) AuthListToSet(xs _dafny.Sequence) _dafny.Set { + return func() _dafny.Set { + var _coll0 = _dafny.NewBuilder() + _ = _coll0 + for _iter2 := _dafny.Iterate((xs).Elements()); ; { + _compr_0, _ok2 := _iter2() + if !_ok2 { + break + } + var _0_k m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.AuthItem + _0_k = interface{}(_compr_0).(m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.AuthItem) + if _dafny.Companion_Sequence_.Contains(xs, _0_k) { + _coll0.Add((_0_k).Dtor_key()) + } + } + return _coll0.ToSet() + }() +} +func (_static *CompanionStruct_Default___) CryptoListHasNoDuplicatesFromSet(xs _dafny.Sequence) bool { + return (uint64((Companion_Default___.CryptoListToSet(xs)).CardinalityInt())) == (uint64((xs).Cardinality())) +} +func (_static *CompanionStruct_Default___) AuthListHasNoDuplicatesFromSet(xs _dafny.Sequence) bool { + return (uint64((Companion_Default___.AuthListToSet(xs)).CardinalityInt())) == (uint64((xs).Cardinality())) +} +func (_static *CompanionStruct_Default___) ValidString(x _dafny.Sequence) bool { + return (m_StandardLibrary_UInt.Companion_Default___.HasUint64Len(x)) && ((m_UTF8.Encode(x)).Is_Success()) +} +func (_static *CompanionStruct_Default___) ValidSuite(alg m_AwsCryptographyMaterialProvidersTypes.AlgorithmSuiteInfo) bool { + return (((alg).Dtor_id()).Is_DBE()) && (m_AlgorithmSuites.Companion_Default___.DBEAlgorithmSuite_q(alg)) +} +func (_static *CompanionStruct_Default___) E(s _dafny.Sequence) m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Error { + return m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Companion_Error_.Create_StructuredEncryptionException_(s) +} +func (_static *CompanionStruct_Default___) ConstantTimeCompare(a _dafny.Sequence, b _dafny.Sequence, pos uint64, acc uint8) uint8 { + goto TAIL_CALL_START +TAIL_CALL_START: + if (uint64((a).Cardinality())) == (pos) { + return acc + } else { + var _0_x uint8 = (uint8((a).Select(uint32(pos)).(uint8))) ^ (uint8((b).Select(uint32(pos)).(uint8))) + _ = _0_x + var _in0 _dafny.Sequence = a + _ = _in0 + var _in1 _dafny.Sequence = b + _ = _in1 + var _in2 uint64 = (pos) + (uint64(1)) + _ = _in2 + var _in3 uint8 = (_0_x) | (acc) + _ = _in3 + a = _in0 + b = _in1 + pos = _in2 + acc = _in3 + goto TAIL_CALL_START + } +} +func (_static *CompanionStruct_Default___) ConstantTimeEquals(a _dafny.Sequence, b _dafny.Sequence) bool { + return (Companion_Default___.ConstantTimeCompare(a, b, uint64(0), uint8(0))) == (uint8(0)) +} +func (_static *CompanionStruct_Default___) IsAuthAttr(x m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.CryptoAction) bool { + return !((x).Is_DO__NOTHING()) +} +func (_static *CompanionStruct_Default___) ValueToData(value _dafny.Sequence, typeId _dafny.Sequence) m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.StructuredDataTerminal { + return m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Companion_StructuredDataTerminal_.Create_StructuredDataTerminal_(value, typeId) +} +func (_static *CompanionStruct_Default___) GetValue(data m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.StructuredDataTerminal) _dafny.Sequence { + return (data).Dtor_value() +} +func (_static *CompanionStruct_Default___) ByteLess(x uint8, y uint8) bool { + return (x) < (y) +} +func (_static *CompanionStruct_Default___) CharLess(x _dafny.Char, y _dafny.Char) bool { + return (x) < (y) +} +func (_static *CompanionStruct_Default___) EcAsString(ec _dafny.Map) _dafny.Map { + var output _dafny.Map = _dafny.EmptyMap + _ = output + var _0_keys _dafny.Sequence + _ = _0_keys + _0_keys = m_SortedSets.SetToOrderedSequence2((ec).Keys(), func(coer0 func(uint8, uint8) bool) func(interface{}, interface{}) bool { + return func(arg0 interface{}, arg1 interface{}) bool { + return coer0(arg0.(uint8), arg1.(uint8)) + } + }(Companion_Default___.ByteLess)) + var _1_ret _dafny.Map + _ = _1_ret + _1_ret = _dafny.NewMapBuilder().ToMap() + var _hi0 uint64 = uint64((_0_keys).Cardinality()) + _ = _hi0 + for _2_i := uint64(0); _2_i < _hi0; _2_i++ { + var _3_valueOrError0 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(_dafny.EmptySeq.SetString()) + _ = _3_valueOrError0 + _3_valueOrError0 = m_UTF8.Decode((_0_keys).Select(uint32(_2_i)).(_dafny.Sequence)) + if !(!((_3_valueOrError0).IsFailure())) { + panic("dafny/StructuredEncryption/src/Util.dfy(304,17): " + (_3_valueOrError0).String()) + } + var _4_key _dafny.Sequence + _ = _4_key + _4_key = (_3_valueOrError0).Extract().(_dafny.Sequence) + var _5_valueOrError1 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(_dafny.EmptySeq.SetString()) + _ = _5_valueOrError1 + _5_valueOrError1 = m_UTF8.Decode((ec).Get((_0_keys).Select(uint32(_2_i)).(_dafny.Sequence)).(_dafny.Sequence)) + if !(!((_5_valueOrError1).IsFailure())) { + panic("dafny/StructuredEncryption/src/Util.dfy(305,19): " + (_5_valueOrError1).String()) + } + var _6_value _dafny.Sequence + _ = _6_value + _6_value = (_5_valueOrError1).Extract().(_dafny.Sequence) + _1_ret = (_1_ret).Update(_4_key, _6_value) + } + output = _1_ret + return output + return output +} +func (_static *CompanionStruct_Default___) PrintEncryptionContext(ec _dafny.Map, name _dafny.Sequence) { + var _0_keys _dafny.Sequence + _ = _0_keys + _0_keys = m_SortedSets.SetToOrderedSequence2((ec).Keys(), func(coer1 func(uint8, uint8) bool) func(interface{}, interface{}) bool { + return func(arg2 interface{}, arg3 interface{}) bool { + return coer1(arg2.(uint8), arg3.(uint8)) + } + }(Companion_Default___.ByteLess)) + _dafny.Print((name).SetString()) + _dafny.Print((_dafny.SeqOfString(" := {\n")).SetString()) + var _hi0 _dafny.Int = _dafny.IntOfUint32((_0_keys).Cardinality()) + _ = _hi0 + for _1_i := _dafny.Zero; _1_i.Cmp(_hi0) < 0; _1_i = _1_i.Plus(_dafny.One) { + var _2_valueOrError0 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(_dafny.EmptySeq.SetString()) + _ = _2_valueOrError0 + _2_valueOrError0 = m_UTF8.Decode((_0_keys).Select((_1_i).Uint32()).(_dafny.Sequence)) + if !(!((_2_valueOrError0).IsFailure())) { + panic("dafny/StructuredEncryption/src/Util.dfy(316,17): " + (_2_valueOrError0).String()) + } + var _3_key _dafny.Sequence + _ = _3_key + _3_key = (_2_valueOrError0).Extract().(_dafny.Sequence) + var _4_valueOrError1 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(_dafny.EmptySeq.SetString()) + _ = _4_valueOrError1 + _4_valueOrError1 = m_UTF8.Decode((ec).Get((_0_keys).Select((_1_i).Uint32()).(_dafny.Sequence)).(_dafny.Sequence)) + if !(!((_4_valueOrError1).IsFailure())) { + panic("dafny/StructuredEncryption/src/Util.dfy(317,19): " + (_4_valueOrError1).String()) + } + var _5_value _dafny.Sequence + _ = _5_value + _5_value = (_4_valueOrError1).Extract().(_dafny.Sequence) + _dafny.Print((_dafny.SeqOfString(" ")).SetString()) + _dafny.Print((_3_key).SetString()) + _dafny.Print((_dafny.SeqOfString(" := ")).SetString()) + _dafny.Print((_5_value).SetString()) + _dafny.Print((_dafny.SeqOfString("\n")).SetString()) + } + _dafny.Print((_dafny.SeqOfString("}\n")).SetString()) +} +func (_static *CompanionStruct_Default___) EncodeTerminal(t m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.StructuredDataTerminal) _dafny.Sequence { + var _0_base _dafny.Sequence = m_Base64.Companion_Default___.Encode(_dafny.Companion_Sequence_.Concatenate((t).Dtor_typeId(), (t).Dtor_value())) + _ = _0_base + return (m_UTF8.Encode(_0_base)).Dtor_value().(_dafny.Sequence) +} +func (_static *CompanionStruct_Default___) DecodeTerminal(t _dafny.Sequence) m_Wrappers.Result { + var _0_valueOrError0 m_Wrappers.Result = m_UTF8.Decode(t) + _ = _0_valueOrError0 + if (_0_valueOrError0).IsFailure() { + return (_0_valueOrError0).PropagateFailure() + } else { + var _1_utf8DecodedVal _dafny.Sequence = (_0_valueOrError0).Extract().(_dafny.Sequence) + _ = _1_utf8DecodedVal + var _2_valueOrError1 m_Wrappers.Result = m_Base64.Companion_Default___.Decode(_1_utf8DecodedVal) + _ = _2_valueOrError1 + if (_2_valueOrError1).IsFailure() { + return (_2_valueOrError1).PropagateFailure() + } else { + var _3_base64DecodedVal _dafny.Sequence = (_2_valueOrError1).Extract().(_dafny.Sequence) + _ = _3_base64DecodedVal + var _4_valueOrError2 m_Wrappers.Outcome = m_Wrappers.Companion_Default___.Need((uint64((_3_base64DecodedVal).Cardinality())) >= (uint64(2)), _dafny.SeqOfString("Invalid serialization of DDB Attribute in encryption context.")) + _ = _4_valueOrError2 + if (_4_valueOrError2).IsFailure() { + return (_4_valueOrError2).PropagateFailure() + } else { + var _5_typeId _dafny.Sequence = (_3_base64DecodedVal).Take(uint32(uint32(2))) + _ = _5_typeId + var _6_serializedValue _dafny.Sequence = (_3_base64DecodedVal).Drop(uint32(uint32(2))) + _ = _6_serializedValue + return m_Wrappers.Companion_Result_.Create_Success_(m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Companion_StructuredDataTerminal_.Create_StructuredDataTerminal_(_6_serializedValue, _5_typeId)) + } + } + } +} +func (_static *CompanionStruct_Default___) ReservedPrefix() _dafny.Sequence { + return _dafny.SeqOfString("aws_dbe_") +} +func (_static *CompanionStruct_Default___) HeaderField() _dafny.Sequence { + return _dafny.Companion_Sequence_.Concatenate(Companion_Default___.ReservedPrefix(), _dafny.SeqOfString("head")) +} +func (_static *CompanionStruct_Default___) FooterField() _dafny.Sequence { + return _dafny.Companion_Sequence_.Concatenate(Companion_Default___.ReservedPrefix(), _dafny.SeqOfString("foot")) +} +func (_static *CompanionStruct_Default___) HeaderPath() _dafny.Sequence { + return _dafny.SeqOf(m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Companion_PathSegment_.Create_member_(m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Companion_StructureSegment_.Create_StructureSegment_(Companion_Default___.HeaderField()))) +} +func (_static *CompanionStruct_Default___) FooterPath() _dafny.Sequence { + return _dafny.SeqOf(m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Companion_PathSegment_.Create_member_(m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Companion_StructureSegment_.Create_StructureSegment_(Companion_Default___.FooterField()))) +} +func (_static *CompanionStruct_Default___) HeaderPaths() _dafny.Sequence { + return _dafny.SeqOf(Companion_Default___.HeaderPath(), Companion_Default___.FooterPath()) +} +func (_static *CompanionStruct_Default___) ReservedCryptoContextPrefixString() _dafny.Sequence { + return _dafny.SeqOfString("aws-crypto-") +} +func (_static *CompanionStruct_Default___) ReservedCryptoContextPrefixUTF8() _dafny.Sequence { + var _0_s _dafny.Sequence = _dafny.SeqOf(uint8(97), uint8(119), uint8(115), uint8(45), uint8(99), uint8(114), uint8(121), uint8(112), uint8(116), uint8(111), uint8(45)) + _ = _0_s + return _0_s +} +func (_static *CompanionStruct_Default___) ATTR__PREFIX() _dafny.Sequence { + return _dafny.Companion_Sequence_.Concatenate(Companion_Default___.ReservedCryptoContextPrefixString(), _dafny.SeqOfString("attr.")) +} +func (_static *CompanionStruct_Default___) EC__ATTR__PREFIX() _dafny.Sequence { + var _0_s _dafny.Sequence = _dafny.SeqOf(uint8(97), uint8(119), uint8(115), uint8(45), uint8(99), uint8(114), uint8(121), uint8(112), uint8(116), uint8(111), uint8(45), uint8(97), uint8(116), uint8(116), uint8(114), uint8(46)) + _ = _0_s + return _0_s +} +func (_static *CompanionStruct_Default___) LEGEND() _dafny.Sequence { + return _dafny.Companion_Sequence_.Concatenate(Companion_Default___.ReservedCryptoContextPrefixString(), _dafny.SeqOfString("legend")) +} +func (_static *CompanionStruct_Default___) LEGEND__UTF8() _dafny.Sequence { + var _0_s _dafny.Sequence = _dafny.SeqOf(uint8(97), uint8(119), uint8(115), uint8(45), uint8(99), uint8(114), uint8(121), uint8(112), uint8(116), uint8(111), uint8(45), uint8(108), uint8(101), uint8(103), uint8(101), uint8(110), uint8(100)) + _ = _0_s + return _0_s +} +func (_static *CompanionStruct_Default___) NULL__STR() _dafny.Sequence { + return _dafny.SeqOfString("null") +} +func (_static *CompanionStruct_Default___) NULL__UTF8() _dafny.Sequence { + var _0_s _dafny.Sequence = _dafny.SeqOf(uint8(110), uint8(117), uint8(108), uint8(108)) + _ = _0_s + return _0_s +} +func (_static *CompanionStruct_Default___) TRUE__STR() _dafny.Sequence { + return _dafny.SeqOfString("true") +} +func (_static *CompanionStruct_Default___) TRUE__UTF8() _dafny.Sequence { + var _0_s _dafny.Sequence = _dafny.SeqOf(uint8(116), uint8(114), uint8(117), uint8(101)) + _ = _0_s + return _0_s +} +func (_static *CompanionStruct_Default___) FALSE__STR() _dafny.Sequence { + return _dafny.SeqOfString("false") +} +func (_static *CompanionStruct_Default___) FALSE__UTF8() _dafny.Sequence { + var _0_s _dafny.Sequence = _dafny.SeqOf(uint8(102), uint8(97), uint8(108), uint8(115), uint8(101)) + _ = _0_s + return _0_s +} +func (_static *CompanionStruct_Default___) BYTES__TYPE__ID() _dafny.Sequence { + return _dafny.SeqOf(uint8(255), uint8(255)) +} +func (_static *CompanionStruct_Default___) TERM__T() uint8 { + return uint8(0) +} +func (_static *CompanionStruct_Default___) NULL__T() uint8 { + return uint8(0) +} +func (_static *CompanionStruct_Default___) NULL() _dafny.Sequence { + return _dafny.SeqOf(Companion_Default___.TERM__T(), Companion_Default___.NULL__T()) +} +func (_static *CompanionStruct_Default___) STRING__T() uint8 { + return uint8(1) +} +func (_static *CompanionStruct_Default___) STRING() _dafny.Sequence { + return _dafny.SeqOf(Companion_Default___.TERM__T(), Companion_Default___.STRING__T()) +} +func (_static *CompanionStruct_Default___) NUMBER__T() uint8 { + return uint8(2) +} +func (_static *CompanionStruct_Default___) NUMBER() _dafny.Sequence { + return _dafny.SeqOf(Companion_Default___.TERM__T(), Companion_Default___.NUMBER__T()) +} +func (_static *CompanionStruct_Default___) BOOLEAN__T() uint8 { + return uint8(4) +} +func (_static *CompanionStruct_Default___) BOOLEAN() _dafny.Sequence { + return _dafny.SeqOf(Companion_Default___.TERM__T(), Companion_Default___.BOOLEAN__T()) +} +func (_static *CompanionStruct_Default___) SET__T() uint8 { + return uint8(1) +} +func (_static *CompanionStruct_Default___) STRING__SET() _dafny.Sequence { + return _dafny.SeqOf(Companion_Default___.SET__T(), Companion_Default___.STRING__T()) +} +func (_static *CompanionStruct_Default___) NUMBER__SET() _dafny.Sequence { + return _dafny.SeqOf(Companion_Default___.SET__T(), Companion_Default___.NUMBER__T()) +} +func (_static *CompanionStruct_Default___) BINARY__T() uint8 { + return uint8(255) +} +func (_static *CompanionStruct_Default___) BINARY__SET() _dafny.Sequence { + return _dafny.SeqOf(Companion_Default___.SET__T(), Companion_Default___.BINARY__T()) +} +func (_static *CompanionStruct_Default___) MAP__T() uint8 { + return uint8(2) +} +func (_static *CompanionStruct_Default___) MAP() _dafny.Sequence { + return _dafny.SeqOf(Companion_Default___.MAP__T(), Companion_Default___.NULL__T()) +} +func (_static *CompanionStruct_Default___) LIST__T() uint8 { + return uint8(3) +} +func (_static *CompanionStruct_Default___) LIST() _dafny.Sequence { + return _dafny.SeqOf(Companion_Default___.LIST__T(), Companion_Default___.NULL__T()) +} +func (_static *CompanionStruct_Default___) LEGEND__STRING() _dafny.Char { + return _dafny.Char('S') +} +func (_static *CompanionStruct_Default___) LEGEND__NUMBER() _dafny.Char { + return _dafny.Char('N') +} +func (_static *CompanionStruct_Default___) LEGEND__LITERAL() _dafny.Char { + return _dafny.Char('L') +} +func (_static *CompanionStruct_Default___) LEGEND__BINARY() _dafny.Char { + return _dafny.Char('B') +} +func (_static *CompanionStruct_Default___) TYPEID__LEN64() uint64 { + return uint64(2) +} +func (_static *CompanionStruct_Default___) KeySize64() uint64 { + return uint64(32) +} +func (_static *CompanionStruct_Default___) NonceSize64() uint64 { + return uint64(12) +} +func (_static *CompanionStruct_Default___) AuthTagSize64() uint64 { + return uint64(16) +} +func (_static *CompanionStruct_Default___) MSGID__LEN64() uint64 { + return uint64(32) +} +func (_static *CompanionStruct_Default___) DbeAlgorithmFamily() uint8 { + return uint8(103) +} +func (_static *CompanionStruct_Default___) BINARY() _dafny.Sequence { + return _dafny.SeqOf(uint8(255), uint8(255)) +} + +// End of class Default__ + +// Definition of datatype CanonCryptoItem +type CanonCryptoItem struct { + Data_CanonCryptoItem_ +} + +func (_this CanonCryptoItem) Get_() Data_CanonCryptoItem_ { + return _this.Data_CanonCryptoItem_ +} + +type Data_CanonCryptoItem_ interface { + isCanonCryptoItem() +} + +type CompanionStruct_CanonCryptoItem_ struct { +} + +var Companion_CanonCryptoItem_ = CompanionStruct_CanonCryptoItem_{} + +type CanonCryptoItem_CanonCryptoItem struct { + Key _dafny.Sequence + OrigKey _dafny.Sequence + Data m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.StructuredDataTerminal + Action m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.CryptoAction +} + +func (CanonCryptoItem_CanonCryptoItem) isCanonCryptoItem() {} + +func (CompanionStruct_CanonCryptoItem_) Create_CanonCryptoItem_(Key _dafny.Sequence, OrigKey _dafny.Sequence, Data m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.StructuredDataTerminal, Action m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.CryptoAction) CanonCryptoItem { + return CanonCryptoItem{CanonCryptoItem_CanonCryptoItem{Key, OrigKey, Data, Action}} +} + +func (_this CanonCryptoItem) Is_CanonCryptoItem() bool { + _, ok := _this.Get_().(CanonCryptoItem_CanonCryptoItem) + return ok +} + +func (CompanionStruct_CanonCryptoItem_) Default() CanonCryptoItem { + return Companion_CanonCryptoItem_.Create_CanonCryptoItem_(_dafny.EmptySeq, _dafny.EmptySeq, m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Companion_StructuredDataTerminal_.Default(), m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Companion_CryptoAction_.Default()) +} + +func (_this CanonCryptoItem) Dtor_key() _dafny.Sequence { + return _this.Get_().(CanonCryptoItem_CanonCryptoItem).Key +} + +func (_this CanonCryptoItem) Dtor_origKey() _dafny.Sequence { + return _this.Get_().(CanonCryptoItem_CanonCryptoItem).OrigKey +} + +func (_this CanonCryptoItem) Dtor_data() m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.StructuredDataTerminal { + return _this.Get_().(CanonCryptoItem_CanonCryptoItem).Data +} + +func (_this CanonCryptoItem) Dtor_action() m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.CryptoAction { + return _this.Get_().(CanonCryptoItem_CanonCryptoItem).Action +} + +func (_this CanonCryptoItem) String() string { + switch data := _this.Get_().(type) { + case nil: + return "null" + case CanonCryptoItem_CanonCryptoItem: + { + return "StructuredEncryptionUtil.CanonCryptoItem.CanonCryptoItem" + "(" + _dafny.String(data.Key) + ", " + _dafny.String(data.OrigKey) + ", " + _dafny.String(data.Data) + ", " + _dafny.String(data.Action) + ")" + } + default: + { + return "" + } + } +} + +func (_this CanonCryptoItem) Equals(other CanonCryptoItem) bool { + switch data1 := _this.Get_().(type) { + case CanonCryptoItem_CanonCryptoItem: + { + data2, ok := other.Get_().(CanonCryptoItem_CanonCryptoItem) + return ok && data1.Key.Equals(data2.Key) && data1.OrigKey.Equals(data2.OrigKey) && data1.Data.Equals(data2.Data) && data1.Action.Equals(data2.Action) + } + default: + { + return false // unexpected + } + } +} + +func (_this CanonCryptoItem) EqualsGeneric(other interface{}) bool { + typed, ok := other.(CanonCryptoItem) + return ok && _this.Equals(typed) +} + +func Type_CanonCryptoItem_() _dafny.TypeDescriptor { + return type_CanonCryptoItem_{} +} + +type type_CanonCryptoItem_ struct { +} + +func (_this type_CanonCryptoItem_) Default() interface{} { + return Companion_CanonCryptoItem_.Default() +} + +func (_this type_CanonCryptoItem_) String() string { + return "StructuredEncryptionUtil.CanonCryptoItem" +} +func (_this CanonCryptoItem) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = CanonCryptoItem{} + +// End of datatype CanonCryptoItem + +// Definition of datatype CanonAuthItem +type CanonAuthItem struct { + Data_CanonAuthItem_ +} + +func (_this CanonAuthItem) Get_() Data_CanonAuthItem_ { + return _this.Data_CanonAuthItem_ +} + +type Data_CanonAuthItem_ interface { + isCanonAuthItem() +} + +type CompanionStruct_CanonAuthItem_ struct { +} + +var Companion_CanonAuthItem_ = CompanionStruct_CanonAuthItem_{} + +type CanonAuthItem_CanonAuthItem struct { + Key _dafny.Sequence + OrigKey _dafny.Sequence + Data m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.StructuredDataTerminal + Action m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.AuthenticateAction +} + +func (CanonAuthItem_CanonAuthItem) isCanonAuthItem() {} + +func (CompanionStruct_CanonAuthItem_) Create_CanonAuthItem_(Key _dafny.Sequence, OrigKey _dafny.Sequence, Data m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.StructuredDataTerminal, Action m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.AuthenticateAction) CanonAuthItem { + return CanonAuthItem{CanonAuthItem_CanonAuthItem{Key, OrigKey, Data, Action}} +} + +func (_this CanonAuthItem) Is_CanonAuthItem() bool { + _, ok := _this.Get_().(CanonAuthItem_CanonAuthItem) + return ok +} + +func (CompanionStruct_CanonAuthItem_) Default() CanonAuthItem { + return Companion_CanonAuthItem_.Create_CanonAuthItem_(_dafny.EmptySeq, _dafny.EmptySeq, m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Companion_StructuredDataTerminal_.Default(), m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Companion_AuthenticateAction_.Default()) +} + +func (_this CanonAuthItem) Dtor_key() _dafny.Sequence { + return _this.Get_().(CanonAuthItem_CanonAuthItem).Key +} + +func (_this CanonAuthItem) Dtor_origKey() _dafny.Sequence { + return _this.Get_().(CanonAuthItem_CanonAuthItem).OrigKey +} + +func (_this CanonAuthItem) Dtor_data() m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.StructuredDataTerminal { + return _this.Get_().(CanonAuthItem_CanonAuthItem).Data +} + +func (_this CanonAuthItem) Dtor_action() m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.AuthenticateAction { + return _this.Get_().(CanonAuthItem_CanonAuthItem).Action +} + +func (_this CanonAuthItem) String() string { + switch data := _this.Get_().(type) { + case nil: + return "null" + case CanonAuthItem_CanonAuthItem: + { + return "StructuredEncryptionUtil.CanonAuthItem.CanonAuthItem" + "(" + _dafny.String(data.Key) + ", " + _dafny.String(data.OrigKey) + ", " + _dafny.String(data.Data) + ", " + _dafny.String(data.Action) + ")" + } + default: + { + return "" + } + } +} + +func (_this CanonAuthItem) Equals(other CanonAuthItem) bool { + switch data1 := _this.Get_().(type) { + case CanonAuthItem_CanonAuthItem: + { + data2, ok := other.Get_().(CanonAuthItem_CanonAuthItem) + return ok && data1.Key.Equals(data2.Key) && data1.OrigKey.Equals(data2.OrigKey) && data1.Data.Equals(data2.Data) && data1.Action.Equals(data2.Action) + } + default: + { + return false // unexpected + } + } +} + +func (_this CanonAuthItem) EqualsGeneric(other interface{}) bool { + typed, ok := other.(CanonAuthItem) + return ok && _this.Equals(typed) +} + +func Type_CanonAuthItem_() _dafny.TypeDescriptor { + return type_CanonAuthItem_{} +} + +type type_CanonAuthItem_ struct { +} + +func (_this type_CanonAuthItem_) Default() interface{} { + return Companion_CanonAuthItem_.Default() +} + +func (_this type_CanonAuthItem_) String() string { + return "StructuredEncryptionUtil.CanonAuthItem" +} +func (_this CanonAuthItem) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = CanonAuthItem{} + +// End of datatype CanonAuthItem + +// Definition of class Key +type Key struct { +} + +func New_Key_() *Key { + _this := Key{} + + return &_this +} + +type CompanionStruct_Key_ struct { +} + +var Companion_Key_ = CompanionStruct_Key_{} + +func (*Key) String() string { + return "StructuredEncryptionUtil.Key" +} + +// End of class Key + +func Type_Key_() _dafny.TypeDescriptor { + return type_Key_{} +} + +type type_Key_ struct { +} + +func (_this type_Key_) Default() interface{} { + return _dafny.EmptySeq +} + +func (_this type_Key_) String() string { + return "StructuredEncryptionUtil.Key" +} + +// Definition of class Nonce +type Nonce struct { +} + +func New_Nonce_() *Nonce { + _this := Nonce{} + + return &_this +} + +type CompanionStruct_Nonce_ struct { +} + +var Companion_Nonce_ = CompanionStruct_Nonce_{} + +func (*Nonce) String() string { + return "StructuredEncryptionUtil.Nonce" +} + +// End of class Nonce + +func Type_Nonce_() _dafny.TypeDescriptor { + return type_Nonce_{} +} + +type type_Nonce_ struct { +} + +func (_this type_Nonce_) Default() interface{} { + return _dafny.EmptySeq +} + +func (_this type_Nonce_) String() string { + return "StructuredEncryptionUtil.Nonce" +} + +// Definition of class AuthTag +type AuthTag struct { +} + +func New_AuthTag_() *AuthTag { + _this := AuthTag{} + + return &_this +} + +type CompanionStruct_AuthTag_ struct { +} + +var Companion_AuthTag_ = CompanionStruct_AuthTag_{} + +func (*AuthTag) String() string { + return "StructuredEncryptionUtil.AuthTag" +} + +// End of class AuthTag + +func Type_AuthTag_() _dafny.TypeDescriptor { + return type_AuthTag_{} +} + +type type_AuthTag_ struct { +} + +func (_this type_AuthTag_) Default() interface{} { + return _dafny.EmptySeq +} + +func (_this type_AuthTag_) String() string { + return "StructuredEncryptionUtil.AuthTag" +} + +// Definition of class MessageID +type MessageID struct { +} + +func New_MessageID_() *MessageID { + _this := MessageID{} + + return &_this +} + +type CompanionStruct_MessageID_ struct { +} + +var Companion_MessageID_ = CompanionStruct_MessageID_{} + +func (*MessageID) String() string { + return "StructuredEncryptionUtil.MessageID" +} + +// End of class MessageID + +func Type_MessageID_() _dafny.TypeDescriptor { + return type_MessageID_{} +} + +type type_MessageID_ struct { +} + +func (_this type_MessageID_) Default() interface{} { + return _dafny.EmptySeq +} + +func (_this type_MessageID_) String() string { + return "StructuredEncryptionUtil.MessageID" +} + +// Definition of class GoodString +type GoodString struct { +} + +func New_GoodString_() *GoodString { + _this := GoodString{} + + return &_this +} + +type CompanionStruct_GoodString_ struct { +} + +var Companion_GoodString_ = CompanionStruct_GoodString_{} + +func (*GoodString) String() string { + return "StructuredEncryptionUtil.GoodString" +} + +// End of class GoodString + +func Type_GoodString_() _dafny.TypeDescriptor { + return type_GoodString_{} +} + +type type_GoodString_ struct { +} + +func (_this type_GoodString_) Default() interface{} { + return _dafny.EmptySeq.SetString() +} + +func (_this type_GoodString_) String() string { + return "StructuredEncryptionUtil.GoodString" +} +func (_this *CompanionStruct_GoodString_) Is_(__source _dafny.Sequence) bool { + var _0_x _dafny.Sequence = (__source) + _ = _0_x + return Companion_Default___.ValidString(_0_x) +} diff --git a/releases/go/dynamodb-esdk/TermLoc/TermLoc.go b/releases/go/dynamodb-esdk/TermLoc/TermLoc.go new file mode 100644 index 000000000..4acdd3611 --- /dev/null +++ b/releases/go/dynamodb-esdk/TermLoc/TermLoc.go @@ -0,0 +1,883 @@ +// Package TermLoc +// Dafny module TermLoc compiled into Go + +package TermLoc + +import ( + os "os" + + m_ComAmazonawsDynamodbTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/dynamodb/ComAmazonawsDynamodbTypes" + m_Com_Amazonaws_Dynamodb "github.com/aws/aws-cryptographic-material-providers-library/releases/go/dynamodb/Com_Amazonaws_Dynamodb" + m_ComAmazonawsKmsTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/kms/ComAmazonawsKmsTypes" + m_Com_Amazonaws_Kms "github.com/aws/aws-cryptographic-material-providers-library/releases/go/kms/Com_Amazonaws_Kms" + m_AlgorithmSuites "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AlgorithmSuites" + m_AwsArnParsing "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsArnParsing" + m_AwsCryptographyKeyStoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyKeyStoreOperations" + m_AwsCryptographyKeyStoreTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyKeyStoreTypes" + m_AwsCryptographyMaterialProvidersOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyMaterialProvidersOperations" + m_AwsCryptographyMaterialProvidersTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyMaterialProvidersTypes" + m_AwsKmsDiscoveryKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsDiscoveryKeyring" + m_AwsKmsEcdhKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsEcdhKeyring" + m_AwsKmsHierarchicalKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsHierarchicalKeyring" + m_AwsKmsKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsKeyring" + m_AwsKmsMrkAreUnique "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkAreUnique" + m_AwsKmsMrkDiscoveryKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkDiscoveryKeyring" + m_AwsKmsMrkKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkKeyring" + m_AwsKmsMrkMatchForDecrypt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkMatchForDecrypt" + m_AwsKmsRsaKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsRsaKeyring" + m_AwsKmsUtils "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsUtils" + m_CMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CMM" + m_CacheConstants "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CacheConstants" + m_CanonicalEncryptionContext "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CanonicalEncryptionContext" + m_Commitment "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Commitment" + m_Constants "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Constants" + m_CreateKeyStoreTable "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CreateKeyStoreTable" + m_CreateKeys "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CreateKeys" + m_DDBKeystoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DDBKeystoreOperations" + m_DefaultCMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DefaultCMM" + m_DefaultClientSupplier "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DefaultClientSupplier" + m_Defaults "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Defaults" + m_DiscoveryMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DiscoveryMultiKeyring" + m_EcdhEdkWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/EcdhEdkWrapping" + m_EdkWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/EdkWrapping" + m_ErrorMessages "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/ErrorMessages" + m_GetKeys "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/GetKeys" + m_IntermediateKeyWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/IntermediateKeyWrapping" + m_KMSKeystoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KMSKeystoreOperations" + m_KeyStore "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KeyStore" + m_KeyStoreErrorMessages "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KeyStoreErrorMessages" + m_Keyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Keyring" + m_KmsArn "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KmsArn" + m_LocalCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/LocalCMC" + m_MaterialProviders "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MaterialProviders" + m_MaterialWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MaterialWrapping" + m_Materials "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Materials" + m_MrkAwareDiscoveryMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MrkAwareDiscoveryMultiKeyring" + m_MrkAwareStrictMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MrkAwareStrictMultiKeyring" + m_MultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MultiKeyring" + m_RawAESKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawAESKeyring" + m_RawECDHKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawECDHKeyring" + m_RawRSAKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawRSAKeyring" + m_RequiredEncryptionContextCMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RequiredEncryptionContextCMM" + m_StormTracker "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StormTracker" + m_StormTrackingCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StormTrackingCMC" + m_StrictMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StrictMultiKeyring" + m_Structure "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Structure" + m_SynchronizedLocalCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/SynchronizedLocalCMC" + m_Utils "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Utils" + m_AtomicPrimitives "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AtomicPrimitives" + m_AwsCryptographyPrimitivesOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AwsCryptographyPrimitivesOperations" + m_AwsCryptographyPrimitivesTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AwsCryptographyPrimitivesTypes" + m_Digest "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/Digest" + m_HKDF "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/HKDF" + m_KdfCtr "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/KdfCtr" + m_Random "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/Random" + m_WrappedHKDF "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/WrappedHKDF" + m_WrappedHMAC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/WrappedHMAC" + m_Actions "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Actions" + m_Base64 "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Base64" + m_Base64Lemmas "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Base64Lemmas" + m_BoundedInts "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/BoundedInts" + m_DivInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivInternals" + m_DivInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivInternalsNonlinear" + m_DivMod "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivMod" + m_FileIO "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/FileIO" + m_FloatCompare "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/FloatCompare" + m_Functions "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Functions" + m_GeneralInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/GeneralInternals" + m_GetOpt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/GetOpt" + m_HexStrings "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/HexStrings" + m_Logarithm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Logarithm" + m__Math "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Math_" + m_ModInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/ModInternals" + m_ModInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/ModInternalsNonlinear" + m_Mul "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Mul" + m_MulInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/MulInternals" + m_MulInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/MulInternalsNonlinear" + m_Power "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Power" + m_Relations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Relations" + m_Seq "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Seq" + m_Seq_MergeSort "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Seq_MergeSort" + m_Sorting "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Sorting" + m_StandardLibrary "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary" + m_StandardLibraryInterop "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibraryInterop" + m_StandardLibrary_MemoryMath "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_MemoryMath" + m_StandardLibrary_Sequence "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_Sequence" + m_StandardLibrary_String "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_String" + m_StandardLibrary_UInt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_UInt" + m_Streams "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Streams" + m_UnicodeStrings "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/UnicodeStrings" + m__Unicode "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Unicode_" + m_Utf16EncodingForm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Utf16EncodingForm" + m_Utf8EncodingForm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Utf8EncodingForm" + m_Wrappers "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Wrappers" + m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations" + m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes" + m_AwsCryptographyDbEncryptionSdkDynamoDbOperations "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbOperations" + m_AwsCryptographyDbEncryptionSdkDynamoDbTypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbTypes" + m_AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations" + m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes" + m_Canonize "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/Canonize" + m_DynamoDbEncryption "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbEncryption" + m_DynamoDbEncryptionBranchKeyIdSupplier "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbEncryptionBranchKeyIdSupplier" + m_DynamoDbEncryptionUtil "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbEncryptionUtil" + m_DynamoDbItemEncryptor "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbItemEncryptor" + m_DynamoDbItemEncryptorUtil "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbItemEncryptorUtil" + m_DynamoDbNormalizeNumber "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbNormalizeNumber" + m_DynamoToStruct "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoToStruct" + m_InternalLegacyOverride "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/InternalLegacyOverride" + m__Maps "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/Maps_" + m_OptimizedMergeSort "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/OptimizedMergeSort" + m_Sets "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/Sets" + m_SortCanon "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/SortCanon" + m_StructuredEncryption "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryption" + m_StructuredEncryptionCrypt "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionCrypt" + m_StructuredEncryptionFooter "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionFooter" + m_StructuredEncryptionHeader "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionHeader" + m_StructuredEncryptionPaths "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionPaths" + m_StructuredEncryptionUtil "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionUtil" + m__System "github.com/dafny-lang/DafnyRuntimeGo/v4/System_" + _dafny "github.com/dafny-lang/DafnyRuntimeGo/v4/dafny" +) + +var _ = os.Args +var _ _dafny.Dummy__ +var _ m__System.Dummy__ +var _ m_Wrappers.Dummy__ +var _ m_BoundedInts.Dummy__ +var _ m_StandardLibrary_UInt.Dummy__ +var _ m_StandardLibrary_MemoryMath.Dummy__ +var _ m_StandardLibrary_Sequence.Dummy__ +var _ m_StandardLibrary_String.Dummy__ +var _ m_StandardLibrary.Dummy__ +var _ m_AwsCryptographyPrimitivesTypes.Dummy__ +var _ m_Random.Dummy__ +var _ m_Digest.Dummy__ +var _ m_WrappedHMAC.Dummy__ +var _ m_HKDF.Dummy__ +var _ m_WrappedHKDF.Dummy__ +var _ m_KdfCtr.Dummy__ +var _ m_AwsCryptographyPrimitivesOperations.Dummy__ +var _ m_AtomicPrimitives.Dummy__ +var _ m_ComAmazonawsDynamodbTypes.Dummy__ +var _ m_ComAmazonawsKmsTypes.Dummy__ +var _ m_AwsCryptographyKeyStoreTypes.Dummy__ +var _ m_AwsCryptographyMaterialProvidersTypes.Dummy__ +var _ m_Base64.Dummy__ +var _ m_AlgorithmSuites.Dummy__ +var _ m_Materials.Dummy__ +var _ m_Keyring.Dummy__ +var _ m_Relations.Dummy__ +var _ m_Seq_MergeSort.Dummy__ +var _ m__Math.Dummy__ +var _ m_Seq.Dummy__ +var _ m_Actions.Dummy__ +var _ m_CanonicalEncryptionContext.Dummy__ +var _ m_MaterialWrapping.Dummy__ +var _ m_IntermediateKeyWrapping.Dummy__ +var _ m_EdkWrapping.Dummy__ +var _ m_ErrorMessages.Dummy__ +var _ m_RawAESKeyring.Dummy__ +var _ m_AwsArnParsing.Dummy__ +var _ m_Constants.Dummy__ +var _ m_EcdhEdkWrapping.Dummy__ +var _ m_RawECDHKeyring.Dummy__ +var _ m_RawRSAKeyring.Dummy__ +var _ m_AwsKmsMrkMatchForDecrypt.Dummy__ +var _ m_AwsKmsUtils.Dummy__ +var _ m_AwsKmsKeyring.Dummy__ +var _ m_AwsKmsDiscoveryKeyring.Dummy__ +var _ m_AwsKmsEcdhKeyring.Dummy__ +var _ m_FileIO.Dummy__ +var _ m_LocalCMC.Dummy__ +var _ m_SynchronizedLocalCMC.Dummy__ +var _ m_StormTracker.Dummy__ +var _ m_StormTrackingCMC.Dummy__ +var _ m_CacheConstants.Dummy__ +var _ m_AwsKmsHierarchicalKeyring.Dummy__ +var _ m_AwsKmsMrkDiscoveryKeyring.Dummy__ +var _ m_AwsKmsMrkKeyring.Dummy__ +var _ m_AwsKmsRsaKeyring.Dummy__ +var _ m_MultiKeyring.Dummy__ +var _ m_AwsKmsMrkAreUnique.Dummy__ +var _ m_StrictMultiKeyring.Dummy__ +var _ m_Com_Amazonaws_Kms.Dummy__ +var _ m_Com_Amazonaws_Dynamodb.Dummy__ +var _ m_DiscoveryMultiKeyring.Dummy__ +var _ m_MrkAwareDiscoveryMultiKeyring.Dummy__ +var _ m_MrkAwareStrictMultiKeyring.Dummy__ +var _ m_CMM.Dummy__ +var _ m_Defaults.Dummy__ +var _ m_Commitment.Dummy__ +var _ m_DefaultCMM.Dummy__ +var _ m_DefaultClientSupplier.Dummy__ +var _ m_Utils.Dummy__ +var _ m_RequiredEncryptionContextCMM.Dummy__ +var _ m_AwsCryptographyMaterialProvidersOperations.Dummy__ +var _ m_MaterialProviders.Dummy__ +var _ m_KeyStoreErrorMessages.Dummy__ +var _ m_KmsArn.Dummy__ +var _ m_Structure.Dummy__ +var _ m_KMSKeystoreOperations.Dummy__ +var _ m_DDBKeystoreOperations.Dummy__ +var _ m_CreateKeys.Dummy__ +var _ m_CreateKeyStoreTable.Dummy__ +var _ m_GetKeys.Dummy__ +var _ m_AwsCryptographyKeyStoreOperations.Dummy__ +var _ m_KeyStore.Dummy__ +var _ m__Unicode.Dummy__ +var _ m_Functions.Dummy__ +var _ m_Utf8EncodingForm.Dummy__ +var _ m_Utf16EncodingForm.Dummy__ +var _ m_UnicodeStrings.Dummy__ +var _ m_GeneralInternals.Dummy__ +var _ m_MulInternalsNonlinear.Dummy__ +var _ m_MulInternals.Dummy__ +var _ m_Mul.Dummy__ +var _ m_ModInternalsNonlinear.Dummy__ +var _ m_DivInternalsNonlinear.Dummy__ +var _ m_ModInternals.Dummy__ +var _ m_DivInternals.Dummy__ +var _ m_DivMod.Dummy__ +var _ m_Power.Dummy__ +var _ m_Logarithm.Dummy__ +var _ m_StandardLibraryInterop.Dummy__ +var _ m_Streams.Dummy__ +var _ m_Sorting.Dummy__ +var _ m_HexStrings.Dummy__ +var _ m_GetOpt.Dummy__ +var _ m_FloatCompare.Dummy__ +var _ m_Base64Lemmas.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Dummy__ +var _ m_StructuredEncryptionUtil.Dummy__ +var _ m_Sets.Dummy__ +var _ m_StructuredEncryptionPaths.Dummy__ +var _ m_StructuredEncryptionHeader.Dummy__ +var _ m_StructuredEncryptionFooter.Dummy__ +var _ m_OptimizedMergeSort.Dummy__ +var _ m_SortCanon.Dummy__ +var _ m_Canonize.Dummy__ +var _ m_StructuredEncryptionCrypt.Dummy__ +var _ m__Maps.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations.Dummy__ +var _ m_StructuredEncryption.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Dummy__ +var _ m_DynamoDbEncryptionUtil.Dummy__ +var _ m_DynamoDbNormalizeNumber.Dummy__ +var _ m_DynamoToStruct.Dummy__ +var _ m_DynamoDbItemEncryptorUtil.Dummy__ +var _ m_InternalLegacyOverride.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations.Dummy__ +var _ m_DynamoDbItemEncryptor.Dummy__ +var _ m_DynamoDbEncryptionBranchKeyIdSupplier.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbOperations.Dummy__ +var _ m_DynamoDbEncryption.Dummy__ + +type Dummy__ struct{} + +// Definition of class Default__ +type Default__ struct { + dummy byte +} + +func New_Default___() *Default__ { + _this := Default__{} + + return &_this +} + +type CompanionStruct_Default___ struct { +} + +var Companion_Default___ = CompanionStruct_Default___{} + +func (_this *Default__) Equals(other *Default__) bool { + return _this == other +} + +func (_this *Default__) EqualsGeneric(x interface{}) bool { + other, ok := x.(*Default__) + return ok && _this.Equals(other) +} + +func (*Default__) String() string { + return "TermLoc.Default__" +} +func (_this *Default__) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = &Default__{} + +func (_static *CompanionStruct_Default___) ValidTermLoc(s _dafny.Sequence) bool { + return ((uint64(0)) < (uint64((s).Cardinality()))) && (((s).Select(uint32(uint32(0))).(Selector)).Is_Map()) +} +func (_static *CompanionStruct_Default___) TermLocToString(t _dafny.Sequence) _dafny.Sequence { + return _dafny.Companion_Sequence_.Concatenate(((t).Select(uint32(uint32(0))).(Selector)).Dtor_key(), Companion_Default___.SelectorListToString((t).Drop(uint32(uint32(1))))) +} +func (_static *CompanionStruct_Default___) SelectorListToString(s _dafny.Sequence) _dafny.Sequence { + var _0___accumulator _dafny.Sequence = _dafny.SeqOfChars() + _ = _0___accumulator + goto TAIL_CALL_START +TAIL_CALL_START: + if (uint64((s).Cardinality())) == (uint64(0)) { + return _dafny.Companion_Sequence_.Concatenate(_0___accumulator, _dafny.SeqOfString("")) + } else if ((s).Select(uint32(uint32(0))).(Selector)).Is_Map() { + _0___accumulator = _dafny.Companion_Sequence_.Concatenate(_0___accumulator, _dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("."), ((s).Select(uint32(uint32(0))).(Selector)).Dtor_key())) + var _in0 _dafny.Sequence = (s).Drop(uint32(uint32(1))) + _ = _in0 + s = _in0 + goto TAIL_CALL_START + } else { + _0___accumulator = _dafny.Companion_Sequence_.Concatenate(_0___accumulator, _dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("["), m_StandardLibrary_String.Companion_Default___.Base10Int2String(_dafny.IntOfUint64(((s).Select(uint32(uint32(0))).(Selector)).Dtor_pos()))), _dafny.SeqOfString("]"))) + var _in1 _dafny.Sequence = (s).Drop(uint32(uint32(1))) + _ = _in1 + s = _in1 + goto TAIL_CALL_START + } +} +func (_static *CompanionStruct_Default___) LacksAttribute(t _dafny.Sequence, item _dafny.Map) bool { + return !(item).Contains(((t).Select(uint32(uint32(0))).(Selector)).Dtor_key()) +} +func (_static *CompanionStruct_Default___) TermToAttr(t _dafny.Sequence, item _dafny.Map, names m_Wrappers.Option) m_Wrappers.Option { + if !(item).Contains(((t).Select(uint32(uint32(0))).(Selector)).Dtor_key()) { + return m_Wrappers.Companion_Option_.Create_None_() + } else { + var _0_res m_Wrappers.Result = Companion_Default___.GetTerminal((item).Get(((t).Select(uint32(uint32(0))).(Selector)).Dtor_key()).(m_ComAmazonawsDynamodbTypes.AttributeValue), (t).Drop(uint32(uint32(1))), names) + _ = _0_res + if (_0_res).Is_Success() { + return m_Wrappers.Companion_Option_.Create_Some_((_0_res).Dtor_value().(m_ComAmazonawsDynamodbTypes.AttributeValue)) + } else { + return m_Wrappers.Companion_Option_.Create_None_() + } + } +} +func (_static *CompanionStruct_Default___) TermToString(t _dafny.Sequence, item _dafny.Map) m_Wrappers.Result { + var _0_part m_Wrappers.Option = Companion_Default___.TermToAttr(t, item, m_Wrappers.Companion_Option_.Create_None_()) + _ = _0_part + if (_0_part).Is_None() { + return m_Wrappers.Companion_Result_.Create_Success_(m_Wrappers.Companion_Option_.Create_None_()) + } else { + var _1_valueOrError0 m_Wrappers.Result = Companion_Default___.AttrValueToString((_0_part).Dtor_value().(m_ComAmazonawsDynamodbTypes.AttributeValue)) + _ = _1_valueOrError0 + if (_1_valueOrError0).IsFailure() { + return (_1_valueOrError0).PropagateFailure() + } else { + var _2_res _dafny.Sequence = (_1_valueOrError0).Extract().(_dafny.Sequence) + _ = _2_res + return m_Wrappers.Companion_Result_.Create_Success_(m_Wrappers.Companion_Option_.Create_Some_(_2_res)) + } + } +} +func (_static *CompanionStruct_Default___) TermToBytes(t _dafny.Sequence, item _dafny.Map) m_Wrappers.Result { + var _0_part m_Wrappers.Option = Companion_Default___.TermToAttr(t, item, m_Wrappers.Companion_Option_.Create_None_()) + _ = _0_part + if (_0_part).Is_None() { + return m_Wrappers.Companion_Result_.Create_Success_(m_Wrappers.Companion_Option_.Create_None_()) + } else { + var _1_valueOrError0 m_Wrappers.Result = (m_DynamoToStruct.Companion_Default___.TopLevelAttributeToBytes((_0_part).Dtor_value().(m_ComAmazonawsDynamodbTypes.AttributeValue))).MapFailure(func(coer81 func(_dafny.Sequence) m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Error) func(interface{}) interface{} { + return func(arg109 interface{}) interface{} { + return coer81(arg109.(_dafny.Sequence)) + } + }(func(_2_e _dafny.Sequence) m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Error { + return m_DynamoDbEncryptionUtil.Companion_Default___.E(_2_e) + })) + _ = _1_valueOrError0 + if (_1_valueOrError0).IsFailure() { + return (_1_valueOrError0).PropagateFailure() + } else { + var _3_res _dafny.Sequence = (_1_valueOrError0).Extract().(_dafny.Sequence) + _ = _3_res + return m_Wrappers.Companion_Result_.Create_Success_(m_Wrappers.Companion_Option_.Create_Some_(_3_res)) + } + } +} +func (_static *CompanionStruct_Default___) GetTerminal(v m_ComAmazonawsDynamodbTypes.AttributeValue, parts _dafny.Sequence, names m_Wrappers.Option) m_Wrappers.Result { + goto TAIL_CALL_START +TAIL_CALL_START: + if (uint64((parts).Cardinality())) == (uint64(0)) { + return m_Wrappers.Companion_Result_.Create_Success_(v) + } else { + var _source0 m_ComAmazonawsDynamodbTypes.AttributeValue = v + _ = _source0 + { + if _source0.Is_S() { + var _0_s _dafny.Sequence = _source0.Get_().(m_ComAmazonawsDynamodbTypes.AttributeValue_S).S + _ = _0_s + return m_Wrappers.Companion_Result_.Create_Failure_(m_DynamoDbEncryptionUtil.Companion_Default___.E(_dafny.SeqOfString("Found string with parts left over."))) + } + } + { + if _source0.Is_N() { + var _1_s _dafny.Sequence = _source0.Get_().(m_ComAmazonawsDynamodbTypes.AttributeValue_N).N + _ = _1_s + return m_Wrappers.Companion_Result_.Create_Failure_(m_DynamoDbEncryptionUtil.Companion_Default___.E(_dafny.SeqOfString("Found number with parts left over."))) + } + } + { + if _source0.Is_B() { + var _2_b _dafny.Sequence = _source0.Get_().(m_ComAmazonawsDynamodbTypes.AttributeValue_B).B + _ = _2_b + return m_Wrappers.Companion_Result_.Create_Failure_(m_DynamoDbEncryptionUtil.Companion_Default___.E(_dafny.SeqOfString("Found binary with parts left over."))) + } + } + { + if _source0.Is_SS() { + var _3_s _dafny.Sequence = _source0.Get_().(m_ComAmazonawsDynamodbTypes.AttributeValue_SS).SS + _ = _3_s + return m_Wrappers.Companion_Result_.Create_Failure_(m_DynamoDbEncryptionUtil.Companion_Default___.E(_dafny.SeqOfString("Found string set with parts left over."))) + } + } + { + if _source0.Is_NS() { + var _4_s _dafny.Sequence = _source0.Get_().(m_ComAmazonawsDynamodbTypes.AttributeValue_NS).NS + _ = _4_s + return m_Wrappers.Companion_Result_.Create_Failure_(m_DynamoDbEncryptionUtil.Companion_Default___.E(_dafny.SeqOfString("Found number set with parts left over."))) + } + } + { + if _source0.Is_BS() { + var _5_s _dafny.Sequence = _source0.Get_().(m_ComAmazonawsDynamodbTypes.AttributeValue_BS).BS + _ = _5_s + return m_Wrappers.Companion_Result_.Create_Failure_(m_DynamoDbEncryptionUtil.Companion_Default___.E(_dafny.SeqOfString("Found binary set with parts left over."))) + } + } + { + if _source0.Is_BOOL() { + var _6_b bool = _source0.Get_().(m_ComAmazonawsDynamodbTypes.AttributeValue_BOOL).BOOL + _ = _6_b + return m_Wrappers.Companion_Result_.Create_Failure_(m_DynamoDbEncryptionUtil.Companion_Default___.E(_dafny.SeqOfString("Found boolean with parts left over."))) + } + } + { + if _source0.Is_NULL() { + var _7_n bool = _source0.Get_().(m_ComAmazonawsDynamodbTypes.AttributeValue_NULL).NULL + _ = _7_n + return m_Wrappers.Companion_Result_.Create_Failure_(m_DynamoDbEncryptionUtil.Companion_Default___.E(_dafny.SeqOfString("Found null with parts left over."))) + } + } + { + if _source0.Is_L() { + var _8_l _dafny.Sequence = _source0.Get_().(m_ComAmazonawsDynamodbTypes.AttributeValue_L).L + _ = _8_l + if !(((parts).Select(uint32(uint32(0))).(Selector)).Is_List()) { + return m_Wrappers.Companion_Result_.Create_Failure_(m_DynamoDbEncryptionUtil.Companion_Default___.E(_dafny.SeqOfString("Tried to access list with key"))) + } else if (uint64((_8_l).Cardinality())) <= (((parts).Select(uint32(uint32(0))).(Selector)).Dtor_pos()) { + return m_Wrappers.Companion_Result_.Create_Failure_(m_DynamoDbEncryptionUtil.Companion_Default___.E(_dafny.SeqOfString("Tried to access beyond the end of the list"))) + } else { + var _in0 m_ComAmazonawsDynamodbTypes.AttributeValue = (_8_l).Select(uint32(((parts).Select(uint32(uint32(0))).(Selector)).Dtor_pos())).(m_ComAmazonawsDynamodbTypes.AttributeValue) + _ = _in0 + var _in1 _dafny.Sequence = (parts).Drop(uint32(uint32(1))) + _ = _in1 + var _in2 m_Wrappers.Option = names + _ = _in2 + v = _in0 + parts = _in1 + names = _in2 + goto TAIL_CALL_START + } + } + } + { + var _9_m _dafny.Map = _source0.Get_().(m_ComAmazonawsDynamodbTypes.AttributeValue_M).M + _ = _9_m + if !(((parts).Select(uint32(uint32(0))).(Selector)).Is_Map()) { + return m_Wrappers.Companion_Result_.Create_Failure_(m_DynamoDbEncryptionUtil.Companion_Default___.E(_dafny.SeqOfString("Tried to access map with index"))) + } else if !(_9_m).Contains(((parts).Select(uint32(uint32(0))).(Selector)).Dtor_key()) { + if (((names).Is_Some()) && (((names).Dtor_value().(_dafny.Map)).Contains(((parts).Select(uint32(uint32(0))).(Selector)).Dtor_key()))) && ((_9_m).Contains(((names).Dtor_value().(_dafny.Map)).Get(((parts).Select(uint32(uint32(0))).(Selector)).Dtor_key()).(_dafny.Sequence))) { + var _in3 m_ComAmazonawsDynamodbTypes.AttributeValue = (_9_m).Get(((names).Dtor_value().(_dafny.Map)).Get(((parts).Select(uint32(uint32(0))).(Selector)).Dtor_key()).(_dafny.Sequence)).(m_ComAmazonawsDynamodbTypes.AttributeValue) + _ = _in3 + var _in4 _dafny.Sequence = (parts).Drop(uint32(uint32(1))) + _ = _in4 + var _in5 m_Wrappers.Option = names + _ = _in5 + v = _in3 + parts = _in4 + names = _in5 + goto TAIL_CALL_START + } else { + return m_Wrappers.Companion_Result_.Create_Failure_(m_DynamoDbEncryptionUtil.Companion_Default___.E(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("Tried to access "), ((parts).Select(uint32(uint32(0))).(Selector)).Dtor_key()), _dafny.SeqOfString(" which is not in the map.")))) + } + } else { + var _in6 m_ComAmazonawsDynamodbTypes.AttributeValue = (_9_m).Get(((parts).Select(uint32(uint32(0))).(Selector)).Dtor_key()).(m_ComAmazonawsDynamodbTypes.AttributeValue) + _ = _in6 + var _in7 _dafny.Sequence = (parts).Drop(uint32(uint32(1))) + _ = _in7 + var _in8 m_Wrappers.Option = names + _ = _in8 + v = _in6 + parts = _in7 + names = _in8 + goto TAIL_CALL_START + } + } + } +} +func (_static *CompanionStruct_Default___) AttrValueToString(v m_ComAmazonawsDynamodbTypes.AttributeValue) m_Wrappers.Result { + var _source0 m_ComAmazonawsDynamodbTypes.AttributeValue = v + _ = _source0 + { + if _source0.Is_S() { + var _0_s _dafny.Sequence = _source0.Get_().(m_ComAmazonawsDynamodbTypes.AttributeValue_S).S + _ = _0_s + return m_Wrappers.Companion_Result_.Create_Success_(_0_s) + } + } + { + if _source0.Is_N() { + var _1_s _dafny.Sequence = _source0.Get_().(m_ComAmazonawsDynamodbTypes.AttributeValue_N).N + _ = _1_s + return m_Wrappers.Companion_Result_.Create_Success_(_1_s) + } + } + { + if _source0.Is_B() { + var _2_b _dafny.Sequence = _source0.Get_().(m_ComAmazonawsDynamodbTypes.AttributeValue_B).B + _ = _2_b + return m_Wrappers.Companion_Result_.Create_Failure_(m_DynamoDbEncryptionUtil.Companion_Default___.E(_dafny.SeqOfString("Can't convert Binary to string"))) + } + } + { + if _source0.Is_SS() { + var _3_s _dafny.Sequence = _source0.Get_().(m_ComAmazonawsDynamodbTypes.AttributeValue_SS).SS + _ = _3_s + return m_Wrappers.Companion_Result_.Create_Failure_(m_DynamoDbEncryptionUtil.Companion_Default___.E(_dafny.SeqOfString("Can't convert String Set to string."))) + } + } + { + if _source0.Is_NS() { + var _4_s _dafny.Sequence = _source0.Get_().(m_ComAmazonawsDynamodbTypes.AttributeValue_NS).NS + _ = _4_s + return m_Wrappers.Companion_Result_.Create_Failure_(m_DynamoDbEncryptionUtil.Companion_Default___.E(_dafny.SeqOfString("Can't convert Number Set to string."))) + } + } + { + if _source0.Is_BS() { + var _5_s _dafny.Sequence = _source0.Get_().(m_ComAmazonawsDynamodbTypes.AttributeValue_BS).BS + _ = _5_s + return m_Wrappers.Companion_Result_.Create_Failure_(m_DynamoDbEncryptionUtil.Companion_Default___.E(_dafny.SeqOfString("Can't convert Binary Set to string."))) + } + } + { + if _source0.Is_BOOL() { + var _6_b bool = _source0.Get_().(m_ComAmazonawsDynamodbTypes.AttributeValue_BOOL).BOOL + _ = _6_b + return m_Wrappers.Companion_Result_.Create_Success_((func() _dafny.Sequence { + if _6_b { + return _dafny.SeqOfString("true") + } + return _dafny.SeqOfString("false") + })()) + } + } + { + if _source0.Is_NULL() { + var _7_n bool = _source0.Get_().(m_ComAmazonawsDynamodbTypes.AttributeValue_NULL).NULL + _ = _7_n + return m_Wrappers.Companion_Result_.Create_Success_(_dafny.SeqOfString("null")) + } + } + { + if _source0.Is_L() { + var _8_l _dafny.Sequence = _source0.Get_().(m_ComAmazonawsDynamodbTypes.AttributeValue_L).L + _ = _8_l + return m_Wrappers.Companion_Result_.Create_Failure_(m_DynamoDbEncryptionUtil.Companion_Default___.E(_dafny.SeqOfString("Can't convert List to string."))) + } + } + { + var _9_m _dafny.Map = _source0.Get_().(m_ComAmazonawsDynamodbTypes.AttributeValue_M).M + _ = _9_m + return m_Wrappers.Companion_Result_.Create_Failure_(m_DynamoDbEncryptionUtil.Companion_Default___.E(_dafny.SeqOfString("Can't convert Map to string."))) + } +} +func (_static *CompanionStruct_Default___) FindStartOfNext(s _dafny.Sequence) m_Wrappers.Option { + var _0_dot m_Wrappers.Option = m_StandardLibrary.Companion_Default___.FindIndexMatching(s, _dafny.Char('.'), uint64(0)) + _ = _0_dot + var _1_bracket m_Wrappers.Option = m_StandardLibrary.Companion_Default___.FindIndexMatching(s, _dafny.Char('['), uint64(0)) + _ = _1_bracket + if ((_0_dot).Is_None()) && ((_1_bracket).Is_None()) { + return m_Wrappers.Companion_Option_.Create_None_() + } else if ((_0_dot).Is_Some()) && ((_1_bracket).Is_Some()) { + if ((_0_dot).Dtor_value().(uint64)) < ((_1_bracket).Dtor_value().(uint64)) { + return _0_dot + } else { + return _1_bracket + } + } else if (_0_dot).Is_Some() { + return _0_dot + } else { + return _1_bracket + } +} +func (_static *CompanionStruct_Default___) GetNumber(s _dafny.Sequence, acc uint64, pos uint64) m_Wrappers.Result { + goto TAIL_CALL_START +TAIL_CALL_START: + if (uint64((s).Cardinality())) == (pos) { + return m_Wrappers.Companion_Result_.Create_Success_(acc) + } else if ((_dafny.Char('0')) <= ((s).Select(uint32(uint32(0))).(_dafny.Char))) && (((s).Select(uint32(uint32(0))).(_dafny.Char)) <= (_dafny.Char('9'))) { + if (acc) < (uint64(1152921504606846975)) { + var _in0 _dafny.Sequence = s + _ = _in0 + var _in1 uint64 = (((acc) * (uint64(10))) + (uint64((s).Select(uint32(uint32(0))).(_dafny.Char)))) - (func() uint64 { return (uint64(_dafny.Char('0'))) })() + _ = _in1 + var _in2 uint64 = m_StandardLibrary_MemoryMath.Companion_Default___.Add(pos, uint64(1)) + _ = _in2 + s = _in0 + acc = _in1 + pos = _in2 + goto TAIL_CALL_START + } else { + return m_Wrappers.Companion_Result_.Create_Failure_(m_DynamoDbEncryptionUtil.Companion_Default___.E(_dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("Number is too big for list index : "), s))) + } + } else { + return m_Wrappers.Companion_Result_.Create_Failure_(m_DynamoDbEncryptionUtil.Companion_Default___.E(_dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("Unexpected character in number : "), _dafny.SeqOfChars((s).Select(uint32(uint32(0))).(_dafny.Char))))) + } +} +func (_static *CompanionStruct_Default___) GetSelector(s _dafny.Sequence) m_Wrappers.Result { + if ((s).Select(uint32(uint32(0))).(_dafny.Char)) == (_dafny.Char('.')) { + return m_Wrappers.Companion_Result_.Create_Success_(Companion_Selector_.Create_Map_((s).Drop(uint32(uint32(1))))) + } else if ((s).Select(uint32((uint64((s).Cardinality())) - (func() uint64 { return (uint64(1)) })())).(_dafny.Char)) != (_dafny.Char(']')) /* dircomp */ { + return m_Wrappers.Companion_Result_.Create_Failure_(m_DynamoDbEncryptionUtil.Companion_Default___.E(_dafny.SeqOfString("List index must end with ]"))) + } else { + var _0_valueOrError0 m_Wrappers.Result = Companion_Default___.GetNumber((s).Subsequence(uint32(uint32(1)), uint32((uint64((s).Cardinality()))-(func() uint64 { return (uint64(1)) })())), uint64(0), uint64(0)) + _ = _0_valueOrError0 + if (_0_valueOrError0).IsFailure() { + return (_0_valueOrError0).PropagateFailure() + } else { + var _1_num uint64 = (_0_valueOrError0).Extract().(uint64) + _ = _1_num + return m_Wrappers.Companion_Result_.Create_Success_(Companion_Selector_.Create_List_(_1_num)) + } + } +} +func (_static *CompanionStruct_Default___) GetSelectors(s _dafny.Sequence, acc _dafny.Sequence) m_Wrappers.Result { + goto TAIL_CALL_START +TAIL_CALL_START: + var _0_pos m_Wrappers.Option = Companion_Default___.FindStartOfNext((s).Drop(uint32(uint32(1)))) + _ = _0_pos + var _1_end uint64 = (func() uint64 { + if (_0_pos).Is_None() { + return uint64((s).Cardinality()) + } + return m_StandardLibrary_MemoryMath.Companion_Default___.Add((_0_pos).Dtor_value().(uint64), uint64(1)) + })() + _ = _1_end + var _2_valueOrError0 m_Wrappers.Result = Companion_Default___.GetSelector((s).Take(uint32(_1_end))) + _ = _2_valueOrError0 + if (_2_valueOrError0).IsFailure() { + return (_2_valueOrError0).PropagateFailure() + } else { + var _3_sel Selector = (_2_valueOrError0).Extract().(Selector) + _ = _3_sel + if (_0_pos).Is_None() { + return m_Wrappers.Companion_Result_.Create_Success_(_dafny.Companion_Sequence_.Concatenate(acc, _dafny.SeqOf(_3_sel))) + } else { + var _in0 _dafny.Sequence = (s).Drop(uint32(_1_end)) + _ = _in0 + var _in1 _dafny.Sequence = _dafny.Companion_Sequence_.Concatenate(acc, _dafny.SeqOf(_3_sel)) + _ = _in1 + s = _in0 + acc = _in1 + goto TAIL_CALL_START + } + } +} +func (_static *CompanionStruct_Default___) MakeTermLoc(s _dafny.Sequence) m_Wrappers.Result { + var _0_valueOrError0 m_Wrappers.Outcome = m_Wrappers.Companion_Default___.Need((uint64(0)) < (uint64((s).Cardinality())), m_DynamoDbEncryptionUtil.Companion_Default___.E(_dafny.SeqOfString("Path specification must not be empty."))) + _ = _0_valueOrError0 + if (_0_valueOrError0).IsFailure() { + return (_0_valueOrError0).PropagateFailure() + } else { + var _1_pos m_Wrappers.Option = Companion_Default___.FindStartOfNext(s) + _ = _1_pos + if (_1_pos).Is_None() { + var _2_m Selector = Companion_Selector_.Create_Map_(s) + _ = _2_m + return m_Wrappers.Companion_Result_.Create_Success_(_dafny.SeqOf(Companion_Selector_.Create_Map_(s))) + } else { + var _3_name _dafny.Sequence = (s).Take(uint32((_1_pos).Dtor_value().(uint64))) + _ = _3_name + var _4_valueOrError1 m_Wrappers.Result = Companion_Default___.GetSelectors((s).Drop(uint32((_1_pos).Dtor_value().(uint64))), _dafny.SeqOf()) + _ = _4_valueOrError1 + if (_4_valueOrError1).IsFailure() { + return (_4_valueOrError1).PropagateFailure() + } else { + var _5_selectors _dafny.Sequence = (_4_valueOrError1).Extract().(_dafny.Sequence) + _ = _5_selectors + return m_Wrappers.Companion_Result_.Create_Success_(_dafny.Companion_Sequence_.Concatenate(_dafny.SeqOf(Companion_Selector_.Create_Map_(_3_name)), _5_selectors)) + } + } + } +} +func (_static *CompanionStruct_Default___) TermLocMap(attr _dafny.Sequence) _dafny.Sequence { + return _dafny.SeqOf(Companion_Selector_.Create_Map_(attr)) +} + +// End of class Default__ + +// Definition of datatype Selector +type Selector struct { + Data_Selector_ +} + +func (_this Selector) Get_() Data_Selector_ { + return _this.Data_Selector_ +} + +type Data_Selector_ interface { + isSelector() +} + +type CompanionStruct_Selector_ struct { +} + +var Companion_Selector_ = CompanionStruct_Selector_{} + +type Selector_List struct { + Pos uint64 +} + +func (Selector_List) isSelector() {} + +func (CompanionStruct_Selector_) Create_List_(Pos uint64) Selector { + return Selector{Selector_List{Pos}} +} + +func (_this Selector) Is_List() bool { + _, ok := _this.Get_().(Selector_List) + return ok +} + +type Selector_Map struct { + Key _dafny.Sequence +} + +func (Selector_Map) isSelector() {} + +func (CompanionStruct_Selector_) Create_Map_(Key _dafny.Sequence) Selector { + return Selector{Selector_Map{Key}} +} + +func (_this Selector) Is_Map() bool { + _, ok := _this.Get_().(Selector_Map) + return ok +} + +func (CompanionStruct_Selector_) Default() Selector { + return Companion_Selector_.Create_List_(uint64(0)) +} + +func (_this Selector) Dtor_pos() uint64 { + return _this.Get_().(Selector_List).Pos +} + +func (_this Selector) Dtor_key() _dafny.Sequence { + return _this.Get_().(Selector_Map).Key +} + +func (_this Selector) String() string { + switch data := _this.Get_().(type) { + case nil: + return "null" + case Selector_List: + { + return "TermLoc.Selector.List" + "(" + _dafny.String(data.Pos) + ")" + } + case Selector_Map: + { + return "TermLoc.Selector.Map" + "(" + _dafny.String(data.Key) + ")" + } + default: + { + return "" + } + } +} + +func (_this Selector) Equals(other Selector) bool { + switch data1 := _this.Get_().(type) { + case Selector_List: + { + data2, ok := other.Get_().(Selector_List) + return ok && data1.Pos == data2.Pos + } + case Selector_Map: + { + data2, ok := other.Get_().(Selector_Map) + return ok && data1.Key.Equals(data2.Key) + } + default: + { + return false // unexpected + } + } +} + +func (_this Selector) EqualsGeneric(other interface{}) bool { + typed, ok := other.(Selector) + return ok && _this.Equals(typed) +} + +func Type_Selector_() _dafny.TypeDescriptor { + return type_Selector_{} +} + +type type_Selector_ struct { +} + +func (_this type_Selector_) Default() interface{} { + return Companion_Selector_.Default() +} + +func (_this type_Selector_) String() string { + return "TermLoc.Selector" +} +func (_this Selector) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = Selector{} + +// End of datatype Selector + +// Definition of class TermLoc +type TermLoc struct { +} + +func New_TermLoc_() *TermLoc { + _this := TermLoc{} + + return &_this +} + +type CompanionStruct_TermLoc_ struct { +} + +var Companion_TermLoc_ = CompanionStruct_TermLoc_{} + +func (*TermLoc) String() string { + return "TermLoc.TermLoc" +} + +// End of class TermLoc + +func Type_TermLoc_() _dafny.TypeDescriptor { + return type_TermLoc_{} +} + +type type_TermLoc_ struct { +} + +func (_this type_TermLoc_) Default() interface{} { + return _dafny.EmptySeq +} + +func (_this type_TermLoc_) String() string { + return "TermLoc.TermLoc" +} +func (_this *CompanionStruct_TermLoc_) Is_(__source _dafny.Sequence) bool { + var _0_x _dafny.Sequence = (__source) + _ = _0_x + return Companion_Default___.ValidTermLoc(_0_x) +} diff --git a/releases/go/dynamodb-esdk/TransactGetItemsTransform/TransactGetItemsTransform.go b/releases/go/dynamodb-esdk/TransactGetItemsTransform/TransactGetItemsTransform.go new file mode 100644 index 000000000..749d7cccd --- /dev/null +++ b/releases/go/dynamodb-esdk/TransactGetItemsTransform/TransactGetItemsTransform.go @@ -0,0 +1,439 @@ +// Package TransactGetItemsTransform +// Dafny module TransactGetItemsTransform compiled into Go + +package TransactGetItemsTransform + +import ( + os "os" + + m_ComAmazonawsDynamodbTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/dynamodb/ComAmazonawsDynamodbTypes" + m_Com_Amazonaws_Dynamodb "github.com/aws/aws-cryptographic-material-providers-library/releases/go/dynamodb/Com_Amazonaws_Dynamodb" + m_ComAmazonawsKmsTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/kms/ComAmazonawsKmsTypes" + m_Com_Amazonaws_Kms "github.com/aws/aws-cryptographic-material-providers-library/releases/go/kms/Com_Amazonaws_Kms" + m_AlgorithmSuites "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AlgorithmSuites" + m_AwsArnParsing "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsArnParsing" + m_AwsCryptographyKeyStoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyKeyStoreOperations" + m_AwsCryptographyKeyStoreTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyKeyStoreTypes" + m_AwsCryptographyMaterialProvidersOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyMaterialProvidersOperations" + m_AwsCryptographyMaterialProvidersTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyMaterialProvidersTypes" + m_AwsKmsDiscoveryKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsDiscoveryKeyring" + m_AwsKmsEcdhKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsEcdhKeyring" + m_AwsKmsHierarchicalKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsHierarchicalKeyring" + m_AwsKmsKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsKeyring" + m_AwsKmsMrkAreUnique "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkAreUnique" + m_AwsKmsMrkDiscoveryKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkDiscoveryKeyring" + m_AwsKmsMrkKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkKeyring" + m_AwsKmsMrkMatchForDecrypt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkMatchForDecrypt" + m_AwsKmsRsaKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsRsaKeyring" + m_AwsKmsUtils "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsUtils" + m_CMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CMM" + m_CacheConstants "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CacheConstants" + m_CanonicalEncryptionContext "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CanonicalEncryptionContext" + m_Commitment "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Commitment" + m_Constants "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Constants" + m_CreateKeyStoreTable "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CreateKeyStoreTable" + m_CreateKeys "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CreateKeys" + m_DDBKeystoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DDBKeystoreOperations" + m_DefaultCMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DefaultCMM" + m_DefaultClientSupplier "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DefaultClientSupplier" + m_Defaults "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Defaults" + m_DiscoveryMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DiscoveryMultiKeyring" + m_EcdhEdkWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/EcdhEdkWrapping" + m_EdkWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/EdkWrapping" + m_ErrorMessages "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/ErrorMessages" + m_GetKeys "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/GetKeys" + m_IntermediateKeyWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/IntermediateKeyWrapping" + m_KMSKeystoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KMSKeystoreOperations" + m_KeyStore "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KeyStore" + m_KeyStoreErrorMessages "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KeyStoreErrorMessages" + m_Keyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Keyring" + m_KmsArn "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KmsArn" + m_LocalCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/LocalCMC" + m_MaterialProviders "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MaterialProviders" + m_MaterialWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MaterialWrapping" + m_Materials "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Materials" + m_MrkAwareDiscoveryMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MrkAwareDiscoveryMultiKeyring" + m_MrkAwareStrictMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MrkAwareStrictMultiKeyring" + m_MultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MultiKeyring" + m_RawAESKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawAESKeyring" + m_RawECDHKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawECDHKeyring" + m_RawRSAKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawRSAKeyring" + m_RequiredEncryptionContextCMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RequiredEncryptionContextCMM" + m_StormTracker "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StormTracker" + m_StormTrackingCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StormTrackingCMC" + m_StrictMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StrictMultiKeyring" + m_Structure "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Structure" + m_SynchronizedLocalCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/SynchronizedLocalCMC" + m_Utils "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Utils" + m_AtomicPrimitives "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AtomicPrimitives" + m_AwsCryptographyPrimitivesOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AwsCryptographyPrimitivesOperations" + m_AwsCryptographyPrimitivesTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AwsCryptographyPrimitivesTypes" + m_Digest "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/Digest" + m_HKDF "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/HKDF" + m_KdfCtr "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/KdfCtr" + m_Random "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/Random" + m_WrappedHKDF "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/WrappedHKDF" + m_WrappedHMAC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/WrappedHMAC" + m_Actions "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Actions" + m_Base64 "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Base64" + m_Base64Lemmas "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Base64Lemmas" + m_BoundedInts "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/BoundedInts" + m_DivInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivInternals" + m_DivInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivInternalsNonlinear" + m_DivMod "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivMod" + m_FileIO "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/FileIO" + m_FloatCompare "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/FloatCompare" + m_Functions "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Functions" + m_GeneralInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/GeneralInternals" + m_GetOpt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/GetOpt" + m_HexStrings "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/HexStrings" + m_Logarithm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Logarithm" + m__Math "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Math_" + m_ModInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/ModInternals" + m_ModInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/ModInternalsNonlinear" + m_Mul "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Mul" + m_MulInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/MulInternals" + m_MulInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/MulInternalsNonlinear" + m_Power "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Power" + m_Relations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Relations" + m_Seq "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Seq" + m_Seq_MergeSort "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Seq_MergeSort" + m_Sorting "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Sorting" + m_StandardLibrary "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary" + m_StandardLibraryInterop "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibraryInterop" + m_StandardLibrary_MemoryMath "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_MemoryMath" + m_StandardLibrary_Sequence "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_Sequence" + m_StandardLibrary_String "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_String" + m_StandardLibrary_UInt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_UInt" + m_Streams "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Streams" + m_UnicodeStrings "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/UnicodeStrings" + m__Unicode "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Unicode_" + m_Utf16EncodingForm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Utf16EncodingForm" + m_Utf8EncodingForm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Utf8EncodingForm" + m_Wrappers "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Wrappers" + m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations" + m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes" + m_AwsCryptographyDbEncryptionSdkDynamoDbOperations "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbOperations" + m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes" + m_AwsCryptographyDbEncryptionSdkDynamoDbTypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbTypes" + m_AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations" + m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes" + m_BaseBeacon "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/BaseBeacon" + m_BatchGetItemTransform "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/BatchGetItemTransform" + m_BatchWriteItemTransform "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/BatchWriteItemTransform" + m_Canonize "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/Canonize" + m_CompoundBeacon "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/CompoundBeacon" + m_DdbMiddlewareConfig "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DdbMiddlewareConfig" + m_DdbStatement "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DdbStatement" + m_DdbVirtualFields "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DdbVirtualFields" + m_DynamoDBFilterExpr "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDBFilterExpr" + m_DynamoDBSupport "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDBSupport" + m_DynamoDbEncryption "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbEncryption" + m_DynamoDbEncryptionBranchKeyIdSupplier "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbEncryptionBranchKeyIdSupplier" + m_DynamoDbEncryptionUtil "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbEncryptionUtil" + m_DynamoDbItemEncryptor "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbItemEncryptor" + m_DynamoDbItemEncryptorUtil "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbItemEncryptorUtil" + m_DynamoDbMiddlewareSupport "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbMiddlewareSupport" + m_DynamoDbNormalizeNumber "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbNormalizeNumber" + m_DynamoDbUpdateExpr "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbUpdateExpr" + m_DynamoToStruct "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoToStruct" + m_GetItemTransform "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/GetItemTransform" + m_InternalLegacyOverride "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/InternalLegacyOverride" + m__Maps "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/Maps_" + m_OptimizedMergeSort "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/OptimizedMergeSort" + m_PutItemTransform "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/PutItemTransform" + m_QueryTransform "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/QueryTransform" + m_ScanTransform "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/ScanTransform" + m_SearchConfigToInfo "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/SearchConfigToInfo" + m_SearchableEncryptionInfo "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/SearchableEncryptionInfo" + m_Sets "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/Sets" + m_SortCanon "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/SortCanon" + m_StructuredEncryption "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryption" + m_StructuredEncryptionCrypt "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionCrypt" + m_StructuredEncryptionFooter "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionFooter" + m_StructuredEncryptionHeader "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionHeader" + m_StructuredEncryptionPaths "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionPaths" + m_StructuredEncryptionUtil "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionUtil" + m_TermLoc "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/TermLoc" + m_TransactWriteItemsTransform "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/TransactWriteItemsTransform" + m_UpdateItemTransform "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/UpdateItemTransform" + m__System "github.com/dafny-lang/DafnyRuntimeGo/v4/System_" + _dafny "github.com/dafny-lang/DafnyRuntimeGo/v4/dafny" +) + +var _ = os.Args +var _ _dafny.Dummy__ +var _ m__System.Dummy__ +var _ m_Wrappers.Dummy__ +var _ m_BoundedInts.Dummy__ +var _ m_StandardLibrary_UInt.Dummy__ +var _ m_StandardLibrary_MemoryMath.Dummy__ +var _ m_StandardLibrary_Sequence.Dummy__ +var _ m_StandardLibrary_String.Dummy__ +var _ m_StandardLibrary.Dummy__ +var _ m_AwsCryptographyPrimitivesTypes.Dummy__ +var _ m_Random.Dummy__ +var _ m_Digest.Dummy__ +var _ m_WrappedHMAC.Dummy__ +var _ m_HKDF.Dummy__ +var _ m_WrappedHKDF.Dummy__ +var _ m_KdfCtr.Dummy__ +var _ m_AwsCryptographyPrimitivesOperations.Dummy__ +var _ m_AtomicPrimitives.Dummy__ +var _ m_ComAmazonawsDynamodbTypes.Dummy__ +var _ m_ComAmazonawsKmsTypes.Dummy__ +var _ m_AwsCryptographyKeyStoreTypes.Dummy__ +var _ m_AwsCryptographyMaterialProvidersTypes.Dummy__ +var _ m_Base64.Dummy__ +var _ m_AlgorithmSuites.Dummy__ +var _ m_Materials.Dummy__ +var _ m_Keyring.Dummy__ +var _ m_Relations.Dummy__ +var _ m_Seq_MergeSort.Dummy__ +var _ m__Math.Dummy__ +var _ m_Seq.Dummy__ +var _ m_Actions.Dummy__ +var _ m_CanonicalEncryptionContext.Dummy__ +var _ m_MaterialWrapping.Dummy__ +var _ m_IntermediateKeyWrapping.Dummy__ +var _ m_EdkWrapping.Dummy__ +var _ m_ErrorMessages.Dummy__ +var _ m_RawAESKeyring.Dummy__ +var _ m_AwsArnParsing.Dummy__ +var _ m_Constants.Dummy__ +var _ m_EcdhEdkWrapping.Dummy__ +var _ m_RawECDHKeyring.Dummy__ +var _ m_RawRSAKeyring.Dummy__ +var _ m_AwsKmsMrkMatchForDecrypt.Dummy__ +var _ m_AwsKmsUtils.Dummy__ +var _ m_AwsKmsKeyring.Dummy__ +var _ m_AwsKmsDiscoveryKeyring.Dummy__ +var _ m_AwsKmsEcdhKeyring.Dummy__ +var _ m_FileIO.Dummy__ +var _ m_LocalCMC.Dummy__ +var _ m_SynchronizedLocalCMC.Dummy__ +var _ m_StormTracker.Dummy__ +var _ m_StormTrackingCMC.Dummy__ +var _ m_CacheConstants.Dummy__ +var _ m_AwsKmsHierarchicalKeyring.Dummy__ +var _ m_AwsKmsMrkDiscoveryKeyring.Dummy__ +var _ m_AwsKmsMrkKeyring.Dummy__ +var _ m_AwsKmsRsaKeyring.Dummy__ +var _ m_MultiKeyring.Dummy__ +var _ m_AwsKmsMrkAreUnique.Dummy__ +var _ m_StrictMultiKeyring.Dummy__ +var _ m_Com_Amazonaws_Kms.Dummy__ +var _ m_Com_Amazonaws_Dynamodb.Dummy__ +var _ m_DiscoveryMultiKeyring.Dummy__ +var _ m_MrkAwareDiscoveryMultiKeyring.Dummy__ +var _ m_MrkAwareStrictMultiKeyring.Dummy__ +var _ m_CMM.Dummy__ +var _ m_Defaults.Dummy__ +var _ m_Commitment.Dummy__ +var _ m_DefaultCMM.Dummy__ +var _ m_DefaultClientSupplier.Dummy__ +var _ m_Utils.Dummy__ +var _ m_RequiredEncryptionContextCMM.Dummy__ +var _ m_AwsCryptographyMaterialProvidersOperations.Dummy__ +var _ m_MaterialProviders.Dummy__ +var _ m_KeyStoreErrorMessages.Dummy__ +var _ m_KmsArn.Dummy__ +var _ m_Structure.Dummy__ +var _ m_KMSKeystoreOperations.Dummy__ +var _ m_DDBKeystoreOperations.Dummy__ +var _ m_CreateKeys.Dummy__ +var _ m_CreateKeyStoreTable.Dummy__ +var _ m_GetKeys.Dummy__ +var _ m_AwsCryptographyKeyStoreOperations.Dummy__ +var _ m_KeyStore.Dummy__ +var _ m__Unicode.Dummy__ +var _ m_Functions.Dummy__ +var _ m_Utf8EncodingForm.Dummy__ +var _ m_Utf16EncodingForm.Dummy__ +var _ m_UnicodeStrings.Dummy__ +var _ m_GeneralInternals.Dummy__ +var _ m_MulInternalsNonlinear.Dummy__ +var _ m_MulInternals.Dummy__ +var _ m_Mul.Dummy__ +var _ m_ModInternalsNonlinear.Dummy__ +var _ m_DivInternalsNonlinear.Dummy__ +var _ m_ModInternals.Dummy__ +var _ m_DivInternals.Dummy__ +var _ m_DivMod.Dummy__ +var _ m_Power.Dummy__ +var _ m_Logarithm.Dummy__ +var _ m_StandardLibraryInterop.Dummy__ +var _ m_Streams.Dummy__ +var _ m_Sorting.Dummy__ +var _ m_HexStrings.Dummy__ +var _ m_GetOpt.Dummy__ +var _ m_FloatCompare.Dummy__ +var _ m_Base64Lemmas.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Dummy__ +var _ m_StructuredEncryptionUtil.Dummy__ +var _ m_Sets.Dummy__ +var _ m_StructuredEncryptionPaths.Dummy__ +var _ m_StructuredEncryptionHeader.Dummy__ +var _ m_StructuredEncryptionFooter.Dummy__ +var _ m_OptimizedMergeSort.Dummy__ +var _ m_SortCanon.Dummy__ +var _ m_Canonize.Dummy__ +var _ m_StructuredEncryptionCrypt.Dummy__ +var _ m__Maps.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations.Dummy__ +var _ m_StructuredEncryption.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Dummy__ +var _ m_DynamoDbEncryptionUtil.Dummy__ +var _ m_DynamoDbNormalizeNumber.Dummy__ +var _ m_DynamoToStruct.Dummy__ +var _ m_DynamoDbItemEncryptorUtil.Dummy__ +var _ m_InternalLegacyOverride.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations.Dummy__ +var _ m_DynamoDbItemEncryptor.Dummy__ +var _ m_DynamoDbEncryptionBranchKeyIdSupplier.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbOperations.Dummy__ +var _ m_DynamoDbEncryption.Dummy__ +var _ m_TermLoc.Dummy__ +var _ m_DdbVirtualFields.Dummy__ +var _ m_DynamoDbUpdateExpr.Dummy__ +var _ m_BaseBeacon.Dummy__ +var _ m_CompoundBeacon.Dummy__ +var _ m_SearchableEncryptionInfo.Dummy__ +var _ m_DynamoDBFilterExpr.Dummy__ +var _ m_DynamoDBSupport.Dummy__ +var _ m_SearchConfigToInfo.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Dummy__ +var _ m_DdbMiddlewareConfig.Dummy__ +var _ m_DdbStatement.Dummy__ +var _ m_DynamoDbMiddlewareSupport.Dummy__ +var _ m_PutItemTransform.Dummy__ +var _ m_GetItemTransform.Dummy__ +var _ m_UpdateItemTransform.Dummy__ +var _ m_BatchWriteItemTransform.Dummy__ +var _ m_TransactWriteItemsTransform.Dummy__ +var _ m_BatchGetItemTransform.Dummy__ +var _ m_ScanTransform.Dummy__ +var _ m_QueryTransform.Dummy__ + +type Dummy__ struct{} + +// Definition of class Default__ +type Default__ struct { + dummy byte +} + +func New_Default___() *Default__ { + _this := Default__{} + + return &_this +} + +type CompanionStruct_Default___ struct { +} + +var Companion_Default___ = CompanionStruct_Default___{} + +func (_this *Default__) Equals(other *Default__) bool { + return _this == other +} + +func (_this *Default__) EqualsGeneric(x interface{}) bool { + other, ok := x.(*Default__) + return ok && _this.Equals(other) +} + +func (*Default__) String() string { + return "TransactGetItemsTransform.Default__" +} +func (_this *Default__) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = &Default__{} + +func (_static *CompanionStruct_Default___) Input(config m_DdbMiddlewareConfig.Config, input m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.TransactGetItemsInputTransformInput) m_Wrappers.Result { + var output m_Wrappers.Result = m_Wrappers.Result{} + _ = output + output = m_Wrappers.Companion_Result_.Create_Success_(m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_TransactGetItemsInputTransformOutput_.Create_TransactGetItemsInputTransformOutput_((input).Dtor_sdkInput())) + return output + return output +} +func (_static *CompanionStruct_Default___) Output(config m_DdbMiddlewareConfig.Config, input m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.TransactGetItemsOutputTransformInput) m_Wrappers.Result { + var output m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_TransactGetItemsOutputTransformOutput_.Default()) + _ = output + if m_DynamoDbMiddlewareSupport.Companion_Default___.NoList(((input).Dtor_sdkOutput()).Dtor_Responses()) { + output = m_Wrappers.Companion_Result_.Create_Success_(m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_TransactGetItemsOutputTransformOutput_.Create_TransactGetItemsOutputTransformOutput_((input).Dtor_sdkOutput())) + return output + } + if (_dafny.IntOfUint32(((((input).Dtor_sdkOutput()).Dtor_Responses()).Dtor_value().(_dafny.Sequence)).Cardinality())).Cmp(_dafny.IntOfUint32((((input).Dtor_originalInput()).Dtor_TransactItems()).Cardinality())) != 0 { + output = m_DdbMiddlewareConfig.Companion_Default___.MakeError(_dafny.SeqOfString("Invalid TransactGetItems response for original request: Number of items returned must equal number of items requested.")) + return output + } + var _0_decryptedItems _dafny.Sequence + _ = _0_decryptedItems + _0_decryptedItems = _dafny.SeqOf() + var _1_encryptedItems _dafny.Sequence + _ = _1_encryptedItems + _1_encryptedItems = (((input).Dtor_sdkOutput()).Dtor_Responses()).Dtor_value().(_dafny.Sequence) + var _hi0 _dafny.Int = _dafny.IntOfUint32((_1_encryptedItems).Cardinality()) + _ = _hi0 + for _2_x := _dafny.Zero; _2_x.Cmp(_hi0) < 0; _2_x = _2_x.Plus(_dafny.One) { + var _3_tableName _dafny.Sequence + _ = _3_tableName + _3_tableName = (((((input).Dtor_originalInput()).Dtor_TransactItems()).Select((_2_x).Uint32()).(m_ComAmazonawsDynamodbTypes.TransactGetItem)).Dtor_Get()).Dtor_TableName() + if !((config).Dtor_tableEncryptionConfigs()).Contains(_3_tableName) { + _0_decryptedItems = _dafny.Companion_Sequence_.Concatenate(_0_decryptedItems, _dafny.SeqOf((_1_encryptedItems).Select((_2_x).Uint32()).(m_ComAmazonawsDynamodbTypes.ItemResponse))) + } else { + var _4_tableConfig m_DdbMiddlewareConfig.TableConfig + _ = _4_tableConfig + _4_tableConfig = ((config).Dtor_tableEncryptionConfigs()).Get(_3_tableName).(m_DdbMiddlewareConfig.TableConfig) + if m_DynamoDbMiddlewareSupport.Companion_Default___.NoMap(((_1_encryptedItems).Select((_2_x).Uint32()).(m_ComAmazonawsDynamodbTypes.ItemResponse)).Dtor_Item()) { + _0_decryptedItems = _dafny.Companion_Sequence_.Concatenate(_0_decryptedItems, _dafny.SeqOf(m_ComAmazonawsDynamodbTypes.Companion_ItemResponse_.Create_ItemResponse_(m_Wrappers.Companion_Option_.Create_None_()))) + } else { + var _5_decryptRes m_Wrappers.Result + _ = _5_decryptRes + var _out0 m_Wrappers.Result + _ = _out0 + _out0 = ((_4_tableConfig).Dtor_itemEncryptor()).DecryptItem(m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Companion_DecryptItemInput_.Create_DecryptItemInput_((((_1_encryptedItems).Select((_2_x).Uint32()).(m_ComAmazonawsDynamodbTypes.ItemResponse)).Dtor_Item()).Dtor_value().(_dafny.Map))) + _5_decryptRes = _out0 + var _6_valueOrError0 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Companion_DecryptItemOutput_.Default()) + _ = _6_valueOrError0 + _6_valueOrError0 = m_DdbMiddlewareConfig.Companion_Default___.MapError(_5_decryptRes) + if (_6_valueOrError0).IsFailure() { + output = (_6_valueOrError0).PropagateFailure() + return output + } + var _7_decrypted m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.DecryptItemOutput + _ = _7_decrypted + _7_decrypted = (_6_valueOrError0).Extract().(m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.DecryptItemOutput) + var _8_valueOrError1 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(_dafny.EmptyMap) + _ = _8_valueOrError1 + _8_valueOrError1 = m_DynamoDbMiddlewareSupport.Companion_Default___.RemoveBeacons(_4_tableConfig, (_7_decrypted).Dtor_plaintextItem()) + if (_8_valueOrError1).IsFailure() { + output = (_8_valueOrError1).PropagateFailure() + return output + } + var _9_item _dafny.Map + _ = _9_item + _9_item = (_8_valueOrError1).Extract().(_dafny.Map) + _0_decryptedItems = _dafny.Companion_Sequence_.Concatenate(_0_decryptedItems, _dafny.SeqOf(m_ComAmazonawsDynamodbTypes.Companion_ItemResponse_.Create_ItemResponse_(m_Wrappers.Companion_Option_.Create_Some_(_9_item)))) + } + } + } + var _pat_let_tv0 = _0_decryptedItems + _ = _pat_let_tv0 + output = m_Wrappers.Companion_Result_.Create_Success_(m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_TransactGetItemsOutputTransformOutput_.Create_TransactGetItemsOutputTransformOutput_(func(_pat_let41_0 m_ComAmazonawsDynamodbTypes.TransactGetItemsOutput) m_ComAmazonawsDynamodbTypes.TransactGetItemsOutput { + return func(_10_dt__update__tmp_h0 m_ComAmazonawsDynamodbTypes.TransactGetItemsOutput) m_ComAmazonawsDynamodbTypes.TransactGetItemsOutput { + return func(_pat_let42_0 m_Wrappers.Option) m_ComAmazonawsDynamodbTypes.TransactGetItemsOutput { + return func(_11_dt__update_hResponses_h0 m_Wrappers.Option) m_ComAmazonawsDynamodbTypes.TransactGetItemsOutput { + return m_ComAmazonawsDynamodbTypes.Companion_TransactGetItemsOutput_.Create_TransactGetItemsOutput_((_10_dt__update__tmp_h0).Dtor_ConsumedCapacity(), _11_dt__update_hResponses_h0) + }(_pat_let42_0) + }(m_Wrappers.Companion_Option_.Create_Some_(_pat_let_tv0)) + }(_pat_let41_0) + }((input).Dtor_sdkOutput()))) + return output + return output +} + +// End of class Default__ diff --git a/releases/go/dynamodb-esdk/TransactWriteItemsTransform/TransactWriteItemsTransform.go b/releases/go/dynamodb-esdk/TransactWriteItemsTransform/TransactWriteItemsTransform.go new file mode 100644 index 000000000..8ef4b1a21 --- /dev/null +++ b/releases/go/dynamodb-esdk/TransactWriteItemsTransform/TransactWriteItemsTransform.go @@ -0,0 +1,566 @@ +// Package TransactWriteItemsTransform +// Dafny module TransactWriteItemsTransform compiled into Go + +package TransactWriteItemsTransform + +import ( + os "os" + + m_ComAmazonawsDynamodbTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/dynamodb/ComAmazonawsDynamodbTypes" + m_Com_Amazonaws_Dynamodb "github.com/aws/aws-cryptographic-material-providers-library/releases/go/dynamodb/Com_Amazonaws_Dynamodb" + m_ComAmazonawsKmsTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/kms/ComAmazonawsKmsTypes" + m_Com_Amazonaws_Kms "github.com/aws/aws-cryptographic-material-providers-library/releases/go/kms/Com_Amazonaws_Kms" + m_AlgorithmSuites "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AlgorithmSuites" + m_AwsArnParsing "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsArnParsing" + m_AwsCryptographyKeyStoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyKeyStoreOperations" + m_AwsCryptographyKeyStoreTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyKeyStoreTypes" + m_AwsCryptographyMaterialProvidersOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyMaterialProvidersOperations" + m_AwsCryptographyMaterialProvidersTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyMaterialProvidersTypes" + m_AwsKmsDiscoveryKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsDiscoveryKeyring" + m_AwsKmsEcdhKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsEcdhKeyring" + m_AwsKmsHierarchicalKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsHierarchicalKeyring" + m_AwsKmsKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsKeyring" + m_AwsKmsMrkAreUnique "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkAreUnique" + m_AwsKmsMrkDiscoveryKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkDiscoveryKeyring" + m_AwsKmsMrkKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkKeyring" + m_AwsKmsMrkMatchForDecrypt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkMatchForDecrypt" + m_AwsKmsRsaKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsRsaKeyring" + m_AwsKmsUtils "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsUtils" + m_CMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CMM" + m_CacheConstants "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CacheConstants" + m_CanonicalEncryptionContext "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CanonicalEncryptionContext" + m_Commitment "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Commitment" + m_Constants "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Constants" + m_CreateKeyStoreTable "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CreateKeyStoreTable" + m_CreateKeys "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CreateKeys" + m_DDBKeystoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DDBKeystoreOperations" + m_DefaultCMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DefaultCMM" + m_DefaultClientSupplier "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DefaultClientSupplier" + m_Defaults "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Defaults" + m_DiscoveryMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DiscoveryMultiKeyring" + m_EcdhEdkWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/EcdhEdkWrapping" + m_EdkWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/EdkWrapping" + m_ErrorMessages "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/ErrorMessages" + m_GetKeys "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/GetKeys" + m_IntermediateKeyWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/IntermediateKeyWrapping" + m_KMSKeystoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KMSKeystoreOperations" + m_KeyStore "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KeyStore" + m_KeyStoreErrorMessages "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KeyStoreErrorMessages" + m_Keyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Keyring" + m_KmsArn "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KmsArn" + m_LocalCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/LocalCMC" + m_MaterialProviders "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MaterialProviders" + m_MaterialWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MaterialWrapping" + m_Materials "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Materials" + m_MrkAwareDiscoveryMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MrkAwareDiscoveryMultiKeyring" + m_MrkAwareStrictMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MrkAwareStrictMultiKeyring" + m_MultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MultiKeyring" + m_RawAESKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawAESKeyring" + m_RawECDHKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawECDHKeyring" + m_RawRSAKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawRSAKeyring" + m_RequiredEncryptionContextCMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RequiredEncryptionContextCMM" + m_StormTracker "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StormTracker" + m_StormTrackingCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StormTrackingCMC" + m_StrictMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StrictMultiKeyring" + m_Structure "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Structure" + m_SynchronizedLocalCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/SynchronizedLocalCMC" + m_Utils "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Utils" + m_AtomicPrimitives "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AtomicPrimitives" + m_AwsCryptographyPrimitivesOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AwsCryptographyPrimitivesOperations" + m_AwsCryptographyPrimitivesTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AwsCryptographyPrimitivesTypes" + m_Digest "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/Digest" + m_HKDF "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/HKDF" + m_KdfCtr "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/KdfCtr" + m_Random "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/Random" + m_WrappedHKDF "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/WrappedHKDF" + m_WrappedHMAC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/WrappedHMAC" + m_Actions "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Actions" + m_Base64 "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Base64" + m_Base64Lemmas "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Base64Lemmas" + m_BoundedInts "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/BoundedInts" + m_DivInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivInternals" + m_DivInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivInternalsNonlinear" + m_DivMod "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivMod" + m_FileIO "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/FileIO" + m_FloatCompare "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/FloatCompare" + m_Functions "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Functions" + m_GeneralInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/GeneralInternals" + m_GetOpt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/GetOpt" + m_HexStrings "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/HexStrings" + m_Logarithm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Logarithm" + m__Math "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Math_" + m_ModInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/ModInternals" + m_ModInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/ModInternalsNonlinear" + m_Mul "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Mul" + m_MulInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/MulInternals" + m_MulInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/MulInternalsNonlinear" + m_Power "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Power" + m_Relations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Relations" + m_Seq "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Seq" + m_Seq_MergeSort "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Seq_MergeSort" + m_Sorting "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Sorting" + m_StandardLibrary "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary" + m_StandardLibraryInterop "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibraryInterop" + m_StandardLibrary_MemoryMath "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_MemoryMath" + m_StandardLibrary_Sequence "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_Sequence" + m_StandardLibrary_String "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_String" + m_StandardLibrary_UInt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_UInt" + m_Streams "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Streams" + m_UnicodeStrings "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/UnicodeStrings" + m__Unicode "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Unicode_" + m_Utf16EncodingForm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Utf16EncodingForm" + m_Utf8EncodingForm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Utf8EncodingForm" + m_Wrappers "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Wrappers" + m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations" + m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes" + m_AwsCryptographyDbEncryptionSdkDynamoDbOperations "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbOperations" + m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes" + m_AwsCryptographyDbEncryptionSdkDynamoDbTypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbTypes" + m_AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations" + m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes" + m_BaseBeacon "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/BaseBeacon" + m_BatchWriteItemTransform "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/BatchWriteItemTransform" + m_Canonize "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/Canonize" + m_CompoundBeacon "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/CompoundBeacon" + m_DdbMiddlewareConfig "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DdbMiddlewareConfig" + m_DdbStatement "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DdbStatement" + m_DdbVirtualFields "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DdbVirtualFields" + m_DynamoDBFilterExpr "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDBFilterExpr" + m_DynamoDBSupport "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDBSupport" + m_DynamoDbEncryption "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbEncryption" + m_DynamoDbEncryptionBranchKeyIdSupplier "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbEncryptionBranchKeyIdSupplier" + m_DynamoDbEncryptionUtil "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbEncryptionUtil" + m_DynamoDbItemEncryptor "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbItemEncryptor" + m_DynamoDbItemEncryptorUtil "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbItemEncryptorUtil" + m_DynamoDbMiddlewareSupport "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbMiddlewareSupport" + m_DynamoDbNormalizeNumber "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbNormalizeNumber" + m_DynamoDbUpdateExpr "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbUpdateExpr" + m_DynamoToStruct "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoToStruct" + m_GetItemTransform "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/GetItemTransform" + m_InternalLegacyOverride "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/InternalLegacyOverride" + m__Maps "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/Maps_" + m_OptimizedMergeSort "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/OptimizedMergeSort" + m_PutItemTransform "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/PutItemTransform" + m_SearchConfigToInfo "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/SearchConfigToInfo" + m_SearchableEncryptionInfo "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/SearchableEncryptionInfo" + m_Sets "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/Sets" + m_SortCanon "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/SortCanon" + m_StructuredEncryption "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryption" + m_StructuredEncryptionCrypt "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionCrypt" + m_StructuredEncryptionFooter "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionFooter" + m_StructuredEncryptionHeader "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionHeader" + m_StructuredEncryptionPaths "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionPaths" + m_StructuredEncryptionUtil "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionUtil" + m_TermLoc "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/TermLoc" + m_UpdateItemTransform "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/UpdateItemTransform" + m__System "github.com/dafny-lang/DafnyRuntimeGo/v4/System_" + _dafny "github.com/dafny-lang/DafnyRuntimeGo/v4/dafny" +) + +var _ = os.Args +var _ _dafny.Dummy__ +var _ m__System.Dummy__ +var _ m_Wrappers.Dummy__ +var _ m_BoundedInts.Dummy__ +var _ m_StandardLibrary_UInt.Dummy__ +var _ m_StandardLibrary_MemoryMath.Dummy__ +var _ m_StandardLibrary_Sequence.Dummy__ +var _ m_StandardLibrary_String.Dummy__ +var _ m_StandardLibrary.Dummy__ +var _ m_AwsCryptographyPrimitivesTypes.Dummy__ +var _ m_Random.Dummy__ +var _ m_Digest.Dummy__ +var _ m_WrappedHMAC.Dummy__ +var _ m_HKDF.Dummy__ +var _ m_WrappedHKDF.Dummy__ +var _ m_KdfCtr.Dummy__ +var _ m_AwsCryptographyPrimitivesOperations.Dummy__ +var _ m_AtomicPrimitives.Dummy__ +var _ m_ComAmazonawsDynamodbTypes.Dummy__ +var _ m_ComAmazonawsKmsTypes.Dummy__ +var _ m_AwsCryptographyKeyStoreTypes.Dummy__ +var _ m_AwsCryptographyMaterialProvidersTypes.Dummy__ +var _ m_Base64.Dummy__ +var _ m_AlgorithmSuites.Dummy__ +var _ m_Materials.Dummy__ +var _ m_Keyring.Dummy__ +var _ m_Relations.Dummy__ +var _ m_Seq_MergeSort.Dummy__ +var _ m__Math.Dummy__ +var _ m_Seq.Dummy__ +var _ m_Actions.Dummy__ +var _ m_CanonicalEncryptionContext.Dummy__ +var _ m_MaterialWrapping.Dummy__ +var _ m_IntermediateKeyWrapping.Dummy__ +var _ m_EdkWrapping.Dummy__ +var _ m_ErrorMessages.Dummy__ +var _ m_RawAESKeyring.Dummy__ +var _ m_AwsArnParsing.Dummy__ +var _ m_Constants.Dummy__ +var _ m_EcdhEdkWrapping.Dummy__ +var _ m_RawECDHKeyring.Dummy__ +var _ m_RawRSAKeyring.Dummy__ +var _ m_AwsKmsMrkMatchForDecrypt.Dummy__ +var _ m_AwsKmsUtils.Dummy__ +var _ m_AwsKmsKeyring.Dummy__ +var _ m_AwsKmsDiscoveryKeyring.Dummy__ +var _ m_AwsKmsEcdhKeyring.Dummy__ +var _ m_FileIO.Dummy__ +var _ m_LocalCMC.Dummy__ +var _ m_SynchronizedLocalCMC.Dummy__ +var _ m_StormTracker.Dummy__ +var _ m_StormTrackingCMC.Dummy__ +var _ m_CacheConstants.Dummy__ +var _ m_AwsKmsHierarchicalKeyring.Dummy__ +var _ m_AwsKmsMrkDiscoveryKeyring.Dummy__ +var _ m_AwsKmsMrkKeyring.Dummy__ +var _ m_AwsKmsRsaKeyring.Dummy__ +var _ m_MultiKeyring.Dummy__ +var _ m_AwsKmsMrkAreUnique.Dummy__ +var _ m_StrictMultiKeyring.Dummy__ +var _ m_Com_Amazonaws_Kms.Dummy__ +var _ m_Com_Amazonaws_Dynamodb.Dummy__ +var _ m_DiscoveryMultiKeyring.Dummy__ +var _ m_MrkAwareDiscoveryMultiKeyring.Dummy__ +var _ m_MrkAwareStrictMultiKeyring.Dummy__ +var _ m_CMM.Dummy__ +var _ m_Defaults.Dummy__ +var _ m_Commitment.Dummy__ +var _ m_DefaultCMM.Dummy__ +var _ m_DefaultClientSupplier.Dummy__ +var _ m_Utils.Dummy__ +var _ m_RequiredEncryptionContextCMM.Dummy__ +var _ m_AwsCryptographyMaterialProvidersOperations.Dummy__ +var _ m_MaterialProviders.Dummy__ +var _ m_KeyStoreErrorMessages.Dummy__ +var _ m_KmsArn.Dummy__ +var _ m_Structure.Dummy__ +var _ m_KMSKeystoreOperations.Dummy__ +var _ m_DDBKeystoreOperations.Dummy__ +var _ m_CreateKeys.Dummy__ +var _ m_CreateKeyStoreTable.Dummy__ +var _ m_GetKeys.Dummy__ +var _ m_AwsCryptographyKeyStoreOperations.Dummy__ +var _ m_KeyStore.Dummy__ +var _ m__Unicode.Dummy__ +var _ m_Functions.Dummy__ +var _ m_Utf8EncodingForm.Dummy__ +var _ m_Utf16EncodingForm.Dummy__ +var _ m_UnicodeStrings.Dummy__ +var _ m_GeneralInternals.Dummy__ +var _ m_MulInternalsNonlinear.Dummy__ +var _ m_MulInternals.Dummy__ +var _ m_Mul.Dummy__ +var _ m_ModInternalsNonlinear.Dummy__ +var _ m_DivInternalsNonlinear.Dummy__ +var _ m_ModInternals.Dummy__ +var _ m_DivInternals.Dummy__ +var _ m_DivMod.Dummy__ +var _ m_Power.Dummy__ +var _ m_Logarithm.Dummy__ +var _ m_StandardLibraryInterop.Dummy__ +var _ m_Streams.Dummy__ +var _ m_Sorting.Dummy__ +var _ m_HexStrings.Dummy__ +var _ m_GetOpt.Dummy__ +var _ m_FloatCompare.Dummy__ +var _ m_Base64Lemmas.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Dummy__ +var _ m_StructuredEncryptionUtil.Dummy__ +var _ m_Sets.Dummy__ +var _ m_StructuredEncryptionPaths.Dummy__ +var _ m_StructuredEncryptionHeader.Dummy__ +var _ m_StructuredEncryptionFooter.Dummy__ +var _ m_OptimizedMergeSort.Dummy__ +var _ m_SortCanon.Dummy__ +var _ m_Canonize.Dummy__ +var _ m_StructuredEncryptionCrypt.Dummy__ +var _ m__Maps.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations.Dummy__ +var _ m_StructuredEncryption.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Dummy__ +var _ m_DynamoDbEncryptionUtil.Dummy__ +var _ m_DynamoDbNormalizeNumber.Dummy__ +var _ m_DynamoToStruct.Dummy__ +var _ m_DynamoDbItemEncryptorUtil.Dummy__ +var _ m_InternalLegacyOverride.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations.Dummy__ +var _ m_DynamoDbItemEncryptor.Dummy__ +var _ m_DynamoDbEncryptionBranchKeyIdSupplier.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbOperations.Dummy__ +var _ m_DynamoDbEncryption.Dummy__ +var _ m_TermLoc.Dummy__ +var _ m_DdbVirtualFields.Dummy__ +var _ m_DynamoDbUpdateExpr.Dummy__ +var _ m_BaseBeacon.Dummy__ +var _ m_CompoundBeacon.Dummy__ +var _ m_SearchableEncryptionInfo.Dummy__ +var _ m_DynamoDBFilterExpr.Dummy__ +var _ m_DynamoDBSupport.Dummy__ +var _ m_SearchConfigToInfo.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Dummy__ +var _ m_DdbMiddlewareConfig.Dummy__ +var _ m_DdbStatement.Dummy__ +var _ m_DynamoDbMiddlewareSupport.Dummy__ +var _ m_PutItemTransform.Dummy__ +var _ m_GetItemTransform.Dummy__ +var _ m_UpdateItemTransform.Dummy__ +var _ m_BatchWriteItemTransform.Dummy__ + +type Dummy__ struct{} + +// Definition of class Default__ +type Default__ struct { + dummy byte +} + +func New_Default___() *Default__ { + _this := Default__{} + + return &_this +} + +type CompanionStruct_Default___ struct { +} + +var Companion_Default___ = CompanionStruct_Default___{} + +func (_this *Default__) Equals(other *Default__) bool { + return _this == other +} + +func (_this *Default__) EqualsGeneric(x interface{}) bool { + other, ok := x.(*Default__) + return ok && _this.Equals(other) +} + +func (*Default__) String() string { + return "TransactWriteItemsTransform.Default__" +} +func (_this *Default__) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = &Default__{} + +func (_static *CompanionStruct_Default___) IsValid(item m_ComAmazonawsDynamodbTypes.TransactWriteItem) bool { + return (((((item).Dtor_Put()).Is_Some()) || (((item).Dtor_Update()).Is_Some())) || (((item).Dtor_Delete()).Is_Some())) || (((item).Dtor_ConditionCheck()).Is_Some()) +} +func (_static *CompanionStruct_Default___) Input(config m_DdbMiddlewareConfig.Config, input m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.TransactWriteItemsInputTransformInput) m_Wrappers.Result { + var output m_Wrappers.Result = m_Wrappers.Result{} + _ = output + var _0_valueOrError0 m_Wrappers.Outcome = m_Wrappers.Companion_Outcome_.Default() + _ = _0_valueOrError0 + _0_valueOrError0 = m_Wrappers.Companion_Default___.Need(_dafny.Quantifier((((input).Dtor_sdkInput()).Dtor_TransactItems()).UniqueElements(), true, func(_forall_var_0 m_ComAmazonawsDynamodbTypes.TransactWriteItem) bool { + var _1_item m_ComAmazonawsDynamodbTypes.TransactWriteItem + _1_item = interface{}(_forall_var_0).(m_ComAmazonawsDynamodbTypes.TransactWriteItem) + return !(_dafny.Companion_Sequence_.Contains(((input).Dtor_sdkInput()).Dtor_TransactItems(), _1_item)) || (Companion_Default___.IsValid(_1_item)) + }), m_DdbMiddlewareConfig.Companion_Default___.E(_dafny.SeqOfString("Each item in TransactWriteItems must specify at least one supported operation"))) + if (_0_valueOrError0).IsFailure() { + output = (_0_valueOrError0).PropagateFailure() + return output + } + var _2_result _dafny.Sequence + _ = _2_result + _2_result = _dafny.SeqOf() + var _hi0 _dafny.Int = _dafny.IntOfUint32((((input).Dtor_sdkInput()).Dtor_TransactItems()).Cardinality()) + _ = _hi0 + for _3_x := _dafny.Zero; _3_x.Cmp(_hi0) < 0; _3_x = _3_x.Plus(_dafny.One) { + var _4_item m_ComAmazonawsDynamodbTypes.TransactWriteItem + _ = _4_item + _4_item = (((input).Dtor_sdkInput()).Dtor_TransactItems()).Select((_3_x).Uint32()).(m_ComAmazonawsDynamodbTypes.TransactWriteItem) + if (((_4_item).Dtor_ConditionCheck()).Is_Some()) && (((config).Dtor_tableEncryptionConfigs()).Contains((((_4_item).Dtor_ConditionCheck()).Dtor_value().(m_ComAmazonawsDynamodbTypes.ConditionCheck)).Dtor_TableName())) { + var _5_tableConfig m_DdbMiddlewareConfig.TableConfig + _ = _5_tableConfig + _5_tableConfig = ((config).Dtor_tableEncryptionConfigs()).Get((((_4_item).Dtor_ConditionCheck()).Dtor_value().(m_ComAmazonawsDynamodbTypes.ConditionCheck)).Dtor_TableName()).(m_DdbMiddlewareConfig.TableConfig) + var _6_valueOrError1 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(false) + _ = _6_valueOrError1 + _6_valueOrError1 = m_DynamoDbMiddlewareSupport.Companion_Default___.TestConditionExpression(_5_tableConfig, m_Wrappers.Companion_Option_.Create_Some_((((_4_item).Dtor_ConditionCheck()).Dtor_value().(m_ComAmazonawsDynamodbTypes.ConditionCheck)).Dtor_ConditionExpression()), (((_4_item).Dtor_ConditionCheck()).Dtor_value().(m_ComAmazonawsDynamodbTypes.ConditionCheck)).Dtor_ExpressionAttributeNames(), (((_4_item).Dtor_ConditionCheck()).Dtor_value().(m_ComAmazonawsDynamodbTypes.ConditionCheck)).Dtor_ExpressionAttributeValues()) + if (_6_valueOrError1).IsFailure() { + output = (_6_valueOrError1).PropagateFailure() + return output + } + var _7___v0 bool + _ = _7___v0 + _7___v0 = (_6_valueOrError1).Extract().(bool) + } + if (((_4_item).Dtor_Delete()).Is_Some()) && (((config).Dtor_tableEncryptionConfigs()).Contains((((_4_item).Dtor_Delete()).Dtor_value().(m_ComAmazonawsDynamodbTypes.Delete)).Dtor_TableName())) { + var _8_tableConfig m_DdbMiddlewareConfig.TableConfig + _ = _8_tableConfig + _8_tableConfig = ((config).Dtor_tableEncryptionConfigs()).Get((((_4_item).Dtor_Delete()).Dtor_value().(m_ComAmazonawsDynamodbTypes.Delete)).Dtor_TableName()).(m_DdbMiddlewareConfig.TableConfig) + var _9_valueOrError2 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(false) + _ = _9_valueOrError2 + _9_valueOrError2 = m_DynamoDbMiddlewareSupport.Companion_Default___.TestConditionExpression(_8_tableConfig, (((_4_item).Dtor_Delete()).Dtor_value().(m_ComAmazonawsDynamodbTypes.Delete)).Dtor_ConditionExpression(), (((_4_item).Dtor_Delete()).Dtor_value().(m_ComAmazonawsDynamodbTypes.Delete)).Dtor_ExpressionAttributeNames(), (((_4_item).Dtor_Delete()).Dtor_value().(m_ComAmazonawsDynamodbTypes.Delete)).Dtor_ExpressionAttributeValues()) + if (_9_valueOrError2).IsFailure() { + output = (_9_valueOrError2).PropagateFailure() + return output + } + var _10___v1 bool + _ = _10___v1 + _10___v1 = (_9_valueOrError2).Extract().(bool) + } + if (((_4_item).Dtor_Update()).Is_Some()) && (((config).Dtor_tableEncryptionConfigs()).Contains((((_4_item).Dtor_Update()).Dtor_value().(m_ComAmazonawsDynamodbTypes.Update)).Dtor_TableName())) { + var _11_tableConfig m_DdbMiddlewareConfig.TableConfig + _ = _11_tableConfig + _11_tableConfig = ((config).Dtor_tableEncryptionConfigs()).Get((((_4_item).Dtor_Update()).Dtor_value().(m_ComAmazonawsDynamodbTypes.Update)).Dtor_TableName()).(m_DdbMiddlewareConfig.TableConfig) + var _12_valueOrError3 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(false) + _ = _12_valueOrError3 + _12_valueOrError3 = m_DynamoDbMiddlewareSupport.Companion_Default___.TestUpdateExpression(_11_tableConfig, m_Wrappers.Companion_Option_.Create_Some_((((_4_item).Dtor_Update()).Dtor_value().(m_ComAmazonawsDynamodbTypes.Update)).Dtor_UpdateExpression()), (((_4_item).Dtor_Update()).Dtor_value().(m_ComAmazonawsDynamodbTypes.Update)).Dtor_ExpressionAttributeNames(), (((_4_item).Dtor_Update()).Dtor_value().(m_ComAmazonawsDynamodbTypes.Update)).Dtor_ExpressionAttributeValues()) + if (_12_valueOrError3).IsFailure() { + output = (_12_valueOrError3).PropagateFailure() + return output + } + var _13___v2 bool + _ = _13___v2 + _13___v2 = (_12_valueOrError3).Extract().(bool) + var _14_valueOrError4 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(false) + _ = _14_valueOrError4 + _14_valueOrError4 = m_DynamoDbMiddlewareSupport.Companion_Default___.TestConditionExpression(_11_tableConfig, (((_4_item).Dtor_Update()).Dtor_value().(m_ComAmazonawsDynamodbTypes.Update)).Dtor_ConditionExpression(), (((_4_item).Dtor_Update()).Dtor_value().(m_ComAmazonawsDynamodbTypes.Update)).Dtor_ExpressionAttributeNames(), (((_4_item).Dtor_Update()).Dtor_value().(m_ComAmazonawsDynamodbTypes.Update)).Dtor_ExpressionAttributeValues()) + if (_14_valueOrError4).IsFailure() { + output = (_14_valueOrError4).PropagateFailure() + return output + } + var _15___v3 bool + _ = _15___v3 + _15___v3 = (_14_valueOrError4).Extract().(bool) + } + if (((_4_item).Dtor_Put()).Is_Some()) && (!(m_DdbMiddlewareConfig.Companion_Default___.IsPlainWrite(config, (((_4_item).Dtor_Put()).Dtor_value().(m_ComAmazonawsDynamodbTypes.Put)).Dtor_TableName()))) { + var _16_tableConfig m_DdbMiddlewareConfig.TableConfig + _ = _16_tableConfig + _16_tableConfig = ((config).Dtor_tableEncryptionConfigs()).Get((((_4_item).Dtor_Put()).Dtor_value().(m_ComAmazonawsDynamodbTypes.Put)).Dtor_TableName()).(m_DdbMiddlewareConfig.TableConfig) + var _17_valueOrError5 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(false) + _ = _17_valueOrError5 + var _out0 m_Wrappers.Result + _ = _out0 + _out0 = m_DynamoDbMiddlewareSupport.Companion_Default___.IsWriteable(_16_tableConfig, (((_4_item).Dtor_Put()).Dtor_value().(m_ComAmazonawsDynamodbTypes.Put)).Dtor_Item()) + _17_valueOrError5 = _out0 + if (_17_valueOrError5).IsFailure() { + output = (_17_valueOrError5).PropagateFailure() + return output + } + var _18___v4 bool + _ = _18___v4 + _18___v4 = (_17_valueOrError5).Extract().(bool) + var _19_valueOrError6 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(false) + _ = _19_valueOrError6 + _19_valueOrError6 = m_DynamoDbMiddlewareSupport.Companion_Default___.TestConditionExpression(_16_tableConfig, (((_4_item).Dtor_Put()).Dtor_value().(m_ComAmazonawsDynamodbTypes.Put)).Dtor_ConditionExpression(), (((_4_item).Dtor_Put()).Dtor_value().(m_ComAmazonawsDynamodbTypes.Put)).Dtor_ExpressionAttributeNames(), (((_4_item).Dtor_Put()).Dtor_value().(m_ComAmazonawsDynamodbTypes.Put)).Dtor_ExpressionAttributeValues()) + if (_19_valueOrError6).IsFailure() { + output = (_19_valueOrError6).PropagateFailure() + return output + } + var _20___v5 bool + _ = _20___v5 + _20___v5 = (_19_valueOrError6).Extract().(bool) + var _21_valueOrError7 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(_dafny.EmptyMap) + _ = _21_valueOrError7 + var _out1 m_Wrappers.Result + _ = _out1 + _out1 = m_DynamoDbMiddlewareSupport.Companion_Default___.AddSignedBeacons(_16_tableConfig, (((_4_item).Dtor_Put()).Dtor_value().(m_ComAmazonawsDynamodbTypes.Put)).Dtor_Item()) + _21_valueOrError7 = _out1 + if (_21_valueOrError7).IsFailure() { + output = (_21_valueOrError7).PropagateFailure() + return output + } + var _22_beaconItem _dafny.Map + _ = _22_beaconItem + _22_beaconItem = (_21_valueOrError7).Extract().(_dafny.Map) + var _23_encryptRes m_Wrappers.Result + _ = _23_encryptRes + var _out2 m_Wrappers.Result + _ = _out2 + _out2 = ((_16_tableConfig).Dtor_itemEncryptor()).EncryptItem(m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Companion_EncryptItemInput_.Create_EncryptItemInput_(_22_beaconItem)) + _23_encryptRes = _out2 + var _24_valueOrError8 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Companion_EncryptItemOutput_.Default()) + _ = _24_valueOrError8 + _24_valueOrError8 = m_DdbMiddlewareConfig.Companion_Default___.MapError(_23_encryptRes) + if (_24_valueOrError8).IsFailure() { + output = (_24_valueOrError8).PropagateFailure() + return output + } + var _25_encrypted m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.EncryptItemOutput + _ = _25_encrypted + _25_encrypted = (_24_valueOrError8).Extract().(m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.EncryptItemOutput) + var _26_valueOrError9 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(m_Wrappers.Companion_Option_.Default()) + _ = _26_valueOrError9 + _26_valueOrError9 = m_DynamoDbMiddlewareSupport.Companion_Default___.GetKeyIdFromHeader(_16_tableConfig, _25_encrypted) + if (_26_valueOrError9).IsFailure() { + output = (_26_valueOrError9).PropagateFailure() + return output + } + var _27_keyId m_Wrappers.Option + _ = _27_keyId + _27_keyId = (_26_valueOrError9).Extract().(m_Wrappers.Option) + var _28_valueOrError10 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(_dafny.EmptyMap) + _ = _28_valueOrError10 + var _out3 m_Wrappers.Result + _ = _out3 + _out3 = m_DynamoDbMiddlewareSupport.Companion_Default___.GetEncryptedBeacons(_16_tableConfig, (((_4_item).Dtor_Put()).Dtor_value().(m_ComAmazonawsDynamodbTypes.Put)).Dtor_Item(), m_DynamoDbEncryptionUtil.Companion_Default___.MaybeFromOptionKeyId(_27_keyId)) + _28_valueOrError10 = _out3 + if (_28_valueOrError10).IsFailure() { + output = (_28_valueOrError10).PropagateFailure() + return output + } + var _29_beaconAttrs _dafny.Map + _ = _29_beaconAttrs + _29_beaconAttrs = (_28_valueOrError10).Extract().(_dafny.Map) + var _pat_let_tv0 = _25_encrypted + _ = _pat_let_tv0 + var _pat_let_tv1 = _29_beaconAttrs + _ = _pat_let_tv1 + var _30_put m_Wrappers.Option + _ = _30_put + _30_put = m_Wrappers.Companion_Option_.Create_Some_(func(_pat_let35_0 m_ComAmazonawsDynamodbTypes.Put) m_ComAmazonawsDynamodbTypes.Put { + return func(_31_dt__update__tmp_h0 m_ComAmazonawsDynamodbTypes.Put) m_ComAmazonawsDynamodbTypes.Put { + return func(_pat_let36_0 _dafny.Map) m_ComAmazonawsDynamodbTypes.Put { + return func(_32_dt__update_hItem_h0 _dafny.Map) m_ComAmazonawsDynamodbTypes.Put { + return m_ComAmazonawsDynamodbTypes.Companion_Put_.Create_Put_(_32_dt__update_hItem_h0, (_31_dt__update__tmp_h0).Dtor_TableName(), (_31_dt__update__tmp_h0).Dtor_ConditionExpression(), (_31_dt__update__tmp_h0).Dtor_ExpressionAttributeNames(), (_31_dt__update__tmp_h0).Dtor_ExpressionAttributeValues(), (_31_dt__update__tmp_h0).Dtor_ReturnValuesOnConditionCheckFailure()) + }(_pat_let36_0) + }(((_pat_let_tv0).Dtor_encryptedItem()).Merge(_pat_let_tv1)) + }(_pat_let35_0) + }(((_4_item).Dtor_Put()).Dtor_value().(m_ComAmazonawsDynamodbTypes.Put))) + var _33_newItem m_ComAmazonawsDynamodbTypes.TransactWriteItem + _ = _33_newItem + var _34_dt__update__tmp_h1 m_ComAmazonawsDynamodbTypes.TransactWriteItem = _4_item + _ = _34_dt__update__tmp_h1 + var _35_dt__update_hPut_h0 m_Wrappers.Option = _30_put + _ = _35_dt__update_hPut_h0 + _33_newItem = m_ComAmazonawsDynamodbTypes.Companion_TransactWriteItem_.Create_TransactWriteItem_((_34_dt__update__tmp_h1).Dtor_ConditionCheck(), _35_dt__update_hPut_h0, (_34_dt__update__tmp_h1).Dtor_Delete(), (_34_dt__update__tmp_h1).Dtor_Update()) + _2_result = _dafny.Companion_Sequence_.Concatenate(_2_result, _dafny.SeqOf(_33_newItem)) + } else { + _2_result = _dafny.Companion_Sequence_.Concatenate(_2_result, _dafny.SeqOf(_4_item)) + } + } + var _36_valueOrError11 m_Wrappers.Outcome = m_Wrappers.Companion_Outcome_.Default() + _ = _36_valueOrError11 + _36_valueOrError11 = m_Wrappers.Companion_Default___.Need((_dafny.IntOfUint32((((input).Dtor_sdkInput()).Dtor_TransactItems()).Cardinality())).Cmp(_dafny.IntOfUint32((_2_result).Cardinality())) == 0, m_DdbMiddlewareConfig.Companion_Default___.E(_dafny.SeqOfString(""))) + if (_36_valueOrError11).IsFailure() { + output = (_36_valueOrError11).PropagateFailure() + return output + } + var _pat_let_tv2 = _2_result + _ = _pat_let_tv2 + output = m_Wrappers.Companion_Result_.Create_Success_(m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_TransactWriteItemsInputTransformOutput_.Create_TransactWriteItemsInputTransformOutput_(func(_pat_let37_0 m_ComAmazonawsDynamodbTypes.TransactWriteItemsInput) m_ComAmazonawsDynamodbTypes.TransactWriteItemsInput { + return func(_37_dt__update__tmp_h2 m_ComAmazonawsDynamodbTypes.TransactWriteItemsInput) m_ComAmazonawsDynamodbTypes.TransactWriteItemsInput { + return func(_pat_let38_0 _dafny.Sequence) m_ComAmazonawsDynamodbTypes.TransactWriteItemsInput { + return func(_38_dt__update_hTransactItems_h0 _dafny.Sequence) m_ComAmazonawsDynamodbTypes.TransactWriteItemsInput { + return m_ComAmazonawsDynamodbTypes.Companion_TransactWriteItemsInput_.Create_TransactWriteItemsInput_(_38_dt__update_hTransactItems_h0, (_37_dt__update__tmp_h2).Dtor_ReturnConsumedCapacity(), (_37_dt__update__tmp_h2).Dtor_ReturnItemCollectionMetrics(), (_37_dt__update__tmp_h2).Dtor_ClientRequestToken()) + }(_pat_let38_0) + }(_pat_let_tv2) + }(_pat_let37_0) + }((input).Dtor_sdkInput()))) + return output + return output +} +func (_static *CompanionStruct_Default___) Output(config m_DdbMiddlewareConfig.Config, input m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.TransactWriteItemsOutputTransformInput) m_Wrappers.Result { + var output m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_TransactWriteItemsOutputTransformOutput_.Default()) + _ = output + var _0_finalResult m_ComAmazonawsDynamodbTypes.TransactWriteItemsOutput + _ = _0_finalResult + _0_finalResult = (input).Dtor_sdkOutput() + output = m_Wrappers.Companion_Result_.Create_Success_(m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_TransactWriteItemsOutputTransformOutput_.Create_TransactWriteItemsOutputTransformOutput_(_0_finalResult)) + return output + return output +} + +// End of class Default__ diff --git a/releases/go/dynamodb-esdk/UpdateItemTransform/UpdateItemTransform.go b/releases/go/dynamodb-esdk/UpdateItemTransform/UpdateItemTransform.go new file mode 100644 index 000000000..c3dfcb7bc --- /dev/null +++ b/releases/go/dynamodb-esdk/UpdateItemTransform/UpdateItemTransform.go @@ -0,0 +1,458 @@ +// Package UpdateItemTransform +// Dafny module UpdateItemTransform compiled into Go + +package UpdateItemTransform + +import ( + os "os" + + m_ComAmazonawsDynamodbTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/dynamodb/ComAmazonawsDynamodbTypes" + m_Com_Amazonaws_Dynamodb "github.com/aws/aws-cryptographic-material-providers-library/releases/go/dynamodb/Com_Amazonaws_Dynamodb" + m_ComAmazonawsKmsTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/kms/ComAmazonawsKmsTypes" + m_Com_Amazonaws_Kms "github.com/aws/aws-cryptographic-material-providers-library/releases/go/kms/Com_Amazonaws_Kms" + m_AlgorithmSuites "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AlgorithmSuites" + m_AwsArnParsing "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsArnParsing" + m_AwsCryptographyKeyStoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyKeyStoreOperations" + m_AwsCryptographyKeyStoreTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyKeyStoreTypes" + m_AwsCryptographyMaterialProvidersOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyMaterialProvidersOperations" + m_AwsCryptographyMaterialProvidersTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyMaterialProvidersTypes" + m_AwsKmsDiscoveryKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsDiscoveryKeyring" + m_AwsKmsEcdhKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsEcdhKeyring" + m_AwsKmsHierarchicalKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsHierarchicalKeyring" + m_AwsKmsKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsKeyring" + m_AwsKmsMrkAreUnique "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkAreUnique" + m_AwsKmsMrkDiscoveryKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkDiscoveryKeyring" + m_AwsKmsMrkKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkKeyring" + m_AwsKmsMrkMatchForDecrypt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsMrkMatchForDecrypt" + m_AwsKmsRsaKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsRsaKeyring" + m_AwsKmsUtils "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsKmsUtils" + m_CMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CMM" + m_CacheConstants "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CacheConstants" + m_CanonicalEncryptionContext "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CanonicalEncryptionContext" + m_Commitment "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Commitment" + m_Constants "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Constants" + m_CreateKeyStoreTable "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CreateKeyStoreTable" + m_CreateKeys "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/CreateKeys" + m_DDBKeystoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DDBKeystoreOperations" + m_DefaultCMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DefaultCMM" + m_DefaultClientSupplier "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DefaultClientSupplier" + m_Defaults "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Defaults" + m_DiscoveryMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/DiscoveryMultiKeyring" + m_EcdhEdkWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/EcdhEdkWrapping" + m_EdkWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/EdkWrapping" + m_ErrorMessages "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/ErrorMessages" + m_GetKeys "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/GetKeys" + m_IntermediateKeyWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/IntermediateKeyWrapping" + m_KMSKeystoreOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KMSKeystoreOperations" + m_KeyStore "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KeyStore" + m_KeyStoreErrorMessages "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KeyStoreErrorMessages" + m_Keyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Keyring" + m_KmsArn "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/KmsArn" + m_LocalCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/LocalCMC" + m_MaterialProviders "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MaterialProviders" + m_MaterialWrapping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MaterialWrapping" + m_Materials "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Materials" + m_MrkAwareDiscoveryMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MrkAwareDiscoveryMultiKeyring" + m_MrkAwareStrictMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MrkAwareStrictMultiKeyring" + m_MultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/MultiKeyring" + m_RawAESKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawAESKeyring" + m_RawECDHKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawECDHKeyring" + m_RawRSAKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RawRSAKeyring" + m_RequiredEncryptionContextCMM "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/RequiredEncryptionContextCMM" + m_StormTracker "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StormTracker" + m_StormTrackingCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StormTrackingCMC" + m_StrictMultiKeyring "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/StrictMultiKeyring" + m_Structure "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Structure" + m_SynchronizedLocalCMC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/SynchronizedLocalCMC" + m_Utils "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/Utils" + m_AtomicPrimitives "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AtomicPrimitives" + m_AwsCryptographyPrimitivesOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AwsCryptographyPrimitivesOperations" + m_AwsCryptographyPrimitivesTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AwsCryptographyPrimitivesTypes" + m_Digest "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/Digest" + m_HKDF "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/HKDF" + m_KdfCtr "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/KdfCtr" + m_Random "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/Random" + m_WrappedHKDF "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/WrappedHKDF" + m_WrappedHMAC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/WrappedHMAC" + m_Actions "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Actions" + m_Base64 "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Base64" + m_Base64Lemmas "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Base64Lemmas" + m_BoundedInts "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/BoundedInts" + m_DivInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivInternals" + m_DivInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivInternalsNonlinear" + m_DivMod "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivMod" + m_FileIO "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/FileIO" + m_FloatCompare "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/FloatCompare" + m_Functions "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Functions" + m_GeneralInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/GeneralInternals" + m_GetOpt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/GetOpt" + m_HexStrings "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/HexStrings" + m_Logarithm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Logarithm" + m__Math "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Math_" + m_ModInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/ModInternals" + m_ModInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/ModInternalsNonlinear" + m_Mul "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Mul" + m_MulInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/MulInternals" + m_MulInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/MulInternalsNonlinear" + m_Power "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Power" + m_Relations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Relations" + m_Seq "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Seq" + m_Seq_MergeSort "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Seq_MergeSort" + m_Sorting "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Sorting" + m_StandardLibrary "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary" + m_StandardLibraryInterop "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibraryInterop" + m_StandardLibrary_MemoryMath "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_MemoryMath" + m_StandardLibrary_Sequence "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_Sequence" + m_StandardLibrary_String "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_String" + m_StandardLibrary_UInt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_UInt" + m_Streams "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Streams" + m_UnicodeStrings "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/UnicodeStrings" + m__Unicode "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Unicode_" + m_Utf16EncodingForm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Utf16EncodingForm" + m_Utf8EncodingForm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Utf8EncodingForm" + m_Wrappers "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Wrappers" + m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations" + m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes" + m_AwsCryptographyDbEncryptionSdkDynamoDbOperations "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbOperations" + m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes" + m_AwsCryptographyDbEncryptionSdkDynamoDbTypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbTypes" + m_AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations" + m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes" + m_BaseBeacon "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/BaseBeacon" + m_Canonize "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/Canonize" + m_CompoundBeacon "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/CompoundBeacon" + m_DdbMiddlewareConfig "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DdbMiddlewareConfig" + m_DdbStatement "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DdbStatement" + m_DdbVirtualFields "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DdbVirtualFields" + m_DynamoDBFilterExpr "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDBFilterExpr" + m_DynamoDBSupport "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDBSupport" + m_DynamoDbEncryption "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbEncryption" + m_DynamoDbEncryptionBranchKeyIdSupplier "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbEncryptionBranchKeyIdSupplier" + m_DynamoDbEncryptionUtil "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbEncryptionUtil" + m_DynamoDbItemEncryptor "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbItemEncryptor" + m_DynamoDbItemEncryptorUtil "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbItemEncryptorUtil" + m_DynamoDbMiddlewareSupport "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbMiddlewareSupport" + m_DynamoDbNormalizeNumber "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbNormalizeNumber" + m_DynamoDbUpdateExpr "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbUpdateExpr" + m_DynamoToStruct "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoToStruct" + m_GetItemTransform "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/GetItemTransform" + m_InternalLegacyOverride "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/InternalLegacyOverride" + m__Maps "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/Maps_" + m_OptimizedMergeSort "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/OptimizedMergeSort" + m_PutItemTransform "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/PutItemTransform" + m_SearchConfigToInfo "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/SearchConfigToInfo" + m_SearchableEncryptionInfo "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/SearchableEncryptionInfo" + m_Sets "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/Sets" + m_SortCanon "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/SortCanon" + m_StructuredEncryption "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryption" + m_StructuredEncryptionCrypt "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionCrypt" + m_StructuredEncryptionFooter "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionFooter" + m_StructuredEncryptionHeader "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionHeader" + m_StructuredEncryptionPaths "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionPaths" + m_StructuredEncryptionUtil "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryptionUtil" + m_TermLoc "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/TermLoc" + m__System "github.com/dafny-lang/DafnyRuntimeGo/v4/System_" + _dafny "github.com/dafny-lang/DafnyRuntimeGo/v4/dafny" +) + +var _ = os.Args +var _ _dafny.Dummy__ +var _ m__System.Dummy__ +var _ m_Wrappers.Dummy__ +var _ m_BoundedInts.Dummy__ +var _ m_StandardLibrary_UInt.Dummy__ +var _ m_StandardLibrary_MemoryMath.Dummy__ +var _ m_StandardLibrary_Sequence.Dummy__ +var _ m_StandardLibrary_String.Dummy__ +var _ m_StandardLibrary.Dummy__ +var _ m_AwsCryptographyPrimitivesTypes.Dummy__ +var _ m_Random.Dummy__ +var _ m_Digest.Dummy__ +var _ m_WrappedHMAC.Dummy__ +var _ m_HKDF.Dummy__ +var _ m_WrappedHKDF.Dummy__ +var _ m_KdfCtr.Dummy__ +var _ m_AwsCryptographyPrimitivesOperations.Dummy__ +var _ m_AtomicPrimitives.Dummy__ +var _ m_ComAmazonawsDynamodbTypes.Dummy__ +var _ m_ComAmazonawsKmsTypes.Dummy__ +var _ m_AwsCryptographyKeyStoreTypes.Dummy__ +var _ m_AwsCryptographyMaterialProvidersTypes.Dummy__ +var _ m_Base64.Dummy__ +var _ m_AlgorithmSuites.Dummy__ +var _ m_Materials.Dummy__ +var _ m_Keyring.Dummy__ +var _ m_Relations.Dummy__ +var _ m_Seq_MergeSort.Dummy__ +var _ m__Math.Dummy__ +var _ m_Seq.Dummy__ +var _ m_Actions.Dummy__ +var _ m_CanonicalEncryptionContext.Dummy__ +var _ m_MaterialWrapping.Dummy__ +var _ m_IntermediateKeyWrapping.Dummy__ +var _ m_EdkWrapping.Dummy__ +var _ m_ErrorMessages.Dummy__ +var _ m_RawAESKeyring.Dummy__ +var _ m_AwsArnParsing.Dummy__ +var _ m_Constants.Dummy__ +var _ m_EcdhEdkWrapping.Dummy__ +var _ m_RawECDHKeyring.Dummy__ +var _ m_RawRSAKeyring.Dummy__ +var _ m_AwsKmsMrkMatchForDecrypt.Dummy__ +var _ m_AwsKmsUtils.Dummy__ +var _ m_AwsKmsKeyring.Dummy__ +var _ m_AwsKmsDiscoveryKeyring.Dummy__ +var _ m_AwsKmsEcdhKeyring.Dummy__ +var _ m_FileIO.Dummy__ +var _ m_LocalCMC.Dummy__ +var _ m_SynchronizedLocalCMC.Dummy__ +var _ m_StormTracker.Dummy__ +var _ m_StormTrackingCMC.Dummy__ +var _ m_CacheConstants.Dummy__ +var _ m_AwsKmsHierarchicalKeyring.Dummy__ +var _ m_AwsKmsMrkDiscoveryKeyring.Dummy__ +var _ m_AwsKmsMrkKeyring.Dummy__ +var _ m_AwsKmsRsaKeyring.Dummy__ +var _ m_MultiKeyring.Dummy__ +var _ m_AwsKmsMrkAreUnique.Dummy__ +var _ m_StrictMultiKeyring.Dummy__ +var _ m_Com_Amazonaws_Kms.Dummy__ +var _ m_Com_Amazonaws_Dynamodb.Dummy__ +var _ m_DiscoveryMultiKeyring.Dummy__ +var _ m_MrkAwareDiscoveryMultiKeyring.Dummy__ +var _ m_MrkAwareStrictMultiKeyring.Dummy__ +var _ m_CMM.Dummy__ +var _ m_Defaults.Dummy__ +var _ m_Commitment.Dummy__ +var _ m_DefaultCMM.Dummy__ +var _ m_DefaultClientSupplier.Dummy__ +var _ m_Utils.Dummy__ +var _ m_RequiredEncryptionContextCMM.Dummy__ +var _ m_AwsCryptographyMaterialProvidersOperations.Dummy__ +var _ m_MaterialProviders.Dummy__ +var _ m_KeyStoreErrorMessages.Dummy__ +var _ m_KmsArn.Dummy__ +var _ m_Structure.Dummy__ +var _ m_KMSKeystoreOperations.Dummy__ +var _ m_DDBKeystoreOperations.Dummy__ +var _ m_CreateKeys.Dummy__ +var _ m_CreateKeyStoreTable.Dummy__ +var _ m_GetKeys.Dummy__ +var _ m_AwsCryptographyKeyStoreOperations.Dummy__ +var _ m_KeyStore.Dummy__ +var _ m__Unicode.Dummy__ +var _ m_Functions.Dummy__ +var _ m_Utf8EncodingForm.Dummy__ +var _ m_Utf16EncodingForm.Dummy__ +var _ m_UnicodeStrings.Dummy__ +var _ m_GeneralInternals.Dummy__ +var _ m_MulInternalsNonlinear.Dummy__ +var _ m_MulInternals.Dummy__ +var _ m_Mul.Dummy__ +var _ m_ModInternalsNonlinear.Dummy__ +var _ m_DivInternalsNonlinear.Dummy__ +var _ m_ModInternals.Dummy__ +var _ m_DivInternals.Dummy__ +var _ m_DivMod.Dummy__ +var _ m_Power.Dummy__ +var _ m_Logarithm.Dummy__ +var _ m_StandardLibraryInterop.Dummy__ +var _ m_Streams.Dummy__ +var _ m_Sorting.Dummy__ +var _ m_HexStrings.Dummy__ +var _ m_GetOpt.Dummy__ +var _ m_FloatCompare.Dummy__ +var _ m_Base64Lemmas.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Dummy__ +var _ m_StructuredEncryptionUtil.Dummy__ +var _ m_Sets.Dummy__ +var _ m_StructuredEncryptionPaths.Dummy__ +var _ m_StructuredEncryptionHeader.Dummy__ +var _ m_StructuredEncryptionFooter.Dummy__ +var _ m_OptimizedMergeSort.Dummy__ +var _ m_SortCanon.Dummy__ +var _ m_Canonize.Dummy__ +var _ m_StructuredEncryptionCrypt.Dummy__ +var _ m__Maps.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations.Dummy__ +var _ m_StructuredEncryption.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbTypes.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Dummy__ +var _ m_DynamoDbEncryptionUtil.Dummy__ +var _ m_DynamoDbNormalizeNumber.Dummy__ +var _ m_DynamoToStruct.Dummy__ +var _ m_DynamoDbItemEncryptorUtil.Dummy__ +var _ m_InternalLegacyOverride.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations.Dummy__ +var _ m_DynamoDbItemEncryptor.Dummy__ +var _ m_DynamoDbEncryptionBranchKeyIdSupplier.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbOperations.Dummy__ +var _ m_DynamoDbEncryption.Dummy__ +var _ m_TermLoc.Dummy__ +var _ m_DdbVirtualFields.Dummy__ +var _ m_DynamoDbUpdateExpr.Dummy__ +var _ m_BaseBeacon.Dummy__ +var _ m_CompoundBeacon.Dummy__ +var _ m_SearchableEncryptionInfo.Dummy__ +var _ m_DynamoDBFilterExpr.Dummy__ +var _ m_DynamoDBSupport.Dummy__ +var _ m_SearchConfigToInfo.Dummy__ +var _ m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Dummy__ +var _ m_DdbMiddlewareConfig.Dummy__ +var _ m_DdbStatement.Dummy__ +var _ m_DynamoDbMiddlewareSupport.Dummy__ +var _ m_PutItemTransform.Dummy__ +var _ m_GetItemTransform.Dummy__ + +type Dummy__ struct{} + +// Definition of class Default__ +type Default__ struct { + dummy byte +} + +func New_Default___() *Default__ { + _this := Default__{} + + return &_this +} + +type CompanionStruct_Default___ struct { +} + +var Companion_Default___ = CompanionStruct_Default___{} + +func (_this *Default__) Equals(other *Default__) bool { + return _this == other +} + +func (_this *Default__) EqualsGeneric(x interface{}) bool { + other, ok := x.(*Default__) + return ok && _this.Equals(other) +} + +func (*Default__) String() string { + return "UpdateItemTransform.Default__" +} +func (_this *Default__) ParentTraits_() []*_dafny.TraitID { + return [](*_dafny.TraitID){} +} + +var _ _dafny.TraitOffspring = &Default__{} + +func (_static *CompanionStruct_Default___) Input(config m_DdbMiddlewareConfig.Config, input m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.UpdateItemInputTransformInput) m_Wrappers.Result { + var output m_Wrappers.Result = m_Wrappers.Result{} + _ = output + if ((config).Dtor_tableEncryptionConfigs()).Contains(((input).Dtor_sdkInput()).Dtor_TableName()) { + var _0_valueOrError0 m_Wrappers.Outcome = m_Wrappers.Companion_Outcome_.Default() + _ = _0_valueOrError0 + _0_valueOrError0 = m_Wrappers.Companion_Default___.Need(m_DynamoDbMiddlewareSupport.Companion_Default___.NoMap(((input).Dtor_sdkInput()).Dtor_Expected()), m_DdbMiddlewareConfig.Companion_Default___.E(_dafny.SeqOfString("Legacy parameter 'Expected' not supported in UpdateItem with Encryption"))) + if (_0_valueOrError0).IsFailure() { + output = (_0_valueOrError0).PropagateFailure() + return output + } + var _1_valueOrError1 m_Wrappers.Outcome = m_Wrappers.Companion_Outcome_.Default() + _ = _1_valueOrError1 + _1_valueOrError1 = m_Wrappers.Companion_Default___.Need(m_DynamoDbMiddlewareSupport.Companion_Default___.NoMap(((input).Dtor_sdkInput()).Dtor_AttributeUpdates()), m_DdbMiddlewareConfig.Companion_Default___.E(_dafny.SeqOfString("Legacy parameter 'AttributeUpdates' not supported in UpdateItem with Encryption"))) + if (_1_valueOrError1).IsFailure() { + output = (_1_valueOrError1).PropagateFailure() + return output + } + var _2_valueOrError2 m_Wrappers.Outcome = m_Wrappers.Companion_Outcome_.Default() + _ = _2_valueOrError2 + _2_valueOrError2 = m_Wrappers.Companion_Default___.Need((((input).Dtor_sdkInput()).Dtor_ConditionalOperator()).Is_None(), m_DdbMiddlewareConfig.Companion_Default___.E(_dafny.SeqOfString("Legacy parameter 'ConditionalOperator' not supported in UpdateItem with Encryption"))) + if (_2_valueOrError2).IsFailure() { + output = (_2_valueOrError2).PropagateFailure() + return output + } + var _3_tableConfig m_DdbMiddlewareConfig.TableConfig + _ = _3_tableConfig + _3_tableConfig = ((config).Dtor_tableEncryptionConfigs()).Get(((input).Dtor_sdkInput()).Dtor_TableName()).(m_DdbMiddlewareConfig.TableConfig) + var _4_valueOrError3 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(false) + _ = _4_valueOrError3 + _4_valueOrError3 = m_DynamoDbMiddlewareSupport.Companion_Default___.TestUpdateExpression(_3_tableConfig, ((input).Dtor_sdkInput()).Dtor_UpdateExpression(), ((input).Dtor_sdkInput()).Dtor_ExpressionAttributeNames(), ((input).Dtor_sdkInput()).Dtor_ExpressionAttributeValues()) + if (_4_valueOrError3).IsFailure() { + output = (_4_valueOrError3).PropagateFailure() + return output + } + var _5___v0 bool + _ = _5___v0 + _5___v0 = (_4_valueOrError3).Extract().(bool) + } + output = m_Wrappers.Companion_Result_.Create_Success_(m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_UpdateItemInputTransformOutput_.Create_UpdateItemInputTransformOutput_((input).Dtor_sdkInput())) + return output + return output +} +func (_static *CompanionStruct_Default___) Output(config m_DdbMiddlewareConfig.Config, input m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.UpdateItemOutputTransformInput) m_Wrappers.Result { + var output m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_UpdateItemOutputTransformOutput_.Default()) + _ = output + var _0_tableName _dafny.Sequence + _ = _0_tableName + _0_tableName = ((input).Dtor_originalInput()).Dtor_TableName() + if (!((config).Dtor_tableEncryptionConfigs()).Contains(_0_tableName)) || (m_DynamoDbMiddlewareSupport.Companion_Default___.NoMap(((input).Dtor_sdkOutput()).Dtor_Attributes())) { + output = m_Wrappers.Companion_Result_.Create_Success_(m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_UpdateItemOutputTransformOutput_.Create_UpdateItemOutputTransformOutput_((input).Dtor_sdkOutput())) + return output + } + var _1_tableConfig m_DdbMiddlewareConfig.TableConfig + _ = _1_tableConfig + _1_tableConfig = ((config).Dtor_tableEncryptionConfigs()).Get(_0_tableName).(m_DdbMiddlewareConfig.TableConfig) + var _2_attributes _dafny.Map + _ = _2_attributes + _2_attributes = (((input).Dtor_sdkOutput()).Dtor_Attributes()).Dtor_value().(_dafny.Map) + if !(((((input).Dtor_originalInput()).Dtor_ReturnValues()).Is_Some()) && ((((((input).Dtor_originalInput()).Dtor_ReturnValues()).Dtor_value().(m_ComAmazonawsDynamodbTypes.ReturnValue)).Is_ALL__NEW()) || (((((input).Dtor_originalInput()).Dtor_ReturnValues()).Dtor_value().(m_ComAmazonawsDynamodbTypes.ReturnValue)).Is_ALL__OLD()))) { + var _3_valueOrError0 m_Wrappers.Outcome = m_Wrappers.Companion_Outcome_.Default() + _ = _3_valueOrError0 + _3_valueOrError0 = m_Wrappers.Companion_Default___.Need(_dafny.Quantifier(((_2_attributes).Keys()).Elements(), true, func(_forall_var_0 _dafny.Sequence) bool { + var _4_k _dafny.Sequence + _4_k = interface{}(_forall_var_0).(_dafny.Sequence) + return !(((_2_attributes).Keys()).Contains(_4_k)) || (!(m_DynamoDbMiddlewareSupport.Companion_Default___.IsSigned(_1_tableConfig, _4_k))) + }), m_DdbMiddlewareConfig.Companion_Default___.E(_dafny.SeqOfString("UpdateItems response contains signed attributes, but does not include the entire item which is required for verification."))) + if (_3_valueOrError0).IsFailure() { + output = (_3_valueOrError0).PropagateFailure() + return output + } + output = m_Wrappers.Companion_Result_.Create_Success_(m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_UpdateItemOutputTransformOutput_.Create_UpdateItemOutputTransformOutput_((input).Dtor_sdkOutput())) + return output + } + var _5_decryptRes m_Wrappers.Result + _ = _5_decryptRes + var _out0 m_Wrappers.Result + _ = _out0 + _out0 = ((_1_tableConfig).Dtor_itemEncryptor()).DecryptItem(m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Companion_DecryptItemInput_.Create_DecryptItemInput_(_2_attributes)) + _5_decryptRes = _out0 + var _6_valueOrError1 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Companion_DecryptItemOutput_.Default()) + _ = _6_valueOrError1 + _6_valueOrError1 = m_DdbMiddlewareConfig.Companion_Default___.MapError(_5_decryptRes) + if (_6_valueOrError1).IsFailure() { + output = (_6_valueOrError1).PropagateFailure() + return output + } + var _7_decrypted m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.DecryptItemOutput + _ = _7_decrypted + _7_decrypted = (_6_valueOrError1).Extract().(m_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.DecryptItemOutput) + var _8_valueOrError2 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(_dafny.EmptyMap) + _ = _8_valueOrError2 + _8_valueOrError2 = m_DynamoDbMiddlewareSupport.Companion_Default___.RemoveBeacons(_1_tableConfig, (_7_decrypted).Dtor_plaintextItem()) + if (_8_valueOrError2).IsFailure() { + output = (_8_valueOrError2).PropagateFailure() + return output + } + var _9_item _dafny.Map + _ = _9_item + _9_item = (_8_valueOrError2).Extract().(_dafny.Map) + var _pat_let_tv0 = _9_item + _ = _pat_let_tv0 + output = m_Wrappers.Companion_Result_.Create_Success_(m_AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_UpdateItemOutputTransformOutput_.Create_UpdateItemOutputTransformOutput_(func(_pat_let29_0 m_ComAmazonawsDynamodbTypes.UpdateItemOutput) m_ComAmazonawsDynamodbTypes.UpdateItemOutput { + return func(_10_dt__update__tmp_h0 m_ComAmazonawsDynamodbTypes.UpdateItemOutput) m_ComAmazonawsDynamodbTypes.UpdateItemOutput { + return func(_pat_let30_0 m_Wrappers.Option) m_ComAmazonawsDynamodbTypes.UpdateItemOutput { + return func(_11_dt__update_hAttributes_h0 m_Wrappers.Option) m_ComAmazonawsDynamodbTypes.UpdateItemOutput { + return m_ComAmazonawsDynamodbTypes.Companion_UpdateItemOutput_.Create_UpdateItemOutput_(_11_dt__update_hAttributes_h0, (_10_dt__update__tmp_h0).Dtor_ConsumedCapacity(), (_10_dt__update__tmp_h0).Dtor_ItemCollectionMetrics()) + }(_pat_let30_0) + }(m_Wrappers.Companion_Option_.Create_Some_(_pat_let_tv0)) + }(_pat_let29_0) + }((input).Dtor_sdkOutput()))) + return output + return output +} + +// End of class Default__ diff --git a/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkdynamodbitemencryptorsmithygenerated/api_client.go b/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkdynamodbitemencryptorsmithygenerated/api_client.go new file mode 100644 index 000000000..1b530d573 --- /dev/null +++ b/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkdynamodbitemencryptorsmithygenerated/api_client.go @@ -0,0 +1,68 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package awscryptographydbencryptionsdkdynamodbitemencryptorsmithygenerated + +import ( + "context" + + "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes" + "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbItemEncryptor" + "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkdynamodbitemencryptorsmithygeneratedtypes" +) + +type Client struct { + DafnyClient AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.IDynamoDbItemEncryptorClient +} + +func NewClient(clientConfig awscryptographydbencryptionsdkdynamodbitemencryptorsmithygeneratedtypes.DynamoDbItemEncryptorConfig) (*Client, error) { + var dafnyConfig = DynamoDbItemEncryptorConfig_ToDafny(clientConfig) + var dafny_response = DynamoDbItemEncryptor.Companion_Default___.DynamoDbItemEncryptor(dafnyConfig) + if dafny_response.Is_Failure() { + panic("Client construction failed. This should never happen") + } + var dafnyClient = dafny_response.Extract().(AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.IDynamoDbItemEncryptorClient) + client := &Client{dafnyClient} + return client, nil +} + +func (client *Client) EncryptItem(ctx context.Context, params awscryptographydbencryptionsdkdynamodbitemencryptorsmithygeneratedtypes.EncryptItemInput) (*awscryptographydbencryptionsdkdynamodbitemencryptorsmithygeneratedtypes.EncryptItemOutput, error) { + err := params.Validate() + if err != nil { + opaqueErr := awscryptographydbencryptionsdkdynamodbitemencryptorsmithygeneratedtypes.OpaqueError{ + ErrObject: err, + } + return nil, opaqueErr + } + + var dafny_request AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.EncryptItemInput = EncryptItemInput_ToDafny(params) + var dafny_response = client.DafnyClient.EncryptItem(dafny_request) + + if dafny_response.Is_Failure() { + err := dafny_response.Dtor_error().(AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Error) + return nil, Error_FromDafny(err) + } + var native_response = EncryptItemOutput_FromDafny(dafny_response.Dtor_value().(AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.EncryptItemOutput)) + return &native_response, nil + +} + +func (client *Client) DecryptItem(ctx context.Context, params awscryptographydbencryptionsdkdynamodbitemencryptorsmithygeneratedtypes.DecryptItemInput) (*awscryptographydbencryptionsdkdynamodbitemencryptorsmithygeneratedtypes.DecryptItemOutput, error) { + err := params.Validate() + if err != nil { + opaqueErr := awscryptographydbencryptionsdkdynamodbitemencryptorsmithygeneratedtypes.OpaqueError{ + ErrObject: err, + } + return nil, opaqueErr + } + + var dafny_request AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.DecryptItemInput = DecryptItemInput_ToDafny(params) + var dafny_response = client.DafnyClient.DecryptItem(dafny_request) + + if dafny_response.Is_Failure() { + err := dafny_response.Dtor_error().(AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Error) + return nil, Error_FromDafny(err) + } + var native_response = DecryptItemOutput_FromDafny(dafny_response.Dtor_value().(AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.DecryptItemOutput)) + return &native_response, nil + +} diff --git a/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkdynamodbitemencryptorsmithygenerated/to_dafny.go b/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkdynamodbitemencryptorsmithygenerated/to_dafny.go new file mode 100644 index 000000000..984c0e889 --- /dev/null +++ b/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkdynamodbitemencryptorsmithygenerated/to_dafny.go @@ -0,0 +1,437 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package awscryptographydbencryptionsdkdynamodbitemencryptorsmithygenerated + +import ( + "github.com/aws/aws-cryptographic-material-providers-library/releases/go/dynamodb/comamazonawsdynamodbsmithygenerated" + "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyMaterialProvidersTypes" + "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/awscryptographymaterialproviderssmithygenerated" + "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/awscryptographymaterialproviderssmithygeneratedtypes" + "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/awscryptographyprimitivessmithygenerated" + "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/awscryptographyprimitivessmithygeneratedtypes" + "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/UTF8" + "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Wrappers" + "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes" + "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbTypes" + "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkdynamodbitemencryptorsmithygeneratedtypes" + "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkdynamodbsmithygenerated" + "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes" + "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkstructuredencryptionsmithygenerated" + "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes" + dynamodbtypes "github.com/aws/aws-sdk-go-v2/service/dynamodb/types" + "github.com/aws/smithy-go" + "github.com/dafny-lang/DafnyRuntimeGo/v4/dafny" +) + +func DecryptItemInput_ToDafny(nativeInput awscryptographydbencryptionsdkdynamodbitemencryptorsmithygeneratedtypes.DecryptItemInput) AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.DecryptItemInput { + + return func() AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.DecryptItemInput { + + return AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Companion_DecryptItemInput_.Create_DecryptItemInput_(Aws_cryptography_dbEncryptionSdk_dynamoDb_itemEncryptor_DecryptItemInput_encryptedItem_ToDafny(nativeInput.EncryptedItem)) + }() + +} + +func DecryptItemOutput_ToDafny(nativeOutput awscryptographydbencryptionsdkdynamodbitemencryptorsmithygeneratedtypes.DecryptItemOutput) AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.DecryptItemOutput { + + return func() AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.DecryptItemOutput { + + return AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Companion_DecryptItemOutput_.Create_DecryptItemOutput_(Aws_cryptography_dbEncryptionSdk_dynamoDb_itemEncryptor_DecryptItemOutput_plaintextItem_ToDafny(nativeOutput.PlaintextItem), Aws_cryptography_dbEncryptionSdk_dynamoDb_itemEncryptor_DecryptItemOutput_parsedHeader_ToDafny(nativeOutput.ParsedHeader)) + }() + +} + +func EncryptItemInput_ToDafny(nativeInput awscryptographydbencryptionsdkdynamodbitemencryptorsmithygeneratedtypes.EncryptItemInput) AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.EncryptItemInput { + + return func() AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.EncryptItemInput { + + return AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Companion_EncryptItemInput_.Create_EncryptItemInput_(Aws_cryptography_dbEncryptionSdk_dynamoDb_itemEncryptor_EncryptItemInput_plaintextItem_ToDafny(nativeInput.PlaintextItem)) + }() + +} + +func EncryptItemOutput_ToDafny(nativeOutput awscryptographydbencryptionsdkdynamodbitemencryptorsmithygeneratedtypes.EncryptItemOutput) AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.EncryptItemOutput { + + return func() AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.EncryptItemOutput { + + return AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Companion_EncryptItemOutput_.Create_EncryptItemOutput_(Aws_cryptography_dbEncryptionSdk_dynamoDb_itemEncryptor_EncryptItemOutput_encryptedItem_ToDafny(nativeOutput.EncryptedItem), Aws_cryptography_dbEncryptionSdk_dynamoDb_itemEncryptor_EncryptItemOutput_parsedHeader_ToDafny(nativeOutput.ParsedHeader)) + }() + +} + +func DynamoDbItemEncryptorException_ToDafny(nativeInput awscryptographydbencryptionsdkdynamodbitemencryptorsmithygeneratedtypes.DynamoDbItemEncryptorException) AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Error { + return func() AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Error { + + return AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Companion_Error_.Create_DynamoDbItemEncryptorException_(Aws_cryptography_dbEncryptionSdk_dynamoDb_itemEncryptor_DynamoDbItemEncryptorException_message_ToDafny(nativeInput.Message)) + }() + +} + +func CollectionOfErrors_Input_ToDafny(nativeInput awscryptographydbencryptionsdkdynamodbitemencryptorsmithygeneratedtypes.CollectionOfErrors) AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Error { + var e []interface{} + for _, i2 := range nativeInput.ListOfErrors { + e = append(e, Error_ToDafny(i2)) + } + return AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Companion_Error_.Create_CollectionOfErrors_(dafny.SeqOf(e...), func() dafny.Sequence { + res, err := UTF8.DecodeFromNativeGoByteArray([]byte(nativeInput.Message)) + if err != nil { + panic("invalid utf8 input provided") + } + return res + }()) +} +func OpaqueError_Input_ToDafny(nativeInput awscryptographydbencryptionsdkdynamodbitemencryptorsmithygeneratedtypes.OpaqueError) AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Error { + return AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Companion_Error_.Create_Opaque_(nativeInput.ErrObject) +} + +func Error_ToDafny(err error) AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Error { + switch err.(type) { + // Service Errors + case awscryptographydbencryptionsdkdynamodbitemencryptorsmithygeneratedtypes.DynamoDbItemEncryptorException: + return DynamoDbItemEncryptorException_ToDafny(err.(awscryptographydbencryptionsdkdynamodbitemencryptorsmithygeneratedtypes.DynamoDbItemEncryptorException)) + + //DependentErrors + case awscryptographyprimitivessmithygeneratedtypes.AwsCryptographicPrimitivesBaseException: + return AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Companion_Error_.Create_AwsCryptographyPrimitives_(awscryptographyprimitivessmithygenerated.Error_ToDafny(err)) + + case awscryptographymaterialproviderssmithygeneratedtypes.AwsCryptographicMaterialProvidersBaseException: + return AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Companion_Error_.Create_AwsCryptographyMaterialProviders_(awscryptographymaterialproviderssmithygenerated.Error_ToDafny(err)) + + case awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.StructuredEncryptionBaseException: + return AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Companion_Error_.Create_AwsCryptographyDbEncryptionSdkStructuredEncryption_(awscryptographydbencryptionsdkstructuredencryptionsmithygenerated.Error_ToDafny(err)) + + case awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.DynamoDbEncryptionBaseException: + return AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Companion_Error_.Create_AwsCryptographyDbEncryptionSdkDynamoDb_(awscryptographydbencryptionsdkdynamodbsmithygenerated.Error_ToDafny(err)) + + case *smithy.OperationError: + if err.(*smithy.OperationError).Service() == "DynamoDB" { + DynamoDBError := comamazonawsdynamodbsmithygenerated.Error_ToDafny(err) + return AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Companion_Error_.Create_ComAmazonawsDynamodb_(DynamoDBError) + } + return AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Companion_Error_.Create_Opaque_(err) + + case smithy.APIError: + DynamoDBError := comamazonawsdynamodbsmithygenerated.Error_ToDafny(err) + if !DynamoDBError.Is_OpaqueWithText() { + return AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Companion_Error_.Create_ComAmazonawsDynamodb_(DynamoDBError) + } + return AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Companion_Error_.Create_Opaque_(err) + + //Unmodelled Errors + case awscryptographydbencryptionsdkdynamodbitemencryptorsmithygeneratedtypes.CollectionOfErrors: + return CollectionOfErrors_Input_ToDafny(err.(awscryptographydbencryptionsdkdynamodbitemencryptorsmithygeneratedtypes.CollectionOfErrors)) + + default: + error, ok := err.(awscryptographydbencryptionsdkdynamodbitemencryptorsmithygeneratedtypes.OpaqueError) + if !ok { + panic("Error is not an OpaqueError") + } + return OpaqueError_Input_ToDafny(error) + } +} + +func DynamoDbItemEncryptorConfig_ToDafny(nativeInput awscryptographydbencryptionsdkdynamodbitemencryptorsmithygeneratedtypes.DynamoDbItemEncryptorConfig) AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.DynamoDbItemEncryptorConfig { + return func() AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.DynamoDbItemEncryptorConfig { + + return AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Companion_DynamoDbItemEncryptorConfig_.Create_DynamoDbItemEncryptorConfig_(Aws_cryptography_dbEncryptionSdk_dynamoDb_itemEncryptor_DynamoDbItemEncryptorConfig_logicalTableName_ToDafny(nativeInput.LogicalTableName), Aws_cryptography_dbEncryptionSdk_dynamoDb_itemEncryptor_DynamoDbItemEncryptorConfig_partitionKeyName_ToDafny(nativeInput.PartitionKeyName), Aws_cryptography_dbEncryptionSdk_dynamoDb_itemEncryptor_DynamoDbItemEncryptorConfig_sortKeyName_ToDafny(nativeInput.SortKeyName), Aws_cryptography_dbEncryptionSdk_dynamoDb_itemEncryptor_DynamoDbItemEncryptorConfig_attributeActionsOnEncrypt_ToDafny(nativeInput.AttributeActionsOnEncrypt), Aws_cryptography_dbEncryptionSdk_dynamoDb_itemEncryptor_DynamoDbItemEncryptorConfig_allowedUnsignedAttributes_ToDafny(nativeInput.AllowedUnsignedAttributes), Aws_cryptography_dbEncryptionSdk_dynamoDb_itemEncryptor_DynamoDbItemEncryptorConfig_allowedUnsignedAttributePrefix_ToDafny(nativeInput.AllowedUnsignedAttributePrefix), Aws_cryptography_dbEncryptionSdk_dynamoDb_itemEncryptor_DynamoDbItemEncryptorConfig_algorithmSuiteId_ToDafny(nativeInput.AlgorithmSuiteId), func() Wrappers.Option { + if (nativeInput.Keyring) == nil { + return Wrappers.Companion_Option_.Create_None_() + } + return Wrappers.Companion_Option_.Create_Some_(awscryptographymaterialproviderssmithygenerated.Keyring_ToDafny(nativeInput.Keyring)) + }(), func() Wrappers.Option { + if (nativeInput.Cmm) == nil { + return Wrappers.Companion_Option_.Create_None_() + } + return Wrappers.Companion_Option_.Create_Some_(awscryptographymaterialproviderssmithygenerated.CryptographicMaterialsManager_ToDafny(nativeInput.Cmm)) + }(), Aws_cryptography_dbEncryptionSdk_dynamoDb_itemEncryptor_DynamoDbItemEncryptorConfig_legacyOverride_ToDafny(nativeInput.LegacyOverride), Aws_cryptography_dbEncryptionSdk_dynamoDb_itemEncryptor_DynamoDbItemEncryptorConfig_plaintextOverride_ToDafny(nativeInput.PlaintextOverride)) + }() + +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_itemEncryptor_DecryptItemInput_encryptedItem_ToDafny(input map[string]dynamodbtypes.AttributeValue) dafny.Map { + return func() dafny.Map { + fieldValue := dafny.NewMapBuilder() + for key, val := range input { + fieldValue.Add(comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_AttributeMap_key_ToDafny(key), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_AttributeMap_value_ToDafny(val)) + } + return fieldValue.ToMap() + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_itemEncryptor_DecryptItemOutput_plaintextItem_ToDafny(input map[string]dynamodbtypes.AttributeValue) dafny.Map { + return func() dafny.Map { + fieldValue := dafny.NewMapBuilder() + for key, val := range input { + fieldValue.Add(comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_AttributeMap_key_ToDafny(key), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_AttributeMap_value_ToDafny(val)) + } + return fieldValue.ToMap() + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_itemEncryptor_DecryptItemOutput_parsedHeader_ToDafny(input *awscryptographydbencryptionsdkdynamodbitemencryptorsmithygeneratedtypes.ParsedHeader) Wrappers.Option { + return func() Wrappers.Option { + if input == nil { + return Wrappers.Companion_Option_.Create_None_() + } + return Wrappers.Companion_Option_.Create_Some_(AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Companion_ParsedHeader_.Create_ParsedHeader_(Aws_cryptography_dbEncryptionSdk_dynamoDb_itemEncryptor_ParsedHeader_attributeActionsOnEncrypt_ToDafny(input.AttributeActionsOnEncrypt), Aws_cryptography_dbEncryptionSdk_dynamoDb_itemEncryptor_ParsedHeader_algorithmSuiteId_ToDafny(input.AlgorithmSuiteId), Aws_cryptography_dbEncryptionSdk_dynamoDb_itemEncryptor_ParsedHeader_encryptedDataKeys_ToDafny(input.EncryptedDataKeys), Aws_cryptography_dbEncryptionSdk_dynamoDb_itemEncryptor_ParsedHeader_storedEncryptionContext_ToDafny(input.StoredEncryptionContext), Aws_cryptography_dbEncryptionSdk_dynamoDb_itemEncryptor_ParsedHeader_encryptionContext_ToDafny(input.EncryptionContext), Aws_cryptography_dbEncryptionSdk_dynamoDb_itemEncryptor_ParsedHeader_selectorContext_ToDafny(input.SelectorContext))) + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_itemEncryptor_ParsedHeader_attributeActionsOnEncrypt_ToDafny(input map[string]awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.CryptoAction) dafny.Map { + return func() dafny.Map { + fieldValue := dafny.NewMapBuilder() + for key, val := range input { + fieldValue.Add(awscryptographydbencryptionsdkdynamodbsmithygenerated.Aws_cryptography_dbEncryptionSdk_dynamoDb_AttributeActions_key_ToDafny(key), awscryptographydbencryptionsdkdynamodbsmithygenerated.Aws_cryptography_dbEncryptionSdk_dynamoDb_AttributeActions_value_ToDafny(val)) + } + return fieldValue.ToMap() + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_itemEncryptor_ParsedHeader_algorithmSuiteId_ToDafny(input awscryptographymaterialproviderssmithygeneratedtypes.DBEAlgorithmSuiteId) AwsCryptographyMaterialProvidersTypes.DBEAlgorithmSuiteId { + return func() AwsCryptographyMaterialProvidersTypes.DBEAlgorithmSuiteId { + + var index int + for _, enumVal := range input.Values() { + index++ + if enumVal == input { + break + } + if index == len(input.Values()) { + panic("Input value did not found in enum values") + } + + } + var enum interface{} + for allEnums, i := dafny.Iterate(AwsCryptographyMaterialProvidersTypes.CompanionStruct_DBEAlgorithmSuiteId_{}.AllSingletonConstructors()), 0; i < index; i++ { + var ok bool + enum, ok = allEnums() + if !ok { + break + } + } + return enum.(AwsCryptographyMaterialProvidersTypes.DBEAlgorithmSuiteId) + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_itemEncryptor_ParsedHeader_encryptedDataKeys_ToDafny(input []awscryptographymaterialproviderssmithygeneratedtypes.EncryptedDataKey) dafny.Sequence { + return func() dafny.Sequence { + + var fieldValue []interface{} = make([]interface{}, 0, len(input)) + for _, val := range input { + element := awscryptographymaterialproviderssmithygenerated.Aws_cryptography_materialProviders_EncryptedDataKeyList_member_ToDafny(val) + fieldValue = append(fieldValue, element) + } + return dafny.SeqOf(fieldValue...) + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_itemEncryptor_ParsedHeader_storedEncryptionContext_ToDafny(input map[string]string) dafny.Map { + return func() dafny.Map { + fieldValue := dafny.NewMapBuilder() + for key, val := range input { + fieldValue.Add(awscryptographymaterialproviderssmithygenerated.Aws_cryptography_materialProviders_EncryptionContext_key_ToDafny(key), awscryptographymaterialproviderssmithygenerated.Aws_cryptography_materialProviders_EncryptionContext_value_ToDafny(val)) + } + return fieldValue.ToMap() + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_itemEncryptor_ParsedHeader_encryptionContext_ToDafny(input map[string]string) dafny.Map { + return func() dafny.Map { + fieldValue := dafny.NewMapBuilder() + for key, val := range input { + fieldValue.Add(awscryptographymaterialproviderssmithygenerated.Aws_cryptography_materialProviders_EncryptionContext_key_ToDafny(key), awscryptographymaterialproviderssmithygenerated.Aws_cryptography_materialProviders_EncryptionContext_value_ToDafny(val)) + } + return fieldValue.ToMap() + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_itemEncryptor_ParsedHeader_selectorContext_ToDafny(input map[string]dynamodbtypes.AttributeValue) dafny.Map { + return func() dafny.Map { + fieldValue := dafny.NewMapBuilder() + for key, val := range input { + fieldValue.Add(comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_Key_key_ToDafny(key), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_Key_value_ToDafny(val)) + } + return fieldValue.ToMap() + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_itemEncryptor_EncryptItemInput_plaintextItem_ToDafny(input map[string]dynamodbtypes.AttributeValue) dafny.Map { + return func() dafny.Map { + fieldValue := dafny.NewMapBuilder() + for key, val := range input { + fieldValue.Add(comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_AttributeMap_key_ToDafny(key), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_AttributeMap_value_ToDafny(val)) + } + return fieldValue.ToMap() + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_itemEncryptor_EncryptItemOutput_encryptedItem_ToDafny(input map[string]dynamodbtypes.AttributeValue) dafny.Map { + return func() dafny.Map { + fieldValue := dafny.NewMapBuilder() + for key, val := range input { + fieldValue.Add(comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_AttributeMap_key_ToDafny(key), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_AttributeMap_value_ToDafny(val)) + } + return fieldValue.ToMap() + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_itemEncryptor_EncryptItemOutput_parsedHeader_ToDafny(input *awscryptographydbencryptionsdkdynamodbitemencryptorsmithygeneratedtypes.ParsedHeader) Wrappers.Option { + return func() Wrappers.Option { + if input == nil { + return Wrappers.Companion_Option_.Create_None_() + } + return Wrappers.Companion_Option_.Create_Some_(AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Companion_ParsedHeader_.Create_ParsedHeader_(Aws_cryptography_dbEncryptionSdk_dynamoDb_itemEncryptor_ParsedHeader_attributeActionsOnEncrypt_ToDafny(input.AttributeActionsOnEncrypt), Aws_cryptography_dbEncryptionSdk_dynamoDb_itemEncryptor_ParsedHeader_algorithmSuiteId_ToDafny(input.AlgorithmSuiteId), Aws_cryptography_dbEncryptionSdk_dynamoDb_itemEncryptor_ParsedHeader_encryptedDataKeys_ToDafny(input.EncryptedDataKeys), Aws_cryptography_dbEncryptionSdk_dynamoDb_itemEncryptor_ParsedHeader_storedEncryptionContext_ToDafny(input.StoredEncryptionContext), Aws_cryptography_dbEncryptionSdk_dynamoDb_itemEncryptor_ParsedHeader_encryptionContext_ToDafny(input.EncryptionContext), Aws_cryptography_dbEncryptionSdk_dynamoDb_itemEncryptor_ParsedHeader_selectorContext_ToDafny(input.SelectorContext))) + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_itemEncryptor_DynamoDbItemEncryptorException_message_ToDafny(input string) dafny.Sequence { + return func() dafny.Sequence { + + return func() dafny.Sequence { + res, err := UTF8.DecodeFromNativeGoByteArray([]byte(input)) + if err != nil { + panic("invalid utf8 input provided") + } + return res + }() + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_itemEncryptor_DynamoDbItemEncryptorConfig_logicalTableName_ToDafny(input string) dafny.Sequence { + return func() dafny.Sequence { + + return func() dafny.Sequence { + res, err := UTF8.DecodeFromNativeGoByteArray([]byte(input)) + if err != nil { + panic("invalid utf8 input provided") + } + return res + }() + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_itemEncryptor_DynamoDbItemEncryptorConfig_partitionKeyName_ToDafny(input string) dafny.Sequence { + return func() dafny.Sequence { + + return func() dafny.Sequence { + res, err := UTF8.DecodeFromNativeGoByteArray([]byte(input)) + if err != nil { + panic("invalid utf8 input provided") + } + return res + }() + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_itemEncryptor_DynamoDbItemEncryptorConfig_sortKeyName_ToDafny(input *string) Wrappers.Option { + return func() Wrappers.Option { + if input == nil { + return Wrappers.Companion_Option_.Create_None_() + } + return Wrappers.Companion_Option_.Create_Some_(func() dafny.Sequence { + res, err := UTF8.DecodeFromNativeGoByteArray([]byte(*input)) + if err != nil { + panic("invalid utf8 input provided") + } + return res + }()) + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_itemEncryptor_DynamoDbItemEncryptorConfig_attributeActionsOnEncrypt_ToDafny(input map[string]awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.CryptoAction) dafny.Map { + return func() dafny.Map { + fieldValue := dafny.NewMapBuilder() + for key, val := range input { + fieldValue.Add(awscryptographydbencryptionsdkdynamodbsmithygenerated.Aws_cryptography_dbEncryptionSdk_dynamoDb_AttributeActions_key_ToDafny(key), awscryptographydbencryptionsdkdynamodbsmithygenerated.Aws_cryptography_dbEncryptionSdk_dynamoDb_AttributeActions_value_ToDafny(val)) + } + return fieldValue.ToMap() + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_itemEncryptor_DynamoDbItemEncryptorConfig_allowedUnsignedAttributes_ToDafny(input []string) Wrappers.Option { + return func() Wrappers.Option { + if input == nil { + return Wrappers.Companion_Option_.Create_None_() + } + var fieldValue []interface{} = make([]interface{}, 0, len(input)) + for _, val := range input { + element := comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_AttributeNameList_member_ToDafny(val) + fieldValue = append(fieldValue, element) + } + return Wrappers.Companion_Option_.Create_Some_(dafny.SeqOf(fieldValue...)) + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_itemEncryptor_DynamoDbItemEncryptorConfig_allowedUnsignedAttributePrefix_ToDafny(input *string) Wrappers.Option { + return func() Wrappers.Option { + if input == nil { + return Wrappers.Companion_Option_.Create_None_() + } + return Wrappers.Companion_Option_.Create_Some_(func() dafny.Sequence { + res, err := UTF8.DecodeFromNativeGoByteArray([]byte(*input)) + if err != nil { + panic("invalid utf8 input provided") + } + return res + }()) + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_itemEncryptor_DynamoDbItemEncryptorConfig_algorithmSuiteId_ToDafny(input *awscryptographymaterialproviderssmithygeneratedtypes.DBEAlgorithmSuiteId) Wrappers.Option { + return func() Wrappers.Option { + if input == nil { + return Wrappers.Companion_Option_.Create_None_() + } + var index int + for _, enumVal := range input.Values() { + index++ + if enumVal == *input { + break + } + + } + var enum interface{} + for allEnums, i := dafny.Iterate(AwsCryptographyMaterialProvidersTypes.CompanionStruct_DBEAlgorithmSuiteId_{}.AllSingletonConstructors()), 0; i < index; i++ { + var ok bool + enum, ok = allEnums() + if !ok { + break + } + } + return Wrappers.Companion_Option_.Create_Some_(enum.(AwsCryptographyMaterialProvidersTypes.DBEAlgorithmSuiteId)) + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_itemEncryptor_DynamoDbItemEncryptorConfig_legacyOverride_ToDafny(input *awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.LegacyOverride) Wrappers.Option { + return func() Wrappers.Option { + if input == nil { + return Wrappers.Companion_Option_.Create_None_() + } + return Wrappers.Companion_Option_.Create_Some_(AwsCryptographyDbEncryptionSdkDynamoDbTypes.Companion_LegacyOverride_.Create_LegacyOverride_(awscryptographydbencryptionsdkdynamodbsmithygenerated.Aws_cryptography_dbEncryptionSdk_dynamoDb_LegacyOverride_policy_ToDafny(input.Policy), awscryptographydbencryptionsdkdynamodbsmithygenerated.LegacyDynamoDbEncryptor_ToDafny(input.Encryptor), awscryptographydbencryptionsdkdynamodbsmithygenerated.Aws_cryptography_dbEncryptionSdk_dynamoDb_LegacyOverride_attributeActionsOnEncrypt_ToDafny(input.AttributeActionsOnEncrypt), awscryptographydbencryptionsdkdynamodbsmithygenerated.Aws_cryptography_dbEncryptionSdk_dynamoDb_LegacyOverride_defaultAttributeFlag_ToDafny(input.DefaultAttributeFlag))) + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_itemEncryptor_DynamoDbItemEncryptorConfig_plaintextOverride_ToDafny(input *awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.PlaintextOverride) Wrappers.Option { + return func() Wrappers.Option { + if input == nil { + return Wrappers.Companion_Option_.Create_None_() + } + var index int + for _, enumVal := range input.Values() { + index++ + if enumVal == *input { + break + } + + } + var enum interface{} + for allEnums, i := dafny.Iterate(AwsCryptographyDbEncryptionSdkDynamoDbTypes.CompanionStruct_PlaintextOverride_{}.AllSingletonConstructors()), 0; i < index; i++ { + var ok bool + enum, ok = allEnums() + if !ok { + break + } + } + return Wrappers.Companion_Option_.Create_Some_(enum.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.PlaintextOverride)) + }() +} diff --git a/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkdynamodbitemencryptorsmithygenerated/to_native.go b/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkdynamodbitemencryptorsmithygenerated/to_native.go new file mode 100644 index 000000000..0bdac67d0 --- /dev/null +++ b/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkdynamodbitemencryptorsmithygenerated/to_native.go @@ -0,0 +1,447 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package awscryptographydbencryptionsdkdynamodbitemencryptorsmithygenerated + +import ( + "github.com/aws/aws-cryptographic-material-providers-library/releases/go/dynamodb/comamazonawsdynamodbsmithygenerated" + "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyMaterialProvidersTypes" + "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/awscryptographymaterialproviderssmithygenerated" + "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/awscryptographymaterialproviderssmithygeneratedtypes" + "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/awscryptographyprimitivessmithygenerated" + "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/UTF8" + "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes" + "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbTypes" + "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkdynamodbitemencryptorsmithygeneratedtypes" + "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkdynamodbsmithygenerated" + "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes" + "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkstructuredencryptionsmithygenerated" + "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes" + dynamodbtypes "github.com/aws/aws-sdk-go-v2/service/dynamodb/types" + "github.com/dafny-lang/DafnyRuntimeGo/v4/dafny" +) + +func DecryptItemInput_FromDafny(dafnyInput AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.DecryptItemInput) awscryptographydbencryptionsdkdynamodbitemencryptorsmithygeneratedtypes.DecryptItemInput { + + return awscryptographydbencryptionsdkdynamodbitemencryptorsmithygeneratedtypes.DecryptItemInput{EncryptedItem: Aws_cryptography_dbEncryptionSdk_dynamoDb_itemEncryptor_DecryptItemInput_encryptedItem_FromDafny(dafnyInput.Dtor_encryptedItem())} + +} + +func DecryptItemOutput_FromDafny(dafnyOutput AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.DecryptItemOutput) awscryptographydbencryptionsdkdynamodbitemencryptorsmithygeneratedtypes.DecryptItemOutput { + + return awscryptographydbencryptionsdkdynamodbitemencryptorsmithygeneratedtypes.DecryptItemOutput{PlaintextItem: Aws_cryptography_dbEncryptionSdk_dynamoDb_itemEncryptor_DecryptItemOutput_plaintextItem_FromDafny(dafnyOutput.Dtor_plaintextItem()), + ParsedHeader: Aws_cryptography_dbEncryptionSdk_dynamoDb_itemEncryptor_DecryptItemOutput_parsedHeader_FromDafny(dafnyOutput.Dtor_parsedHeader().UnwrapOr(nil)), + } + +} + +func EncryptItemInput_FromDafny(dafnyInput AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.EncryptItemInput) awscryptographydbencryptionsdkdynamodbitemencryptorsmithygeneratedtypes.EncryptItemInput { + + return awscryptographydbencryptionsdkdynamodbitemencryptorsmithygeneratedtypes.EncryptItemInput{PlaintextItem: Aws_cryptography_dbEncryptionSdk_dynamoDb_itemEncryptor_EncryptItemInput_plaintextItem_FromDafny(dafnyInput.Dtor_plaintextItem())} + +} + +func EncryptItemOutput_FromDafny(dafnyOutput AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.EncryptItemOutput) awscryptographydbencryptionsdkdynamodbitemencryptorsmithygeneratedtypes.EncryptItemOutput { + + return awscryptographydbencryptionsdkdynamodbitemencryptorsmithygeneratedtypes.EncryptItemOutput{EncryptedItem: Aws_cryptography_dbEncryptionSdk_dynamoDb_itemEncryptor_EncryptItemOutput_encryptedItem_FromDafny(dafnyOutput.Dtor_encryptedItem()), + ParsedHeader: Aws_cryptography_dbEncryptionSdk_dynamoDb_itemEncryptor_EncryptItemOutput_parsedHeader_FromDafny(dafnyOutput.Dtor_parsedHeader().UnwrapOr(nil)), + } + +} + +func DynamoDbItemEncryptorException_FromDafny(dafnyOutput AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Error) awscryptographydbencryptionsdkdynamodbitemencryptorsmithygeneratedtypes.DynamoDbItemEncryptorException { + return awscryptographydbencryptionsdkdynamodbitemencryptorsmithygeneratedtypes.DynamoDbItemEncryptorException{Message: Aws_cryptography_dbEncryptionSdk_dynamoDb_itemEncryptor_DynamoDbItemEncryptorException_message_FromDafny(dafnyOutput.Dtor_message())} + +} + +func CollectionOfErrors_Output_FromDafny(dafnyOutput AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Error) awscryptographydbencryptionsdkdynamodbitemencryptorsmithygeneratedtypes.CollectionOfErrors { + listOfErrors := dafnyOutput.Dtor_list() + message := dafnyOutput.Dtor_message() + t := awscryptographydbencryptionsdkdynamodbitemencryptorsmithygeneratedtypes.CollectionOfErrors{} + for i := dafny.Iterate(listOfErrors); ; { + val, ok := i() + if !ok { + break + } + err := val.(AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Error) + t.ListOfErrors = append(t.ListOfErrors, Error_FromDafny(err)) + + } + t.Message = func() string { + a := UTF8.Encode(message.(dafny.Sequence)).Dtor_value() + s := string(dafny.ToByteArray(a.(dafny.Sequence))) + return s + }() + return t +} +func OpaqueError_Output_FromDafny(dafnyOutput AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Error) awscryptographydbencryptionsdkdynamodbitemencryptorsmithygeneratedtypes.OpaqueError { + return awscryptographydbencryptionsdkdynamodbitemencryptorsmithygeneratedtypes.OpaqueError{ + ErrObject: dafnyOutput.Dtor_obj(), + } +} + +func Error_FromDafny(err AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.Error) error { + // Service Errors + if err.Is_DynamoDbItemEncryptorException() { + return DynamoDbItemEncryptorException_FromDafny(err) + } + + //DependentErrors + if err.Is_AwsCryptographyPrimitives() { + return awscryptographyprimitivessmithygenerated.Error_FromDafny(err.Dtor_AwsCryptographyPrimitives()) + } + + if err.Is_ComAmazonawsDynamodb() { + return comamazonawsdynamodbsmithygenerated.Error_FromDafny(err.Dtor_ComAmazonawsDynamodb()) + } + + if err.Is_AwsCryptographyMaterialProviders() { + return awscryptographymaterialproviderssmithygenerated.Error_FromDafny(err.Dtor_AwsCryptographyMaterialProviders()) + } + + if err.Is_AwsCryptographyDbEncryptionSdkStructuredEncryption() { + return awscryptographydbencryptionsdkstructuredencryptionsmithygenerated.Error_FromDafny(err.Dtor_AwsCryptographyDbEncryptionSdkStructuredEncryption()) + } + + if err.Is_AwsCryptographyDbEncryptionSdkDynamoDb() { + return awscryptographydbencryptionsdkdynamodbsmithygenerated.Error_FromDafny(err.Dtor_AwsCryptographyDbEncryptionSdkDynamoDb()) + } + + //Unmodelled Errors + if err.Is_CollectionOfErrors() { + return CollectionOfErrors_Output_FromDafny(err) + } + + return OpaqueError_Output_FromDafny(err) +} + +func DynamoDbItemEncryptorConfig_FromDafny(dafnyOutput AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.DynamoDbItemEncryptorConfig) awscryptographydbencryptionsdkdynamodbitemencryptorsmithygeneratedtypes.DynamoDbItemEncryptorConfig { + return awscryptographydbencryptionsdkdynamodbitemencryptorsmithygeneratedtypes.DynamoDbItemEncryptorConfig{LogicalTableName: Aws_cryptography_dbEncryptionSdk_dynamoDb_itemEncryptor_DynamoDbItemEncryptorConfig_logicalTableName_FromDafny(dafnyOutput.Dtor_logicalTableName()), + PartitionKeyName: Aws_cryptography_dbEncryptionSdk_dynamoDb_itemEncryptor_DynamoDbItemEncryptorConfig_partitionKeyName_FromDafny(dafnyOutput.Dtor_partitionKeyName()), + SortKeyName: Aws_cryptography_dbEncryptionSdk_dynamoDb_itemEncryptor_DynamoDbItemEncryptorConfig_sortKeyName_FromDafny(dafnyOutput.Dtor_sortKeyName().UnwrapOr(nil)), + AttributeActionsOnEncrypt: Aws_cryptography_dbEncryptionSdk_dynamoDb_itemEncryptor_DynamoDbItemEncryptorConfig_attributeActionsOnEncrypt_FromDafny(dafnyOutput.Dtor_attributeActionsOnEncrypt()), + AllowedUnsignedAttributes: Aws_cryptography_dbEncryptionSdk_dynamoDb_itemEncryptor_DynamoDbItemEncryptorConfig_allowedUnsignedAttributes_FromDafny(dafnyOutput.Dtor_allowedUnsignedAttributes().UnwrapOr(nil)), + AllowedUnsignedAttributePrefix: Aws_cryptography_dbEncryptionSdk_dynamoDb_itemEncryptor_DynamoDbItemEncryptorConfig_allowedUnsignedAttributePrefix_FromDafny(dafnyOutput.Dtor_allowedUnsignedAttributePrefix().UnwrapOr(nil)), + AlgorithmSuiteId: Aws_cryptography_dbEncryptionSdk_dynamoDb_itemEncryptor_DynamoDbItemEncryptorConfig_algorithmSuiteId_FromDafny(dafnyOutput.Dtor_algorithmSuiteId().UnwrapOr(nil)), + Keyring: func() awscryptographymaterialproviderssmithygeneratedtypes.IKeyring { + if dafnyOutput.Dtor_keyring().UnwrapOr(nil) == nil { + return nil + } + return awscryptographymaterialproviderssmithygenerated.Keyring_FromDafny(dafnyOutput.Dtor_keyring().UnwrapOr(nil).(AwsCryptographyMaterialProvidersTypes.IKeyring)) + }(), + Cmm: func() awscryptographymaterialproviderssmithygeneratedtypes.ICryptographicMaterialsManager { + if dafnyOutput.Dtor_cmm().UnwrapOr(nil) == nil { + return nil + } + return awscryptographymaterialproviderssmithygenerated.CryptographicMaterialsManager_FromDafny(dafnyOutput.Dtor_cmm().UnwrapOr(nil).(AwsCryptographyMaterialProvidersTypes.ICryptographicMaterialsManager)) + }(), + LegacyOverride: Aws_cryptography_dbEncryptionSdk_dynamoDb_itemEncryptor_DynamoDbItemEncryptorConfig_legacyOverride_FromDafny(dafnyOutput.Dtor_legacyOverride().UnwrapOr(nil)), + PlaintextOverride: Aws_cryptography_dbEncryptionSdk_dynamoDb_itemEncryptor_DynamoDbItemEncryptorConfig_plaintextOverride_FromDafny(dafnyOutput.Dtor_plaintextOverride().UnwrapOr(nil)), + } + +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_itemEncryptor_DecryptItemInput_encryptedItem_FromDafny(input interface{}) map[string]dynamodbtypes.AttributeValue { + var m map[string]dynamodbtypes.AttributeValue = make(map[string]dynamodbtypes.AttributeValue) + if input == nil { + return nil + } + for i := dafny.Iterate(input.(dafny.Map).Items()); ; { + val, ok := i() + if !ok { + break + } + m[comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_AttributeMap_key_FromDafny((*val.(dafny.Tuple).IndexInt(0)))] = comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_AttributeMap_value_FromDafny((*val.(dafny.Tuple).IndexInt(1))) + } + return m + +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_itemEncryptor_DecryptItemOutput_plaintextItem_FromDafny(input interface{}) map[string]dynamodbtypes.AttributeValue { + var m map[string]dynamodbtypes.AttributeValue = make(map[string]dynamodbtypes.AttributeValue) + if input == nil { + return nil + } + for i := dafny.Iterate(input.(dafny.Map).Items()); ; { + val, ok := i() + if !ok { + break + } + m[comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_AttributeMap_key_FromDafny((*val.(dafny.Tuple).IndexInt(0)))] = comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_AttributeMap_value_FromDafny((*val.(dafny.Tuple).IndexInt(1))) + } + return m + +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_itemEncryptor_DecryptItemOutput_parsedHeader_FromDafny(input interface{}) *awscryptographydbencryptionsdkdynamodbitemencryptorsmithygeneratedtypes.ParsedHeader { + if input == nil { + return nil + } + return &awscryptographydbencryptionsdkdynamodbitemencryptorsmithygeneratedtypes.ParsedHeader{AttributeActionsOnEncrypt: Aws_cryptography_dbEncryptionSdk_dynamoDb_itemEncryptor_ParsedHeader_attributeActionsOnEncrypt_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.ParsedHeader).Dtor_attributeActionsOnEncrypt()), + AlgorithmSuiteId: Aws_cryptography_dbEncryptionSdk_dynamoDb_itemEncryptor_ParsedHeader_algorithmSuiteId_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.ParsedHeader).Dtor_algorithmSuiteId()), + EncryptedDataKeys: Aws_cryptography_dbEncryptionSdk_dynamoDb_itemEncryptor_ParsedHeader_encryptedDataKeys_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.ParsedHeader).Dtor_encryptedDataKeys()), + StoredEncryptionContext: Aws_cryptography_dbEncryptionSdk_dynamoDb_itemEncryptor_ParsedHeader_storedEncryptionContext_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.ParsedHeader).Dtor_storedEncryptionContext()), + EncryptionContext: Aws_cryptography_dbEncryptionSdk_dynamoDb_itemEncryptor_ParsedHeader_encryptionContext_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.ParsedHeader).Dtor_encryptionContext()), + SelectorContext: Aws_cryptography_dbEncryptionSdk_dynamoDb_itemEncryptor_ParsedHeader_selectorContext_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.ParsedHeader).Dtor_selectorContext()), + } +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_itemEncryptor_ParsedHeader_attributeActionsOnEncrypt_FromDafny(input interface{}) map[string]awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.CryptoAction { + var m map[string]awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.CryptoAction = make(map[string]awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.CryptoAction) + if input == nil { + return nil + } + for i := dafny.Iterate(input.(dafny.Map).Items()); ; { + val, ok := i() + if !ok { + break + } + m[awscryptographydbencryptionsdkdynamodbsmithygenerated.Aws_cryptography_dbEncryptionSdk_dynamoDb_AttributeActions_key_FromDafny((*val.(dafny.Tuple).IndexInt(0)))] = awscryptographydbencryptionsdkdynamodbsmithygenerated.Aws_cryptography_dbEncryptionSdk_dynamoDb_AttributeActions_value_FromDafny((*val.(dafny.Tuple).IndexInt(1))) + } + return m + +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_itemEncryptor_ParsedHeader_algorithmSuiteId_FromDafny(input interface{}) awscryptographymaterialproviderssmithygeneratedtypes.DBEAlgorithmSuiteId { + return func() awscryptographymaterialproviderssmithygeneratedtypes.DBEAlgorithmSuiteId { + var u awscryptographymaterialproviderssmithygeneratedtypes.DBEAlgorithmSuiteId + inputEnum := input.(AwsCryptographyMaterialProvidersTypes.DBEAlgorithmSuiteId) + index := -1 + for allEnums := dafny.Iterate(AwsCryptographyMaterialProvidersTypes.CompanionStruct_DBEAlgorithmSuiteId_{}.AllSingletonConstructors()); ; { + enum, ok := allEnums() + if ok { + index++ + if enum.(AwsCryptographyMaterialProvidersTypes.DBEAlgorithmSuiteId).Equals(inputEnum) { + break + } + } + } + + return u.Values()[index] + }() +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_itemEncryptor_ParsedHeader_encryptedDataKeys_FromDafny(input interface{}) []awscryptographymaterialproviderssmithygeneratedtypes.EncryptedDataKey { + fieldValue := make([]awscryptographymaterialproviderssmithygeneratedtypes.EncryptedDataKey, 0) + for i := dafny.Iterate(input.(dafny.Sequence)); ; { + val, ok := i() + if !ok { + break + } + fieldValue = append(fieldValue, awscryptographymaterialproviderssmithygenerated.Aws_cryptography_materialProviders_EncryptedDataKeyList_member_FromDafny(val)) + } + return fieldValue +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_itemEncryptor_ParsedHeader_storedEncryptionContext_FromDafny(input interface{}) map[string]string { + var m map[string]string = make(map[string]string) + if input == nil { + return nil + } + for i := dafny.Iterate(input.(dafny.Map).Items()); ; { + val, ok := i() + if !ok { + break + } + m[awscryptographymaterialproviderssmithygenerated.Aws_cryptography_materialProviders_EncryptionContext_key_FromDafny((*val.(dafny.Tuple).IndexInt(0)))] = awscryptographymaterialproviderssmithygenerated.Aws_cryptography_materialProviders_EncryptionContext_value_FromDafny((*val.(dafny.Tuple).IndexInt(1))) + } + return m + +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_itemEncryptor_ParsedHeader_encryptionContext_FromDafny(input interface{}) map[string]string { + var m map[string]string = make(map[string]string) + if input == nil { + return nil + } + for i := dafny.Iterate(input.(dafny.Map).Items()); ; { + val, ok := i() + if !ok { + break + } + m[awscryptographymaterialproviderssmithygenerated.Aws_cryptography_materialProviders_EncryptionContext_key_FromDafny((*val.(dafny.Tuple).IndexInt(0)))] = awscryptographymaterialproviderssmithygenerated.Aws_cryptography_materialProviders_EncryptionContext_value_FromDafny((*val.(dafny.Tuple).IndexInt(1))) + } + return m + +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_itemEncryptor_ParsedHeader_selectorContext_FromDafny(input interface{}) map[string]dynamodbtypes.AttributeValue { + var m map[string]dynamodbtypes.AttributeValue = make(map[string]dynamodbtypes.AttributeValue) + if input == nil { + return nil + } + for i := dafny.Iterate(input.(dafny.Map).Items()); ; { + val, ok := i() + if !ok { + break + } + m[comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_Key_key_FromDafny((*val.(dafny.Tuple).IndexInt(0)))] = comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_Key_value_FromDafny((*val.(dafny.Tuple).IndexInt(1))) + } + return m + +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_itemEncryptor_EncryptItemInput_plaintextItem_FromDafny(input interface{}) map[string]dynamodbtypes.AttributeValue { + var m map[string]dynamodbtypes.AttributeValue = make(map[string]dynamodbtypes.AttributeValue) + if input == nil { + return nil + } + for i := dafny.Iterate(input.(dafny.Map).Items()); ; { + val, ok := i() + if !ok { + break + } + m[comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_AttributeMap_key_FromDafny((*val.(dafny.Tuple).IndexInt(0)))] = comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_AttributeMap_value_FromDafny((*val.(dafny.Tuple).IndexInt(1))) + } + return m + +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_itemEncryptor_EncryptItemOutput_encryptedItem_FromDafny(input interface{}) map[string]dynamodbtypes.AttributeValue { + var m map[string]dynamodbtypes.AttributeValue = make(map[string]dynamodbtypes.AttributeValue) + if input == nil { + return nil + } + for i := dafny.Iterate(input.(dafny.Map).Items()); ; { + val, ok := i() + if !ok { + break + } + m[comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_AttributeMap_key_FromDafny((*val.(dafny.Tuple).IndexInt(0)))] = comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_AttributeMap_value_FromDafny((*val.(dafny.Tuple).IndexInt(1))) + } + return m + +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_itemEncryptor_EncryptItemOutput_parsedHeader_FromDafny(input interface{}) *awscryptographydbencryptionsdkdynamodbitemencryptorsmithygeneratedtypes.ParsedHeader { + if input == nil { + return nil + } + return &awscryptographydbencryptionsdkdynamodbitemencryptorsmithygeneratedtypes.ParsedHeader{AttributeActionsOnEncrypt: Aws_cryptography_dbEncryptionSdk_dynamoDb_itemEncryptor_ParsedHeader_attributeActionsOnEncrypt_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.ParsedHeader).Dtor_attributeActionsOnEncrypt()), + AlgorithmSuiteId: Aws_cryptography_dbEncryptionSdk_dynamoDb_itemEncryptor_ParsedHeader_algorithmSuiteId_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.ParsedHeader).Dtor_algorithmSuiteId()), + EncryptedDataKeys: Aws_cryptography_dbEncryptionSdk_dynamoDb_itemEncryptor_ParsedHeader_encryptedDataKeys_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.ParsedHeader).Dtor_encryptedDataKeys()), + StoredEncryptionContext: Aws_cryptography_dbEncryptionSdk_dynamoDb_itemEncryptor_ParsedHeader_storedEncryptionContext_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.ParsedHeader).Dtor_storedEncryptionContext()), + EncryptionContext: Aws_cryptography_dbEncryptionSdk_dynamoDb_itemEncryptor_ParsedHeader_encryptionContext_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.ParsedHeader).Dtor_encryptionContext()), + SelectorContext: Aws_cryptography_dbEncryptionSdk_dynamoDb_itemEncryptor_ParsedHeader_selectorContext_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorTypes.ParsedHeader).Dtor_selectorContext()), + } +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_itemEncryptor_DynamoDbItemEncryptorException_message_FromDafny(input interface{}) string { + return func() string { + + a := UTF8.Encode(input.(dafny.Sequence)).Dtor_value() + s := string(dafny.ToByteArray(a.(dafny.Sequence))) + + return s + }() +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_itemEncryptor_DynamoDbItemEncryptorConfig_logicalTableName_FromDafny(input interface{}) string { + return func() string { + + a := UTF8.Encode(input.(dafny.Sequence)).Dtor_value() + s := string(dafny.ToByteArray(a.(dafny.Sequence))) + + return s + }() +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_itemEncryptor_DynamoDbItemEncryptorConfig_partitionKeyName_FromDafny(input interface{}) string { + return func() string { + + a := UTF8.Encode(input.(dafny.Sequence)).Dtor_value() + s := string(dafny.ToByteArray(a.(dafny.Sequence))) + + return s + }() +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_itemEncryptor_DynamoDbItemEncryptorConfig_sortKeyName_FromDafny(input interface{}) *string { + return func() *string { + if input == nil { + return nil + } + + a := UTF8.Encode(input.(dafny.Sequence)).Dtor_value() + s := string(dafny.ToByteArray(a.(dafny.Sequence))) + + return &s + }() +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_itemEncryptor_DynamoDbItemEncryptorConfig_attributeActionsOnEncrypt_FromDafny(input interface{}) map[string]awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.CryptoAction { + var m map[string]awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.CryptoAction = make(map[string]awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.CryptoAction) + if input == nil { + return nil + } + for i := dafny.Iterate(input.(dafny.Map).Items()); ; { + val, ok := i() + if !ok { + break + } + m[awscryptographydbencryptionsdkdynamodbsmithygenerated.Aws_cryptography_dbEncryptionSdk_dynamoDb_AttributeActions_key_FromDafny((*val.(dafny.Tuple).IndexInt(0)))] = awscryptographydbencryptionsdkdynamodbsmithygenerated.Aws_cryptography_dbEncryptionSdk_dynamoDb_AttributeActions_value_FromDafny((*val.(dafny.Tuple).IndexInt(1))) + } + return m + +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_itemEncryptor_DynamoDbItemEncryptorConfig_allowedUnsignedAttributes_FromDafny(input interface{}) []string { + if input == nil { + return nil + } + fieldValue := make([]string, 0) + for i := dafny.Iterate(input.(dafny.Sequence)); ; { + val, ok := i() + if !ok { + break + } + fieldValue = append(fieldValue, comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_AttributeNameList_member_FromDafny(val)) + } + return fieldValue +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_itemEncryptor_DynamoDbItemEncryptorConfig_allowedUnsignedAttributePrefix_FromDafny(input interface{}) *string { + return func() *string { + if input == nil { + return nil + } + + a := UTF8.Encode(input.(dafny.Sequence)).Dtor_value() + s := string(dafny.ToByteArray(a.(dafny.Sequence))) + + return &s + }() +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_itemEncryptor_DynamoDbItemEncryptorConfig_algorithmSuiteId_FromDafny(input interface{}) *awscryptographymaterialproviderssmithygeneratedtypes.DBEAlgorithmSuiteId { + return func() *awscryptographymaterialproviderssmithygeneratedtypes.DBEAlgorithmSuiteId { + var u awscryptographymaterialproviderssmithygeneratedtypes.DBEAlgorithmSuiteId + if input == nil { + return nil + } + inputEnum := input.(AwsCryptographyMaterialProvidersTypes.DBEAlgorithmSuiteId) + index := -1 + for allEnums := dafny.Iterate(AwsCryptographyMaterialProvidersTypes.CompanionStruct_DBEAlgorithmSuiteId_{}.AllSingletonConstructors()); ; { + enum, ok := allEnums() + if ok { + index++ + if enum.(AwsCryptographyMaterialProvidersTypes.DBEAlgorithmSuiteId).Equals(inputEnum) { + break + } + } + } + + return &u.Values()[index] + }() +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_itemEncryptor_DynamoDbItemEncryptorConfig_legacyOverride_FromDafny(input interface{}) *awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.LegacyOverride { + if input == nil { + return nil + } + return &awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.LegacyOverride{Policy: awscryptographydbencryptionsdkdynamodbsmithygenerated.Aws_cryptography_dbEncryptionSdk_dynamoDb_LegacyOverride_policy_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.LegacyOverride).Dtor_policy()), + Encryptor: awscryptographydbencryptionsdkdynamodbsmithygenerated.LegacyDynamoDbEncryptor_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.LegacyOverride).Dtor_encryptor()), + AttributeActionsOnEncrypt: awscryptographydbencryptionsdkdynamodbsmithygenerated.Aws_cryptography_dbEncryptionSdk_dynamoDb_LegacyOverride_attributeActionsOnEncrypt_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.LegacyOverride).Dtor_attributeActionsOnEncrypt()), + DefaultAttributeFlag: awscryptographydbencryptionsdkdynamodbsmithygenerated.Aws_cryptography_dbEncryptionSdk_dynamoDb_LegacyOverride_defaultAttributeFlag_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.LegacyOverride).Dtor_defaultAttributeFlag().UnwrapOr(nil)), + } +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_itemEncryptor_DynamoDbItemEncryptorConfig_plaintextOverride_FromDafny(input interface{}) *awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.PlaintextOverride { + return func() *awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.PlaintextOverride { + var u awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.PlaintextOverride + if input == nil { + return nil + } + inputEnum := input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.PlaintextOverride) + index := -1 + for allEnums := dafny.Iterate(AwsCryptographyDbEncryptionSdkDynamoDbTypes.CompanionStruct_PlaintextOverride_{}.AllSingletonConstructors()); ; { + enum, ok := allEnums() + if ok { + index++ + if enum.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.PlaintextOverride).Equals(inputEnum) { + break + } + } + } + + return &u.Values()[index] + }() +} diff --git a/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkdynamodbitemencryptorsmithygeneratedtypes/errors.go b/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkdynamodbitemencryptorsmithygeneratedtypes/errors.go new file mode 100644 index 000000000..7dbd6b99e --- /dev/null +++ b/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkdynamodbitemencryptorsmithygeneratedtypes/errors.go @@ -0,0 +1,17 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package awscryptographydbencryptionsdkdynamodbitemencryptorsmithygeneratedtypes + +import ( + "fmt" +) + +type DynamoDbItemEncryptorException struct { + DynamoDbItemEncryptorBaseException + Message string + ErrorCodeOverride *string +} + +func (e DynamoDbItemEncryptorException) Error() string { + return fmt.Sprintf("%s: %s", e.ErrorCodeOverride, e.Message) +} diff --git a/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkdynamodbitemencryptorsmithygeneratedtypes/types.go b/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkdynamodbitemencryptorsmithygeneratedtypes/types.go new file mode 100644 index 000000000..35dbc82c5 --- /dev/null +++ b/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkdynamodbitemencryptorsmithygeneratedtypes/types.go @@ -0,0 +1,852 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package awscryptographydbencryptionsdkdynamodbitemencryptorsmithygeneratedtypes + +import ( + "fmt" + "unicode/utf8" + + "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/awscryptographymaterialproviderssmithygeneratedtypes" + "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes" + "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes" + dynamodbtypes "github.com/aws/aws-sdk-go-v2/service/dynamodb/types" +) + +type DecryptItemInput struct { + EncryptedItem map[string]dynamodbtypes.AttributeValue +} + +func (input DecryptItemInput) Validate() error { + if input.EncryptedItem == nil { + return fmt.Errorf("input.EncryptedItem is required but has a nil value.") + } + if input.Aws_cryptography_dbEncryptionSdk_dynamoDb_itemEncryptor_DecryptItemInput_encryptedItem_Validate() != nil { + return input.Aws_cryptography_dbEncryptionSdk_dynamoDb_itemEncryptor_DecryptItemInput_encryptedItem_Validate() + } + + return nil +} + +func (input DecryptItemInput) Com_amazonaws_dynamodb_AttributeMap_value_Validate(Value dynamodbtypes.AttributeValue) error { + if Value == nil { + return nil + } + switch unionType := Value.(type) { + case *dynamodbtypes.AttributeValueMemberS: + case *dynamodbtypes.AttributeValueMemberN: + case *dynamodbtypes.AttributeValueMemberB: + case *dynamodbtypes.AttributeValueMemberSS: + case *dynamodbtypes.AttributeValueMemberNS: + case *dynamodbtypes.AttributeValueMemberBS: + case *dynamodbtypes.AttributeValueMemberM: + case *dynamodbtypes.AttributeValueMemberL: + case *dynamodbtypes.AttributeValueMemberNULL: + case *dynamodbtypes.AttributeValueMemberBOOL: + // Default case should not be reached. + default: + panic(fmt.Sprintf("Unhandled union type: %T ", unionType)) + } + + return nil +} +func (input DecryptItemInput) Com_amazonaws_dynamodb_MapAttributeValue_value_Validate(Value dynamodbtypes.AttributeValue) error { + if Value == nil { + return nil + } + switch unionType := Value.(type) { + case *dynamodbtypes.AttributeValueMemberS: + case *dynamodbtypes.AttributeValueMemberN: + case *dynamodbtypes.AttributeValueMemberB: + case *dynamodbtypes.AttributeValueMemberSS: + case *dynamodbtypes.AttributeValueMemberNS: + case *dynamodbtypes.AttributeValueMemberBS: + case *dynamodbtypes.AttributeValueMemberM: + if input.Com_amazonaws_dynamodb_AttributeValue_M_Validate(unionType.Value) != nil { + return input.Com_amazonaws_dynamodb_AttributeValue_M_Validate(unionType.Value) + } + case *dynamodbtypes.AttributeValueMemberL: + case *dynamodbtypes.AttributeValueMemberNULL: + case *dynamodbtypes.AttributeValueMemberBOOL: + // Default case should not be reached. + default: + panic(fmt.Sprintf("Unhandled union type: %T ", unionType)) + } + + return nil +} +func (input DecryptItemInput) Com_amazonaws_dynamodb_AttributeValue_M_Validate(Value map[string]dynamodbtypes.AttributeValue) error { + for key, value := range Value { + if len(key) < 0 { + return fmt.Errorf("AttributeName has a minimum length of 0 but has the length of %d.", len(key)) + } + if len(key) > 65535 { + return fmt.Errorf("AttributeName has a maximum length of 65535 but has the length of %d.", len(key)) + } + if input.Com_amazonaws_dynamodb_MapAttributeValue_value_Validate(value) != nil { + return input.Com_amazonaws_dynamodb_MapAttributeValue_value_Validate(value) + } + } + + return nil +} +func (input DecryptItemInput) Com_amazonaws_dynamodb_ListAttributeValue_member_Validate(Value dynamodbtypes.AttributeValue) error { + if Value == nil { + return nil + } + switch unionType := Value.(type) { + case *dynamodbtypes.AttributeValueMemberS: + case *dynamodbtypes.AttributeValueMemberN: + case *dynamodbtypes.AttributeValueMemberB: + case *dynamodbtypes.AttributeValueMemberSS: + case *dynamodbtypes.AttributeValueMemberNS: + case *dynamodbtypes.AttributeValueMemberBS: + case *dynamodbtypes.AttributeValueMemberM: + case *dynamodbtypes.AttributeValueMemberL: + if input.Com_amazonaws_dynamodb_AttributeValue_L_Validate(unionType.Value) != nil { + return input.Com_amazonaws_dynamodb_AttributeValue_L_Validate(unionType.Value) + } + case *dynamodbtypes.AttributeValueMemberNULL: + case *dynamodbtypes.AttributeValueMemberBOOL: + // Default case should not be reached. + default: + panic(fmt.Sprintf("Unhandled union type: %T ", unionType)) + } + + return nil +} +func (input DecryptItemInput) Com_amazonaws_dynamodb_AttributeValue_L_Validate(Value []dynamodbtypes.AttributeValue) error { + for _, item := range Value { + if input.Com_amazonaws_dynamodb_ListAttributeValue_member_Validate(item) != nil { + return input.Com_amazonaws_dynamodb_ListAttributeValue_member_Validate(item) + } + } + + return nil +} +func (input DecryptItemInput) Aws_cryptography_dbEncryptionSdk_dynamoDb_itemEncryptor_DecryptItemInput_encryptedItem_Validate() error { + for key, value := range input.EncryptedItem { + if len(key) < 0 { + return fmt.Errorf("AttributeName has a minimum length of 0 but has the length of %d.", len(key)) + } + if len(key) > 65535 { + return fmt.Errorf("AttributeName has a maximum length of 65535 but has the length of %d.", len(key)) + } + if input.Com_amazonaws_dynamodb_AttributeMap_value_Validate(value) != nil { + return input.Com_amazonaws_dynamodb_AttributeMap_value_Validate(value) + } + } + + return nil +} + +type EncryptItemInput struct { + PlaintextItem map[string]dynamodbtypes.AttributeValue +} + +func (input EncryptItemInput) Validate() error { + if input.PlaintextItem == nil { + return fmt.Errorf("input.PlaintextItem is required but has a nil value.") + } + if input.Aws_cryptography_dbEncryptionSdk_dynamoDb_itemEncryptor_EncryptItemInput_plaintextItem_Validate() != nil { + return input.Aws_cryptography_dbEncryptionSdk_dynamoDb_itemEncryptor_EncryptItemInput_plaintextItem_Validate() + } + + return nil +} + +func (input EncryptItemInput) Com_amazonaws_dynamodb_AttributeMap_value_Validate(Value dynamodbtypes.AttributeValue) error { + if Value == nil { + return nil + } + switch unionType := Value.(type) { + case *dynamodbtypes.AttributeValueMemberS: + case *dynamodbtypes.AttributeValueMemberN: + case *dynamodbtypes.AttributeValueMemberB: + case *dynamodbtypes.AttributeValueMemberSS: + case *dynamodbtypes.AttributeValueMemberNS: + case *dynamodbtypes.AttributeValueMemberBS: + case *dynamodbtypes.AttributeValueMemberM: + case *dynamodbtypes.AttributeValueMemberL: + case *dynamodbtypes.AttributeValueMemberNULL: + case *dynamodbtypes.AttributeValueMemberBOOL: + // Default case should not be reached. + default: + panic(fmt.Sprintf("Unhandled union type: %T ", unionType)) + } + + return nil +} +func (input EncryptItemInput) Com_amazonaws_dynamodb_MapAttributeValue_value_Validate(Value dynamodbtypes.AttributeValue) error { + if Value == nil { + return nil + } + switch unionType := Value.(type) { + case *dynamodbtypes.AttributeValueMemberS: + case *dynamodbtypes.AttributeValueMemberN: + case *dynamodbtypes.AttributeValueMemberB: + case *dynamodbtypes.AttributeValueMemberSS: + case *dynamodbtypes.AttributeValueMemberNS: + case *dynamodbtypes.AttributeValueMemberBS: + case *dynamodbtypes.AttributeValueMemberM: + if input.Com_amazonaws_dynamodb_AttributeValue_M_Validate(unionType.Value) != nil { + return input.Com_amazonaws_dynamodb_AttributeValue_M_Validate(unionType.Value) + } + case *dynamodbtypes.AttributeValueMemberL: + case *dynamodbtypes.AttributeValueMemberNULL: + case *dynamodbtypes.AttributeValueMemberBOOL: + // Default case should not be reached. + default: + panic(fmt.Sprintf("Unhandled union type: %T ", unionType)) + } + + return nil +} +func (input EncryptItemInput) Com_amazonaws_dynamodb_AttributeValue_M_Validate(Value map[string]dynamodbtypes.AttributeValue) error { + for key, value := range Value { + if len(key) < 0 { + return fmt.Errorf("AttributeName has a minimum length of 0 but has the length of %d.", len(key)) + } + if len(key) > 65535 { + return fmt.Errorf("AttributeName has a maximum length of 65535 but has the length of %d.", len(key)) + } + if input.Com_amazonaws_dynamodb_MapAttributeValue_value_Validate(value) != nil { + return input.Com_amazonaws_dynamodb_MapAttributeValue_value_Validate(value) + } + } + + return nil +} +func (input EncryptItemInput) Com_amazonaws_dynamodb_ListAttributeValue_member_Validate(Value dynamodbtypes.AttributeValue) error { + if Value == nil { + return nil + } + switch unionType := Value.(type) { + case *dynamodbtypes.AttributeValueMemberS: + case *dynamodbtypes.AttributeValueMemberN: + case *dynamodbtypes.AttributeValueMemberB: + case *dynamodbtypes.AttributeValueMemberSS: + case *dynamodbtypes.AttributeValueMemberNS: + case *dynamodbtypes.AttributeValueMemberBS: + case *dynamodbtypes.AttributeValueMemberM: + case *dynamodbtypes.AttributeValueMemberL: + if input.Com_amazonaws_dynamodb_AttributeValue_L_Validate(unionType.Value) != nil { + return input.Com_amazonaws_dynamodb_AttributeValue_L_Validate(unionType.Value) + } + case *dynamodbtypes.AttributeValueMemberNULL: + case *dynamodbtypes.AttributeValueMemberBOOL: + // Default case should not be reached. + default: + panic(fmt.Sprintf("Unhandled union type: %T ", unionType)) + } + + return nil +} +func (input EncryptItemInput) Com_amazonaws_dynamodb_AttributeValue_L_Validate(Value []dynamodbtypes.AttributeValue) error { + for _, item := range Value { + if input.Com_amazonaws_dynamodb_ListAttributeValue_member_Validate(item) != nil { + return input.Com_amazonaws_dynamodb_ListAttributeValue_member_Validate(item) + } + } + + return nil +} +func (input EncryptItemInput) Aws_cryptography_dbEncryptionSdk_dynamoDb_itemEncryptor_EncryptItemInput_plaintextItem_Validate() error { + for key, value := range input.PlaintextItem { + if len(key) < 0 { + return fmt.Errorf("AttributeName has a minimum length of 0 but has the length of %d.", len(key)) + } + if len(key) > 65535 { + return fmt.Errorf("AttributeName has a maximum length of 65535 but has the length of %d.", len(key)) + } + if input.Com_amazonaws_dynamodb_AttributeMap_value_Validate(value) != nil { + return input.Com_amazonaws_dynamodb_AttributeMap_value_Validate(value) + } + } + + return nil +} + +type ParsedHeader struct { + AlgorithmSuiteId awscryptographymaterialproviderssmithygeneratedtypes.DBEAlgorithmSuiteId + + AttributeActionsOnEncrypt map[string]awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.CryptoAction + + EncryptedDataKeys []awscryptographymaterialproviderssmithygeneratedtypes.EncryptedDataKey + + EncryptionContext map[string]string + + SelectorContext map[string]dynamodbtypes.AttributeValue + + StoredEncryptionContext map[string]string +} + +func (input ParsedHeader) Validate() error { + if input.AttributeActionsOnEncrypt == nil { + return fmt.Errorf("input.AttributeActionsOnEncrypt is required but has a nil value.") + } + if input.Aws_cryptography_dbEncryptionSdk_dynamoDb_itemEncryptor_ParsedHeader_attributeActionsOnEncrypt_Validate() != nil { + return input.Aws_cryptography_dbEncryptionSdk_dynamoDb_itemEncryptor_ParsedHeader_attributeActionsOnEncrypt_Validate() + } + if input.EncryptedDataKeys == nil { + return fmt.Errorf("input.EncryptedDataKeys is required but has a nil value.") + } + if input.Aws_cryptography_dbEncryptionSdk_dynamoDb_itemEncryptor_ParsedHeader_encryptedDataKeys_Validate() != nil { + return input.Aws_cryptography_dbEncryptionSdk_dynamoDb_itemEncryptor_ParsedHeader_encryptedDataKeys_Validate() + } + if input.EncryptionContext == nil { + return fmt.Errorf("input.EncryptionContext is required but has a nil value.") + } + if input.Aws_cryptography_dbEncryptionSdk_dynamoDb_itemEncryptor_ParsedHeader_encryptionContext_Validate() != nil { + return input.Aws_cryptography_dbEncryptionSdk_dynamoDb_itemEncryptor_ParsedHeader_encryptionContext_Validate() + } + if input.SelectorContext == nil { + return fmt.Errorf("input.SelectorContext is required but has a nil value.") + } + if input.Aws_cryptography_dbEncryptionSdk_dynamoDb_itemEncryptor_ParsedHeader_selectorContext_Validate() != nil { + return input.Aws_cryptography_dbEncryptionSdk_dynamoDb_itemEncryptor_ParsedHeader_selectorContext_Validate() + } + if input.StoredEncryptionContext == nil { + return fmt.Errorf("input.StoredEncryptionContext is required but has a nil value.") + } + if input.Aws_cryptography_dbEncryptionSdk_dynamoDb_itemEncryptor_ParsedHeader_storedEncryptionContext_Validate() != nil { + return input.Aws_cryptography_dbEncryptionSdk_dynamoDb_itemEncryptor_ParsedHeader_storedEncryptionContext_Validate() + } + + return nil +} + +func (input ParsedHeader) Aws_cryptography_dbEncryptionSdk_dynamoDb_itemEncryptor_ParsedHeader_attributeActionsOnEncrypt_Validate() error { + for key, _ := range input.AttributeActionsOnEncrypt { + if len(key) < 0 { + return fmt.Errorf("AttributeName has a minimum length of 0 but has the length of %d.", len(key)) + } + if len(key) > 65535 { + return fmt.Errorf("AttributeName has a maximum length of 65535 but has the length of %d.", len(key)) + } + } + + return nil +} +func (input ParsedHeader) Aws_cryptography_dbEncryptionSdk_dynamoDb_itemEncryptor_ParsedHeader_encryptedDataKeys_Validate() error { + for _, item := range input.EncryptedDataKeys { + if item.Validate() != nil { + return item.Validate() + } + } + + return nil +} +func (input ParsedHeader) Aws_cryptography_dbEncryptionSdk_dynamoDb_itemEncryptor_ParsedHeader_encryptionContext_Validate() error { + for key, value := range input.EncryptionContext { + if !utf8.ValidString(key) { + return fmt.Errorf("Invalid UTF bytes %s ", key) + } + if !utf8.ValidString(value) { + return fmt.Errorf("Invalid UTF bytes %s ", value) + } + } + + return nil +} +func (input ParsedHeader) Com_amazonaws_dynamodb_Key_value_Validate(Value dynamodbtypes.AttributeValue) error { + if Value == nil { + return nil + } + switch unionType := Value.(type) { + case *dynamodbtypes.AttributeValueMemberS: + case *dynamodbtypes.AttributeValueMemberN: + case *dynamodbtypes.AttributeValueMemberB: + case *dynamodbtypes.AttributeValueMemberSS: + case *dynamodbtypes.AttributeValueMemberNS: + case *dynamodbtypes.AttributeValueMemberBS: + case *dynamodbtypes.AttributeValueMemberM: + case *dynamodbtypes.AttributeValueMemberL: + case *dynamodbtypes.AttributeValueMemberNULL: + case *dynamodbtypes.AttributeValueMemberBOOL: + // Default case should not be reached. + default: + panic(fmt.Sprintf("Unhandled union type: %T ", unionType)) + } + + return nil +} +func (input ParsedHeader) Com_amazonaws_dynamodb_MapAttributeValue_value_Validate(Value dynamodbtypes.AttributeValue) error { + if Value == nil { + return nil + } + switch unionType := Value.(type) { + case *dynamodbtypes.AttributeValueMemberS: + case *dynamodbtypes.AttributeValueMemberN: + case *dynamodbtypes.AttributeValueMemberB: + case *dynamodbtypes.AttributeValueMemberSS: + case *dynamodbtypes.AttributeValueMemberNS: + case *dynamodbtypes.AttributeValueMemberBS: + case *dynamodbtypes.AttributeValueMemberM: + if input.Com_amazonaws_dynamodb_AttributeValue_M_Validate(unionType.Value) != nil { + return input.Com_amazonaws_dynamodb_AttributeValue_M_Validate(unionType.Value) + } + case *dynamodbtypes.AttributeValueMemberL: + case *dynamodbtypes.AttributeValueMemberNULL: + case *dynamodbtypes.AttributeValueMemberBOOL: + // Default case should not be reached. + default: + panic(fmt.Sprintf("Unhandled union type: %T ", unionType)) + } + + return nil +} +func (input ParsedHeader) Com_amazonaws_dynamodb_AttributeValue_M_Validate(Value map[string]dynamodbtypes.AttributeValue) error { + for key, value := range Value { + if len(key) < 0 { + return fmt.Errorf("AttributeName has a minimum length of 0 but has the length of %d.", len(key)) + } + if len(key) > 65535 { + return fmt.Errorf("AttributeName has a maximum length of 65535 but has the length of %d.", len(key)) + } + if input.Com_amazonaws_dynamodb_MapAttributeValue_value_Validate(value) != nil { + return input.Com_amazonaws_dynamodb_MapAttributeValue_value_Validate(value) + } + } + + return nil +} +func (input ParsedHeader) Com_amazonaws_dynamodb_ListAttributeValue_member_Validate(Value dynamodbtypes.AttributeValue) error { + if Value == nil { + return nil + } + switch unionType := Value.(type) { + case *dynamodbtypes.AttributeValueMemberS: + case *dynamodbtypes.AttributeValueMemberN: + case *dynamodbtypes.AttributeValueMemberB: + case *dynamodbtypes.AttributeValueMemberSS: + case *dynamodbtypes.AttributeValueMemberNS: + case *dynamodbtypes.AttributeValueMemberBS: + case *dynamodbtypes.AttributeValueMemberM: + case *dynamodbtypes.AttributeValueMemberL: + if input.Com_amazonaws_dynamodb_AttributeValue_L_Validate(unionType.Value) != nil { + return input.Com_amazonaws_dynamodb_AttributeValue_L_Validate(unionType.Value) + } + case *dynamodbtypes.AttributeValueMemberNULL: + case *dynamodbtypes.AttributeValueMemberBOOL: + // Default case should not be reached. + default: + panic(fmt.Sprintf("Unhandled union type: %T ", unionType)) + } + + return nil +} +func (input ParsedHeader) Com_amazonaws_dynamodb_AttributeValue_L_Validate(Value []dynamodbtypes.AttributeValue) error { + for _, item := range Value { + if input.Com_amazonaws_dynamodb_ListAttributeValue_member_Validate(item) != nil { + return input.Com_amazonaws_dynamodb_ListAttributeValue_member_Validate(item) + } + } + + return nil +} +func (input ParsedHeader) Aws_cryptography_dbEncryptionSdk_dynamoDb_itemEncryptor_ParsedHeader_selectorContext_Validate() error { + for key, value := range input.SelectorContext { + if len(key) < 0 { + return fmt.Errorf("AttributeName has a minimum length of 0 but has the length of %d.", len(key)) + } + if len(key) > 65535 { + return fmt.Errorf("AttributeName has a maximum length of 65535 but has the length of %d.", len(key)) + } + if input.Com_amazonaws_dynamodb_Key_value_Validate(value) != nil { + return input.Com_amazonaws_dynamodb_Key_value_Validate(value) + } + } + + return nil +} +func (input ParsedHeader) Aws_cryptography_dbEncryptionSdk_dynamoDb_itemEncryptor_ParsedHeader_storedEncryptionContext_Validate() error { + for key, value := range input.StoredEncryptionContext { + if !utf8.ValidString(key) { + return fmt.Errorf("Invalid UTF bytes %s ", key) + } + if !utf8.ValidString(value) { + return fmt.Errorf("Invalid UTF bytes %s ", value) + } + } + + return nil +} + +type DecryptItemOutput struct { + PlaintextItem map[string]dynamodbtypes.AttributeValue + + ParsedHeader *ParsedHeader +} + +func (input DecryptItemOutput) Validate() error { + if input.PlaintextItem == nil { + return fmt.Errorf("input.PlaintextItem is required but has a nil value.") + } + if input.Aws_cryptography_dbEncryptionSdk_dynamoDb_itemEncryptor_DecryptItemOutput_plaintextItem_Validate() != nil { + return input.Aws_cryptography_dbEncryptionSdk_dynamoDb_itemEncryptor_DecryptItemOutput_plaintextItem_Validate() + } + if input.ParsedHeader != nil { + if input.ParsedHeader.Validate() != nil { + return input.ParsedHeader.Validate() + } + + } + + return nil +} + +func (input DecryptItemOutput) Com_amazonaws_dynamodb_AttributeMap_value_Validate(Value dynamodbtypes.AttributeValue) error { + if Value == nil { + return nil + } + switch unionType := Value.(type) { + case *dynamodbtypes.AttributeValueMemberS: + case *dynamodbtypes.AttributeValueMemberN: + case *dynamodbtypes.AttributeValueMemberB: + case *dynamodbtypes.AttributeValueMemberSS: + case *dynamodbtypes.AttributeValueMemberNS: + case *dynamodbtypes.AttributeValueMemberBS: + case *dynamodbtypes.AttributeValueMemberM: + case *dynamodbtypes.AttributeValueMemberL: + case *dynamodbtypes.AttributeValueMemberNULL: + case *dynamodbtypes.AttributeValueMemberBOOL: + // Default case should not be reached. + default: + panic(fmt.Sprintf("Unhandled union type: %T ", unionType)) + } + + return nil +} +func (input DecryptItemOutput) Com_amazonaws_dynamodb_MapAttributeValue_value_Validate(Value dynamodbtypes.AttributeValue) error { + if Value == nil { + return nil + } + switch unionType := Value.(type) { + case *dynamodbtypes.AttributeValueMemberS: + case *dynamodbtypes.AttributeValueMemberN: + case *dynamodbtypes.AttributeValueMemberB: + case *dynamodbtypes.AttributeValueMemberSS: + case *dynamodbtypes.AttributeValueMemberNS: + case *dynamodbtypes.AttributeValueMemberBS: + case *dynamodbtypes.AttributeValueMemberM: + if input.Com_amazonaws_dynamodb_AttributeValue_M_Validate(unionType.Value) != nil { + return input.Com_amazonaws_dynamodb_AttributeValue_M_Validate(unionType.Value) + } + case *dynamodbtypes.AttributeValueMemberL: + case *dynamodbtypes.AttributeValueMemberNULL: + case *dynamodbtypes.AttributeValueMemberBOOL: + // Default case should not be reached. + default: + panic(fmt.Sprintf("Unhandled union type: %T ", unionType)) + } + + return nil +} +func (input DecryptItemOutput) Com_amazonaws_dynamodb_AttributeValue_M_Validate(Value map[string]dynamodbtypes.AttributeValue) error { + for key, value := range Value { + if len(key) < 0 { + return fmt.Errorf("AttributeName has a minimum length of 0 but has the length of %d.", len(key)) + } + if len(key) > 65535 { + return fmt.Errorf("AttributeName has a maximum length of 65535 but has the length of %d.", len(key)) + } + if input.Com_amazonaws_dynamodb_MapAttributeValue_value_Validate(value) != nil { + return input.Com_amazonaws_dynamodb_MapAttributeValue_value_Validate(value) + } + } + + return nil +} +func (input DecryptItemOutput) Com_amazonaws_dynamodb_ListAttributeValue_member_Validate(Value dynamodbtypes.AttributeValue) error { + if Value == nil { + return nil + } + switch unionType := Value.(type) { + case *dynamodbtypes.AttributeValueMemberS: + case *dynamodbtypes.AttributeValueMemberN: + case *dynamodbtypes.AttributeValueMemberB: + case *dynamodbtypes.AttributeValueMemberSS: + case *dynamodbtypes.AttributeValueMemberNS: + case *dynamodbtypes.AttributeValueMemberBS: + case *dynamodbtypes.AttributeValueMemberM: + case *dynamodbtypes.AttributeValueMemberL: + if input.Com_amazonaws_dynamodb_AttributeValue_L_Validate(unionType.Value) != nil { + return input.Com_amazonaws_dynamodb_AttributeValue_L_Validate(unionType.Value) + } + case *dynamodbtypes.AttributeValueMemberNULL: + case *dynamodbtypes.AttributeValueMemberBOOL: + // Default case should not be reached. + default: + panic(fmt.Sprintf("Unhandled union type: %T ", unionType)) + } + + return nil +} +func (input DecryptItemOutput) Com_amazonaws_dynamodb_AttributeValue_L_Validate(Value []dynamodbtypes.AttributeValue) error { + for _, item := range Value { + if input.Com_amazonaws_dynamodb_ListAttributeValue_member_Validate(item) != nil { + return input.Com_amazonaws_dynamodb_ListAttributeValue_member_Validate(item) + } + } + + return nil +} +func (input DecryptItemOutput) Aws_cryptography_dbEncryptionSdk_dynamoDb_itemEncryptor_DecryptItemOutput_plaintextItem_Validate() error { + for key, value := range input.PlaintextItem { + if len(key) < 0 { + return fmt.Errorf("AttributeName has a minimum length of 0 but has the length of %d.", len(key)) + } + if len(key) > 65535 { + return fmt.Errorf("AttributeName has a maximum length of 65535 but has the length of %d.", len(key)) + } + if input.Com_amazonaws_dynamodb_AttributeMap_value_Validate(value) != nil { + return input.Com_amazonaws_dynamodb_AttributeMap_value_Validate(value) + } + } + + return nil +} + +type EncryptItemOutput struct { + EncryptedItem map[string]dynamodbtypes.AttributeValue + + ParsedHeader *ParsedHeader +} + +func (input EncryptItemOutput) Validate() error { + if input.EncryptedItem == nil { + return fmt.Errorf("input.EncryptedItem is required but has a nil value.") + } + if input.Aws_cryptography_dbEncryptionSdk_dynamoDb_itemEncryptor_EncryptItemOutput_encryptedItem_Validate() != nil { + return input.Aws_cryptography_dbEncryptionSdk_dynamoDb_itemEncryptor_EncryptItemOutput_encryptedItem_Validate() + } + if input.ParsedHeader != nil { + if input.ParsedHeader.Validate() != nil { + return input.ParsedHeader.Validate() + } + + } + + return nil +} + +func (input EncryptItemOutput) Com_amazonaws_dynamodb_AttributeMap_value_Validate(Value dynamodbtypes.AttributeValue) error { + if Value == nil { + return nil + } + switch unionType := Value.(type) { + case *dynamodbtypes.AttributeValueMemberS: + case *dynamodbtypes.AttributeValueMemberN: + case *dynamodbtypes.AttributeValueMemberB: + case *dynamodbtypes.AttributeValueMemberSS: + case *dynamodbtypes.AttributeValueMemberNS: + case *dynamodbtypes.AttributeValueMemberBS: + case *dynamodbtypes.AttributeValueMemberM: + case *dynamodbtypes.AttributeValueMemberL: + case *dynamodbtypes.AttributeValueMemberNULL: + case *dynamodbtypes.AttributeValueMemberBOOL: + // Default case should not be reached. + default: + panic(fmt.Sprintf("Unhandled union type: %T ", unionType)) + } + + return nil +} +func (input EncryptItemOutput) Com_amazonaws_dynamodb_MapAttributeValue_value_Validate(Value dynamodbtypes.AttributeValue) error { + if Value == nil { + return nil + } + switch unionType := Value.(type) { + case *dynamodbtypes.AttributeValueMemberS: + case *dynamodbtypes.AttributeValueMemberN: + case *dynamodbtypes.AttributeValueMemberB: + case *dynamodbtypes.AttributeValueMemberSS: + case *dynamodbtypes.AttributeValueMemberNS: + case *dynamodbtypes.AttributeValueMemberBS: + case *dynamodbtypes.AttributeValueMemberM: + if input.Com_amazonaws_dynamodb_AttributeValue_M_Validate(unionType.Value) != nil { + return input.Com_amazonaws_dynamodb_AttributeValue_M_Validate(unionType.Value) + } + case *dynamodbtypes.AttributeValueMemberL: + case *dynamodbtypes.AttributeValueMemberNULL: + case *dynamodbtypes.AttributeValueMemberBOOL: + // Default case should not be reached. + default: + panic(fmt.Sprintf("Unhandled union type: %T ", unionType)) + } + + return nil +} +func (input EncryptItemOutput) Com_amazonaws_dynamodb_AttributeValue_M_Validate(Value map[string]dynamodbtypes.AttributeValue) error { + for key, value := range Value { + if len(key) < 0 { + return fmt.Errorf("AttributeName has a minimum length of 0 but has the length of %d.", len(key)) + } + if len(key) > 65535 { + return fmt.Errorf("AttributeName has a maximum length of 65535 but has the length of %d.", len(key)) + } + if input.Com_amazonaws_dynamodb_MapAttributeValue_value_Validate(value) != nil { + return input.Com_amazonaws_dynamodb_MapAttributeValue_value_Validate(value) + } + } + + return nil +} +func (input EncryptItemOutput) Com_amazonaws_dynamodb_ListAttributeValue_member_Validate(Value dynamodbtypes.AttributeValue) error { + if Value == nil { + return nil + } + switch unionType := Value.(type) { + case *dynamodbtypes.AttributeValueMemberS: + case *dynamodbtypes.AttributeValueMemberN: + case *dynamodbtypes.AttributeValueMemberB: + case *dynamodbtypes.AttributeValueMemberSS: + case *dynamodbtypes.AttributeValueMemberNS: + case *dynamodbtypes.AttributeValueMemberBS: + case *dynamodbtypes.AttributeValueMemberM: + case *dynamodbtypes.AttributeValueMemberL: + if input.Com_amazonaws_dynamodb_AttributeValue_L_Validate(unionType.Value) != nil { + return input.Com_amazonaws_dynamodb_AttributeValue_L_Validate(unionType.Value) + } + case *dynamodbtypes.AttributeValueMemberNULL: + case *dynamodbtypes.AttributeValueMemberBOOL: + // Default case should not be reached. + default: + panic(fmt.Sprintf("Unhandled union type: %T ", unionType)) + } + + return nil +} +func (input EncryptItemOutput) Com_amazonaws_dynamodb_AttributeValue_L_Validate(Value []dynamodbtypes.AttributeValue) error { + for _, item := range Value { + if input.Com_amazonaws_dynamodb_ListAttributeValue_member_Validate(item) != nil { + return input.Com_amazonaws_dynamodb_ListAttributeValue_member_Validate(item) + } + } + + return nil +} +func (input EncryptItemOutput) Aws_cryptography_dbEncryptionSdk_dynamoDb_itemEncryptor_EncryptItemOutput_encryptedItem_Validate() error { + for key, value := range input.EncryptedItem { + if len(key) < 0 { + return fmt.Errorf("AttributeName has a minimum length of 0 but has the length of %d.", len(key)) + } + if len(key) > 65535 { + return fmt.Errorf("AttributeName has a maximum length of 65535 but has the length of %d.", len(key)) + } + if input.Com_amazonaws_dynamodb_AttributeMap_value_Validate(value) != nil { + return input.Com_amazonaws_dynamodb_AttributeMap_value_Validate(value) + } + } + + return nil +} + +type AtomicPrimitivesReference struct { +} + +func (input AtomicPrimitivesReference) Validate() error { + + return nil +} + +type DynamoDbItemEncryptorConfig struct { + AttributeActionsOnEncrypt map[string]awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.CryptoAction + + LogicalTableName string + + PartitionKeyName string + + AlgorithmSuiteId *awscryptographymaterialproviderssmithygeneratedtypes.DBEAlgorithmSuiteId + + AllowedUnsignedAttributePrefix *string + + AllowedUnsignedAttributes []string + + Cmm awscryptographymaterialproviderssmithygeneratedtypes.ICryptographicMaterialsManager + + Keyring awscryptographymaterialproviderssmithygeneratedtypes.IKeyring + + LegacyOverride *awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.LegacyOverride + + PlaintextOverride *awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.PlaintextOverride + + SortKeyName *string +} + +func (input DynamoDbItemEncryptorConfig) Validate() error { + if input.AttributeActionsOnEncrypt == nil { + return fmt.Errorf("input.AttributeActionsOnEncrypt is required but has a nil value.") + } + if input.Aws_cryptography_dbEncryptionSdk_dynamoDb_itemEncryptor_DynamoDbItemEncryptorConfig_attributeActionsOnEncrypt_Validate() != nil { + return input.Aws_cryptography_dbEncryptionSdk_dynamoDb_itemEncryptor_DynamoDbItemEncryptorConfig_attributeActionsOnEncrypt_Validate() + } + if len(input.PartitionKeyName) < 1 { + return fmt.Errorf("KeySchemaAttributeName has a minimum length of 1 but has the length of %d.", len(input.PartitionKeyName)) + } + if len(input.PartitionKeyName) > 255 { + return fmt.Errorf("KeySchemaAttributeName has a maximum length of 255 but has the length of %d.", len(input.PartitionKeyName)) + } + if len(input.AllowedUnsignedAttributes) < 1 { + return fmt.Errorf("AttributeNameList has a minimum length of 1 but has the length of %d.", len(input.AllowedUnsignedAttributes)) + } + if input.Aws_cryptography_dbEncryptionSdk_dynamoDb_itemEncryptor_DynamoDbItemEncryptorConfig_allowedUnsignedAttributes_Validate() != nil { + return input.Aws_cryptography_dbEncryptionSdk_dynamoDb_itemEncryptor_DynamoDbItemEncryptorConfig_allowedUnsignedAttributes_Validate() + } + if input.LegacyOverride != nil { + if input.LegacyOverride.Validate() != nil { + return input.LegacyOverride.Validate() + } + + } + if input.SortKeyName != nil { + if len(*input.SortKeyName) < 1 { + return fmt.Errorf("KeySchemaAttributeName has a minimum length of 1 but has the length of %d.", len(*input.SortKeyName)) + } + if len(*input.SortKeyName) > 255 { + return fmt.Errorf("KeySchemaAttributeName has a maximum length of 255 but has the length of %d.", len(*input.SortKeyName)) + } + } + + return nil +} + +func (input DynamoDbItemEncryptorConfig) Aws_cryptography_dbEncryptionSdk_dynamoDb_itemEncryptor_DynamoDbItemEncryptorConfig_attributeActionsOnEncrypt_Validate() error { + for key, _ := range input.AttributeActionsOnEncrypt { + if len(key) < 0 { + return fmt.Errorf("AttributeName has a minimum length of 0 but has the length of %d.", len(key)) + } + if len(key) > 65535 { + return fmt.Errorf("AttributeName has a maximum length of 65535 but has the length of %d.", len(key)) + } + } + + return nil +} +func (input DynamoDbItemEncryptorConfig) Aws_cryptography_dbEncryptionSdk_dynamoDb_itemEncryptor_DynamoDbItemEncryptorConfig_allowedUnsignedAttributes_Validate() error { + for _, item := range input.AllowedUnsignedAttributes { + if len(item) < 0 { + return fmt.Errorf("AttributeName has a minimum length of 0 but has the length of %d.", len(item)) + } + if len(item) > 65535 { + return fmt.Errorf("AttributeName has a maximum length of 65535 but has the length of %d.", len(item)) + } + } + + return nil +} + +type StructuredEncryptionReference struct { +} + +func (input StructuredEncryptionReference) Validate() error { + + return nil +} + +type DynamoDbItemEncryptorBaseException interface { + // This is a dummy method to allow type assertion since Go empty interfaces + // aren't useful for type assertion checks. No concrete class is expected to implement + // this method. This is also not exported. + interfaceBindingMethod() +} diff --git a/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkdynamodbitemencryptorsmithygeneratedtypes/unmodelled_errors.go b/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkdynamodbitemencryptorsmithygeneratedtypes/unmodelled_errors.go new file mode 100644 index 000000000..e6a12a0b3 --- /dev/null +++ b/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkdynamodbitemencryptorsmithygeneratedtypes/unmodelled_errors.go @@ -0,0 +1,26 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package awscryptographydbencryptionsdkdynamodbitemencryptorsmithygeneratedtypes + +import ( + "fmt" +) + +type CollectionOfErrors struct { + DynamoDbItemEncryptorBaseException + ListOfErrors []error + Message string +} + +func (e CollectionOfErrors) Error() string { + return fmt.Sprintf("message: %s\n err %v", e.Message, e.ListOfErrors) +} + +type OpaqueError struct { + DynamoDbItemEncryptorBaseException + ErrObject interface{} +} + +func (e OpaqueError) Error() string { + return fmt.Sprintf("message: %v", e.ErrObject) +} diff --git a/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkdynamodbsmithygenerated/DynamoDbKeyBranchKeyIdSupplier.go b/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkdynamodbsmithygenerated/DynamoDbKeyBranchKeyIdSupplier.go new file mode 100644 index 000000000..e3b952698 --- /dev/null +++ b/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkdynamodbsmithygenerated/DynamoDbKeyBranchKeyIdSupplier.go @@ -0,0 +1,25 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package awscryptographydbencryptionsdkdynamodbsmithygenerated + +import ( + "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbTypes" + "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes" +) + +type DynamoDbKeyBranchKeyIdSupplier struct { + Impl AwsCryptographyDbEncryptionSdkDynamoDbTypes.IDynamoDbKeyBranchKeyIdSupplier +} + +func (this *DynamoDbKeyBranchKeyIdSupplier) GetBranchKeyIdFromDdbKey(params awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.GetBranchKeyIdFromDdbKeyInput) (*awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.GetBranchKeyIdFromDdbKeyOutput, error) { + var dafny_request AwsCryptographyDbEncryptionSdkDynamoDbTypes.GetBranchKeyIdFromDdbKeyInput = GetBranchKeyIdFromDdbKeyInput_ToDafny(params) + var dafny_response = this.Impl.GetBranchKeyIdFromDdbKey(dafny_request) + + if dafny_response.Is_Failure() { + err := dafny_response.Dtor_error().(AwsCryptographyDbEncryptionSdkDynamoDbTypes.Error) + return nil, Error_FromDafny(err) + } + var native_response = GetBranchKeyIdFromDdbKeyOutput_FromDafny(dafny_response.Dtor_value().(AwsCryptographyDbEncryptionSdkDynamoDbTypes.GetBranchKeyIdFromDdbKeyOutput)) + return &native_response, nil + +} diff --git a/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkdynamodbsmithygenerated/DynamoDbKeyBranchKeyIdSupplierNativeWrapper.go b/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkdynamodbsmithygenerated/DynamoDbKeyBranchKeyIdSupplierNativeWrapper.go new file mode 100644 index 000000000..2de5b81f2 --- /dev/null +++ b/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkdynamodbsmithygenerated/DynamoDbKeyBranchKeyIdSupplierNativeWrapper.go @@ -0,0 +1,23 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package awscryptographydbencryptionsdkdynamodbsmithygenerated + +import ( + "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Wrappers" + "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbTypes" + "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes" +) + +type DynamoDbKeyBranchKeyIdSupplierNativeWrapper struct { + AwsCryptographyDbEncryptionSdkDynamoDbTypes.IDynamoDbKeyBranchKeyIdSupplier + Impl awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.IDynamoDbKeyBranchKeyIdSupplier +} + +func (this *DynamoDbKeyBranchKeyIdSupplierNativeWrapper) GetBranchKeyIdFromDdbKey(input AwsCryptographyDbEncryptionSdkDynamoDbTypes.GetBranchKeyIdFromDdbKeyInput) Wrappers.Result { + var native_request = GetBranchKeyIdFromDdbKeyInput_FromDafny(input) + var native_response, native_error = this.Impl.GetBranchKeyIdFromDdbKey(native_request) + if native_error != nil { + return Wrappers.Companion_Result_.Create_Failure_(Error_ToDafny(native_error)) + } + return Wrappers.Companion_Result_.Create_Success_(GetBranchKeyIdFromDdbKeyOutput_ToDafny(*native_response)) +} diff --git a/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkdynamodbsmithygenerated/LegacyDynamoDbEncryptor.go b/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkdynamodbsmithygenerated/LegacyDynamoDbEncryptor.go new file mode 100644 index 000000000..af4094b32 --- /dev/null +++ b/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkdynamodbsmithygenerated/LegacyDynamoDbEncryptor.go @@ -0,0 +1,11 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package awscryptographydbencryptionsdkdynamodbsmithygenerated + +import ( + "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbTypes" +) + +type LegacyDynamoDbEncryptor struct { + Impl AwsCryptographyDbEncryptionSdkDynamoDbTypes.ILegacyDynamoDbEncryptor +} diff --git a/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkdynamodbsmithygenerated/LegacyDynamoDbEncryptorNativeWrapper.go b/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkdynamodbsmithygenerated/LegacyDynamoDbEncryptorNativeWrapper.go new file mode 100644 index 000000000..bff61bcf1 --- /dev/null +++ b/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkdynamodbsmithygenerated/LegacyDynamoDbEncryptorNativeWrapper.go @@ -0,0 +1,13 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package awscryptographydbencryptionsdkdynamodbsmithygenerated + +import ( + "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbTypes" + "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes" +) + +type LegacyDynamoDbEncryptorNativeWrapper struct { + AwsCryptographyDbEncryptionSdkDynamoDbTypes.ILegacyDynamoDbEncryptor + Impl awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.ILegacyDynamoDbEncryptor +} diff --git a/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkdynamodbsmithygenerated/api_client.go b/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkdynamodbsmithygenerated/api_client.go new file mode 100644 index 000000000..f010378c1 --- /dev/null +++ b/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkdynamodbsmithygenerated/api_client.go @@ -0,0 +1,68 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package awscryptographydbencryptionsdkdynamodbsmithygenerated + +import ( + "context" + + "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbTypes" + "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbEncryption" + "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes" +) + +type Client struct { + DafnyClient AwsCryptographyDbEncryptionSdkDynamoDbTypes.IDynamoDbEncryptionClient +} + +func NewClient(clientConfig awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.DynamoDbEncryptionConfig) (*Client, error) { + var dafnyConfig = DynamoDbEncryptionConfig_ToDafny(clientConfig) + var dafny_response = DynamoDbEncryption.Companion_Default___.DynamoDbEncryption(dafnyConfig) + if dafny_response.Is_Failure() { + panic("Client construction failed. This should never happen") + } + var dafnyClient = dafny_response.Extract().(AwsCryptographyDbEncryptionSdkDynamoDbTypes.IDynamoDbEncryptionClient) + client := &Client{dafnyClient} + return client, nil +} + +func (client *Client) CreateDynamoDbEncryptionBranchKeyIdSupplier(ctx context.Context, params awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.CreateDynamoDbEncryptionBranchKeyIdSupplierInput) (*awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.CreateDynamoDbEncryptionBranchKeyIdSupplierOutput, error) { + err := params.Validate() + if err != nil { + opaqueErr := awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.OpaqueError{ + ErrObject: err, + } + return nil, opaqueErr + } + + var dafny_request AwsCryptographyDbEncryptionSdkDynamoDbTypes.CreateDynamoDbEncryptionBranchKeyIdSupplierInput = CreateDynamoDbEncryptionBranchKeyIdSupplierInput_ToDafny(params) + var dafny_response = client.DafnyClient.CreateDynamoDbEncryptionBranchKeyIdSupplier(dafny_request) + + if dafny_response.Is_Failure() { + err := dafny_response.Dtor_error().(AwsCryptographyDbEncryptionSdkDynamoDbTypes.Error) + return nil, Error_FromDafny(err) + } + var native_response = CreateDynamoDbEncryptionBranchKeyIdSupplierOutput_FromDafny(dafny_response.Dtor_value().(AwsCryptographyDbEncryptionSdkDynamoDbTypes.CreateDynamoDbEncryptionBranchKeyIdSupplierOutput)) + return &native_response, nil + +} + +func (client *Client) GetEncryptedDataKeyDescription(ctx context.Context, params awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.GetEncryptedDataKeyDescriptionInput) (*awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.GetEncryptedDataKeyDescriptionOutput, error) { + err := params.Validate() + if err != nil { + opaqueErr := awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.OpaqueError{ + ErrObject: err, + } + return nil, opaqueErr + } + + var dafny_request AwsCryptographyDbEncryptionSdkDynamoDbTypes.GetEncryptedDataKeyDescriptionInput = GetEncryptedDataKeyDescriptionInput_ToDafny(params) + var dafny_response = client.DafnyClient.GetEncryptedDataKeyDescription(dafny_request) + + if dafny_response.Is_Failure() { + err := dafny_response.Dtor_error().(AwsCryptographyDbEncryptionSdkDynamoDbTypes.Error) + return nil, Error_FromDafny(err) + } + var native_response = GetEncryptedDataKeyDescriptionOutput_FromDafny(dafny_response.Dtor_value().(AwsCryptographyDbEncryptionSdkDynamoDbTypes.GetEncryptedDataKeyDescriptionOutput)) + return &native_response, nil + +} diff --git a/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkdynamodbsmithygenerated/to_dafny.go b/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkdynamodbsmithygenerated/to_dafny.go new file mode 100644 index 000000000..cc97aab3a --- /dev/null +++ b/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkdynamodbsmithygenerated/to_dafny.go @@ -0,0 +1,1821 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package awscryptographydbencryptionsdkdynamodbsmithygenerated + +import ( + "github.com/aws/aws-cryptographic-material-providers-library/releases/go/dynamodb/comamazonawsdynamodbsmithygenerated" + "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyKeyStoreTypes" + "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyMaterialProvidersTypes" + "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/awscryptographykeystoresmithygenerated" + "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/awscryptographykeystoresmithygeneratedtypes" + "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/awscryptographymaterialproviderssmithygenerated" + "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/awscryptographymaterialproviderssmithygeneratedtypes" + "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/awscryptographyprimitivessmithygenerated" + "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/awscryptographyprimitivessmithygeneratedtypes" + "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/UTF8" + "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Wrappers" + "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbTypes" + "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes" + "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes" + "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkstructuredencryptionsmithygenerated" + "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes" + dynamodbtypes "github.com/aws/aws-sdk-go-v2/service/dynamodb/types" + "github.com/aws/smithy-go" + "github.com/dafny-lang/DafnyRuntimeGo/v4/dafny" +) + +func CreateDynamoDbEncryptionBranchKeyIdSupplierInput_ToDafny(nativeInput awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.CreateDynamoDbEncryptionBranchKeyIdSupplierInput) AwsCryptographyDbEncryptionSdkDynamoDbTypes.CreateDynamoDbEncryptionBranchKeyIdSupplierInput { + + return func() AwsCryptographyDbEncryptionSdkDynamoDbTypes.CreateDynamoDbEncryptionBranchKeyIdSupplierInput { + + return AwsCryptographyDbEncryptionSdkDynamoDbTypes.Companion_CreateDynamoDbEncryptionBranchKeyIdSupplierInput_.Create_CreateDynamoDbEncryptionBranchKeyIdSupplierInput_(DynamoDbKeyBranchKeyIdSupplier_ToDafny(nativeInput.DdbKeyBranchKeyIdSupplier)) + }() + +} + +func CreateDynamoDbEncryptionBranchKeyIdSupplierOutput_ToDafny(nativeOutput awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.CreateDynamoDbEncryptionBranchKeyIdSupplierOutput) AwsCryptographyDbEncryptionSdkDynamoDbTypes.CreateDynamoDbEncryptionBranchKeyIdSupplierOutput { + + return func() AwsCryptographyDbEncryptionSdkDynamoDbTypes.CreateDynamoDbEncryptionBranchKeyIdSupplierOutput { + + return AwsCryptographyDbEncryptionSdkDynamoDbTypes.Companion_CreateDynamoDbEncryptionBranchKeyIdSupplierOutput_.Create_CreateDynamoDbEncryptionBranchKeyIdSupplierOutput_(awscryptographymaterialproviderssmithygenerated.BranchKeyIdSupplier_ToDafny(nativeOutput.BranchKeyIdSupplier)) + }() + +} + +func GetEncryptedDataKeyDescriptionInput_ToDafny(nativeInput awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.GetEncryptedDataKeyDescriptionInput) AwsCryptographyDbEncryptionSdkDynamoDbTypes.GetEncryptedDataKeyDescriptionInput { + + return func() AwsCryptographyDbEncryptionSdkDynamoDbTypes.GetEncryptedDataKeyDescriptionInput { + + return AwsCryptographyDbEncryptionSdkDynamoDbTypes.Companion_GetEncryptedDataKeyDescriptionInput_.Create_GetEncryptedDataKeyDescriptionInput_(Aws_cryptography_dbEncryptionSdk_dynamoDb_GetEncryptedDataKeyDescriptionInput_input_ToDafny(nativeInput.Input)) + }() + +} + +func GetEncryptedDataKeyDescriptionOutput_ToDafny(nativeOutput awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.GetEncryptedDataKeyDescriptionOutput) AwsCryptographyDbEncryptionSdkDynamoDbTypes.GetEncryptedDataKeyDescriptionOutput { + + return func() AwsCryptographyDbEncryptionSdkDynamoDbTypes.GetEncryptedDataKeyDescriptionOutput { + + return AwsCryptographyDbEncryptionSdkDynamoDbTypes.Companion_GetEncryptedDataKeyDescriptionOutput_.Create_GetEncryptedDataKeyDescriptionOutput_(Aws_cryptography_dbEncryptionSdk_dynamoDb_GetEncryptedDataKeyDescriptionOutput_EncryptedDataKeyDescriptionOutput_ToDafny(nativeOutput.EncryptedDataKeyDescriptionOutput)) + }() + +} + +func GetBranchKeyIdFromDdbKeyInput_ToDafny(nativeInput awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.GetBranchKeyIdFromDdbKeyInput) AwsCryptographyDbEncryptionSdkDynamoDbTypes.GetBranchKeyIdFromDdbKeyInput { + + return func() AwsCryptographyDbEncryptionSdkDynamoDbTypes.GetBranchKeyIdFromDdbKeyInput { + + return AwsCryptographyDbEncryptionSdkDynamoDbTypes.Companion_GetBranchKeyIdFromDdbKeyInput_.Create_GetBranchKeyIdFromDdbKeyInput_(Aws_cryptography_dbEncryptionSdk_dynamoDb_GetBranchKeyIdFromDdbKeyInput_ddbKey_ToDafny(nativeInput.DdbKey)) + }() + +} + +func GetBranchKeyIdFromDdbKeyOutput_ToDafny(nativeOutput awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.GetBranchKeyIdFromDdbKeyOutput) AwsCryptographyDbEncryptionSdkDynamoDbTypes.GetBranchKeyIdFromDdbKeyOutput { + + return func() AwsCryptographyDbEncryptionSdkDynamoDbTypes.GetBranchKeyIdFromDdbKeyOutput { + + return AwsCryptographyDbEncryptionSdkDynamoDbTypes.Companion_GetBranchKeyIdFromDdbKeyOutput_.Create_GetBranchKeyIdFromDdbKeyOutput_(Aws_cryptography_dbEncryptionSdk_dynamoDb_GetBranchKeyIdFromDdbKeyOutput_branchKeyId_ToDafny(nativeOutput.BranchKeyId)) + }() + +} + +func DynamoDbKeyBranchKeyIdSupplier_ToDafny(nativeResource awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.IDynamoDbKeyBranchKeyIdSupplier) AwsCryptographyDbEncryptionSdkDynamoDbTypes.IDynamoDbKeyBranchKeyIdSupplier { + val, ok := nativeResource.(*DynamoDbKeyBranchKeyIdSupplier) + if ok { + return val.Impl + } + return DynamoDbKeyBranchKeyIdSupplier{&DynamoDbKeyBranchKeyIdSupplierNativeWrapper{Impl: nativeResource}}.Impl + +} + +func LegacyDynamoDbEncryptor_ToDafny(nativeResource awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.ILegacyDynamoDbEncryptor) AwsCryptographyDbEncryptionSdkDynamoDbTypes.ILegacyDynamoDbEncryptor { + val, ok := nativeResource.(*LegacyDynamoDbEncryptor) + if ok { + return val.Impl + } + return LegacyDynamoDbEncryptor{&LegacyDynamoDbEncryptorNativeWrapper{Impl: nativeResource}}.Impl + +} + +func DynamoDbEncryptionException_ToDafny(nativeInput awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.DynamoDbEncryptionException) AwsCryptographyDbEncryptionSdkDynamoDbTypes.Error { + return func() AwsCryptographyDbEncryptionSdkDynamoDbTypes.Error { + + return AwsCryptographyDbEncryptionSdkDynamoDbTypes.Companion_Error_.Create_DynamoDbEncryptionException_(Aws_cryptography_dbEncryptionSdk_dynamoDb_DynamoDbEncryptionException_message_ToDafny(nativeInput.Message)) + }() + +} + +func CollectionOfErrors_Input_ToDafny(nativeInput awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.CollectionOfErrors) AwsCryptographyDbEncryptionSdkDynamoDbTypes.Error { + var e []interface{} + for _, i2 := range nativeInput.ListOfErrors { + e = append(e, Error_ToDafny(i2)) + } + return AwsCryptographyDbEncryptionSdkDynamoDbTypes.Companion_Error_.Create_CollectionOfErrors_(dafny.SeqOf(e...), func() dafny.Sequence { + res, err := UTF8.DecodeFromNativeGoByteArray([]byte(nativeInput.Message)) + if err != nil { + panic("invalid utf8 input provided") + } + return res + }()) +} +func OpaqueError_Input_ToDafny(nativeInput awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.OpaqueError) AwsCryptographyDbEncryptionSdkDynamoDbTypes.Error { + return AwsCryptographyDbEncryptionSdkDynamoDbTypes.Companion_Error_.Create_Opaque_(nativeInput.ErrObject) +} + +func Error_ToDafny(err error) AwsCryptographyDbEncryptionSdkDynamoDbTypes.Error { + switch err.(type) { + // Service Errors + case awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.DynamoDbEncryptionException: + return DynamoDbEncryptionException_ToDafny(err.(awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.DynamoDbEncryptionException)) + + //DependentErrors + case awscryptographyprimitivessmithygeneratedtypes.AwsCryptographicPrimitivesBaseException: + return AwsCryptographyDbEncryptionSdkDynamoDbTypes.Companion_Error_.Create_AwsCryptographyPrimitives_(awscryptographyprimitivessmithygenerated.Error_ToDafny(err)) + + case awscryptographymaterialproviderssmithygeneratedtypes.AwsCryptographicMaterialProvidersBaseException: + return AwsCryptographyDbEncryptionSdkDynamoDbTypes.Companion_Error_.Create_AwsCryptographyMaterialProviders_(awscryptographymaterialproviderssmithygenerated.Error_ToDafny(err)) + + case awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.StructuredEncryptionBaseException: + return AwsCryptographyDbEncryptionSdkDynamoDbTypes.Companion_Error_.Create_AwsCryptographyDbEncryptionSdkStructuredEncryption_(awscryptographydbencryptionsdkstructuredencryptionsmithygenerated.Error_ToDafny(err)) + + case awscryptographykeystoresmithygeneratedtypes.KeyStoreBaseException: + return AwsCryptographyDbEncryptionSdkDynamoDbTypes.Companion_Error_.Create_AwsCryptographyKeyStore_(awscryptographykeystoresmithygenerated.Error_ToDafny(err)) + + case *smithy.OperationError: + if err.(*smithy.OperationError).Service() == "DynamoDB" { + DynamoDBError := comamazonawsdynamodbsmithygenerated.Error_ToDafny(err) + return AwsCryptographyDbEncryptionSdkDynamoDbTypes.Companion_Error_.Create_ComAmazonawsDynamodb_(DynamoDBError) + } + return AwsCryptographyDbEncryptionSdkDynamoDbTypes.Companion_Error_.Create_Opaque_(err) + + case smithy.APIError: + DynamoDBError := comamazonawsdynamodbsmithygenerated.Error_ToDafny(err) + if !DynamoDBError.Is_OpaqueWithText() { + return AwsCryptographyDbEncryptionSdkDynamoDbTypes.Companion_Error_.Create_ComAmazonawsDynamodb_(DynamoDBError) + } + return AwsCryptographyDbEncryptionSdkDynamoDbTypes.Companion_Error_.Create_Opaque_(err) + + //Unmodelled Errors + case awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.CollectionOfErrors: + return CollectionOfErrors_Input_ToDafny(err.(awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.CollectionOfErrors)) + + default: + error, ok := err.(awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.OpaqueError) + if !ok { + panic("Error is not an OpaqueError") + } + return OpaqueError_Input_ToDafny(error) + } +} + +func DynamoDbEncryptionConfig_ToDafny(nativeInput awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.DynamoDbEncryptionConfig) AwsCryptographyDbEncryptionSdkDynamoDbTypes.DynamoDbEncryptionConfig { + return func() AwsCryptographyDbEncryptionSdkDynamoDbTypes.DynamoDbEncryptionConfig { + + return AwsCryptographyDbEncryptionSdkDynamoDbTypes.Companion_DynamoDbEncryptionConfig_.Create_DynamoDbEncryptionConfig_() + }() + +} + +func AsSet_ToDafny(nativeInput awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.AsSet) AwsCryptographyDbEncryptionSdkDynamoDbTypes.AsSet { + return func() AwsCryptographyDbEncryptionSdkDynamoDbTypes.AsSet { + + return AwsCryptographyDbEncryptionSdkDynamoDbTypes.Companion_AsSet_.Create_AsSet_() + }() + +} + +func MultiKeyStore_ToDafny(nativeInput awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.MultiKeyStore) AwsCryptographyDbEncryptionSdkDynamoDbTypes.MultiKeyStore { + return func() AwsCryptographyDbEncryptionSdkDynamoDbTypes.MultiKeyStore { + + return AwsCryptographyDbEncryptionSdkDynamoDbTypes.Companion_MultiKeyStore_.Create_MultiKeyStore_(Aws_cryptography_dbEncryptionSdk_dynamoDb_MultiKeyStore_keyFieldName_ToDafny(nativeInput.KeyFieldName), Aws_cryptography_dbEncryptionSdk_dynamoDb_MultiKeyStore_cacheTTL_ToDafny(nativeInput.CacheTTL), Aws_cryptography_dbEncryptionSdk_dynamoDb_MultiKeyStore_cache_ToDafny(nativeInput.Cache), Aws_cryptography_dbEncryptionSdk_dynamoDb_MultiKeyStore_partitionId_ToDafny(nativeInput.PartitionId)) + }() + +} + +func SingleKeyStore_ToDafny(nativeInput awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.SingleKeyStore) AwsCryptographyDbEncryptionSdkDynamoDbTypes.SingleKeyStore { + return func() AwsCryptographyDbEncryptionSdkDynamoDbTypes.SingleKeyStore { + + return AwsCryptographyDbEncryptionSdkDynamoDbTypes.Companion_SingleKeyStore_.Create_SingleKeyStore_(Aws_cryptography_dbEncryptionSdk_dynamoDb_SingleKeyStore_keyId_ToDafny(nativeInput.KeyId), Aws_cryptography_dbEncryptionSdk_dynamoDb_SingleKeyStore_cacheTTL_ToDafny(nativeInput.CacheTTL), Aws_cryptography_dbEncryptionSdk_dynamoDb_SingleKeyStore_cache_ToDafny(nativeInput.Cache), Aws_cryptography_dbEncryptionSdk_dynamoDb_SingleKeyStore_partitionId_ToDafny(nativeInput.PartitionId)) + }() + +} + +func BeaconKeySource_ToDafny(nativeInput awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.BeaconKeySource) AwsCryptographyDbEncryptionSdkDynamoDbTypes.BeaconKeySource { + return func() AwsCryptographyDbEncryptionSdkDynamoDbTypes.BeaconKeySource { + + switch nativeInput.(type) { + case *awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.BeaconKeySourceMembersingle: + var inputToConversion = Aws_cryptography_dbEncryptionSdk_dynamoDb_BeaconKeySource_single_ToDafny(nativeInput.(*awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.BeaconKeySourceMembersingle).Value) + return AwsCryptographyDbEncryptionSdkDynamoDbTypes.CompanionStruct_BeaconKeySource_{}.Create_single_(inputToConversion.UnwrapOr(nil).(AwsCryptographyDbEncryptionSdkDynamoDbTypes.SingleKeyStore)) + case *awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.BeaconKeySourceMembermulti: + var inputToConversion = Aws_cryptography_dbEncryptionSdk_dynamoDb_BeaconKeySource_multi_ToDafny(nativeInput.(*awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.BeaconKeySourceMembermulti).Value) + return AwsCryptographyDbEncryptionSdkDynamoDbTypes.CompanionStruct_BeaconKeySource_{}.Create_multi_(inputToConversion.UnwrapOr(nil).(AwsCryptographyDbEncryptionSdkDynamoDbTypes.MultiKeyStore)) + + default: + panic("Unhandled union type") + } + }() + +} + +func PartOnly_ToDafny(nativeInput awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.PartOnly) AwsCryptographyDbEncryptionSdkDynamoDbTypes.PartOnly { + return func() AwsCryptographyDbEncryptionSdkDynamoDbTypes.PartOnly { + + return AwsCryptographyDbEncryptionSdkDynamoDbTypes.Companion_PartOnly_.Create_PartOnly_() + }() + +} + +func Shared_ToDafny(nativeInput awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.Shared) AwsCryptographyDbEncryptionSdkDynamoDbTypes.Shared { + return func() AwsCryptographyDbEncryptionSdkDynamoDbTypes.Shared { + + return AwsCryptographyDbEncryptionSdkDynamoDbTypes.Companion_Shared_.Create_Shared_(Aws_cryptography_dbEncryptionSdk_dynamoDb_Shared_other_ToDafny(nativeInput.Other)) + }() + +} + +func SharedSet_ToDafny(nativeInput awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.SharedSet) AwsCryptographyDbEncryptionSdkDynamoDbTypes.SharedSet { + return func() AwsCryptographyDbEncryptionSdkDynamoDbTypes.SharedSet { + + return AwsCryptographyDbEncryptionSdkDynamoDbTypes.Companion_SharedSet_.Create_SharedSet_(Aws_cryptography_dbEncryptionSdk_dynamoDb_SharedSet_other_ToDafny(nativeInput.Other)) + }() + +} + +func BeaconStyle_ToDafny(nativeInput awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.BeaconStyle) AwsCryptographyDbEncryptionSdkDynamoDbTypes.BeaconStyle { + return func() AwsCryptographyDbEncryptionSdkDynamoDbTypes.BeaconStyle { + + switch nativeInput.(type) { + case *awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.BeaconStyleMemberpartOnly: + var inputToConversion = Aws_cryptography_dbEncryptionSdk_dynamoDb_BeaconStyle_partOnly_ToDafny(nativeInput.(*awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.BeaconStyleMemberpartOnly).Value) + return AwsCryptographyDbEncryptionSdkDynamoDbTypes.CompanionStruct_BeaconStyle_{}.Create_partOnly_(inputToConversion.UnwrapOr(nil).(AwsCryptographyDbEncryptionSdkDynamoDbTypes.PartOnly)) + case *awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.BeaconStyleMembershared: + var inputToConversion = Aws_cryptography_dbEncryptionSdk_dynamoDb_BeaconStyle_shared_ToDafny(nativeInput.(*awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.BeaconStyleMembershared).Value) + return AwsCryptographyDbEncryptionSdkDynamoDbTypes.CompanionStruct_BeaconStyle_{}.Create_shared_(inputToConversion.UnwrapOr(nil).(AwsCryptographyDbEncryptionSdkDynamoDbTypes.Shared)) + case *awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.BeaconStyleMemberasSet: + var inputToConversion = Aws_cryptography_dbEncryptionSdk_dynamoDb_BeaconStyle_asSet_ToDafny(nativeInput.(*awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.BeaconStyleMemberasSet).Value) + return AwsCryptographyDbEncryptionSdkDynamoDbTypes.CompanionStruct_BeaconStyle_{}.Create_asSet_(inputToConversion.UnwrapOr(nil).(AwsCryptographyDbEncryptionSdkDynamoDbTypes.AsSet)) + case *awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.BeaconStyleMembersharedSet: + var inputToConversion = Aws_cryptography_dbEncryptionSdk_dynamoDb_BeaconStyle_sharedSet_ToDafny(nativeInput.(*awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.BeaconStyleMembersharedSet).Value) + return AwsCryptographyDbEncryptionSdkDynamoDbTypes.CompanionStruct_BeaconStyle_{}.Create_sharedSet_(inputToConversion.UnwrapOr(nil).(AwsCryptographyDbEncryptionSdkDynamoDbTypes.SharedSet)) + + default: + panic("Unhandled union type") + } + }() + +} + +func ConstructorPart_ToDafny(nativeInput awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.ConstructorPart) AwsCryptographyDbEncryptionSdkDynamoDbTypes.ConstructorPart { + return func() AwsCryptographyDbEncryptionSdkDynamoDbTypes.ConstructorPart { + + return AwsCryptographyDbEncryptionSdkDynamoDbTypes.Companion_ConstructorPart_.Create_ConstructorPart_(Aws_cryptography_dbEncryptionSdk_dynamoDb_ConstructorPart_name_ToDafny(nativeInput.Name), Aws_cryptography_dbEncryptionSdk_dynamoDb_ConstructorPart_required_ToDafny(nativeInput.Required)) + }() + +} + +func Constructor_ToDafny(nativeInput awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.Constructor) AwsCryptographyDbEncryptionSdkDynamoDbTypes.Constructor { + return func() AwsCryptographyDbEncryptionSdkDynamoDbTypes.Constructor { + + return AwsCryptographyDbEncryptionSdkDynamoDbTypes.Companion_Constructor_.Create_Constructor_(Aws_cryptography_dbEncryptionSdk_dynamoDb_Constructor_parts_ToDafny(nativeInput.Parts)) + }() + +} + +func EncryptedPart_ToDafny(nativeInput awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.EncryptedPart) AwsCryptographyDbEncryptionSdkDynamoDbTypes.EncryptedPart { + return func() AwsCryptographyDbEncryptionSdkDynamoDbTypes.EncryptedPart { + + return AwsCryptographyDbEncryptionSdkDynamoDbTypes.Companion_EncryptedPart_.Create_EncryptedPart_(Aws_cryptography_dbEncryptionSdk_dynamoDb_EncryptedPart_name_ToDafny(nativeInput.Name), Aws_cryptography_dbEncryptionSdk_dynamoDb_EncryptedPart_prefix_ToDafny(nativeInput.Prefix)) + }() + +} + +func SignedPart_ToDafny(nativeInput awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.SignedPart) AwsCryptographyDbEncryptionSdkDynamoDbTypes.SignedPart { + return func() AwsCryptographyDbEncryptionSdkDynamoDbTypes.SignedPart { + + return AwsCryptographyDbEncryptionSdkDynamoDbTypes.Companion_SignedPart_.Create_SignedPart_(Aws_cryptography_dbEncryptionSdk_dynamoDb_SignedPart_name_ToDafny(nativeInput.Name), Aws_cryptography_dbEncryptionSdk_dynamoDb_SignedPart_prefix_ToDafny(nativeInput.Prefix), Aws_cryptography_dbEncryptionSdk_dynamoDb_SignedPart_loc_ToDafny(nativeInput.Loc)) + }() + +} + +func CompoundBeacon_ToDafny(nativeInput awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.CompoundBeacon) AwsCryptographyDbEncryptionSdkDynamoDbTypes.CompoundBeacon { + return func() AwsCryptographyDbEncryptionSdkDynamoDbTypes.CompoundBeacon { + + return AwsCryptographyDbEncryptionSdkDynamoDbTypes.Companion_CompoundBeacon_.Create_CompoundBeacon_(Aws_cryptography_dbEncryptionSdk_dynamoDb_CompoundBeacon_name_ToDafny(nativeInput.Name), Aws_cryptography_dbEncryptionSdk_dynamoDb_CompoundBeacon_split_ToDafny(nativeInput.Split), Aws_cryptography_dbEncryptionSdk_dynamoDb_CompoundBeacon_encrypted_ToDafny(nativeInput.Encrypted), Aws_cryptography_dbEncryptionSdk_dynamoDb_CompoundBeacon_signed_ToDafny(nativeInput.Signed), Aws_cryptography_dbEncryptionSdk_dynamoDb_CompoundBeacon_constructors_ToDafny(nativeInput.Constructors)) + }() + +} + +func StandardBeacon_ToDafny(nativeInput awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.StandardBeacon) AwsCryptographyDbEncryptionSdkDynamoDbTypes.StandardBeacon { + return func() AwsCryptographyDbEncryptionSdkDynamoDbTypes.StandardBeacon { + + return AwsCryptographyDbEncryptionSdkDynamoDbTypes.Companion_StandardBeacon_.Create_StandardBeacon_(Aws_cryptography_dbEncryptionSdk_dynamoDb_StandardBeacon_name_ToDafny(nativeInput.Name), Aws_cryptography_dbEncryptionSdk_dynamoDb_StandardBeacon_length_ToDafny(nativeInput.Length), Aws_cryptography_dbEncryptionSdk_dynamoDb_StandardBeacon_loc_ToDafny(nativeInput.Loc), Aws_cryptography_dbEncryptionSdk_dynamoDb_StandardBeacon_style_ToDafny(nativeInput.Style)) + }() + +} + +func Insert_ToDafny(nativeInput awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.Insert) AwsCryptographyDbEncryptionSdkDynamoDbTypes.Insert { + return func() AwsCryptographyDbEncryptionSdkDynamoDbTypes.Insert { + + return AwsCryptographyDbEncryptionSdkDynamoDbTypes.Companion_Insert_.Create_Insert_(Aws_cryptography_dbEncryptionSdk_dynamoDb_Insert_literal_ToDafny(nativeInput.Literal)) + }() + +} + +func Lower_ToDafny(nativeInput awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.Lower) AwsCryptographyDbEncryptionSdkDynamoDbTypes.Lower { + return func() AwsCryptographyDbEncryptionSdkDynamoDbTypes.Lower { + + return AwsCryptographyDbEncryptionSdkDynamoDbTypes.Companion_Lower_.Create_Lower_() + }() + +} + +func GetPrefix_ToDafny(nativeInput awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.GetPrefix) AwsCryptographyDbEncryptionSdkDynamoDbTypes.GetPrefix { + return func() AwsCryptographyDbEncryptionSdkDynamoDbTypes.GetPrefix { + + return AwsCryptographyDbEncryptionSdkDynamoDbTypes.Companion_GetPrefix_.Create_GetPrefix_(Aws_cryptography_dbEncryptionSdk_dynamoDb_GetPrefix_length_ToDafny(nativeInput.Length)) + }() + +} + +func GetSegment_ToDafny(nativeInput awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.GetSegment) AwsCryptographyDbEncryptionSdkDynamoDbTypes.GetSegment { + return func() AwsCryptographyDbEncryptionSdkDynamoDbTypes.GetSegment { + + return AwsCryptographyDbEncryptionSdkDynamoDbTypes.Companion_GetSegment_.Create_GetSegment_(Aws_cryptography_dbEncryptionSdk_dynamoDb_GetSegment_split_ToDafny(nativeInput.Split), Aws_cryptography_dbEncryptionSdk_dynamoDb_GetSegment_index_ToDafny(nativeInput.Index)) + }() + +} + +func GetSegments_ToDafny(nativeInput awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.GetSegments) AwsCryptographyDbEncryptionSdkDynamoDbTypes.GetSegments { + return func() AwsCryptographyDbEncryptionSdkDynamoDbTypes.GetSegments { + + return AwsCryptographyDbEncryptionSdkDynamoDbTypes.Companion_GetSegments_.Create_GetSegments_(Aws_cryptography_dbEncryptionSdk_dynamoDb_GetSegments_split_ToDafny(nativeInput.Split), Aws_cryptography_dbEncryptionSdk_dynamoDb_GetSegments_low_ToDafny(nativeInput.Low), Aws_cryptography_dbEncryptionSdk_dynamoDb_GetSegments_high_ToDafny(nativeInput.High)) + }() + +} + +func GetSubstring_ToDafny(nativeInput awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.GetSubstring) AwsCryptographyDbEncryptionSdkDynamoDbTypes.GetSubstring { + return func() AwsCryptographyDbEncryptionSdkDynamoDbTypes.GetSubstring { + + return AwsCryptographyDbEncryptionSdkDynamoDbTypes.Companion_GetSubstring_.Create_GetSubstring_(Aws_cryptography_dbEncryptionSdk_dynamoDb_GetSubstring_low_ToDafny(nativeInput.Low), Aws_cryptography_dbEncryptionSdk_dynamoDb_GetSubstring_high_ToDafny(nativeInput.High)) + }() + +} + +func GetSuffix_ToDafny(nativeInput awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.GetSuffix) AwsCryptographyDbEncryptionSdkDynamoDbTypes.GetSuffix { + return func() AwsCryptographyDbEncryptionSdkDynamoDbTypes.GetSuffix { + + return AwsCryptographyDbEncryptionSdkDynamoDbTypes.Companion_GetSuffix_.Create_GetSuffix_(Aws_cryptography_dbEncryptionSdk_dynamoDb_GetSuffix_length_ToDafny(nativeInput.Length)) + }() + +} + +func Upper_ToDafny(nativeInput awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.Upper) AwsCryptographyDbEncryptionSdkDynamoDbTypes.Upper { + return func() AwsCryptographyDbEncryptionSdkDynamoDbTypes.Upper { + + return AwsCryptographyDbEncryptionSdkDynamoDbTypes.Companion_Upper_.Create_Upper_() + }() + +} + +func VirtualTransform_ToDafny(nativeInput awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.VirtualTransform) AwsCryptographyDbEncryptionSdkDynamoDbTypes.VirtualTransform { + return func() AwsCryptographyDbEncryptionSdkDynamoDbTypes.VirtualTransform { + + switch nativeInput.(type) { + case *awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.VirtualTransformMemberupper: + var inputToConversion = Aws_cryptography_dbEncryptionSdk_dynamoDb_VirtualTransform_upper_ToDafny(nativeInput.(*awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.VirtualTransformMemberupper).Value) + return AwsCryptographyDbEncryptionSdkDynamoDbTypes.CompanionStruct_VirtualTransform_{}.Create_upper_(inputToConversion.UnwrapOr(nil).(AwsCryptographyDbEncryptionSdkDynamoDbTypes.Upper)) + case *awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.VirtualTransformMemberlower: + var inputToConversion = Aws_cryptography_dbEncryptionSdk_dynamoDb_VirtualTransform_lower_ToDafny(nativeInput.(*awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.VirtualTransformMemberlower).Value) + return AwsCryptographyDbEncryptionSdkDynamoDbTypes.CompanionStruct_VirtualTransform_{}.Create_lower_(inputToConversion.UnwrapOr(nil).(AwsCryptographyDbEncryptionSdkDynamoDbTypes.Lower)) + case *awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.VirtualTransformMemberinsert: + var inputToConversion = Aws_cryptography_dbEncryptionSdk_dynamoDb_VirtualTransform_insert_ToDafny(nativeInput.(*awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.VirtualTransformMemberinsert).Value) + return AwsCryptographyDbEncryptionSdkDynamoDbTypes.CompanionStruct_VirtualTransform_{}.Create_insert_(inputToConversion.UnwrapOr(nil).(AwsCryptographyDbEncryptionSdkDynamoDbTypes.Insert)) + case *awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.VirtualTransformMemberprefix: + var inputToConversion = Aws_cryptography_dbEncryptionSdk_dynamoDb_VirtualTransform_prefix_ToDafny(nativeInput.(*awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.VirtualTransformMemberprefix).Value) + return AwsCryptographyDbEncryptionSdkDynamoDbTypes.CompanionStruct_VirtualTransform_{}.Create_prefix_(inputToConversion.UnwrapOr(nil).(AwsCryptographyDbEncryptionSdkDynamoDbTypes.GetPrefix)) + case *awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.VirtualTransformMembersuffix: + var inputToConversion = Aws_cryptography_dbEncryptionSdk_dynamoDb_VirtualTransform_suffix_ToDafny(nativeInput.(*awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.VirtualTransformMembersuffix).Value) + return AwsCryptographyDbEncryptionSdkDynamoDbTypes.CompanionStruct_VirtualTransform_{}.Create_suffix_(inputToConversion.UnwrapOr(nil).(AwsCryptographyDbEncryptionSdkDynamoDbTypes.GetSuffix)) + case *awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.VirtualTransformMembersubstring: + var inputToConversion = Aws_cryptography_dbEncryptionSdk_dynamoDb_VirtualTransform_substring_ToDafny(nativeInput.(*awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.VirtualTransformMembersubstring).Value) + return AwsCryptographyDbEncryptionSdkDynamoDbTypes.CompanionStruct_VirtualTransform_{}.Create_substring_(inputToConversion.UnwrapOr(nil).(AwsCryptographyDbEncryptionSdkDynamoDbTypes.GetSubstring)) + case *awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.VirtualTransformMembersegment: + var inputToConversion = Aws_cryptography_dbEncryptionSdk_dynamoDb_VirtualTransform_segment_ToDafny(nativeInput.(*awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.VirtualTransformMembersegment).Value) + return AwsCryptographyDbEncryptionSdkDynamoDbTypes.CompanionStruct_VirtualTransform_{}.Create_segment_(inputToConversion.UnwrapOr(nil).(AwsCryptographyDbEncryptionSdkDynamoDbTypes.GetSegment)) + case *awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.VirtualTransformMembersegments: + var inputToConversion = Aws_cryptography_dbEncryptionSdk_dynamoDb_VirtualTransform_segments_ToDafny(nativeInput.(*awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.VirtualTransformMembersegments).Value) + return AwsCryptographyDbEncryptionSdkDynamoDbTypes.CompanionStruct_VirtualTransform_{}.Create_segments_(inputToConversion.UnwrapOr(nil).(AwsCryptographyDbEncryptionSdkDynamoDbTypes.GetSegments)) + + default: + panic("Unhandled union type") + } + }() + +} + +func VirtualPart_ToDafny(nativeInput awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.VirtualPart) AwsCryptographyDbEncryptionSdkDynamoDbTypes.VirtualPart { + return func() AwsCryptographyDbEncryptionSdkDynamoDbTypes.VirtualPart { + + return AwsCryptographyDbEncryptionSdkDynamoDbTypes.Companion_VirtualPart_.Create_VirtualPart_(Aws_cryptography_dbEncryptionSdk_dynamoDb_VirtualPart_loc_ToDafny(nativeInput.Loc), Aws_cryptography_dbEncryptionSdk_dynamoDb_VirtualPart_trans_ToDafny(nativeInput.Trans)) + }() + +} + +func VirtualField_ToDafny(nativeInput awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.VirtualField) AwsCryptographyDbEncryptionSdkDynamoDbTypes.VirtualField { + return func() AwsCryptographyDbEncryptionSdkDynamoDbTypes.VirtualField { + + return AwsCryptographyDbEncryptionSdkDynamoDbTypes.Companion_VirtualField_.Create_VirtualField_(Aws_cryptography_dbEncryptionSdk_dynamoDb_VirtualField_name_ToDafny(nativeInput.Name), Aws_cryptography_dbEncryptionSdk_dynamoDb_VirtualField_parts_ToDafny(nativeInput.Parts)) + }() + +} + +func BeaconVersion_ToDafny(nativeInput awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.BeaconVersion) AwsCryptographyDbEncryptionSdkDynamoDbTypes.BeaconVersion { + return func() AwsCryptographyDbEncryptionSdkDynamoDbTypes.BeaconVersion { + + return AwsCryptographyDbEncryptionSdkDynamoDbTypes.Companion_BeaconVersion_.Create_BeaconVersion_(Aws_cryptography_dbEncryptionSdk_dynamoDb_BeaconVersion_version_ToDafny(nativeInput.Version), Aws_cryptography_dbEncryptionSdk_dynamoDb_BeaconVersion_keyStore_ToDafny(nativeInput.KeyStore), Aws_cryptography_dbEncryptionSdk_dynamoDb_BeaconVersion_keySource_ToDafny(nativeInput.KeySource), Aws_cryptography_dbEncryptionSdk_dynamoDb_BeaconVersion_standardBeacons_ToDafny(nativeInput.StandardBeacons), Aws_cryptography_dbEncryptionSdk_dynamoDb_BeaconVersion_compoundBeacons_ToDafny(nativeInput.CompoundBeacons), Aws_cryptography_dbEncryptionSdk_dynamoDb_BeaconVersion_virtualFields_ToDafny(nativeInput.VirtualFields), Aws_cryptography_dbEncryptionSdk_dynamoDb_BeaconVersion_encryptedParts_ToDafny(nativeInput.EncryptedParts), Aws_cryptography_dbEncryptionSdk_dynamoDb_BeaconVersion_signedParts_ToDafny(nativeInput.SignedParts)) + }() + +} + +func LegacyPolicy_ToDafny(nativeInput awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.LegacyPolicy) AwsCryptographyDbEncryptionSdkDynamoDbTypes.LegacyPolicy { + return func() AwsCryptographyDbEncryptionSdkDynamoDbTypes.LegacyPolicy { + + var index int + for _, enumVal := range nativeInput.Values() { + index++ + if enumVal == nativeInput { + break + } + if index == len(nativeInput.Values()) { + panic("Input value did not found in enum values") + } + + } + var enum interface{} + for allEnums, i := dafny.Iterate(AwsCryptographyDbEncryptionSdkDynamoDbTypes.CompanionStruct_LegacyPolicy_{}.AllSingletonConstructors()), 0; i < index; i++ { + var ok bool + enum, ok = allEnums() + if !ok { + break + } + } + return enum.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.LegacyPolicy) + }() + +} + +func LegacyOverride_ToDafny(nativeInput awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.LegacyOverride) AwsCryptographyDbEncryptionSdkDynamoDbTypes.LegacyOverride { + return func() AwsCryptographyDbEncryptionSdkDynamoDbTypes.LegacyOverride { + + return AwsCryptographyDbEncryptionSdkDynamoDbTypes.Companion_LegacyOverride_.Create_LegacyOverride_(Aws_cryptography_dbEncryptionSdk_dynamoDb_LegacyOverride_policy_ToDafny(nativeInput.Policy), LegacyDynamoDbEncryptor_ToDafny(nativeInput.Encryptor), Aws_cryptography_dbEncryptionSdk_dynamoDb_LegacyOverride_attributeActionsOnEncrypt_ToDafny(nativeInput.AttributeActionsOnEncrypt), Aws_cryptography_dbEncryptionSdk_dynamoDb_LegacyOverride_defaultAttributeFlag_ToDafny(nativeInput.DefaultAttributeFlag)) + }() + +} + +func PlaintextOverride_ToDafny(nativeInput awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.PlaintextOverride) AwsCryptographyDbEncryptionSdkDynamoDbTypes.PlaintextOverride { + return func() AwsCryptographyDbEncryptionSdkDynamoDbTypes.PlaintextOverride { + + var index int + for _, enumVal := range nativeInput.Values() { + index++ + if enumVal == nativeInput { + break + } + if index == len(nativeInput.Values()) { + panic("Input value did not found in enum values") + } + + } + var enum interface{} + for allEnums, i := dafny.Iterate(AwsCryptographyDbEncryptionSdkDynamoDbTypes.CompanionStruct_PlaintextOverride_{}.AllSingletonConstructors()), 0; i < index; i++ { + var ok bool + enum, ok = allEnums() + if !ok { + break + } + } + return enum.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.PlaintextOverride) + }() + +} + +func SearchConfig_ToDafny(nativeInput awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.SearchConfig) AwsCryptographyDbEncryptionSdkDynamoDbTypes.SearchConfig { + return func() AwsCryptographyDbEncryptionSdkDynamoDbTypes.SearchConfig { + + return AwsCryptographyDbEncryptionSdkDynamoDbTypes.Companion_SearchConfig_.Create_SearchConfig_(Aws_cryptography_dbEncryptionSdk_dynamoDb_SearchConfig_versions_ToDafny(nativeInput.Versions), Aws_cryptography_dbEncryptionSdk_dynamoDb_SearchConfig_writeVersion_ToDafny(nativeInput.WriteVersion)) + }() + +} + +func DynamoDbTableEncryptionConfig_ToDafny(nativeInput awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.DynamoDbTableEncryptionConfig) AwsCryptographyDbEncryptionSdkDynamoDbTypes.DynamoDbTableEncryptionConfig { + return func() AwsCryptographyDbEncryptionSdkDynamoDbTypes.DynamoDbTableEncryptionConfig { + + return AwsCryptographyDbEncryptionSdkDynamoDbTypes.Companion_DynamoDbTableEncryptionConfig_.Create_DynamoDbTableEncryptionConfig_(Aws_cryptography_dbEncryptionSdk_dynamoDb_DynamoDbTableEncryptionConfig_logicalTableName_ToDafny(nativeInput.LogicalTableName), Aws_cryptography_dbEncryptionSdk_dynamoDb_DynamoDbTableEncryptionConfig_partitionKeyName_ToDafny(nativeInput.PartitionKeyName), Aws_cryptography_dbEncryptionSdk_dynamoDb_DynamoDbTableEncryptionConfig_sortKeyName_ToDafny(nativeInput.SortKeyName), Aws_cryptography_dbEncryptionSdk_dynamoDb_DynamoDbTableEncryptionConfig_search_ToDafny(nativeInput.Search), Aws_cryptography_dbEncryptionSdk_dynamoDb_DynamoDbTableEncryptionConfig_attributeActionsOnEncrypt_ToDafny(nativeInput.AttributeActionsOnEncrypt), Aws_cryptography_dbEncryptionSdk_dynamoDb_DynamoDbTableEncryptionConfig_allowedUnsignedAttributes_ToDafny(nativeInput.AllowedUnsignedAttributes), Aws_cryptography_dbEncryptionSdk_dynamoDb_DynamoDbTableEncryptionConfig_allowedUnsignedAttributePrefix_ToDafny(nativeInput.AllowedUnsignedAttributePrefix), Aws_cryptography_dbEncryptionSdk_dynamoDb_DynamoDbTableEncryptionConfig_algorithmSuiteId_ToDafny(nativeInput.AlgorithmSuiteId), func() Wrappers.Option { + if (nativeInput.Keyring) == nil { + return Wrappers.Companion_Option_.Create_None_() + } + return Wrappers.Companion_Option_.Create_Some_(awscryptographymaterialproviderssmithygenerated.Keyring_ToDafny(nativeInput.Keyring)) + }(), func() Wrappers.Option { + if (nativeInput.Cmm) == nil { + return Wrappers.Companion_Option_.Create_None_() + } + return Wrappers.Companion_Option_.Create_Some_(awscryptographymaterialproviderssmithygenerated.CryptographicMaterialsManager_ToDafny(nativeInput.Cmm)) + }(), Aws_cryptography_dbEncryptionSdk_dynamoDb_DynamoDbTableEncryptionConfig_legacyOverride_ToDafny(nativeInput.LegacyOverride), Aws_cryptography_dbEncryptionSdk_dynamoDb_DynamoDbTableEncryptionConfig_plaintextOverride_ToDafny(nativeInput.PlaintextOverride)) + }() + +} + +func DynamoDbTablesEncryptionConfig_ToDafny(nativeInput awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.DynamoDbTablesEncryptionConfig) AwsCryptographyDbEncryptionSdkDynamoDbTypes.DynamoDbTablesEncryptionConfig { + return func() AwsCryptographyDbEncryptionSdkDynamoDbTypes.DynamoDbTablesEncryptionConfig { + + return AwsCryptographyDbEncryptionSdkDynamoDbTypes.Companion_DynamoDbTablesEncryptionConfig_.Create_DynamoDbTablesEncryptionConfig_(Aws_cryptography_dbEncryptionSdk_dynamoDb_DynamoDbTablesEncryptionConfig_tableEncryptionConfigs_ToDafny(nativeInput.TableEncryptionConfigs)) + }() + +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_GetEncryptedDataKeyDescriptionInput_input_ToDafny(input awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.GetEncryptedDataKeyDescriptionUnion) AwsCryptographyDbEncryptionSdkDynamoDbTypes.GetEncryptedDataKeyDescriptionUnion { + return func() AwsCryptographyDbEncryptionSdkDynamoDbTypes.GetEncryptedDataKeyDescriptionUnion { + + switch input.(type) { + case *awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.GetEncryptedDataKeyDescriptionUnionMemberheader: + var inputToConversion = Aws_cryptography_dbEncryptionSdk_dynamoDb_GetEncryptedDataKeyDescriptionUnion_header_ToDafny(input.(*awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.GetEncryptedDataKeyDescriptionUnionMemberheader).Value) + return AwsCryptographyDbEncryptionSdkDynamoDbTypes.CompanionStruct_GetEncryptedDataKeyDescriptionUnion_{}.Create_header_(inputToConversion.UnwrapOr(nil).(dafny.Sequence)) + case *awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.GetEncryptedDataKeyDescriptionUnionMemberitem: + var inputToConversion = Aws_cryptography_dbEncryptionSdk_dynamoDb_GetEncryptedDataKeyDescriptionUnion_item_ToDafny(input.(*awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.GetEncryptedDataKeyDescriptionUnionMemberitem).Value) + return AwsCryptographyDbEncryptionSdkDynamoDbTypes.CompanionStruct_GetEncryptedDataKeyDescriptionUnion_{}.Create_item_(inputToConversion.UnwrapOr(nil).(dafny.Map)) + + default: + panic("Unhandled union type") + } + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_GetEncryptedDataKeyDescriptionUnion_header_ToDafny(input []byte) Wrappers.Option { + return func() Wrappers.Option { + v := make([]interface{}, 0, len(input)) + if input == nil { + return Wrappers.Companion_Option_.Create_None_() + } + for _, e := range input { + v = append(v, e) + } + return Wrappers.Companion_Option_.Create_Some_(dafny.SeqFromArray(v, false)) + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_GetEncryptedDataKeyDescriptionUnion_item_ToDafny(input map[string]dynamodbtypes.AttributeValue) Wrappers.Option { + return func() Wrappers.Option { + fieldValue := dafny.NewMapBuilder() + for key, val := range input { + fieldValue.Add(comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_AttributeMap_key_ToDafny(key), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_AttributeMap_value_ToDafny(val)) + } + return Wrappers.Companion_Option_.Create_Some_(fieldValue.ToMap()) + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_GetEncryptedDataKeyDescriptionOutput_EncryptedDataKeyDescriptionOutput_ToDafny(input []awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.EncryptedDataKeyDescription) dafny.Sequence { + return func() dafny.Sequence { + + var fieldValue []interface{} = make([]interface{}, 0, len(input)) + for _, val := range input { + element := Aws_cryptography_dbEncryptionSdk_dynamoDb_EncryptedDataKeyDescriptionList_member_ToDafny(val) + fieldValue = append(fieldValue, element) + } + return dafny.SeqOf(fieldValue...) + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_EncryptedDataKeyDescriptionList_member_ToDafny(input awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.EncryptedDataKeyDescription) AwsCryptographyDbEncryptionSdkDynamoDbTypes.EncryptedDataKeyDescription { + return func() AwsCryptographyDbEncryptionSdkDynamoDbTypes.EncryptedDataKeyDescription { + + return AwsCryptographyDbEncryptionSdkDynamoDbTypes.Companion_EncryptedDataKeyDescription_.Create_EncryptedDataKeyDescription_(Aws_cryptography_dbEncryptionSdk_dynamoDb_EncryptedDataKeyDescription_keyProviderId_ToDafny(input.KeyProviderId), Aws_cryptography_dbEncryptionSdk_dynamoDb_EncryptedDataKeyDescription_keyProviderInfo_ToDafny(input.KeyProviderInfo), Aws_cryptography_dbEncryptionSdk_dynamoDb_EncryptedDataKeyDescription_branchKeyId_ToDafny(input.BranchKeyId), Aws_cryptography_dbEncryptionSdk_dynamoDb_EncryptedDataKeyDescription_branchKeyVersion_ToDafny(input.BranchKeyVersion)) + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_EncryptedDataKeyDescription_keyProviderId_ToDafny(input string) dafny.Sequence { + return func() dafny.Sequence { + + return func() dafny.Sequence { + res, err := UTF8.DecodeFromNativeGoByteArray([]byte(input)) + if err != nil { + panic("invalid utf8 input provided") + } + return res + }() + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_EncryptedDataKeyDescription_keyProviderInfo_ToDafny(input *string) Wrappers.Option { + return func() Wrappers.Option { + if input == nil { + return Wrappers.Companion_Option_.Create_None_() + } + return Wrappers.Companion_Option_.Create_Some_(func() dafny.Sequence { + res, err := UTF8.DecodeFromNativeGoByteArray([]byte(*input)) + if err != nil { + panic("invalid utf8 input provided") + } + return res + }()) + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_EncryptedDataKeyDescription_branchKeyId_ToDafny(input *string) Wrappers.Option { + return func() Wrappers.Option { + if input == nil { + return Wrappers.Companion_Option_.Create_None_() + } + return Wrappers.Companion_Option_.Create_Some_(func() dafny.Sequence { + res, err := UTF8.DecodeFromNativeGoByteArray([]byte(*input)) + if err != nil { + panic("invalid utf8 input provided") + } + return res + }()) + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_EncryptedDataKeyDescription_branchKeyVersion_ToDafny(input *string) Wrappers.Option { + return func() Wrappers.Option { + if input == nil { + return Wrappers.Companion_Option_.Create_None_() + } + return Wrappers.Companion_Option_.Create_Some_(func() dafny.Sequence { + res, err := UTF8.DecodeFromNativeGoByteArray([]byte(*input)) + if err != nil { + panic("invalid utf8 input provided") + } + return res + }()) + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_GetBranchKeyIdFromDdbKeyInput_ddbKey_ToDafny(input map[string]dynamodbtypes.AttributeValue) dafny.Map { + return func() dafny.Map { + fieldValue := dafny.NewMapBuilder() + for key, val := range input { + fieldValue.Add(comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_Key_key_ToDafny(key), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_Key_value_ToDafny(val)) + } + return fieldValue.ToMap() + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_GetBranchKeyIdFromDdbKeyOutput_branchKeyId_ToDafny(input string) dafny.Sequence { + return func() dafny.Sequence { + + return func() dafny.Sequence { + res, err := UTF8.DecodeFromNativeGoByteArray([]byte(input)) + if err != nil { + panic("invalid utf8 input provided") + } + return res + }() + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_DynamoDbEncryptionException_message_ToDafny(input string) dafny.Sequence { + return func() dafny.Sequence { + + return func() dafny.Sequence { + res, err := UTF8.DecodeFromNativeGoByteArray([]byte(input)) + if err != nil { + panic("invalid utf8 input provided") + } + return res + }() + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_MultiKeyStore_keyFieldName_ToDafny(input string) dafny.Sequence { + return func() dafny.Sequence { + + return func() dafny.Sequence { + res, err := UTF8.DecodeFromNativeGoByteArray([]byte(input)) + if err != nil { + panic("invalid utf8 input provided") + } + return res + }() + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_MultiKeyStore_cacheTTL_ToDafny(input int32) int32 { + return func() int32 { + + return input + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_MultiKeyStore_cache_ToDafny(input awscryptographymaterialproviderssmithygeneratedtypes.CacheType) Wrappers.Option { + return func() Wrappers.Option { + if input == nil { + return Wrappers.Companion_Option_.Create_None_() + } + switch input.(type) { + case *awscryptographymaterialproviderssmithygeneratedtypes.CacheTypeMemberDefault: + var inputToConversion = awscryptographymaterialproviderssmithygenerated.Aws_cryptography_materialProviders_CacheType_Default_ToDafny(input.(*awscryptographymaterialproviderssmithygeneratedtypes.CacheTypeMemberDefault).Value) + return Wrappers.Companion_Option_.Create_Some_(AwsCryptographyMaterialProvidersTypes.CompanionStruct_CacheType_{}.Create_Default_(inputToConversion.UnwrapOr(nil).(AwsCryptographyMaterialProvidersTypes.DefaultCache))) + case *awscryptographymaterialproviderssmithygeneratedtypes.CacheTypeMemberNo: + var inputToConversion = awscryptographymaterialproviderssmithygenerated.Aws_cryptography_materialProviders_CacheType_No_ToDafny(input.(*awscryptographymaterialproviderssmithygeneratedtypes.CacheTypeMemberNo).Value) + return Wrappers.Companion_Option_.Create_Some_(AwsCryptographyMaterialProvidersTypes.CompanionStruct_CacheType_{}.Create_No_(inputToConversion.UnwrapOr(nil).(AwsCryptographyMaterialProvidersTypes.NoCache))) + case *awscryptographymaterialproviderssmithygeneratedtypes.CacheTypeMemberSingleThreaded: + var inputToConversion = awscryptographymaterialproviderssmithygenerated.Aws_cryptography_materialProviders_CacheType_SingleThreaded_ToDafny(input.(*awscryptographymaterialproviderssmithygeneratedtypes.CacheTypeMemberSingleThreaded).Value) + return Wrappers.Companion_Option_.Create_Some_(AwsCryptographyMaterialProvidersTypes.CompanionStruct_CacheType_{}.Create_SingleThreaded_(inputToConversion.UnwrapOr(nil).(AwsCryptographyMaterialProvidersTypes.SingleThreadedCache))) + case *awscryptographymaterialproviderssmithygeneratedtypes.CacheTypeMemberMultiThreaded: + var inputToConversion = awscryptographymaterialproviderssmithygenerated.Aws_cryptography_materialProviders_CacheType_MultiThreaded_ToDafny(input.(*awscryptographymaterialproviderssmithygeneratedtypes.CacheTypeMemberMultiThreaded).Value) + return Wrappers.Companion_Option_.Create_Some_(AwsCryptographyMaterialProvidersTypes.CompanionStruct_CacheType_{}.Create_MultiThreaded_(inputToConversion.UnwrapOr(nil).(AwsCryptographyMaterialProvidersTypes.MultiThreadedCache))) + case *awscryptographymaterialproviderssmithygeneratedtypes.CacheTypeMemberStormTracking: + var inputToConversion = awscryptographymaterialproviderssmithygenerated.Aws_cryptography_materialProviders_CacheType_StormTracking_ToDafny(input.(*awscryptographymaterialproviderssmithygeneratedtypes.CacheTypeMemberStormTracking).Value) + return Wrappers.Companion_Option_.Create_Some_(AwsCryptographyMaterialProvidersTypes.CompanionStruct_CacheType_{}.Create_StormTracking_(inputToConversion.UnwrapOr(nil).(AwsCryptographyMaterialProvidersTypes.StormTrackingCache))) + case *awscryptographymaterialproviderssmithygeneratedtypes.CacheTypeMemberShared: + var inputToConversion = func() Wrappers.Option { + if (input.(*awscryptographymaterialproviderssmithygeneratedtypes.CacheTypeMemberShared).Value) == nil { + return Wrappers.Companion_Option_.Create_None_() + } + return Wrappers.Companion_Option_.Create_Some_(awscryptographymaterialproviderssmithygenerated.CryptographicMaterialsCache_ToDafny(input.(*awscryptographymaterialproviderssmithygeneratedtypes.CacheTypeMemberShared).Value)) + }() + return Wrappers.Companion_Option_.Create_Some_(AwsCryptographyMaterialProvidersTypes.CompanionStruct_CacheType_{}.Create_Shared_(inputToConversion.UnwrapOr(nil).(AwsCryptographyMaterialProvidersTypes.ICryptographicMaterialsCache))) + + default: + panic("Unhandled union type") + } + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_MultiKeyStore_partitionId_ToDafny(input *string) Wrappers.Option { + return func() Wrappers.Option { + if input == nil { + return Wrappers.Companion_Option_.Create_None_() + } + return Wrappers.Companion_Option_.Create_Some_(func() dafny.Sequence { + res, err := UTF8.DecodeFromNativeGoByteArray([]byte(*input)) + if err != nil { + panic("invalid utf8 input provided") + } + return res + }()) + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_SingleKeyStore_keyId_ToDafny(input string) dafny.Sequence { + return func() dafny.Sequence { + + return func() dafny.Sequence { + res, err := UTF8.DecodeFromNativeGoByteArray([]byte(input)) + if err != nil { + panic("invalid utf8 input provided") + } + return res + }() + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_SingleKeyStore_cacheTTL_ToDafny(input int32) int32 { + return func() int32 { + + return input + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_SingleKeyStore_cache_ToDafny(input awscryptographymaterialproviderssmithygeneratedtypes.CacheType) Wrappers.Option { + return func() Wrappers.Option { + if input == nil { + return Wrappers.Companion_Option_.Create_None_() + } + switch input.(type) { + case *awscryptographymaterialproviderssmithygeneratedtypes.CacheTypeMemberDefault: + var inputToConversion = awscryptographymaterialproviderssmithygenerated.Aws_cryptography_materialProviders_CacheType_Default_ToDafny(input.(*awscryptographymaterialproviderssmithygeneratedtypes.CacheTypeMemberDefault).Value) + return Wrappers.Companion_Option_.Create_Some_(AwsCryptographyMaterialProvidersTypes.CompanionStruct_CacheType_{}.Create_Default_(inputToConversion.UnwrapOr(nil).(AwsCryptographyMaterialProvidersTypes.DefaultCache))) + case *awscryptographymaterialproviderssmithygeneratedtypes.CacheTypeMemberNo: + var inputToConversion = awscryptographymaterialproviderssmithygenerated.Aws_cryptography_materialProviders_CacheType_No_ToDafny(input.(*awscryptographymaterialproviderssmithygeneratedtypes.CacheTypeMemberNo).Value) + return Wrappers.Companion_Option_.Create_Some_(AwsCryptographyMaterialProvidersTypes.CompanionStruct_CacheType_{}.Create_No_(inputToConversion.UnwrapOr(nil).(AwsCryptographyMaterialProvidersTypes.NoCache))) + case *awscryptographymaterialproviderssmithygeneratedtypes.CacheTypeMemberSingleThreaded: + var inputToConversion = awscryptographymaterialproviderssmithygenerated.Aws_cryptography_materialProviders_CacheType_SingleThreaded_ToDafny(input.(*awscryptographymaterialproviderssmithygeneratedtypes.CacheTypeMemberSingleThreaded).Value) + return Wrappers.Companion_Option_.Create_Some_(AwsCryptographyMaterialProvidersTypes.CompanionStruct_CacheType_{}.Create_SingleThreaded_(inputToConversion.UnwrapOr(nil).(AwsCryptographyMaterialProvidersTypes.SingleThreadedCache))) + case *awscryptographymaterialproviderssmithygeneratedtypes.CacheTypeMemberMultiThreaded: + var inputToConversion = awscryptographymaterialproviderssmithygenerated.Aws_cryptography_materialProviders_CacheType_MultiThreaded_ToDafny(input.(*awscryptographymaterialproviderssmithygeneratedtypes.CacheTypeMemberMultiThreaded).Value) + return Wrappers.Companion_Option_.Create_Some_(AwsCryptographyMaterialProvidersTypes.CompanionStruct_CacheType_{}.Create_MultiThreaded_(inputToConversion.UnwrapOr(nil).(AwsCryptographyMaterialProvidersTypes.MultiThreadedCache))) + case *awscryptographymaterialproviderssmithygeneratedtypes.CacheTypeMemberStormTracking: + var inputToConversion = awscryptographymaterialproviderssmithygenerated.Aws_cryptography_materialProviders_CacheType_StormTracking_ToDafny(input.(*awscryptographymaterialproviderssmithygeneratedtypes.CacheTypeMemberStormTracking).Value) + return Wrappers.Companion_Option_.Create_Some_(AwsCryptographyMaterialProvidersTypes.CompanionStruct_CacheType_{}.Create_StormTracking_(inputToConversion.UnwrapOr(nil).(AwsCryptographyMaterialProvidersTypes.StormTrackingCache))) + case *awscryptographymaterialproviderssmithygeneratedtypes.CacheTypeMemberShared: + var inputToConversion = func() Wrappers.Option { + if (input.(*awscryptographymaterialproviderssmithygeneratedtypes.CacheTypeMemberShared).Value) == nil { + return Wrappers.Companion_Option_.Create_None_() + } + return Wrappers.Companion_Option_.Create_Some_(awscryptographymaterialproviderssmithygenerated.CryptographicMaterialsCache_ToDafny(input.(*awscryptographymaterialproviderssmithygeneratedtypes.CacheTypeMemberShared).Value)) + }() + return Wrappers.Companion_Option_.Create_Some_(AwsCryptographyMaterialProvidersTypes.CompanionStruct_CacheType_{}.Create_Shared_(inputToConversion.UnwrapOr(nil).(AwsCryptographyMaterialProvidersTypes.ICryptographicMaterialsCache))) + + default: + panic("Unhandled union type") + } + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_SingleKeyStore_partitionId_ToDafny(input *string) Wrappers.Option { + return func() Wrappers.Option { + if input == nil { + return Wrappers.Companion_Option_.Create_None_() + } + return Wrappers.Companion_Option_.Create_Some_(func() dafny.Sequence { + res, err := UTF8.DecodeFromNativeGoByteArray([]byte(*input)) + if err != nil { + panic("invalid utf8 input provided") + } + return res + }()) + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_BeaconKeySource_single_ToDafny(input awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.SingleKeyStore) Wrappers.Option { + return func() Wrappers.Option { + + return Wrappers.Companion_Option_.Create_Some_(AwsCryptographyDbEncryptionSdkDynamoDbTypes.Companion_SingleKeyStore_.Create_SingleKeyStore_(Aws_cryptography_dbEncryptionSdk_dynamoDb_SingleKeyStore_keyId_ToDafny(input.KeyId), Aws_cryptography_dbEncryptionSdk_dynamoDb_SingleKeyStore_cacheTTL_ToDafny(input.CacheTTL), Aws_cryptography_dbEncryptionSdk_dynamoDb_SingleKeyStore_cache_ToDafny(input.Cache), Aws_cryptography_dbEncryptionSdk_dynamoDb_SingleKeyStore_partitionId_ToDafny(input.PartitionId))) + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_BeaconKeySource_multi_ToDafny(input awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.MultiKeyStore) Wrappers.Option { + return func() Wrappers.Option { + + return Wrappers.Companion_Option_.Create_Some_(AwsCryptographyDbEncryptionSdkDynamoDbTypes.Companion_MultiKeyStore_.Create_MultiKeyStore_(Aws_cryptography_dbEncryptionSdk_dynamoDb_MultiKeyStore_keyFieldName_ToDafny(input.KeyFieldName), Aws_cryptography_dbEncryptionSdk_dynamoDb_MultiKeyStore_cacheTTL_ToDafny(input.CacheTTL), Aws_cryptography_dbEncryptionSdk_dynamoDb_MultiKeyStore_cache_ToDafny(input.Cache), Aws_cryptography_dbEncryptionSdk_dynamoDb_MultiKeyStore_partitionId_ToDafny(input.PartitionId))) + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_Shared_other_ToDafny(input string) dafny.Sequence { + return func() dafny.Sequence { + + return func() dafny.Sequence { + res, err := UTF8.DecodeFromNativeGoByteArray([]byte(input)) + if err != nil { + panic("invalid utf8 input provided") + } + return res + }() + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_SharedSet_other_ToDafny(input string) dafny.Sequence { + return func() dafny.Sequence { + + return func() dafny.Sequence { + res, err := UTF8.DecodeFromNativeGoByteArray([]byte(input)) + if err != nil { + panic("invalid utf8 input provided") + } + return res + }() + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_BeaconStyle_partOnly_ToDafny(input awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.PartOnly) Wrappers.Option { + return func() Wrappers.Option { + + return Wrappers.Companion_Option_.Create_Some_(AwsCryptographyDbEncryptionSdkDynamoDbTypes.Companion_PartOnly_.Create_PartOnly_()) + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_BeaconStyle_shared_ToDafny(input awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.Shared) Wrappers.Option { + return func() Wrappers.Option { + + return Wrappers.Companion_Option_.Create_Some_(AwsCryptographyDbEncryptionSdkDynamoDbTypes.Companion_Shared_.Create_Shared_(Aws_cryptography_dbEncryptionSdk_dynamoDb_Shared_other_ToDafny(input.Other))) + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_BeaconStyle_asSet_ToDafny(input awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.AsSet) Wrappers.Option { + return func() Wrappers.Option { + + return Wrappers.Companion_Option_.Create_Some_(AwsCryptographyDbEncryptionSdkDynamoDbTypes.Companion_AsSet_.Create_AsSet_()) + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_BeaconStyle_sharedSet_ToDafny(input awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.SharedSet) Wrappers.Option { + return func() Wrappers.Option { + + return Wrappers.Companion_Option_.Create_Some_(AwsCryptographyDbEncryptionSdkDynamoDbTypes.Companion_SharedSet_.Create_SharedSet_(Aws_cryptography_dbEncryptionSdk_dynamoDb_SharedSet_other_ToDafny(input.Other))) + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_ConstructorPart_name_ToDafny(input string) dafny.Sequence { + return func() dafny.Sequence { + + return func() dafny.Sequence { + res, err := UTF8.DecodeFromNativeGoByteArray([]byte(input)) + if err != nil { + panic("invalid utf8 input provided") + } + return res + }() + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_ConstructorPart_required_ToDafny(input bool) bool { + return func() bool { + + return input + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_Constructor_parts_ToDafny(input []awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.ConstructorPart) dafny.Sequence { + return func() dafny.Sequence { + + var fieldValue []interface{} = make([]interface{}, 0, len(input)) + for _, val := range input { + element := Aws_cryptography_dbEncryptionSdk_dynamoDb_ConstructorPartList_member_ToDafny(val) + fieldValue = append(fieldValue, element) + } + return dafny.SeqOf(fieldValue...) + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_ConstructorPartList_member_ToDafny(input awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.ConstructorPart) AwsCryptographyDbEncryptionSdkDynamoDbTypes.ConstructorPart { + return func() AwsCryptographyDbEncryptionSdkDynamoDbTypes.ConstructorPart { + + return AwsCryptographyDbEncryptionSdkDynamoDbTypes.Companion_ConstructorPart_.Create_ConstructorPart_(Aws_cryptography_dbEncryptionSdk_dynamoDb_ConstructorPart_name_ToDafny(input.Name), Aws_cryptography_dbEncryptionSdk_dynamoDb_ConstructorPart_required_ToDafny(input.Required)) + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_EncryptedPart_name_ToDafny(input string) dafny.Sequence { + return func() dafny.Sequence { + + return func() dafny.Sequence { + res, err := UTF8.DecodeFromNativeGoByteArray([]byte(input)) + if err != nil { + panic("invalid utf8 input provided") + } + return res + }() + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_EncryptedPart_prefix_ToDafny(input string) dafny.Sequence { + return func() dafny.Sequence { + + return func() dafny.Sequence { + res, err := UTF8.DecodeFromNativeGoByteArray([]byte(input)) + if err != nil { + panic("invalid utf8 input provided") + } + return res + }() + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_SignedPart_name_ToDafny(input string) dafny.Sequence { + return func() dafny.Sequence { + + return func() dafny.Sequence { + res, err := UTF8.DecodeFromNativeGoByteArray([]byte(input)) + if err != nil { + panic("invalid utf8 input provided") + } + return res + }() + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_SignedPart_prefix_ToDafny(input string) dafny.Sequence { + return func() dafny.Sequence { + + return func() dafny.Sequence { + res, err := UTF8.DecodeFromNativeGoByteArray([]byte(input)) + if err != nil { + panic("invalid utf8 input provided") + } + return res + }() + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_SignedPart_loc_ToDafny(input *string) Wrappers.Option { + return func() Wrappers.Option { + if input == nil { + return Wrappers.Companion_Option_.Create_None_() + } + return Wrappers.Companion_Option_.Create_Some_(func() dafny.Sequence { + res, err := UTF8.DecodeFromNativeGoByteArray([]byte(*input)) + if err != nil { + panic("invalid utf8 input provided") + } + return res + }()) + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_CompoundBeacon_name_ToDafny(input string) dafny.Sequence { + return func() dafny.Sequence { + + return func() dafny.Sequence { + res, err := UTF8.DecodeFromNativeGoByteArray([]byte(input)) + if err != nil { + panic("invalid utf8 input provided") + } + return res + }() + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_CompoundBeacon_split_ToDafny(input string) dafny.Sequence { + return func() dafny.Sequence { + + return func() dafny.Sequence { + res, err := UTF8.DecodeFromNativeGoByteArray([]byte(input)) + if err != nil { + panic("invalid utf8 input provided") + } + return res + }() + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_CompoundBeacon_encrypted_ToDafny(input []awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.EncryptedPart) Wrappers.Option { + return func() Wrappers.Option { + if input == nil { + return Wrappers.Companion_Option_.Create_None_() + } + var fieldValue []interface{} = make([]interface{}, 0, len(input)) + for _, val := range input { + element := Aws_cryptography_dbEncryptionSdk_dynamoDb_EncryptedPartsList_member_ToDafny(val) + fieldValue = append(fieldValue, element) + } + return Wrappers.Companion_Option_.Create_Some_(dafny.SeqOf(fieldValue...)) + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_EncryptedPartsList_member_ToDafny(input awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.EncryptedPart) AwsCryptographyDbEncryptionSdkDynamoDbTypes.EncryptedPart { + return func() AwsCryptographyDbEncryptionSdkDynamoDbTypes.EncryptedPart { + + return AwsCryptographyDbEncryptionSdkDynamoDbTypes.Companion_EncryptedPart_.Create_EncryptedPart_(Aws_cryptography_dbEncryptionSdk_dynamoDb_EncryptedPart_name_ToDafny(input.Name), Aws_cryptography_dbEncryptionSdk_dynamoDb_EncryptedPart_prefix_ToDafny(input.Prefix)) + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_CompoundBeacon_signed_ToDafny(input []awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.SignedPart) Wrappers.Option { + return func() Wrappers.Option { + if input == nil { + return Wrappers.Companion_Option_.Create_None_() + } + var fieldValue []interface{} = make([]interface{}, 0, len(input)) + for _, val := range input { + element := Aws_cryptography_dbEncryptionSdk_dynamoDb_SignedPartsList_member_ToDafny(val) + fieldValue = append(fieldValue, element) + } + return Wrappers.Companion_Option_.Create_Some_(dafny.SeqOf(fieldValue...)) + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_SignedPartsList_member_ToDafny(input awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.SignedPart) AwsCryptographyDbEncryptionSdkDynamoDbTypes.SignedPart { + return func() AwsCryptographyDbEncryptionSdkDynamoDbTypes.SignedPart { + + return AwsCryptographyDbEncryptionSdkDynamoDbTypes.Companion_SignedPart_.Create_SignedPart_(Aws_cryptography_dbEncryptionSdk_dynamoDb_SignedPart_name_ToDafny(input.Name), Aws_cryptography_dbEncryptionSdk_dynamoDb_SignedPart_prefix_ToDafny(input.Prefix), Aws_cryptography_dbEncryptionSdk_dynamoDb_SignedPart_loc_ToDafny(input.Loc)) + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_CompoundBeacon_constructors_ToDafny(input []awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.Constructor) Wrappers.Option { + return func() Wrappers.Option { + if input == nil { + return Wrappers.Companion_Option_.Create_None_() + } + var fieldValue []interface{} = make([]interface{}, 0, len(input)) + for _, val := range input { + element := Aws_cryptography_dbEncryptionSdk_dynamoDb_ConstructorList_member_ToDafny(val) + fieldValue = append(fieldValue, element) + } + return Wrappers.Companion_Option_.Create_Some_(dafny.SeqOf(fieldValue...)) + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_ConstructorList_member_ToDafny(input awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.Constructor) AwsCryptographyDbEncryptionSdkDynamoDbTypes.Constructor { + return func() AwsCryptographyDbEncryptionSdkDynamoDbTypes.Constructor { + + return AwsCryptographyDbEncryptionSdkDynamoDbTypes.Companion_Constructor_.Create_Constructor_(Aws_cryptography_dbEncryptionSdk_dynamoDb_Constructor_parts_ToDafny(input.Parts)) + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_StandardBeacon_name_ToDafny(input string) dafny.Sequence { + return func() dafny.Sequence { + + return func() dafny.Sequence { + res, err := UTF8.DecodeFromNativeGoByteArray([]byte(input)) + if err != nil { + panic("invalid utf8 input provided") + } + return res + }() + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_StandardBeacon_length_ToDafny(input int32) int32 { + return func() int32 { + + return input + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_StandardBeacon_loc_ToDafny(input *string) Wrappers.Option { + return func() Wrappers.Option { + if input == nil { + return Wrappers.Companion_Option_.Create_None_() + } + return Wrappers.Companion_Option_.Create_Some_(func() dafny.Sequence { + res, err := UTF8.DecodeFromNativeGoByteArray([]byte(*input)) + if err != nil { + panic("invalid utf8 input provided") + } + return res + }()) + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_StandardBeacon_style_ToDafny(input awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.BeaconStyle) Wrappers.Option { + return func() Wrappers.Option { + if input == nil { + return Wrappers.Companion_Option_.Create_None_() + } + switch input.(type) { + case *awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.BeaconStyleMemberpartOnly: + var inputToConversion = Aws_cryptography_dbEncryptionSdk_dynamoDb_BeaconStyle_partOnly_ToDafny(input.(*awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.BeaconStyleMemberpartOnly).Value) + return Wrappers.Companion_Option_.Create_Some_(AwsCryptographyDbEncryptionSdkDynamoDbTypes.CompanionStruct_BeaconStyle_{}.Create_partOnly_(inputToConversion.UnwrapOr(nil).(AwsCryptographyDbEncryptionSdkDynamoDbTypes.PartOnly))) + case *awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.BeaconStyleMembershared: + var inputToConversion = Aws_cryptography_dbEncryptionSdk_dynamoDb_BeaconStyle_shared_ToDafny(input.(*awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.BeaconStyleMembershared).Value) + return Wrappers.Companion_Option_.Create_Some_(AwsCryptographyDbEncryptionSdkDynamoDbTypes.CompanionStruct_BeaconStyle_{}.Create_shared_(inputToConversion.UnwrapOr(nil).(AwsCryptographyDbEncryptionSdkDynamoDbTypes.Shared))) + case *awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.BeaconStyleMemberasSet: + var inputToConversion = Aws_cryptography_dbEncryptionSdk_dynamoDb_BeaconStyle_asSet_ToDafny(input.(*awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.BeaconStyleMemberasSet).Value) + return Wrappers.Companion_Option_.Create_Some_(AwsCryptographyDbEncryptionSdkDynamoDbTypes.CompanionStruct_BeaconStyle_{}.Create_asSet_(inputToConversion.UnwrapOr(nil).(AwsCryptographyDbEncryptionSdkDynamoDbTypes.AsSet))) + case *awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.BeaconStyleMembersharedSet: + var inputToConversion = Aws_cryptography_dbEncryptionSdk_dynamoDb_BeaconStyle_sharedSet_ToDafny(input.(*awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.BeaconStyleMembersharedSet).Value) + return Wrappers.Companion_Option_.Create_Some_(AwsCryptographyDbEncryptionSdkDynamoDbTypes.CompanionStruct_BeaconStyle_{}.Create_sharedSet_(inputToConversion.UnwrapOr(nil).(AwsCryptographyDbEncryptionSdkDynamoDbTypes.SharedSet))) + + default: + panic("Unhandled union type") + } + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_Insert_literal_ToDafny(input string) dafny.Sequence { + return func() dafny.Sequence { + + return func() dafny.Sequence { + res, err := UTF8.DecodeFromNativeGoByteArray([]byte(input)) + if err != nil { + panic("invalid utf8 input provided") + } + return res + }() + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_GetPrefix_length_ToDafny(input int32) int32 { + return func() int32 { + + return input + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_GetSegment_split_ToDafny(input string) dafny.Sequence { + return func() dafny.Sequence { + + return func() dafny.Sequence { + res, err := UTF8.DecodeFromNativeGoByteArray([]byte(input)) + if err != nil { + panic("invalid utf8 input provided") + } + return res + }() + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_GetSegment_index_ToDafny(input int32) int32 { + return func() int32 { + + return input + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_GetSegments_split_ToDafny(input string) dafny.Sequence { + return func() dafny.Sequence { + + return func() dafny.Sequence { + res, err := UTF8.DecodeFromNativeGoByteArray([]byte(input)) + if err != nil { + panic("invalid utf8 input provided") + } + return res + }() + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_GetSegments_low_ToDafny(input int32) int32 { + return func() int32 { + + return input + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_GetSegments_high_ToDafny(input int32) int32 { + return func() int32 { + + return input + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_GetSubstring_low_ToDafny(input int32) int32 { + return func() int32 { + + return input + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_GetSubstring_high_ToDafny(input int32) int32 { + return func() int32 { + + return input + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_GetSuffix_length_ToDafny(input int32) int32 { + return func() int32 { + + return input + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_VirtualTransform_upper_ToDafny(input awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.Upper) Wrappers.Option { + return func() Wrappers.Option { + + return Wrappers.Companion_Option_.Create_Some_(AwsCryptographyDbEncryptionSdkDynamoDbTypes.Companion_Upper_.Create_Upper_()) + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_VirtualTransform_lower_ToDafny(input awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.Lower) Wrappers.Option { + return func() Wrappers.Option { + + return Wrappers.Companion_Option_.Create_Some_(AwsCryptographyDbEncryptionSdkDynamoDbTypes.Companion_Lower_.Create_Lower_()) + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_VirtualTransform_insert_ToDafny(input awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.Insert) Wrappers.Option { + return func() Wrappers.Option { + + return Wrappers.Companion_Option_.Create_Some_(AwsCryptographyDbEncryptionSdkDynamoDbTypes.Companion_Insert_.Create_Insert_(Aws_cryptography_dbEncryptionSdk_dynamoDb_Insert_literal_ToDafny(input.Literal))) + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_VirtualTransform_prefix_ToDafny(input awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.GetPrefix) Wrappers.Option { + return func() Wrappers.Option { + + return Wrappers.Companion_Option_.Create_Some_(AwsCryptographyDbEncryptionSdkDynamoDbTypes.Companion_GetPrefix_.Create_GetPrefix_(Aws_cryptography_dbEncryptionSdk_dynamoDb_GetPrefix_length_ToDafny(input.Length))) + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_VirtualTransform_suffix_ToDafny(input awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.GetSuffix) Wrappers.Option { + return func() Wrappers.Option { + + return Wrappers.Companion_Option_.Create_Some_(AwsCryptographyDbEncryptionSdkDynamoDbTypes.Companion_GetSuffix_.Create_GetSuffix_(Aws_cryptography_dbEncryptionSdk_dynamoDb_GetSuffix_length_ToDafny(input.Length))) + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_VirtualTransform_substring_ToDafny(input awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.GetSubstring) Wrappers.Option { + return func() Wrappers.Option { + + return Wrappers.Companion_Option_.Create_Some_(AwsCryptographyDbEncryptionSdkDynamoDbTypes.Companion_GetSubstring_.Create_GetSubstring_(Aws_cryptography_dbEncryptionSdk_dynamoDb_GetSubstring_low_ToDafny(input.Low), Aws_cryptography_dbEncryptionSdk_dynamoDb_GetSubstring_high_ToDafny(input.High))) + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_VirtualTransform_segment_ToDafny(input awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.GetSegment) Wrappers.Option { + return func() Wrappers.Option { + + return Wrappers.Companion_Option_.Create_Some_(AwsCryptographyDbEncryptionSdkDynamoDbTypes.Companion_GetSegment_.Create_GetSegment_(Aws_cryptography_dbEncryptionSdk_dynamoDb_GetSegment_split_ToDafny(input.Split), Aws_cryptography_dbEncryptionSdk_dynamoDb_GetSegment_index_ToDafny(input.Index))) + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_VirtualTransform_segments_ToDafny(input awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.GetSegments) Wrappers.Option { + return func() Wrappers.Option { + + return Wrappers.Companion_Option_.Create_Some_(AwsCryptographyDbEncryptionSdkDynamoDbTypes.Companion_GetSegments_.Create_GetSegments_(Aws_cryptography_dbEncryptionSdk_dynamoDb_GetSegments_split_ToDafny(input.Split), Aws_cryptography_dbEncryptionSdk_dynamoDb_GetSegments_low_ToDafny(input.Low), Aws_cryptography_dbEncryptionSdk_dynamoDb_GetSegments_high_ToDafny(input.High))) + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_VirtualPart_loc_ToDafny(input string) dafny.Sequence { + return func() dafny.Sequence { + + return func() dafny.Sequence { + res, err := UTF8.DecodeFromNativeGoByteArray([]byte(input)) + if err != nil { + panic("invalid utf8 input provided") + } + return res + }() + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_VirtualPart_trans_ToDafny(input []awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.VirtualTransform) Wrappers.Option { + return func() Wrappers.Option { + if input == nil { + return Wrappers.Companion_Option_.Create_None_() + } + var fieldValue []interface{} = make([]interface{}, 0, len(input)) + for _, val := range input { + element := Aws_cryptography_dbEncryptionSdk_dynamoDb_VirtualTransformList_member_ToDafny(val) + fieldValue = append(fieldValue, element) + } + return Wrappers.Companion_Option_.Create_Some_(dafny.SeqOf(fieldValue...)) + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_VirtualTransformList_member_ToDafny(input awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.VirtualTransform) AwsCryptographyDbEncryptionSdkDynamoDbTypes.VirtualTransform { + return func() AwsCryptographyDbEncryptionSdkDynamoDbTypes.VirtualTransform { + + switch input.(type) { + case *awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.VirtualTransformMemberupper: + var inputToConversion = Aws_cryptography_dbEncryptionSdk_dynamoDb_VirtualTransform_upper_ToDafny(input.(*awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.VirtualTransformMemberupper).Value) + return AwsCryptographyDbEncryptionSdkDynamoDbTypes.CompanionStruct_VirtualTransform_{}.Create_upper_(inputToConversion.UnwrapOr(nil).(AwsCryptographyDbEncryptionSdkDynamoDbTypes.Upper)) + case *awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.VirtualTransformMemberlower: + var inputToConversion = Aws_cryptography_dbEncryptionSdk_dynamoDb_VirtualTransform_lower_ToDafny(input.(*awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.VirtualTransformMemberlower).Value) + return AwsCryptographyDbEncryptionSdkDynamoDbTypes.CompanionStruct_VirtualTransform_{}.Create_lower_(inputToConversion.UnwrapOr(nil).(AwsCryptographyDbEncryptionSdkDynamoDbTypes.Lower)) + case *awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.VirtualTransformMemberinsert: + var inputToConversion = Aws_cryptography_dbEncryptionSdk_dynamoDb_VirtualTransform_insert_ToDafny(input.(*awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.VirtualTransformMemberinsert).Value) + return AwsCryptographyDbEncryptionSdkDynamoDbTypes.CompanionStruct_VirtualTransform_{}.Create_insert_(inputToConversion.UnwrapOr(nil).(AwsCryptographyDbEncryptionSdkDynamoDbTypes.Insert)) + case *awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.VirtualTransformMemberprefix: + var inputToConversion = Aws_cryptography_dbEncryptionSdk_dynamoDb_VirtualTransform_prefix_ToDafny(input.(*awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.VirtualTransformMemberprefix).Value) + return AwsCryptographyDbEncryptionSdkDynamoDbTypes.CompanionStruct_VirtualTransform_{}.Create_prefix_(inputToConversion.UnwrapOr(nil).(AwsCryptographyDbEncryptionSdkDynamoDbTypes.GetPrefix)) + case *awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.VirtualTransformMembersuffix: + var inputToConversion = Aws_cryptography_dbEncryptionSdk_dynamoDb_VirtualTransform_suffix_ToDafny(input.(*awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.VirtualTransformMembersuffix).Value) + return AwsCryptographyDbEncryptionSdkDynamoDbTypes.CompanionStruct_VirtualTransform_{}.Create_suffix_(inputToConversion.UnwrapOr(nil).(AwsCryptographyDbEncryptionSdkDynamoDbTypes.GetSuffix)) + case *awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.VirtualTransformMembersubstring: + var inputToConversion = Aws_cryptography_dbEncryptionSdk_dynamoDb_VirtualTransform_substring_ToDafny(input.(*awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.VirtualTransformMembersubstring).Value) + return AwsCryptographyDbEncryptionSdkDynamoDbTypes.CompanionStruct_VirtualTransform_{}.Create_substring_(inputToConversion.UnwrapOr(nil).(AwsCryptographyDbEncryptionSdkDynamoDbTypes.GetSubstring)) + case *awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.VirtualTransformMembersegment: + var inputToConversion = Aws_cryptography_dbEncryptionSdk_dynamoDb_VirtualTransform_segment_ToDafny(input.(*awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.VirtualTransformMembersegment).Value) + return AwsCryptographyDbEncryptionSdkDynamoDbTypes.CompanionStruct_VirtualTransform_{}.Create_segment_(inputToConversion.UnwrapOr(nil).(AwsCryptographyDbEncryptionSdkDynamoDbTypes.GetSegment)) + case *awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.VirtualTransformMembersegments: + var inputToConversion = Aws_cryptography_dbEncryptionSdk_dynamoDb_VirtualTransform_segments_ToDafny(input.(*awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.VirtualTransformMembersegments).Value) + return AwsCryptographyDbEncryptionSdkDynamoDbTypes.CompanionStruct_VirtualTransform_{}.Create_segments_(inputToConversion.UnwrapOr(nil).(AwsCryptographyDbEncryptionSdkDynamoDbTypes.GetSegments)) + + default: + panic("Unhandled union type") + } + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_VirtualField_name_ToDafny(input string) dafny.Sequence { + return func() dafny.Sequence { + + return func() dafny.Sequence { + res, err := UTF8.DecodeFromNativeGoByteArray([]byte(input)) + if err != nil { + panic("invalid utf8 input provided") + } + return res + }() + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_VirtualField_parts_ToDafny(input []awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.VirtualPart) dafny.Sequence { + return func() dafny.Sequence { + + var fieldValue []interface{} = make([]interface{}, 0, len(input)) + for _, val := range input { + element := Aws_cryptography_dbEncryptionSdk_dynamoDb_VirtualPartList_member_ToDafny(val) + fieldValue = append(fieldValue, element) + } + return dafny.SeqOf(fieldValue...) + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_VirtualPartList_member_ToDafny(input awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.VirtualPart) AwsCryptographyDbEncryptionSdkDynamoDbTypes.VirtualPart { + return func() AwsCryptographyDbEncryptionSdkDynamoDbTypes.VirtualPart { + + return AwsCryptographyDbEncryptionSdkDynamoDbTypes.Companion_VirtualPart_.Create_VirtualPart_(Aws_cryptography_dbEncryptionSdk_dynamoDb_VirtualPart_loc_ToDafny(input.Loc), Aws_cryptography_dbEncryptionSdk_dynamoDb_VirtualPart_trans_ToDafny(input.Trans)) + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_BeaconVersion_version_ToDafny(input int32) int32 { + return func() int32 { + + return input + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_BeaconVersion_keyStore_ToDafny(input *awscryptographykeystoresmithygenerated.Client) AwsCryptographyKeyStoreTypes.IKeyStoreClient { + return input.DafnyClient +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_BeaconVersion_keySource_ToDafny(input awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.BeaconKeySource) AwsCryptographyDbEncryptionSdkDynamoDbTypes.BeaconKeySource { + return func() AwsCryptographyDbEncryptionSdkDynamoDbTypes.BeaconKeySource { + + switch input.(type) { + case *awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.BeaconKeySourceMembersingle: + var inputToConversion = Aws_cryptography_dbEncryptionSdk_dynamoDb_BeaconKeySource_single_ToDafny(input.(*awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.BeaconKeySourceMembersingle).Value) + return AwsCryptographyDbEncryptionSdkDynamoDbTypes.CompanionStruct_BeaconKeySource_{}.Create_single_(inputToConversion.UnwrapOr(nil).(AwsCryptographyDbEncryptionSdkDynamoDbTypes.SingleKeyStore)) + case *awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.BeaconKeySourceMembermulti: + var inputToConversion = Aws_cryptography_dbEncryptionSdk_dynamoDb_BeaconKeySource_multi_ToDafny(input.(*awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.BeaconKeySourceMembermulti).Value) + return AwsCryptographyDbEncryptionSdkDynamoDbTypes.CompanionStruct_BeaconKeySource_{}.Create_multi_(inputToConversion.UnwrapOr(nil).(AwsCryptographyDbEncryptionSdkDynamoDbTypes.MultiKeyStore)) + + default: + panic("Unhandled union type") + } + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_BeaconVersion_standardBeacons_ToDafny(input []awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.StandardBeacon) dafny.Sequence { + return func() dafny.Sequence { + + var fieldValue []interface{} = make([]interface{}, 0, len(input)) + for _, val := range input { + element := Aws_cryptography_dbEncryptionSdk_dynamoDb_StandardBeaconList_member_ToDafny(val) + fieldValue = append(fieldValue, element) + } + return dafny.SeqOf(fieldValue...) + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_StandardBeaconList_member_ToDafny(input awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.StandardBeacon) AwsCryptographyDbEncryptionSdkDynamoDbTypes.StandardBeacon { + return func() AwsCryptographyDbEncryptionSdkDynamoDbTypes.StandardBeacon { + + return AwsCryptographyDbEncryptionSdkDynamoDbTypes.Companion_StandardBeacon_.Create_StandardBeacon_(Aws_cryptography_dbEncryptionSdk_dynamoDb_StandardBeacon_name_ToDafny(input.Name), Aws_cryptography_dbEncryptionSdk_dynamoDb_StandardBeacon_length_ToDafny(input.Length), Aws_cryptography_dbEncryptionSdk_dynamoDb_StandardBeacon_loc_ToDafny(input.Loc), Aws_cryptography_dbEncryptionSdk_dynamoDb_StandardBeacon_style_ToDafny(input.Style)) + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_BeaconVersion_compoundBeacons_ToDafny(input []awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.CompoundBeacon) Wrappers.Option { + return func() Wrappers.Option { + if input == nil { + return Wrappers.Companion_Option_.Create_None_() + } + var fieldValue []interface{} = make([]interface{}, 0, len(input)) + for _, val := range input { + element := Aws_cryptography_dbEncryptionSdk_dynamoDb_CompoundBeaconList_member_ToDafny(val) + fieldValue = append(fieldValue, element) + } + return Wrappers.Companion_Option_.Create_Some_(dafny.SeqOf(fieldValue...)) + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_CompoundBeaconList_member_ToDafny(input awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.CompoundBeacon) AwsCryptographyDbEncryptionSdkDynamoDbTypes.CompoundBeacon { + return func() AwsCryptographyDbEncryptionSdkDynamoDbTypes.CompoundBeacon { + + return AwsCryptographyDbEncryptionSdkDynamoDbTypes.Companion_CompoundBeacon_.Create_CompoundBeacon_(Aws_cryptography_dbEncryptionSdk_dynamoDb_CompoundBeacon_name_ToDafny(input.Name), Aws_cryptography_dbEncryptionSdk_dynamoDb_CompoundBeacon_split_ToDafny(input.Split), Aws_cryptography_dbEncryptionSdk_dynamoDb_CompoundBeacon_encrypted_ToDafny(input.Encrypted), Aws_cryptography_dbEncryptionSdk_dynamoDb_CompoundBeacon_signed_ToDafny(input.Signed), Aws_cryptography_dbEncryptionSdk_dynamoDb_CompoundBeacon_constructors_ToDafny(input.Constructors)) + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_BeaconVersion_virtualFields_ToDafny(input []awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.VirtualField) Wrappers.Option { + return func() Wrappers.Option { + if input == nil { + return Wrappers.Companion_Option_.Create_None_() + } + var fieldValue []interface{} = make([]interface{}, 0, len(input)) + for _, val := range input { + element := Aws_cryptography_dbEncryptionSdk_dynamoDb_VirtualFieldList_member_ToDafny(val) + fieldValue = append(fieldValue, element) + } + return Wrappers.Companion_Option_.Create_Some_(dafny.SeqOf(fieldValue...)) + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_VirtualFieldList_member_ToDafny(input awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.VirtualField) AwsCryptographyDbEncryptionSdkDynamoDbTypes.VirtualField { + return func() AwsCryptographyDbEncryptionSdkDynamoDbTypes.VirtualField { + + return AwsCryptographyDbEncryptionSdkDynamoDbTypes.Companion_VirtualField_.Create_VirtualField_(Aws_cryptography_dbEncryptionSdk_dynamoDb_VirtualField_name_ToDafny(input.Name), Aws_cryptography_dbEncryptionSdk_dynamoDb_VirtualField_parts_ToDafny(input.Parts)) + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_BeaconVersion_encryptedParts_ToDafny(input []awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.EncryptedPart) Wrappers.Option { + return func() Wrappers.Option { + if input == nil { + return Wrappers.Companion_Option_.Create_None_() + } + var fieldValue []interface{} = make([]interface{}, 0, len(input)) + for _, val := range input { + element := Aws_cryptography_dbEncryptionSdk_dynamoDb_EncryptedPartsList_member_ToDafny(val) + fieldValue = append(fieldValue, element) + } + return Wrappers.Companion_Option_.Create_Some_(dafny.SeqOf(fieldValue...)) + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_BeaconVersion_signedParts_ToDafny(input []awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.SignedPart) Wrappers.Option { + return func() Wrappers.Option { + if input == nil { + return Wrappers.Companion_Option_.Create_None_() + } + var fieldValue []interface{} = make([]interface{}, 0, len(input)) + for _, val := range input { + element := Aws_cryptography_dbEncryptionSdk_dynamoDb_SignedPartsList_member_ToDafny(val) + fieldValue = append(fieldValue, element) + } + return Wrappers.Companion_Option_.Create_Some_(dafny.SeqOf(fieldValue...)) + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_LegacyOverride_policy_ToDafny(input awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.LegacyPolicy) AwsCryptographyDbEncryptionSdkDynamoDbTypes.LegacyPolicy { + return func() AwsCryptographyDbEncryptionSdkDynamoDbTypes.LegacyPolicy { + + var index int + for _, enumVal := range input.Values() { + index++ + if enumVal == input { + break + } + if index == len(input.Values()) { + panic("Input value did not found in enum values") + } + + } + var enum interface{} + for allEnums, i := dafny.Iterate(AwsCryptographyDbEncryptionSdkDynamoDbTypes.CompanionStruct_LegacyPolicy_{}.AllSingletonConstructors()), 0; i < index; i++ { + var ok bool + enum, ok = allEnums() + if !ok { + break + } + } + return enum.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.LegacyPolicy) + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_LegacyOverride_attributeActionsOnEncrypt_ToDafny(input map[string]awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.CryptoAction) dafny.Map { + return func() dafny.Map { + fieldValue := dafny.NewMapBuilder() + for key, val := range input { + fieldValue.Add(Aws_cryptography_dbEncryptionSdk_dynamoDb_AttributeActions_key_ToDafny(key), Aws_cryptography_dbEncryptionSdk_dynamoDb_AttributeActions_value_ToDafny(val)) + } + return fieldValue.ToMap() + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_AttributeActions_key_ToDafny(input string) dafny.Sequence { + return func() dafny.Sequence { + + return func() dafny.Sequence { + res, err := UTF8.DecodeFromNativeGoByteArray([]byte(input)) + if err != nil { + panic("invalid utf8 input provided") + } + return res + }() + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_AttributeActions_value_ToDafny(input awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.CryptoAction) AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.CryptoAction { + return func() AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.CryptoAction { + + var index int + for _, enumVal := range input.Values() { + index++ + if enumVal == input { + break + } + if index == len(input.Values()) { + panic("Input value did not found in enum values") + } + + } + var enum interface{} + for allEnums, i := dafny.Iterate(AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.CompanionStruct_CryptoAction_{}.AllSingletonConstructors()), 0; i < index; i++ { + var ok bool + enum, ok = allEnums() + if !ok { + break + } + } + return enum.(AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.CryptoAction) + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_LegacyOverride_defaultAttributeFlag_ToDafny(input *awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.CryptoAction) Wrappers.Option { + return func() Wrappers.Option { + if input == nil { + return Wrappers.Companion_Option_.Create_None_() + } + var index int + for _, enumVal := range input.Values() { + index++ + if enumVal == *input { + break + } + + } + var enum interface{} + for allEnums, i := dafny.Iterate(AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.CompanionStruct_CryptoAction_{}.AllSingletonConstructors()), 0; i < index; i++ { + var ok bool + enum, ok = allEnums() + if !ok { + break + } + } + return Wrappers.Companion_Option_.Create_Some_(enum.(AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.CryptoAction)) + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_SearchConfig_versions_ToDafny(input []awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.BeaconVersion) dafny.Sequence { + return func() dafny.Sequence { + + var fieldValue []interface{} = make([]interface{}, 0, len(input)) + for _, val := range input { + element := Aws_cryptography_dbEncryptionSdk_dynamoDb_BeaconVersionList_member_ToDafny(val) + fieldValue = append(fieldValue, element) + } + return dafny.SeqOf(fieldValue...) + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_BeaconVersionList_member_ToDafny(input awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.BeaconVersion) AwsCryptographyDbEncryptionSdkDynamoDbTypes.BeaconVersion { + return func() AwsCryptographyDbEncryptionSdkDynamoDbTypes.BeaconVersion { + + return AwsCryptographyDbEncryptionSdkDynamoDbTypes.Companion_BeaconVersion_.Create_BeaconVersion_(Aws_cryptography_dbEncryptionSdk_dynamoDb_BeaconVersion_version_ToDafny(input.Version), Aws_cryptography_dbEncryptionSdk_dynamoDb_BeaconVersion_keyStore_ToDafny(input.KeyStore), Aws_cryptography_dbEncryptionSdk_dynamoDb_BeaconVersion_keySource_ToDafny(input.KeySource), Aws_cryptography_dbEncryptionSdk_dynamoDb_BeaconVersion_standardBeacons_ToDafny(input.StandardBeacons), Aws_cryptography_dbEncryptionSdk_dynamoDb_BeaconVersion_compoundBeacons_ToDafny(input.CompoundBeacons), Aws_cryptography_dbEncryptionSdk_dynamoDb_BeaconVersion_virtualFields_ToDafny(input.VirtualFields), Aws_cryptography_dbEncryptionSdk_dynamoDb_BeaconVersion_encryptedParts_ToDafny(input.EncryptedParts), Aws_cryptography_dbEncryptionSdk_dynamoDb_BeaconVersion_signedParts_ToDafny(input.SignedParts)) + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_SearchConfig_writeVersion_ToDafny(input int32) int32 { + return func() int32 { + + return input + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_DynamoDbTableEncryptionConfig_logicalTableName_ToDafny(input string) dafny.Sequence { + return func() dafny.Sequence { + + return func() dafny.Sequence { + res, err := UTF8.DecodeFromNativeGoByteArray([]byte(input)) + if err != nil { + panic("invalid utf8 input provided") + } + return res + }() + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_DynamoDbTableEncryptionConfig_partitionKeyName_ToDafny(input string) dafny.Sequence { + return func() dafny.Sequence { + + return func() dafny.Sequence { + res, err := UTF8.DecodeFromNativeGoByteArray([]byte(input)) + if err != nil { + panic("invalid utf8 input provided") + } + return res + }() + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_DynamoDbTableEncryptionConfig_sortKeyName_ToDafny(input *string) Wrappers.Option { + return func() Wrappers.Option { + if input == nil { + return Wrappers.Companion_Option_.Create_None_() + } + return Wrappers.Companion_Option_.Create_Some_(func() dafny.Sequence { + res, err := UTF8.DecodeFromNativeGoByteArray([]byte(*input)) + if err != nil { + panic("invalid utf8 input provided") + } + return res + }()) + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_DynamoDbTableEncryptionConfig_search_ToDafny(input *awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.SearchConfig) Wrappers.Option { + return func() Wrappers.Option { + if input == nil { + return Wrappers.Companion_Option_.Create_None_() + } + return Wrappers.Companion_Option_.Create_Some_(AwsCryptographyDbEncryptionSdkDynamoDbTypes.Companion_SearchConfig_.Create_SearchConfig_(Aws_cryptography_dbEncryptionSdk_dynamoDb_SearchConfig_versions_ToDafny(input.Versions), Aws_cryptography_dbEncryptionSdk_dynamoDb_SearchConfig_writeVersion_ToDafny(input.WriteVersion))) + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_DynamoDbTableEncryptionConfig_attributeActionsOnEncrypt_ToDafny(input map[string]awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.CryptoAction) dafny.Map { + return func() dafny.Map { + fieldValue := dafny.NewMapBuilder() + for key, val := range input { + fieldValue.Add(Aws_cryptography_dbEncryptionSdk_dynamoDb_AttributeActions_key_ToDafny(key), Aws_cryptography_dbEncryptionSdk_dynamoDb_AttributeActions_value_ToDafny(val)) + } + return fieldValue.ToMap() + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_DynamoDbTableEncryptionConfig_allowedUnsignedAttributes_ToDafny(input []string) Wrappers.Option { + return func() Wrappers.Option { + if input == nil { + return Wrappers.Companion_Option_.Create_None_() + } + var fieldValue []interface{} = make([]interface{}, 0, len(input)) + for _, val := range input { + element := comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_AttributeNameList_member_ToDafny(val) + fieldValue = append(fieldValue, element) + } + return Wrappers.Companion_Option_.Create_Some_(dafny.SeqOf(fieldValue...)) + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_DynamoDbTableEncryptionConfig_allowedUnsignedAttributePrefix_ToDafny(input *string) Wrappers.Option { + return func() Wrappers.Option { + if input == nil { + return Wrappers.Companion_Option_.Create_None_() + } + return Wrappers.Companion_Option_.Create_Some_(func() dafny.Sequence { + res, err := UTF8.DecodeFromNativeGoByteArray([]byte(*input)) + if err != nil { + panic("invalid utf8 input provided") + } + return res + }()) + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_DynamoDbTableEncryptionConfig_algorithmSuiteId_ToDafny(input *awscryptographymaterialproviderssmithygeneratedtypes.DBEAlgorithmSuiteId) Wrappers.Option { + return func() Wrappers.Option { + if input == nil { + return Wrappers.Companion_Option_.Create_None_() + } + var index int + for _, enumVal := range input.Values() { + index++ + if enumVal == *input { + break + } + + } + var enum interface{} + for allEnums, i := dafny.Iterate(AwsCryptographyMaterialProvidersTypes.CompanionStruct_DBEAlgorithmSuiteId_{}.AllSingletonConstructors()), 0; i < index; i++ { + var ok bool + enum, ok = allEnums() + if !ok { + break + } + } + return Wrappers.Companion_Option_.Create_Some_(enum.(AwsCryptographyMaterialProvidersTypes.DBEAlgorithmSuiteId)) + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_DynamoDbTableEncryptionConfig_legacyOverride_ToDafny(input *awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.LegacyOverride) Wrappers.Option { + return func() Wrappers.Option { + if input == nil { + return Wrappers.Companion_Option_.Create_None_() + } + return Wrappers.Companion_Option_.Create_Some_(AwsCryptographyDbEncryptionSdkDynamoDbTypes.Companion_LegacyOverride_.Create_LegacyOverride_(Aws_cryptography_dbEncryptionSdk_dynamoDb_LegacyOverride_policy_ToDafny(input.Policy), LegacyDynamoDbEncryptor_ToDafny(input.Encryptor), Aws_cryptography_dbEncryptionSdk_dynamoDb_LegacyOverride_attributeActionsOnEncrypt_ToDafny(input.AttributeActionsOnEncrypt), Aws_cryptography_dbEncryptionSdk_dynamoDb_LegacyOverride_defaultAttributeFlag_ToDafny(input.DefaultAttributeFlag))) + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_DynamoDbTableEncryptionConfig_plaintextOverride_ToDafny(input *awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.PlaintextOverride) Wrappers.Option { + return func() Wrappers.Option { + if input == nil { + return Wrappers.Companion_Option_.Create_None_() + } + var index int + for _, enumVal := range input.Values() { + index++ + if enumVal == *input { + break + } + + } + var enum interface{} + for allEnums, i := dafny.Iterate(AwsCryptographyDbEncryptionSdkDynamoDbTypes.CompanionStruct_PlaintextOverride_{}.AllSingletonConstructors()), 0; i < index; i++ { + var ok bool + enum, ok = allEnums() + if !ok { + break + } + } + return Wrappers.Companion_Option_.Create_Some_(enum.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.PlaintextOverride)) + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_DynamoDbTablesEncryptionConfig_tableEncryptionConfigs_ToDafny(input map[string]awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.DynamoDbTableEncryptionConfig) dafny.Map { + return func() dafny.Map { + fieldValue := dafny.NewMapBuilder() + for key, val := range input { + fieldValue.Add(Aws_cryptography_dbEncryptionSdk_dynamoDb_DynamoDbTableEncryptionConfigList_key_ToDafny(key), Aws_cryptography_dbEncryptionSdk_dynamoDb_DynamoDbTableEncryptionConfigList_value_ToDafny(val)) + } + return fieldValue.ToMap() + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_DynamoDbTableEncryptionConfigList_key_ToDafny(input string) dafny.Sequence { + return func() dafny.Sequence { + + return func() dafny.Sequence { + res, err := UTF8.DecodeFromNativeGoByteArray([]byte(input)) + if err != nil { + panic("invalid utf8 input provided") + } + return res + }() + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_DynamoDbTableEncryptionConfigList_value_ToDafny(input awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.DynamoDbTableEncryptionConfig) AwsCryptographyDbEncryptionSdkDynamoDbTypes.DynamoDbTableEncryptionConfig { + return func() AwsCryptographyDbEncryptionSdkDynamoDbTypes.DynamoDbTableEncryptionConfig { + + return AwsCryptographyDbEncryptionSdkDynamoDbTypes.Companion_DynamoDbTableEncryptionConfig_.Create_DynamoDbTableEncryptionConfig_(Aws_cryptography_dbEncryptionSdk_dynamoDb_DynamoDbTableEncryptionConfig_logicalTableName_ToDafny(input.LogicalTableName), Aws_cryptography_dbEncryptionSdk_dynamoDb_DynamoDbTableEncryptionConfig_partitionKeyName_ToDafny(input.PartitionKeyName), Aws_cryptography_dbEncryptionSdk_dynamoDb_DynamoDbTableEncryptionConfig_sortKeyName_ToDafny(input.SortKeyName), Aws_cryptography_dbEncryptionSdk_dynamoDb_DynamoDbTableEncryptionConfig_search_ToDafny(input.Search), Aws_cryptography_dbEncryptionSdk_dynamoDb_DynamoDbTableEncryptionConfig_attributeActionsOnEncrypt_ToDafny(input.AttributeActionsOnEncrypt), Aws_cryptography_dbEncryptionSdk_dynamoDb_DynamoDbTableEncryptionConfig_allowedUnsignedAttributes_ToDafny(input.AllowedUnsignedAttributes), Aws_cryptography_dbEncryptionSdk_dynamoDb_DynamoDbTableEncryptionConfig_allowedUnsignedAttributePrefix_ToDafny(input.AllowedUnsignedAttributePrefix), Aws_cryptography_dbEncryptionSdk_dynamoDb_DynamoDbTableEncryptionConfig_algorithmSuiteId_ToDafny(input.AlgorithmSuiteId), func() Wrappers.Option { + if (input.Keyring) == nil { + return Wrappers.Companion_Option_.Create_None_() + } + return Wrappers.Companion_Option_.Create_Some_(awscryptographymaterialproviderssmithygenerated.Keyring_ToDafny(input.Keyring)) + }(), func() Wrappers.Option { + if (input.Cmm) == nil { + return Wrappers.Companion_Option_.Create_None_() + } + return Wrappers.Companion_Option_.Create_Some_(awscryptographymaterialproviderssmithygenerated.CryptographicMaterialsManager_ToDafny(input.Cmm)) + }(), Aws_cryptography_dbEncryptionSdk_dynamoDb_DynamoDbTableEncryptionConfig_legacyOverride_ToDafny(input.LegacyOverride), Aws_cryptography_dbEncryptionSdk_dynamoDb_DynamoDbTableEncryptionConfig_plaintextOverride_ToDafny(input.PlaintextOverride)) + }() +} diff --git a/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkdynamodbsmithygenerated/to_native.go b/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkdynamodbsmithygenerated/to_native.go new file mode 100644 index 000000000..edd510e8a --- /dev/null +++ b/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkdynamodbsmithygenerated/to_native.go @@ -0,0 +1,1658 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package awscryptographydbencryptionsdkdynamodbsmithygenerated + +import ( + "github.com/aws/aws-cryptographic-material-providers-library/releases/go/dynamodb/comamazonawsdynamodbsmithygenerated" + "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyKeyStoreTypes" + "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyMaterialProvidersTypes" + "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/awscryptographykeystoresmithygenerated" + "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/awscryptographymaterialproviderssmithygenerated" + "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/awscryptographymaterialproviderssmithygeneratedtypes" + "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/awscryptographyprimitivessmithygenerated" + "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/UTF8" + "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Wrappers" + "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbTypes" + "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes" + "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes" + "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkstructuredencryptionsmithygenerated" + "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes" + dynamodbtypes "github.com/aws/aws-sdk-go-v2/service/dynamodb/types" + "github.com/dafny-lang/DafnyRuntimeGo/v4/dafny" +) + +func CreateDynamoDbEncryptionBranchKeyIdSupplierInput_FromDafny(dafnyInput AwsCryptographyDbEncryptionSdkDynamoDbTypes.CreateDynamoDbEncryptionBranchKeyIdSupplierInput) awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.CreateDynamoDbEncryptionBranchKeyIdSupplierInput { + + return awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.CreateDynamoDbEncryptionBranchKeyIdSupplierInput{DdbKeyBranchKeyIdSupplier: DynamoDbKeyBranchKeyIdSupplier_FromDafny(dafnyInput.Dtor_ddbKeyBranchKeyIdSupplier())} + +} + +func CreateDynamoDbEncryptionBranchKeyIdSupplierOutput_FromDafny(dafnyOutput AwsCryptographyDbEncryptionSdkDynamoDbTypes.CreateDynamoDbEncryptionBranchKeyIdSupplierOutput) awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.CreateDynamoDbEncryptionBranchKeyIdSupplierOutput { + + return awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.CreateDynamoDbEncryptionBranchKeyIdSupplierOutput{BranchKeyIdSupplier: awscryptographymaterialproviderssmithygenerated.BranchKeyIdSupplier_FromDafny(dafnyOutput.Dtor_branchKeyIdSupplier())} + +} + +func GetEncryptedDataKeyDescriptionInput_FromDafny(dafnyInput AwsCryptographyDbEncryptionSdkDynamoDbTypes.GetEncryptedDataKeyDescriptionInput) awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.GetEncryptedDataKeyDescriptionInput { + + return awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.GetEncryptedDataKeyDescriptionInput{Input: Aws_cryptography_dbEncryptionSdk_dynamoDb_GetEncryptedDataKeyDescriptionInput_input_FromDafny(dafnyInput.Dtor_input())} + +} + +func GetEncryptedDataKeyDescriptionOutput_FromDafny(dafnyOutput AwsCryptographyDbEncryptionSdkDynamoDbTypes.GetEncryptedDataKeyDescriptionOutput) awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.GetEncryptedDataKeyDescriptionOutput { + + return awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.GetEncryptedDataKeyDescriptionOutput{EncryptedDataKeyDescriptionOutput: Aws_cryptography_dbEncryptionSdk_dynamoDb_GetEncryptedDataKeyDescriptionOutput_EncryptedDataKeyDescriptionOutput_FromDafny(dafnyOutput.Dtor_EncryptedDataKeyDescriptionOutput())} + +} + +func GetBranchKeyIdFromDdbKeyInput_FromDafny(dafnyInput AwsCryptographyDbEncryptionSdkDynamoDbTypes.GetBranchKeyIdFromDdbKeyInput) awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.GetBranchKeyIdFromDdbKeyInput { + + return awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.GetBranchKeyIdFromDdbKeyInput{DdbKey: Aws_cryptography_dbEncryptionSdk_dynamoDb_GetBranchKeyIdFromDdbKeyInput_ddbKey_FromDafny(dafnyInput.Dtor_ddbKey())} + +} + +func GetBranchKeyIdFromDdbKeyOutput_FromDafny(dafnyOutput AwsCryptographyDbEncryptionSdkDynamoDbTypes.GetBranchKeyIdFromDdbKeyOutput) awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.GetBranchKeyIdFromDdbKeyOutput { + + return awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.GetBranchKeyIdFromDdbKeyOutput{BranchKeyId: Aws_cryptography_dbEncryptionSdk_dynamoDb_GetBranchKeyIdFromDdbKeyOutput_branchKeyId_FromDafny(dafnyOutput.Dtor_branchKeyId())} + +} + +func DynamoDbKeyBranchKeyIdSupplier_FromDafny(dafnyResource AwsCryptographyDbEncryptionSdkDynamoDbTypes.IDynamoDbKeyBranchKeyIdSupplier) awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.IDynamoDbKeyBranchKeyIdSupplier { + val, ok := dafnyResource.(*DynamoDbKeyBranchKeyIdSupplierNativeWrapper) + if ok { + return val.Impl + } + + return &DynamoDbKeyBranchKeyIdSupplier{dafnyResource} +} + +func LegacyDynamoDbEncryptor_FromDafny(dafnyResource AwsCryptographyDbEncryptionSdkDynamoDbTypes.ILegacyDynamoDbEncryptor) awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.ILegacyDynamoDbEncryptor { + val, ok := dafnyResource.(*LegacyDynamoDbEncryptorNativeWrapper) + if ok { + return val.Impl + } + + return &LegacyDynamoDbEncryptor{dafnyResource} +} + +func DynamoDbEncryptionException_FromDafny(dafnyOutput AwsCryptographyDbEncryptionSdkDynamoDbTypes.Error) awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.DynamoDbEncryptionException { + return awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.DynamoDbEncryptionException{Message: Aws_cryptography_dbEncryptionSdk_dynamoDb_DynamoDbEncryptionException_message_FromDafny(dafnyOutput.Dtor_message())} + +} + +func CollectionOfErrors_Output_FromDafny(dafnyOutput AwsCryptographyDbEncryptionSdkDynamoDbTypes.Error) awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.CollectionOfErrors { + listOfErrors := dafnyOutput.Dtor_list() + message := dafnyOutput.Dtor_message() + t := awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.CollectionOfErrors{} + for i := dafny.Iterate(listOfErrors); ; { + val, ok := i() + if !ok { + break + } + err := val.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.Error) + t.ListOfErrors = append(t.ListOfErrors, Error_FromDafny(err)) + + } + t.Message = func() string { + a := UTF8.Encode(message.(dafny.Sequence)).Dtor_value() + s := string(dafny.ToByteArray(a.(dafny.Sequence))) + return s + }() + return t +} +func OpaqueError_Output_FromDafny(dafnyOutput AwsCryptographyDbEncryptionSdkDynamoDbTypes.Error) awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.OpaqueError { + return awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.OpaqueError{ + ErrObject: dafnyOutput.Dtor_obj(), + } +} + +func Error_FromDafny(err AwsCryptographyDbEncryptionSdkDynamoDbTypes.Error) error { + // Service Errors + if err.Is_DynamoDbEncryptionException() { + return DynamoDbEncryptionException_FromDafny(err) + } + + //DependentErrors + if err.Is_AwsCryptographyPrimitives() { + return awscryptographyprimitivessmithygenerated.Error_FromDafny(err.Dtor_AwsCryptographyPrimitives()) + } + + if err.Is_ComAmazonawsDynamodb() { + return comamazonawsdynamodbsmithygenerated.Error_FromDafny(err.Dtor_ComAmazonawsDynamodb()) + } + + if err.Is_AwsCryptographyMaterialProviders() { + return awscryptographymaterialproviderssmithygenerated.Error_FromDafny(err.Dtor_AwsCryptographyMaterialProviders()) + } + + if err.Is_AwsCryptographyDbEncryptionSdkStructuredEncryption() { + return awscryptographydbencryptionsdkstructuredencryptionsmithygenerated.Error_FromDafny(err.Dtor_AwsCryptographyDbEncryptionSdkStructuredEncryption()) + } + + if err.Is_AwsCryptographyKeyStore() { + return awscryptographykeystoresmithygenerated.Error_FromDafny(err.Dtor_AwsCryptographyKeyStore()) + } + + //Unmodelled Errors + if err.Is_CollectionOfErrors() { + return CollectionOfErrors_Output_FromDafny(err) + } + + return OpaqueError_Output_FromDafny(err) +} + +func DynamoDbEncryptionConfig_FromDafny(dafnyOutput AwsCryptographyDbEncryptionSdkDynamoDbTypes.DynamoDbEncryptionConfig) awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.DynamoDbEncryptionConfig { + return awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.DynamoDbEncryptionConfig{} + +} + +func AsSet_FromDafny(input interface{}) awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.AsSet { + return awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.AsSet{} + +} + +func MultiKeyStore_FromDafny(input interface{}) awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.MultiKeyStore { + return awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.MultiKeyStore{KeyFieldName: Aws_cryptography_dbEncryptionSdk_dynamoDb_MultiKeyStore_keyFieldName_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.MultiKeyStore).Dtor_keyFieldName()), + CacheTTL: Aws_cryptography_dbEncryptionSdk_dynamoDb_MultiKeyStore_cacheTTL_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.MultiKeyStore).Dtor_cacheTTL()), + Cache: Aws_cryptography_dbEncryptionSdk_dynamoDb_MultiKeyStore_cache_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.MultiKeyStore).Dtor_cache().UnwrapOr(nil)), + PartitionId: Aws_cryptography_dbEncryptionSdk_dynamoDb_MultiKeyStore_partitionId_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.MultiKeyStore).Dtor_partitionId().UnwrapOr(nil)), + } + +} + +func SingleKeyStore_FromDafny(input interface{}) awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.SingleKeyStore { + return awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.SingleKeyStore{KeyId: Aws_cryptography_dbEncryptionSdk_dynamoDb_SingleKeyStore_keyId_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.SingleKeyStore).Dtor_keyId()), + CacheTTL: Aws_cryptography_dbEncryptionSdk_dynamoDb_SingleKeyStore_cacheTTL_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.SingleKeyStore).Dtor_cacheTTL()), + Cache: Aws_cryptography_dbEncryptionSdk_dynamoDb_SingleKeyStore_cache_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.SingleKeyStore).Dtor_cache().UnwrapOr(nil)), + PartitionId: Aws_cryptography_dbEncryptionSdk_dynamoDb_SingleKeyStore_partitionId_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.SingleKeyStore).Dtor_partitionId().UnwrapOr(nil)), + } + +} + +func BeaconKeySource_FromDafny(input interface{}) awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.BeaconKeySource { + var union awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.BeaconKeySource + + if (input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.BeaconKeySource)).Is_single() { + + union = &awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.BeaconKeySourceMembersingle{ + Value: (Aws_cryptography_dbEncryptionSdk_dynamoDb_BeaconKeySource_single_FromDafny((input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.BeaconKeySource)).Dtor_single())), + } + } + if (input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.BeaconKeySource)).Is_multi() { + + union = &awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.BeaconKeySourceMembermulti{ + Value: (Aws_cryptography_dbEncryptionSdk_dynamoDb_BeaconKeySource_multi_FromDafny((input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.BeaconKeySource)).Dtor_multi())), + } + } + + return union + +} + +func PartOnly_FromDafny(input interface{}) awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.PartOnly { + return awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.PartOnly{} + +} + +func Shared_FromDafny(input interface{}) awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.Shared { + return awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.Shared{Other: Aws_cryptography_dbEncryptionSdk_dynamoDb_Shared_other_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.Shared).Dtor_other())} + +} + +func SharedSet_FromDafny(input interface{}) awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.SharedSet { + return awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.SharedSet{Other: Aws_cryptography_dbEncryptionSdk_dynamoDb_SharedSet_other_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.SharedSet).Dtor_other())} + +} + +func BeaconStyle_FromDafny(input interface{}) awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.BeaconStyle { + var union awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.BeaconStyle + + if (input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.BeaconStyle)).Is_partOnly() { + + union = &awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.BeaconStyleMemberpartOnly{ + Value: (Aws_cryptography_dbEncryptionSdk_dynamoDb_BeaconStyle_partOnly_FromDafny((input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.BeaconStyle)).Dtor_partOnly())), + } + } + if (input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.BeaconStyle)).Is_shared() { + + union = &awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.BeaconStyleMembershared{ + Value: (Aws_cryptography_dbEncryptionSdk_dynamoDb_BeaconStyle_shared_FromDafny((input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.BeaconStyle)).Dtor_shared())), + } + } + if (input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.BeaconStyle)).Is_asSet() { + + union = &awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.BeaconStyleMemberasSet{ + Value: (Aws_cryptography_dbEncryptionSdk_dynamoDb_BeaconStyle_asSet_FromDafny((input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.BeaconStyle)).Dtor_asSet())), + } + } + if (input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.BeaconStyle)).Is_sharedSet() { + + union = &awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.BeaconStyleMembersharedSet{ + Value: (Aws_cryptography_dbEncryptionSdk_dynamoDb_BeaconStyle_sharedSet_FromDafny((input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.BeaconStyle)).Dtor_sharedSet())), + } + } + + return union + +} + +func ConstructorPart_FromDafny(input interface{}) awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.ConstructorPart { + return awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.ConstructorPart{Name: Aws_cryptography_dbEncryptionSdk_dynamoDb_ConstructorPart_name_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.ConstructorPart).Dtor_name()), + Required: Aws_cryptography_dbEncryptionSdk_dynamoDb_ConstructorPart_required_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.ConstructorPart).Dtor_required()), + } + +} + +func Constructor_FromDafny(input interface{}) awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.Constructor { + return awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.Constructor{Parts: Aws_cryptography_dbEncryptionSdk_dynamoDb_Constructor_parts_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.Constructor).Dtor_parts())} + +} + +func EncryptedPart_FromDafny(input interface{}) awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.EncryptedPart { + return awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.EncryptedPart{Name: Aws_cryptography_dbEncryptionSdk_dynamoDb_EncryptedPart_name_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.EncryptedPart).Dtor_name()), + Prefix: Aws_cryptography_dbEncryptionSdk_dynamoDb_EncryptedPart_prefix_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.EncryptedPart).Dtor_prefix()), + } + +} + +func SignedPart_FromDafny(input interface{}) awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.SignedPart { + return awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.SignedPart{Name: Aws_cryptography_dbEncryptionSdk_dynamoDb_SignedPart_name_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.SignedPart).Dtor_name()), + Prefix: Aws_cryptography_dbEncryptionSdk_dynamoDb_SignedPart_prefix_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.SignedPart).Dtor_prefix()), + Loc: Aws_cryptography_dbEncryptionSdk_dynamoDb_SignedPart_loc_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.SignedPart).Dtor_loc().UnwrapOr(nil)), + } + +} + +func CompoundBeacon_FromDafny(input interface{}) awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.CompoundBeacon { + return awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.CompoundBeacon{Name: Aws_cryptography_dbEncryptionSdk_dynamoDb_CompoundBeacon_name_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.CompoundBeacon).Dtor_name()), + Split: Aws_cryptography_dbEncryptionSdk_dynamoDb_CompoundBeacon_split_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.CompoundBeacon).Dtor_split()), + Encrypted: Aws_cryptography_dbEncryptionSdk_dynamoDb_CompoundBeacon_encrypted_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.CompoundBeacon).Dtor_encrypted().UnwrapOr(nil)), + Signed: Aws_cryptography_dbEncryptionSdk_dynamoDb_CompoundBeacon_signed_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.CompoundBeacon).Dtor_signed().UnwrapOr(nil)), + Constructors: Aws_cryptography_dbEncryptionSdk_dynamoDb_CompoundBeacon_constructors_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.CompoundBeacon).Dtor_constructors().UnwrapOr(nil)), + } + +} + +func StandardBeacon_FromDafny(input interface{}) awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.StandardBeacon { + return awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.StandardBeacon{Name: Aws_cryptography_dbEncryptionSdk_dynamoDb_StandardBeacon_name_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.StandardBeacon).Dtor_name()), + Length: Aws_cryptography_dbEncryptionSdk_dynamoDb_StandardBeacon_length_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.StandardBeacon).Dtor_length()), + Loc: Aws_cryptography_dbEncryptionSdk_dynamoDb_StandardBeacon_loc_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.StandardBeacon).Dtor_loc().UnwrapOr(nil)), + Style: Aws_cryptography_dbEncryptionSdk_dynamoDb_StandardBeacon_style_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.StandardBeacon).Dtor_style().UnwrapOr(nil)), + } + +} + +func Insert_FromDafny(input interface{}) awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.Insert { + return awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.Insert{Literal: Aws_cryptography_dbEncryptionSdk_dynamoDb_Insert_literal_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.Insert).Dtor_literal())} + +} + +func Lower_FromDafny(input interface{}) awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.Lower { + return awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.Lower{} + +} + +func GetPrefix_FromDafny(input interface{}) awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.GetPrefix { + return awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.GetPrefix{Length: Aws_cryptography_dbEncryptionSdk_dynamoDb_GetPrefix_length_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.GetPrefix).Dtor_length())} + +} + +func GetSegment_FromDafny(input interface{}) awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.GetSegment { + return awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.GetSegment{Split: Aws_cryptography_dbEncryptionSdk_dynamoDb_GetSegment_split_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.GetSegment).Dtor_split()), + Index: Aws_cryptography_dbEncryptionSdk_dynamoDb_GetSegment_index_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.GetSegment).Dtor_index()), + } + +} + +func GetSegments_FromDafny(input interface{}) awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.GetSegments { + return awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.GetSegments{Split: Aws_cryptography_dbEncryptionSdk_dynamoDb_GetSegments_split_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.GetSegments).Dtor_split()), + Low: Aws_cryptography_dbEncryptionSdk_dynamoDb_GetSegments_low_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.GetSegments).Dtor_low()), + High: Aws_cryptography_dbEncryptionSdk_dynamoDb_GetSegments_high_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.GetSegments).Dtor_high()), + } + +} + +func GetSubstring_FromDafny(input interface{}) awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.GetSubstring { + return awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.GetSubstring{Low: Aws_cryptography_dbEncryptionSdk_dynamoDb_GetSubstring_low_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.GetSubstring).Dtor_low()), + High: Aws_cryptography_dbEncryptionSdk_dynamoDb_GetSubstring_high_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.GetSubstring).Dtor_high()), + } + +} + +func GetSuffix_FromDafny(input interface{}) awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.GetSuffix { + return awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.GetSuffix{Length: Aws_cryptography_dbEncryptionSdk_dynamoDb_GetSuffix_length_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.GetSuffix).Dtor_length())} + +} + +func Upper_FromDafny(input interface{}) awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.Upper { + return awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.Upper{} + +} + +func VirtualTransform_FromDafny(input interface{}) awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.VirtualTransform { + var union awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.VirtualTransform + + if (input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.VirtualTransform)).Is_upper() { + + union = &awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.VirtualTransformMemberupper{ + Value: (Aws_cryptography_dbEncryptionSdk_dynamoDb_VirtualTransform_upper_FromDafny((input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.VirtualTransform)).Dtor_upper())), + } + } + if (input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.VirtualTransform)).Is_lower() { + + union = &awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.VirtualTransformMemberlower{ + Value: (Aws_cryptography_dbEncryptionSdk_dynamoDb_VirtualTransform_lower_FromDafny((input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.VirtualTransform)).Dtor_lower())), + } + } + if (input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.VirtualTransform)).Is_insert() { + + union = &awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.VirtualTransformMemberinsert{ + Value: (Aws_cryptography_dbEncryptionSdk_dynamoDb_VirtualTransform_insert_FromDafny((input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.VirtualTransform)).Dtor_insert())), + } + } + if (input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.VirtualTransform)).Is_prefix() { + + union = &awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.VirtualTransformMemberprefix{ + Value: (Aws_cryptography_dbEncryptionSdk_dynamoDb_VirtualTransform_prefix_FromDafny((input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.VirtualTransform)).Dtor_prefix())), + } + } + if (input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.VirtualTransform)).Is_suffix() { + + union = &awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.VirtualTransformMembersuffix{ + Value: (Aws_cryptography_dbEncryptionSdk_dynamoDb_VirtualTransform_suffix_FromDafny((input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.VirtualTransform)).Dtor_suffix())), + } + } + if (input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.VirtualTransform)).Is_substring() { + + union = &awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.VirtualTransformMembersubstring{ + Value: (Aws_cryptography_dbEncryptionSdk_dynamoDb_VirtualTransform_substring_FromDafny((input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.VirtualTransform)).Dtor_substring())), + } + } + if (input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.VirtualTransform)).Is_segment() { + + union = &awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.VirtualTransformMembersegment{ + Value: (Aws_cryptography_dbEncryptionSdk_dynamoDb_VirtualTransform_segment_FromDafny((input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.VirtualTransform)).Dtor_segment())), + } + } + if (input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.VirtualTransform)).Is_segments() { + + union = &awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.VirtualTransformMembersegments{ + Value: (Aws_cryptography_dbEncryptionSdk_dynamoDb_VirtualTransform_segments_FromDafny((input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.VirtualTransform)).Dtor_segments())), + } + } + + return union + +} + +func VirtualPart_FromDafny(input interface{}) awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.VirtualPart { + return awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.VirtualPart{Loc: Aws_cryptography_dbEncryptionSdk_dynamoDb_VirtualPart_loc_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.VirtualPart).Dtor_loc()), + Trans: Aws_cryptography_dbEncryptionSdk_dynamoDb_VirtualPart_trans_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.VirtualPart).Dtor_trans().UnwrapOr(nil)), + } + +} + +func VirtualField_FromDafny(input interface{}) awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.VirtualField { + return awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.VirtualField{Name: Aws_cryptography_dbEncryptionSdk_dynamoDb_VirtualField_name_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.VirtualField).Dtor_name()), + Parts: Aws_cryptography_dbEncryptionSdk_dynamoDb_VirtualField_parts_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.VirtualField).Dtor_parts()), + } + +} + +func BeaconVersion_FromDafny(input interface{}) awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.BeaconVersion { + return awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.BeaconVersion{Version: Aws_cryptography_dbEncryptionSdk_dynamoDb_BeaconVersion_version_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.BeaconVersion).Dtor_version()), + KeyStore: Aws_cryptography_dbEncryptionSdk_dynamoDb_BeaconVersion_keyStore_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.BeaconVersion).Dtor_keyStore()), + KeySource: Aws_cryptography_dbEncryptionSdk_dynamoDb_BeaconVersion_keySource_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.BeaconVersion).Dtor_keySource()), + StandardBeacons: Aws_cryptography_dbEncryptionSdk_dynamoDb_BeaconVersion_standardBeacons_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.BeaconVersion).Dtor_standardBeacons()), + CompoundBeacons: Aws_cryptography_dbEncryptionSdk_dynamoDb_BeaconVersion_compoundBeacons_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.BeaconVersion).Dtor_compoundBeacons().UnwrapOr(nil)), + VirtualFields: Aws_cryptography_dbEncryptionSdk_dynamoDb_BeaconVersion_virtualFields_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.BeaconVersion).Dtor_virtualFields().UnwrapOr(nil)), + EncryptedParts: Aws_cryptography_dbEncryptionSdk_dynamoDb_BeaconVersion_encryptedParts_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.BeaconVersion).Dtor_encryptedParts().UnwrapOr(nil)), + SignedParts: Aws_cryptography_dbEncryptionSdk_dynamoDb_BeaconVersion_signedParts_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.BeaconVersion).Dtor_signedParts().UnwrapOr(nil)), + } + +} + +func LegacyPolicy_FromDafny(input interface{}) awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.LegacyPolicy { + return func() awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.LegacyPolicy { + var u awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.LegacyPolicy + inputEnum := input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.LegacyPolicy) + index := -1 + for allEnums := dafny.Iterate(AwsCryptographyDbEncryptionSdkDynamoDbTypes.CompanionStruct_LegacyPolicy_{}.AllSingletonConstructors()); ; { + enum, ok := allEnums() + if ok { + index++ + if enum.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.LegacyPolicy).Equals(inputEnum) { + break + } + } + } + + return u.Values()[index] + }() + +} + +func LegacyOverride_FromDafny(input interface{}) awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.LegacyOverride { + return awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.LegacyOverride{Policy: Aws_cryptography_dbEncryptionSdk_dynamoDb_LegacyOverride_policy_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.LegacyOverride).Dtor_policy()), + Encryptor: LegacyDynamoDbEncryptor_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.LegacyOverride).Dtor_encryptor()), + AttributeActionsOnEncrypt: Aws_cryptography_dbEncryptionSdk_dynamoDb_LegacyOverride_attributeActionsOnEncrypt_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.LegacyOverride).Dtor_attributeActionsOnEncrypt()), + DefaultAttributeFlag: Aws_cryptography_dbEncryptionSdk_dynamoDb_LegacyOverride_defaultAttributeFlag_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.LegacyOverride).Dtor_defaultAttributeFlag().UnwrapOr(nil)), + } + +} + +func PlaintextOverride_FromDafny(input interface{}) awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.PlaintextOverride { + return func() awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.PlaintextOverride { + var u awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.PlaintextOverride + inputEnum := input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.PlaintextOverride) + index := -1 + for allEnums := dafny.Iterate(AwsCryptographyDbEncryptionSdkDynamoDbTypes.CompanionStruct_PlaintextOverride_{}.AllSingletonConstructors()); ; { + enum, ok := allEnums() + if ok { + index++ + if enum.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.PlaintextOverride).Equals(inputEnum) { + break + } + } + } + + return u.Values()[index] + }() + +} + +func SearchConfig_FromDafny(input interface{}) awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.SearchConfig { + return awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.SearchConfig{Versions: Aws_cryptography_dbEncryptionSdk_dynamoDb_SearchConfig_versions_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.SearchConfig).Dtor_versions()), + WriteVersion: Aws_cryptography_dbEncryptionSdk_dynamoDb_SearchConfig_writeVersion_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.SearchConfig).Dtor_writeVersion()), + } + +} + +func DynamoDbTableEncryptionConfig_FromDafny(input interface{}) awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.DynamoDbTableEncryptionConfig { + return awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.DynamoDbTableEncryptionConfig{LogicalTableName: Aws_cryptography_dbEncryptionSdk_dynamoDb_DynamoDbTableEncryptionConfig_logicalTableName_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.DynamoDbTableEncryptionConfig).Dtor_logicalTableName()), + PartitionKeyName: Aws_cryptography_dbEncryptionSdk_dynamoDb_DynamoDbTableEncryptionConfig_partitionKeyName_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.DynamoDbTableEncryptionConfig).Dtor_partitionKeyName()), + SortKeyName: Aws_cryptography_dbEncryptionSdk_dynamoDb_DynamoDbTableEncryptionConfig_sortKeyName_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.DynamoDbTableEncryptionConfig).Dtor_sortKeyName().UnwrapOr(nil)), + Search: Aws_cryptography_dbEncryptionSdk_dynamoDb_DynamoDbTableEncryptionConfig_search_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.DynamoDbTableEncryptionConfig).Dtor_search().UnwrapOr(nil)), + AttributeActionsOnEncrypt: Aws_cryptography_dbEncryptionSdk_dynamoDb_DynamoDbTableEncryptionConfig_attributeActionsOnEncrypt_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.DynamoDbTableEncryptionConfig).Dtor_attributeActionsOnEncrypt()), + AllowedUnsignedAttributes: Aws_cryptography_dbEncryptionSdk_dynamoDb_DynamoDbTableEncryptionConfig_allowedUnsignedAttributes_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.DynamoDbTableEncryptionConfig).Dtor_allowedUnsignedAttributes().UnwrapOr(nil)), + AllowedUnsignedAttributePrefix: Aws_cryptography_dbEncryptionSdk_dynamoDb_DynamoDbTableEncryptionConfig_allowedUnsignedAttributePrefix_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.DynamoDbTableEncryptionConfig).Dtor_allowedUnsignedAttributePrefix().UnwrapOr(nil)), + AlgorithmSuiteId: Aws_cryptography_dbEncryptionSdk_dynamoDb_DynamoDbTableEncryptionConfig_algorithmSuiteId_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.DynamoDbTableEncryptionConfig).Dtor_algorithmSuiteId().UnwrapOr(nil)), + Keyring: func() awscryptographymaterialproviderssmithygeneratedtypes.IKeyring { + if input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.DynamoDbTableEncryptionConfig).Dtor_keyring().UnwrapOr(nil) == nil { + return nil + } + return awscryptographymaterialproviderssmithygenerated.Keyring_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.DynamoDbTableEncryptionConfig).Dtor_keyring().UnwrapOr(nil).(AwsCryptographyMaterialProvidersTypes.IKeyring)) + }(), + Cmm: func() awscryptographymaterialproviderssmithygeneratedtypes.ICryptographicMaterialsManager { + if input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.DynamoDbTableEncryptionConfig).Dtor_cmm().UnwrapOr(nil) == nil { + return nil + } + return awscryptographymaterialproviderssmithygenerated.CryptographicMaterialsManager_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.DynamoDbTableEncryptionConfig).Dtor_cmm().UnwrapOr(nil).(AwsCryptographyMaterialProvidersTypes.ICryptographicMaterialsManager)) + }(), + LegacyOverride: Aws_cryptography_dbEncryptionSdk_dynamoDb_DynamoDbTableEncryptionConfig_legacyOverride_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.DynamoDbTableEncryptionConfig).Dtor_legacyOverride().UnwrapOr(nil)), + PlaintextOverride: Aws_cryptography_dbEncryptionSdk_dynamoDb_DynamoDbTableEncryptionConfig_plaintextOverride_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.DynamoDbTableEncryptionConfig).Dtor_plaintextOverride().UnwrapOr(nil)), + } + +} + +func DynamoDbTablesEncryptionConfig_FromDafny(input interface{}) awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.DynamoDbTablesEncryptionConfig { + return awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.DynamoDbTablesEncryptionConfig{TableEncryptionConfigs: Aws_cryptography_dbEncryptionSdk_dynamoDb_DynamoDbTablesEncryptionConfig_tableEncryptionConfigs_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.DynamoDbTablesEncryptionConfig).Dtor_tableEncryptionConfigs())} + +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_GetEncryptedDataKeyDescriptionInput_input_FromDafny(input interface{}) awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.GetEncryptedDataKeyDescriptionUnion { + var union awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.GetEncryptedDataKeyDescriptionUnion + + if (input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.GetEncryptedDataKeyDescriptionUnion)).Is_header() { + var dataSource = Wrappers.Companion_Option_.Create_Some_((input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.GetEncryptedDataKeyDescriptionUnion)).Dtor_header()) + union = &awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.GetEncryptedDataKeyDescriptionUnionMemberheader{ + Value: (Aws_cryptography_dbEncryptionSdk_dynamoDb_GetEncryptedDataKeyDescriptionUnion_header_FromDafny(dataSource.UnwrapOr(nil))), + } + } + if (input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.GetEncryptedDataKeyDescriptionUnion)).Is_item() { + var dataSource = Wrappers.Companion_Option_.Create_Some_((input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.GetEncryptedDataKeyDescriptionUnion)).Dtor_item()) + union = &awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.GetEncryptedDataKeyDescriptionUnionMemberitem{ + Value: (Aws_cryptography_dbEncryptionSdk_dynamoDb_GetEncryptedDataKeyDescriptionUnion_item_FromDafny(dataSource.UnwrapOr(nil))), + } + } + + return union + +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_GetEncryptedDataKeyDescriptionUnion_header_FromDafny(input interface{}) []byte { + return func() []byte { + if input == nil { + return nil + } + a := input.(dafny.Sequence).ToArray().(dafny.GoNativeArray) + b := make([]byte, 0, a.Length()) + for i := uint32(0); i < a.Length(); i++ { + b = append(b, a.Select(i).(byte)) + } + return b + }() +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_GetEncryptedDataKeyDescriptionUnion_item_FromDafny(input interface{}) map[string]dynamodbtypes.AttributeValue { + var m map[string]dynamodbtypes.AttributeValue = make(map[string]dynamodbtypes.AttributeValue) + if input == nil { + return nil + } + for i := dafny.Iterate(input.(dafny.Map).Items()); ; { + val, ok := i() + if !ok { + break + } + m[comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_AttributeMap_key_FromDafny((*val.(dafny.Tuple).IndexInt(0)))] = comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_AttributeMap_value_FromDafny((*val.(dafny.Tuple).IndexInt(1))) + } + return m + +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_GetEncryptedDataKeyDescriptionOutput_EncryptedDataKeyDescriptionOutput_FromDafny(input interface{}) []awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.EncryptedDataKeyDescription { + fieldValue := make([]awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.EncryptedDataKeyDescription, 0) + for i := dafny.Iterate(input.(dafny.Sequence)); ; { + val, ok := i() + if !ok { + break + } + fieldValue = append(fieldValue, Aws_cryptography_dbEncryptionSdk_dynamoDb_EncryptedDataKeyDescriptionList_member_FromDafny(val)) + } + return fieldValue +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_EncryptedDataKeyDescriptionList_member_FromDafny(input interface{}) awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.EncryptedDataKeyDescription { + return awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.EncryptedDataKeyDescription{KeyProviderId: Aws_cryptography_dbEncryptionSdk_dynamoDb_EncryptedDataKeyDescription_keyProviderId_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.EncryptedDataKeyDescription).Dtor_keyProviderId()), + KeyProviderInfo: Aws_cryptography_dbEncryptionSdk_dynamoDb_EncryptedDataKeyDescription_keyProviderInfo_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.EncryptedDataKeyDescription).Dtor_keyProviderInfo().UnwrapOr(nil)), + BranchKeyId: Aws_cryptography_dbEncryptionSdk_dynamoDb_EncryptedDataKeyDescription_branchKeyId_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.EncryptedDataKeyDescription).Dtor_branchKeyId().UnwrapOr(nil)), + BranchKeyVersion: Aws_cryptography_dbEncryptionSdk_dynamoDb_EncryptedDataKeyDescription_branchKeyVersion_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.EncryptedDataKeyDescription).Dtor_branchKeyVersion().UnwrapOr(nil)), + } +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_EncryptedDataKeyDescription_keyProviderId_FromDafny(input interface{}) string { + return func() string { + + a := UTF8.Encode(input.(dafny.Sequence)).Dtor_value() + s := string(dafny.ToByteArray(a.(dafny.Sequence))) + + return s + }() +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_EncryptedDataKeyDescription_keyProviderInfo_FromDafny(input interface{}) *string { + return func() *string { + if input == nil { + return nil + } + + a := UTF8.Encode(input.(dafny.Sequence)).Dtor_value() + s := string(dafny.ToByteArray(a.(dafny.Sequence))) + + return &s + }() +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_EncryptedDataKeyDescription_branchKeyId_FromDafny(input interface{}) *string { + return func() *string { + if input == nil { + return nil + } + + a := UTF8.Encode(input.(dafny.Sequence)).Dtor_value() + s := string(dafny.ToByteArray(a.(dafny.Sequence))) + + return &s + }() +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_EncryptedDataKeyDescription_branchKeyVersion_FromDafny(input interface{}) *string { + return func() *string { + if input == nil { + return nil + } + + a := UTF8.Encode(input.(dafny.Sequence)).Dtor_value() + s := string(dafny.ToByteArray(a.(dafny.Sequence))) + + return &s + }() +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_GetBranchKeyIdFromDdbKeyInput_ddbKey_FromDafny(input interface{}) map[string]dynamodbtypes.AttributeValue { + var m map[string]dynamodbtypes.AttributeValue = make(map[string]dynamodbtypes.AttributeValue) + if input == nil { + return nil + } + for i := dafny.Iterate(input.(dafny.Map).Items()); ; { + val, ok := i() + if !ok { + break + } + m[comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_Key_key_FromDafny((*val.(dafny.Tuple).IndexInt(0)))] = comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_Key_value_FromDafny((*val.(dafny.Tuple).IndexInt(1))) + } + return m + +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_GetBranchKeyIdFromDdbKeyOutput_branchKeyId_FromDafny(input interface{}) string { + return func() string { + + a := UTF8.Encode(input.(dafny.Sequence)).Dtor_value() + s := string(dafny.ToByteArray(a.(dafny.Sequence))) + + return s + }() +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_DynamoDbEncryptionException_message_FromDafny(input interface{}) string { + return func() string { + + a := UTF8.Encode(input.(dafny.Sequence)).Dtor_value() + s := string(dafny.ToByteArray(a.(dafny.Sequence))) + + return s + }() +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_MultiKeyStore_keyFieldName_FromDafny(input interface{}) string { + return func() string { + + a := UTF8.Encode(input.(dafny.Sequence)).Dtor_value() + s := string(dafny.ToByteArray(a.(dafny.Sequence))) + + return s + }() +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_MultiKeyStore_cacheTTL_FromDafny(input interface{}) int32 { + return func() int32 { + var b = input.(int32) + return b + }() +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_MultiKeyStore_cache_FromDafny(input interface{}) awscryptographymaterialproviderssmithygeneratedtypes.CacheType { + var union awscryptographymaterialproviderssmithygeneratedtypes.CacheType + if input == nil { + return nil + } + + if (input.(AwsCryptographyMaterialProvidersTypes.CacheType)).Is_Default() { + + union = &awscryptographymaterialproviderssmithygeneratedtypes.CacheTypeMemberDefault{ + Value: (awscryptographymaterialproviderssmithygenerated.Aws_cryptography_materialProviders_CacheType_Default_FromDafny((input.(AwsCryptographyMaterialProvidersTypes.CacheType)).Dtor_Default())), + } + } + if (input.(AwsCryptographyMaterialProvidersTypes.CacheType)).Is_No() { + + union = &awscryptographymaterialproviderssmithygeneratedtypes.CacheTypeMemberNo{ + Value: (awscryptographymaterialproviderssmithygenerated.Aws_cryptography_materialProviders_CacheType_No_FromDafny((input.(AwsCryptographyMaterialProvidersTypes.CacheType)).Dtor_No())), + } + } + if (input.(AwsCryptographyMaterialProvidersTypes.CacheType)).Is_SingleThreaded() { + + union = &awscryptographymaterialproviderssmithygeneratedtypes.CacheTypeMemberSingleThreaded{ + Value: (awscryptographymaterialproviderssmithygenerated.Aws_cryptography_materialProviders_CacheType_SingleThreaded_FromDafny((input.(AwsCryptographyMaterialProvidersTypes.CacheType)).Dtor_SingleThreaded())), + } + } + if (input.(AwsCryptographyMaterialProvidersTypes.CacheType)).Is_MultiThreaded() { + + union = &awscryptographymaterialproviderssmithygeneratedtypes.CacheTypeMemberMultiThreaded{ + Value: (awscryptographymaterialproviderssmithygenerated.Aws_cryptography_materialProviders_CacheType_MultiThreaded_FromDafny((input.(AwsCryptographyMaterialProvidersTypes.CacheType)).Dtor_MultiThreaded())), + } + } + if (input.(AwsCryptographyMaterialProvidersTypes.CacheType)).Is_StormTracking() { + + union = &awscryptographymaterialproviderssmithygeneratedtypes.CacheTypeMemberStormTracking{ + Value: (awscryptographymaterialproviderssmithygenerated.Aws_cryptography_materialProviders_CacheType_StormTracking_FromDafny((input.(AwsCryptographyMaterialProvidersTypes.CacheType)).Dtor_StormTracking())), + } + } + if (input.(AwsCryptographyMaterialProvidersTypes.CacheType)).Is_Shared() { + + union = &awscryptographymaterialproviderssmithygeneratedtypes.CacheTypeMemberShared{ + Value: (awscryptographymaterialproviderssmithygenerated.CryptographicMaterialsCache_FromDafny((input.(AwsCryptographyMaterialProvidersTypes.CacheType)).Dtor_Shared().(AwsCryptographyMaterialProvidersTypes.ICryptographicMaterialsCache))), + } + } + + return union + +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_MultiKeyStore_partitionId_FromDafny(input interface{}) *string { + return func() *string { + if input == nil { + return nil + } + + a := UTF8.Encode(input.(dafny.Sequence)).Dtor_value() + s := string(dafny.ToByteArray(a.(dafny.Sequence))) + + return &s + }() +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_SingleKeyStore_keyId_FromDafny(input interface{}) string { + return func() string { + + a := UTF8.Encode(input.(dafny.Sequence)).Dtor_value() + s := string(dafny.ToByteArray(a.(dafny.Sequence))) + + return s + }() +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_SingleKeyStore_cacheTTL_FromDafny(input interface{}) int32 { + return func() int32 { + var b = input.(int32) + return b + }() +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_SingleKeyStore_cache_FromDafny(input interface{}) awscryptographymaterialproviderssmithygeneratedtypes.CacheType { + var union awscryptographymaterialproviderssmithygeneratedtypes.CacheType + if input == nil { + return nil + } + + if (input.(AwsCryptographyMaterialProvidersTypes.CacheType)).Is_Default() { + + union = &awscryptographymaterialproviderssmithygeneratedtypes.CacheTypeMemberDefault{ + Value: (awscryptographymaterialproviderssmithygenerated.Aws_cryptography_materialProviders_CacheType_Default_FromDafny((input.(AwsCryptographyMaterialProvidersTypes.CacheType)).Dtor_Default())), + } + } + if (input.(AwsCryptographyMaterialProvidersTypes.CacheType)).Is_No() { + + union = &awscryptographymaterialproviderssmithygeneratedtypes.CacheTypeMemberNo{ + Value: (awscryptographymaterialproviderssmithygenerated.Aws_cryptography_materialProviders_CacheType_No_FromDafny((input.(AwsCryptographyMaterialProvidersTypes.CacheType)).Dtor_No())), + } + } + if (input.(AwsCryptographyMaterialProvidersTypes.CacheType)).Is_SingleThreaded() { + + union = &awscryptographymaterialproviderssmithygeneratedtypes.CacheTypeMemberSingleThreaded{ + Value: (awscryptographymaterialproviderssmithygenerated.Aws_cryptography_materialProviders_CacheType_SingleThreaded_FromDafny((input.(AwsCryptographyMaterialProvidersTypes.CacheType)).Dtor_SingleThreaded())), + } + } + if (input.(AwsCryptographyMaterialProvidersTypes.CacheType)).Is_MultiThreaded() { + + union = &awscryptographymaterialproviderssmithygeneratedtypes.CacheTypeMemberMultiThreaded{ + Value: (awscryptographymaterialproviderssmithygenerated.Aws_cryptography_materialProviders_CacheType_MultiThreaded_FromDafny((input.(AwsCryptographyMaterialProvidersTypes.CacheType)).Dtor_MultiThreaded())), + } + } + if (input.(AwsCryptographyMaterialProvidersTypes.CacheType)).Is_StormTracking() { + + union = &awscryptographymaterialproviderssmithygeneratedtypes.CacheTypeMemberStormTracking{ + Value: (awscryptographymaterialproviderssmithygenerated.Aws_cryptography_materialProviders_CacheType_StormTracking_FromDafny((input.(AwsCryptographyMaterialProvidersTypes.CacheType)).Dtor_StormTracking())), + } + } + if (input.(AwsCryptographyMaterialProvidersTypes.CacheType)).Is_Shared() { + + union = &awscryptographymaterialproviderssmithygeneratedtypes.CacheTypeMemberShared{ + Value: (awscryptographymaterialproviderssmithygenerated.CryptographicMaterialsCache_FromDafny((input.(AwsCryptographyMaterialProvidersTypes.CacheType)).Dtor_Shared().(AwsCryptographyMaterialProvidersTypes.ICryptographicMaterialsCache))), + } + } + + return union + +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_SingleKeyStore_partitionId_FromDafny(input interface{}) *string { + return func() *string { + if input == nil { + return nil + } + + a := UTF8.Encode(input.(dafny.Sequence)).Dtor_value() + s := string(dafny.ToByteArray(a.(dafny.Sequence))) + + return &s + }() +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_BeaconKeySource_single_FromDafny(input interface{}) awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.SingleKeyStore { + return awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.SingleKeyStore{KeyId: Aws_cryptography_dbEncryptionSdk_dynamoDb_SingleKeyStore_keyId_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.SingleKeyStore).Dtor_keyId()), + CacheTTL: Aws_cryptography_dbEncryptionSdk_dynamoDb_SingleKeyStore_cacheTTL_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.SingleKeyStore).Dtor_cacheTTL()), + Cache: Aws_cryptography_dbEncryptionSdk_dynamoDb_SingleKeyStore_cache_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.SingleKeyStore).Dtor_cache().UnwrapOr(nil)), + PartitionId: Aws_cryptography_dbEncryptionSdk_dynamoDb_SingleKeyStore_partitionId_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.SingleKeyStore).Dtor_partitionId().UnwrapOr(nil)), + } +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_BeaconKeySource_multi_FromDafny(input interface{}) awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.MultiKeyStore { + return awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.MultiKeyStore{KeyFieldName: Aws_cryptography_dbEncryptionSdk_dynamoDb_MultiKeyStore_keyFieldName_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.MultiKeyStore).Dtor_keyFieldName()), + CacheTTL: Aws_cryptography_dbEncryptionSdk_dynamoDb_MultiKeyStore_cacheTTL_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.MultiKeyStore).Dtor_cacheTTL()), + Cache: Aws_cryptography_dbEncryptionSdk_dynamoDb_MultiKeyStore_cache_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.MultiKeyStore).Dtor_cache().UnwrapOr(nil)), + PartitionId: Aws_cryptography_dbEncryptionSdk_dynamoDb_MultiKeyStore_partitionId_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.MultiKeyStore).Dtor_partitionId().UnwrapOr(nil)), + } +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_Shared_other_FromDafny(input interface{}) string { + return func() string { + + a := UTF8.Encode(input.(dafny.Sequence)).Dtor_value() + s := string(dafny.ToByteArray(a.(dafny.Sequence))) + + return s + }() +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_SharedSet_other_FromDafny(input interface{}) string { + return func() string { + + a := UTF8.Encode(input.(dafny.Sequence)).Dtor_value() + s := string(dafny.ToByteArray(a.(dafny.Sequence))) + + return s + }() +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_BeaconStyle_partOnly_FromDafny(input interface{}) awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.PartOnly { + return awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.PartOnly{} +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_BeaconStyle_shared_FromDafny(input interface{}) awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.Shared { + return awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.Shared{Other: Aws_cryptography_dbEncryptionSdk_dynamoDb_Shared_other_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.Shared).Dtor_other())} +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_BeaconStyle_asSet_FromDafny(input interface{}) awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.AsSet { + return awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.AsSet{} +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_BeaconStyle_sharedSet_FromDafny(input interface{}) awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.SharedSet { + return awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.SharedSet{Other: Aws_cryptography_dbEncryptionSdk_dynamoDb_SharedSet_other_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.SharedSet).Dtor_other())} +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_ConstructorPart_name_FromDafny(input interface{}) string { + return func() string { + + a := UTF8.Encode(input.(dafny.Sequence)).Dtor_value() + s := string(dafny.ToByteArray(a.(dafny.Sequence))) + + return s + }() +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_ConstructorPart_required_FromDafny(input interface{}) bool { + return input.(bool) +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_Constructor_parts_FromDafny(input interface{}) []awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.ConstructorPart { + fieldValue := make([]awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.ConstructorPart, 0) + for i := dafny.Iterate(input.(dafny.Sequence)); ; { + val, ok := i() + if !ok { + break + } + fieldValue = append(fieldValue, Aws_cryptography_dbEncryptionSdk_dynamoDb_ConstructorPartList_member_FromDafny(val)) + } + return fieldValue +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_ConstructorPartList_member_FromDafny(input interface{}) awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.ConstructorPart { + return awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.ConstructorPart{Name: Aws_cryptography_dbEncryptionSdk_dynamoDb_ConstructorPart_name_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.ConstructorPart).Dtor_name()), + Required: Aws_cryptography_dbEncryptionSdk_dynamoDb_ConstructorPart_required_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.ConstructorPart).Dtor_required()), + } +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_EncryptedPart_name_FromDafny(input interface{}) string { + return func() string { + + a := UTF8.Encode(input.(dafny.Sequence)).Dtor_value() + s := string(dafny.ToByteArray(a.(dafny.Sequence))) + + return s + }() +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_EncryptedPart_prefix_FromDafny(input interface{}) string { + return func() string { + + a := UTF8.Encode(input.(dafny.Sequence)).Dtor_value() + s := string(dafny.ToByteArray(a.(dafny.Sequence))) + + return s + }() +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_SignedPart_name_FromDafny(input interface{}) string { + return func() string { + + a := UTF8.Encode(input.(dafny.Sequence)).Dtor_value() + s := string(dafny.ToByteArray(a.(dafny.Sequence))) + + return s + }() +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_SignedPart_prefix_FromDafny(input interface{}) string { + return func() string { + + a := UTF8.Encode(input.(dafny.Sequence)).Dtor_value() + s := string(dafny.ToByteArray(a.(dafny.Sequence))) + + return s + }() +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_SignedPart_loc_FromDafny(input interface{}) *string { + return func() *string { + if input == nil { + return nil + } + + a := UTF8.Encode(input.(dafny.Sequence)).Dtor_value() + s := string(dafny.ToByteArray(a.(dafny.Sequence))) + + return &s + }() +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_CompoundBeacon_name_FromDafny(input interface{}) string { + return func() string { + + a := UTF8.Encode(input.(dafny.Sequence)).Dtor_value() + s := string(dafny.ToByteArray(a.(dafny.Sequence))) + + return s + }() +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_CompoundBeacon_split_FromDafny(input interface{}) string { + return func() string { + + a := UTF8.Encode(input.(dafny.Sequence)).Dtor_value() + s := string(dafny.ToByteArray(a.(dafny.Sequence))) + + return s + }() +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_CompoundBeacon_encrypted_FromDafny(input interface{}) []awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.EncryptedPart { + if input == nil { + return nil + } + fieldValue := make([]awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.EncryptedPart, 0) + for i := dafny.Iterate(input.(dafny.Sequence)); ; { + val, ok := i() + if !ok { + break + } + fieldValue = append(fieldValue, Aws_cryptography_dbEncryptionSdk_dynamoDb_EncryptedPartsList_member_FromDafny(val)) + } + return fieldValue +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_EncryptedPartsList_member_FromDafny(input interface{}) awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.EncryptedPart { + return awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.EncryptedPart{Name: Aws_cryptography_dbEncryptionSdk_dynamoDb_EncryptedPart_name_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.EncryptedPart).Dtor_name()), + Prefix: Aws_cryptography_dbEncryptionSdk_dynamoDb_EncryptedPart_prefix_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.EncryptedPart).Dtor_prefix()), + } +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_CompoundBeacon_signed_FromDafny(input interface{}) []awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.SignedPart { + if input == nil { + return nil + } + fieldValue := make([]awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.SignedPart, 0) + for i := dafny.Iterate(input.(dafny.Sequence)); ; { + val, ok := i() + if !ok { + break + } + fieldValue = append(fieldValue, Aws_cryptography_dbEncryptionSdk_dynamoDb_SignedPartsList_member_FromDafny(val)) + } + return fieldValue +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_SignedPartsList_member_FromDafny(input interface{}) awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.SignedPart { + return awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.SignedPart{Name: Aws_cryptography_dbEncryptionSdk_dynamoDb_SignedPart_name_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.SignedPart).Dtor_name()), + Prefix: Aws_cryptography_dbEncryptionSdk_dynamoDb_SignedPart_prefix_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.SignedPart).Dtor_prefix()), + Loc: Aws_cryptography_dbEncryptionSdk_dynamoDb_SignedPart_loc_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.SignedPart).Dtor_loc().UnwrapOr(nil)), + } +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_CompoundBeacon_constructors_FromDafny(input interface{}) []awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.Constructor { + if input == nil { + return nil + } + fieldValue := make([]awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.Constructor, 0) + for i := dafny.Iterate(input.(dafny.Sequence)); ; { + val, ok := i() + if !ok { + break + } + fieldValue = append(fieldValue, Aws_cryptography_dbEncryptionSdk_dynamoDb_ConstructorList_member_FromDafny(val)) + } + return fieldValue +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_ConstructorList_member_FromDafny(input interface{}) awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.Constructor { + return awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.Constructor{Parts: Aws_cryptography_dbEncryptionSdk_dynamoDb_Constructor_parts_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.Constructor).Dtor_parts())} +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_StandardBeacon_name_FromDafny(input interface{}) string { + return func() string { + + a := UTF8.Encode(input.(dafny.Sequence)).Dtor_value() + s := string(dafny.ToByteArray(a.(dafny.Sequence))) + + return s + }() +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_StandardBeacon_length_FromDafny(input interface{}) int32 { + return func() int32 { + var b = input.(int32) + return b + }() +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_StandardBeacon_loc_FromDafny(input interface{}) *string { + return func() *string { + if input == nil { + return nil + } + + a := UTF8.Encode(input.(dafny.Sequence)).Dtor_value() + s := string(dafny.ToByteArray(a.(dafny.Sequence))) + + return &s + }() +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_StandardBeacon_style_FromDafny(input interface{}) awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.BeaconStyle { + var union awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.BeaconStyle + if input == nil { + return nil + } + + if (input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.BeaconStyle)).Is_partOnly() { + + union = &awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.BeaconStyleMemberpartOnly{ + Value: (Aws_cryptography_dbEncryptionSdk_dynamoDb_BeaconStyle_partOnly_FromDafny((input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.BeaconStyle)).Dtor_partOnly())), + } + } + if (input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.BeaconStyle)).Is_shared() { + + union = &awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.BeaconStyleMembershared{ + Value: (Aws_cryptography_dbEncryptionSdk_dynamoDb_BeaconStyle_shared_FromDafny((input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.BeaconStyle)).Dtor_shared())), + } + } + if (input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.BeaconStyle)).Is_asSet() { + + union = &awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.BeaconStyleMemberasSet{ + Value: (Aws_cryptography_dbEncryptionSdk_dynamoDb_BeaconStyle_asSet_FromDafny((input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.BeaconStyle)).Dtor_asSet())), + } + } + if (input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.BeaconStyle)).Is_sharedSet() { + + union = &awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.BeaconStyleMembersharedSet{ + Value: (Aws_cryptography_dbEncryptionSdk_dynamoDb_BeaconStyle_sharedSet_FromDafny((input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.BeaconStyle)).Dtor_sharedSet())), + } + } + + return union + +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_Insert_literal_FromDafny(input interface{}) string { + return func() string { + + a := UTF8.Encode(input.(dafny.Sequence)).Dtor_value() + s := string(dafny.ToByteArray(a.(dafny.Sequence))) + + return s + }() +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_GetPrefix_length_FromDafny(input interface{}) int32 { + return func() int32 { + var b = input.(int32) + return b + }() +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_GetSegment_split_FromDafny(input interface{}) string { + return func() string { + + a := UTF8.Encode(input.(dafny.Sequence)).Dtor_value() + s := string(dafny.ToByteArray(a.(dafny.Sequence))) + + return s + }() +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_GetSegment_index_FromDafny(input interface{}) int32 { + return func() int32 { + var b = input.(int32) + return b + }() +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_GetSegments_split_FromDafny(input interface{}) string { + return func() string { + + a := UTF8.Encode(input.(dafny.Sequence)).Dtor_value() + s := string(dafny.ToByteArray(a.(dafny.Sequence))) + + return s + }() +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_GetSegments_low_FromDafny(input interface{}) int32 { + return func() int32 { + var b = input.(int32) + return b + }() +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_GetSegments_high_FromDafny(input interface{}) int32 { + return func() int32 { + var b = input.(int32) + return b + }() +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_GetSubstring_low_FromDafny(input interface{}) int32 { + return func() int32 { + var b = input.(int32) + return b + }() +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_GetSubstring_high_FromDafny(input interface{}) int32 { + return func() int32 { + var b = input.(int32) + return b + }() +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_GetSuffix_length_FromDafny(input interface{}) int32 { + return func() int32 { + var b = input.(int32) + return b + }() +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_VirtualTransform_upper_FromDafny(input interface{}) awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.Upper { + return awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.Upper{} +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_VirtualTransform_lower_FromDafny(input interface{}) awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.Lower { + return awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.Lower{} +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_VirtualTransform_insert_FromDafny(input interface{}) awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.Insert { + return awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.Insert{Literal: Aws_cryptography_dbEncryptionSdk_dynamoDb_Insert_literal_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.Insert).Dtor_literal())} +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_VirtualTransform_prefix_FromDafny(input interface{}) awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.GetPrefix { + return awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.GetPrefix{Length: Aws_cryptography_dbEncryptionSdk_dynamoDb_GetPrefix_length_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.GetPrefix).Dtor_length())} +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_VirtualTransform_suffix_FromDafny(input interface{}) awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.GetSuffix { + return awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.GetSuffix{Length: Aws_cryptography_dbEncryptionSdk_dynamoDb_GetSuffix_length_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.GetSuffix).Dtor_length())} +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_VirtualTransform_substring_FromDafny(input interface{}) awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.GetSubstring { + return awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.GetSubstring{Low: Aws_cryptography_dbEncryptionSdk_dynamoDb_GetSubstring_low_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.GetSubstring).Dtor_low()), + High: Aws_cryptography_dbEncryptionSdk_dynamoDb_GetSubstring_high_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.GetSubstring).Dtor_high()), + } +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_VirtualTransform_segment_FromDafny(input interface{}) awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.GetSegment { + return awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.GetSegment{Split: Aws_cryptography_dbEncryptionSdk_dynamoDb_GetSegment_split_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.GetSegment).Dtor_split()), + Index: Aws_cryptography_dbEncryptionSdk_dynamoDb_GetSegment_index_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.GetSegment).Dtor_index()), + } +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_VirtualTransform_segments_FromDafny(input interface{}) awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.GetSegments { + return awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.GetSegments{Split: Aws_cryptography_dbEncryptionSdk_dynamoDb_GetSegments_split_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.GetSegments).Dtor_split()), + Low: Aws_cryptography_dbEncryptionSdk_dynamoDb_GetSegments_low_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.GetSegments).Dtor_low()), + High: Aws_cryptography_dbEncryptionSdk_dynamoDb_GetSegments_high_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.GetSegments).Dtor_high()), + } +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_VirtualPart_loc_FromDafny(input interface{}) string { + return func() string { + + a := UTF8.Encode(input.(dafny.Sequence)).Dtor_value() + s := string(dafny.ToByteArray(a.(dafny.Sequence))) + + return s + }() +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_VirtualPart_trans_FromDafny(input interface{}) []awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.VirtualTransform { + if input == nil { + return nil + } + fieldValue := make([]awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.VirtualTransform, 0) + for i := dafny.Iterate(input.(dafny.Sequence)); ; { + val, ok := i() + if !ok { + break + } + fieldValue = append(fieldValue, Aws_cryptography_dbEncryptionSdk_dynamoDb_VirtualTransformList_member_FromDafny(val)) + } + return fieldValue +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_VirtualTransformList_member_FromDafny(input interface{}) awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.VirtualTransform { + var union awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.VirtualTransform + + if (input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.VirtualTransform)).Is_upper() { + + union = &awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.VirtualTransformMemberupper{ + Value: (Aws_cryptography_dbEncryptionSdk_dynamoDb_VirtualTransform_upper_FromDafny((input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.VirtualTransform)).Dtor_upper())), + } + } + if (input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.VirtualTransform)).Is_lower() { + + union = &awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.VirtualTransformMemberlower{ + Value: (Aws_cryptography_dbEncryptionSdk_dynamoDb_VirtualTransform_lower_FromDafny((input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.VirtualTransform)).Dtor_lower())), + } + } + if (input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.VirtualTransform)).Is_insert() { + + union = &awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.VirtualTransformMemberinsert{ + Value: (Aws_cryptography_dbEncryptionSdk_dynamoDb_VirtualTransform_insert_FromDafny((input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.VirtualTransform)).Dtor_insert())), + } + } + if (input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.VirtualTransform)).Is_prefix() { + + union = &awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.VirtualTransformMemberprefix{ + Value: (Aws_cryptography_dbEncryptionSdk_dynamoDb_VirtualTransform_prefix_FromDafny((input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.VirtualTransform)).Dtor_prefix())), + } + } + if (input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.VirtualTransform)).Is_suffix() { + + union = &awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.VirtualTransformMembersuffix{ + Value: (Aws_cryptography_dbEncryptionSdk_dynamoDb_VirtualTransform_suffix_FromDafny((input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.VirtualTransform)).Dtor_suffix())), + } + } + if (input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.VirtualTransform)).Is_substring() { + + union = &awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.VirtualTransformMembersubstring{ + Value: (Aws_cryptography_dbEncryptionSdk_dynamoDb_VirtualTransform_substring_FromDafny((input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.VirtualTransform)).Dtor_substring())), + } + } + if (input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.VirtualTransform)).Is_segment() { + + union = &awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.VirtualTransformMembersegment{ + Value: (Aws_cryptography_dbEncryptionSdk_dynamoDb_VirtualTransform_segment_FromDafny((input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.VirtualTransform)).Dtor_segment())), + } + } + if (input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.VirtualTransform)).Is_segments() { + + union = &awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.VirtualTransformMembersegments{ + Value: (Aws_cryptography_dbEncryptionSdk_dynamoDb_VirtualTransform_segments_FromDafny((input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.VirtualTransform)).Dtor_segments())), + } + } + + return union + +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_VirtualField_name_FromDafny(input interface{}) string { + return func() string { + + a := UTF8.Encode(input.(dafny.Sequence)).Dtor_value() + s := string(dafny.ToByteArray(a.(dafny.Sequence))) + + return s + }() +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_VirtualField_parts_FromDafny(input interface{}) []awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.VirtualPart { + fieldValue := make([]awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.VirtualPart, 0) + for i := dafny.Iterate(input.(dafny.Sequence)); ; { + val, ok := i() + if !ok { + break + } + fieldValue = append(fieldValue, Aws_cryptography_dbEncryptionSdk_dynamoDb_VirtualPartList_member_FromDafny(val)) + } + return fieldValue +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_VirtualPartList_member_FromDafny(input interface{}) awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.VirtualPart { + return awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.VirtualPart{Loc: Aws_cryptography_dbEncryptionSdk_dynamoDb_VirtualPart_loc_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.VirtualPart).Dtor_loc()), + Trans: Aws_cryptography_dbEncryptionSdk_dynamoDb_VirtualPart_trans_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.VirtualPart).Dtor_trans().UnwrapOr(nil)), + } +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_BeaconVersion_version_FromDafny(input interface{}) int32 { + return func() int32 { + var b = input.(int32) + return b + }() +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_BeaconVersion_keyStore_FromDafny(input interface{}) *awscryptographykeystoresmithygenerated.Client { + value, ok := input.(AwsCryptographyKeyStoreTypes.IKeyStoreClient) + if !ok { + panic("invalid type found.") + } + return &awscryptographykeystoresmithygenerated.Client{value} + +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_BeaconVersion_keySource_FromDafny(input interface{}) awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.BeaconKeySource { + var union awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.BeaconKeySource + + if (input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.BeaconKeySource)).Is_single() { + + union = &awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.BeaconKeySourceMembersingle{ + Value: (Aws_cryptography_dbEncryptionSdk_dynamoDb_BeaconKeySource_single_FromDafny((input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.BeaconKeySource)).Dtor_single())), + } + } + if (input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.BeaconKeySource)).Is_multi() { + + union = &awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.BeaconKeySourceMembermulti{ + Value: (Aws_cryptography_dbEncryptionSdk_dynamoDb_BeaconKeySource_multi_FromDafny((input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.BeaconKeySource)).Dtor_multi())), + } + } + + return union + +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_BeaconVersion_standardBeacons_FromDafny(input interface{}) []awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.StandardBeacon { + fieldValue := make([]awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.StandardBeacon, 0) + for i := dafny.Iterate(input.(dafny.Sequence)); ; { + val, ok := i() + if !ok { + break + } + fieldValue = append(fieldValue, Aws_cryptography_dbEncryptionSdk_dynamoDb_StandardBeaconList_member_FromDafny(val)) + } + return fieldValue +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_StandardBeaconList_member_FromDafny(input interface{}) awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.StandardBeacon { + return awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.StandardBeacon{Name: Aws_cryptography_dbEncryptionSdk_dynamoDb_StandardBeacon_name_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.StandardBeacon).Dtor_name()), + Length: Aws_cryptography_dbEncryptionSdk_dynamoDb_StandardBeacon_length_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.StandardBeacon).Dtor_length()), + Loc: Aws_cryptography_dbEncryptionSdk_dynamoDb_StandardBeacon_loc_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.StandardBeacon).Dtor_loc().UnwrapOr(nil)), + Style: Aws_cryptography_dbEncryptionSdk_dynamoDb_StandardBeacon_style_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.StandardBeacon).Dtor_style().UnwrapOr(nil)), + } +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_BeaconVersion_compoundBeacons_FromDafny(input interface{}) []awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.CompoundBeacon { + if input == nil { + return nil + } + fieldValue := make([]awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.CompoundBeacon, 0) + for i := dafny.Iterate(input.(dafny.Sequence)); ; { + val, ok := i() + if !ok { + break + } + fieldValue = append(fieldValue, Aws_cryptography_dbEncryptionSdk_dynamoDb_CompoundBeaconList_member_FromDafny(val)) + } + return fieldValue +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_CompoundBeaconList_member_FromDafny(input interface{}) awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.CompoundBeacon { + return awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.CompoundBeacon{Name: Aws_cryptography_dbEncryptionSdk_dynamoDb_CompoundBeacon_name_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.CompoundBeacon).Dtor_name()), + Split: Aws_cryptography_dbEncryptionSdk_dynamoDb_CompoundBeacon_split_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.CompoundBeacon).Dtor_split()), + Encrypted: Aws_cryptography_dbEncryptionSdk_dynamoDb_CompoundBeacon_encrypted_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.CompoundBeacon).Dtor_encrypted().UnwrapOr(nil)), + Signed: Aws_cryptography_dbEncryptionSdk_dynamoDb_CompoundBeacon_signed_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.CompoundBeacon).Dtor_signed().UnwrapOr(nil)), + Constructors: Aws_cryptography_dbEncryptionSdk_dynamoDb_CompoundBeacon_constructors_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.CompoundBeacon).Dtor_constructors().UnwrapOr(nil)), + } +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_BeaconVersion_virtualFields_FromDafny(input interface{}) []awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.VirtualField { + if input == nil { + return nil + } + fieldValue := make([]awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.VirtualField, 0) + for i := dafny.Iterate(input.(dafny.Sequence)); ; { + val, ok := i() + if !ok { + break + } + fieldValue = append(fieldValue, Aws_cryptography_dbEncryptionSdk_dynamoDb_VirtualFieldList_member_FromDafny(val)) + } + return fieldValue +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_VirtualFieldList_member_FromDafny(input interface{}) awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.VirtualField { + return awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.VirtualField{Name: Aws_cryptography_dbEncryptionSdk_dynamoDb_VirtualField_name_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.VirtualField).Dtor_name()), + Parts: Aws_cryptography_dbEncryptionSdk_dynamoDb_VirtualField_parts_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.VirtualField).Dtor_parts()), + } +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_BeaconVersion_encryptedParts_FromDafny(input interface{}) []awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.EncryptedPart { + if input == nil { + return nil + } + fieldValue := make([]awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.EncryptedPart, 0) + for i := dafny.Iterate(input.(dafny.Sequence)); ; { + val, ok := i() + if !ok { + break + } + fieldValue = append(fieldValue, Aws_cryptography_dbEncryptionSdk_dynamoDb_EncryptedPartsList_member_FromDafny(val)) + } + return fieldValue +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_BeaconVersion_signedParts_FromDafny(input interface{}) []awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.SignedPart { + if input == nil { + return nil + } + fieldValue := make([]awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.SignedPart, 0) + for i := dafny.Iterate(input.(dafny.Sequence)); ; { + val, ok := i() + if !ok { + break + } + fieldValue = append(fieldValue, Aws_cryptography_dbEncryptionSdk_dynamoDb_SignedPartsList_member_FromDafny(val)) + } + return fieldValue +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_LegacyOverride_policy_FromDafny(input interface{}) awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.LegacyPolicy { + return func() awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.LegacyPolicy { + var u awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.LegacyPolicy + inputEnum := input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.LegacyPolicy) + index := -1 + for allEnums := dafny.Iterate(AwsCryptographyDbEncryptionSdkDynamoDbTypes.CompanionStruct_LegacyPolicy_{}.AllSingletonConstructors()); ; { + enum, ok := allEnums() + if ok { + index++ + if enum.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.LegacyPolicy).Equals(inputEnum) { + break + } + } + } + + return u.Values()[index] + }() +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_LegacyOverride_attributeActionsOnEncrypt_FromDafny(input interface{}) map[string]awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.CryptoAction { + var m map[string]awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.CryptoAction = make(map[string]awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.CryptoAction) + if input == nil { + return nil + } + for i := dafny.Iterate(input.(dafny.Map).Items()); ; { + val, ok := i() + if !ok { + break + } + m[Aws_cryptography_dbEncryptionSdk_dynamoDb_AttributeActions_key_FromDafny((*val.(dafny.Tuple).IndexInt(0)))] = Aws_cryptography_dbEncryptionSdk_dynamoDb_AttributeActions_value_FromDafny((*val.(dafny.Tuple).IndexInt(1))) + } + return m + +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_AttributeActions_key_FromDafny(input interface{}) string { + return func() string { + + a := UTF8.Encode(input.(dafny.Sequence)).Dtor_value() + s := string(dafny.ToByteArray(a.(dafny.Sequence))) + + return s + }() +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_AttributeActions_value_FromDafny(input interface{}) awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.CryptoAction { + return func() awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.CryptoAction { + var u awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.CryptoAction + inputEnum := input.(AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.CryptoAction) + index := -1 + for allEnums := dafny.Iterate(AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.CompanionStruct_CryptoAction_{}.AllSingletonConstructors()); ; { + enum, ok := allEnums() + if ok { + index++ + if enum.(AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.CryptoAction).Equals(inputEnum) { + break + } + } + } + + return u.Values()[index] + }() +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_LegacyOverride_defaultAttributeFlag_FromDafny(input interface{}) *awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.CryptoAction { + return func() *awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.CryptoAction { + var u awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.CryptoAction + if input == nil { + return nil + } + inputEnum := input.(AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.CryptoAction) + index := -1 + for allEnums := dafny.Iterate(AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.CompanionStruct_CryptoAction_{}.AllSingletonConstructors()); ; { + enum, ok := allEnums() + if ok { + index++ + if enum.(AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.CryptoAction).Equals(inputEnum) { + break + } + } + } + + return &u.Values()[index] + }() +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_SearchConfig_versions_FromDafny(input interface{}) []awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.BeaconVersion { + fieldValue := make([]awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.BeaconVersion, 0) + for i := dafny.Iterate(input.(dafny.Sequence)); ; { + val, ok := i() + if !ok { + break + } + fieldValue = append(fieldValue, Aws_cryptography_dbEncryptionSdk_dynamoDb_BeaconVersionList_member_FromDafny(val)) + } + return fieldValue +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_BeaconVersionList_member_FromDafny(input interface{}) awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.BeaconVersion { + return awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.BeaconVersion{Version: Aws_cryptography_dbEncryptionSdk_dynamoDb_BeaconVersion_version_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.BeaconVersion).Dtor_version()), + KeyStore: Aws_cryptography_dbEncryptionSdk_dynamoDb_BeaconVersion_keyStore_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.BeaconVersion).Dtor_keyStore()), + KeySource: Aws_cryptography_dbEncryptionSdk_dynamoDb_BeaconVersion_keySource_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.BeaconVersion).Dtor_keySource()), + StandardBeacons: Aws_cryptography_dbEncryptionSdk_dynamoDb_BeaconVersion_standardBeacons_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.BeaconVersion).Dtor_standardBeacons()), + CompoundBeacons: Aws_cryptography_dbEncryptionSdk_dynamoDb_BeaconVersion_compoundBeacons_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.BeaconVersion).Dtor_compoundBeacons().UnwrapOr(nil)), + VirtualFields: Aws_cryptography_dbEncryptionSdk_dynamoDb_BeaconVersion_virtualFields_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.BeaconVersion).Dtor_virtualFields().UnwrapOr(nil)), + EncryptedParts: Aws_cryptography_dbEncryptionSdk_dynamoDb_BeaconVersion_encryptedParts_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.BeaconVersion).Dtor_encryptedParts().UnwrapOr(nil)), + SignedParts: Aws_cryptography_dbEncryptionSdk_dynamoDb_BeaconVersion_signedParts_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.BeaconVersion).Dtor_signedParts().UnwrapOr(nil)), + } +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_SearchConfig_writeVersion_FromDafny(input interface{}) int32 { + return func() int32 { + var b = input.(int32) + return b + }() +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_DynamoDbTableEncryptionConfig_logicalTableName_FromDafny(input interface{}) string { + return func() string { + + a := UTF8.Encode(input.(dafny.Sequence)).Dtor_value() + s := string(dafny.ToByteArray(a.(dafny.Sequence))) + + return s + }() +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_DynamoDbTableEncryptionConfig_partitionKeyName_FromDafny(input interface{}) string { + return func() string { + + a := UTF8.Encode(input.(dafny.Sequence)).Dtor_value() + s := string(dafny.ToByteArray(a.(dafny.Sequence))) + + return s + }() +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_DynamoDbTableEncryptionConfig_sortKeyName_FromDafny(input interface{}) *string { + return func() *string { + if input == nil { + return nil + } + + a := UTF8.Encode(input.(dafny.Sequence)).Dtor_value() + s := string(dafny.ToByteArray(a.(dafny.Sequence))) + + return &s + }() +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_DynamoDbTableEncryptionConfig_search_FromDafny(input interface{}) *awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.SearchConfig { + if input == nil { + return nil + } + return &awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.SearchConfig{Versions: Aws_cryptography_dbEncryptionSdk_dynamoDb_SearchConfig_versions_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.SearchConfig).Dtor_versions()), + WriteVersion: Aws_cryptography_dbEncryptionSdk_dynamoDb_SearchConfig_writeVersion_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.SearchConfig).Dtor_writeVersion()), + } +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_DynamoDbTableEncryptionConfig_attributeActionsOnEncrypt_FromDafny(input interface{}) map[string]awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.CryptoAction { + var m map[string]awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.CryptoAction = make(map[string]awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.CryptoAction) + if input == nil { + return nil + } + for i := dafny.Iterate(input.(dafny.Map).Items()); ; { + val, ok := i() + if !ok { + break + } + m[Aws_cryptography_dbEncryptionSdk_dynamoDb_AttributeActions_key_FromDafny((*val.(dafny.Tuple).IndexInt(0)))] = Aws_cryptography_dbEncryptionSdk_dynamoDb_AttributeActions_value_FromDafny((*val.(dafny.Tuple).IndexInt(1))) + } + return m + +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_DynamoDbTableEncryptionConfig_allowedUnsignedAttributes_FromDafny(input interface{}) []string { + if input == nil { + return nil + } + fieldValue := make([]string, 0) + for i := dafny.Iterate(input.(dafny.Sequence)); ; { + val, ok := i() + if !ok { + break + } + fieldValue = append(fieldValue, comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_AttributeNameList_member_FromDafny(val)) + } + return fieldValue +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_DynamoDbTableEncryptionConfig_allowedUnsignedAttributePrefix_FromDafny(input interface{}) *string { + return func() *string { + if input == nil { + return nil + } + + a := UTF8.Encode(input.(dafny.Sequence)).Dtor_value() + s := string(dafny.ToByteArray(a.(dafny.Sequence))) + + return &s + }() +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_DynamoDbTableEncryptionConfig_algorithmSuiteId_FromDafny(input interface{}) *awscryptographymaterialproviderssmithygeneratedtypes.DBEAlgorithmSuiteId { + return func() *awscryptographymaterialproviderssmithygeneratedtypes.DBEAlgorithmSuiteId { + var u awscryptographymaterialproviderssmithygeneratedtypes.DBEAlgorithmSuiteId + if input == nil { + return nil + } + inputEnum := input.(AwsCryptographyMaterialProvidersTypes.DBEAlgorithmSuiteId) + index := -1 + for allEnums := dafny.Iterate(AwsCryptographyMaterialProvidersTypes.CompanionStruct_DBEAlgorithmSuiteId_{}.AllSingletonConstructors()); ; { + enum, ok := allEnums() + if ok { + index++ + if enum.(AwsCryptographyMaterialProvidersTypes.DBEAlgorithmSuiteId).Equals(inputEnum) { + break + } + } + } + + return &u.Values()[index] + }() +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_DynamoDbTableEncryptionConfig_legacyOverride_FromDafny(input interface{}) *awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.LegacyOverride { + if input == nil { + return nil + } + return &awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.LegacyOverride{Policy: Aws_cryptography_dbEncryptionSdk_dynamoDb_LegacyOverride_policy_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.LegacyOverride).Dtor_policy()), + Encryptor: LegacyDynamoDbEncryptor_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.LegacyOverride).Dtor_encryptor()), + AttributeActionsOnEncrypt: Aws_cryptography_dbEncryptionSdk_dynamoDb_LegacyOverride_attributeActionsOnEncrypt_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.LegacyOverride).Dtor_attributeActionsOnEncrypt()), + DefaultAttributeFlag: Aws_cryptography_dbEncryptionSdk_dynamoDb_LegacyOverride_defaultAttributeFlag_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.LegacyOverride).Dtor_defaultAttributeFlag().UnwrapOr(nil)), + } +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_DynamoDbTableEncryptionConfig_plaintextOverride_FromDafny(input interface{}) *awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.PlaintextOverride { + return func() *awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.PlaintextOverride { + var u awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.PlaintextOverride + if input == nil { + return nil + } + inputEnum := input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.PlaintextOverride) + index := -1 + for allEnums := dafny.Iterate(AwsCryptographyDbEncryptionSdkDynamoDbTypes.CompanionStruct_PlaintextOverride_{}.AllSingletonConstructors()); ; { + enum, ok := allEnums() + if ok { + index++ + if enum.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.PlaintextOverride).Equals(inputEnum) { + break + } + } + } + + return &u.Values()[index] + }() +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_DynamoDbTablesEncryptionConfig_tableEncryptionConfigs_FromDafny(input interface{}) map[string]awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.DynamoDbTableEncryptionConfig { + var m map[string]awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.DynamoDbTableEncryptionConfig = make(map[string]awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.DynamoDbTableEncryptionConfig) + if input == nil { + return nil + } + for i := dafny.Iterate(input.(dafny.Map).Items()); ; { + val, ok := i() + if !ok { + break + } + m[Aws_cryptography_dbEncryptionSdk_dynamoDb_DynamoDbTableEncryptionConfigList_key_FromDafny((*val.(dafny.Tuple).IndexInt(0)))] = Aws_cryptography_dbEncryptionSdk_dynamoDb_DynamoDbTableEncryptionConfigList_value_FromDafny((*val.(dafny.Tuple).IndexInt(1))) + } + return m + +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_DynamoDbTableEncryptionConfigList_key_FromDafny(input interface{}) string { + return func() string { + + a := UTF8.Encode(input.(dafny.Sequence)).Dtor_value() + s := string(dafny.ToByteArray(a.(dafny.Sequence))) + + return s + }() +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_DynamoDbTableEncryptionConfigList_value_FromDafny(input interface{}) awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.DynamoDbTableEncryptionConfig { + return awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.DynamoDbTableEncryptionConfig{LogicalTableName: Aws_cryptography_dbEncryptionSdk_dynamoDb_DynamoDbTableEncryptionConfig_logicalTableName_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.DynamoDbTableEncryptionConfig).Dtor_logicalTableName()), + PartitionKeyName: Aws_cryptography_dbEncryptionSdk_dynamoDb_DynamoDbTableEncryptionConfig_partitionKeyName_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.DynamoDbTableEncryptionConfig).Dtor_partitionKeyName()), + SortKeyName: Aws_cryptography_dbEncryptionSdk_dynamoDb_DynamoDbTableEncryptionConfig_sortKeyName_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.DynamoDbTableEncryptionConfig).Dtor_sortKeyName().UnwrapOr(nil)), + Search: Aws_cryptography_dbEncryptionSdk_dynamoDb_DynamoDbTableEncryptionConfig_search_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.DynamoDbTableEncryptionConfig).Dtor_search().UnwrapOr(nil)), + AttributeActionsOnEncrypt: Aws_cryptography_dbEncryptionSdk_dynamoDb_DynamoDbTableEncryptionConfig_attributeActionsOnEncrypt_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.DynamoDbTableEncryptionConfig).Dtor_attributeActionsOnEncrypt()), + AllowedUnsignedAttributes: Aws_cryptography_dbEncryptionSdk_dynamoDb_DynamoDbTableEncryptionConfig_allowedUnsignedAttributes_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.DynamoDbTableEncryptionConfig).Dtor_allowedUnsignedAttributes().UnwrapOr(nil)), + AllowedUnsignedAttributePrefix: Aws_cryptography_dbEncryptionSdk_dynamoDb_DynamoDbTableEncryptionConfig_allowedUnsignedAttributePrefix_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.DynamoDbTableEncryptionConfig).Dtor_allowedUnsignedAttributePrefix().UnwrapOr(nil)), + AlgorithmSuiteId: Aws_cryptography_dbEncryptionSdk_dynamoDb_DynamoDbTableEncryptionConfig_algorithmSuiteId_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.DynamoDbTableEncryptionConfig).Dtor_algorithmSuiteId().UnwrapOr(nil)), + Keyring: func() awscryptographymaterialproviderssmithygeneratedtypes.IKeyring { + if input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.DynamoDbTableEncryptionConfig).Dtor_keyring().UnwrapOr(nil) == nil { + return nil + } + return awscryptographymaterialproviderssmithygenerated.Keyring_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.DynamoDbTableEncryptionConfig).Dtor_keyring().UnwrapOr(nil).(AwsCryptographyMaterialProvidersTypes.IKeyring)) + }(), + Cmm: func() awscryptographymaterialproviderssmithygeneratedtypes.ICryptographicMaterialsManager { + if input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.DynamoDbTableEncryptionConfig).Dtor_cmm().UnwrapOr(nil) == nil { + return nil + } + return awscryptographymaterialproviderssmithygenerated.CryptographicMaterialsManager_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.DynamoDbTableEncryptionConfig).Dtor_cmm().UnwrapOr(nil).(AwsCryptographyMaterialProvidersTypes.ICryptographicMaterialsManager)) + }(), + LegacyOverride: Aws_cryptography_dbEncryptionSdk_dynamoDb_DynamoDbTableEncryptionConfig_legacyOverride_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.DynamoDbTableEncryptionConfig).Dtor_legacyOverride().UnwrapOr(nil)), + PlaintextOverride: Aws_cryptography_dbEncryptionSdk_dynamoDb_DynamoDbTableEncryptionConfig_plaintextOverride_FromDafny(input.(AwsCryptographyDbEncryptionSdkDynamoDbTypes.DynamoDbTableEncryptionConfig).Dtor_plaintextOverride().UnwrapOr(nil)), + } +} diff --git a/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes/enums.go b/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes/enums.go new file mode 100644 index 000000000..53b10ce6b --- /dev/null +++ b/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes/enums.go @@ -0,0 +1,35 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes + +type LegacyPolicy string + +const ( + LegacyPolicyForceLegacyEncryptAllowLegacyDecrypt LegacyPolicy = "FORCE_LEGACY_ENCRYPT_ALLOW_LEGACY_DECRYPT" + LegacyPolicyForbidLegacyEncryptAllowLegacyDecrypt LegacyPolicy = "FORBID_LEGACY_ENCRYPT_ALLOW_LEGACY_DECRYPT" + LegacyPolicyForbidLegacyEncryptForbidLegacyDecrypt LegacyPolicy = "FORBID_LEGACY_ENCRYPT_FORBID_LEGACY_DECRYPT" +) + +func (LegacyPolicy) Values() []LegacyPolicy { + return []LegacyPolicy{ + "FORCE_LEGACY_ENCRYPT_ALLOW_LEGACY_DECRYPT", + "FORBID_LEGACY_ENCRYPT_ALLOW_LEGACY_DECRYPT", + "FORBID_LEGACY_ENCRYPT_FORBID_LEGACY_DECRYPT", + } +} + +type PlaintextOverride string + +const ( + PlaintextOverrideForcePlaintextWriteAllowPlaintextRead PlaintextOverride = "FORCE_PLAINTEXT_WRITE_ALLOW_PLAINTEXT_READ" + PlaintextOverrideForbidPlaintextWriteAllowPlaintextRead PlaintextOverride = "FORBID_PLAINTEXT_WRITE_ALLOW_PLAINTEXT_READ" + PlaintextOverrideForbidPlaintextWriteForbidPlaintextRead PlaintextOverride = "FORBID_PLAINTEXT_WRITE_FORBID_PLAINTEXT_READ" +) + +func (PlaintextOverride) Values() []PlaintextOverride { + return []PlaintextOverride{ + "FORCE_PLAINTEXT_WRITE_ALLOW_PLAINTEXT_READ", + "FORBID_PLAINTEXT_WRITE_ALLOW_PLAINTEXT_READ", + "FORBID_PLAINTEXT_WRITE_FORBID_PLAINTEXT_READ", + } +} diff --git a/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes/errors.go b/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes/errors.go new file mode 100644 index 000000000..777cb6302 --- /dev/null +++ b/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes/errors.go @@ -0,0 +1,17 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes + +import ( + "fmt" +) + +type DynamoDbEncryptionException struct { + DynamoDbEncryptionBaseException + Message string + ErrorCodeOverride *string +} + +func (e DynamoDbEncryptionException) Error() string { + return fmt.Sprintf("%s: %s", e.ErrorCodeOverride, e.Message) +} diff --git a/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes/types.go b/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes/types.go new file mode 100644 index 000000000..a6de330ac --- /dev/null +++ b/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes/types.go @@ -0,0 +1,1391 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes + +import ( + "fmt" + + "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/awscryptographykeystoresmithygenerated" + "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/awscryptographymaterialproviderssmithygeneratedtypes" + "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes" + dynamodbtypes "github.com/aws/aws-sdk-go-v2/service/dynamodb/types" +) + +type DynamoDbKeyBranchKeyIdSupplierReference struct { +} + +func (input DynamoDbKeyBranchKeyIdSupplierReference) Validate() error { + + return nil +} + +type CreateDynamoDbEncryptionBranchKeyIdSupplierInput struct { + DdbKeyBranchKeyIdSupplier IDynamoDbKeyBranchKeyIdSupplier +} + +func (input CreateDynamoDbEncryptionBranchKeyIdSupplierInput) Validate() error { + + return nil +} + +type CreateDynamoDbEncryptionBranchKeyIdSupplierOutput struct { + BranchKeyIdSupplier awscryptographymaterialproviderssmithygeneratedtypes.IBranchKeyIdSupplier +} + +func (input CreateDynamoDbEncryptionBranchKeyIdSupplierOutput) Validate() error { + + return nil +} + +type EncryptedDataKeyDescription struct { + KeyProviderId string + + BranchKeyId *string + + BranchKeyVersion *string + + KeyProviderInfo *string +} + +func (input EncryptedDataKeyDescription) Validate() error { + + return nil +} + +type GetEncryptedDataKeyDescriptionOutput struct { + EncryptedDataKeyDescriptionOutput []EncryptedDataKeyDescription +} + +func (input GetEncryptedDataKeyDescriptionOutput) Validate() error { + if input.EncryptedDataKeyDescriptionOutput == nil { + return fmt.Errorf("input.EncryptedDataKeyDescriptionOutput is required but has a nil value.") + } + if input.Aws_cryptography_dbEncryptionSdk_dynamoDb_GetEncryptedDataKeyDescriptionOutput_EncryptedDataKeyDescriptionOutput_Validate() != nil { + return input.Aws_cryptography_dbEncryptionSdk_dynamoDb_GetEncryptedDataKeyDescriptionOutput_EncryptedDataKeyDescriptionOutput_Validate() + } + + return nil +} + +func (input GetEncryptedDataKeyDescriptionOutput) Aws_cryptography_dbEncryptionSdk_dynamoDb_GetEncryptedDataKeyDescriptionOutput_EncryptedDataKeyDescriptionOutput_Validate() error { + for _, item := range input.EncryptedDataKeyDescriptionOutput { + if item.Validate() != nil { + return item.Validate() + } + } + + return nil +} + +type GetEncryptedDataKeyDescriptionInput struct { + Input GetEncryptedDataKeyDescriptionUnion +} + +func (input GetEncryptedDataKeyDescriptionInput) Validate() error { + if input.Input == nil { + return fmt.Errorf("input.Input is required but has a nil value.") + } + if input.Aws_cryptography_dbEncryptionSdk_dynamoDb_GetEncryptedDataKeyDescriptionInput_input_Validate() != nil { + return input.Aws_cryptography_dbEncryptionSdk_dynamoDb_GetEncryptedDataKeyDescriptionInput_input_Validate() + } + + return nil +} + +func (input GetEncryptedDataKeyDescriptionInput) Aws_cryptography_dbEncryptionSdk_dynamoDb_GetEncryptedDataKeyDescriptionInput_input_Validate() error { + if input.Input == nil { + return nil + } + switch unionType := input.Input.(type) { + case *GetEncryptedDataKeyDescriptionUnionMemberheader: + case *GetEncryptedDataKeyDescriptionUnionMemberitem: + if input.Aws_cryptography_dbEncryptionSdk_dynamoDb_GetEncryptedDataKeyDescriptionUnion_item_Validate(unionType.Value) != nil { + return input.Aws_cryptography_dbEncryptionSdk_dynamoDb_GetEncryptedDataKeyDescriptionUnion_item_Validate(unionType.Value) + } + // Default case should not be reached. + default: + panic(fmt.Sprintf("Unhandled union type: %T ", unionType)) + } + + return nil +} +func (input GetEncryptedDataKeyDescriptionInput) Com_amazonaws_dynamodb_AttributeMap_value_Validate(Value dynamodbtypes.AttributeValue) error { + if Value == nil { + return nil + } + switch unionType := Value.(type) { + case *dynamodbtypes.AttributeValueMemberS: + case *dynamodbtypes.AttributeValueMemberN: + case *dynamodbtypes.AttributeValueMemberB: + case *dynamodbtypes.AttributeValueMemberSS: + case *dynamodbtypes.AttributeValueMemberNS: + case *dynamodbtypes.AttributeValueMemberBS: + case *dynamodbtypes.AttributeValueMemberM: + case *dynamodbtypes.AttributeValueMemberL: + case *dynamodbtypes.AttributeValueMemberNULL: + case *dynamodbtypes.AttributeValueMemberBOOL: + // Default case should not be reached. + default: + panic(fmt.Sprintf("Unhandled union type: %T ", unionType)) + } + + return nil +} +func (input GetEncryptedDataKeyDescriptionInput) Com_amazonaws_dynamodb_MapAttributeValue_value_Validate(Value dynamodbtypes.AttributeValue) error { + if Value == nil { + return nil + } + switch unionType := Value.(type) { + case *dynamodbtypes.AttributeValueMemberS: + case *dynamodbtypes.AttributeValueMemberN: + case *dynamodbtypes.AttributeValueMemberB: + case *dynamodbtypes.AttributeValueMemberSS: + case *dynamodbtypes.AttributeValueMemberNS: + case *dynamodbtypes.AttributeValueMemberBS: + case *dynamodbtypes.AttributeValueMemberM: + if input.Com_amazonaws_dynamodb_AttributeValue_M_Validate(unionType.Value) != nil { + return input.Com_amazonaws_dynamodb_AttributeValue_M_Validate(unionType.Value) + } + case *dynamodbtypes.AttributeValueMemberL: + case *dynamodbtypes.AttributeValueMemberNULL: + case *dynamodbtypes.AttributeValueMemberBOOL: + // Default case should not be reached. + default: + panic(fmt.Sprintf("Unhandled union type: %T ", unionType)) + } + + return nil +} +func (input GetEncryptedDataKeyDescriptionInput) Com_amazonaws_dynamodb_AttributeValue_M_Validate(Value map[string]dynamodbtypes.AttributeValue) error { + for key, value := range Value { + if len(key) < 0 { + return fmt.Errorf("AttributeName has a minimum length of 0 but has the length of %d.", len(key)) + } + if len(key) > 65535 { + return fmt.Errorf("AttributeName has a maximum length of 65535 but has the length of %d.", len(key)) + } + if input.Com_amazonaws_dynamodb_MapAttributeValue_value_Validate(value) != nil { + return input.Com_amazonaws_dynamodb_MapAttributeValue_value_Validate(value) + } + } + + return nil +} +func (input GetEncryptedDataKeyDescriptionInput) Com_amazonaws_dynamodb_ListAttributeValue_member_Validate(Value dynamodbtypes.AttributeValue) error { + if Value == nil { + return nil + } + switch unionType := Value.(type) { + case *dynamodbtypes.AttributeValueMemberS: + case *dynamodbtypes.AttributeValueMemberN: + case *dynamodbtypes.AttributeValueMemberB: + case *dynamodbtypes.AttributeValueMemberSS: + case *dynamodbtypes.AttributeValueMemberNS: + case *dynamodbtypes.AttributeValueMemberBS: + case *dynamodbtypes.AttributeValueMemberM: + case *dynamodbtypes.AttributeValueMemberL: + if input.Com_amazonaws_dynamodb_AttributeValue_L_Validate(unionType.Value) != nil { + return input.Com_amazonaws_dynamodb_AttributeValue_L_Validate(unionType.Value) + } + case *dynamodbtypes.AttributeValueMemberNULL: + case *dynamodbtypes.AttributeValueMemberBOOL: + // Default case should not be reached. + default: + panic(fmt.Sprintf("Unhandled union type: %T ", unionType)) + } + + return nil +} +func (input GetEncryptedDataKeyDescriptionInput) Com_amazonaws_dynamodb_AttributeValue_L_Validate(Value []dynamodbtypes.AttributeValue) error { + for _, item := range Value { + if input.Com_amazonaws_dynamodb_ListAttributeValue_member_Validate(item) != nil { + return input.Com_amazonaws_dynamodb_ListAttributeValue_member_Validate(item) + } + } + + return nil +} +func (input GetEncryptedDataKeyDescriptionInput) Aws_cryptography_dbEncryptionSdk_dynamoDb_GetEncryptedDataKeyDescriptionUnion_item_Validate(Value map[string]dynamodbtypes.AttributeValue) error { + for key, value := range Value { + if len(key) < 0 { + return fmt.Errorf("AttributeName has a minimum length of 0 but has the length of %d.", len(key)) + } + if len(key) > 65535 { + return fmt.Errorf("AttributeName has a maximum length of 65535 but has the length of %d.", len(key)) + } + if input.Com_amazonaws_dynamodb_AttributeMap_value_Validate(value) != nil { + return input.Com_amazonaws_dynamodb_AttributeMap_value_Validate(value) + } + } + + return nil +} + +type AsSet struct { +} + +func (input AsSet) Validate() error { + + return nil +} + +type AtomicPrimitivesReference struct { +} + +func (input AtomicPrimitivesReference) Validate() error { + + return nil +} + +type MultiKeyStore struct { + CacheTTL int32 + + KeyFieldName string + + Cache awscryptographymaterialproviderssmithygeneratedtypes.CacheType + + PartitionId *string +} + +func (input MultiKeyStore) Validate() error { + if input.Aws_cryptography_dbEncryptionSdk_dynamoDb_MultiKeyStore_cache_Validate() != nil { + return input.Aws_cryptography_dbEncryptionSdk_dynamoDb_MultiKeyStore_cache_Validate() + } + + return nil +} + +func (input MultiKeyStore) Aws_cryptography_dbEncryptionSdk_dynamoDb_MultiKeyStore_cache_Validate() error { + if input.Cache == nil { + return nil + } + switch unionType := input.Cache.(type) { + case *awscryptographymaterialproviderssmithygeneratedtypes.CacheTypeMemberDefault: + if unionType.Value.Validate() != nil { + return unionType.Value.Validate() + } + case *awscryptographymaterialproviderssmithygeneratedtypes.CacheTypeMemberNo: + if unionType.Value.Validate() != nil { + return unionType.Value.Validate() + } + case *awscryptographymaterialproviderssmithygeneratedtypes.CacheTypeMemberSingleThreaded: + if unionType.Value.Validate() != nil { + return unionType.Value.Validate() + } + case *awscryptographymaterialproviderssmithygeneratedtypes.CacheTypeMemberMultiThreaded: + if unionType.Value.Validate() != nil { + return unionType.Value.Validate() + } + case *awscryptographymaterialproviderssmithygeneratedtypes.CacheTypeMemberStormTracking: + if unionType.Value.Validate() != nil { + return unionType.Value.Validate() + } + case *awscryptographymaterialproviderssmithygeneratedtypes.CacheTypeMemberShared: + // Default case should not be reached. + default: + panic(fmt.Sprintf("Unhandled union type: %T ", unionType)) + } + + return nil +} + +type SingleKeyStore struct { + CacheTTL int32 + + KeyId string + + Cache awscryptographymaterialproviderssmithygeneratedtypes.CacheType + + PartitionId *string +} + +func (input SingleKeyStore) Validate() error { + if input.Aws_cryptography_dbEncryptionSdk_dynamoDb_SingleKeyStore_cache_Validate() != nil { + return input.Aws_cryptography_dbEncryptionSdk_dynamoDb_SingleKeyStore_cache_Validate() + } + + return nil +} + +func (input SingleKeyStore) Aws_cryptography_dbEncryptionSdk_dynamoDb_SingleKeyStore_cache_Validate() error { + if input.Cache == nil { + return nil + } + switch unionType := input.Cache.(type) { + case *awscryptographymaterialproviderssmithygeneratedtypes.CacheTypeMemberDefault: + if unionType.Value.Validate() != nil { + return unionType.Value.Validate() + } + case *awscryptographymaterialproviderssmithygeneratedtypes.CacheTypeMemberNo: + if unionType.Value.Validate() != nil { + return unionType.Value.Validate() + } + case *awscryptographymaterialproviderssmithygeneratedtypes.CacheTypeMemberSingleThreaded: + if unionType.Value.Validate() != nil { + return unionType.Value.Validate() + } + case *awscryptographymaterialproviderssmithygeneratedtypes.CacheTypeMemberMultiThreaded: + if unionType.Value.Validate() != nil { + return unionType.Value.Validate() + } + case *awscryptographymaterialproviderssmithygeneratedtypes.CacheTypeMemberStormTracking: + if unionType.Value.Validate() != nil { + return unionType.Value.Validate() + } + case *awscryptographymaterialproviderssmithygeneratedtypes.CacheTypeMemberShared: + // Default case should not be reached. + default: + panic(fmt.Sprintf("Unhandled union type: %T ", unionType)) + } + + return nil +} + +type PartOnly struct { +} + +func (input PartOnly) Validate() error { + + return nil +} + +type Shared struct { + Other string +} + +func (input Shared) Validate() error { + + return nil +} + +type SharedSet struct { + Other string +} + +func (input SharedSet) Validate() error { + + return nil +} + +type ConstructorPart struct { + Name string + + Required bool +} + +func (input ConstructorPart) Validate() error { + + return nil +} + +type Constructor struct { + Parts []ConstructorPart +} + +func (input Constructor) Validate() error { + if len(input.Parts) < 1 { + return fmt.Errorf("ConstructorPartList has a minimum length of 1 but has the length of %d.", len(input.Parts)) + } + if input.Parts == nil { + return fmt.Errorf("input.Parts is required but has a nil value.") + } + if input.Aws_cryptography_dbEncryptionSdk_dynamoDb_Constructor_parts_Validate() != nil { + return input.Aws_cryptography_dbEncryptionSdk_dynamoDb_Constructor_parts_Validate() + } + + return nil +} + +func (input Constructor) Aws_cryptography_dbEncryptionSdk_dynamoDb_Constructor_parts_Validate() error { + for _, item := range input.Parts { + if item.Validate() != nil { + return item.Validate() + } + } + + return nil +} + +type EncryptedPart struct { + Name string + + Prefix string +} + +func (input EncryptedPart) Validate() error { + if len(input.Prefix) < 1 { + return fmt.Errorf("Prefix has a minimum length of 1 but has the length of %d.", len(input.Prefix)) + } + + return nil +} + +type SignedPart struct { + Name string + + Prefix string + + Loc *string +} + +func (input SignedPart) Validate() error { + if len(input.Prefix) < 1 { + return fmt.Errorf("Prefix has a minimum length of 1 but has the length of %d.", len(input.Prefix)) + } + if input.Loc != nil { + if len(*input.Loc) < 1 { + return fmt.Errorf("TerminalLocation has a minimum length of 1 but has the length of %d.", len(*input.Loc)) + } + } + + return nil +} + +type CompoundBeacon struct { + Name string + + Split string + + Constructors []Constructor + + Encrypted []EncryptedPart + + Signed []SignedPart +} + +func (input CompoundBeacon) Validate() error { + if len(input.Split) < 1 { + return fmt.Errorf("Char has a minimum length of 1 but has the length of %d.", len(input.Split)) + } + if len(input.Split) > 1 { + return fmt.Errorf("Char has a maximum length of 1 but has the length of %d.", len(input.Split)) + } + if len(input.Constructors) < 1 { + return fmt.Errorf("ConstructorList has a minimum length of 1 but has the length of %d.", len(input.Constructors)) + } + if input.Aws_cryptography_dbEncryptionSdk_dynamoDb_CompoundBeacon_constructors_Validate() != nil { + return input.Aws_cryptography_dbEncryptionSdk_dynamoDb_CompoundBeacon_constructors_Validate() + } + if len(input.Encrypted) < 1 { + return fmt.Errorf("EncryptedPartsList has a minimum length of 1 but has the length of %d.", len(input.Encrypted)) + } + if input.Aws_cryptography_dbEncryptionSdk_dynamoDb_CompoundBeacon_encrypted_Validate() != nil { + return input.Aws_cryptography_dbEncryptionSdk_dynamoDb_CompoundBeacon_encrypted_Validate() + } + if len(input.Signed) < 1 { + return fmt.Errorf("SignedPartsList has a minimum length of 1 but has the length of %d.", len(input.Signed)) + } + if input.Aws_cryptography_dbEncryptionSdk_dynamoDb_CompoundBeacon_signed_Validate() != nil { + return input.Aws_cryptography_dbEncryptionSdk_dynamoDb_CompoundBeacon_signed_Validate() + } + + return nil +} + +func (input CompoundBeacon) Aws_cryptography_dbEncryptionSdk_dynamoDb_CompoundBeacon_constructors_Validate() error { + for _, item := range input.Constructors { + if item.Validate() != nil { + return item.Validate() + } + } + + return nil +} +func (input CompoundBeacon) Aws_cryptography_dbEncryptionSdk_dynamoDb_CompoundBeacon_encrypted_Validate() error { + for _, item := range input.Encrypted { + if item.Validate() != nil { + return item.Validate() + } + } + + return nil +} +func (input CompoundBeacon) Aws_cryptography_dbEncryptionSdk_dynamoDb_CompoundBeacon_signed_Validate() error { + for _, item := range input.Signed { + if item.Validate() != nil { + return item.Validate() + } + } + + return nil +} + +type KeyStoreReference struct { +} + +func (input KeyStoreReference) Validate() error { + + return nil +} + +type StandardBeacon struct { + Length int32 + + Name string + + Loc *string + + Style BeaconStyle +} + +func (input StandardBeacon) Validate() error { + if input.Length < 1 { + return fmt.Errorf("BeaconBitLength has a minimum of 1 but has the value of %d.", input.Length) + } + if input.Length > 63 { + return fmt.Errorf("BeaconBitLength has a maximum of 63 but has the value of %d.", input.Length) + } + if input.Loc != nil { + if len(*input.Loc) < 1 { + return fmt.Errorf("TerminalLocation has a minimum length of 1 but has the length of %d.", len(*input.Loc)) + } + } + if input.Aws_cryptography_dbEncryptionSdk_dynamoDb_StandardBeacon_style_Validate() != nil { + return input.Aws_cryptography_dbEncryptionSdk_dynamoDb_StandardBeacon_style_Validate() + } + + return nil +} + +func (input StandardBeacon) Aws_cryptography_dbEncryptionSdk_dynamoDb_StandardBeacon_style_Validate() error { + if input.Style == nil { + return nil + } + switch unionType := input.Style.(type) { + case *BeaconStyleMemberpartOnly: + if unionType.Value.Validate() != nil { + return unionType.Value.Validate() + } + case *BeaconStyleMembershared: + if unionType.Value.Validate() != nil { + return unionType.Value.Validate() + } + case *BeaconStyleMemberasSet: + if unionType.Value.Validate() != nil { + return unionType.Value.Validate() + } + case *BeaconStyleMembersharedSet: + if unionType.Value.Validate() != nil { + return unionType.Value.Validate() + } + // Default case should not be reached. + default: + panic(fmt.Sprintf("Unhandled union type: %T ", unionType)) + } + + return nil +} + +type Insert struct { + Literal string +} + +func (input Insert) Validate() error { + + return nil +} + +type Lower struct { +} + +func (input Lower) Validate() error { + + return nil +} + +type GetPrefix struct { + Length int32 +} + +func (input GetPrefix) Validate() error { + + return nil +} + +type GetSegment struct { + Index int32 + + Split string +} + +func (input GetSegment) Validate() error { + if len(input.Split) < 1 { + return fmt.Errorf("Char has a minimum length of 1 but has the length of %d.", len(input.Split)) + } + if len(input.Split) > 1 { + return fmt.Errorf("Char has a maximum length of 1 but has the length of %d.", len(input.Split)) + } + + return nil +} + +type GetSegments struct { + High int32 + + Low int32 + + Split string +} + +func (input GetSegments) Validate() error { + if len(input.Split) < 1 { + return fmt.Errorf("Char has a minimum length of 1 but has the length of %d.", len(input.Split)) + } + if len(input.Split) > 1 { + return fmt.Errorf("Char has a maximum length of 1 but has the length of %d.", len(input.Split)) + } + + return nil +} + +type GetSubstring struct { + High int32 + + Low int32 +} + +func (input GetSubstring) Validate() error { + + return nil +} + +type GetSuffix struct { + Length int32 +} + +func (input GetSuffix) Validate() error { + + return nil +} + +type Upper struct { +} + +func (input Upper) Validate() error { + + return nil +} + +type VirtualPart struct { + Loc string + + Trans []VirtualTransform +} + +func (input VirtualPart) Validate() error { + if len(input.Loc) < 1 { + return fmt.Errorf("TerminalLocation has a minimum length of 1 but has the length of %d.", len(input.Loc)) + } + if len(input.Trans) < 1 { + return fmt.Errorf("VirtualTransformList has a minimum length of 1 but has the length of %d.", len(input.Trans)) + } + if input.Aws_cryptography_dbEncryptionSdk_dynamoDb_VirtualPart_trans_Validate() != nil { + return input.Aws_cryptography_dbEncryptionSdk_dynamoDb_VirtualPart_trans_Validate() + } + + return nil +} + +func (input VirtualPart) Aws_cryptography_dbEncryptionSdk_dynamoDb_VirtualTransformList_member_Validate(Value VirtualTransform) error { + if Value == nil { + return nil + } + switch unionType := Value.(type) { + case *VirtualTransformMemberupper: + if unionType.Value.Validate() != nil { + return unionType.Value.Validate() + } + case *VirtualTransformMemberlower: + if unionType.Value.Validate() != nil { + return unionType.Value.Validate() + } + case *VirtualTransformMemberinsert: + if unionType.Value.Validate() != nil { + return unionType.Value.Validate() + } + case *VirtualTransformMemberprefix: + if unionType.Value.Validate() != nil { + return unionType.Value.Validate() + } + case *VirtualTransformMembersuffix: + if unionType.Value.Validate() != nil { + return unionType.Value.Validate() + } + case *VirtualTransformMembersubstring: + if unionType.Value.Validate() != nil { + return unionType.Value.Validate() + } + case *VirtualTransformMembersegment: + if unionType.Value.Validate() != nil { + return unionType.Value.Validate() + } + case *VirtualTransformMembersegments: + if unionType.Value.Validate() != nil { + return unionType.Value.Validate() + } + // Default case should not be reached. + default: + panic(fmt.Sprintf("Unhandled union type: %T ", unionType)) + } + + return nil +} +func (input VirtualPart) Aws_cryptography_dbEncryptionSdk_dynamoDb_VirtualPart_trans_Validate() error { + for _, item := range input.Trans { + if input.Aws_cryptography_dbEncryptionSdk_dynamoDb_VirtualTransformList_member_Validate(item) != nil { + return input.Aws_cryptography_dbEncryptionSdk_dynamoDb_VirtualTransformList_member_Validate(item) + } + } + + return nil +} + +type VirtualField struct { + Name string + + Parts []VirtualPart +} + +func (input VirtualField) Validate() error { + if len(input.Parts) < 1 { + return fmt.Errorf("VirtualPartList has a minimum length of 1 but has the length of %d.", len(input.Parts)) + } + if input.Parts == nil { + return fmt.Errorf("input.Parts is required but has a nil value.") + } + if input.Aws_cryptography_dbEncryptionSdk_dynamoDb_VirtualField_parts_Validate() != nil { + return input.Aws_cryptography_dbEncryptionSdk_dynamoDb_VirtualField_parts_Validate() + } + + return nil +} + +func (input VirtualField) Aws_cryptography_dbEncryptionSdk_dynamoDb_VirtualField_parts_Validate() error { + for _, item := range input.Parts { + if item.Validate() != nil { + return item.Validate() + } + } + + return nil +} + +type BeaconVersion struct { + KeySource BeaconKeySource + + KeyStore *awscryptographykeystoresmithygenerated.Client + + StandardBeacons []StandardBeacon + + Version int32 + + CompoundBeacons []CompoundBeacon + + EncryptedParts []EncryptedPart + + SignedParts []SignedPart + + VirtualFields []VirtualField +} + +func (input BeaconVersion) Validate() error { + if input.KeySource == nil { + return fmt.Errorf("input.KeySource is required but has a nil value.") + } + if input.Aws_cryptography_dbEncryptionSdk_dynamoDb_BeaconVersion_keySource_Validate() != nil { + return input.Aws_cryptography_dbEncryptionSdk_dynamoDb_BeaconVersion_keySource_Validate() + } + if len(input.StandardBeacons) < 1 { + return fmt.Errorf("StandardBeaconList has a minimum length of 1 but has the length of %d.", len(input.StandardBeacons)) + } + if input.StandardBeacons == nil { + return fmt.Errorf("input.StandardBeacons is required but has a nil value.") + } + if input.Aws_cryptography_dbEncryptionSdk_dynamoDb_BeaconVersion_standardBeacons_Validate() != nil { + return input.Aws_cryptography_dbEncryptionSdk_dynamoDb_BeaconVersion_standardBeacons_Validate() + } + if input.Version < 1 { + return fmt.Errorf("VersionNumber has a minimum of 1 but has the value of %d.", input.Version) + } + if len(input.CompoundBeacons) < 1 { + return fmt.Errorf("CompoundBeaconList has a minimum length of 1 but has the length of %d.", len(input.CompoundBeacons)) + } + if input.Aws_cryptography_dbEncryptionSdk_dynamoDb_BeaconVersion_compoundBeacons_Validate() != nil { + return input.Aws_cryptography_dbEncryptionSdk_dynamoDb_BeaconVersion_compoundBeacons_Validate() + } + if len(input.EncryptedParts) < 1 { + return fmt.Errorf("EncryptedPartsList has a minimum length of 1 but has the length of %d.", len(input.EncryptedParts)) + } + if input.Aws_cryptography_dbEncryptionSdk_dynamoDb_BeaconVersion_encryptedParts_Validate() != nil { + return input.Aws_cryptography_dbEncryptionSdk_dynamoDb_BeaconVersion_encryptedParts_Validate() + } + if len(input.SignedParts) < 1 { + return fmt.Errorf("SignedPartsList has a minimum length of 1 but has the length of %d.", len(input.SignedParts)) + } + if input.Aws_cryptography_dbEncryptionSdk_dynamoDb_BeaconVersion_signedParts_Validate() != nil { + return input.Aws_cryptography_dbEncryptionSdk_dynamoDb_BeaconVersion_signedParts_Validate() + } + if len(input.VirtualFields) < 1 { + return fmt.Errorf("VirtualFieldList has a minimum length of 1 but has the length of %d.", len(input.VirtualFields)) + } + if input.Aws_cryptography_dbEncryptionSdk_dynamoDb_BeaconVersion_virtualFields_Validate() != nil { + return input.Aws_cryptography_dbEncryptionSdk_dynamoDb_BeaconVersion_virtualFields_Validate() + } + + return nil +} + +func (input BeaconVersion) Aws_cryptography_dbEncryptionSdk_dynamoDb_BeaconVersion_keySource_Validate() error { + if input.KeySource == nil { + return nil + } + switch unionType := input.KeySource.(type) { + case *BeaconKeySourceMembersingle: + if unionType.Value.Validate() != nil { + return unionType.Value.Validate() + } + case *BeaconKeySourceMembermulti: + if unionType.Value.Validate() != nil { + return unionType.Value.Validate() + } + // Default case should not be reached. + default: + panic(fmt.Sprintf("Unhandled union type: %T ", unionType)) + } + + return nil +} +func (input BeaconVersion) Aws_cryptography_dbEncryptionSdk_dynamoDb_BeaconVersion_standardBeacons_Validate() error { + for _, item := range input.StandardBeacons { + if item.Validate() != nil { + return item.Validate() + } + } + + return nil +} +func (input BeaconVersion) Aws_cryptography_dbEncryptionSdk_dynamoDb_BeaconVersion_compoundBeacons_Validate() error { + for _, item := range input.CompoundBeacons { + if item.Validate() != nil { + return item.Validate() + } + } + + return nil +} +func (input BeaconVersion) Aws_cryptography_dbEncryptionSdk_dynamoDb_BeaconVersion_encryptedParts_Validate() error { + for _, item := range input.EncryptedParts { + if item.Validate() != nil { + return item.Validate() + } + } + + return nil +} +func (input BeaconVersion) Aws_cryptography_dbEncryptionSdk_dynamoDb_BeaconVersion_signedParts_Validate() error { + for _, item := range input.SignedParts { + if item.Validate() != nil { + return item.Validate() + } + } + + return nil +} +func (input BeaconVersion) Aws_cryptography_dbEncryptionSdk_dynamoDb_BeaconVersion_virtualFields_Validate() error { + for _, item := range input.VirtualFields { + if item.Validate() != nil { + return item.Validate() + } + } + + return nil +} + +type DynamoDbEncryptionConfig struct { +} + +func (input DynamoDbEncryptionConfig) Validate() error { + + return nil +} + +type GetBranchKeyIdFromDdbKeyOutput struct { + BranchKeyId string +} + +func (input GetBranchKeyIdFromDdbKeyOutput) Validate() error { + + return nil +} + +type LegacyDynamoDbEncryptorReference struct { +} + +func (input LegacyDynamoDbEncryptorReference) Validate() error { + + return nil +} + +type LegacyOverride struct { + AttributeActionsOnEncrypt map[string]awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.CryptoAction + + Encryptor ILegacyDynamoDbEncryptor + + Policy LegacyPolicy + + DefaultAttributeFlag *awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.CryptoAction +} + +func (input LegacyOverride) Validate() error { + if input.AttributeActionsOnEncrypt == nil { + return fmt.Errorf("input.AttributeActionsOnEncrypt is required but has a nil value.") + } + if input.Aws_cryptography_dbEncryptionSdk_dynamoDb_LegacyOverride_attributeActionsOnEncrypt_Validate() != nil { + return input.Aws_cryptography_dbEncryptionSdk_dynamoDb_LegacyOverride_attributeActionsOnEncrypt_Validate() + } + + return nil +} + +func (input LegacyOverride) Aws_cryptography_dbEncryptionSdk_dynamoDb_LegacyOverride_attributeActionsOnEncrypt_Validate() error { + for key, _ := range input.AttributeActionsOnEncrypt { + if len(key) < 0 { + return fmt.Errorf("AttributeName has a minimum length of 0 but has the length of %d.", len(key)) + } + if len(key) > 65535 { + return fmt.Errorf("AttributeName has a maximum length of 65535 but has the length of %d.", len(key)) + } + } + + return nil +} + +type SearchConfig struct { + Versions []BeaconVersion + + WriteVersion int32 +} + +func (input SearchConfig) Validate() error { + if len(input.Versions) < 1 { + return fmt.Errorf("BeaconVersionList has a minimum length of 1 but has the length of %d.", len(input.Versions)) + } + if len(input.Versions) > 1 { + return fmt.Errorf("BeaconVersionList has a maximum length of 1 but has the length of %d.", len(input.Versions)) + } + if input.Versions == nil { + return fmt.Errorf("input.Versions is required but has a nil value.") + } + if input.Aws_cryptography_dbEncryptionSdk_dynamoDb_SearchConfig_versions_Validate() != nil { + return input.Aws_cryptography_dbEncryptionSdk_dynamoDb_SearchConfig_versions_Validate() + } + if input.WriteVersion < 1 { + return fmt.Errorf("VersionNumber has a minimum of 1 but has the value of %d.", input.WriteVersion) + } + + return nil +} + +func (input SearchConfig) Aws_cryptography_dbEncryptionSdk_dynamoDb_SearchConfig_versions_Validate() error { + for _, item := range input.Versions { + if item.Validate() != nil { + return item.Validate() + } + } + + return nil +} + +type DynamoDbTableEncryptionConfig struct { + AttributeActionsOnEncrypt map[string]awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.CryptoAction + + LogicalTableName string + + PartitionKeyName string + + AlgorithmSuiteId *awscryptographymaterialproviderssmithygeneratedtypes.DBEAlgorithmSuiteId + + AllowedUnsignedAttributePrefix *string + + AllowedUnsignedAttributes []string + + Cmm awscryptographymaterialproviderssmithygeneratedtypes.ICryptographicMaterialsManager + + Keyring awscryptographymaterialproviderssmithygeneratedtypes.IKeyring + + LegacyOverride *LegacyOverride + + PlaintextOverride *PlaintextOverride + + Search *SearchConfig + + SortKeyName *string +} + +func (input DynamoDbTableEncryptionConfig) Validate() error { + if input.AttributeActionsOnEncrypt == nil { + return fmt.Errorf("input.AttributeActionsOnEncrypt is required but has a nil value.") + } + if input.Aws_cryptography_dbEncryptionSdk_dynamoDb_DynamoDbTableEncryptionConfig_attributeActionsOnEncrypt_Validate() != nil { + return input.Aws_cryptography_dbEncryptionSdk_dynamoDb_DynamoDbTableEncryptionConfig_attributeActionsOnEncrypt_Validate() + } + if len(input.PartitionKeyName) < 1 { + return fmt.Errorf("KeySchemaAttributeName has a minimum length of 1 but has the length of %d.", len(input.PartitionKeyName)) + } + if len(input.PartitionKeyName) > 255 { + return fmt.Errorf("KeySchemaAttributeName has a maximum length of 255 but has the length of %d.", len(input.PartitionKeyName)) + } + if len(input.AllowedUnsignedAttributes) < 1 { + return fmt.Errorf("AttributeNameList has a minimum length of 1 but has the length of %d.", len(input.AllowedUnsignedAttributes)) + } + if input.Aws_cryptography_dbEncryptionSdk_dynamoDb_DynamoDbTableEncryptionConfig_allowedUnsignedAttributes_Validate() != nil { + return input.Aws_cryptography_dbEncryptionSdk_dynamoDb_DynamoDbTableEncryptionConfig_allowedUnsignedAttributes_Validate() + } + if input.LegacyOverride != nil { + if input.LegacyOverride.Validate() != nil { + return input.LegacyOverride.Validate() + } + + } + if input.Search != nil { + if input.Search.Validate() != nil { + return input.Search.Validate() + } + + } + if input.SortKeyName != nil { + if len(*input.SortKeyName) < 1 { + return fmt.Errorf("KeySchemaAttributeName has a minimum length of 1 but has the length of %d.", len(*input.SortKeyName)) + } + if len(*input.SortKeyName) > 255 { + return fmt.Errorf("KeySchemaAttributeName has a maximum length of 255 but has the length of %d.", len(*input.SortKeyName)) + } + } + + return nil +} + +func (input DynamoDbTableEncryptionConfig) Aws_cryptography_dbEncryptionSdk_dynamoDb_DynamoDbTableEncryptionConfig_attributeActionsOnEncrypt_Validate() error { + for key, _ := range input.AttributeActionsOnEncrypt { + if len(key) < 0 { + return fmt.Errorf("AttributeName has a minimum length of 0 but has the length of %d.", len(key)) + } + if len(key) > 65535 { + return fmt.Errorf("AttributeName has a maximum length of 65535 but has the length of %d.", len(key)) + } + } + + return nil +} +func (input DynamoDbTableEncryptionConfig) Aws_cryptography_dbEncryptionSdk_dynamoDb_DynamoDbTableEncryptionConfig_allowedUnsignedAttributes_Validate() error { + for _, item := range input.AllowedUnsignedAttributes { + if len(item) < 0 { + return fmt.Errorf("AttributeName has a minimum length of 0 but has the length of %d.", len(item)) + } + if len(item) > 65535 { + return fmt.Errorf("AttributeName has a maximum length of 65535 but has the length of %d.", len(item)) + } + } + + return nil +} + +type DynamoDbTablesEncryptionConfig struct { + TableEncryptionConfigs map[string]DynamoDbTableEncryptionConfig +} + +func (input DynamoDbTablesEncryptionConfig) Validate() error { + if input.TableEncryptionConfigs == nil { + return fmt.Errorf("input.TableEncryptionConfigs is required but has a nil value.") + } + if input.Aws_cryptography_dbEncryptionSdk_dynamoDb_DynamoDbTablesEncryptionConfig_tableEncryptionConfigs_Validate() != nil { + return input.Aws_cryptography_dbEncryptionSdk_dynamoDb_DynamoDbTablesEncryptionConfig_tableEncryptionConfigs_Validate() + } + + return nil +} + +func (input DynamoDbTablesEncryptionConfig) Aws_cryptography_dbEncryptionSdk_dynamoDb_DynamoDbTablesEncryptionConfig_tableEncryptionConfigs_Validate() error { + for key, value := range input.TableEncryptionConfigs { + if len(key) < 3 { + return fmt.Errorf("TableName has a minimum length of 3 but has the length of %d.", len(key)) + } + if len(key) > 255 { + return fmt.Errorf("TableName has a maximum length of 255 but has the length of %d.", len(key)) + } + if value.Validate() != nil { + return value.Validate() + } + } + + return nil +} + +type GetBranchKeyIdFromDdbKeyInput struct { + DdbKey map[string]dynamodbtypes.AttributeValue +} + +func (input GetBranchKeyIdFromDdbKeyInput) Validate() error { + if input.DdbKey == nil { + return fmt.Errorf("input.DdbKey is required but has a nil value.") + } + if input.Aws_cryptography_dbEncryptionSdk_dynamoDb_GetBranchKeyIdFromDdbKeyInput_ddbKey_Validate() != nil { + return input.Aws_cryptography_dbEncryptionSdk_dynamoDb_GetBranchKeyIdFromDdbKeyInput_ddbKey_Validate() + } + + return nil +} + +func (input GetBranchKeyIdFromDdbKeyInput) Com_amazonaws_dynamodb_Key_value_Validate(Value dynamodbtypes.AttributeValue) error { + if Value == nil { + return nil + } + switch unionType := Value.(type) { + case *dynamodbtypes.AttributeValueMemberS: + case *dynamodbtypes.AttributeValueMemberN: + case *dynamodbtypes.AttributeValueMemberB: + case *dynamodbtypes.AttributeValueMemberSS: + case *dynamodbtypes.AttributeValueMemberNS: + case *dynamodbtypes.AttributeValueMemberBS: + case *dynamodbtypes.AttributeValueMemberM: + case *dynamodbtypes.AttributeValueMemberL: + case *dynamodbtypes.AttributeValueMemberNULL: + case *dynamodbtypes.AttributeValueMemberBOOL: + // Default case should not be reached. + default: + panic(fmt.Sprintf("Unhandled union type: %T ", unionType)) + } + + return nil +} +func (input GetBranchKeyIdFromDdbKeyInput) Com_amazonaws_dynamodb_MapAttributeValue_value_Validate(Value dynamodbtypes.AttributeValue) error { + if Value == nil { + return nil + } + switch unionType := Value.(type) { + case *dynamodbtypes.AttributeValueMemberS: + case *dynamodbtypes.AttributeValueMemberN: + case *dynamodbtypes.AttributeValueMemberB: + case *dynamodbtypes.AttributeValueMemberSS: + case *dynamodbtypes.AttributeValueMemberNS: + case *dynamodbtypes.AttributeValueMemberBS: + case *dynamodbtypes.AttributeValueMemberM: + if input.Com_amazonaws_dynamodb_AttributeValue_M_Validate(unionType.Value) != nil { + return input.Com_amazonaws_dynamodb_AttributeValue_M_Validate(unionType.Value) + } + case *dynamodbtypes.AttributeValueMemberL: + case *dynamodbtypes.AttributeValueMemberNULL: + case *dynamodbtypes.AttributeValueMemberBOOL: + // Default case should not be reached. + default: + panic(fmt.Sprintf("Unhandled union type: %T ", unionType)) + } + + return nil +} +func (input GetBranchKeyIdFromDdbKeyInput) Com_amazonaws_dynamodb_AttributeValue_M_Validate(Value map[string]dynamodbtypes.AttributeValue) error { + for key, value := range Value { + if len(key) < 0 { + return fmt.Errorf("AttributeName has a minimum length of 0 but has the length of %d.", len(key)) + } + if len(key) > 65535 { + return fmt.Errorf("AttributeName has a maximum length of 65535 but has the length of %d.", len(key)) + } + if input.Com_amazonaws_dynamodb_MapAttributeValue_value_Validate(value) != nil { + return input.Com_amazonaws_dynamodb_MapAttributeValue_value_Validate(value) + } + } + + return nil +} +func (input GetBranchKeyIdFromDdbKeyInput) Com_amazonaws_dynamodb_ListAttributeValue_member_Validate(Value dynamodbtypes.AttributeValue) error { + if Value == nil { + return nil + } + switch unionType := Value.(type) { + case *dynamodbtypes.AttributeValueMemberS: + case *dynamodbtypes.AttributeValueMemberN: + case *dynamodbtypes.AttributeValueMemberB: + case *dynamodbtypes.AttributeValueMemberSS: + case *dynamodbtypes.AttributeValueMemberNS: + case *dynamodbtypes.AttributeValueMemberBS: + case *dynamodbtypes.AttributeValueMemberM: + case *dynamodbtypes.AttributeValueMemberL: + if input.Com_amazonaws_dynamodb_AttributeValue_L_Validate(unionType.Value) != nil { + return input.Com_amazonaws_dynamodb_AttributeValue_L_Validate(unionType.Value) + } + case *dynamodbtypes.AttributeValueMemberNULL: + case *dynamodbtypes.AttributeValueMemberBOOL: + // Default case should not be reached. + default: + panic(fmt.Sprintf("Unhandled union type: %T ", unionType)) + } + + return nil +} +func (input GetBranchKeyIdFromDdbKeyInput) Com_amazonaws_dynamodb_AttributeValue_L_Validate(Value []dynamodbtypes.AttributeValue) error { + for _, item := range Value { + if input.Com_amazonaws_dynamodb_ListAttributeValue_member_Validate(item) != nil { + return input.Com_amazonaws_dynamodb_ListAttributeValue_member_Validate(item) + } + } + + return nil +} +func (input GetBranchKeyIdFromDdbKeyInput) Aws_cryptography_dbEncryptionSdk_dynamoDb_GetBranchKeyIdFromDdbKeyInput_ddbKey_Validate() error { + for key, value := range input.DdbKey { + if len(key) < 0 { + return fmt.Errorf("AttributeName has a minimum length of 0 but has the length of %d.", len(key)) + } + if len(key) > 65535 { + return fmt.Errorf("AttributeName has a maximum length of 65535 but has the length of %d.", len(key)) + } + if input.Com_amazonaws_dynamodb_Key_value_Validate(value) != nil { + return input.Com_amazonaws_dynamodb_Key_value_Validate(value) + } + } + + return nil +} + +// BeaconKeySourceMembermulti +// BeaconKeySourceMembersingle +type BeaconKeySource interface { + isBeaconKeySource() +} + +type BeaconKeySourceMembermulti struct { + Value MultiKeyStore +} + +func (*BeaconKeySourceMembermulti) isBeaconKeySource() {} + +type BeaconKeySourceMembersingle struct { + Value SingleKeyStore +} + +func (*BeaconKeySourceMembersingle) isBeaconKeySource() {} + +// BeaconStyleMemberasSet +// BeaconStyleMemberpartOnly +// BeaconStyleMembershared +// BeaconStyleMembersharedSet +type BeaconStyle interface { + isBeaconStyle() +} + +type BeaconStyleMemberasSet struct { + Value AsSet +} + +func (*BeaconStyleMemberasSet) isBeaconStyle() {} + +type BeaconStyleMemberpartOnly struct { + Value PartOnly +} + +func (*BeaconStyleMemberpartOnly) isBeaconStyle() {} + +type BeaconStyleMembershared struct { + Value Shared +} + +func (*BeaconStyleMembershared) isBeaconStyle() {} + +type BeaconStyleMembersharedSet struct { + Value SharedSet +} + +func (*BeaconStyleMembersharedSet) isBeaconStyle() {} + +// GetEncryptedDataKeyDescriptionUnionMemberheader +// GetEncryptedDataKeyDescriptionUnionMemberitem +type GetEncryptedDataKeyDescriptionUnion interface { + isGetEncryptedDataKeyDescriptionUnion() +} + +type GetEncryptedDataKeyDescriptionUnionMemberheader struct { + Value []byte +} + +func (*GetEncryptedDataKeyDescriptionUnionMemberheader) isGetEncryptedDataKeyDescriptionUnion() {} + +type GetEncryptedDataKeyDescriptionUnionMemberitem struct { + Value map[string]dynamodbtypes.AttributeValue +} + +func (*GetEncryptedDataKeyDescriptionUnionMemberitem) isGetEncryptedDataKeyDescriptionUnion() {} + +// VirtualTransformMemberinsert +// VirtualTransformMemberlower +// VirtualTransformMemberprefix +// VirtualTransformMembersegment +// VirtualTransformMembersegments +// VirtualTransformMembersubstring +// VirtualTransformMembersuffix +// VirtualTransformMemberupper +type VirtualTransform interface { + isVirtualTransform() +} + +type VirtualTransformMemberinsert struct { + Value Insert +} + +func (*VirtualTransformMemberinsert) isVirtualTransform() {} + +type VirtualTransformMemberlower struct { + Value Lower +} + +func (*VirtualTransformMemberlower) isVirtualTransform() {} + +type VirtualTransformMemberprefix struct { + Value GetPrefix +} + +func (*VirtualTransformMemberprefix) isVirtualTransform() {} + +type VirtualTransformMembersegment struct { + Value GetSegment +} + +func (*VirtualTransformMembersegment) isVirtualTransform() {} + +type VirtualTransformMembersegments struct { + Value GetSegments +} + +func (*VirtualTransformMembersegments) isVirtualTransform() {} + +type VirtualTransformMembersubstring struct { + Value GetSubstring +} + +func (*VirtualTransformMembersubstring) isVirtualTransform() {} + +type VirtualTransformMembersuffix struct { + Value GetSuffix +} + +func (*VirtualTransformMembersuffix) isVirtualTransform() {} + +type VirtualTransformMemberupper struct { + Value Upper +} + +func (*VirtualTransformMemberupper) isVirtualTransform() {} + +type DynamoDbEncryptionBaseException interface { + // This is a dummy method to allow type assertion since Go empty interfaces + // aren't useful for type assertion checks. No concrete class is expected to implement + // this method. This is also not exported. + interfaceBindingMethod() +} + +type IDynamoDbKeyBranchKeyIdSupplier interface { + GetBranchKeyIdFromDdbKey(GetBranchKeyIdFromDdbKeyInput) (*GetBranchKeyIdFromDdbKeyOutput, error) +} + +type ILegacyDynamoDbEncryptor interface { +} diff --git a/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes/unmodelled_errors.go b/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes/unmodelled_errors.go new file mode 100644 index 000000000..d7d920e5f --- /dev/null +++ b/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes/unmodelled_errors.go @@ -0,0 +1,26 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes + +import ( + "fmt" +) + +type CollectionOfErrors struct { + DynamoDbEncryptionBaseException + ListOfErrors []error + Message string +} + +func (e CollectionOfErrors) Error() string { + return fmt.Sprintf("message: %s\n err %v", e.Message, e.ListOfErrors) +} + +type OpaqueError struct { + DynamoDbEncryptionBaseException + ErrObject interface{} +} + +func (e OpaqueError) Error() string { + return fmt.Sprintf("message: %v", e.ErrObject) +} diff --git a/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkdynamodbtransformssmithygenerated/api_client.go b/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkdynamodbtransformssmithygenerated/api_client.go new file mode 100644 index 000000000..26e17d0bf --- /dev/null +++ b/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkdynamodbtransformssmithygenerated/api_client.go @@ -0,0 +1,595 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package awscryptographydbencryptionsdkdynamodbtransformssmithygenerated + +import ( + "context" + + "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes" + "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/DynamoDbEncryptionTransforms" + "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkdynamodbsmithygenerated" + "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes" + "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes" +) + +type Client struct { + DafnyClient AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.IDynamoDbEncryptionTransformsClient +} + +func NewClient(clientConfig awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.DynamoDbTablesEncryptionConfig) (*Client, error) { + var dafnyConfig = awscryptographydbencryptionsdkdynamodbsmithygenerated.DynamoDbTablesEncryptionConfig_ToDafny(clientConfig) + var dafny_response = DynamoDbEncryptionTransforms.Companion_Default___.DynamoDbEncryptionTransforms(dafnyConfig) + if dafny_response.Is_Failure() { + panic("Client construction failed. This should never happen") + } + var dafnyClient = dafny_response.Extract().(AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.IDynamoDbEncryptionTransformsClient) + client := &Client{dafnyClient} + return client, nil +} + +func (client *Client) PutItemInputTransform(ctx context.Context, params awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.PutItemInputTransformInput) (*awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.PutItemInputTransformOutput, error) { + err := params.Validate() + if err != nil { + opaqueErr := awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.OpaqueError{ + ErrObject: err, + } + return nil, opaqueErr + } + + var dafny_request AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.PutItemInputTransformInput = PutItemInputTransformInput_ToDafny(params) + var dafny_response = client.DafnyClient.PutItemInputTransform(dafny_request) + + if dafny_response.Is_Failure() { + err := dafny_response.Dtor_error().(AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Error) + return nil, Error_FromDafny(err) + } + var native_response = PutItemInputTransformOutput_FromDafny(dafny_response.Dtor_value().(AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.PutItemInputTransformOutput)) + return &native_response, nil + +} + +func (client *Client) PutItemOutputTransform(ctx context.Context, params awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.PutItemOutputTransformInput) (*awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.PutItemOutputTransformOutput, error) { + err := params.Validate() + if err != nil { + opaqueErr := awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.OpaqueError{ + ErrObject: err, + } + return nil, opaqueErr + } + + var dafny_request AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.PutItemOutputTransformInput = PutItemOutputTransformInput_ToDafny(params) + var dafny_response = client.DafnyClient.PutItemOutputTransform(dafny_request) + + if dafny_response.Is_Failure() { + err := dafny_response.Dtor_error().(AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Error) + return nil, Error_FromDafny(err) + } + var native_response = PutItemOutputTransformOutput_FromDafny(dafny_response.Dtor_value().(AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.PutItemOutputTransformOutput)) + return &native_response, nil + +} + +func (client *Client) GetItemInputTransform(ctx context.Context, params awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.GetItemInputTransformInput) (*awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.GetItemInputTransformOutput, error) { + err := params.Validate() + if err != nil { + opaqueErr := awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.OpaqueError{ + ErrObject: err, + } + return nil, opaqueErr + } + + var dafny_request AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.GetItemInputTransformInput = GetItemInputTransformInput_ToDafny(params) + var dafny_response = client.DafnyClient.GetItemInputTransform(dafny_request) + + if dafny_response.Is_Failure() { + err := dafny_response.Dtor_error().(AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Error) + return nil, Error_FromDafny(err) + } + var native_response = GetItemInputTransformOutput_FromDafny(dafny_response.Dtor_value().(AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.GetItemInputTransformOutput)) + return &native_response, nil + +} + +func (client *Client) GetItemOutputTransform(ctx context.Context, params awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.GetItemOutputTransformInput) (*awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.GetItemOutputTransformOutput, error) { + err := params.Validate() + if err != nil { + opaqueErr := awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.OpaqueError{ + ErrObject: err, + } + return nil, opaqueErr + } + + var dafny_request AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.GetItemOutputTransformInput = GetItemOutputTransformInput_ToDafny(params) + var dafny_response = client.DafnyClient.GetItemOutputTransform(dafny_request) + + if dafny_response.Is_Failure() { + err := dafny_response.Dtor_error().(AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Error) + return nil, Error_FromDafny(err) + } + var native_response = GetItemOutputTransformOutput_FromDafny(dafny_response.Dtor_value().(AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.GetItemOutputTransformOutput)) + return &native_response, nil + +} + +func (client *Client) BatchWriteItemInputTransform(ctx context.Context, params awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.BatchWriteItemInputTransformInput) (*awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.BatchWriteItemInputTransformOutput, error) { + err := params.Validate() + if err != nil { + opaqueErr := awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.OpaqueError{ + ErrObject: err, + } + return nil, opaqueErr + } + + var dafny_request AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.BatchWriteItemInputTransformInput = BatchWriteItemInputTransformInput_ToDafny(params) + var dafny_response = client.DafnyClient.BatchWriteItemInputTransform(dafny_request) + + if dafny_response.Is_Failure() { + err := dafny_response.Dtor_error().(AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Error) + return nil, Error_FromDafny(err) + } + var native_response = BatchWriteItemInputTransformOutput_FromDafny(dafny_response.Dtor_value().(AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.BatchWriteItemInputTransformOutput)) + return &native_response, nil + +} + +func (client *Client) BatchWriteItemOutputTransform(ctx context.Context, params awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.BatchWriteItemOutputTransformInput) (*awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.BatchWriteItemOutputTransformOutput, error) { + err := params.Validate() + if err != nil { + opaqueErr := awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.OpaqueError{ + ErrObject: err, + } + return nil, opaqueErr + } + + var dafny_request AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.BatchWriteItemOutputTransformInput = BatchWriteItemOutputTransformInput_ToDafny(params) + var dafny_response = client.DafnyClient.BatchWriteItemOutputTransform(dafny_request) + + if dafny_response.Is_Failure() { + err := dafny_response.Dtor_error().(AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Error) + return nil, Error_FromDafny(err) + } + var native_response = BatchWriteItemOutputTransformOutput_FromDafny(dafny_response.Dtor_value().(AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.BatchWriteItemOutputTransformOutput)) + return &native_response, nil + +} + +func (client *Client) BatchGetItemInputTransform(ctx context.Context, params awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.BatchGetItemInputTransformInput) (*awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.BatchGetItemInputTransformOutput, error) { + err := params.Validate() + if err != nil { + opaqueErr := awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.OpaqueError{ + ErrObject: err, + } + return nil, opaqueErr + } + + var dafny_request AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.BatchGetItemInputTransformInput = BatchGetItemInputTransformInput_ToDafny(params) + var dafny_response = client.DafnyClient.BatchGetItemInputTransform(dafny_request) + + if dafny_response.Is_Failure() { + err := dafny_response.Dtor_error().(AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Error) + return nil, Error_FromDafny(err) + } + var native_response = BatchGetItemInputTransformOutput_FromDafny(dafny_response.Dtor_value().(AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.BatchGetItemInputTransformOutput)) + return &native_response, nil + +} + +func (client *Client) BatchGetItemOutputTransform(ctx context.Context, params awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.BatchGetItemOutputTransformInput) (*awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.BatchGetItemOutputTransformOutput, error) { + err := params.Validate() + if err != nil { + opaqueErr := awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.OpaqueError{ + ErrObject: err, + } + return nil, opaqueErr + } + + var dafny_request AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.BatchGetItemOutputTransformInput = BatchGetItemOutputTransformInput_ToDafny(params) + var dafny_response = client.DafnyClient.BatchGetItemOutputTransform(dafny_request) + + if dafny_response.Is_Failure() { + err := dafny_response.Dtor_error().(AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Error) + return nil, Error_FromDafny(err) + } + var native_response = BatchGetItemOutputTransformOutput_FromDafny(dafny_response.Dtor_value().(AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.BatchGetItemOutputTransformOutput)) + return &native_response, nil + +} + +func (client *Client) ScanInputTransform(ctx context.Context, params awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.ScanInputTransformInput) (*awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.ScanInputTransformOutput, error) { + err := params.Validate() + if err != nil { + opaqueErr := awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.OpaqueError{ + ErrObject: err, + } + return nil, opaqueErr + } + + var dafny_request AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.ScanInputTransformInput = ScanInputTransformInput_ToDafny(params) + var dafny_response = client.DafnyClient.ScanInputTransform(dafny_request) + + if dafny_response.Is_Failure() { + err := dafny_response.Dtor_error().(AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Error) + return nil, Error_FromDafny(err) + } + var native_response = ScanInputTransformOutput_FromDafny(dafny_response.Dtor_value().(AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.ScanInputTransformOutput)) + return &native_response, nil + +} + +func (client *Client) ScanOutputTransform(ctx context.Context, params awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.ScanOutputTransformInput) (*awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.ScanOutputTransformOutput, error) { + err := params.Validate() + if err != nil { + opaqueErr := awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.OpaqueError{ + ErrObject: err, + } + return nil, opaqueErr + } + + var dafny_request AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.ScanOutputTransformInput = ScanOutputTransformInput_ToDafny(params) + var dafny_response = client.DafnyClient.ScanOutputTransform(dafny_request) + + if dafny_response.Is_Failure() { + err := dafny_response.Dtor_error().(AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Error) + return nil, Error_FromDafny(err) + } + var native_response = ScanOutputTransformOutput_FromDafny(dafny_response.Dtor_value().(AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.ScanOutputTransformOutput)) + return &native_response, nil + +} + +func (client *Client) QueryInputTransform(ctx context.Context, params awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.QueryInputTransformInput) (*awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.QueryInputTransformOutput, error) { + err := params.Validate() + if err != nil { + opaqueErr := awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.OpaqueError{ + ErrObject: err, + } + return nil, opaqueErr + } + + var dafny_request AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.QueryInputTransformInput = QueryInputTransformInput_ToDafny(params) + var dafny_response = client.DafnyClient.QueryInputTransform(dafny_request) + + if dafny_response.Is_Failure() { + err := dafny_response.Dtor_error().(AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Error) + return nil, Error_FromDafny(err) + } + var native_response = QueryInputTransformOutput_FromDafny(dafny_response.Dtor_value().(AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.QueryInputTransformOutput)) + return &native_response, nil + +} + +func (client *Client) QueryOutputTransform(ctx context.Context, params awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.QueryOutputTransformInput) (*awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.QueryOutputTransformOutput, error) { + err := params.Validate() + if err != nil { + opaqueErr := awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.OpaqueError{ + ErrObject: err, + } + return nil, opaqueErr + } + + var dafny_request AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.QueryOutputTransformInput = QueryOutputTransformInput_ToDafny(params) + var dafny_response = client.DafnyClient.QueryOutputTransform(dafny_request) + + if dafny_response.Is_Failure() { + err := dafny_response.Dtor_error().(AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Error) + return nil, Error_FromDafny(err) + } + var native_response = QueryOutputTransformOutput_FromDafny(dafny_response.Dtor_value().(AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.QueryOutputTransformOutput)) + return &native_response, nil + +} + +func (client *Client) TransactWriteItemsInputTransform(ctx context.Context, params awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.TransactWriteItemsInputTransformInput) (*awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.TransactWriteItemsInputTransformOutput, error) { + err := params.Validate() + if err != nil { + opaqueErr := awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.OpaqueError{ + ErrObject: err, + } + return nil, opaqueErr + } + + var dafny_request AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.TransactWriteItemsInputTransformInput = TransactWriteItemsInputTransformInput_ToDafny(params) + var dafny_response = client.DafnyClient.TransactWriteItemsInputTransform(dafny_request) + + if dafny_response.Is_Failure() { + err := dafny_response.Dtor_error().(AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Error) + return nil, Error_FromDafny(err) + } + var native_response = TransactWriteItemsInputTransformOutput_FromDafny(dafny_response.Dtor_value().(AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.TransactWriteItemsInputTransformOutput)) + return &native_response, nil + +} + +func (client *Client) TransactWriteItemsOutputTransform(ctx context.Context, params awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.TransactWriteItemsOutputTransformInput) (*awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.TransactWriteItemsOutputTransformOutput, error) { + err := params.Validate() + if err != nil { + opaqueErr := awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.OpaqueError{ + ErrObject: err, + } + return nil, opaqueErr + } + + var dafny_request AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.TransactWriteItemsOutputTransformInput = TransactWriteItemsOutputTransformInput_ToDafny(params) + var dafny_response = client.DafnyClient.TransactWriteItemsOutputTransform(dafny_request) + + if dafny_response.Is_Failure() { + err := dafny_response.Dtor_error().(AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Error) + return nil, Error_FromDafny(err) + } + var native_response = TransactWriteItemsOutputTransformOutput_FromDafny(dafny_response.Dtor_value().(AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.TransactWriteItemsOutputTransformOutput)) + return &native_response, nil + +} + +func (client *Client) UpdateItemInputTransform(ctx context.Context, params awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.UpdateItemInputTransformInput) (*awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.UpdateItemInputTransformOutput, error) { + err := params.Validate() + if err != nil { + opaqueErr := awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.OpaqueError{ + ErrObject: err, + } + return nil, opaqueErr + } + + var dafny_request AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.UpdateItemInputTransformInput = UpdateItemInputTransformInput_ToDafny(params) + var dafny_response = client.DafnyClient.UpdateItemInputTransform(dafny_request) + + if dafny_response.Is_Failure() { + err := dafny_response.Dtor_error().(AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Error) + return nil, Error_FromDafny(err) + } + var native_response = UpdateItemInputTransformOutput_FromDafny(dafny_response.Dtor_value().(AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.UpdateItemInputTransformOutput)) + return &native_response, nil + +} + +func (client *Client) UpdateItemOutputTransform(ctx context.Context, params awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.UpdateItemOutputTransformInput) (*awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.UpdateItemOutputTransformOutput, error) { + err := params.Validate() + if err != nil { + opaqueErr := awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.OpaqueError{ + ErrObject: err, + } + return nil, opaqueErr + } + + var dafny_request AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.UpdateItemOutputTransformInput = UpdateItemOutputTransformInput_ToDafny(params) + var dafny_response = client.DafnyClient.UpdateItemOutputTransform(dafny_request) + + if dafny_response.Is_Failure() { + err := dafny_response.Dtor_error().(AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Error) + return nil, Error_FromDafny(err) + } + var native_response = UpdateItemOutputTransformOutput_FromDafny(dafny_response.Dtor_value().(AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.UpdateItemOutputTransformOutput)) + return &native_response, nil + +} + +func (client *Client) DeleteItemInputTransform(ctx context.Context, params awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.DeleteItemInputTransformInput) (*awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.DeleteItemInputTransformOutput, error) { + err := params.Validate() + if err != nil { + opaqueErr := awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.OpaqueError{ + ErrObject: err, + } + return nil, opaqueErr + } + + var dafny_request AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.DeleteItemInputTransformInput = DeleteItemInputTransformInput_ToDafny(params) + var dafny_response = client.DafnyClient.DeleteItemInputTransform(dafny_request) + + if dafny_response.Is_Failure() { + err := dafny_response.Dtor_error().(AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Error) + return nil, Error_FromDafny(err) + } + var native_response = DeleteItemInputTransformOutput_FromDafny(dafny_response.Dtor_value().(AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.DeleteItemInputTransformOutput)) + return &native_response, nil + +} + +func (client *Client) DeleteItemOutputTransform(ctx context.Context, params awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.DeleteItemOutputTransformInput) (*awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.DeleteItemOutputTransformOutput, error) { + err := params.Validate() + if err != nil { + opaqueErr := awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.OpaqueError{ + ErrObject: err, + } + return nil, opaqueErr + } + + var dafny_request AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.DeleteItemOutputTransformInput = DeleteItemOutputTransformInput_ToDafny(params) + var dafny_response = client.DafnyClient.DeleteItemOutputTransform(dafny_request) + + if dafny_response.Is_Failure() { + err := dafny_response.Dtor_error().(AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Error) + return nil, Error_FromDafny(err) + } + var native_response = DeleteItemOutputTransformOutput_FromDafny(dafny_response.Dtor_value().(AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.DeleteItemOutputTransformOutput)) + return &native_response, nil + +} + +func (client *Client) TransactGetItemsInputTransform(ctx context.Context, params awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.TransactGetItemsInputTransformInput) (*awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.TransactGetItemsInputTransformOutput, error) { + err := params.Validate() + if err != nil { + opaqueErr := awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.OpaqueError{ + ErrObject: err, + } + return nil, opaqueErr + } + + var dafny_request AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.TransactGetItemsInputTransformInput = TransactGetItemsInputTransformInput_ToDafny(params) + var dafny_response = client.DafnyClient.TransactGetItemsInputTransform(dafny_request) + + if dafny_response.Is_Failure() { + err := dafny_response.Dtor_error().(AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Error) + return nil, Error_FromDafny(err) + } + var native_response = TransactGetItemsInputTransformOutput_FromDafny(dafny_response.Dtor_value().(AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.TransactGetItemsInputTransformOutput)) + return &native_response, nil + +} + +func (client *Client) TransactGetItemsOutputTransform(ctx context.Context, params awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.TransactGetItemsOutputTransformInput) (*awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.TransactGetItemsOutputTransformOutput, error) { + err := params.Validate() + if err != nil { + opaqueErr := awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.OpaqueError{ + ErrObject: err, + } + return nil, opaqueErr + } + + var dafny_request AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.TransactGetItemsOutputTransformInput = TransactGetItemsOutputTransformInput_ToDafny(params) + var dafny_response = client.DafnyClient.TransactGetItemsOutputTransform(dafny_request) + + if dafny_response.Is_Failure() { + err := dafny_response.Dtor_error().(AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Error) + return nil, Error_FromDafny(err) + } + var native_response = TransactGetItemsOutputTransformOutput_FromDafny(dafny_response.Dtor_value().(AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.TransactGetItemsOutputTransformOutput)) + return &native_response, nil + +} + +func (client *Client) ExecuteStatementInputTransform(ctx context.Context, params awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.ExecuteStatementInputTransformInput) (*awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.ExecuteStatementInputTransformOutput, error) { + err := params.Validate() + if err != nil { + opaqueErr := awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.OpaqueError{ + ErrObject: err, + } + return nil, opaqueErr + } + + var dafny_request AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.ExecuteStatementInputTransformInput = ExecuteStatementInputTransformInput_ToDafny(params) + var dafny_response = client.DafnyClient.ExecuteStatementInputTransform(dafny_request) + + if dafny_response.Is_Failure() { + err := dafny_response.Dtor_error().(AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Error) + return nil, Error_FromDafny(err) + } + var native_response = ExecuteStatementInputTransformOutput_FromDafny(dafny_response.Dtor_value().(AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.ExecuteStatementInputTransformOutput)) + return &native_response, nil + +} + +func (client *Client) ExecuteStatementOutputTransform(ctx context.Context, params awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.ExecuteStatementOutputTransformInput) (*awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.ExecuteStatementOutputTransformOutput, error) { + err := params.Validate() + if err != nil { + opaqueErr := awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.OpaqueError{ + ErrObject: err, + } + return nil, opaqueErr + } + + var dafny_request AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.ExecuteStatementOutputTransformInput = ExecuteStatementOutputTransformInput_ToDafny(params) + var dafny_response = client.DafnyClient.ExecuteStatementOutputTransform(dafny_request) + + if dafny_response.Is_Failure() { + err := dafny_response.Dtor_error().(AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Error) + return nil, Error_FromDafny(err) + } + var native_response = ExecuteStatementOutputTransformOutput_FromDafny(dafny_response.Dtor_value().(AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.ExecuteStatementOutputTransformOutput)) + return &native_response, nil + +} + +func (client *Client) BatchExecuteStatementInputTransform(ctx context.Context, params awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.BatchExecuteStatementInputTransformInput) (*awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.BatchExecuteStatementInputTransformOutput, error) { + err := params.Validate() + if err != nil { + opaqueErr := awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.OpaqueError{ + ErrObject: err, + } + return nil, opaqueErr + } + + var dafny_request AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.BatchExecuteStatementInputTransformInput = BatchExecuteStatementInputTransformInput_ToDafny(params) + var dafny_response = client.DafnyClient.BatchExecuteStatementInputTransform(dafny_request) + + if dafny_response.Is_Failure() { + err := dafny_response.Dtor_error().(AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Error) + return nil, Error_FromDafny(err) + } + var native_response = BatchExecuteStatementInputTransformOutput_FromDafny(dafny_response.Dtor_value().(AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.BatchExecuteStatementInputTransformOutput)) + return &native_response, nil + +} + +func (client *Client) BatchExecuteStatementOutputTransform(ctx context.Context, params awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.BatchExecuteStatementOutputTransformInput) (*awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.BatchExecuteStatementOutputTransformOutput, error) { + err := params.Validate() + if err != nil { + opaqueErr := awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.OpaqueError{ + ErrObject: err, + } + return nil, opaqueErr + } + + var dafny_request AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.BatchExecuteStatementOutputTransformInput = BatchExecuteStatementOutputTransformInput_ToDafny(params) + var dafny_response = client.DafnyClient.BatchExecuteStatementOutputTransform(dafny_request) + + if dafny_response.Is_Failure() { + err := dafny_response.Dtor_error().(AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Error) + return nil, Error_FromDafny(err) + } + var native_response = BatchExecuteStatementOutputTransformOutput_FromDafny(dafny_response.Dtor_value().(AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.BatchExecuteStatementOutputTransformOutput)) + return &native_response, nil + +} + +func (client *Client) ExecuteTransactionInputTransform(ctx context.Context, params awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.ExecuteTransactionInputTransformInput) (*awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.ExecuteTransactionInputTransformOutput, error) { + err := params.Validate() + if err != nil { + opaqueErr := awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.OpaqueError{ + ErrObject: err, + } + return nil, opaqueErr + } + + var dafny_request AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.ExecuteTransactionInputTransformInput = ExecuteTransactionInputTransformInput_ToDafny(params) + var dafny_response = client.DafnyClient.ExecuteTransactionInputTransform(dafny_request) + + if dafny_response.Is_Failure() { + err := dafny_response.Dtor_error().(AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Error) + return nil, Error_FromDafny(err) + } + var native_response = ExecuteTransactionInputTransformOutput_FromDafny(dafny_response.Dtor_value().(AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.ExecuteTransactionInputTransformOutput)) + return &native_response, nil + +} + +func (client *Client) ExecuteTransactionOutputTransform(ctx context.Context, params awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.ExecuteTransactionOutputTransformInput) (*awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.ExecuteTransactionOutputTransformOutput, error) { + err := params.Validate() + if err != nil { + opaqueErr := awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.OpaqueError{ + ErrObject: err, + } + return nil, opaqueErr + } + + var dafny_request AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.ExecuteTransactionOutputTransformInput = ExecuteTransactionOutputTransformInput_ToDafny(params) + var dafny_response = client.DafnyClient.ExecuteTransactionOutputTransform(dafny_request) + + if dafny_response.Is_Failure() { + err := dafny_response.Dtor_error().(AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Error) + return nil, Error_FromDafny(err) + } + var native_response = ExecuteTransactionOutputTransformOutput_FromDafny(dafny_response.Dtor_value().(AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.ExecuteTransactionOutputTransformOutput)) + return &native_response, nil + +} + +func (client *Client) ResolveAttributes(ctx context.Context, params awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.ResolveAttributesInput) (*awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.ResolveAttributesOutput, error) { + err := params.Validate() + if err != nil { + opaqueErr := awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.OpaqueError{ + ErrObject: err, + } + return nil, opaqueErr + } + + var dafny_request AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.ResolveAttributesInput = ResolveAttributesInput_ToDafny(params) + var dafny_response = client.DafnyClient.ResolveAttributes(dafny_request) + + if dafny_response.Is_Failure() { + err := dafny_response.Dtor_error().(AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Error) + return nil, Error_FromDafny(err) + } + var native_response = ResolveAttributesOutput_FromDafny(dafny_response.Dtor_value().(AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.ResolveAttributesOutput)) + return &native_response, nil + +} diff --git a/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkdynamodbtransformssmithygenerated/to_dafny.go b/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkdynamodbtransformssmithygenerated/to_dafny.go new file mode 100644 index 000000000..d1ef9532b --- /dev/null +++ b/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkdynamodbtransformssmithygenerated/to_dafny.go @@ -0,0 +1,1127 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package awscryptographydbencryptionsdkdynamodbtransformssmithygenerated + +import ( + "github.com/aws/aws-cryptographic-material-providers-library/releases/go/dynamodb/ComAmazonawsDynamodbTypes" + "github.com/aws/aws-cryptographic-material-providers-library/releases/go/dynamodb/comamazonawsdynamodbsmithygenerated" + "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/awscryptographymaterialproviderssmithygenerated" + "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/awscryptographymaterialproviderssmithygeneratedtypes" + "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/UTF8" + "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Wrappers" + "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes" + "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkdynamodbitemencryptorsmithygenerated" + "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkdynamodbitemencryptorsmithygeneratedtypes" + "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkdynamodbsmithygenerated" + "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes" + "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes" + "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkstructuredencryptionsmithygenerated" + "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes" + "github.com/aws/aws-sdk-go-v2/service/dynamodb" + dynamodbtypes "github.com/aws/aws-sdk-go-v2/service/dynamodb/types" + "github.com/aws/smithy-go" + "github.com/dafny-lang/DafnyRuntimeGo/v4/dafny" +) + +func BatchExecuteStatementInputTransformInput_ToDafny(nativeInput awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.BatchExecuteStatementInputTransformInput) AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.BatchExecuteStatementInputTransformInput { + + return func() AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.BatchExecuteStatementInputTransformInput { + + return AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_BatchExecuteStatementInputTransformInput_.Create_BatchExecuteStatementInputTransformInput_(Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_BatchExecuteStatementInputTransformInput_sdkInput_ToDafny(nativeInput.SdkInput)) + }() + +} + +func BatchExecuteStatementInputTransformOutput_ToDafny(nativeOutput awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.BatchExecuteStatementInputTransformOutput) AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.BatchExecuteStatementInputTransformOutput { + + return func() AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.BatchExecuteStatementInputTransformOutput { + + return AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_BatchExecuteStatementInputTransformOutput_.Create_BatchExecuteStatementInputTransformOutput_(Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_BatchExecuteStatementInputTransformOutput_transformedInput_ToDafny(nativeOutput.TransformedInput)) + }() + +} + +func BatchExecuteStatementOutputTransformInput_ToDafny(nativeInput awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.BatchExecuteStatementOutputTransformInput) AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.BatchExecuteStatementOutputTransformInput { + + return func() AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.BatchExecuteStatementOutputTransformInput { + + return AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_BatchExecuteStatementOutputTransformInput_.Create_BatchExecuteStatementOutputTransformInput_(Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_BatchExecuteStatementOutputTransformInput_sdkOutput_ToDafny(nativeInput.SdkOutput), Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_BatchExecuteStatementOutputTransformInput_originalInput_ToDafny(nativeInput.OriginalInput)) + }() + +} + +func BatchExecuteStatementOutputTransformOutput_ToDafny(nativeOutput awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.BatchExecuteStatementOutputTransformOutput) AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.BatchExecuteStatementOutputTransformOutput { + + return func() AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.BatchExecuteStatementOutputTransformOutput { + + return AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_BatchExecuteStatementOutputTransformOutput_.Create_BatchExecuteStatementOutputTransformOutput_(Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_BatchExecuteStatementOutputTransformOutput_transformedOutput_ToDafny(nativeOutput.TransformedOutput)) + }() + +} + +func BatchGetItemInputTransformInput_ToDafny(nativeInput awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.BatchGetItemInputTransformInput) AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.BatchGetItemInputTransformInput { + + return func() AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.BatchGetItemInputTransformInput { + + return AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_BatchGetItemInputTransformInput_.Create_BatchGetItemInputTransformInput_(Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_BatchGetItemInputTransformInput_sdkInput_ToDafny(nativeInput.SdkInput)) + }() + +} + +func BatchGetItemInputTransformOutput_ToDafny(nativeOutput awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.BatchGetItemInputTransformOutput) AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.BatchGetItemInputTransformOutput { + + return func() AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.BatchGetItemInputTransformOutput { + + return AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_BatchGetItemInputTransformOutput_.Create_BatchGetItemInputTransformOutput_(Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_BatchGetItemInputTransformOutput_transformedInput_ToDafny(nativeOutput.TransformedInput)) + }() + +} + +func BatchGetItemOutputTransformInput_ToDafny(nativeInput awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.BatchGetItemOutputTransformInput) AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.BatchGetItemOutputTransformInput { + + return func() AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.BatchGetItemOutputTransformInput { + + return AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_BatchGetItemOutputTransformInput_.Create_BatchGetItemOutputTransformInput_(Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_BatchGetItemOutputTransformInput_sdkOutput_ToDafny(nativeInput.SdkOutput), Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_BatchGetItemOutputTransformInput_originalInput_ToDafny(nativeInput.OriginalInput)) + }() + +} + +func BatchGetItemOutputTransformOutput_ToDafny(nativeOutput awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.BatchGetItemOutputTransformOutput) AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.BatchGetItemOutputTransformOutput { + + return func() AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.BatchGetItemOutputTransformOutput { + + return AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_BatchGetItemOutputTransformOutput_.Create_BatchGetItemOutputTransformOutput_(Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_BatchGetItemOutputTransformOutput_transformedOutput_ToDafny(nativeOutput.TransformedOutput)) + }() + +} + +func BatchWriteItemInputTransformInput_ToDafny(nativeInput awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.BatchWriteItemInputTransformInput) AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.BatchWriteItemInputTransformInput { + + return func() AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.BatchWriteItemInputTransformInput { + + return AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_BatchWriteItemInputTransformInput_.Create_BatchWriteItemInputTransformInput_(Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_BatchWriteItemInputTransformInput_sdkInput_ToDafny(nativeInput.SdkInput)) + }() + +} + +func BatchWriteItemInputTransformOutput_ToDafny(nativeOutput awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.BatchWriteItemInputTransformOutput) AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.BatchWriteItemInputTransformOutput { + + return func() AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.BatchWriteItemInputTransformOutput { + + return AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_BatchWriteItemInputTransformOutput_.Create_BatchWriteItemInputTransformOutput_(Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_BatchWriteItemInputTransformOutput_transformedInput_ToDafny(nativeOutput.TransformedInput)) + }() + +} + +func BatchWriteItemOutputTransformInput_ToDafny(nativeInput awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.BatchWriteItemOutputTransformInput) AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.BatchWriteItemOutputTransformInput { + + return func() AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.BatchWriteItemOutputTransformInput { + + return AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_BatchWriteItemOutputTransformInput_.Create_BatchWriteItemOutputTransformInput_(Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_BatchWriteItemOutputTransformInput_sdkOutput_ToDafny(nativeInput.SdkOutput), Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_BatchWriteItemOutputTransformInput_originalInput_ToDafny(nativeInput.OriginalInput)) + }() + +} + +func BatchWriteItemOutputTransformOutput_ToDafny(nativeOutput awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.BatchWriteItemOutputTransformOutput) AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.BatchWriteItemOutputTransformOutput { + + return func() AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.BatchWriteItemOutputTransformOutput { + + return AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_BatchWriteItemOutputTransformOutput_.Create_BatchWriteItemOutputTransformOutput_(Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_BatchWriteItemOutputTransformOutput_transformedOutput_ToDafny(nativeOutput.TransformedOutput)) + }() + +} + +func DeleteItemInputTransformInput_ToDafny(nativeInput awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.DeleteItemInputTransformInput) AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.DeleteItemInputTransformInput { + + return func() AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.DeleteItemInputTransformInput { + + return AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_DeleteItemInputTransformInput_.Create_DeleteItemInputTransformInput_(Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_DeleteItemInputTransformInput_sdkInput_ToDafny(nativeInput.SdkInput)) + }() + +} + +func DeleteItemInputTransformOutput_ToDafny(nativeOutput awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.DeleteItemInputTransformOutput) AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.DeleteItemInputTransformOutput { + + return func() AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.DeleteItemInputTransformOutput { + + return AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_DeleteItemInputTransformOutput_.Create_DeleteItemInputTransformOutput_(Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_DeleteItemInputTransformOutput_transformedInput_ToDafny(nativeOutput.TransformedInput)) + }() + +} + +func DeleteItemOutputTransformInput_ToDafny(nativeInput awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.DeleteItemOutputTransformInput) AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.DeleteItemOutputTransformInput { + + return func() AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.DeleteItemOutputTransformInput { + + return AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_DeleteItemOutputTransformInput_.Create_DeleteItemOutputTransformInput_(Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_DeleteItemOutputTransformInput_sdkOutput_ToDafny(nativeInput.SdkOutput), Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_DeleteItemOutputTransformInput_originalInput_ToDafny(nativeInput.OriginalInput)) + }() + +} + +func DeleteItemOutputTransformOutput_ToDafny(nativeOutput awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.DeleteItemOutputTransformOutput) AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.DeleteItemOutputTransformOutput { + + return func() AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.DeleteItemOutputTransformOutput { + + return AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_DeleteItemOutputTransformOutput_.Create_DeleteItemOutputTransformOutput_(Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_DeleteItemOutputTransformOutput_transformedOutput_ToDafny(nativeOutput.TransformedOutput)) + }() + +} + +func ExecuteStatementInputTransformInput_ToDafny(nativeInput awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.ExecuteStatementInputTransformInput) AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.ExecuteStatementInputTransformInput { + + return func() AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.ExecuteStatementInputTransformInput { + + return AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_ExecuteStatementInputTransformInput_.Create_ExecuteStatementInputTransformInput_(Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_ExecuteStatementInputTransformInput_sdkInput_ToDafny(nativeInput.SdkInput)) + }() + +} + +func ExecuteStatementInputTransformOutput_ToDafny(nativeOutput awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.ExecuteStatementInputTransformOutput) AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.ExecuteStatementInputTransformOutput { + + return func() AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.ExecuteStatementInputTransformOutput { + + return AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_ExecuteStatementInputTransformOutput_.Create_ExecuteStatementInputTransformOutput_(Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_ExecuteStatementInputTransformOutput_transformedInput_ToDafny(nativeOutput.TransformedInput)) + }() + +} + +func ExecuteStatementOutputTransformInput_ToDafny(nativeInput awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.ExecuteStatementOutputTransformInput) AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.ExecuteStatementOutputTransformInput { + + return func() AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.ExecuteStatementOutputTransformInput { + + return AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_ExecuteStatementOutputTransformInput_.Create_ExecuteStatementOutputTransformInput_(Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_ExecuteStatementOutputTransformInput_sdkOutput_ToDafny(nativeInput.SdkOutput), Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_ExecuteStatementOutputTransformInput_originalInput_ToDafny(nativeInput.OriginalInput)) + }() + +} + +func ExecuteStatementOutputTransformOutput_ToDafny(nativeOutput awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.ExecuteStatementOutputTransformOutput) AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.ExecuteStatementOutputTransformOutput { + + return func() AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.ExecuteStatementOutputTransformOutput { + + return AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_ExecuteStatementOutputTransformOutput_.Create_ExecuteStatementOutputTransformOutput_(Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_ExecuteStatementOutputTransformOutput_transformedOutput_ToDafny(nativeOutput.TransformedOutput)) + }() + +} + +func ExecuteTransactionInputTransformInput_ToDafny(nativeInput awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.ExecuteTransactionInputTransformInput) AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.ExecuteTransactionInputTransformInput { + + return func() AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.ExecuteTransactionInputTransformInput { + + return AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_ExecuteTransactionInputTransformInput_.Create_ExecuteTransactionInputTransformInput_(Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_ExecuteTransactionInputTransformInput_sdkInput_ToDafny(nativeInput.SdkInput)) + }() + +} + +func ExecuteTransactionInputTransformOutput_ToDafny(nativeOutput awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.ExecuteTransactionInputTransformOutput) AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.ExecuteTransactionInputTransformOutput { + + return func() AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.ExecuteTransactionInputTransformOutput { + + return AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_ExecuteTransactionInputTransformOutput_.Create_ExecuteTransactionInputTransformOutput_(Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_ExecuteTransactionInputTransformOutput_transformedInput_ToDafny(nativeOutput.TransformedInput)) + }() + +} + +func ExecuteTransactionOutputTransformInput_ToDafny(nativeInput awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.ExecuteTransactionOutputTransformInput) AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.ExecuteTransactionOutputTransformInput { + + return func() AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.ExecuteTransactionOutputTransformInput { + + return AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_ExecuteTransactionOutputTransformInput_.Create_ExecuteTransactionOutputTransformInput_(Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_ExecuteTransactionOutputTransformInput_sdkOutput_ToDafny(nativeInput.SdkOutput), Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_ExecuteTransactionOutputTransformInput_originalInput_ToDafny(nativeInput.OriginalInput)) + }() + +} + +func ExecuteTransactionOutputTransformOutput_ToDafny(nativeOutput awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.ExecuteTransactionOutputTransformOutput) AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.ExecuteTransactionOutputTransformOutput { + + return func() AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.ExecuteTransactionOutputTransformOutput { + + return AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_ExecuteTransactionOutputTransformOutput_.Create_ExecuteTransactionOutputTransformOutput_(Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_ExecuteTransactionOutputTransformOutput_transformedOutput_ToDafny(nativeOutput.TransformedOutput)) + }() + +} + +func GetItemInputTransformInput_ToDafny(nativeInput awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.GetItemInputTransformInput) AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.GetItemInputTransformInput { + + return func() AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.GetItemInputTransformInput { + + return AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_GetItemInputTransformInput_.Create_GetItemInputTransformInput_(Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_GetItemInputTransformInput_sdkInput_ToDafny(nativeInput.SdkInput)) + }() + +} + +func GetItemInputTransformOutput_ToDafny(nativeOutput awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.GetItemInputTransformOutput) AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.GetItemInputTransformOutput { + + return func() AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.GetItemInputTransformOutput { + + return AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_GetItemInputTransformOutput_.Create_GetItemInputTransformOutput_(Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_GetItemInputTransformOutput_transformedInput_ToDafny(nativeOutput.TransformedInput)) + }() + +} + +func GetItemOutputTransformInput_ToDafny(nativeInput awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.GetItemOutputTransformInput) AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.GetItemOutputTransformInput { + + return func() AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.GetItemOutputTransformInput { + + return AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_GetItemOutputTransformInput_.Create_GetItemOutputTransformInput_(Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_GetItemOutputTransformInput_sdkOutput_ToDafny(nativeInput.SdkOutput), Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_GetItemOutputTransformInput_originalInput_ToDafny(nativeInput.OriginalInput)) + }() + +} + +func GetItemOutputTransformOutput_ToDafny(nativeOutput awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.GetItemOutputTransformOutput) AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.GetItemOutputTransformOutput { + + return func() AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.GetItemOutputTransformOutput { + + return AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_GetItemOutputTransformOutput_.Create_GetItemOutputTransformOutput_(Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_GetItemOutputTransformOutput_transformedOutput_ToDafny(nativeOutput.TransformedOutput)) + }() + +} + +func PutItemInputTransformInput_ToDafny(nativeInput awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.PutItemInputTransformInput) AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.PutItemInputTransformInput { + + return func() AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.PutItemInputTransformInput { + + return AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_PutItemInputTransformInput_.Create_PutItemInputTransformInput_(Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_PutItemInputTransformInput_sdkInput_ToDafny(nativeInput.SdkInput)) + }() + +} + +func PutItemInputTransformOutput_ToDafny(nativeOutput awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.PutItemInputTransformOutput) AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.PutItemInputTransformOutput { + + return func() AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.PutItemInputTransformOutput { + + return AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_PutItemInputTransformOutput_.Create_PutItemInputTransformOutput_(Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_PutItemInputTransformOutput_transformedInput_ToDafny(nativeOutput.TransformedInput)) + }() + +} + +func PutItemOutputTransformInput_ToDafny(nativeInput awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.PutItemOutputTransformInput) AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.PutItemOutputTransformInput { + + return func() AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.PutItemOutputTransformInput { + + return AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_PutItemOutputTransformInput_.Create_PutItemOutputTransformInput_(Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_PutItemOutputTransformInput_sdkOutput_ToDafny(nativeInput.SdkOutput), Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_PutItemOutputTransformInput_originalInput_ToDafny(nativeInput.OriginalInput)) + }() + +} + +func PutItemOutputTransformOutput_ToDafny(nativeOutput awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.PutItemOutputTransformOutput) AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.PutItemOutputTransformOutput { + + return func() AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.PutItemOutputTransformOutput { + + return AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_PutItemOutputTransformOutput_.Create_PutItemOutputTransformOutput_(Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_PutItemOutputTransformOutput_transformedOutput_ToDafny(nativeOutput.TransformedOutput)) + }() + +} + +func QueryInputTransformInput_ToDafny(nativeInput awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.QueryInputTransformInput) AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.QueryInputTransformInput { + + return func() AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.QueryInputTransformInput { + + return AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_QueryInputTransformInput_.Create_QueryInputTransformInput_(Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_QueryInputTransformInput_sdkInput_ToDafny(nativeInput.SdkInput)) + }() + +} + +func QueryInputTransformOutput_ToDafny(nativeOutput awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.QueryInputTransformOutput) AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.QueryInputTransformOutput { + + return func() AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.QueryInputTransformOutput { + + return AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_QueryInputTransformOutput_.Create_QueryInputTransformOutput_(Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_QueryInputTransformOutput_transformedInput_ToDafny(nativeOutput.TransformedInput)) + }() + +} + +func QueryOutputTransformInput_ToDafny(nativeInput awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.QueryOutputTransformInput) AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.QueryOutputTransformInput { + + return func() AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.QueryOutputTransformInput { + + return AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_QueryOutputTransformInput_.Create_QueryOutputTransformInput_(Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_QueryOutputTransformInput_sdkOutput_ToDafny(nativeInput.SdkOutput), Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_QueryOutputTransformInput_originalInput_ToDafny(nativeInput.OriginalInput)) + }() + +} + +func QueryOutputTransformOutput_ToDafny(nativeOutput awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.QueryOutputTransformOutput) AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.QueryOutputTransformOutput { + + return func() AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.QueryOutputTransformOutput { + + return AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_QueryOutputTransformOutput_.Create_QueryOutputTransformOutput_(Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_QueryOutputTransformOutput_transformedOutput_ToDafny(nativeOutput.TransformedOutput)) + }() + +} + +func ResolveAttributesInput_ToDafny(nativeInput awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.ResolveAttributesInput) AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.ResolveAttributesInput { + + return func() AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.ResolveAttributesInput { + + return AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_ResolveAttributesInput_.Create_ResolveAttributesInput_(Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_ResolveAttributesInput_TableName_ToDafny(nativeInput.TableName), Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_ResolveAttributesInput_Item_ToDafny(nativeInput.Item), Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_ResolveAttributesInput_Version_ToDafny(nativeInput.Version)) + }() + +} + +func ResolveAttributesOutput_ToDafny(nativeOutput awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.ResolveAttributesOutput) AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.ResolveAttributesOutput { + + return func() AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.ResolveAttributesOutput { + + return AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_ResolveAttributesOutput_.Create_ResolveAttributesOutput_(Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_ResolveAttributesOutput_VirtualFields_ToDafny(nativeOutput.VirtualFields), Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_ResolveAttributesOutput_CompoundBeacons_ToDafny(nativeOutput.CompoundBeacons)) + }() + +} + +func ScanInputTransformInput_ToDafny(nativeInput awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.ScanInputTransformInput) AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.ScanInputTransformInput { + + return func() AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.ScanInputTransformInput { + + return AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_ScanInputTransformInput_.Create_ScanInputTransformInput_(Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_ScanInputTransformInput_sdkInput_ToDafny(nativeInput.SdkInput)) + }() + +} + +func ScanInputTransformOutput_ToDafny(nativeOutput awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.ScanInputTransformOutput) AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.ScanInputTransformOutput { + + return func() AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.ScanInputTransformOutput { + + return AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_ScanInputTransformOutput_.Create_ScanInputTransformOutput_(Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_ScanInputTransformOutput_transformedInput_ToDafny(nativeOutput.TransformedInput)) + }() + +} + +func ScanOutputTransformInput_ToDafny(nativeInput awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.ScanOutputTransformInput) AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.ScanOutputTransformInput { + + return func() AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.ScanOutputTransformInput { + + return AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_ScanOutputTransformInput_.Create_ScanOutputTransformInput_(Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_ScanOutputTransformInput_sdkOutput_ToDafny(nativeInput.SdkOutput), Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_ScanOutputTransformInput_originalInput_ToDafny(nativeInput.OriginalInput)) + }() + +} + +func ScanOutputTransformOutput_ToDafny(nativeOutput awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.ScanOutputTransformOutput) AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.ScanOutputTransformOutput { + + return func() AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.ScanOutputTransformOutput { + + return AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_ScanOutputTransformOutput_.Create_ScanOutputTransformOutput_(Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_ScanOutputTransformOutput_transformedOutput_ToDafny(nativeOutput.TransformedOutput)) + }() + +} + +func TransactGetItemsInputTransformInput_ToDafny(nativeInput awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.TransactGetItemsInputTransformInput) AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.TransactGetItemsInputTransformInput { + + return func() AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.TransactGetItemsInputTransformInput { + + return AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_TransactGetItemsInputTransformInput_.Create_TransactGetItemsInputTransformInput_(Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_TransactGetItemsInputTransformInput_sdkInput_ToDafny(nativeInput.SdkInput)) + }() + +} + +func TransactGetItemsInputTransformOutput_ToDafny(nativeOutput awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.TransactGetItemsInputTransformOutput) AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.TransactGetItemsInputTransformOutput { + + return func() AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.TransactGetItemsInputTransformOutput { + + return AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_TransactGetItemsInputTransformOutput_.Create_TransactGetItemsInputTransformOutput_(Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_TransactGetItemsInputTransformOutput_transformedInput_ToDafny(nativeOutput.TransformedInput)) + }() + +} + +func TransactGetItemsOutputTransformInput_ToDafny(nativeInput awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.TransactGetItemsOutputTransformInput) AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.TransactGetItemsOutputTransformInput { + + return func() AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.TransactGetItemsOutputTransformInput { + + return AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_TransactGetItemsOutputTransformInput_.Create_TransactGetItemsOutputTransformInput_(Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_TransactGetItemsOutputTransformInput_sdkOutput_ToDafny(nativeInput.SdkOutput), Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_TransactGetItemsOutputTransformInput_originalInput_ToDafny(nativeInput.OriginalInput)) + }() + +} + +func TransactGetItemsOutputTransformOutput_ToDafny(nativeOutput awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.TransactGetItemsOutputTransformOutput) AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.TransactGetItemsOutputTransformOutput { + + return func() AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.TransactGetItemsOutputTransformOutput { + + return AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_TransactGetItemsOutputTransformOutput_.Create_TransactGetItemsOutputTransformOutput_(Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_TransactGetItemsOutputTransformOutput_transformedOutput_ToDafny(nativeOutput.TransformedOutput)) + }() + +} + +func TransactWriteItemsInputTransformInput_ToDafny(nativeInput awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.TransactWriteItemsInputTransformInput) AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.TransactWriteItemsInputTransformInput { + + return func() AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.TransactWriteItemsInputTransformInput { + + return AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_TransactWriteItemsInputTransformInput_.Create_TransactWriteItemsInputTransformInput_(Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_TransactWriteItemsInputTransformInput_sdkInput_ToDafny(nativeInput.SdkInput)) + }() + +} + +func TransactWriteItemsInputTransformOutput_ToDafny(nativeOutput awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.TransactWriteItemsInputTransformOutput) AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.TransactWriteItemsInputTransformOutput { + + return func() AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.TransactWriteItemsInputTransformOutput { + + return AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_TransactWriteItemsInputTransformOutput_.Create_TransactWriteItemsInputTransformOutput_(Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_TransactWriteItemsInputTransformOutput_transformedInput_ToDafny(nativeOutput.TransformedInput)) + }() + +} + +func TransactWriteItemsOutputTransformInput_ToDafny(nativeInput awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.TransactWriteItemsOutputTransformInput) AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.TransactWriteItemsOutputTransformInput { + + return func() AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.TransactWriteItemsOutputTransformInput { + + return AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_TransactWriteItemsOutputTransformInput_.Create_TransactWriteItemsOutputTransformInput_(Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_TransactWriteItemsOutputTransformInput_sdkOutput_ToDafny(nativeInput.SdkOutput), Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_TransactWriteItemsOutputTransformInput_originalInput_ToDafny(nativeInput.OriginalInput)) + }() + +} + +func TransactWriteItemsOutputTransformOutput_ToDafny(nativeOutput awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.TransactWriteItemsOutputTransformOutput) AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.TransactWriteItemsOutputTransformOutput { + + return func() AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.TransactWriteItemsOutputTransformOutput { + + return AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_TransactWriteItemsOutputTransformOutput_.Create_TransactWriteItemsOutputTransformOutput_(Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_TransactWriteItemsOutputTransformOutput_transformedOutput_ToDafny(nativeOutput.TransformedOutput)) + }() + +} + +func UpdateItemInputTransformInput_ToDafny(nativeInput awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.UpdateItemInputTransformInput) AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.UpdateItemInputTransformInput { + + return func() AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.UpdateItemInputTransformInput { + + return AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_UpdateItemInputTransformInput_.Create_UpdateItemInputTransformInput_(Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_UpdateItemInputTransformInput_sdkInput_ToDafny(nativeInput.SdkInput)) + }() + +} + +func UpdateItemInputTransformOutput_ToDafny(nativeOutput awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.UpdateItemInputTransformOutput) AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.UpdateItemInputTransformOutput { + + return func() AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.UpdateItemInputTransformOutput { + + return AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_UpdateItemInputTransformOutput_.Create_UpdateItemInputTransformOutput_(Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_UpdateItemInputTransformOutput_transformedInput_ToDafny(nativeOutput.TransformedInput)) + }() + +} + +func UpdateItemOutputTransformInput_ToDafny(nativeInput awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.UpdateItemOutputTransformInput) AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.UpdateItemOutputTransformInput { + + return func() AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.UpdateItemOutputTransformInput { + + return AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_UpdateItemOutputTransformInput_.Create_UpdateItemOutputTransformInput_(Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_UpdateItemOutputTransformInput_sdkOutput_ToDafny(nativeInput.SdkOutput), Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_UpdateItemOutputTransformInput_originalInput_ToDafny(nativeInput.OriginalInput)) + }() + +} + +func UpdateItemOutputTransformOutput_ToDafny(nativeOutput awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.UpdateItemOutputTransformOutput) AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.UpdateItemOutputTransformOutput { + + return func() AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.UpdateItemOutputTransformOutput { + + return AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_UpdateItemOutputTransformOutput_.Create_UpdateItemOutputTransformOutput_(Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_UpdateItemOutputTransformOutput_transformedOutput_ToDafny(nativeOutput.TransformedOutput)) + }() + +} + +func DynamoDbEncryptionTransformsException_ToDafny(nativeInput awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.DynamoDbEncryptionTransformsException) AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Error { + return func() AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Error { + + return AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_Error_.Create_DynamoDbEncryptionTransformsException_(Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_DynamoDbEncryptionTransformsException_message_ToDafny(nativeInput.Message)) + }() + +} + +func CollectionOfErrors_Input_ToDafny(nativeInput awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.CollectionOfErrors) AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Error { + var e []interface{} + for _, i2 := range nativeInput.ListOfErrors { + e = append(e, Error_ToDafny(i2)) + } + return AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_Error_.Create_CollectionOfErrors_(dafny.SeqOf(e...), func() dafny.Sequence { + res, err := UTF8.DecodeFromNativeGoByteArray([]byte(nativeInput.Message)) + if err != nil { + panic("invalid utf8 input provided") + } + return res + }()) +} +func OpaqueError_Input_ToDafny(nativeInput awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.OpaqueError) AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Error { + return AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_Error_.Create_Opaque_(nativeInput.ErrObject) +} + +func Error_ToDafny(err error) AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Error { + switch err.(type) { + // Service Errors + case awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.DynamoDbEncryptionTransformsException: + return DynamoDbEncryptionTransformsException_ToDafny(err.(awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.DynamoDbEncryptionTransformsException)) + + //DependentErrors + case awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.DynamoDbEncryptionBaseException: + return AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_Error_.Create_AwsCryptographyDbEncryptionSdkDynamoDb_(awscryptographydbencryptionsdkdynamodbsmithygenerated.Error_ToDafny(err)) + + case awscryptographydbencryptionsdkdynamodbitemencryptorsmithygeneratedtypes.DynamoDbItemEncryptorBaseException: + return AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_Error_.Create_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptor_(awscryptographydbencryptionsdkdynamodbitemencryptorsmithygenerated.Error_ToDafny(err)) + + case awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.StructuredEncryptionBaseException: + return AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_Error_.Create_AwsCryptographyDbEncryptionSdkStructuredEncryption_(awscryptographydbencryptionsdkstructuredencryptionsmithygenerated.Error_ToDafny(err)) + + case awscryptographymaterialproviderssmithygeneratedtypes.AwsCryptographicMaterialProvidersBaseException: + return AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_Error_.Create_AwsCryptographyMaterialProviders_(awscryptographymaterialproviderssmithygenerated.Error_ToDafny(err)) + + case *smithy.OperationError: + if err.(*smithy.OperationError).Service() == "DynamoDB" { + DynamoDBError := comamazonawsdynamodbsmithygenerated.Error_ToDafny(err) + return AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_Error_.Create_ComAmazonawsDynamodb_(DynamoDBError) + } + return AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_Error_.Create_Opaque_(err) + + case smithy.APIError: + DynamoDBError := comamazonawsdynamodbsmithygenerated.Error_ToDafny(err) + if !DynamoDBError.Is_OpaqueWithText() { + return AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_Error_.Create_ComAmazonawsDynamodb_(DynamoDBError) + } + return AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Companion_Error_.Create_Opaque_(err) + + //Unmodelled Errors + case awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.CollectionOfErrors: + return CollectionOfErrors_Input_ToDafny(err.(awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.CollectionOfErrors)) + + default: + error, ok := err.(awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.OpaqueError) + if !ok { + panic("Error is not an OpaqueError") + } + return OpaqueError_Input_ToDafny(error) + } +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_BatchExecuteStatementInputTransformInput_sdkInput_ToDafny(input dynamodb.BatchExecuteStatementInput) ComAmazonawsDynamodbTypes.BatchExecuteStatementInput { + return func() ComAmazonawsDynamodbTypes.BatchExecuteStatementInput { + + return ComAmazonawsDynamodbTypes.Companion_BatchExecuteStatementInput_.Create_BatchExecuteStatementInput_(comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_BatchExecuteStatementInput_Statements_ToDafny(input.Statements), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_BatchExecuteStatementInput_ReturnConsumedCapacity_ToDafny(input.ReturnConsumedCapacity)) + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_BatchExecuteStatementInputTransformOutput_transformedInput_ToDafny(input dynamodb.BatchExecuteStatementInput) ComAmazonawsDynamodbTypes.BatchExecuteStatementInput { + return func() ComAmazonawsDynamodbTypes.BatchExecuteStatementInput { + + return ComAmazonawsDynamodbTypes.Companion_BatchExecuteStatementInput_.Create_BatchExecuteStatementInput_(comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_BatchExecuteStatementInput_Statements_ToDafny(input.Statements), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_BatchExecuteStatementInput_ReturnConsumedCapacity_ToDafny(input.ReturnConsumedCapacity)) + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_BatchExecuteStatementOutputTransformInput_sdkOutput_ToDafny(input dynamodb.BatchExecuteStatementOutput) ComAmazonawsDynamodbTypes.BatchExecuteStatementOutput { + return func() ComAmazonawsDynamodbTypes.BatchExecuteStatementOutput { + + return ComAmazonawsDynamodbTypes.Companion_BatchExecuteStatementOutput_.Create_BatchExecuteStatementOutput_(comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_BatchExecuteStatementOutput_Responses_ToDafny(input.Responses), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_BatchExecuteStatementOutput_ConsumedCapacity_ToDafny(input.ConsumedCapacity)) + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_BatchExecuteStatementOutputTransformInput_originalInput_ToDafny(input dynamodb.BatchExecuteStatementInput) ComAmazonawsDynamodbTypes.BatchExecuteStatementInput { + return func() ComAmazonawsDynamodbTypes.BatchExecuteStatementInput { + + return ComAmazonawsDynamodbTypes.Companion_BatchExecuteStatementInput_.Create_BatchExecuteStatementInput_(comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_BatchExecuteStatementInput_Statements_ToDafny(input.Statements), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_BatchExecuteStatementInput_ReturnConsumedCapacity_ToDafny(input.ReturnConsumedCapacity)) + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_BatchExecuteStatementOutputTransformOutput_transformedOutput_ToDafny(input dynamodb.BatchExecuteStatementOutput) ComAmazonawsDynamodbTypes.BatchExecuteStatementOutput { + return func() ComAmazonawsDynamodbTypes.BatchExecuteStatementOutput { + + return ComAmazonawsDynamodbTypes.Companion_BatchExecuteStatementOutput_.Create_BatchExecuteStatementOutput_(comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_BatchExecuteStatementOutput_Responses_ToDafny(input.Responses), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_BatchExecuteStatementOutput_ConsumedCapacity_ToDafny(input.ConsumedCapacity)) + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_BatchGetItemInputTransformInput_sdkInput_ToDafny(input dynamodb.BatchGetItemInput) ComAmazonawsDynamodbTypes.BatchGetItemInput { + return func() ComAmazonawsDynamodbTypes.BatchGetItemInput { + + return ComAmazonawsDynamodbTypes.Companion_BatchGetItemInput_.Create_BatchGetItemInput_(comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_BatchGetItemInput_RequestItems_ToDafny(input.RequestItems), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_BatchGetItemInput_ReturnConsumedCapacity_ToDafny(input.ReturnConsumedCapacity)) + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_BatchGetItemInputTransformOutput_transformedInput_ToDafny(input dynamodb.BatchGetItemInput) ComAmazonawsDynamodbTypes.BatchGetItemInput { + return func() ComAmazonawsDynamodbTypes.BatchGetItemInput { + + return ComAmazonawsDynamodbTypes.Companion_BatchGetItemInput_.Create_BatchGetItemInput_(comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_BatchGetItemInput_RequestItems_ToDafny(input.RequestItems), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_BatchGetItemInput_ReturnConsumedCapacity_ToDafny(input.ReturnConsumedCapacity)) + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_BatchGetItemOutputTransformInput_sdkOutput_ToDafny(input dynamodb.BatchGetItemOutput) ComAmazonawsDynamodbTypes.BatchGetItemOutput { + return func() ComAmazonawsDynamodbTypes.BatchGetItemOutput { + + return ComAmazonawsDynamodbTypes.Companion_BatchGetItemOutput_.Create_BatchGetItemOutput_(comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_BatchGetItemOutput_Responses_ToDafny(input.Responses), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_BatchGetItemOutput_UnprocessedKeys_ToDafny(input.UnprocessedKeys), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_BatchGetItemOutput_ConsumedCapacity_ToDafny(input.ConsumedCapacity)) + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_BatchGetItemOutputTransformInput_originalInput_ToDafny(input dynamodb.BatchGetItemInput) ComAmazonawsDynamodbTypes.BatchGetItemInput { + return func() ComAmazonawsDynamodbTypes.BatchGetItemInput { + + return ComAmazonawsDynamodbTypes.Companion_BatchGetItemInput_.Create_BatchGetItemInput_(comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_BatchGetItemInput_RequestItems_ToDafny(input.RequestItems), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_BatchGetItemInput_ReturnConsumedCapacity_ToDafny(input.ReturnConsumedCapacity)) + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_BatchGetItemOutputTransformOutput_transformedOutput_ToDafny(input dynamodb.BatchGetItemOutput) ComAmazonawsDynamodbTypes.BatchGetItemOutput { + return func() ComAmazonawsDynamodbTypes.BatchGetItemOutput { + + return ComAmazonawsDynamodbTypes.Companion_BatchGetItemOutput_.Create_BatchGetItemOutput_(comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_BatchGetItemOutput_Responses_ToDafny(input.Responses), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_BatchGetItemOutput_UnprocessedKeys_ToDafny(input.UnprocessedKeys), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_BatchGetItemOutput_ConsumedCapacity_ToDafny(input.ConsumedCapacity)) + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_BatchWriteItemInputTransformInput_sdkInput_ToDafny(input dynamodb.BatchWriteItemInput) ComAmazonawsDynamodbTypes.BatchWriteItemInput { + return func() ComAmazonawsDynamodbTypes.BatchWriteItemInput { + + return ComAmazonawsDynamodbTypes.Companion_BatchWriteItemInput_.Create_BatchWriteItemInput_(comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_BatchWriteItemInput_RequestItems_ToDafny(input.RequestItems), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_BatchWriteItemInput_ReturnConsumedCapacity_ToDafny(input.ReturnConsumedCapacity), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_BatchWriteItemInput_ReturnItemCollectionMetrics_ToDafny(input.ReturnItemCollectionMetrics)) + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_BatchWriteItemInputTransformOutput_transformedInput_ToDafny(input dynamodb.BatchWriteItemInput) ComAmazonawsDynamodbTypes.BatchWriteItemInput { + return func() ComAmazonawsDynamodbTypes.BatchWriteItemInput { + + return ComAmazonawsDynamodbTypes.Companion_BatchWriteItemInput_.Create_BatchWriteItemInput_(comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_BatchWriteItemInput_RequestItems_ToDafny(input.RequestItems), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_BatchWriteItemInput_ReturnConsumedCapacity_ToDafny(input.ReturnConsumedCapacity), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_BatchWriteItemInput_ReturnItemCollectionMetrics_ToDafny(input.ReturnItemCollectionMetrics)) + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_BatchWriteItemOutputTransformInput_sdkOutput_ToDafny(input dynamodb.BatchWriteItemOutput) ComAmazonawsDynamodbTypes.BatchWriteItemOutput { + return func() ComAmazonawsDynamodbTypes.BatchWriteItemOutput { + + return ComAmazonawsDynamodbTypes.Companion_BatchWriteItemOutput_.Create_BatchWriteItemOutput_(comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_BatchWriteItemOutput_UnprocessedItems_ToDafny(input.UnprocessedItems), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_BatchWriteItemOutput_ItemCollectionMetrics_ToDafny(input.ItemCollectionMetrics), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_BatchWriteItemOutput_ConsumedCapacity_ToDafny(input.ConsumedCapacity)) + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_BatchWriteItemOutputTransformInput_originalInput_ToDafny(input dynamodb.BatchWriteItemInput) ComAmazonawsDynamodbTypes.BatchWriteItemInput { + return func() ComAmazonawsDynamodbTypes.BatchWriteItemInput { + + return ComAmazonawsDynamodbTypes.Companion_BatchWriteItemInput_.Create_BatchWriteItemInput_(comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_BatchWriteItemInput_RequestItems_ToDafny(input.RequestItems), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_BatchWriteItemInput_ReturnConsumedCapacity_ToDafny(input.ReturnConsumedCapacity), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_BatchWriteItemInput_ReturnItemCollectionMetrics_ToDafny(input.ReturnItemCollectionMetrics)) + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_BatchWriteItemOutputTransformOutput_transformedOutput_ToDafny(input dynamodb.BatchWriteItemOutput) ComAmazonawsDynamodbTypes.BatchWriteItemOutput { + return func() ComAmazonawsDynamodbTypes.BatchWriteItemOutput { + + return ComAmazonawsDynamodbTypes.Companion_BatchWriteItemOutput_.Create_BatchWriteItemOutput_(comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_BatchWriteItemOutput_UnprocessedItems_ToDafny(input.UnprocessedItems), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_BatchWriteItemOutput_ItemCollectionMetrics_ToDafny(input.ItemCollectionMetrics), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_BatchWriteItemOutput_ConsumedCapacity_ToDafny(input.ConsumedCapacity)) + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_DeleteItemInputTransformInput_sdkInput_ToDafny(input dynamodb.DeleteItemInput) ComAmazonawsDynamodbTypes.DeleteItemInput { + return func() ComAmazonawsDynamodbTypes.DeleteItemInput { + + return ComAmazonawsDynamodbTypes.Companion_DeleteItemInput_.Create_DeleteItemInput_(comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_DeleteItemInput_TableName_ToDafny(input.TableName), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_DeleteItemInput_Key_ToDafny(input.Key), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_DeleteItemInput_Expected_ToDafny(input.Expected), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_DeleteItemInput_ConditionalOperator_ToDafny(input.ConditionalOperator), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_DeleteItemInput_ReturnValues_ToDafny(input.ReturnValues), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_DeleteItemInput_ReturnConsumedCapacity_ToDafny(input.ReturnConsumedCapacity), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_DeleteItemInput_ReturnItemCollectionMetrics_ToDafny(input.ReturnItemCollectionMetrics), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_DeleteItemInput_ConditionExpression_ToDafny(input.ConditionExpression), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_DeleteItemInput_ExpressionAttributeNames_ToDafny(input.ExpressionAttributeNames), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_DeleteItemInput_ExpressionAttributeValues_ToDafny(input.ExpressionAttributeValues), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_DeleteItemInput_ReturnValuesOnConditionCheckFailure_ToDafny(input.ReturnValuesOnConditionCheckFailure)) + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_DeleteItemInputTransformOutput_transformedInput_ToDafny(input dynamodb.DeleteItemInput) ComAmazonawsDynamodbTypes.DeleteItemInput { + return func() ComAmazonawsDynamodbTypes.DeleteItemInput { + + return ComAmazonawsDynamodbTypes.Companion_DeleteItemInput_.Create_DeleteItemInput_(comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_DeleteItemInput_TableName_ToDafny(input.TableName), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_DeleteItemInput_Key_ToDafny(input.Key), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_DeleteItemInput_Expected_ToDafny(input.Expected), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_DeleteItemInput_ConditionalOperator_ToDafny(input.ConditionalOperator), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_DeleteItemInput_ReturnValues_ToDafny(input.ReturnValues), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_DeleteItemInput_ReturnConsumedCapacity_ToDafny(input.ReturnConsumedCapacity), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_DeleteItemInput_ReturnItemCollectionMetrics_ToDafny(input.ReturnItemCollectionMetrics), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_DeleteItemInput_ConditionExpression_ToDafny(input.ConditionExpression), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_DeleteItemInput_ExpressionAttributeNames_ToDafny(input.ExpressionAttributeNames), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_DeleteItemInput_ExpressionAttributeValues_ToDafny(input.ExpressionAttributeValues), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_DeleteItemInput_ReturnValuesOnConditionCheckFailure_ToDafny(input.ReturnValuesOnConditionCheckFailure)) + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_DeleteItemOutputTransformInput_sdkOutput_ToDafny(input dynamodb.DeleteItemOutput) ComAmazonawsDynamodbTypes.DeleteItemOutput { + return func() ComAmazonawsDynamodbTypes.DeleteItemOutput { + + return ComAmazonawsDynamodbTypes.Companion_DeleteItemOutput_.Create_DeleteItemOutput_(comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_DeleteItemOutput_Attributes_ToDafny(input.Attributes), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_DeleteItemOutput_ConsumedCapacity_ToDafny(input.ConsumedCapacity), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_DeleteItemOutput_ItemCollectionMetrics_ToDafny(input.ItemCollectionMetrics)) + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_DeleteItemOutputTransformInput_originalInput_ToDafny(input dynamodb.DeleteItemInput) ComAmazonawsDynamodbTypes.DeleteItemInput { + return func() ComAmazonawsDynamodbTypes.DeleteItemInput { + + return ComAmazonawsDynamodbTypes.Companion_DeleteItemInput_.Create_DeleteItemInput_(comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_DeleteItemInput_TableName_ToDafny(input.TableName), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_DeleteItemInput_Key_ToDafny(input.Key), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_DeleteItemInput_Expected_ToDafny(input.Expected), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_DeleteItemInput_ConditionalOperator_ToDafny(input.ConditionalOperator), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_DeleteItemInput_ReturnValues_ToDafny(input.ReturnValues), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_DeleteItemInput_ReturnConsumedCapacity_ToDafny(input.ReturnConsumedCapacity), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_DeleteItemInput_ReturnItemCollectionMetrics_ToDafny(input.ReturnItemCollectionMetrics), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_DeleteItemInput_ConditionExpression_ToDafny(input.ConditionExpression), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_DeleteItemInput_ExpressionAttributeNames_ToDafny(input.ExpressionAttributeNames), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_DeleteItemInput_ExpressionAttributeValues_ToDafny(input.ExpressionAttributeValues), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_DeleteItemInput_ReturnValuesOnConditionCheckFailure_ToDafny(input.ReturnValuesOnConditionCheckFailure)) + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_DeleteItemOutputTransformOutput_transformedOutput_ToDafny(input dynamodb.DeleteItemOutput) ComAmazonawsDynamodbTypes.DeleteItemOutput { + return func() ComAmazonawsDynamodbTypes.DeleteItemOutput { + + return ComAmazonawsDynamodbTypes.Companion_DeleteItemOutput_.Create_DeleteItemOutput_(comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_DeleteItemOutput_Attributes_ToDafny(input.Attributes), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_DeleteItemOutput_ConsumedCapacity_ToDafny(input.ConsumedCapacity), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_DeleteItemOutput_ItemCollectionMetrics_ToDafny(input.ItemCollectionMetrics)) + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_ExecuteStatementInputTransformInput_sdkInput_ToDafny(input dynamodb.ExecuteStatementInput) ComAmazonawsDynamodbTypes.ExecuteStatementInput { + return func() ComAmazonawsDynamodbTypes.ExecuteStatementInput { + + return ComAmazonawsDynamodbTypes.Companion_ExecuteStatementInput_.Create_ExecuteStatementInput_(comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ExecuteStatementInput_Statement_ToDafny(input.Statement), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ExecuteStatementInput_Parameters_ToDafny(input.Parameters), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ExecuteStatementInput_ConsistentRead_ToDafny(input.ConsistentRead), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ExecuteStatementInput_NextToken_ToDafny(input.NextToken), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ExecuteStatementInput_ReturnConsumedCapacity_ToDafny(input.ReturnConsumedCapacity), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ExecuteStatementInput_Limit_ToDafny(input.Limit), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ExecuteStatementInput_ReturnValuesOnConditionCheckFailure_ToDafny(input.ReturnValuesOnConditionCheckFailure)) + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_ExecuteStatementInputTransformOutput_transformedInput_ToDafny(input dynamodb.ExecuteStatementInput) ComAmazonawsDynamodbTypes.ExecuteStatementInput { + return func() ComAmazonawsDynamodbTypes.ExecuteStatementInput { + + return ComAmazonawsDynamodbTypes.Companion_ExecuteStatementInput_.Create_ExecuteStatementInput_(comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ExecuteStatementInput_Statement_ToDafny(input.Statement), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ExecuteStatementInput_Parameters_ToDafny(input.Parameters), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ExecuteStatementInput_ConsistentRead_ToDafny(input.ConsistentRead), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ExecuteStatementInput_NextToken_ToDafny(input.NextToken), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ExecuteStatementInput_ReturnConsumedCapacity_ToDafny(input.ReturnConsumedCapacity), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ExecuteStatementInput_Limit_ToDafny(input.Limit), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ExecuteStatementInput_ReturnValuesOnConditionCheckFailure_ToDafny(input.ReturnValuesOnConditionCheckFailure)) + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_ExecuteStatementOutputTransformInput_sdkOutput_ToDafny(input dynamodb.ExecuteStatementOutput) ComAmazonawsDynamodbTypes.ExecuteStatementOutput { + return func() ComAmazonawsDynamodbTypes.ExecuteStatementOutput { + + return ComAmazonawsDynamodbTypes.Companion_ExecuteStatementOutput_.Create_ExecuteStatementOutput_(comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ExecuteStatementOutput_Items_ToDafny(input.Items), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ExecuteStatementOutput_NextToken_ToDafny(input.NextToken), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ExecuteStatementOutput_ConsumedCapacity_ToDafny(input.ConsumedCapacity), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ExecuteStatementOutput_LastEvaluatedKey_ToDafny(input.LastEvaluatedKey)) + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_ExecuteStatementOutputTransformInput_originalInput_ToDafny(input dynamodb.ExecuteStatementInput) ComAmazonawsDynamodbTypes.ExecuteStatementInput { + return func() ComAmazonawsDynamodbTypes.ExecuteStatementInput { + + return ComAmazonawsDynamodbTypes.Companion_ExecuteStatementInput_.Create_ExecuteStatementInput_(comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ExecuteStatementInput_Statement_ToDafny(input.Statement), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ExecuteStatementInput_Parameters_ToDafny(input.Parameters), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ExecuteStatementInput_ConsistentRead_ToDafny(input.ConsistentRead), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ExecuteStatementInput_NextToken_ToDafny(input.NextToken), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ExecuteStatementInput_ReturnConsumedCapacity_ToDafny(input.ReturnConsumedCapacity), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ExecuteStatementInput_Limit_ToDafny(input.Limit), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ExecuteStatementInput_ReturnValuesOnConditionCheckFailure_ToDafny(input.ReturnValuesOnConditionCheckFailure)) + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_ExecuteStatementOutputTransformOutput_transformedOutput_ToDafny(input dynamodb.ExecuteStatementOutput) ComAmazonawsDynamodbTypes.ExecuteStatementOutput { + return func() ComAmazonawsDynamodbTypes.ExecuteStatementOutput { + + return ComAmazonawsDynamodbTypes.Companion_ExecuteStatementOutput_.Create_ExecuteStatementOutput_(comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ExecuteStatementOutput_Items_ToDafny(input.Items), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ExecuteStatementOutput_NextToken_ToDafny(input.NextToken), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ExecuteStatementOutput_ConsumedCapacity_ToDafny(input.ConsumedCapacity), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ExecuteStatementOutput_LastEvaluatedKey_ToDafny(input.LastEvaluatedKey)) + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_ExecuteTransactionInputTransformInput_sdkInput_ToDafny(input dynamodb.ExecuteTransactionInput) ComAmazonawsDynamodbTypes.ExecuteTransactionInput { + return func() ComAmazonawsDynamodbTypes.ExecuteTransactionInput { + + return ComAmazonawsDynamodbTypes.Companion_ExecuteTransactionInput_.Create_ExecuteTransactionInput_(comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ExecuteTransactionInput_TransactStatements_ToDafny(input.TransactStatements), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ExecuteTransactionInput_ClientRequestToken_ToDafny(input.ClientRequestToken), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ExecuteTransactionInput_ReturnConsumedCapacity_ToDafny(input.ReturnConsumedCapacity)) + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_ExecuteTransactionInputTransformOutput_transformedInput_ToDafny(input dynamodb.ExecuteTransactionInput) ComAmazonawsDynamodbTypes.ExecuteTransactionInput { + return func() ComAmazonawsDynamodbTypes.ExecuteTransactionInput { + + return ComAmazonawsDynamodbTypes.Companion_ExecuteTransactionInput_.Create_ExecuteTransactionInput_(comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ExecuteTransactionInput_TransactStatements_ToDafny(input.TransactStatements), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ExecuteTransactionInput_ClientRequestToken_ToDafny(input.ClientRequestToken), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ExecuteTransactionInput_ReturnConsumedCapacity_ToDafny(input.ReturnConsumedCapacity)) + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_ExecuteTransactionOutputTransformInput_sdkOutput_ToDafny(input dynamodb.ExecuteTransactionOutput) ComAmazonawsDynamodbTypes.ExecuteTransactionOutput { + return func() ComAmazonawsDynamodbTypes.ExecuteTransactionOutput { + + return ComAmazonawsDynamodbTypes.Companion_ExecuteTransactionOutput_.Create_ExecuteTransactionOutput_(comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ExecuteTransactionOutput_Responses_ToDafny(input.Responses), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ExecuteTransactionOutput_ConsumedCapacity_ToDafny(input.ConsumedCapacity)) + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_ExecuteTransactionOutputTransformInput_originalInput_ToDafny(input dynamodb.ExecuteTransactionInput) ComAmazonawsDynamodbTypes.ExecuteTransactionInput { + return func() ComAmazonawsDynamodbTypes.ExecuteTransactionInput { + + return ComAmazonawsDynamodbTypes.Companion_ExecuteTransactionInput_.Create_ExecuteTransactionInput_(comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ExecuteTransactionInput_TransactStatements_ToDafny(input.TransactStatements), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ExecuteTransactionInput_ClientRequestToken_ToDafny(input.ClientRequestToken), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ExecuteTransactionInput_ReturnConsumedCapacity_ToDafny(input.ReturnConsumedCapacity)) + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_ExecuteTransactionOutputTransformOutput_transformedOutput_ToDafny(input dynamodb.ExecuteTransactionOutput) ComAmazonawsDynamodbTypes.ExecuteTransactionOutput { + return func() ComAmazonawsDynamodbTypes.ExecuteTransactionOutput { + + return ComAmazonawsDynamodbTypes.Companion_ExecuteTransactionOutput_.Create_ExecuteTransactionOutput_(comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ExecuteTransactionOutput_Responses_ToDafny(input.Responses), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ExecuteTransactionOutput_ConsumedCapacity_ToDafny(input.ConsumedCapacity)) + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_GetItemInputTransformInput_sdkInput_ToDafny(input dynamodb.GetItemInput) ComAmazonawsDynamodbTypes.GetItemInput { + return func() ComAmazonawsDynamodbTypes.GetItemInput { + + return ComAmazonawsDynamodbTypes.Companion_GetItemInput_.Create_GetItemInput_(comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_GetItemInput_TableName_ToDafny(input.TableName), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_GetItemInput_Key_ToDafny(input.Key), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_GetItemInput_AttributesToGet_ToDafny(input.AttributesToGet), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_GetItemInput_ConsistentRead_ToDafny(input.ConsistentRead), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_GetItemInput_ReturnConsumedCapacity_ToDafny(input.ReturnConsumedCapacity), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_GetItemInput_ProjectionExpression_ToDafny(input.ProjectionExpression), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_GetItemInput_ExpressionAttributeNames_ToDafny(input.ExpressionAttributeNames)) + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_GetItemInputTransformOutput_transformedInput_ToDafny(input dynamodb.GetItemInput) ComAmazonawsDynamodbTypes.GetItemInput { + return func() ComAmazonawsDynamodbTypes.GetItemInput { + + return ComAmazonawsDynamodbTypes.Companion_GetItemInput_.Create_GetItemInput_(comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_GetItemInput_TableName_ToDafny(input.TableName), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_GetItemInput_Key_ToDafny(input.Key), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_GetItemInput_AttributesToGet_ToDafny(input.AttributesToGet), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_GetItemInput_ConsistentRead_ToDafny(input.ConsistentRead), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_GetItemInput_ReturnConsumedCapacity_ToDafny(input.ReturnConsumedCapacity), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_GetItemInput_ProjectionExpression_ToDafny(input.ProjectionExpression), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_GetItemInput_ExpressionAttributeNames_ToDafny(input.ExpressionAttributeNames)) + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_GetItemOutputTransformInput_sdkOutput_ToDafny(input dynamodb.GetItemOutput) ComAmazonawsDynamodbTypes.GetItemOutput { + return func() ComAmazonawsDynamodbTypes.GetItemOutput { + + return ComAmazonawsDynamodbTypes.Companion_GetItemOutput_.Create_GetItemOutput_(comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_GetItemOutput_Item_ToDafny(input.Item), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_GetItemOutput_ConsumedCapacity_ToDafny(input.ConsumedCapacity)) + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_GetItemOutputTransformInput_originalInput_ToDafny(input dynamodb.GetItemInput) ComAmazonawsDynamodbTypes.GetItemInput { + return func() ComAmazonawsDynamodbTypes.GetItemInput { + + return ComAmazonawsDynamodbTypes.Companion_GetItemInput_.Create_GetItemInput_(comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_GetItemInput_TableName_ToDafny(input.TableName), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_GetItemInput_Key_ToDafny(input.Key), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_GetItemInput_AttributesToGet_ToDafny(input.AttributesToGet), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_GetItemInput_ConsistentRead_ToDafny(input.ConsistentRead), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_GetItemInput_ReturnConsumedCapacity_ToDafny(input.ReturnConsumedCapacity), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_GetItemInput_ProjectionExpression_ToDafny(input.ProjectionExpression), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_GetItemInput_ExpressionAttributeNames_ToDafny(input.ExpressionAttributeNames)) + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_GetItemOutputTransformOutput_transformedOutput_ToDafny(input dynamodb.GetItemOutput) ComAmazonawsDynamodbTypes.GetItemOutput { + return func() ComAmazonawsDynamodbTypes.GetItemOutput { + + return ComAmazonawsDynamodbTypes.Companion_GetItemOutput_.Create_GetItemOutput_(comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_GetItemOutput_Item_ToDafny(input.Item), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_GetItemOutput_ConsumedCapacity_ToDafny(input.ConsumedCapacity)) + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_PutItemInputTransformInput_sdkInput_ToDafny(input dynamodb.PutItemInput) ComAmazonawsDynamodbTypes.PutItemInput { + return func() ComAmazonawsDynamodbTypes.PutItemInput { + + return ComAmazonawsDynamodbTypes.Companion_PutItemInput_.Create_PutItemInput_(comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_PutItemInput_TableName_ToDafny(input.TableName), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_PutItemInput_Item_ToDafny(input.Item), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_PutItemInput_Expected_ToDafny(input.Expected), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_PutItemInput_ReturnValues_ToDafny(input.ReturnValues), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_PutItemInput_ReturnConsumedCapacity_ToDafny(input.ReturnConsumedCapacity), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_PutItemInput_ReturnItemCollectionMetrics_ToDafny(input.ReturnItemCollectionMetrics), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_PutItemInput_ConditionalOperator_ToDafny(input.ConditionalOperator), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_PutItemInput_ConditionExpression_ToDafny(input.ConditionExpression), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_PutItemInput_ExpressionAttributeNames_ToDafny(input.ExpressionAttributeNames), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_PutItemInput_ExpressionAttributeValues_ToDafny(input.ExpressionAttributeValues), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_PutItemInput_ReturnValuesOnConditionCheckFailure_ToDafny(input.ReturnValuesOnConditionCheckFailure)) + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_PutItemInputTransformOutput_transformedInput_ToDafny(input dynamodb.PutItemInput) ComAmazonawsDynamodbTypes.PutItemInput { + return func() ComAmazonawsDynamodbTypes.PutItemInput { + + return ComAmazonawsDynamodbTypes.Companion_PutItemInput_.Create_PutItemInput_(comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_PutItemInput_TableName_ToDafny(input.TableName), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_PutItemInput_Item_ToDafny(input.Item), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_PutItemInput_Expected_ToDafny(input.Expected), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_PutItemInput_ReturnValues_ToDafny(input.ReturnValues), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_PutItemInput_ReturnConsumedCapacity_ToDafny(input.ReturnConsumedCapacity), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_PutItemInput_ReturnItemCollectionMetrics_ToDafny(input.ReturnItemCollectionMetrics), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_PutItemInput_ConditionalOperator_ToDafny(input.ConditionalOperator), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_PutItemInput_ConditionExpression_ToDafny(input.ConditionExpression), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_PutItemInput_ExpressionAttributeNames_ToDafny(input.ExpressionAttributeNames), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_PutItemInput_ExpressionAttributeValues_ToDafny(input.ExpressionAttributeValues), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_PutItemInput_ReturnValuesOnConditionCheckFailure_ToDafny(input.ReturnValuesOnConditionCheckFailure)) + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_PutItemOutputTransformInput_sdkOutput_ToDafny(input dynamodb.PutItemOutput) ComAmazonawsDynamodbTypes.PutItemOutput { + return func() ComAmazonawsDynamodbTypes.PutItemOutput { + + return ComAmazonawsDynamodbTypes.Companion_PutItemOutput_.Create_PutItemOutput_(comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_PutItemOutput_Attributes_ToDafny(input.Attributes), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_PutItemOutput_ConsumedCapacity_ToDafny(input.ConsumedCapacity), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_PutItemOutput_ItemCollectionMetrics_ToDafny(input.ItemCollectionMetrics)) + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_PutItemOutputTransformInput_originalInput_ToDafny(input dynamodb.PutItemInput) ComAmazonawsDynamodbTypes.PutItemInput { + return func() ComAmazonawsDynamodbTypes.PutItemInput { + + return ComAmazonawsDynamodbTypes.Companion_PutItemInput_.Create_PutItemInput_(comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_PutItemInput_TableName_ToDafny(input.TableName), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_PutItemInput_Item_ToDafny(input.Item), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_PutItemInput_Expected_ToDafny(input.Expected), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_PutItemInput_ReturnValues_ToDafny(input.ReturnValues), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_PutItemInput_ReturnConsumedCapacity_ToDafny(input.ReturnConsumedCapacity), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_PutItemInput_ReturnItemCollectionMetrics_ToDafny(input.ReturnItemCollectionMetrics), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_PutItemInput_ConditionalOperator_ToDafny(input.ConditionalOperator), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_PutItemInput_ConditionExpression_ToDafny(input.ConditionExpression), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_PutItemInput_ExpressionAttributeNames_ToDafny(input.ExpressionAttributeNames), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_PutItemInput_ExpressionAttributeValues_ToDafny(input.ExpressionAttributeValues), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_PutItemInput_ReturnValuesOnConditionCheckFailure_ToDafny(input.ReturnValuesOnConditionCheckFailure)) + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_PutItemOutputTransformOutput_transformedOutput_ToDafny(input dynamodb.PutItemOutput) ComAmazonawsDynamodbTypes.PutItemOutput { + return func() ComAmazonawsDynamodbTypes.PutItemOutput { + + return ComAmazonawsDynamodbTypes.Companion_PutItemOutput_.Create_PutItemOutput_(comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_PutItemOutput_Attributes_ToDafny(input.Attributes), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_PutItemOutput_ConsumedCapacity_ToDafny(input.ConsumedCapacity), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_PutItemOutput_ItemCollectionMetrics_ToDafny(input.ItemCollectionMetrics)) + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_QueryInputTransformInput_sdkInput_ToDafny(input dynamodb.QueryInput) ComAmazonawsDynamodbTypes.QueryInput { + return func() ComAmazonawsDynamodbTypes.QueryInput { + + return ComAmazonawsDynamodbTypes.Companion_QueryInput_.Create_QueryInput_(comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_QueryInput_TableName_ToDafny(input.TableName), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_QueryInput_IndexName_ToDafny(input.IndexName), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_QueryInput_Select_ToDafny(input.Select), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_QueryInput_AttributesToGet_ToDafny(input.AttributesToGet), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_QueryInput_Limit_ToDafny(input.Limit), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_QueryInput_ConsistentRead_ToDafny(input.ConsistentRead), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_QueryInput_KeyConditions_ToDafny(input.KeyConditions), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_QueryInput_QueryFilter_ToDafny(input.QueryFilter), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_QueryInput_ConditionalOperator_ToDafny(input.ConditionalOperator), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_QueryInput_ScanIndexForward_ToDafny(input.ScanIndexForward), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_QueryInput_ExclusiveStartKey_ToDafny(input.ExclusiveStartKey), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_QueryInput_ReturnConsumedCapacity_ToDafny(input.ReturnConsumedCapacity), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_QueryInput_ProjectionExpression_ToDafny(input.ProjectionExpression), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_QueryInput_FilterExpression_ToDafny(input.FilterExpression), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_QueryInput_KeyConditionExpression_ToDafny(input.KeyConditionExpression), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_QueryInput_ExpressionAttributeNames_ToDafny(input.ExpressionAttributeNames), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_QueryInput_ExpressionAttributeValues_ToDafny(input.ExpressionAttributeValues)) + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_QueryInputTransformOutput_transformedInput_ToDafny(input dynamodb.QueryInput) ComAmazonawsDynamodbTypes.QueryInput { + return func() ComAmazonawsDynamodbTypes.QueryInput { + + return ComAmazonawsDynamodbTypes.Companion_QueryInput_.Create_QueryInput_(comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_QueryInput_TableName_ToDafny(input.TableName), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_QueryInput_IndexName_ToDafny(input.IndexName), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_QueryInput_Select_ToDafny(input.Select), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_QueryInput_AttributesToGet_ToDafny(input.AttributesToGet), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_QueryInput_Limit_ToDafny(input.Limit), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_QueryInput_ConsistentRead_ToDafny(input.ConsistentRead), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_QueryInput_KeyConditions_ToDafny(input.KeyConditions), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_QueryInput_QueryFilter_ToDafny(input.QueryFilter), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_QueryInput_ConditionalOperator_ToDafny(input.ConditionalOperator), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_QueryInput_ScanIndexForward_ToDafny(input.ScanIndexForward), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_QueryInput_ExclusiveStartKey_ToDafny(input.ExclusiveStartKey), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_QueryInput_ReturnConsumedCapacity_ToDafny(input.ReturnConsumedCapacity), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_QueryInput_ProjectionExpression_ToDafny(input.ProjectionExpression), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_QueryInput_FilterExpression_ToDafny(input.FilterExpression), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_QueryInput_KeyConditionExpression_ToDafny(input.KeyConditionExpression), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_QueryInput_ExpressionAttributeNames_ToDafny(input.ExpressionAttributeNames), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_QueryInput_ExpressionAttributeValues_ToDafny(input.ExpressionAttributeValues)) + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_QueryOutputTransformInput_sdkOutput_ToDafny(input dynamodb.QueryOutput) ComAmazonawsDynamodbTypes.QueryOutput { + return func() ComAmazonawsDynamodbTypes.QueryOutput { + + return ComAmazonawsDynamodbTypes.Companion_QueryOutput_.Create_QueryOutput_(comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_QueryOutput_Items_ToDafny(input.Items), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_QueryOutput_Count_ToDafny(input.Count), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_QueryOutput_ScannedCount_ToDafny(input.ScannedCount), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_QueryOutput_LastEvaluatedKey_ToDafny(input.LastEvaluatedKey), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_QueryOutput_ConsumedCapacity_ToDafny(input.ConsumedCapacity)) + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_QueryOutputTransformInput_originalInput_ToDafny(input dynamodb.QueryInput) ComAmazonawsDynamodbTypes.QueryInput { + return func() ComAmazonawsDynamodbTypes.QueryInput { + + return ComAmazonawsDynamodbTypes.Companion_QueryInput_.Create_QueryInput_(comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_QueryInput_TableName_ToDafny(input.TableName), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_QueryInput_IndexName_ToDafny(input.IndexName), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_QueryInput_Select_ToDafny(input.Select), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_QueryInput_AttributesToGet_ToDafny(input.AttributesToGet), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_QueryInput_Limit_ToDafny(input.Limit), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_QueryInput_ConsistentRead_ToDafny(input.ConsistentRead), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_QueryInput_KeyConditions_ToDafny(input.KeyConditions), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_QueryInput_QueryFilter_ToDafny(input.QueryFilter), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_QueryInput_ConditionalOperator_ToDafny(input.ConditionalOperator), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_QueryInput_ScanIndexForward_ToDafny(input.ScanIndexForward), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_QueryInput_ExclusiveStartKey_ToDafny(input.ExclusiveStartKey), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_QueryInput_ReturnConsumedCapacity_ToDafny(input.ReturnConsumedCapacity), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_QueryInput_ProjectionExpression_ToDafny(input.ProjectionExpression), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_QueryInput_FilterExpression_ToDafny(input.FilterExpression), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_QueryInput_KeyConditionExpression_ToDafny(input.KeyConditionExpression), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_QueryInput_ExpressionAttributeNames_ToDafny(input.ExpressionAttributeNames), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_QueryInput_ExpressionAttributeValues_ToDafny(input.ExpressionAttributeValues)) + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_QueryOutputTransformOutput_transformedOutput_ToDafny(input dynamodb.QueryOutput) ComAmazonawsDynamodbTypes.QueryOutput { + return func() ComAmazonawsDynamodbTypes.QueryOutput { + + return ComAmazonawsDynamodbTypes.Companion_QueryOutput_.Create_QueryOutput_(comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_QueryOutput_Items_ToDafny(input.Items), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_QueryOutput_Count_ToDafny(input.Count), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_QueryOutput_ScannedCount_ToDafny(input.ScannedCount), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_QueryOutput_LastEvaluatedKey_ToDafny(input.LastEvaluatedKey), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_QueryOutput_ConsumedCapacity_ToDafny(input.ConsumedCapacity)) + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_ResolveAttributesInput_TableName_ToDafny(input string) dafny.Sequence { + return func() dafny.Sequence { + + return func() dafny.Sequence { + res, err := UTF8.DecodeFromNativeGoByteArray([]byte(input)) + if err != nil { + panic("invalid utf8 input provided") + } + return res + }() + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_ResolveAttributesInput_Item_ToDafny(input map[string]dynamodbtypes.AttributeValue) dafny.Map { + return func() dafny.Map { + fieldValue := dafny.NewMapBuilder() + for key, val := range input { + fieldValue.Add(comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_AttributeMap_key_ToDafny(key), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_AttributeMap_value_ToDafny(val)) + } + return fieldValue.ToMap() + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_ResolveAttributesInput_Version_ToDafny(input *int32) Wrappers.Option { + return func() Wrappers.Option { + if input == nil { + return Wrappers.Companion_Option_.Create_None_() + } + return Wrappers.Companion_Option_.Create_Some_(*input) + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_ResolveAttributesOutput_VirtualFields_ToDafny(input map[string]string) dafny.Map { + return func() dafny.Map { + fieldValue := dafny.NewMapBuilder() + for key, val := range input { + fieldValue.Add(Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_StringMap_key_ToDafny(key), Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_StringMap_value_ToDafny(val)) + } + return fieldValue.ToMap() + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_StringMap_key_ToDafny(input string) dafny.Sequence { + return func() dafny.Sequence { + + return func() dafny.Sequence { + res, err := UTF8.DecodeFromNativeGoByteArray([]byte(input)) + if err != nil { + panic("invalid utf8 input provided") + } + return res + }() + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_StringMap_value_ToDafny(input string) dafny.Sequence { + return func() dafny.Sequence { + + return func() dafny.Sequence { + res, err := UTF8.DecodeFromNativeGoByteArray([]byte(input)) + if err != nil { + panic("invalid utf8 input provided") + } + return res + }() + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_ResolveAttributesOutput_CompoundBeacons_ToDafny(input map[string]string) dafny.Map { + return func() dafny.Map { + fieldValue := dafny.NewMapBuilder() + for key, val := range input { + fieldValue.Add(Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_StringMap_key_ToDafny(key), Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_StringMap_value_ToDafny(val)) + } + return fieldValue.ToMap() + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_ScanInputTransformInput_sdkInput_ToDafny(input dynamodb.ScanInput) ComAmazonawsDynamodbTypes.ScanInput { + return func() ComAmazonawsDynamodbTypes.ScanInput { + + return ComAmazonawsDynamodbTypes.Companion_ScanInput_.Create_ScanInput_(comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ScanInput_TableName_ToDafny(input.TableName), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ScanInput_IndexName_ToDafny(input.IndexName), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ScanInput_AttributesToGet_ToDafny(input.AttributesToGet), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ScanInput_Limit_ToDafny(input.Limit), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ScanInput_Select_ToDafny(input.Select), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ScanInput_ScanFilter_ToDafny(input.ScanFilter), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ScanInput_ConditionalOperator_ToDafny(input.ConditionalOperator), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ScanInput_ExclusiveStartKey_ToDafny(input.ExclusiveStartKey), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ScanInput_ReturnConsumedCapacity_ToDafny(input.ReturnConsumedCapacity), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ScanInput_TotalSegments_ToDafny(input.TotalSegments), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ScanInput_Segment_ToDafny(input.Segment), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ScanInput_ProjectionExpression_ToDafny(input.ProjectionExpression), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ScanInput_FilterExpression_ToDafny(input.FilterExpression), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ScanInput_ExpressionAttributeNames_ToDafny(input.ExpressionAttributeNames), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ScanInput_ExpressionAttributeValues_ToDafny(input.ExpressionAttributeValues), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ScanInput_ConsistentRead_ToDafny(input.ConsistentRead)) + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_ScanInputTransformOutput_transformedInput_ToDafny(input dynamodb.ScanInput) ComAmazonawsDynamodbTypes.ScanInput { + return func() ComAmazonawsDynamodbTypes.ScanInput { + + return ComAmazonawsDynamodbTypes.Companion_ScanInput_.Create_ScanInput_(comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ScanInput_TableName_ToDafny(input.TableName), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ScanInput_IndexName_ToDafny(input.IndexName), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ScanInput_AttributesToGet_ToDafny(input.AttributesToGet), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ScanInput_Limit_ToDafny(input.Limit), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ScanInput_Select_ToDafny(input.Select), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ScanInput_ScanFilter_ToDafny(input.ScanFilter), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ScanInput_ConditionalOperator_ToDafny(input.ConditionalOperator), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ScanInput_ExclusiveStartKey_ToDafny(input.ExclusiveStartKey), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ScanInput_ReturnConsumedCapacity_ToDafny(input.ReturnConsumedCapacity), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ScanInput_TotalSegments_ToDafny(input.TotalSegments), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ScanInput_Segment_ToDafny(input.Segment), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ScanInput_ProjectionExpression_ToDafny(input.ProjectionExpression), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ScanInput_FilterExpression_ToDafny(input.FilterExpression), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ScanInput_ExpressionAttributeNames_ToDafny(input.ExpressionAttributeNames), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ScanInput_ExpressionAttributeValues_ToDafny(input.ExpressionAttributeValues), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ScanInput_ConsistentRead_ToDafny(input.ConsistentRead)) + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_ScanOutputTransformInput_sdkOutput_ToDafny(input dynamodb.ScanOutput) ComAmazonawsDynamodbTypes.ScanOutput { + return func() ComAmazonawsDynamodbTypes.ScanOutput { + + return ComAmazonawsDynamodbTypes.Companion_ScanOutput_.Create_ScanOutput_(comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ScanOutput_Items_ToDafny(input.Items), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ScanOutput_Count_ToDafny(input.Count), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ScanOutput_ScannedCount_ToDafny(input.ScannedCount), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ScanOutput_LastEvaluatedKey_ToDafny(input.LastEvaluatedKey), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ScanOutput_ConsumedCapacity_ToDafny(input.ConsumedCapacity)) + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_ScanOutputTransformInput_originalInput_ToDafny(input dynamodb.ScanInput) ComAmazonawsDynamodbTypes.ScanInput { + return func() ComAmazonawsDynamodbTypes.ScanInput { + + return ComAmazonawsDynamodbTypes.Companion_ScanInput_.Create_ScanInput_(comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ScanInput_TableName_ToDafny(input.TableName), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ScanInput_IndexName_ToDafny(input.IndexName), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ScanInput_AttributesToGet_ToDafny(input.AttributesToGet), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ScanInput_Limit_ToDafny(input.Limit), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ScanInput_Select_ToDafny(input.Select), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ScanInput_ScanFilter_ToDafny(input.ScanFilter), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ScanInput_ConditionalOperator_ToDafny(input.ConditionalOperator), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ScanInput_ExclusiveStartKey_ToDafny(input.ExclusiveStartKey), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ScanInput_ReturnConsumedCapacity_ToDafny(input.ReturnConsumedCapacity), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ScanInput_TotalSegments_ToDafny(input.TotalSegments), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ScanInput_Segment_ToDafny(input.Segment), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ScanInput_ProjectionExpression_ToDafny(input.ProjectionExpression), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ScanInput_FilterExpression_ToDafny(input.FilterExpression), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ScanInput_ExpressionAttributeNames_ToDafny(input.ExpressionAttributeNames), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ScanInput_ExpressionAttributeValues_ToDafny(input.ExpressionAttributeValues), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ScanInput_ConsistentRead_ToDafny(input.ConsistentRead)) + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_ScanOutputTransformOutput_transformedOutput_ToDafny(input dynamodb.ScanOutput) ComAmazonawsDynamodbTypes.ScanOutput { + return func() ComAmazonawsDynamodbTypes.ScanOutput { + + return ComAmazonawsDynamodbTypes.Companion_ScanOutput_.Create_ScanOutput_(comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ScanOutput_Items_ToDafny(input.Items), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ScanOutput_Count_ToDafny(input.Count), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ScanOutput_ScannedCount_ToDafny(input.ScannedCount), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ScanOutput_LastEvaluatedKey_ToDafny(input.LastEvaluatedKey), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ScanOutput_ConsumedCapacity_ToDafny(input.ConsumedCapacity)) + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_TransactGetItemsInputTransformInput_sdkInput_ToDafny(input dynamodb.TransactGetItemsInput) ComAmazonawsDynamodbTypes.TransactGetItemsInput { + return func() ComAmazonawsDynamodbTypes.TransactGetItemsInput { + + return ComAmazonawsDynamodbTypes.Companion_TransactGetItemsInput_.Create_TransactGetItemsInput_(comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_TransactGetItemsInput_TransactItems_ToDafny(input.TransactItems), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_TransactGetItemsInput_ReturnConsumedCapacity_ToDafny(input.ReturnConsumedCapacity)) + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_TransactGetItemsInputTransformOutput_transformedInput_ToDafny(input dynamodb.TransactGetItemsInput) ComAmazonawsDynamodbTypes.TransactGetItemsInput { + return func() ComAmazonawsDynamodbTypes.TransactGetItemsInput { + + return ComAmazonawsDynamodbTypes.Companion_TransactGetItemsInput_.Create_TransactGetItemsInput_(comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_TransactGetItemsInput_TransactItems_ToDafny(input.TransactItems), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_TransactGetItemsInput_ReturnConsumedCapacity_ToDafny(input.ReturnConsumedCapacity)) + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_TransactGetItemsOutputTransformInput_sdkOutput_ToDafny(input dynamodb.TransactGetItemsOutput) ComAmazonawsDynamodbTypes.TransactGetItemsOutput { + return func() ComAmazonawsDynamodbTypes.TransactGetItemsOutput { + + return ComAmazonawsDynamodbTypes.Companion_TransactGetItemsOutput_.Create_TransactGetItemsOutput_(comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_TransactGetItemsOutput_ConsumedCapacity_ToDafny(input.ConsumedCapacity), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_TransactGetItemsOutput_Responses_ToDafny(input.Responses)) + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_TransactGetItemsOutputTransformInput_originalInput_ToDafny(input dynamodb.TransactGetItemsInput) ComAmazonawsDynamodbTypes.TransactGetItemsInput { + return func() ComAmazonawsDynamodbTypes.TransactGetItemsInput { + + return ComAmazonawsDynamodbTypes.Companion_TransactGetItemsInput_.Create_TransactGetItemsInput_(comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_TransactGetItemsInput_TransactItems_ToDafny(input.TransactItems), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_TransactGetItemsInput_ReturnConsumedCapacity_ToDafny(input.ReturnConsumedCapacity)) + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_TransactGetItemsOutputTransformOutput_transformedOutput_ToDafny(input dynamodb.TransactGetItemsOutput) ComAmazonawsDynamodbTypes.TransactGetItemsOutput { + return func() ComAmazonawsDynamodbTypes.TransactGetItemsOutput { + + return ComAmazonawsDynamodbTypes.Companion_TransactGetItemsOutput_.Create_TransactGetItemsOutput_(comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_TransactGetItemsOutput_ConsumedCapacity_ToDafny(input.ConsumedCapacity), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_TransactGetItemsOutput_Responses_ToDafny(input.Responses)) + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_TransactWriteItemsInputTransformInput_sdkInput_ToDafny(input dynamodb.TransactWriteItemsInput) ComAmazonawsDynamodbTypes.TransactWriteItemsInput { + return func() ComAmazonawsDynamodbTypes.TransactWriteItemsInput { + + return ComAmazonawsDynamodbTypes.Companion_TransactWriteItemsInput_.Create_TransactWriteItemsInput_(comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_TransactWriteItemsInput_TransactItems_ToDafny(input.TransactItems), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_TransactWriteItemsInput_ReturnConsumedCapacity_ToDafny(input.ReturnConsumedCapacity), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_TransactWriteItemsInput_ReturnItemCollectionMetrics_ToDafny(input.ReturnItemCollectionMetrics), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_TransactWriteItemsInput_ClientRequestToken_ToDafny(input.ClientRequestToken)) + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_TransactWriteItemsInputTransformOutput_transformedInput_ToDafny(input dynamodb.TransactWriteItemsInput) ComAmazonawsDynamodbTypes.TransactWriteItemsInput { + return func() ComAmazonawsDynamodbTypes.TransactWriteItemsInput { + + return ComAmazonawsDynamodbTypes.Companion_TransactWriteItemsInput_.Create_TransactWriteItemsInput_(comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_TransactWriteItemsInput_TransactItems_ToDafny(input.TransactItems), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_TransactWriteItemsInput_ReturnConsumedCapacity_ToDafny(input.ReturnConsumedCapacity), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_TransactWriteItemsInput_ReturnItemCollectionMetrics_ToDafny(input.ReturnItemCollectionMetrics), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_TransactWriteItemsInput_ClientRequestToken_ToDafny(input.ClientRequestToken)) + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_TransactWriteItemsOutputTransformInput_sdkOutput_ToDafny(input dynamodb.TransactWriteItemsOutput) ComAmazonawsDynamodbTypes.TransactWriteItemsOutput { + return func() ComAmazonawsDynamodbTypes.TransactWriteItemsOutput { + + return ComAmazonawsDynamodbTypes.Companion_TransactWriteItemsOutput_.Create_TransactWriteItemsOutput_(comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_TransactWriteItemsOutput_ConsumedCapacity_ToDafny(input.ConsumedCapacity), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_TransactWriteItemsOutput_ItemCollectionMetrics_ToDafny(input.ItemCollectionMetrics)) + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_TransactWriteItemsOutputTransformInput_originalInput_ToDafny(input dynamodb.TransactWriteItemsInput) ComAmazonawsDynamodbTypes.TransactWriteItemsInput { + return func() ComAmazonawsDynamodbTypes.TransactWriteItemsInput { + + return ComAmazonawsDynamodbTypes.Companion_TransactWriteItemsInput_.Create_TransactWriteItemsInput_(comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_TransactWriteItemsInput_TransactItems_ToDafny(input.TransactItems), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_TransactWriteItemsInput_ReturnConsumedCapacity_ToDafny(input.ReturnConsumedCapacity), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_TransactWriteItemsInput_ReturnItemCollectionMetrics_ToDafny(input.ReturnItemCollectionMetrics), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_TransactWriteItemsInput_ClientRequestToken_ToDafny(input.ClientRequestToken)) + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_TransactWriteItemsOutputTransformOutput_transformedOutput_ToDafny(input dynamodb.TransactWriteItemsOutput) ComAmazonawsDynamodbTypes.TransactWriteItemsOutput { + return func() ComAmazonawsDynamodbTypes.TransactWriteItemsOutput { + + return ComAmazonawsDynamodbTypes.Companion_TransactWriteItemsOutput_.Create_TransactWriteItemsOutput_(comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_TransactWriteItemsOutput_ConsumedCapacity_ToDafny(input.ConsumedCapacity), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_TransactWriteItemsOutput_ItemCollectionMetrics_ToDafny(input.ItemCollectionMetrics)) + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_UpdateItemInputTransformInput_sdkInput_ToDafny(input dynamodb.UpdateItemInput) ComAmazonawsDynamodbTypes.UpdateItemInput { + return func() ComAmazonawsDynamodbTypes.UpdateItemInput { + + return ComAmazonawsDynamodbTypes.Companion_UpdateItemInput_.Create_UpdateItemInput_(comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_UpdateItemInput_TableName_ToDafny(input.TableName), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_UpdateItemInput_Key_ToDafny(input.Key), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_UpdateItemInput_AttributeUpdates_ToDafny(input.AttributeUpdates), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_UpdateItemInput_Expected_ToDafny(input.Expected), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_UpdateItemInput_ConditionalOperator_ToDafny(input.ConditionalOperator), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_UpdateItemInput_ReturnValues_ToDafny(input.ReturnValues), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_UpdateItemInput_ReturnConsumedCapacity_ToDafny(input.ReturnConsumedCapacity), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_UpdateItemInput_ReturnItemCollectionMetrics_ToDafny(input.ReturnItemCollectionMetrics), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_UpdateItemInput_UpdateExpression_ToDafny(input.UpdateExpression), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_UpdateItemInput_ConditionExpression_ToDafny(input.ConditionExpression), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_UpdateItemInput_ExpressionAttributeNames_ToDafny(input.ExpressionAttributeNames), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_UpdateItemInput_ExpressionAttributeValues_ToDafny(input.ExpressionAttributeValues), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_UpdateItemInput_ReturnValuesOnConditionCheckFailure_ToDafny(input.ReturnValuesOnConditionCheckFailure)) + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_UpdateItemInputTransformOutput_transformedInput_ToDafny(input dynamodb.UpdateItemInput) ComAmazonawsDynamodbTypes.UpdateItemInput { + return func() ComAmazonawsDynamodbTypes.UpdateItemInput { + + return ComAmazonawsDynamodbTypes.Companion_UpdateItemInput_.Create_UpdateItemInput_(comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_UpdateItemInput_TableName_ToDafny(input.TableName), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_UpdateItemInput_Key_ToDafny(input.Key), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_UpdateItemInput_AttributeUpdates_ToDafny(input.AttributeUpdates), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_UpdateItemInput_Expected_ToDafny(input.Expected), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_UpdateItemInput_ConditionalOperator_ToDafny(input.ConditionalOperator), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_UpdateItemInput_ReturnValues_ToDafny(input.ReturnValues), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_UpdateItemInput_ReturnConsumedCapacity_ToDafny(input.ReturnConsumedCapacity), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_UpdateItemInput_ReturnItemCollectionMetrics_ToDafny(input.ReturnItemCollectionMetrics), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_UpdateItemInput_UpdateExpression_ToDafny(input.UpdateExpression), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_UpdateItemInput_ConditionExpression_ToDafny(input.ConditionExpression), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_UpdateItemInput_ExpressionAttributeNames_ToDafny(input.ExpressionAttributeNames), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_UpdateItemInput_ExpressionAttributeValues_ToDafny(input.ExpressionAttributeValues), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_UpdateItemInput_ReturnValuesOnConditionCheckFailure_ToDafny(input.ReturnValuesOnConditionCheckFailure)) + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_UpdateItemOutputTransformInput_sdkOutput_ToDafny(input dynamodb.UpdateItemOutput) ComAmazonawsDynamodbTypes.UpdateItemOutput { + return func() ComAmazonawsDynamodbTypes.UpdateItemOutput { + + return ComAmazonawsDynamodbTypes.Companion_UpdateItemOutput_.Create_UpdateItemOutput_(comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_UpdateItemOutput_Attributes_ToDafny(input.Attributes), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_UpdateItemOutput_ConsumedCapacity_ToDafny(input.ConsumedCapacity), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_UpdateItemOutput_ItemCollectionMetrics_ToDafny(input.ItemCollectionMetrics)) + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_UpdateItemOutputTransformInput_originalInput_ToDafny(input dynamodb.UpdateItemInput) ComAmazonawsDynamodbTypes.UpdateItemInput { + return func() ComAmazonawsDynamodbTypes.UpdateItemInput { + + return ComAmazonawsDynamodbTypes.Companion_UpdateItemInput_.Create_UpdateItemInput_(comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_UpdateItemInput_TableName_ToDafny(input.TableName), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_UpdateItemInput_Key_ToDafny(input.Key), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_UpdateItemInput_AttributeUpdates_ToDafny(input.AttributeUpdates), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_UpdateItemInput_Expected_ToDafny(input.Expected), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_UpdateItemInput_ConditionalOperator_ToDafny(input.ConditionalOperator), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_UpdateItemInput_ReturnValues_ToDafny(input.ReturnValues), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_UpdateItemInput_ReturnConsumedCapacity_ToDafny(input.ReturnConsumedCapacity), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_UpdateItemInput_ReturnItemCollectionMetrics_ToDafny(input.ReturnItemCollectionMetrics), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_UpdateItemInput_UpdateExpression_ToDafny(input.UpdateExpression), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_UpdateItemInput_ConditionExpression_ToDafny(input.ConditionExpression), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_UpdateItemInput_ExpressionAttributeNames_ToDafny(input.ExpressionAttributeNames), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_UpdateItemInput_ExpressionAttributeValues_ToDafny(input.ExpressionAttributeValues), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_UpdateItemInput_ReturnValuesOnConditionCheckFailure_ToDafny(input.ReturnValuesOnConditionCheckFailure)) + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_UpdateItemOutputTransformOutput_transformedOutput_ToDafny(input dynamodb.UpdateItemOutput) ComAmazonawsDynamodbTypes.UpdateItemOutput { + return func() ComAmazonawsDynamodbTypes.UpdateItemOutput { + + return ComAmazonawsDynamodbTypes.Companion_UpdateItemOutput_.Create_UpdateItemOutput_(comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_UpdateItemOutput_Attributes_ToDafny(input.Attributes), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_UpdateItemOutput_ConsumedCapacity_ToDafny(input.ConsumedCapacity), comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_UpdateItemOutput_ItemCollectionMetrics_ToDafny(input.ItemCollectionMetrics)) + }() +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_DynamoDbEncryptionTransformsException_message_ToDafny(input string) dafny.Sequence { + return func() dafny.Sequence { + + return func() dafny.Sequence { + res, err := UTF8.DecodeFromNativeGoByteArray([]byte(input)) + if err != nil { + panic("invalid utf8 input provided") + } + return res + }() + }() +} diff --git a/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkdynamodbtransformssmithygenerated/to_native.go b/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkdynamodbtransformssmithygenerated/to_native.go new file mode 100644 index 000000000..07f78db78 --- /dev/null +++ b/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkdynamodbtransformssmithygenerated/to_native.go @@ -0,0 +1,1098 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package awscryptographydbencryptionsdkdynamodbtransformssmithygenerated + +import ( + "github.com/aws/aws-cryptographic-material-providers-library/releases/go/dynamodb/ComAmazonawsDynamodbTypes" + "github.com/aws/aws-cryptographic-material-providers-library/releases/go/dynamodb/comamazonawsdynamodbsmithygenerated" + "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/awscryptographymaterialproviderssmithygenerated" + "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/UTF8" + "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes" + "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkdynamodbitemencryptorsmithygenerated" + "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkdynamodbsmithygenerated" + "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes" + "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkstructuredencryptionsmithygenerated" + "github.com/aws/aws-sdk-go-v2/service/dynamodb" + dynamodbtypes "github.com/aws/aws-sdk-go-v2/service/dynamodb/types" + "github.com/dafny-lang/DafnyRuntimeGo/v4/dafny" +) + +func BatchExecuteStatementInputTransformInput_FromDafny(dafnyInput AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.BatchExecuteStatementInputTransformInput) awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.BatchExecuteStatementInputTransformInput { + + return awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.BatchExecuteStatementInputTransformInput{SdkInput: Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_BatchExecuteStatementInputTransformInput_sdkInput_FromDafny(dafnyInput.Dtor_sdkInput())} + +} + +func BatchExecuteStatementInputTransformOutput_FromDafny(dafnyOutput AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.BatchExecuteStatementInputTransformOutput) awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.BatchExecuteStatementInputTransformOutput { + + return awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.BatchExecuteStatementInputTransformOutput{TransformedInput: Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_BatchExecuteStatementInputTransformOutput_transformedInput_FromDafny(dafnyOutput.Dtor_transformedInput())} + +} + +func BatchExecuteStatementOutputTransformInput_FromDafny(dafnyInput AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.BatchExecuteStatementOutputTransformInput) awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.BatchExecuteStatementOutputTransformInput { + + return awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.BatchExecuteStatementOutputTransformInput{SdkOutput: Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_BatchExecuteStatementOutputTransformInput_sdkOutput_FromDafny(dafnyInput.Dtor_sdkOutput()), + OriginalInput: Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_BatchExecuteStatementOutputTransformInput_originalInput_FromDafny(dafnyInput.Dtor_originalInput()), + } + +} + +func BatchExecuteStatementOutputTransformOutput_FromDafny(dafnyOutput AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.BatchExecuteStatementOutputTransformOutput) awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.BatchExecuteStatementOutputTransformOutput { + + return awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.BatchExecuteStatementOutputTransformOutput{TransformedOutput: Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_BatchExecuteStatementOutputTransformOutput_transformedOutput_FromDafny(dafnyOutput.Dtor_transformedOutput())} + +} + +func BatchGetItemInputTransformInput_FromDafny(dafnyInput AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.BatchGetItemInputTransformInput) awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.BatchGetItemInputTransformInput { + + return awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.BatchGetItemInputTransformInput{SdkInput: Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_BatchGetItemInputTransformInput_sdkInput_FromDafny(dafnyInput.Dtor_sdkInput())} + +} + +func BatchGetItemInputTransformOutput_FromDafny(dafnyOutput AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.BatchGetItemInputTransformOutput) awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.BatchGetItemInputTransformOutput { + + return awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.BatchGetItemInputTransformOutput{TransformedInput: Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_BatchGetItemInputTransformOutput_transformedInput_FromDafny(dafnyOutput.Dtor_transformedInput())} + +} + +func BatchGetItemOutputTransformInput_FromDafny(dafnyInput AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.BatchGetItemOutputTransformInput) awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.BatchGetItemOutputTransformInput { + + return awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.BatchGetItemOutputTransformInput{SdkOutput: Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_BatchGetItemOutputTransformInput_sdkOutput_FromDafny(dafnyInput.Dtor_sdkOutput()), + OriginalInput: Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_BatchGetItemOutputTransformInput_originalInput_FromDafny(dafnyInput.Dtor_originalInput()), + } + +} + +func BatchGetItemOutputTransformOutput_FromDafny(dafnyOutput AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.BatchGetItemOutputTransformOutput) awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.BatchGetItemOutputTransformOutput { + + return awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.BatchGetItemOutputTransformOutput{TransformedOutput: Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_BatchGetItemOutputTransformOutput_transformedOutput_FromDafny(dafnyOutput.Dtor_transformedOutput())} + +} + +func BatchWriteItemInputTransformInput_FromDafny(dafnyInput AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.BatchWriteItemInputTransformInput) awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.BatchWriteItemInputTransformInput { + + return awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.BatchWriteItemInputTransformInput{SdkInput: Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_BatchWriteItemInputTransformInput_sdkInput_FromDafny(dafnyInput.Dtor_sdkInput())} + +} + +func BatchWriteItemInputTransformOutput_FromDafny(dafnyOutput AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.BatchWriteItemInputTransformOutput) awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.BatchWriteItemInputTransformOutput { + + return awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.BatchWriteItemInputTransformOutput{TransformedInput: Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_BatchWriteItemInputTransformOutput_transformedInput_FromDafny(dafnyOutput.Dtor_transformedInput())} + +} + +func BatchWriteItemOutputTransformInput_FromDafny(dafnyInput AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.BatchWriteItemOutputTransformInput) awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.BatchWriteItemOutputTransformInput { + + return awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.BatchWriteItemOutputTransformInput{SdkOutput: Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_BatchWriteItemOutputTransformInput_sdkOutput_FromDafny(dafnyInput.Dtor_sdkOutput()), + OriginalInput: Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_BatchWriteItemOutputTransformInput_originalInput_FromDafny(dafnyInput.Dtor_originalInput()), + } + +} + +func BatchWriteItemOutputTransformOutput_FromDafny(dafnyOutput AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.BatchWriteItemOutputTransformOutput) awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.BatchWriteItemOutputTransformOutput { + + return awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.BatchWriteItemOutputTransformOutput{TransformedOutput: Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_BatchWriteItemOutputTransformOutput_transformedOutput_FromDafny(dafnyOutput.Dtor_transformedOutput())} + +} + +func DeleteItemInputTransformInput_FromDafny(dafnyInput AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.DeleteItemInputTransformInput) awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.DeleteItemInputTransformInput { + + return awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.DeleteItemInputTransformInput{SdkInput: Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_DeleteItemInputTransformInput_sdkInput_FromDafny(dafnyInput.Dtor_sdkInput())} + +} + +func DeleteItemInputTransformOutput_FromDafny(dafnyOutput AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.DeleteItemInputTransformOutput) awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.DeleteItemInputTransformOutput { + + return awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.DeleteItemInputTransformOutput{TransformedInput: Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_DeleteItemInputTransformOutput_transformedInput_FromDafny(dafnyOutput.Dtor_transformedInput())} + +} + +func DeleteItemOutputTransformInput_FromDafny(dafnyInput AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.DeleteItemOutputTransformInput) awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.DeleteItemOutputTransformInput { + + return awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.DeleteItemOutputTransformInput{SdkOutput: Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_DeleteItemOutputTransformInput_sdkOutput_FromDafny(dafnyInput.Dtor_sdkOutput()), + OriginalInput: Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_DeleteItemOutputTransformInput_originalInput_FromDafny(dafnyInput.Dtor_originalInput()), + } + +} + +func DeleteItemOutputTransformOutput_FromDafny(dafnyOutput AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.DeleteItemOutputTransformOutput) awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.DeleteItemOutputTransformOutput { + + return awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.DeleteItemOutputTransformOutput{TransformedOutput: Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_DeleteItemOutputTransformOutput_transformedOutput_FromDafny(dafnyOutput.Dtor_transformedOutput())} + +} + +func ExecuteStatementInputTransformInput_FromDafny(dafnyInput AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.ExecuteStatementInputTransformInput) awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.ExecuteStatementInputTransformInput { + + return awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.ExecuteStatementInputTransformInput{SdkInput: Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_ExecuteStatementInputTransformInput_sdkInput_FromDafny(dafnyInput.Dtor_sdkInput())} + +} + +func ExecuteStatementInputTransformOutput_FromDafny(dafnyOutput AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.ExecuteStatementInputTransformOutput) awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.ExecuteStatementInputTransformOutput { + + return awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.ExecuteStatementInputTransformOutput{TransformedInput: Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_ExecuteStatementInputTransformOutput_transformedInput_FromDafny(dafnyOutput.Dtor_transformedInput())} + +} + +func ExecuteStatementOutputTransformInput_FromDafny(dafnyInput AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.ExecuteStatementOutputTransformInput) awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.ExecuteStatementOutputTransformInput { + + return awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.ExecuteStatementOutputTransformInput{SdkOutput: Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_ExecuteStatementOutputTransformInput_sdkOutput_FromDafny(dafnyInput.Dtor_sdkOutput()), + OriginalInput: Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_ExecuteStatementOutputTransformInput_originalInput_FromDafny(dafnyInput.Dtor_originalInput()), + } + +} + +func ExecuteStatementOutputTransformOutput_FromDafny(dafnyOutput AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.ExecuteStatementOutputTransformOutput) awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.ExecuteStatementOutputTransformOutput { + + return awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.ExecuteStatementOutputTransformOutput{TransformedOutput: Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_ExecuteStatementOutputTransformOutput_transformedOutput_FromDafny(dafnyOutput.Dtor_transformedOutput())} + +} + +func ExecuteTransactionInputTransformInput_FromDafny(dafnyInput AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.ExecuteTransactionInputTransformInput) awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.ExecuteTransactionInputTransformInput { + + return awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.ExecuteTransactionInputTransformInput{SdkInput: Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_ExecuteTransactionInputTransformInput_sdkInput_FromDafny(dafnyInput.Dtor_sdkInput())} + +} + +func ExecuteTransactionInputTransformOutput_FromDafny(dafnyOutput AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.ExecuteTransactionInputTransformOutput) awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.ExecuteTransactionInputTransformOutput { + + return awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.ExecuteTransactionInputTransformOutput{TransformedInput: Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_ExecuteTransactionInputTransformOutput_transformedInput_FromDafny(dafnyOutput.Dtor_transformedInput())} + +} + +func ExecuteTransactionOutputTransformInput_FromDafny(dafnyInput AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.ExecuteTransactionOutputTransformInput) awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.ExecuteTransactionOutputTransformInput { + + return awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.ExecuteTransactionOutputTransformInput{SdkOutput: Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_ExecuteTransactionOutputTransformInput_sdkOutput_FromDafny(dafnyInput.Dtor_sdkOutput()), + OriginalInput: Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_ExecuteTransactionOutputTransformInput_originalInput_FromDafny(dafnyInput.Dtor_originalInput()), + } + +} + +func ExecuteTransactionOutputTransformOutput_FromDafny(dafnyOutput AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.ExecuteTransactionOutputTransformOutput) awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.ExecuteTransactionOutputTransformOutput { + + return awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.ExecuteTransactionOutputTransformOutput{TransformedOutput: Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_ExecuteTransactionOutputTransformOutput_transformedOutput_FromDafny(dafnyOutput.Dtor_transformedOutput())} + +} + +func GetItemInputTransformInput_FromDafny(dafnyInput AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.GetItemInputTransformInput) awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.GetItemInputTransformInput { + + return awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.GetItemInputTransformInput{SdkInput: Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_GetItemInputTransformInput_sdkInput_FromDafny(dafnyInput.Dtor_sdkInput())} + +} + +func GetItemInputTransformOutput_FromDafny(dafnyOutput AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.GetItemInputTransformOutput) awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.GetItemInputTransformOutput { + + return awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.GetItemInputTransformOutput{TransformedInput: Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_GetItemInputTransformOutput_transformedInput_FromDafny(dafnyOutput.Dtor_transformedInput())} + +} + +func GetItemOutputTransformInput_FromDafny(dafnyInput AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.GetItemOutputTransformInput) awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.GetItemOutputTransformInput { + + return awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.GetItemOutputTransformInput{SdkOutput: Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_GetItemOutputTransformInput_sdkOutput_FromDafny(dafnyInput.Dtor_sdkOutput()), + OriginalInput: Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_GetItemOutputTransformInput_originalInput_FromDafny(dafnyInput.Dtor_originalInput()), + } + +} + +func GetItemOutputTransformOutput_FromDafny(dafnyOutput AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.GetItemOutputTransformOutput) awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.GetItemOutputTransformOutput { + + return awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.GetItemOutputTransformOutput{TransformedOutput: Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_GetItemOutputTransformOutput_transformedOutput_FromDafny(dafnyOutput.Dtor_transformedOutput())} + +} + +func PutItemInputTransformInput_FromDafny(dafnyInput AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.PutItemInputTransformInput) awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.PutItemInputTransformInput { + + return awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.PutItemInputTransformInput{SdkInput: Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_PutItemInputTransformInput_sdkInput_FromDafny(dafnyInput.Dtor_sdkInput())} + +} + +func PutItemInputTransformOutput_FromDafny(dafnyOutput AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.PutItemInputTransformOutput) awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.PutItemInputTransformOutput { + + return awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.PutItemInputTransformOutput{TransformedInput: Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_PutItemInputTransformOutput_transformedInput_FromDafny(dafnyOutput.Dtor_transformedInput())} + +} + +func PutItemOutputTransformInput_FromDafny(dafnyInput AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.PutItemOutputTransformInput) awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.PutItemOutputTransformInput { + + return awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.PutItemOutputTransformInput{SdkOutput: Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_PutItemOutputTransformInput_sdkOutput_FromDafny(dafnyInput.Dtor_sdkOutput()), + OriginalInput: Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_PutItemOutputTransformInput_originalInput_FromDafny(dafnyInput.Dtor_originalInput()), + } + +} + +func PutItemOutputTransformOutput_FromDafny(dafnyOutput AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.PutItemOutputTransformOutput) awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.PutItemOutputTransformOutput { + + return awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.PutItemOutputTransformOutput{TransformedOutput: Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_PutItemOutputTransformOutput_transformedOutput_FromDafny(dafnyOutput.Dtor_transformedOutput())} + +} + +func QueryInputTransformInput_FromDafny(dafnyInput AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.QueryInputTransformInput) awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.QueryInputTransformInput { + + return awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.QueryInputTransformInput{SdkInput: Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_QueryInputTransformInput_sdkInput_FromDafny(dafnyInput.Dtor_sdkInput())} + +} + +func QueryInputTransformOutput_FromDafny(dafnyOutput AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.QueryInputTransformOutput) awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.QueryInputTransformOutput { + + return awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.QueryInputTransformOutput{TransformedInput: Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_QueryInputTransformOutput_transformedInput_FromDafny(dafnyOutput.Dtor_transformedInput())} + +} + +func QueryOutputTransformInput_FromDafny(dafnyInput AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.QueryOutputTransformInput) awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.QueryOutputTransformInput { + + return awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.QueryOutputTransformInput{SdkOutput: Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_QueryOutputTransformInput_sdkOutput_FromDafny(dafnyInput.Dtor_sdkOutput()), + OriginalInput: Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_QueryOutputTransformInput_originalInput_FromDafny(dafnyInput.Dtor_originalInput()), + } + +} + +func QueryOutputTransformOutput_FromDafny(dafnyOutput AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.QueryOutputTransformOutput) awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.QueryOutputTransformOutput { + + return awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.QueryOutputTransformOutput{TransformedOutput: Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_QueryOutputTransformOutput_transformedOutput_FromDafny(dafnyOutput.Dtor_transformedOutput())} + +} + +func ResolveAttributesInput_FromDafny(dafnyInput AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.ResolveAttributesInput) awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.ResolveAttributesInput { + + return awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.ResolveAttributesInput{TableName: Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_ResolveAttributesInput_TableName_FromDafny(dafnyInput.Dtor_TableName()), + Item: Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_ResolveAttributesInput_Item_FromDafny(dafnyInput.Dtor_Item()), + Version: Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_ResolveAttributesInput_Version_FromDafny(dafnyInput.Dtor_Version().UnwrapOr(nil)), + } + +} + +func ResolveAttributesOutput_FromDafny(dafnyOutput AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.ResolveAttributesOutput) awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.ResolveAttributesOutput { + + return awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.ResolveAttributesOutput{VirtualFields: Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_ResolveAttributesOutput_VirtualFields_FromDafny(dafnyOutput.Dtor_VirtualFields()), + CompoundBeacons: Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_ResolveAttributesOutput_CompoundBeacons_FromDafny(dafnyOutput.Dtor_CompoundBeacons()), + } + +} + +func ScanInputTransformInput_FromDafny(dafnyInput AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.ScanInputTransformInput) awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.ScanInputTransformInput { + + return awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.ScanInputTransformInput{SdkInput: Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_ScanInputTransformInput_sdkInput_FromDafny(dafnyInput.Dtor_sdkInput())} + +} + +func ScanInputTransformOutput_FromDafny(dafnyOutput AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.ScanInputTransformOutput) awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.ScanInputTransformOutput { + + return awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.ScanInputTransformOutput{TransformedInput: Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_ScanInputTransformOutput_transformedInput_FromDafny(dafnyOutput.Dtor_transformedInput())} + +} + +func ScanOutputTransformInput_FromDafny(dafnyInput AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.ScanOutputTransformInput) awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.ScanOutputTransformInput { + + return awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.ScanOutputTransformInput{SdkOutput: Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_ScanOutputTransformInput_sdkOutput_FromDafny(dafnyInput.Dtor_sdkOutput()), + OriginalInput: Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_ScanOutputTransformInput_originalInput_FromDafny(dafnyInput.Dtor_originalInput()), + } + +} + +func ScanOutputTransformOutput_FromDafny(dafnyOutput AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.ScanOutputTransformOutput) awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.ScanOutputTransformOutput { + + return awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.ScanOutputTransformOutput{TransformedOutput: Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_ScanOutputTransformOutput_transformedOutput_FromDafny(dafnyOutput.Dtor_transformedOutput())} + +} + +func TransactGetItemsInputTransformInput_FromDafny(dafnyInput AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.TransactGetItemsInputTransformInput) awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.TransactGetItemsInputTransformInput { + + return awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.TransactGetItemsInputTransformInput{SdkInput: Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_TransactGetItemsInputTransformInput_sdkInput_FromDafny(dafnyInput.Dtor_sdkInput())} + +} + +func TransactGetItemsInputTransformOutput_FromDafny(dafnyOutput AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.TransactGetItemsInputTransformOutput) awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.TransactGetItemsInputTransformOutput { + + return awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.TransactGetItemsInputTransformOutput{TransformedInput: Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_TransactGetItemsInputTransformOutput_transformedInput_FromDafny(dafnyOutput.Dtor_transformedInput())} + +} + +func TransactGetItemsOutputTransformInput_FromDafny(dafnyInput AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.TransactGetItemsOutputTransformInput) awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.TransactGetItemsOutputTransformInput { + + return awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.TransactGetItemsOutputTransformInput{SdkOutput: Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_TransactGetItemsOutputTransformInput_sdkOutput_FromDafny(dafnyInput.Dtor_sdkOutput()), + OriginalInput: Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_TransactGetItemsOutputTransformInput_originalInput_FromDafny(dafnyInput.Dtor_originalInput()), + } + +} + +func TransactGetItemsOutputTransformOutput_FromDafny(dafnyOutput AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.TransactGetItemsOutputTransformOutput) awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.TransactGetItemsOutputTransformOutput { + + return awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.TransactGetItemsOutputTransformOutput{TransformedOutput: Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_TransactGetItemsOutputTransformOutput_transformedOutput_FromDafny(dafnyOutput.Dtor_transformedOutput())} + +} + +func TransactWriteItemsInputTransformInput_FromDafny(dafnyInput AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.TransactWriteItemsInputTransformInput) awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.TransactWriteItemsInputTransformInput { + + return awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.TransactWriteItemsInputTransformInput{SdkInput: Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_TransactWriteItemsInputTransformInput_sdkInput_FromDafny(dafnyInput.Dtor_sdkInput())} + +} + +func TransactWriteItemsInputTransformOutput_FromDafny(dafnyOutput AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.TransactWriteItemsInputTransformOutput) awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.TransactWriteItemsInputTransformOutput { + + return awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.TransactWriteItemsInputTransformOutput{TransformedInput: Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_TransactWriteItemsInputTransformOutput_transformedInput_FromDafny(dafnyOutput.Dtor_transformedInput())} + +} + +func TransactWriteItemsOutputTransformInput_FromDafny(dafnyInput AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.TransactWriteItemsOutputTransformInput) awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.TransactWriteItemsOutputTransformInput { + + return awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.TransactWriteItemsOutputTransformInput{SdkOutput: Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_TransactWriteItemsOutputTransformInput_sdkOutput_FromDafny(dafnyInput.Dtor_sdkOutput()), + OriginalInput: Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_TransactWriteItemsOutputTransformInput_originalInput_FromDafny(dafnyInput.Dtor_originalInput()), + } + +} + +func TransactWriteItemsOutputTransformOutput_FromDafny(dafnyOutput AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.TransactWriteItemsOutputTransformOutput) awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.TransactWriteItemsOutputTransformOutput { + + return awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.TransactWriteItemsOutputTransformOutput{TransformedOutput: Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_TransactWriteItemsOutputTransformOutput_transformedOutput_FromDafny(dafnyOutput.Dtor_transformedOutput())} + +} + +func UpdateItemInputTransformInput_FromDafny(dafnyInput AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.UpdateItemInputTransformInput) awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.UpdateItemInputTransformInput { + + return awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.UpdateItemInputTransformInput{SdkInput: Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_UpdateItemInputTransformInput_sdkInput_FromDafny(dafnyInput.Dtor_sdkInput())} + +} + +func UpdateItemInputTransformOutput_FromDafny(dafnyOutput AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.UpdateItemInputTransformOutput) awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.UpdateItemInputTransformOutput { + + return awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.UpdateItemInputTransformOutput{TransformedInput: Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_UpdateItemInputTransformOutput_transformedInput_FromDafny(dafnyOutput.Dtor_transformedInput())} + +} + +func UpdateItemOutputTransformInput_FromDafny(dafnyInput AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.UpdateItemOutputTransformInput) awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.UpdateItemOutputTransformInput { + + return awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.UpdateItemOutputTransformInput{SdkOutput: Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_UpdateItemOutputTransformInput_sdkOutput_FromDafny(dafnyInput.Dtor_sdkOutput()), + OriginalInput: Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_UpdateItemOutputTransformInput_originalInput_FromDafny(dafnyInput.Dtor_originalInput()), + } + +} + +func UpdateItemOutputTransformOutput_FromDafny(dafnyOutput AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.UpdateItemOutputTransformOutput) awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.UpdateItemOutputTransformOutput { + + return awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.UpdateItemOutputTransformOutput{TransformedOutput: Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_UpdateItemOutputTransformOutput_transformedOutput_FromDafny(dafnyOutput.Dtor_transformedOutput())} + +} + +func DynamoDbEncryptionTransformsException_FromDafny(dafnyOutput AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Error) awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.DynamoDbEncryptionTransformsException { + return awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.DynamoDbEncryptionTransformsException{Message: Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_DynamoDbEncryptionTransformsException_message_FromDafny(dafnyOutput.Dtor_message())} + +} + +func CollectionOfErrors_Output_FromDafny(dafnyOutput AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Error) awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.CollectionOfErrors { + listOfErrors := dafnyOutput.Dtor_list() + message := dafnyOutput.Dtor_message() + t := awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.CollectionOfErrors{} + for i := dafny.Iterate(listOfErrors); ; { + val, ok := i() + if !ok { + break + } + err := val.(AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Error) + t.ListOfErrors = append(t.ListOfErrors, Error_FromDafny(err)) + + } + t.Message = func() string { + a := UTF8.Encode(message.(dafny.Sequence)).Dtor_value() + s := string(dafny.ToByteArray(a.(dafny.Sequence))) + return s + }() + return t +} +func OpaqueError_Output_FromDafny(dafnyOutput AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Error) awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.OpaqueError { + return awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.OpaqueError{ + ErrObject: dafnyOutput.Dtor_obj(), + } +} + +func Error_FromDafny(err AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.Error) error { + // Service Errors + if err.Is_DynamoDbEncryptionTransformsException() { + return DynamoDbEncryptionTransformsException_FromDafny(err) + } + + //DependentErrors + if err.Is_ComAmazonawsDynamodb() { + return comamazonawsdynamodbsmithygenerated.Error_FromDafny(err.Dtor_ComAmazonawsDynamodb()) + } + + if err.Is_AwsCryptographyDbEncryptionSdkDynamoDb() { + return awscryptographydbencryptionsdkdynamodbsmithygenerated.Error_FromDafny(err.Dtor_AwsCryptographyDbEncryptionSdkDynamoDb()) + } + + if err.Is_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptor() { + return awscryptographydbencryptionsdkdynamodbitemencryptorsmithygenerated.Error_FromDafny(err.Dtor_AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptor()) + } + + if err.Is_AwsCryptographyDbEncryptionSdkStructuredEncryption() { + return awscryptographydbencryptionsdkstructuredencryptionsmithygenerated.Error_FromDafny(err.Dtor_AwsCryptographyDbEncryptionSdkStructuredEncryption()) + } + + if err.Is_AwsCryptographyMaterialProviders() { + return awscryptographymaterialproviderssmithygenerated.Error_FromDafny(err.Dtor_AwsCryptographyMaterialProviders()) + } + + //Unmodelled Errors + if err.Is_CollectionOfErrors() { + return CollectionOfErrors_Output_FromDafny(err) + } + + return OpaqueError_Output_FromDafny(err) +} + +func Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_BatchExecuteStatementInputTransformInput_sdkInput_FromDafny(input interface{}) dynamodb.BatchExecuteStatementInput { + return dynamodb.BatchExecuteStatementInput{Statements: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_BatchExecuteStatementInput_Statements_FromDafny(input.(ComAmazonawsDynamodbTypes.BatchExecuteStatementInput).Dtor_Statements()), + ReturnConsumedCapacity: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_BatchExecuteStatementInput_ReturnConsumedCapacity_FromDafny(input.(ComAmazonawsDynamodbTypes.BatchExecuteStatementInput).Dtor_ReturnConsumedCapacity().UnwrapOr(nil)), + } +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_BatchExecuteStatementInputTransformOutput_transformedInput_FromDafny(input interface{}) dynamodb.BatchExecuteStatementInput { + return dynamodb.BatchExecuteStatementInput{Statements: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_BatchExecuteStatementInput_Statements_FromDafny(input.(ComAmazonawsDynamodbTypes.BatchExecuteStatementInput).Dtor_Statements()), + ReturnConsumedCapacity: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_BatchExecuteStatementInput_ReturnConsumedCapacity_FromDafny(input.(ComAmazonawsDynamodbTypes.BatchExecuteStatementInput).Dtor_ReturnConsumedCapacity().UnwrapOr(nil)), + } +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_BatchExecuteStatementOutputTransformInput_sdkOutput_FromDafny(input interface{}) dynamodb.BatchExecuteStatementOutput { + return dynamodb.BatchExecuteStatementOutput{Responses: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_BatchExecuteStatementOutput_Responses_FromDafny(input.(ComAmazonawsDynamodbTypes.BatchExecuteStatementOutput).Dtor_Responses().UnwrapOr(nil)), + ConsumedCapacity: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_BatchExecuteStatementOutput_ConsumedCapacity_FromDafny(input.(ComAmazonawsDynamodbTypes.BatchExecuteStatementOutput).Dtor_ConsumedCapacity().UnwrapOr(nil)), + } +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_BatchExecuteStatementOutputTransformInput_originalInput_FromDafny(input interface{}) dynamodb.BatchExecuteStatementInput { + return dynamodb.BatchExecuteStatementInput{Statements: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_BatchExecuteStatementInput_Statements_FromDafny(input.(ComAmazonawsDynamodbTypes.BatchExecuteStatementInput).Dtor_Statements()), + ReturnConsumedCapacity: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_BatchExecuteStatementInput_ReturnConsumedCapacity_FromDafny(input.(ComAmazonawsDynamodbTypes.BatchExecuteStatementInput).Dtor_ReturnConsumedCapacity().UnwrapOr(nil)), + } +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_BatchExecuteStatementOutputTransformOutput_transformedOutput_FromDafny(input interface{}) dynamodb.BatchExecuteStatementOutput { + return dynamodb.BatchExecuteStatementOutput{Responses: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_BatchExecuteStatementOutput_Responses_FromDafny(input.(ComAmazonawsDynamodbTypes.BatchExecuteStatementOutput).Dtor_Responses().UnwrapOr(nil)), + ConsumedCapacity: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_BatchExecuteStatementOutput_ConsumedCapacity_FromDafny(input.(ComAmazonawsDynamodbTypes.BatchExecuteStatementOutput).Dtor_ConsumedCapacity().UnwrapOr(nil)), + } +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_BatchGetItemInputTransformInput_sdkInput_FromDafny(input interface{}) dynamodb.BatchGetItemInput { + return dynamodb.BatchGetItemInput{RequestItems: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_BatchGetItemInput_RequestItems_FromDafny(input.(ComAmazonawsDynamodbTypes.BatchGetItemInput).Dtor_RequestItems()), + ReturnConsumedCapacity: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_BatchGetItemInput_ReturnConsumedCapacity_FromDafny(input.(ComAmazonawsDynamodbTypes.BatchGetItemInput).Dtor_ReturnConsumedCapacity().UnwrapOr(nil)), + } +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_BatchGetItemInputTransformOutput_transformedInput_FromDafny(input interface{}) dynamodb.BatchGetItemInput { + return dynamodb.BatchGetItemInput{RequestItems: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_BatchGetItemInput_RequestItems_FromDafny(input.(ComAmazonawsDynamodbTypes.BatchGetItemInput).Dtor_RequestItems()), + ReturnConsumedCapacity: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_BatchGetItemInput_ReturnConsumedCapacity_FromDafny(input.(ComAmazonawsDynamodbTypes.BatchGetItemInput).Dtor_ReturnConsumedCapacity().UnwrapOr(nil)), + } +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_BatchGetItemOutputTransformInput_sdkOutput_FromDafny(input interface{}) dynamodb.BatchGetItemOutput { + return dynamodb.BatchGetItemOutput{Responses: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_BatchGetItemOutput_Responses_FromDafny(input.(ComAmazonawsDynamodbTypes.BatchGetItemOutput).Dtor_Responses().UnwrapOr(nil)), + UnprocessedKeys: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_BatchGetItemOutput_UnprocessedKeys_FromDafny(input.(ComAmazonawsDynamodbTypes.BatchGetItemOutput).Dtor_UnprocessedKeys().UnwrapOr(nil)), + ConsumedCapacity: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_BatchGetItemOutput_ConsumedCapacity_FromDafny(input.(ComAmazonawsDynamodbTypes.BatchGetItemOutput).Dtor_ConsumedCapacity().UnwrapOr(nil)), + } +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_BatchGetItemOutputTransformInput_originalInput_FromDafny(input interface{}) dynamodb.BatchGetItemInput { + return dynamodb.BatchGetItemInput{RequestItems: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_BatchGetItemInput_RequestItems_FromDafny(input.(ComAmazonawsDynamodbTypes.BatchGetItemInput).Dtor_RequestItems()), + ReturnConsumedCapacity: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_BatchGetItemInput_ReturnConsumedCapacity_FromDafny(input.(ComAmazonawsDynamodbTypes.BatchGetItemInput).Dtor_ReturnConsumedCapacity().UnwrapOr(nil)), + } +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_BatchGetItemOutputTransformOutput_transformedOutput_FromDafny(input interface{}) dynamodb.BatchGetItemOutput { + return dynamodb.BatchGetItemOutput{Responses: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_BatchGetItemOutput_Responses_FromDafny(input.(ComAmazonawsDynamodbTypes.BatchGetItemOutput).Dtor_Responses().UnwrapOr(nil)), + UnprocessedKeys: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_BatchGetItemOutput_UnprocessedKeys_FromDafny(input.(ComAmazonawsDynamodbTypes.BatchGetItemOutput).Dtor_UnprocessedKeys().UnwrapOr(nil)), + ConsumedCapacity: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_BatchGetItemOutput_ConsumedCapacity_FromDafny(input.(ComAmazonawsDynamodbTypes.BatchGetItemOutput).Dtor_ConsumedCapacity().UnwrapOr(nil)), + } +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_BatchWriteItemInputTransformInput_sdkInput_FromDafny(input interface{}) dynamodb.BatchWriteItemInput { + return dynamodb.BatchWriteItemInput{RequestItems: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_BatchWriteItemInput_RequestItems_FromDafny(input.(ComAmazonawsDynamodbTypes.BatchWriteItemInput).Dtor_RequestItems()), + ReturnConsumedCapacity: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_BatchWriteItemInput_ReturnConsumedCapacity_FromDafny(input.(ComAmazonawsDynamodbTypes.BatchWriteItemInput).Dtor_ReturnConsumedCapacity().UnwrapOr(nil)), + ReturnItemCollectionMetrics: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_BatchWriteItemInput_ReturnItemCollectionMetrics_FromDafny(input.(ComAmazonawsDynamodbTypes.BatchWriteItemInput).Dtor_ReturnItemCollectionMetrics().UnwrapOr(nil)), + } +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_BatchWriteItemInputTransformOutput_transformedInput_FromDafny(input interface{}) dynamodb.BatchWriteItemInput { + return dynamodb.BatchWriteItemInput{RequestItems: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_BatchWriteItemInput_RequestItems_FromDafny(input.(ComAmazonawsDynamodbTypes.BatchWriteItemInput).Dtor_RequestItems()), + ReturnConsumedCapacity: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_BatchWriteItemInput_ReturnConsumedCapacity_FromDafny(input.(ComAmazonawsDynamodbTypes.BatchWriteItemInput).Dtor_ReturnConsumedCapacity().UnwrapOr(nil)), + ReturnItemCollectionMetrics: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_BatchWriteItemInput_ReturnItemCollectionMetrics_FromDafny(input.(ComAmazonawsDynamodbTypes.BatchWriteItemInput).Dtor_ReturnItemCollectionMetrics().UnwrapOr(nil)), + } +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_BatchWriteItemOutputTransformInput_sdkOutput_FromDafny(input interface{}) dynamodb.BatchWriteItemOutput { + return dynamodb.BatchWriteItemOutput{UnprocessedItems: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_BatchWriteItemOutput_UnprocessedItems_FromDafny(input.(ComAmazonawsDynamodbTypes.BatchWriteItemOutput).Dtor_UnprocessedItems().UnwrapOr(nil)), + ItemCollectionMetrics: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_BatchWriteItemOutput_ItemCollectionMetrics_FromDafny(input.(ComAmazonawsDynamodbTypes.BatchWriteItemOutput).Dtor_ItemCollectionMetrics().UnwrapOr(nil)), + ConsumedCapacity: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_BatchWriteItemOutput_ConsumedCapacity_FromDafny(input.(ComAmazonawsDynamodbTypes.BatchWriteItemOutput).Dtor_ConsumedCapacity().UnwrapOr(nil)), + } +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_BatchWriteItemOutputTransformInput_originalInput_FromDafny(input interface{}) dynamodb.BatchWriteItemInput { + return dynamodb.BatchWriteItemInput{RequestItems: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_BatchWriteItemInput_RequestItems_FromDafny(input.(ComAmazonawsDynamodbTypes.BatchWriteItemInput).Dtor_RequestItems()), + ReturnConsumedCapacity: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_BatchWriteItemInput_ReturnConsumedCapacity_FromDafny(input.(ComAmazonawsDynamodbTypes.BatchWriteItemInput).Dtor_ReturnConsumedCapacity().UnwrapOr(nil)), + ReturnItemCollectionMetrics: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_BatchWriteItemInput_ReturnItemCollectionMetrics_FromDafny(input.(ComAmazonawsDynamodbTypes.BatchWriteItemInput).Dtor_ReturnItemCollectionMetrics().UnwrapOr(nil)), + } +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_BatchWriteItemOutputTransformOutput_transformedOutput_FromDafny(input interface{}) dynamodb.BatchWriteItemOutput { + return dynamodb.BatchWriteItemOutput{UnprocessedItems: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_BatchWriteItemOutput_UnprocessedItems_FromDafny(input.(ComAmazonawsDynamodbTypes.BatchWriteItemOutput).Dtor_UnprocessedItems().UnwrapOr(nil)), + ItemCollectionMetrics: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_BatchWriteItemOutput_ItemCollectionMetrics_FromDafny(input.(ComAmazonawsDynamodbTypes.BatchWriteItemOutput).Dtor_ItemCollectionMetrics().UnwrapOr(nil)), + ConsumedCapacity: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_BatchWriteItemOutput_ConsumedCapacity_FromDafny(input.(ComAmazonawsDynamodbTypes.BatchWriteItemOutput).Dtor_ConsumedCapacity().UnwrapOr(nil)), + } +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_DeleteItemInputTransformInput_sdkInput_FromDafny(input interface{}) dynamodb.DeleteItemInput { + return dynamodb.DeleteItemInput{TableName: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_DeleteItemInput_TableName_FromDafny(input.(ComAmazonawsDynamodbTypes.DeleteItemInput).Dtor_TableName()), + Key: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_DeleteItemInput_Key_FromDafny(input.(ComAmazonawsDynamodbTypes.DeleteItemInput).Dtor_Key()), + Expected: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_DeleteItemInput_Expected_FromDafny(input.(ComAmazonawsDynamodbTypes.DeleteItemInput).Dtor_Expected().UnwrapOr(nil)), + ConditionalOperator: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_DeleteItemInput_ConditionalOperator_FromDafny(input.(ComAmazonawsDynamodbTypes.DeleteItemInput).Dtor_ConditionalOperator().UnwrapOr(nil)), + ReturnValues: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_DeleteItemInput_ReturnValues_FromDafny(input.(ComAmazonawsDynamodbTypes.DeleteItemInput).Dtor_ReturnValues().UnwrapOr(nil)), + ReturnConsumedCapacity: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_DeleteItemInput_ReturnConsumedCapacity_FromDafny(input.(ComAmazonawsDynamodbTypes.DeleteItemInput).Dtor_ReturnConsumedCapacity().UnwrapOr(nil)), + ReturnItemCollectionMetrics: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_DeleteItemInput_ReturnItemCollectionMetrics_FromDafny(input.(ComAmazonawsDynamodbTypes.DeleteItemInput).Dtor_ReturnItemCollectionMetrics().UnwrapOr(nil)), + ConditionExpression: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_DeleteItemInput_ConditionExpression_FromDafny(input.(ComAmazonawsDynamodbTypes.DeleteItemInput).Dtor_ConditionExpression().UnwrapOr(nil)), + ExpressionAttributeNames: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_DeleteItemInput_ExpressionAttributeNames_FromDafny(input.(ComAmazonawsDynamodbTypes.DeleteItemInput).Dtor_ExpressionAttributeNames().UnwrapOr(nil)), + ExpressionAttributeValues: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_DeleteItemInput_ExpressionAttributeValues_FromDafny(input.(ComAmazonawsDynamodbTypes.DeleteItemInput).Dtor_ExpressionAttributeValues().UnwrapOr(nil)), + ReturnValuesOnConditionCheckFailure: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_DeleteItemInput_ReturnValuesOnConditionCheckFailure_FromDafny(input.(ComAmazonawsDynamodbTypes.DeleteItemInput).Dtor_ReturnValuesOnConditionCheckFailure().UnwrapOr(nil)), + } +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_DeleteItemInputTransformOutput_transformedInput_FromDafny(input interface{}) dynamodb.DeleteItemInput { + return dynamodb.DeleteItemInput{TableName: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_DeleteItemInput_TableName_FromDafny(input.(ComAmazonawsDynamodbTypes.DeleteItemInput).Dtor_TableName()), + Key: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_DeleteItemInput_Key_FromDafny(input.(ComAmazonawsDynamodbTypes.DeleteItemInput).Dtor_Key()), + Expected: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_DeleteItemInput_Expected_FromDafny(input.(ComAmazonawsDynamodbTypes.DeleteItemInput).Dtor_Expected().UnwrapOr(nil)), + ConditionalOperator: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_DeleteItemInput_ConditionalOperator_FromDafny(input.(ComAmazonawsDynamodbTypes.DeleteItemInput).Dtor_ConditionalOperator().UnwrapOr(nil)), + ReturnValues: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_DeleteItemInput_ReturnValues_FromDafny(input.(ComAmazonawsDynamodbTypes.DeleteItemInput).Dtor_ReturnValues().UnwrapOr(nil)), + ReturnConsumedCapacity: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_DeleteItemInput_ReturnConsumedCapacity_FromDafny(input.(ComAmazonawsDynamodbTypes.DeleteItemInput).Dtor_ReturnConsumedCapacity().UnwrapOr(nil)), + ReturnItemCollectionMetrics: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_DeleteItemInput_ReturnItemCollectionMetrics_FromDafny(input.(ComAmazonawsDynamodbTypes.DeleteItemInput).Dtor_ReturnItemCollectionMetrics().UnwrapOr(nil)), + ConditionExpression: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_DeleteItemInput_ConditionExpression_FromDafny(input.(ComAmazonawsDynamodbTypes.DeleteItemInput).Dtor_ConditionExpression().UnwrapOr(nil)), + ExpressionAttributeNames: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_DeleteItemInput_ExpressionAttributeNames_FromDafny(input.(ComAmazonawsDynamodbTypes.DeleteItemInput).Dtor_ExpressionAttributeNames().UnwrapOr(nil)), + ExpressionAttributeValues: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_DeleteItemInput_ExpressionAttributeValues_FromDafny(input.(ComAmazonawsDynamodbTypes.DeleteItemInput).Dtor_ExpressionAttributeValues().UnwrapOr(nil)), + ReturnValuesOnConditionCheckFailure: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_DeleteItemInput_ReturnValuesOnConditionCheckFailure_FromDafny(input.(ComAmazonawsDynamodbTypes.DeleteItemInput).Dtor_ReturnValuesOnConditionCheckFailure().UnwrapOr(nil)), + } +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_DeleteItemOutputTransformInput_sdkOutput_FromDafny(input interface{}) dynamodb.DeleteItemOutput { + return dynamodb.DeleteItemOutput{Attributes: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_DeleteItemOutput_Attributes_FromDafny(input.(ComAmazonawsDynamodbTypes.DeleteItemOutput).Dtor_Attributes().UnwrapOr(nil)), + ConsumedCapacity: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_DeleteItemOutput_ConsumedCapacity_FromDafny(input.(ComAmazonawsDynamodbTypes.DeleteItemOutput).Dtor_ConsumedCapacity().UnwrapOr(nil)), + ItemCollectionMetrics: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_DeleteItemOutput_ItemCollectionMetrics_FromDafny(input.(ComAmazonawsDynamodbTypes.DeleteItemOutput).Dtor_ItemCollectionMetrics().UnwrapOr(nil)), + } +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_DeleteItemOutputTransformInput_originalInput_FromDafny(input interface{}) dynamodb.DeleteItemInput { + return dynamodb.DeleteItemInput{TableName: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_DeleteItemInput_TableName_FromDafny(input.(ComAmazonawsDynamodbTypes.DeleteItemInput).Dtor_TableName()), + Key: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_DeleteItemInput_Key_FromDafny(input.(ComAmazonawsDynamodbTypes.DeleteItemInput).Dtor_Key()), + Expected: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_DeleteItemInput_Expected_FromDafny(input.(ComAmazonawsDynamodbTypes.DeleteItemInput).Dtor_Expected().UnwrapOr(nil)), + ConditionalOperator: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_DeleteItemInput_ConditionalOperator_FromDafny(input.(ComAmazonawsDynamodbTypes.DeleteItemInput).Dtor_ConditionalOperator().UnwrapOr(nil)), + ReturnValues: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_DeleteItemInput_ReturnValues_FromDafny(input.(ComAmazonawsDynamodbTypes.DeleteItemInput).Dtor_ReturnValues().UnwrapOr(nil)), + ReturnConsumedCapacity: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_DeleteItemInput_ReturnConsumedCapacity_FromDafny(input.(ComAmazonawsDynamodbTypes.DeleteItemInput).Dtor_ReturnConsumedCapacity().UnwrapOr(nil)), + ReturnItemCollectionMetrics: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_DeleteItemInput_ReturnItemCollectionMetrics_FromDafny(input.(ComAmazonawsDynamodbTypes.DeleteItemInput).Dtor_ReturnItemCollectionMetrics().UnwrapOr(nil)), + ConditionExpression: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_DeleteItemInput_ConditionExpression_FromDafny(input.(ComAmazonawsDynamodbTypes.DeleteItemInput).Dtor_ConditionExpression().UnwrapOr(nil)), + ExpressionAttributeNames: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_DeleteItemInput_ExpressionAttributeNames_FromDafny(input.(ComAmazonawsDynamodbTypes.DeleteItemInput).Dtor_ExpressionAttributeNames().UnwrapOr(nil)), + ExpressionAttributeValues: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_DeleteItemInput_ExpressionAttributeValues_FromDafny(input.(ComAmazonawsDynamodbTypes.DeleteItemInput).Dtor_ExpressionAttributeValues().UnwrapOr(nil)), + ReturnValuesOnConditionCheckFailure: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_DeleteItemInput_ReturnValuesOnConditionCheckFailure_FromDafny(input.(ComAmazonawsDynamodbTypes.DeleteItemInput).Dtor_ReturnValuesOnConditionCheckFailure().UnwrapOr(nil)), + } +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_DeleteItemOutputTransformOutput_transformedOutput_FromDafny(input interface{}) dynamodb.DeleteItemOutput { + return dynamodb.DeleteItemOutput{Attributes: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_DeleteItemOutput_Attributes_FromDafny(input.(ComAmazonawsDynamodbTypes.DeleteItemOutput).Dtor_Attributes().UnwrapOr(nil)), + ConsumedCapacity: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_DeleteItemOutput_ConsumedCapacity_FromDafny(input.(ComAmazonawsDynamodbTypes.DeleteItemOutput).Dtor_ConsumedCapacity().UnwrapOr(nil)), + ItemCollectionMetrics: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_DeleteItemOutput_ItemCollectionMetrics_FromDafny(input.(ComAmazonawsDynamodbTypes.DeleteItemOutput).Dtor_ItemCollectionMetrics().UnwrapOr(nil)), + } +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_ExecuteStatementInputTransformInput_sdkInput_FromDafny(input interface{}) dynamodb.ExecuteStatementInput { + return dynamodb.ExecuteStatementInput{Statement: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ExecuteStatementInput_Statement_FromDafny(input.(ComAmazonawsDynamodbTypes.ExecuteStatementInput).Dtor_Statement()), + Parameters: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ExecuteStatementInput_Parameters_FromDafny(input.(ComAmazonawsDynamodbTypes.ExecuteStatementInput).Dtor_Parameters().UnwrapOr(nil)), + ConsistentRead: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ExecuteStatementInput_ConsistentRead_FromDafny(input.(ComAmazonawsDynamodbTypes.ExecuteStatementInput).Dtor_ConsistentRead().UnwrapOr(nil)), + NextToken: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ExecuteStatementInput_NextToken_FromDafny(input.(ComAmazonawsDynamodbTypes.ExecuteStatementInput).Dtor_NextToken().UnwrapOr(nil)), + ReturnConsumedCapacity: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ExecuteStatementInput_ReturnConsumedCapacity_FromDafny(input.(ComAmazonawsDynamodbTypes.ExecuteStatementInput).Dtor_ReturnConsumedCapacity().UnwrapOr(nil)), + Limit: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ExecuteStatementInput_Limit_FromDafny(input.(ComAmazonawsDynamodbTypes.ExecuteStatementInput).Dtor_Limit().UnwrapOr(nil)), + ReturnValuesOnConditionCheckFailure: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ExecuteStatementInput_ReturnValuesOnConditionCheckFailure_FromDafny(input.(ComAmazonawsDynamodbTypes.ExecuteStatementInput).Dtor_ReturnValuesOnConditionCheckFailure().UnwrapOr(nil)), + } +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_ExecuteStatementInputTransformOutput_transformedInput_FromDafny(input interface{}) dynamodb.ExecuteStatementInput { + return dynamodb.ExecuteStatementInput{Statement: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ExecuteStatementInput_Statement_FromDafny(input.(ComAmazonawsDynamodbTypes.ExecuteStatementInput).Dtor_Statement()), + Parameters: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ExecuteStatementInput_Parameters_FromDafny(input.(ComAmazonawsDynamodbTypes.ExecuteStatementInput).Dtor_Parameters().UnwrapOr(nil)), + ConsistentRead: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ExecuteStatementInput_ConsistentRead_FromDafny(input.(ComAmazonawsDynamodbTypes.ExecuteStatementInput).Dtor_ConsistentRead().UnwrapOr(nil)), + NextToken: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ExecuteStatementInput_NextToken_FromDafny(input.(ComAmazonawsDynamodbTypes.ExecuteStatementInput).Dtor_NextToken().UnwrapOr(nil)), + ReturnConsumedCapacity: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ExecuteStatementInput_ReturnConsumedCapacity_FromDafny(input.(ComAmazonawsDynamodbTypes.ExecuteStatementInput).Dtor_ReturnConsumedCapacity().UnwrapOr(nil)), + Limit: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ExecuteStatementInput_Limit_FromDafny(input.(ComAmazonawsDynamodbTypes.ExecuteStatementInput).Dtor_Limit().UnwrapOr(nil)), + ReturnValuesOnConditionCheckFailure: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ExecuteStatementInput_ReturnValuesOnConditionCheckFailure_FromDafny(input.(ComAmazonawsDynamodbTypes.ExecuteStatementInput).Dtor_ReturnValuesOnConditionCheckFailure().UnwrapOr(nil)), + } +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_ExecuteStatementOutputTransformInput_sdkOutput_FromDafny(input interface{}) dynamodb.ExecuteStatementOutput { + return dynamodb.ExecuteStatementOutput{Items: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ExecuteStatementOutput_Items_FromDafny(input.(ComAmazonawsDynamodbTypes.ExecuteStatementOutput).Dtor_Items().UnwrapOr(nil)), + NextToken: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ExecuteStatementOutput_NextToken_FromDafny(input.(ComAmazonawsDynamodbTypes.ExecuteStatementOutput).Dtor_NextToken().UnwrapOr(nil)), + ConsumedCapacity: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ExecuteStatementOutput_ConsumedCapacity_FromDafny(input.(ComAmazonawsDynamodbTypes.ExecuteStatementOutput).Dtor_ConsumedCapacity().UnwrapOr(nil)), + LastEvaluatedKey: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ExecuteStatementOutput_LastEvaluatedKey_FromDafny(input.(ComAmazonawsDynamodbTypes.ExecuteStatementOutput).Dtor_LastEvaluatedKey().UnwrapOr(nil)), + } +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_ExecuteStatementOutputTransformInput_originalInput_FromDafny(input interface{}) dynamodb.ExecuteStatementInput { + return dynamodb.ExecuteStatementInput{Statement: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ExecuteStatementInput_Statement_FromDafny(input.(ComAmazonawsDynamodbTypes.ExecuteStatementInput).Dtor_Statement()), + Parameters: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ExecuteStatementInput_Parameters_FromDafny(input.(ComAmazonawsDynamodbTypes.ExecuteStatementInput).Dtor_Parameters().UnwrapOr(nil)), + ConsistentRead: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ExecuteStatementInput_ConsistentRead_FromDafny(input.(ComAmazonawsDynamodbTypes.ExecuteStatementInput).Dtor_ConsistentRead().UnwrapOr(nil)), + NextToken: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ExecuteStatementInput_NextToken_FromDafny(input.(ComAmazonawsDynamodbTypes.ExecuteStatementInput).Dtor_NextToken().UnwrapOr(nil)), + ReturnConsumedCapacity: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ExecuteStatementInput_ReturnConsumedCapacity_FromDafny(input.(ComAmazonawsDynamodbTypes.ExecuteStatementInput).Dtor_ReturnConsumedCapacity().UnwrapOr(nil)), + Limit: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ExecuteStatementInput_Limit_FromDafny(input.(ComAmazonawsDynamodbTypes.ExecuteStatementInput).Dtor_Limit().UnwrapOr(nil)), + ReturnValuesOnConditionCheckFailure: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ExecuteStatementInput_ReturnValuesOnConditionCheckFailure_FromDafny(input.(ComAmazonawsDynamodbTypes.ExecuteStatementInput).Dtor_ReturnValuesOnConditionCheckFailure().UnwrapOr(nil)), + } +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_ExecuteStatementOutputTransformOutput_transformedOutput_FromDafny(input interface{}) dynamodb.ExecuteStatementOutput { + return dynamodb.ExecuteStatementOutput{Items: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ExecuteStatementOutput_Items_FromDafny(input.(ComAmazonawsDynamodbTypes.ExecuteStatementOutput).Dtor_Items().UnwrapOr(nil)), + NextToken: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ExecuteStatementOutput_NextToken_FromDafny(input.(ComAmazonawsDynamodbTypes.ExecuteStatementOutput).Dtor_NextToken().UnwrapOr(nil)), + ConsumedCapacity: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ExecuteStatementOutput_ConsumedCapacity_FromDafny(input.(ComAmazonawsDynamodbTypes.ExecuteStatementOutput).Dtor_ConsumedCapacity().UnwrapOr(nil)), + LastEvaluatedKey: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ExecuteStatementOutput_LastEvaluatedKey_FromDafny(input.(ComAmazonawsDynamodbTypes.ExecuteStatementOutput).Dtor_LastEvaluatedKey().UnwrapOr(nil)), + } +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_ExecuteTransactionInputTransformInput_sdkInput_FromDafny(input interface{}) dynamodb.ExecuteTransactionInput { + return dynamodb.ExecuteTransactionInput{TransactStatements: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ExecuteTransactionInput_TransactStatements_FromDafny(input.(ComAmazonawsDynamodbTypes.ExecuteTransactionInput).Dtor_TransactStatements()), + ClientRequestToken: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ExecuteTransactionInput_ClientRequestToken_FromDafny(input.(ComAmazonawsDynamodbTypes.ExecuteTransactionInput).Dtor_ClientRequestToken().UnwrapOr(nil)), + ReturnConsumedCapacity: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ExecuteTransactionInput_ReturnConsumedCapacity_FromDafny(input.(ComAmazonawsDynamodbTypes.ExecuteTransactionInput).Dtor_ReturnConsumedCapacity().UnwrapOr(nil)), + } +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_ExecuteTransactionInputTransformOutput_transformedInput_FromDafny(input interface{}) dynamodb.ExecuteTransactionInput { + return dynamodb.ExecuteTransactionInput{TransactStatements: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ExecuteTransactionInput_TransactStatements_FromDafny(input.(ComAmazonawsDynamodbTypes.ExecuteTransactionInput).Dtor_TransactStatements()), + ClientRequestToken: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ExecuteTransactionInput_ClientRequestToken_FromDafny(input.(ComAmazonawsDynamodbTypes.ExecuteTransactionInput).Dtor_ClientRequestToken().UnwrapOr(nil)), + ReturnConsumedCapacity: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ExecuteTransactionInput_ReturnConsumedCapacity_FromDafny(input.(ComAmazonawsDynamodbTypes.ExecuteTransactionInput).Dtor_ReturnConsumedCapacity().UnwrapOr(nil)), + } +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_ExecuteTransactionOutputTransformInput_sdkOutput_FromDafny(input interface{}) dynamodb.ExecuteTransactionOutput { + return dynamodb.ExecuteTransactionOutput{Responses: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ExecuteTransactionOutput_Responses_FromDafny(input.(ComAmazonawsDynamodbTypes.ExecuteTransactionOutput).Dtor_Responses().UnwrapOr(nil)), + ConsumedCapacity: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ExecuteTransactionOutput_ConsumedCapacity_FromDafny(input.(ComAmazonawsDynamodbTypes.ExecuteTransactionOutput).Dtor_ConsumedCapacity().UnwrapOr(nil)), + } +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_ExecuteTransactionOutputTransformInput_originalInput_FromDafny(input interface{}) dynamodb.ExecuteTransactionInput { + return dynamodb.ExecuteTransactionInput{TransactStatements: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ExecuteTransactionInput_TransactStatements_FromDafny(input.(ComAmazonawsDynamodbTypes.ExecuteTransactionInput).Dtor_TransactStatements()), + ClientRequestToken: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ExecuteTransactionInput_ClientRequestToken_FromDafny(input.(ComAmazonawsDynamodbTypes.ExecuteTransactionInput).Dtor_ClientRequestToken().UnwrapOr(nil)), + ReturnConsumedCapacity: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ExecuteTransactionInput_ReturnConsumedCapacity_FromDafny(input.(ComAmazonawsDynamodbTypes.ExecuteTransactionInput).Dtor_ReturnConsumedCapacity().UnwrapOr(nil)), + } +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_ExecuteTransactionOutputTransformOutput_transformedOutput_FromDafny(input interface{}) dynamodb.ExecuteTransactionOutput { + return dynamodb.ExecuteTransactionOutput{Responses: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ExecuteTransactionOutput_Responses_FromDafny(input.(ComAmazonawsDynamodbTypes.ExecuteTransactionOutput).Dtor_Responses().UnwrapOr(nil)), + ConsumedCapacity: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ExecuteTransactionOutput_ConsumedCapacity_FromDafny(input.(ComAmazonawsDynamodbTypes.ExecuteTransactionOutput).Dtor_ConsumedCapacity().UnwrapOr(nil)), + } +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_GetItemInputTransformInput_sdkInput_FromDafny(input interface{}) dynamodb.GetItemInput { + return dynamodb.GetItemInput{TableName: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_GetItemInput_TableName_FromDafny(input.(ComAmazonawsDynamodbTypes.GetItemInput).Dtor_TableName()), + Key: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_GetItemInput_Key_FromDafny(input.(ComAmazonawsDynamodbTypes.GetItemInput).Dtor_Key()), + AttributesToGet: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_GetItemInput_AttributesToGet_FromDafny(input.(ComAmazonawsDynamodbTypes.GetItemInput).Dtor_AttributesToGet().UnwrapOr(nil)), + ConsistentRead: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_GetItemInput_ConsistentRead_FromDafny(input.(ComAmazonawsDynamodbTypes.GetItemInput).Dtor_ConsistentRead().UnwrapOr(nil)), + ReturnConsumedCapacity: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_GetItemInput_ReturnConsumedCapacity_FromDafny(input.(ComAmazonawsDynamodbTypes.GetItemInput).Dtor_ReturnConsumedCapacity().UnwrapOr(nil)), + ProjectionExpression: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_GetItemInput_ProjectionExpression_FromDafny(input.(ComAmazonawsDynamodbTypes.GetItemInput).Dtor_ProjectionExpression().UnwrapOr(nil)), + ExpressionAttributeNames: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_GetItemInput_ExpressionAttributeNames_FromDafny(input.(ComAmazonawsDynamodbTypes.GetItemInput).Dtor_ExpressionAttributeNames().UnwrapOr(nil)), + } +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_GetItemInputTransformOutput_transformedInput_FromDafny(input interface{}) dynamodb.GetItemInput { + return dynamodb.GetItemInput{TableName: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_GetItemInput_TableName_FromDafny(input.(ComAmazonawsDynamodbTypes.GetItemInput).Dtor_TableName()), + Key: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_GetItemInput_Key_FromDafny(input.(ComAmazonawsDynamodbTypes.GetItemInput).Dtor_Key()), + AttributesToGet: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_GetItemInput_AttributesToGet_FromDafny(input.(ComAmazonawsDynamodbTypes.GetItemInput).Dtor_AttributesToGet().UnwrapOr(nil)), + ConsistentRead: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_GetItemInput_ConsistentRead_FromDafny(input.(ComAmazonawsDynamodbTypes.GetItemInput).Dtor_ConsistentRead().UnwrapOr(nil)), + ReturnConsumedCapacity: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_GetItemInput_ReturnConsumedCapacity_FromDafny(input.(ComAmazonawsDynamodbTypes.GetItemInput).Dtor_ReturnConsumedCapacity().UnwrapOr(nil)), + ProjectionExpression: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_GetItemInput_ProjectionExpression_FromDafny(input.(ComAmazonawsDynamodbTypes.GetItemInput).Dtor_ProjectionExpression().UnwrapOr(nil)), + ExpressionAttributeNames: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_GetItemInput_ExpressionAttributeNames_FromDafny(input.(ComAmazonawsDynamodbTypes.GetItemInput).Dtor_ExpressionAttributeNames().UnwrapOr(nil)), + } +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_GetItemOutputTransformInput_sdkOutput_FromDafny(input interface{}) dynamodb.GetItemOutput { + return dynamodb.GetItemOutput{Item: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_GetItemOutput_Item_FromDafny(input.(ComAmazonawsDynamodbTypes.GetItemOutput).Dtor_Item().UnwrapOr(nil)), + ConsumedCapacity: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_GetItemOutput_ConsumedCapacity_FromDafny(input.(ComAmazonawsDynamodbTypes.GetItemOutput).Dtor_ConsumedCapacity().UnwrapOr(nil)), + } +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_GetItemOutputTransformInput_originalInput_FromDafny(input interface{}) dynamodb.GetItemInput { + return dynamodb.GetItemInput{TableName: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_GetItemInput_TableName_FromDafny(input.(ComAmazonawsDynamodbTypes.GetItemInput).Dtor_TableName()), + Key: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_GetItemInput_Key_FromDafny(input.(ComAmazonawsDynamodbTypes.GetItemInput).Dtor_Key()), + AttributesToGet: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_GetItemInput_AttributesToGet_FromDafny(input.(ComAmazonawsDynamodbTypes.GetItemInput).Dtor_AttributesToGet().UnwrapOr(nil)), + ConsistentRead: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_GetItemInput_ConsistentRead_FromDafny(input.(ComAmazonawsDynamodbTypes.GetItemInput).Dtor_ConsistentRead().UnwrapOr(nil)), + ReturnConsumedCapacity: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_GetItemInput_ReturnConsumedCapacity_FromDafny(input.(ComAmazonawsDynamodbTypes.GetItemInput).Dtor_ReturnConsumedCapacity().UnwrapOr(nil)), + ProjectionExpression: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_GetItemInput_ProjectionExpression_FromDafny(input.(ComAmazonawsDynamodbTypes.GetItemInput).Dtor_ProjectionExpression().UnwrapOr(nil)), + ExpressionAttributeNames: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_GetItemInput_ExpressionAttributeNames_FromDafny(input.(ComAmazonawsDynamodbTypes.GetItemInput).Dtor_ExpressionAttributeNames().UnwrapOr(nil)), + } +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_GetItemOutputTransformOutput_transformedOutput_FromDafny(input interface{}) dynamodb.GetItemOutput { + return dynamodb.GetItemOutput{Item: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_GetItemOutput_Item_FromDafny(input.(ComAmazonawsDynamodbTypes.GetItemOutput).Dtor_Item().UnwrapOr(nil)), + ConsumedCapacity: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_GetItemOutput_ConsumedCapacity_FromDafny(input.(ComAmazonawsDynamodbTypes.GetItemOutput).Dtor_ConsumedCapacity().UnwrapOr(nil)), + } +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_PutItemInputTransformInput_sdkInput_FromDafny(input interface{}) dynamodb.PutItemInput { + return dynamodb.PutItemInput{TableName: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_PutItemInput_TableName_FromDafny(input.(ComAmazonawsDynamodbTypes.PutItemInput).Dtor_TableName()), + Item: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_PutItemInput_Item_FromDafny(input.(ComAmazonawsDynamodbTypes.PutItemInput).Dtor_Item()), + Expected: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_PutItemInput_Expected_FromDafny(input.(ComAmazonawsDynamodbTypes.PutItemInput).Dtor_Expected().UnwrapOr(nil)), + ReturnValues: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_PutItemInput_ReturnValues_FromDafny(input.(ComAmazonawsDynamodbTypes.PutItemInput).Dtor_ReturnValues().UnwrapOr(nil)), + ReturnConsumedCapacity: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_PutItemInput_ReturnConsumedCapacity_FromDafny(input.(ComAmazonawsDynamodbTypes.PutItemInput).Dtor_ReturnConsumedCapacity().UnwrapOr(nil)), + ReturnItemCollectionMetrics: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_PutItemInput_ReturnItemCollectionMetrics_FromDafny(input.(ComAmazonawsDynamodbTypes.PutItemInput).Dtor_ReturnItemCollectionMetrics().UnwrapOr(nil)), + ConditionalOperator: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_PutItemInput_ConditionalOperator_FromDafny(input.(ComAmazonawsDynamodbTypes.PutItemInput).Dtor_ConditionalOperator().UnwrapOr(nil)), + ConditionExpression: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_PutItemInput_ConditionExpression_FromDafny(input.(ComAmazonawsDynamodbTypes.PutItemInput).Dtor_ConditionExpression().UnwrapOr(nil)), + ExpressionAttributeNames: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_PutItemInput_ExpressionAttributeNames_FromDafny(input.(ComAmazonawsDynamodbTypes.PutItemInput).Dtor_ExpressionAttributeNames().UnwrapOr(nil)), + ExpressionAttributeValues: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_PutItemInput_ExpressionAttributeValues_FromDafny(input.(ComAmazonawsDynamodbTypes.PutItemInput).Dtor_ExpressionAttributeValues().UnwrapOr(nil)), + ReturnValuesOnConditionCheckFailure: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_PutItemInput_ReturnValuesOnConditionCheckFailure_FromDafny(input.(ComAmazonawsDynamodbTypes.PutItemInput).Dtor_ReturnValuesOnConditionCheckFailure().UnwrapOr(nil)), + } +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_PutItemInputTransformOutput_transformedInput_FromDafny(input interface{}) dynamodb.PutItemInput { + return dynamodb.PutItemInput{TableName: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_PutItemInput_TableName_FromDafny(input.(ComAmazonawsDynamodbTypes.PutItemInput).Dtor_TableName()), + Item: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_PutItemInput_Item_FromDafny(input.(ComAmazonawsDynamodbTypes.PutItemInput).Dtor_Item()), + Expected: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_PutItemInput_Expected_FromDafny(input.(ComAmazonawsDynamodbTypes.PutItemInput).Dtor_Expected().UnwrapOr(nil)), + ReturnValues: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_PutItemInput_ReturnValues_FromDafny(input.(ComAmazonawsDynamodbTypes.PutItemInput).Dtor_ReturnValues().UnwrapOr(nil)), + ReturnConsumedCapacity: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_PutItemInput_ReturnConsumedCapacity_FromDafny(input.(ComAmazonawsDynamodbTypes.PutItemInput).Dtor_ReturnConsumedCapacity().UnwrapOr(nil)), + ReturnItemCollectionMetrics: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_PutItemInput_ReturnItemCollectionMetrics_FromDafny(input.(ComAmazonawsDynamodbTypes.PutItemInput).Dtor_ReturnItemCollectionMetrics().UnwrapOr(nil)), + ConditionalOperator: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_PutItemInput_ConditionalOperator_FromDafny(input.(ComAmazonawsDynamodbTypes.PutItemInput).Dtor_ConditionalOperator().UnwrapOr(nil)), + ConditionExpression: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_PutItemInput_ConditionExpression_FromDafny(input.(ComAmazonawsDynamodbTypes.PutItemInput).Dtor_ConditionExpression().UnwrapOr(nil)), + ExpressionAttributeNames: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_PutItemInput_ExpressionAttributeNames_FromDafny(input.(ComAmazonawsDynamodbTypes.PutItemInput).Dtor_ExpressionAttributeNames().UnwrapOr(nil)), + ExpressionAttributeValues: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_PutItemInput_ExpressionAttributeValues_FromDafny(input.(ComAmazonawsDynamodbTypes.PutItemInput).Dtor_ExpressionAttributeValues().UnwrapOr(nil)), + ReturnValuesOnConditionCheckFailure: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_PutItemInput_ReturnValuesOnConditionCheckFailure_FromDafny(input.(ComAmazonawsDynamodbTypes.PutItemInput).Dtor_ReturnValuesOnConditionCheckFailure().UnwrapOr(nil)), + } +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_PutItemOutputTransformInput_sdkOutput_FromDafny(input interface{}) dynamodb.PutItemOutput { + return dynamodb.PutItemOutput{Attributes: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_PutItemOutput_Attributes_FromDafny(input.(ComAmazonawsDynamodbTypes.PutItemOutput).Dtor_Attributes().UnwrapOr(nil)), + ConsumedCapacity: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_PutItemOutput_ConsumedCapacity_FromDafny(input.(ComAmazonawsDynamodbTypes.PutItemOutput).Dtor_ConsumedCapacity().UnwrapOr(nil)), + ItemCollectionMetrics: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_PutItemOutput_ItemCollectionMetrics_FromDafny(input.(ComAmazonawsDynamodbTypes.PutItemOutput).Dtor_ItemCollectionMetrics().UnwrapOr(nil)), + } +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_PutItemOutputTransformInput_originalInput_FromDafny(input interface{}) dynamodb.PutItemInput { + return dynamodb.PutItemInput{TableName: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_PutItemInput_TableName_FromDafny(input.(ComAmazonawsDynamodbTypes.PutItemInput).Dtor_TableName()), + Item: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_PutItemInput_Item_FromDafny(input.(ComAmazonawsDynamodbTypes.PutItemInput).Dtor_Item()), + Expected: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_PutItemInput_Expected_FromDafny(input.(ComAmazonawsDynamodbTypes.PutItemInput).Dtor_Expected().UnwrapOr(nil)), + ReturnValues: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_PutItemInput_ReturnValues_FromDafny(input.(ComAmazonawsDynamodbTypes.PutItemInput).Dtor_ReturnValues().UnwrapOr(nil)), + ReturnConsumedCapacity: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_PutItemInput_ReturnConsumedCapacity_FromDafny(input.(ComAmazonawsDynamodbTypes.PutItemInput).Dtor_ReturnConsumedCapacity().UnwrapOr(nil)), + ReturnItemCollectionMetrics: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_PutItemInput_ReturnItemCollectionMetrics_FromDafny(input.(ComAmazonawsDynamodbTypes.PutItemInput).Dtor_ReturnItemCollectionMetrics().UnwrapOr(nil)), + ConditionalOperator: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_PutItemInput_ConditionalOperator_FromDafny(input.(ComAmazonawsDynamodbTypes.PutItemInput).Dtor_ConditionalOperator().UnwrapOr(nil)), + ConditionExpression: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_PutItemInput_ConditionExpression_FromDafny(input.(ComAmazonawsDynamodbTypes.PutItemInput).Dtor_ConditionExpression().UnwrapOr(nil)), + ExpressionAttributeNames: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_PutItemInput_ExpressionAttributeNames_FromDafny(input.(ComAmazonawsDynamodbTypes.PutItemInput).Dtor_ExpressionAttributeNames().UnwrapOr(nil)), + ExpressionAttributeValues: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_PutItemInput_ExpressionAttributeValues_FromDafny(input.(ComAmazonawsDynamodbTypes.PutItemInput).Dtor_ExpressionAttributeValues().UnwrapOr(nil)), + ReturnValuesOnConditionCheckFailure: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_PutItemInput_ReturnValuesOnConditionCheckFailure_FromDafny(input.(ComAmazonawsDynamodbTypes.PutItemInput).Dtor_ReturnValuesOnConditionCheckFailure().UnwrapOr(nil)), + } +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_PutItemOutputTransformOutput_transformedOutput_FromDafny(input interface{}) dynamodb.PutItemOutput { + return dynamodb.PutItemOutput{Attributes: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_PutItemOutput_Attributes_FromDafny(input.(ComAmazonawsDynamodbTypes.PutItemOutput).Dtor_Attributes().UnwrapOr(nil)), + ConsumedCapacity: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_PutItemOutput_ConsumedCapacity_FromDafny(input.(ComAmazonawsDynamodbTypes.PutItemOutput).Dtor_ConsumedCapacity().UnwrapOr(nil)), + ItemCollectionMetrics: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_PutItemOutput_ItemCollectionMetrics_FromDafny(input.(ComAmazonawsDynamodbTypes.PutItemOutput).Dtor_ItemCollectionMetrics().UnwrapOr(nil)), + } +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_QueryInputTransformInput_sdkInput_FromDafny(input interface{}) dynamodb.QueryInput { + return dynamodb.QueryInput{TableName: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_QueryInput_TableName_FromDafny(input.(ComAmazonawsDynamodbTypes.QueryInput).Dtor_TableName()), + IndexName: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_QueryInput_IndexName_FromDafny(input.(ComAmazonawsDynamodbTypes.QueryInput).Dtor_IndexName().UnwrapOr(nil)), + Select: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_QueryInput_Select_FromDafny(input.(ComAmazonawsDynamodbTypes.QueryInput).Dtor_Select().UnwrapOr(nil)), + AttributesToGet: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_QueryInput_AttributesToGet_FromDafny(input.(ComAmazonawsDynamodbTypes.QueryInput).Dtor_AttributesToGet().UnwrapOr(nil)), + Limit: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_QueryInput_Limit_FromDafny(input.(ComAmazonawsDynamodbTypes.QueryInput).Dtor_Limit().UnwrapOr(nil)), + ConsistentRead: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_QueryInput_ConsistentRead_FromDafny(input.(ComAmazonawsDynamodbTypes.QueryInput).Dtor_ConsistentRead().UnwrapOr(nil)), + KeyConditions: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_QueryInput_KeyConditions_FromDafny(input.(ComAmazonawsDynamodbTypes.QueryInput).Dtor_KeyConditions().UnwrapOr(nil)), + QueryFilter: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_QueryInput_QueryFilter_FromDafny(input.(ComAmazonawsDynamodbTypes.QueryInput).Dtor_QueryFilter().UnwrapOr(nil)), + ConditionalOperator: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_QueryInput_ConditionalOperator_FromDafny(input.(ComAmazonawsDynamodbTypes.QueryInput).Dtor_ConditionalOperator().UnwrapOr(nil)), + ScanIndexForward: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_QueryInput_ScanIndexForward_FromDafny(input.(ComAmazonawsDynamodbTypes.QueryInput).Dtor_ScanIndexForward().UnwrapOr(nil)), + ExclusiveStartKey: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_QueryInput_ExclusiveStartKey_FromDafny(input.(ComAmazonawsDynamodbTypes.QueryInput).Dtor_ExclusiveStartKey().UnwrapOr(nil)), + ReturnConsumedCapacity: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_QueryInput_ReturnConsumedCapacity_FromDafny(input.(ComAmazonawsDynamodbTypes.QueryInput).Dtor_ReturnConsumedCapacity().UnwrapOr(nil)), + ProjectionExpression: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_QueryInput_ProjectionExpression_FromDafny(input.(ComAmazonawsDynamodbTypes.QueryInput).Dtor_ProjectionExpression().UnwrapOr(nil)), + FilterExpression: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_QueryInput_FilterExpression_FromDafny(input.(ComAmazonawsDynamodbTypes.QueryInput).Dtor_FilterExpression().UnwrapOr(nil)), + KeyConditionExpression: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_QueryInput_KeyConditionExpression_FromDafny(input.(ComAmazonawsDynamodbTypes.QueryInput).Dtor_KeyConditionExpression().UnwrapOr(nil)), + ExpressionAttributeNames: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_QueryInput_ExpressionAttributeNames_FromDafny(input.(ComAmazonawsDynamodbTypes.QueryInput).Dtor_ExpressionAttributeNames().UnwrapOr(nil)), + ExpressionAttributeValues: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_QueryInput_ExpressionAttributeValues_FromDafny(input.(ComAmazonawsDynamodbTypes.QueryInput).Dtor_ExpressionAttributeValues().UnwrapOr(nil)), + } +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_QueryInputTransformOutput_transformedInput_FromDafny(input interface{}) dynamodb.QueryInput { + return dynamodb.QueryInput{TableName: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_QueryInput_TableName_FromDafny(input.(ComAmazonawsDynamodbTypes.QueryInput).Dtor_TableName()), + IndexName: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_QueryInput_IndexName_FromDafny(input.(ComAmazonawsDynamodbTypes.QueryInput).Dtor_IndexName().UnwrapOr(nil)), + Select: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_QueryInput_Select_FromDafny(input.(ComAmazonawsDynamodbTypes.QueryInput).Dtor_Select().UnwrapOr(nil)), + AttributesToGet: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_QueryInput_AttributesToGet_FromDafny(input.(ComAmazonawsDynamodbTypes.QueryInput).Dtor_AttributesToGet().UnwrapOr(nil)), + Limit: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_QueryInput_Limit_FromDafny(input.(ComAmazonawsDynamodbTypes.QueryInput).Dtor_Limit().UnwrapOr(nil)), + ConsistentRead: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_QueryInput_ConsistentRead_FromDafny(input.(ComAmazonawsDynamodbTypes.QueryInput).Dtor_ConsistentRead().UnwrapOr(nil)), + KeyConditions: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_QueryInput_KeyConditions_FromDafny(input.(ComAmazonawsDynamodbTypes.QueryInput).Dtor_KeyConditions().UnwrapOr(nil)), + QueryFilter: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_QueryInput_QueryFilter_FromDafny(input.(ComAmazonawsDynamodbTypes.QueryInput).Dtor_QueryFilter().UnwrapOr(nil)), + ConditionalOperator: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_QueryInput_ConditionalOperator_FromDafny(input.(ComAmazonawsDynamodbTypes.QueryInput).Dtor_ConditionalOperator().UnwrapOr(nil)), + ScanIndexForward: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_QueryInput_ScanIndexForward_FromDafny(input.(ComAmazonawsDynamodbTypes.QueryInput).Dtor_ScanIndexForward().UnwrapOr(nil)), + ExclusiveStartKey: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_QueryInput_ExclusiveStartKey_FromDafny(input.(ComAmazonawsDynamodbTypes.QueryInput).Dtor_ExclusiveStartKey().UnwrapOr(nil)), + ReturnConsumedCapacity: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_QueryInput_ReturnConsumedCapacity_FromDafny(input.(ComAmazonawsDynamodbTypes.QueryInput).Dtor_ReturnConsumedCapacity().UnwrapOr(nil)), + ProjectionExpression: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_QueryInput_ProjectionExpression_FromDafny(input.(ComAmazonawsDynamodbTypes.QueryInput).Dtor_ProjectionExpression().UnwrapOr(nil)), + FilterExpression: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_QueryInput_FilterExpression_FromDafny(input.(ComAmazonawsDynamodbTypes.QueryInput).Dtor_FilterExpression().UnwrapOr(nil)), + KeyConditionExpression: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_QueryInput_KeyConditionExpression_FromDafny(input.(ComAmazonawsDynamodbTypes.QueryInput).Dtor_KeyConditionExpression().UnwrapOr(nil)), + ExpressionAttributeNames: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_QueryInput_ExpressionAttributeNames_FromDafny(input.(ComAmazonawsDynamodbTypes.QueryInput).Dtor_ExpressionAttributeNames().UnwrapOr(nil)), + ExpressionAttributeValues: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_QueryInput_ExpressionAttributeValues_FromDafny(input.(ComAmazonawsDynamodbTypes.QueryInput).Dtor_ExpressionAttributeValues().UnwrapOr(nil)), + } +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_QueryOutputTransformInput_sdkOutput_FromDafny(input interface{}) dynamodb.QueryOutput { + return dynamodb.QueryOutput{Items: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_QueryOutput_Items_FromDafny(input.(ComAmazonawsDynamodbTypes.QueryOutput).Dtor_Items().UnwrapOr(nil)), + Count: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_QueryOutput_Count_FromDafny(input.(ComAmazonawsDynamodbTypes.QueryOutput).Dtor_Count().UnwrapOr(nil)), + ScannedCount: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_QueryOutput_ScannedCount_FromDafny(input.(ComAmazonawsDynamodbTypes.QueryOutput).Dtor_ScannedCount().UnwrapOr(nil)), + LastEvaluatedKey: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_QueryOutput_LastEvaluatedKey_FromDafny(input.(ComAmazonawsDynamodbTypes.QueryOutput).Dtor_LastEvaluatedKey().UnwrapOr(nil)), + ConsumedCapacity: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_QueryOutput_ConsumedCapacity_FromDafny(input.(ComAmazonawsDynamodbTypes.QueryOutput).Dtor_ConsumedCapacity().UnwrapOr(nil)), + } +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_QueryOutputTransformInput_originalInput_FromDafny(input interface{}) dynamodb.QueryInput { + return dynamodb.QueryInput{TableName: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_QueryInput_TableName_FromDafny(input.(ComAmazonawsDynamodbTypes.QueryInput).Dtor_TableName()), + IndexName: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_QueryInput_IndexName_FromDafny(input.(ComAmazonawsDynamodbTypes.QueryInput).Dtor_IndexName().UnwrapOr(nil)), + Select: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_QueryInput_Select_FromDafny(input.(ComAmazonawsDynamodbTypes.QueryInput).Dtor_Select().UnwrapOr(nil)), + AttributesToGet: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_QueryInput_AttributesToGet_FromDafny(input.(ComAmazonawsDynamodbTypes.QueryInput).Dtor_AttributesToGet().UnwrapOr(nil)), + Limit: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_QueryInput_Limit_FromDafny(input.(ComAmazonawsDynamodbTypes.QueryInput).Dtor_Limit().UnwrapOr(nil)), + ConsistentRead: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_QueryInput_ConsistentRead_FromDafny(input.(ComAmazonawsDynamodbTypes.QueryInput).Dtor_ConsistentRead().UnwrapOr(nil)), + KeyConditions: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_QueryInput_KeyConditions_FromDafny(input.(ComAmazonawsDynamodbTypes.QueryInput).Dtor_KeyConditions().UnwrapOr(nil)), + QueryFilter: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_QueryInput_QueryFilter_FromDafny(input.(ComAmazonawsDynamodbTypes.QueryInput).Dtor_QueryFilter().UnwrapOr(nil)), + ConditionalOperator: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_QueryInput_ConditionalOperator_FromDafny(input.(ComAmazonawsDynamodbTypes.QueryInput).Dtor_ConditionalOperator().UnwrapOr(nil)), + ScanIndexForward: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_QueryInput_ScanIndexForward_FromDafny(input.(ComAmazonawsDynamodbTypes.QueryInput).Dtor_ScanIndexForward().UnwrapOr(nil)), + ExclusiveStartKey: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_QueryInput_ExclusiveStartKey_FromDafny(input.(ComAmazonawsDynamodbTypes.QueryInput).Dtor_ExclusiveStartKey().UnwrapOr(nil)), + ReturnConsumedCapacity: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_QueryInput_ReturnConsumedCapacity_FromDafny(input.(ComAmazonawsDynamodbTypes.QueryInput).Dtor_ReturnConsumedCapacity().UnwrapOr(nil)), + ProjectionExpression: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_QueryInput_ProjectionExpression_FromDafny(input.(ComAmazonawsDynamodbTypes.QueryInput).Dtor_ProjectionExpression().UnwrapOr(nil)), + FilterExpression: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_QueryInput_FilterExpression_FromDafny(input.(ComAmazonawsDynamodbTypes.QueryInput).Dtor_FilterExpression().UnwrapOr(nil)), + KeyConditionExpression: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_QueryInput_KeyConditionExpression_FromDafny(input.(ComAmazonawsDynamodbTypes.QueryInput).Dtor_KeyConditionExpression().UnwrapOr(nil)), + ExpressionAttributeNames: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_QueryInput_ExpressionAttributeNames_FromDafny(input.(ComAmazonawsDynamodbTypes.QueryInput).Dtor_ExpressionAttributeNames().UnwrapOr(nil)), + ExpressionAttributeValues: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_QueryInput_ExpressionAttributeValues_FromDafny(input.(ComAmazonawsDynamodbTypes.QueryInput).Dtor_ExpressionAttributeValues().UnwrapOr(nil)), + } +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_QueryOutputTransformOutput_transformedOutput_FromDafny(input interface{}) dynamodb.QueryOutput { + return dynamodb.QueryOutput{Items: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_QueryOutput_Items_FromDafny(input.(ComAmazonawsDynamodbTypes.QueryOutput).Dtor_Items().UnwrapOr(nil)), + Count: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_QueryOutput_Count_FromDafny(input.(ComAmazonawsDynamodbTypes.QueryOutput).Dtor_Count().UnwrapOr(nil)), + ScannedCount: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_QueryOutput_ScannedCount_FromDafny(input.(ComAmazonawsDynamodbTypes.QueryOutput).Dtor_ScannedCount().UnwrapOr(nil)), + LastEvaluatedKey: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_QueryOutput_LastEvaluatedKey_FromDafny(input.(ComAmazonawsDynamodbTypes.QueryOutput).Dtor_LastEvaluatedKey().UnwrapOr(nil)), + ConsumedCapacity: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_QueryOutput_ConsumedCapacity_FromDafny(input.(ComAmazonawsDynamodbTypes.QueryOutput).Dtor_ConsumedCapacity().UnwrapOr(nil)), + } +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_ResolveAttributesInput_TableName_FromDafny(input interface{}) string { + return func() string { + + a := UTF8.Encode(input.(dafny.Sequence)).Dtor_value() + s := string(dafny.ToByteArray(a.(dafny.Sequence))) + + return s + }() +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_ResolveAttributesInput_Item_FromDafny(input interface{}) map[string]dynamodbtypes.AttributeValue { + var m map[string]dynamodbtypes.AttributeValue = make(map[string]dynamodbtypes.AttributeValue) + if input == nil { + return nil + } + for i := dafny.Iterate(input.(dafny.Map).Items()); ; { + val, ok := i() + if !ok { + break + } + m[comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_AttributeMap_key_FromDafny((*val.(dafny.Tuple).IndexInt(0)))] = comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_AttributeMap_value_FromDafny((*val.(dafny.Tuple).IndexInt(1))) + } + return m + +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_ResolveAttributesInput_Version_FromDafny(input interface{}) *int32 { + return func() *int32 { + var b int32 + if input == nil { + return nil + } + b = input.(int32) + return &b + }() +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_ResolveAttributesOutput_VirtualFields_FromDafny(input interface{}) map[string]string { + var m map[string]string = make(map[string]string) + if input == nil { + return nil + } + for i := dafny.Iterate(input.(dafny.Map).Items()); ; { + val, ok := i() + if !ok { + break + } + m[Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_StringMap_key_FromDafny((*val.(dafny.Tuple).IndexInt(0)))] = Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_StringMap_value_FromDafny((*val.(dafny.Tuple).IndexInt(1))) + } + return m + +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_StringMap_key_FromDafny(input interface{}) string { + return func() string { + + a := UTF8.Encode(input.(dafny.Sequence)).Dtor_value() + s := string(dafny.ToByteArray(a.(dafny.Sequence))) + + return s + }() +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_StringMap_value_FromDafny(input interface{}) string { + return func() string { + + a := UTF8.Encode(input.(dafny.Sequence)).Dtor_value() + s := string(dafny.ToByteArray(a.(dafny.Sequence))) + + return s + }() +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_ResolveAttributesOutput_CompoundBeacons_FromDafny(input interface{}) map[string]string { + var m map[string]string = make(map[string]string) + if input == nil { + return nil + } + for i := dafny.Iterate(input.(dafny.Map).Items()); ; { + val, ok := i() + if !ok { + break + } + m[Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_StringMap_key_FromDafny((*val.(dafny.Tuple).IndexInt(0)))] = Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_StringMap_value_FromDafny((*val.(dafny.Tuple).IndexInt(1))) + } + return m + +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_ScanInputTransformInput_sdkInput_FromDafny(input interface{}) dynamodb.ScanInput { + return dynamodb.ScanInput{TableName: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ScanInput_TableName_FromDafny(input.(ComAmazonawsDynamodbTypes.ScanInput).Dtor_TableName()), + IndexName: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ScanInput_IndexName_FromDafny(input.(ComAmazonawsDynamodbTypes.ScanInput).Dtor_IndexName().UnwrapOr(nil)), + AttributesToGet: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ScanInput_AttributesToGet_FromDafny(input.(ComAmazonawsDynamodbTypes.ScanInput).Dtor_AttributesToGet().UnwrapOr(nil)), + Limit: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ScanInput_Limit_FromDafny(input.(ComAmazonawsDynamodbTypes.ScanInput).Dtor_Limit().UnwrapOr(nil)), + Select: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ScanInput_Select_FromDafny(input.(ComAmazonawsDynamodbTypes.ScanInput).Dtor_Select().UnwrapOr(nil)), + ScanFilter: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ScanInput_ScanFilter_FromDafny(input.(ComAmazonawsDynamodbTypes.ScanInput).Dtor_ScanFilter().UnwrapOr(nil)), + ConditionalOperator: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ScanInput_ConditionalOperator_FromDafny(input.(ComAmazonawsDynamodbTypes.ScanInput).Dtor_ConditionalOperator().UnwrapOr(nil)), + ExclusiveStartKey: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ScanInput_ExclusiveStartKey_FromDafny(input.(ComAmazonawsDynamodbTypes.ScanInput).Dtor_ExclusiveStartKey().UnwrapOr(nil)), + ReturnConsumedCapacity: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ScanInput_ReturnConsumedCapacity_FromDafny(input.(ComAmazonawsDynamodbTypes.ScanInput).Dtor_ReturnConsumedCapacity().UnwrapOr(nil)), + TotalSegments: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ScanInput_TotalSegments_FromDafny(input.(ComAmazonawsDynamodbTypes.ScanInput).Dtor_TotalSegments().UnwrapOr(nil)), + Segment: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ScanInput_Segment_FromDafny(input.(ComAmazonawsDynamodbTypes.ScanInput).Dtor_Segment().UnwrapOr(nil)), + ProjectionExpression: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ScanInput_ProjectionExpression_FromDafny(input.(ComAmazonawsDynamodbTypes.ScanInput).Dtor_ProjectionExpression().UnwrapOr(nil)), + FilterExpression: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ScanInput_FilterExpression_FromDafny(input.(ComAmazonawsDynamodbTypes.ScanInput).Dtor_FilterExpression().UnwrapOr(nil)), + ExpressionAttributeNames: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ScanInput_ExpressionAttributeNames_FromDafny(input.(ComAmazonawsDynamodbTypes.ScanInput).Dtor_ExpressionAttributeNames().UnwrapOr(nil)), + ExpressionAttributeValues: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ScanInput_ExpressionAttributeValues_FromDafny(input.(ComAmazonawsDynamodbTypes.ScanInput).Dtor_ExpressionAttributeValues().UnwrapOr(nil)), + ConsistentRead: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ScanInput_ConsistentRead_FromDafny(input.(ComAmazonawsDynamodbTypes.ScanInput).Dtor_ConsistentRead().UnwrapOr(nil)), + } +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_ScanInputTransformOutput_transformedInput_FromDafny(input interface{}) dynamodb.ScanInput { + return dynamodb.ScanInput{TableName: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ScanInput_TableName_FromDafny(input.(ComAmazonawsDynamodbTypes.ScanInput).Dtor_TableName()), + IndexName: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ScanInput_IndexName_FromDafny(input.(ComAmazonawsDynamodbTypes.ScanInput).Dtor_IndexName().UnwrapOr(nil)), + AttributesToGet: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ScanInput_AttributesToGet_FromDafny(input.(ComAmazonawsDynamodbTypes.ScanInput).Dtor_AttributesToGet().UnwrapOr(nil)), + Limit: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ScanInput_Limit_FromDafny(input.(ComAmazonawsDynamodbTypes.ScanInput).Dtor_Limit().UnwrapOr(nil)), + Select: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ScanInput_Select_FromDafny(input.(ComAmazonawsDynamodbTypes.ScanInput).Dtor_Select().UnwrapOr(nil)), + ScanFilter: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ScanInput_ScanFilter_FromDafny(input.(ComAmazonawsDynamodbTypes.ScanInput).Dtor_ScanFilter().UnwrapOr(nil)), + ConditionalOperator: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ScanInput_ConditionalOperator_FromDafny(input.(ComAmazonawsDynamodbTypes.ScanInput).Dtor_ConditionalOperator().UnwrapOr(nil)), + ExclusiveStartKey: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ScanInput_ExclusiveStartKey_FromDafny(input.(ComAmazonawsDynamodbTypes.ScanInput).Dtor_ExclusiveStartKey().UnwrapOr(nil)), + ReturnConsumedCapacity: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ScanInput_ReturnConsumedCapacity_FromDafny(input.(ComAmazonawsDynamodbTypes.ScanInput).Dtor_ReturnConsumedCapacity().UnwrapOr(nil)), + TotalSegments: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ScanInput_TotalSegments_FromDafny(input.(ComAmazonawsDynamodbTypes.ScanInput).Dtor_TotalSegments().UnwrapOr(nil)), + Segment: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ScanInput_Segment_FromDafny(input.(ComAmazonawsDynamodbTypes.ScanInput).Dtor_Segment().UnwrapOr(nil)), + ProjectionExpression: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ScanInput_ProjectionExpression_FromDafny(input.(ComAmazonawsDynamodbTypes.ScanInput).Dtor_ProjectionExpression().UnwrapOr(nil)), + FilterExpression: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ScanInput_FilterExpression_FromDafny(input.(ComAmazonawsDynamodbTypes.ScanInput).Dtor_FilterExpression().UnwrapOr(nil)), + ExpressionAttributeNames: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ScanInput_ExpressionAttributeNames_FromDafny(input.(ComAmazonawsDynamodbTypes.ScanInput).Dtor_ExpressionAttributeNames().UnwrapOr(nil)), + ExpressionAttributeValues: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ScanInput_ExpressionAttributeValues_FromDafny(input.(ComAmazonawsDynamodbTypes.ScanInput).Dtor_ExpressionAttributeValues().UnwrapOr(nil)), + ConsistentRead: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ScanInput_ConsistentRead_FromDafny(input.(ComAmazonawsDynamodbTypes.ScanInput).Dtor_ConsistentRead().UnwrapOr(nil)), + } +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_ScanOutputTransformInput_sdkOutput_FromDafny(input interface{}) dynamodb.ScanOutput { + return dynamodb.ScanOutput{Items: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ScanOutput_Items_FromDafny(input.(ComAmazonawsDynamodbTypes.ScanOutput).Dtor_Items().UnwrapOr(nil)), + Count: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ScanOutput_Count_FromDafny(input.(ComAmazonawsDynamodbTypes.ScanOutput).Dtor_Count().UnwrapOr(nil)), + ScannedCount: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ScanOutput_ScannedCount_FromDafny(input.(ComAmazonawsDynamodbTypes.ScanOutput).Dtor_ScannedCount().UnwrapOr(nil)), + LastEvaluatedKey: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ScanOutput_LastEvaluatedKey_FromDafny(input.(ComAmazonawsDynamodbTypes.ScanOutput).Dtor_LastEvaluatedKey().UnwrapOr(nil)), + ConsumedCapacity: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ScanOutput_ConsumedCapacity_FromDafny(input.(ComAmazonawsDynamodbTypes.ScanOutput).Dtor_ConsumedCapacity().UnwrapOr(nil)), + } +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_ScanOutputTransformInput_originalInput_FromDafny(input interface{}) dynamodb.ScanInput { + return dynamodb.ScanInput{TableName: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ScanInput_TableName_FromDafny(input.(ComAmazonawsDynamodbTypes.ScanInput).Dtor_TableName()), + IndexName: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ScanInput_IndexName_FromDafny(input.(ComAmazonawsDynamodbTypes.ScanInput).Dtor_IndexName().UnwrapOr(nil)), + AttributesToGet: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ScanInput_AttributesToGet_FromDafny(input.(ComAmazonawsDynamodbTypes.ScanInput).Dtor_AttributesToGet().UnwrapOr(nil)), + Limit: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ScanInput_Limit_FromDafny(input.(ComAmazonawsDynamodbTypes.ScanInput).Dtor_Limit().UnwrapOr(nil)), + Select: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ScanInput_Select_FromDafny(input.(ComAmazonawsDynamodbTypes.ScanInput).Dtor_Select().UnwrapOr(nil)), + ScanFilter: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ScanInput_ScanFilter_FromDafny(input.(ComAmazonawsDynamodbTypes.ScanInput).Dtor_ScanFilter().UnwrapOr(nil)), + ConditionalOperator: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ScanInput_ConditionalOperator_FromDafny(input.(ComAmazonawsDynamodbTypes.ScanInput).Dtor_ConditionalOperator().UnwrapOr(nil)), + ExclusiveStartKey: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ScanInput_ExclusiveStartKey_FromDafny(input.(ComAmazonawsDynamodbTypes.ScanInput).Dtor_ExclusiveStartKey().UnwrapOr(nil)), + ReturnConsumedCapacity: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ScanInput_ReturnConsumedCapacity_FromDafny(input.(ComAmazonawsDynamodbTypes.ScanInput).Dtor_ReturnConsumedCapacity().UnwrapOr(nil)), + TotalSegments: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ScanInput_TotalSegments_FromDafny(input.(ComAmazonawsDynamodbTypes.ScanInput).Dtor_TotalSegments().UnwrapOr(nil)), + Segment: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ScanInput_Segment_FromDafny(input.(ComAmazonawsDynamodbTypes.ScanInput).Dtor_Segment().UnwrapOr(nil)), + ProjectionExpression: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ScanInput_ProjectionExpression_FromDafny(input.(ComAmazonawsDynamodbTypes.ScanInput).Dtor_ProjectionExpression().UnwrapOr(nil)), + FilterExpression: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ScanInput_FilterExpression_FromDafny(input.(ComAmazonawsDynamodbTypes.ScanInput).Dtor_FilterExpression().UnwrapOr(nil)), + ExpressionAttributeNames: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ScanInput_ExpressionAttributeNames_FromDafny(input.(ComAmazonawsDynamodbTypes.ScanInput).Dtor_ExpressionAttributeNames().UnwrapOr(nil)), + ExpressionAttributeValues: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ScanInput_ExpressionAttributeValues_FromDafny(input.(ComAmazonawsDynamodbTypes.ScanInput).Dtor_ExpressionAttributeValues().UnwrapOr(nil)), + ConsistentRead: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ScanInput_ConsistentRead_FromDafny(input.(ComAmazonawsDynamodbTypes.ScanInput).Dtor_ConsistentRead().UnwrapOr(nil)), + } +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_ScanOutputTransformOutput_transformedOutput_FromDafny(input interface{}) dynamodb.ScanOutput { + return dynamodb.ScanOutput{Items: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ScanOutput_Items_FromDafny(input.(ComAmazonawsDynamodbTypes.ScanOutput).Dtor_Items().UnwrapOr(nil)), + Count: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ScanOutput_Count_FromDafny(input.(ComAmazonawsDynamodbTypes.ScanOutput).Dtor_Count().UnwrapOr(nil)), + ScannedCount: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ScanOutput_ScannedCount_FromDafny(input.(ComAmazonawsDynamodbTypes.ScanOutput).Dtor_ScannedCount().UnwrapOr(nil)), + LastEvaluatedKey: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ScanOutput_LastEvaluatedKey_FromDafny(input.(ComAmazonawsDynamodbTypes.ScanOutput).Dtor_LastEvaluatedKey().UnwrapOr(nil)), + ConsumedCapacity: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_ScanOutput_ConsumedCapacity_FromDafny(input.(ComAmazonawsDynamodbTypes.ScanOutput).Dtor_ConsumedCapacity().UnwrapOr(nil)), + } +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_TransactGetItemsInputTransformInput_sdkInput_FromDafny(input interface{}) dynamodb.TransactGetItemsInput { + return dynamodb.TransactGetItemsInput{TransactItems: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_TransactGetItemsInput_TransactItems_FromDafny(input.(ComAmazonawsDynamodbTypes.TransactGetItemsInput).Dtor_TransactItems()), + ReturnConsumedCapacity: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_TransactGetItemsInput_ReturnConsumedCapacity_FromDafny(input.(ComAmazonawsDynamodbTypes.TransactGetItemsInput).Dtor_ReturnConsumedCapacity().UnwrapOr(nil)), + } +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_TransactGetItemsInputTransformOutput_transformedInput_FromDafny(input interface{}) dynamodb.TransactGetItemsInput { + return dynamodb.TransactGetItemsInput{TransactItems: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_TransactGetItemsInput_TransactItems_FromDafny(input.(ComAmazonawsDynamodbTypes.TransactGetItemsInput).Dtor_TransactItems()), + ReturnConsumedCapacity: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_TransactGetItemsInput_ReturnConsumedCapacity_FromDafny(input.(ComAmazonawsDynamodbTypes.TransactGetItemsInput).Dtor_ReturnConsumedCapacity().UnwrapOr(nil)), + } +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_TransactGetItemsOutputTransformInput_sdkOutput_FromDafny(input interface{}) dynamodb.TransactGetItemsOutput { + return dynamodb.TransactGetItemsOutput{ConsumedCapacity: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_TransactGetItemsOutput_ConsumedCapacity_FromDafny(input.(ComAmazonawsDynamodbTypes.TransactGetItemsOutput).Dtor_ConsumedCapacity().UnwrapOr(nil)), + Responses: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_TransactGetItemsOutput_Responses_FromDafny(input.(ComAmazonawsDynamodbTypes.TransactGetItemsOutput).Dtor_Responses().UnwrapOr(nil)), + } +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_TransactGetItemsOutputTransformInput_originalInput_FromDafny(input interface{}) dynamodb.TransactGetItemsInput { + return dynamodb.TransactGetItemsInput{TransactItems: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_TransactGetItemsInput_TransactItems_FromDafny(input.(ComAmazonawsDynamodbTypes.TransactGetItemsInput).Dtor_TransactItems()), + ReturnConsumedCapacity: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_TransactGetItemsInput_ReturnConsumedCapacity_FromDafny(input.(ComAmazonawsDynamodbTypes.TransactGetItemsInput).Dtor_ReturnConsumedCapacity().UnwrapOr(nil)), + } +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_TransactGetItemsOutputTransformOutput_transformedOutput_FromDafny(input interface{}) dynamodb.TransactGetItemsOutput { + return dynamodb.TransactGetItemsOutput{ConsumedCapacity: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_TransactGetItemsOutput_ConsumedCapacity_FromDafny(input.(ComAmazonawsDynamodbTypes.TransactGetItemsOutput).Dtor_ConsumedCapacity().UnwrapOr(nil)), + Responses: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_TransactGetItemsOutput_Responses_FromDafny(input.(ComAmazonawsDynamodbTypes.TransactGetItemsOutput).Dtor_Responses().UnwrapOr(nil)), + } +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_TransactWriteItemsInputTransformInput_sdkInput_FromDafny(input interface{}) dynamodb.TransactWriteItemsInput { + return dynamodb.TransactWriteItemsInput{TransactItems: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_TransactWriteItemsInput_TransactItems_FromDafny(input.(ComAmazonawsDynamodbTypes.TransactWriteItemsInput).Dtor_TransactItems()), + ReturnConsumedCapacity: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_TransactWriteItemsInput_ReturnConsumedCapacity_FromDafny(input.(ComAmazonawsDynamodbTypes.TransactWriteItemsInput).Dtor_ReturnConsumedCapacity().UnwrapOr(nil)), + ReturnItemCollectionMetrics: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_TransactWriteItemsInput_ReturnItemCollectionMetrics_FromDafny(input.(ComAmazonawsDynamodbTypes.TransactWriteItemsInput).Dtor_ReturnItemCollectionMetrics().UnwrapOr(nil)), + ClientRequestToken: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_TransactWriteItemsInput_ClientRequestToken_FromDafny(input.(ComAmazonawsDynamodbTypes.TransactWriteItemsInput).Dtor_ClientRequestToken().UnwrapOr(nil)), + } +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_TransactWriteItemsInputTransformOutput_transformedInput_FromDafny(input interface{}) dynamodb.TransactWriteItemsInput { + return dynamodb.TransactWriteItemsInput{TransactItems: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_TransactWriteItemsInput_TransactItems_FromDafny(input.(ComAmazonawsDynamodbTypes.TransactWriteItemsInput).Dtor_TransactItems()), + ReturnConsumedCapacity: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_TransactWriteItemsInput_ReturnConsumedCapacity_FromDafny(input.(ComAmazonawsDynamodbTypes.TransactWriteItemsInput).Dtor_ReturnConsumedCapacity().UnwrapOr(nil)), + ReturnItemCollectionMetrics: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_TransactWriteItemsInput_ReturnItemCollectionMetrics_FromDafny(input.(ComAmazonawsDynamodbTypes.TransactWriteItemsInput).Dtor_ReturnItemCollectionMetrics().UnwrapOr(nil)), + ClientRequestToken: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_TransactWriteItemsInput_ClientRequestToken_FromDafny(input.(ComAmazonawsDynamodbTypes.TransactWriteItemsInput).Dtor_ClientRequestToken().UnwrapOr(nil)), + } +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_TransactWriteItemsOutputTransformInput_sdkOutput_FromDafny(input interface{}) dynamodb.TransactWriteItemsOutput { + return dynamodb.TransactWriteItemsOutput{ConsumedCapacity: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_TransactWriteItemsOutput_ConsumedCapacity_FromDafny(input.(ComAmazonawsDynamodbTypes.TransactWriteItemsOutput).Dtor_ConsumedCapacity().UnwrapOr(nil)), + ItemCollectionMetrics: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_TransactWriteItemsOutput_ItemCollectionMetrics_FromDafny(input.(ComAmazonawsDynamodbTypes.TransactWriteItemsOutput).Dtor_ItemCollectionMetrics().UnwrapOr(nil)), + } +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_TransactWriteItemsOutputTransformInput_originalInput_FromDafny(input interface{}) dynamodb.TransactWriteItemsInput { + return dynamodb.TransactWriteItemsInput{TransactItems: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_TransactWriteItemsInput_TransactItems_FromDafny(input.(ComAmazonawsDynamodbTypes.TransactWriteItemsInput).Dtor_TransactItems()), + ReturnConsumedCapacity: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_TransactWriteItemsInput_ReturnConsumedCapacity_FromDafny(input.(ComAmazonawsDynamodbTypes.TransactWriteItemsInput).Dtor_ReturnConsumedCapacity().UnwrapOr(nil)), + ReturnItemCollectionMetrics: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_TransactWriteItemsInput_ReturnItemCollectionMetrics_FromDafny(input.(ComAmazonawsDynamodbTypes.TransactWriteItemsInput).Dtor_ReturnItemCollectionMetrics().UnwrapOr(nil)), + ClientRequestToken: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_TransactWriteItemsInput_ClientRequestToken_FromDafny(input.(ComAmazonawsDynamodbTypes.TransactWriteItemsInput).Dtor_ClientRequestToken().UnwrapOr(nil)), + } +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_TransactWriteItemsOutputTransformOutput_transformedOutput_FromDafny(input interface{}) dynamodb.TransactWriteItemsOutput { + return dynamodb.TransactWriteItemsOutput{ConsumedCapacity: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_TransactWriteItemsOutput_ConsumedCapacity_FromDafny(input.(ComAmazonawsDynamodbTypes.TransactWriteItemsOutput).Dtor_ConsumedCapacity().UnwrapOr(nil)), + ItemCollectionMetrics: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_TransactWriteItemsOutput_ItemCollectionMetrics_FromDafny(input.(ComAmazonawsDynamodbTypes.TransactWriteItemsOutput).Dtor_ItemCollectionMetrics().UnwrapOr(nil)), + } +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_UpdateItemInputTransformInput_sdkInput_FromDafny(input interface{}) dynamodb.UpdateItemInput { + return dynamodb.UpdateItemInput{TableName: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_UpdateItemInput_TableName_FromDafny(input.(ComAmazonawsDynamodbTypes.UpdateItemInput).Dtor_TableName()), + Key: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_UpdateItemInput_Key_FromDafny(input.(ComAmazonawsDynamodbTypes.UpdateItemInput).Dtor_Key()), + AttributeUpdates: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_UpdateItemInput_AttributeUpdates_FromDafny(input.(ComAmazonawsDynamodbTypes.UpdateItemInput).Dtor_AttributeUpdates().UnwrapOr(nil)), + Expected: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_UpdateItemInput_Expected_FromDafny(input.(ComAmazonawsDynamodbTypes.UpdateItemInput).Dtor_Expected().UnwrapOr(nil)), + ConditionalOperator: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_UpdateItemInput_ConditionalOperator_FromDafny(input.(ComAmazonawsDynamodbTypes.UpdateItemInput).Dtor_ConditionalOperator().UnwrapOr(nil)), + ReturnValues: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_UpdateItemInput_ReturnValues_FromDafny(input.(ComAmazonawsDynamodbTypes.UpdateItemInput).Dtor_ReturnValues().UnwrapOr(nil)), + ReturnConsumedCapacity: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_UpdateItemInput_ReturnConsumedCapacity_FromDafny(input.(ComAmazonawsDynamodbTypes.UpdateItemInput).Dtor_ReturnConsumedCapacity().UnwrapOr(nil)), + ReturnItemCollectionMetrics: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_UpdateItemInput_ReturnItemCollectionMetrics_FromDafny(input.(ComAmazonawsDynamodbTypes.UpdateItemInput).Dtor_ReturnItemCollectionMetrics().UnwrapOr(nil)), + UpdateExpression: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_UpdateItemInput_UpdateExpression_FromDafny(input.(ComAmazonawsDynamodbTypes.UpdateItemInput).Dtor_UpdateExpression().UnwrapOr(nil)), + ConditionExpression: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_UpdateItemInput_ConditionExpression_FromDafny(input.(ComAmazonawsDynamodbTypes.UpdateItemInput).Dtor_ConditionExpression().UnwrapOr(nil)), + ExpressionAttributeNames: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_UpdateItemInput_ExpressionAttributeNames_FromDafny(input.(ComAmazonawsDynamodbTypes.UpdateItemInput).Dtor_ExpressionAttributeNames().UnwrapOr(nil)), + ExpressionAttributeValues: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_UpdateItemInput_ExpressionAttributeValues_FromDafny(input.(ComAmazonawsDynamodbTypes.UpdateItemInput).Dtor_ExpressionAttributeValues().UnwrapOr(nil)), + ReturnValuesOnConditionCheckFailure: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_UpdateItemInput_ReturnValuesOnConditionCheckFailure_FromDafny(input.(ComAmazonawsDynamodbTypes.UpdateItemInput).Dtor_ReturnValuesOnConditionCheckFailure().UnwrapOr(nil)), + } +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_UpdateItemInputTransformOutput_transformedInput_FromDafny(input interface{}) dynamodb.UpdateItemInput { + return dynamodb.UpdateItemInput{TableName: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_UpdateItemInput_TableName_FromDafny(input.(ComAmazonawsDynamodbTypes.UpdateItemInput).Dtor_TableName()), + Key: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_UpdateItemInput_Key_FromDafny(input.(ComAmazonawsDynamodbTypes.UpdateItemInput).Dtor_Key()), + AttributeUpdates: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_UpdateItemInput_AttributeUpdates_FromDafny(input.(ComAmazonawsDynamodbTypes.UpdateItemInput).Dtor_AttributeUpdates().UnwrapOr(nil)), + Expected: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_UpdateItemInput_Expected_FromDafny(input.(ComAmazonawsDynamodbTypes.UpdateItemInput).Dtor_Expected().UnwrapOr(nil)), + ConditionalOperator: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_UpdateItemInput_ConditionalOperator_FromDafny(input.(ComAmazonawsDynamodbTypes.UpdateItemInput).Dtor_ConditionalOperator().UnwrapOr(nil)), + ReturnValues: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_UpdateItemInput_ReturnValues_FromDafny(input.(ComAmazonawsDynamodbTypes.UpdateItemInput).Dtor_ReturnValues().UnwrapOr(nil)), + ReturnConsumedCapacity: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_UpdateItemInput_ReturnConsumedCapacity_FromDafny(input.(ComAmazonawsDynamodbTypes.UpdateItemInput).Dtor_ReturnConsumedCapacity().UnwrapOr(nil)), + ReturnItemCollectionMetrics: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_UpdateItemInput_ReturnItemCollectionMetrics_FromDafny(input.(ComAmazonawsDynamodbTypes.UpdateItemInput).Dtor_ReturnItemCollectionMetrics().UnwrapOr(nil)), + UpdateExpression: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_UpdateItemInput_UpdateExpression_FromDafny(input.(ComAmazonawsDynamodbTypes.UpdateItemInput).Dtor_UpdateExpression().UnwrapOr(nil)), + ConditionExpression: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_UpdateItemInput_ConditionExpression_FromDafny(input.(ComAmazonawsDynamodbTypes.UpdateItemInput).Dtor_ConditionExpression().UnwrapOr(nil)), + ExpressionAttributeNames: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_UpdateItemInput_ExpressionAttributeNames_FromDafny(input.(ComAmazonawsDynamodbTypes.UpdateItemInput).Dtor_ExpressionAttributeNames().UnwrapOr(nil)), + ExpressionAttributeValues: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_UpdateItemInput_ExpressionAttributeValues_FromDafny(input.(ComAmazonawsDynamodbTypes.UpdateItemInput).Dtor_ExpressionAttributeValues().UnwrapOr(nil)), + ReturnValuesOnConditionCheckFailure: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_UpdateItemInput_ReturnValuesOnConditionCheckFailure_FromDafny(input.(ComAmazonawsDynamodbTypes.UpdateItemInput).Dtor_ReturnValuesOnConditionCheckFailure().UnwrapOr(nil)), + } +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_UpdateItemOutputTransformInput_sdkOutput_FromDafny(input interface{}) dynamodb.UpdateItemOutput { + return dynamodb.UpdateItemOutput{Attributes: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_UpdateItemOutput_Attributes_FromDafny(input.(ComAmazonawsDynamodbTypes.UpdateItemOutput).Dtor_Attributes().UnwrapOr(nil)), + ConsumedCapacity: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_UpdateItemOutput_ConsumedCapacity_FromDafny(input.(ComAmazonawsDynamodbTypes.UpdateItemOutput).Dtor_ConsumedCapacity().UnwrapOr(nil)), + ItemCollectionMetrics: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_UpdateItemOutput_ItemCollectionMetrics_FromDafny(input.(ComAmazonawsDynamodbTypes.UpdateItemOutput).Dtor_ItemCollectionMetrics().UnwrapOr(nil)), + } +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_UpdateItemOutputTransformInput_originalInput_FromDafny(input interface{}) dynamodb.UpdateItemInput { + return dynamodb.UpdateItemInput{TableName: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_UpdateItemInput_TableName_FromDafny(input.(ComAmazonawsDynamodbTypes.UpdateItemInput).Dtor_TableName()), + Key: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_UpdateItemInput_Key_FromDafny(input.(ComAmazonawsDynamodbTypes.UpdateItemInput).Dtor_Key()), + AttributeUpdates: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_UpdateItemInput_AttributeUpdates_FromDafny(input.(ComAmazonawsDynamodbTypes.UpdateItemInput).Dtor_AttributeUpdates().UnwrapOr(nil)), + Expected: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_UpdateItemInput_Expected_FromDafny(input.(ComAmazonawsDynamodbTypes.UpdateItemInput).Dtor_Expected().UnwrapOr(nil)), + ConditionalOperator: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_UpdateItemInput_ConditionalOperator_FromDafny(input.(ComAmazonawsDynamodbTypes.UpdateItemInput).Dtor_ConditionalOperator().UnwrapOr(nil)), + ReturnValues: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_UpdateItemInput_ReturnValues_FromDafny(input.(ComAmazonawsDynamodbTypes.UpdateItemInput).Dtor_ReturnValues().UnwrapOr(nil)), + ReturnConsumedCapacity: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_UpdateItemInput_ReturnConsumedCapacity_FromDafny(input.(ComAmazonawsDynamodbTypes.UpdateItemInput).Dtor_ReturnConsumedCapacity().UnwrapOr(nil)), + ReturnItemCollectionMetrics: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_UpdateItemInput_ReturnItemCollectionMetrics_FromDafny(input.(ComAmazonawsDynamodbTypes.UpdateItemInput).Dtor_ReturnItemCollectionMetrics().UnwrapOr(nil)), + UpdateExpression: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_UpdateItemInput_UpdateExpression_FromDafny(input.(ComAmazonawsDynamodbTypes.UpdateItemInput).Dtor_UpdateExpression().UnwrapOr(nil)), + ConditionExpression: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_UpdateItemInput_ConditionExpression_FromDafny(input.(ComAmazonawsDynamodbTypes.UpdateItemInput).Dtor_ConditionExpression().UnwrapOr(nil)), + ExpressionAttributeNames: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_UpdateItemInput_ExpressionAttributeNames_FromDafny(input.(ComAmazonawsDynamodbTypes.UpdateItemInput).Dtor_ExpressionAttributeNames().UnwrapOr(nil)), + ExpressionAttributeValues: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_UpdateItemInput_ExpressionAttributeValues_FromDafny(input.(ComAmazonawsDynamodbTypes.UpdateItemInput).Dtor_ExpressionAttributeValues().UnwrapOr(nil)), + ReturnValuesOnConditionCheckFailure: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_UpdateItemInput_ReturnValuesOnConditionCheckFailure_FromDafny(input.(ComAmazonawsDynamodbTypes.UpdateItemInput).Dtor_ReturnValuesOnConditionCheckFailure().UnwrapOr(nil)), + } +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_UpdateItemOutputTransformOutput_transformedOutput_FromDafny(input interface{}) dynamodb.UpdateItemOutput { + return dynamodb.UpdateItemOutput{Attributes: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_UpdateItemOutput_Attributes_FromDafny(input.(ComAmazonawsDynamodbTypes.UpdateItemOutput).Dtor_Attributes().UnwrapOr(nil)), + ConsumedCapacity: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_UpdateItemOutput_ConsumedCapacity_FromDafny(input.(ComAmazonawsDynamodbTypes.UpdateItemOutput).Dtor_ConsumedCapacity().UnwrapOr(nil)), + ItemCollectionMetrics: comamazonawsdynamodbsmithygenerated.Com_amazonaws_dynamodb_UpdateItemOutput_ItemCollectionMetrics_FromDafny(input.(ComAmazonawsDynamodbTypes.UpdateItemOutput).Dtor_ItemCollectionMetrics().UnwrapOr(nil)), + } +} +func Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_DynamoDbEncryptionTransformsException_message_FromDafny(input interface{}) string { + return func() string { + + a := UTF8.Encode(input.(dafny.Sequence)).Dtor_value() + s := string(dafny.ToByteArray(a.(dafny.Sequence))) + + return s + }() +} diff --git a/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes/errors.go b/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes/errors.go new file mode 100644 index 000000000..c827f8620 --- /dev/null +++ b/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes/errors.go @@ -0,0 +1,17 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes + +import ( + "fmt" +) + +type DynamoDbEncryptionTransformsException struct { + DynamoDbEncryptionTransformsBaseException + Message string + ErrorCodeOverride *string +} + +func (e DynamoDbEncryptionTransformsException) Error() string { + return fmt.Sprintf("%s: %s", e.ErrorCodeOverride, e.Message) +} diff --git a/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes/types.go b/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes/types.go new file mode 100644 index 000000000..55c7f111b --- /dev/null +++ b/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes/types.go @@ -0,0 +1,702 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes + +import ( + "fmt" + + "github.com/aws/aws-sdk-go-v2/service/dynamodb" + dynamodbtypes "github.com/aws/aws-sdk-go-v2/service/dynamodb/types" +) + +type ResolveAttributesOutput struct { + CompoundBeacons map[string]string + + VirtualFields map[string]string +} + +func (input ResolveAttributesOutput) Validate() error { + if input.CompoundBeacons == nil { + return fmt.Errorf("input.CompoundBeacons is required but has a nil value.") + } + if input.VirtualFields == nil { + return fmt.Errorf("input.VirtualFields is required but has a nil value.") + } + + return nil +} + +type ResolveAttributesInput struct { + Item map[string]dynamodbtypes.AttributeValue + + TableName string + + Version *int32 +} + +func (input ResolveAttributesInput) Validate() error { + if input.Item == nil { + return fmt.Errorf("input.Item is required but has a nil value.") + } + if input.Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_ResolveAttributesInput_Item_Validate() != nil { + return input.Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_ResolveAttributesInput_Item_Validate() + } + if len(input.TableName) < 3 { + return fmt.Errorf("TableName has a minimum length of 3 but has the length of %d.", len(input.TableName)) + } + if len(input.TableName) > 255 { + return fmt.Errorf("TableName has a maximum length of 255 but has the length of %d.", len(input.TableName)) + } + if input.Version != nil { + if *input.Version < 1 { + return fmt.Errorf("VersionNumber has a minimum of 1 but has the value of %d.", *input.Version) + } + } + + return nil +} + +func (input ResolveAttributesInput) Com_amazonaws_dynamodb_AttributeMap_value_Validate(Value dynamodbtypes.AttributeValue) error { + if Value == nil { + return nil + } + switch unionType := Value.(type) { + case *dynamodbtypes.AttributeValueMemberS: + case *dynamodbtypes.AttributeValueMemberN: + case *dynamodbtypes.AttributeValueMemberB: + case *dynamodbtypes.AttributeValueMemberSS: + case *dynamodbtypes.AttributeValueMemberNS: + case *dynamodbtypes.AttributeValueMemberBS: + case *dynamodbtypes.AttributeValueMemberM: + case *dynamodbtypes.AttributeValueMemberL: + case *dynamodbtypes.AttributeValueMemberNULL: + case *dynamodbtypes.AttributeValueMemberBOOL: + // Default case should not be reached. + default: + panic(fmt.Sprintf("Unhandled union type: %T ", unionType)) + } + + return nil +} +func (input ResolveAttributesInput) Com_amazonaws_dynamodb_MapAttributeValue_value_Validate(Value dynamodbtypes.AttributeValue) error { + if Value == nil { + return nil + } + switch unionType := Value.(type) { + case *dynamodbtypes.AttributeValueMemberS: + case *dynamodbtypes.AttributeValueMemberN: + case *dynamodbtypes.AttributeValueMemberB: + case *dynamodbtypes.AttributeValueMemberSS: + case *dynamodbtypes.AttributeValueMemberNS: + case *dynamodbtypes.AttributeValueMemberBS: + case *dynamodbtypes.AttributeValueMemberM: + if input.Com_amazonaws_dynamodb_AttributeValue_M_Validate(unionType.Value) != nil { + return input.Com_amazonaws_dynamodb_AttributeValue_M_Validate(unionType.Value) + } + case *dynamodbtypes.AttributeValueMemberL: + case *dynamodbtypes.AttributeValueMemberNULL: + case *dynamodbtypes.AttributeValueMemberBOOL: + // Default case should not be reached. + default: + panic(fmt.Sprintf("Unhandled union type: %T ", unionType)) + } + + return nil +} +func (input ResolveAttributesInput) Com_amazonaws_dynamodb_AttributeValue_M_Validate(Value map[string]dynamodbtypes.AttributeValue) error { + for key, value := range Value { + if len(key) < 0 { + return fmt.Errorf("AttributeName has a minimum length of 0 but has the length of %d.", len(key)) + } + if len(key) > 65535 { + return fmt.Errorf("AttributeName has a maximum length of 65535 but has the length of %d.", len(key)) + } + if input.Com_amazonaws_dynamodb_MapAttributeValue_value_Validate(value) != nil { + return input.Com_amazonaws_dynamodb_MapAttributeValue_value_Validate(value) + } + } + + return nil +} +func (input ResolveAttributesInput) Com_amazonaws_dynamodb_ListAttributeValue_member_Validate(Value dynamodbtypes.AttributeValue) error { + if Value == nil { + return nil + } + switch unionType := Value.(type) { + case *dynamodbtypes.AttributeValueMemberS: + case *dynamodbtypes.AttributeValueMemberN: + case *dynamodbtypes.AttributeValueMemberB: + case *dynamodbtypes.AttributeValueMemberSS: + case *dynamodbtypes.AttributeValueMemberNS: + case *dynamodbtypes.AttributeValueMemberBS: + case *dynamodbtypes.AttributeValueMemberM: + case *dynamodbtypes.AttributeValueMemberL: + if input.Com_amazonaws_dynamodb_AttributeValue_L_Validate(unionType.Value) != nil { + return input.Com_amazonaws_dynamodb_AttributeValue_L_Validate(unionType.Value) + } + case *dynamodbtypes.AttributeValueMemberNULL: + case *dynamodbtypes.AttributeValueMemberBOOL: + // Default case should not be reached. + default: + panic(fmt.Sprintf("Unhandled union type: %T ", unionType)) + } + + return nil +} +func (input ResolveAttributesInput) Com_amazonaws_dynamodb_AttributeValue_L_Validate(Value []dynamodbtypes.AttributeValue) error { + for _, item := range Value { + if input.Com_amazonaws_dynamodb_ListAttributeValue_member_Validate(item) != nil { + return input.Com_amazonaws_dynamodb_ListAttributeValue_member_Validate(item) + } + } + + return nil +} +func (input ResolveAttributesInput) Aws_cryptography_dbEncryptionSdk_dynamoDb_transforms_ResolveAttributesInput_Item_Validate() error { + for key, value := range input.Item { + if len(key) < 0 { + return fmt.Errorf("AttributeName has a minimum length of 0 but has the length of %d.", len(key)) + } + if len(key) > 65535 { + return fmt.Errorf("AttributeName has a maximum length of 65535 but has the length of %d.", len(key)) + } + if input.Com_amazonaws_dynamodb_AttributeMap_value_Validate(value) != nil { + return input.Com_amazonaws_dynamodb_AttributeMap_value_Validate(value) + } + } + + return nil +} + +type ExecuteStatementInputTransformInput struct { + SdkInput dynamodb.ExecuteStatementInput +} + +func (input ExecuteStatementInputTransformInput) Validate() error { + + return nil +} + +type ExecuteStatementInputTransformOutput struct { + TransformedInput dynamodb.ExecuteStatementInput +} + +func (input ExecuteStatementInputTransformOutput) Validate() error { + + return nil +} + +type GetItemInputTransformInput struct { + SdkInput dynamodb.GetItemInput +} + +func (input GetItemInputTransformInput) Validate() error { + + return nil +} + +type GetItemInputTransformOutput struct { + TransformedInput dynamodb.GetItemInput +} + +func (input GetItemInputTransformOutput) Validate() error { + + return nil +} + +type GetItemOutputTransformOutput struct { + TransformedOutput dynamodb.GetItemOutput +} + +func (input GetItemOutputTransformOutput) Validate() error { + + return nil +} + +type BatchExecuteStatementInputTransformInput struct { + SdkInput dynamodb.BatchExecuteStatementInput +} + +func (input BatchExecuteStatementInputTransformInput) Validate() error { + + return nil +} + +type BatchExecuteStatementInputTransformOutput struct { + TransformedInput dynamodb.BatchExecuteStatementInput +} + +func (input BatchExecuteStatementInputTransformOutput) Validate() error { + + return nil +} + +type ExecuteTransactionInputTransformInput struct { + SdkInput dynamodb.ExecuteTransactionInput +} + +func (input ExecuteTransactionInputTransformInput) Validate() error { + + return nil +} + +type ExecuteTransactionInputTransformOutput struct { + TransformedInput dynamodb.ExecuteTransactionInput +} + +func (input ExecuteTransactionInputTransformOutput) Validate() error { + + return nil +} + +type ExecuteTransactionOutputTransformOutput struct { + TransformedOutput dynamodb.ExecuteTransactionOutput +} + +func (input ExecuteTransactionOutputTransformOutput) Validate() error { + + return nil +} + +type TransactGetItemsOutputTransformOutput struct { + TransformedOutput dynamodb.TransactGetItemsOutput +} + +func (input TransactGetItemsOutputTransformOutput) Validate() error { + + return nil +} + +type BatchGetItemInputTransformInput struct { + SdkInput dynamodb.BatchGetItemInput +} + +func (input BatchGetItemInputTransformInput) Validate() error { + + return nil +} + +type BatchGetItemInputTransformOutput struct { + TransformedInput dynamodb.BatchGetItemInput +} + +func (input BatchGetItemInputTransformOutput) Validate() error { + + return nil +} + +type TransactGetItemsInputTransformInput struct { + SdkInput dynamodb.TransactGetItemsInput +} + +func (input TransactGetItemsInputTransformInput) Validate() error { + + return nil +} + +type TransactGetItemsInputTransformOutput struct { + TransformedInput dynamodb.TransactGetItemsInput +} + +func (input TransactGetItemsInputTransformOutput) Validate() error { + + return nil +} + +type TransactWriteItemsOutputTransformOutput struct { + TransformedOutput dynamodb.TransactWriteItemsOutput +} + +func (input TransactWriteItemsOutputTransformOutput) Validate() error { + + return nil +} + +type GetItemOutputTransformInput struct { + OriginalInput dynamodb.GetItemInput + + SdkOutput dynamodb.GetItemOutput +} + +func (input GetItemOutputTransformInput) Validate() error { + + return nil +} + +type DeleteItemOutputTransformOutput struct { + TransformedOutput dynamodb.DeleteItemOutput +} + +func (input DeleteItemOutputTransformOutput) Validate() error { + + return nil +} + +type ExecuteStatementOutputTransformOutput struct { + TransformedOutput dynamodb.ExecuteStatementOutput +} + +func (input ExecuteStatementOutputTransformOutput) Validate() error { + + return nil +} + +type PutItemOutputTransformOutput struct { + TransformedOutput dynamodb.PutItemOutput +} + +func (input PutItemOutputTransformOutput) Validate() error { + + return nil +} + +type QueryOutputTransformOutput struct { + TransformedOutput dynamodb.QueryOutput +} + +func (input QueryOutputTransformOutput) Validate() error { + + return nil +} + +type ScanOutputTransformOutput struct { + TransformedOutput dynamodb.ScanOutput +} + +func (input ScanOutputTransformOutput) Validate() error { + + return nil +} + +type UpdateItemOutputTransformOutput struct { + TransformedOutput dynamodb.UpdateItemOutput +} + +func (input UpdateItemOutputTransformOutput) Validate() error { + + return nil +} + +type ExecuteTransactionOutputTransformInput struct { + OriginalInput dynamodb.ExecuteTransactionInput + + SdkOutput dynamodb.ExecuteTransactionOutput +} + +func (input ExecuteTransactionOutputTransformInput) Validate() error { + + return nil +} + +type BatchExecuteStatementOutputTransformOutput struct { + TransformedOutput dynamodb.BatchExecuteStatementOutput +} + +func (input BatchExecuteStatementOutputTransformOutput) Validate() error { + + return nil +} + +type BatchGetItemOutputTransformOutput struct { + TransformedOutput dynamodb.BatchGetItemOutput +} + +func (input BatchGetItemOutputTransformOutput) Validate() error { + + return nil +} + +type TransactGetItemsOutputTransformInput struct { + OriginalInput dynamodb.TransactGetItemsInput + + SdkOutput dynamodb.TransactGetItemsOutput +} + +func (input TransactGetItemsOutputTransformInput) Validate() error { + + return nil +} + +type ExecuteStatementOutputTransformInput struct { + OriginalInput dynamodb.ExecuteStatementInput + + SdkOutput dynamodb.ExecuteStatementOutput +} + +func (input ExecuteStatementOutputTransformInput) Validate() error { + + return nil +} + +type ScanInputTransformInput struct { + SdkInput dynamodb.ScanInput +} + +func (input ScanInputTransformInput) Validate() error { + + return nil +} + +type ScanInputTransformOutput struct { + TransformedInput dynamodb.ScanInput +} + +func (input ScanInputTransformOutput) Validate() error { + + return nil +} + +type BatchWriteItemInputTransformInput struct { + SdkInput dynamodb.BatchWriteItemInput +} + +func (input BatchWriteItemInputTransformInput) Validate() error { + + return nil +} + +type BatchWriteItemInputTransformOutput struct { + TransformedInput dynamodb.BatchWriteItemInput +} + +func (input BatchWriteItemInputTransformOutput) Validate() error { + + return nil +} + +type BatchExecuteStatementOutputTransformInput struct { + OriginalInput dynamodb.BatchExecuteStatementInput + + SdkOutput dynamodb.BatchExecuteStatementOutput +} + +func (input BatchExecuteStatementOutputTransformInput) Validate() error { + + return nil +} + +type BatchGetItemOutputTransformInput struct { + OriginalInput dynamodb.BatchGetItemInput + + SdkOutput dynamodb.BatchGetItemOutput +} + +func (input BatchGetItemOutputTransformInput) Validate() error { + + return nil +} + +type DeleteItemInputTransformInput struct { + SdkInput dynamodb.DeleteItemInput +} + +func (input DeleteItemInputTransformInput) Validate() error { + + return nil +} + +type DeleteItemInputTransformOutput struct { + TransformedInput dynamodb.DeleteItemInput +} + +func (input DeleteItemInputTransformOutput) Validate() error { + + return nil +} + +type PutItemInputTransformInput struct { + SdkInput dynamodb.PutItemInput +} + +func (input PutItemInputTransformInput) Validate() error { + + return nil +} + +type PutItemInputTransformOutput struct { + TransformedInput dynamodb.PutItemInput +} + +func (input PutItemInputTransformOutput) Validate() error { + + return nil +} + +type QueryInputTransformInput struct { + SdkInput dynamodb.QueryInput +} + +func (input QueryInputTransformInput) Validate() error { + + return nil +} + +type QueryInputTransformOutput struct { + TransformedInput dynamodb.QueryInput +} + +func (input QueryInputTransformOutput) Validate() error { + + return nil +} + +type BatchWriteItemOutputTransformOutput struct { + TransformedOutput dynamodb.BatchWriteItemOutput +} + +func (input BatchWriteItemOutputTransformOutput) Validate() error { + + return nil +} + +type ScanOutputTransformInput struct { + OriginalInput dynamodb.ScanInput + + SdkOutput dynamodb.ScanOutput +} + +func (input ScanOutputTransformInput) Validate() error { + + return nil +} + +type UpdateItemInputTransformInput struct { + SdkInput dynamodb.UpdateItemInput +} + +func (input UpdateItemInputTransformInput) Validate() error { + + return nil +} + +type UpdateItemInputTransformOutput struct { + TransformedInput dynamodb.UpdateItemInput +} + +func (input UpdateItemInputTransformOutput) Validate() error { + + return nil +} + +type DeleteItemOutputTransformInput struct { + OriginalInput dynamodb.DeleteItemInput + + SdkOutput dynamodb.DeleteItemOutput +} + +func (input DeleteItemOutputTransformInput) Validate() error { + + return nil +} + +type PutItemOutputTransformInput struct { + OriginalInput dynamodb.PutItemInput + + SdkOutput dynamodb.PutItemOutput +} + +func (input PutItemOutputTransformInput) Validate() error { + + return nil +} + +type QueryOutputTransformInput struct { + OriginalInput dynamodb.QueryInput + + SdkOutput dynamodb.QueryOutput +} + +func (input QueryOutputTransformInput) Validate() error { + + return nil +} + +type UpdateItemOutputTransformInput struct { + OriginalInput dynamodb.UpdateItemInput + + SdkOutput dynamodb.UpdateItemOutput +} + +func (input UpdateItemOutputTransformInput) Validate() error { + + return nil +} + +type BatchWriteItemOutputTransformInput struct { + OriginalInput dynamodb.BatchWriteItemInput + + SdkOutput dynamodb.BatchWriteItemOutput +} + +func (input BatchWriteItemOutputTransformInput) Validate() error { + + return nil +} + +type TransactWriteItemsInputTransformInput struct { + SdkInput dynamodb.TransactWriteItemsInput +} + +func (input TransactWriteItemsInputTransformInput) Validate() error { + + return nil +} + +type TransactWriteItemsInputTransformOutput struct { + TransformedInput dynamodb.TransactWriteItemsInput +} + +func (input TransactWriteItemsInputTransformOutput) Validate() error { + + return nil +} + +type TransactWriteItemsOutputTransformInput struct { + OriginalInput dynamodb.TransactWriteItemsInput + + SdkOutput dynamodb.TransactWriteItemsOutput +} + +func (input TransactWriteItemsOutputTransformInput) Validate() error { + + return nil +} + +type AwsCryptographicMaterialProvidersReference struct { +} + +func (input AwsCryptographicMaterialProvidersReference) Validate() error { + + return nil +} + +type DynamoDbEncryptionReference struct { +} + +func (input DynamoDbEncryptionReference) Validate() error { + + return nil +} + +type DynamoDbItemEncryptorReference struct { +} + +func (input DynamoDbItemEncryptorReference) Validate() error { + + return nil +} + +type StructuredEncryptionReference struct { +} + +func (input StructuredEncryptionReference) Validate() error { + + return nil +} + +type DynamoDbEncryptionTransformsBaseException interface { + // This is a dummy method to allow type assertion since Go empty interfaces + // aren't useful for type assertion checks. No concrete class is expected to implement + // this method. This is also not exported. + interfaceBindingMethod() +} diff --git a/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes/unmodelled_errors.go b/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes/unmodelled_errors.go new file mode 100644 index 000000000..5b0d77454 --- /dev/null +++ b/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes/unmodelled_errors.go @@ -0,0 +1,26 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes + +import ( + "fmt" +) + +type CollectionOfErrors struct { + DynamoDbEncryptionTransformsBaseException + ListOfErrors []error + Message string +} + +func (e CollectionOfErrors) Error() string { + return fmt.Sprintf("message: %s\n err %v", e.Message, e.ListOfErrors) +} + +type OpaqueError struct { + DynamoDbEncryptionTransformsBaseException + ErrObject interface{} +} + +func (e OpaqueError) Error() string { + return fmt.Sprintf("message: %v", e.ErrObject) +} diff --git a/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkstructuredencryptionsmithygenerated/api_client.go b/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkstructuredencryptionsmithygenerated/api_client.go new file mode 100644 index 000000000..8afd651b8 --- /dev/null +++ b/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkstructuredencryptionsmithygenerated/api_client.go @@ -0,0 +1,131 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package awscryptographydbencryptionsdkstructuredencryptionsmithygenerated + +import ( + "context" + + "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes" + "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/StructuredEncryption" + "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes" +) + +type Client struct { + DafnyClient AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.IStructuredEncryptionClient +} + +func NewClient(clientConfig awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.StructuredEncryptionConfig) (*Client, error) { + var dafnyConfig = StructuredEncryptionConfig_ToDafny(clientConfig) + var dafny_response = StructuredEncryption.Companion_Default___.StructuredEncryption(dafnyConfig) + if dafny_response.Is_Failure() { + panic("Client construction failed. This should never happen") + } + var dafnyClient = dafny_response.Extract().(AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.IStructuredEncryptionClient) + client := &Client{dafnyClient} + return client, nil +} + +func (client *Client) EncryptStructure(ctx context.Context, params awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.EncryptStructureInput) (*awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.EncryptStructureOutput, error) { + err := params.Validate() + if err != nil { + opaqueErr := awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.OpaqueError{ + ErrObject: err, + } + return nil, opaqueErr + } + + var dafny_request AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.EncryptStructureInput = EncryptStructureInput_ToDafny(params) + var dafny_response = client.DafnyClient.EncryptStructure(dafny_request) + + if dafny_response.Is_Failure() { + err := dafny_response.Dtor_error().(AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Error) + return nil, Error_FromDafny(err) + } + var native_response = EncryptStructureOutput_FromDafny(dafny_response.Dtor_value().(AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.EncryptStructureOutput)) + return &native_response, nil + +} + +func (client *Client) DecryptStructure(ctx context.Context, params awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.DecryptStructureInput) (*awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.DecryptStructureOutput, error) { + err := params.Validate() + if err != nil { + opaqueErr := awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.OpaqueError{ + ErrObject: err, + } + return nil, opaqueErr + } + + var dafny_request AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.DecryptStructureInput = DecryptStructureInput_ToDafny(params) + var dafny_response = client.DafnyClient.DecryptStructure(dafny_request) + + if dafny_response.Is_Failure() { + err := dafny_response.Dtor_error().(AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Error) + return nil, Error_FromDafny(err) + } + var native_response = DecryptStructureOutput_FromDafny(dafny_response.Dtor_value().(AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.DecryptStructureOutput)) + return &native_response, nil + +} + +func (client *Client) EncryptPathStructure(ctx context.Context, params awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.EncryptPathStructureInput) (*awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.EncryptPathStructureOutput, error) { + err := params.Validate() + if err != nil { + opaqueErr := awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.OpaqueError{ + ErrObject: err, + } + return nil, opaqueErr + } + + var dafny_request AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.EncryptPathStructureInput = EncryptPathStructureInput_ToDafny(params) + var dafny_response = client.DafnyClient.EncryptPathStructure(dafny_request) + + if dafny_response.Is_Failure() { + err := dafny_response.Dtor_error().(AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Error) + return nil, Error_FromDafny(err) + } + var native_response = EncryptPathStructureOutput_FromDafny(dafny_response.Dtor_value().(AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.EncryptPathStructureOutput)) + return &native_response, nil + +} + +func (client *Client) DecryptPathStructure(ctx context.Context, params awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.DecryptPathStructureInput) (*awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.DecryptPathStructureOutput, error) { + err := params.Validate() + if err != nil { + opaqueErr := awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.OpaqueError{ + ErrObject: err, + } + return nil, opaqueErr + } + + var dafny_request AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.DecryptPathStructureInput = DecryptPathStructureInput_ToDafny(params) + var dafny_response = client.DafnyClient.DecryptPathStructure(dafny_request) + + if dafny_response.Is_Failure() { + err := dafny_response.Dtor_error().(AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Error) + return nil, Error_FromDafny(err) + } + var native_response = DecryptPathStructureOutput_FromDafny(dafny_response.Dtor_value().(AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.DecryptPathStructureOutput)) + return &native_response, nil + +} + +func (client *Client) ResolveAuthActions(ctx context.Context, params awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.ResolveAuthActionsInput) (*awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.ResolveAuthActionsOutput, error) { + err := params.Validate() + if err != nil { + opaqueErr := awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.OpaqueError{ + ErrObject: err, + } + return nil, opaqueErr + } + + var dafny_request AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.ResolveAuthActionsInput = ResolveAuthActionsInput_ToDafny(params) + var dafny_response = client.DafnyClient.ResolveAuthActions(dafny_request) + + if dafny_response.Is_Failure() { + err := dafny_response.Dtor_error().(AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Error) + return nil, Error_FromDafny(err) + } + var native_response = ResolveAuthActionsOutput_FromDafny(dafny_response.Dtor_value().(AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.ResolveAuthActionsOutput)) + return &native_response, nil + +} diff --git a/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkstructuredencryptionsmithygenerated/to_dafny.go b/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkstructuredencryptionsmithygenerated/to_dafny.go new file mode 100644 index 000000000..fb1a93d7c --- /dev/null +++ b/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkstructuredencryptionsmithygenerated/to_dafny.go @@ -0,0 +1,846 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package awscryptographydbencryptionsdkstructuredencryptionsmithygenerated + +import ( + "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyMaterialProvidersTypes" + "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/awscryptographymaterialproviderssmithygenerated" + "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/awscryptographymaterialproviderssmithygeneratedtypes" + "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/awscryptographyprimitivessmithygenerated" + "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/awscryptographyprimitivessmithygeneratedtypes" + "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/UTF8" + "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Wrappers" + "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes" + "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes" + "github.com/dafny-lang/DafnyRuntimeGo/v4/dafny" +) + +func DecryptPathStructureInput_ToDafny(nativeInput awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.DecryptPathStructureInput) AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.DecryptPathStructureInput { + + return func() AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.DecryptPathStructureInput { + + return AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Companion_DecryptPathStructureInput_.Create_DecryptPathStructureInput_(Aws_cryptography_dbEncryptionSdk_structuredEncryption_DecryptPathStructureInput_tableName_ToDafny(nativeInput.TableName), Aws_cryptography_dbEncryptionSdk_structuredEncryption_DecryptPathStructureInput_encryptedStructure_ToDafny(nativeInput.EncryptedStructure), awscryptographymaterialproviderssmithygenerated.CryptographicMaterialsManager_ToDafny(nativeInput.Cmm), Aws_cryptography_dbEncryptionSdk_structuredEncryption_DecryptPathStructureInput_encryptionContext_ToDafny(nativeInput.EncryptionContext)) + }() + +} + +func DecryptPathStructureOutput_ToDafny(nativeOutput awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.DecryptPathStructureOutput) AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.DecryptPathStructureOutput { + + return func() AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.DecryptPathStructureOutput { + + return AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Companion_DecryptPathStructureOutput_.Create_DecryptPathStructureOutput_(Aws_cryptography_dbEncryptionSdk_structuredEncryption_DecryptPathStructureOutput_plaintextStructure_ToDafny(nativeOutput.PlaintextStructure), Aws_cryptography_dbEncryptionSdk_structuredEncryption_DecryptPathStructureOutput_parsedHeader_ToDafny(nativeOutput.ParsedHeader)) + }() + +} + +func DecryptStructureInput_ToDafny(nativeInput awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.DecryptStructureInput) AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.DecryptStructureInput { + + return func() AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.DecryptStructureInput { + + return AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Companion_DecryptStructureInput_.Create_DecryptStructureInput_(Aws_cryptography_dbEncryptionSdk_structuredEncryption_DecryptStructureInput_tableName_ToDafny(nativeInput.TableName), Aws_cryptography_dbEncryptionSdk_structuredEncryption_DecryptStructureInput_encryptedStructure_ToDafny(nativeInput.EncryptedStructure), Aws_cryptography_dbEncryptionSdk_structuredEncryption_DecryptStructureInput_authenticateSchema_ToDafny(nativeInput.AuthenticateSchema), awscryptographymaterialproviderssmithygenerated.CryptographicMaterialsManager_ToDafny(nativeInput.Cmm), Aws_cryptography_dbEncryptionSdk_structuredEncryption_DecryptStructureInput_encryptionContext_ToDafny(nativeInput.EncryptionContext)) + }() + +} + +func DecryptStructureOutput_ToDafny(nativeOutput awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.DecryptStructureOutput) AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.DecryptStructureOutput { + + return func() AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.DecryptStructureOutput { + + return AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Companion_DecryptStructureOutput_.Create_DecryptStructureOutput_(Aws_cryptography_dbEncryptionSdk_structuredEncryption_DecryptStructureOutput_plaintextStructure_ToDafny(nativeOutput.PlaintextStructure), Aws_cryptography_dbEncryptionSdk_structuredEncryption_DecryptStructureOutput_cryptoSchema_ToDafny(nativeOutput.CryptoSchema), Aws_cryptography_dbEncryptionSdk_structuredEncryption_DecryptStructureOutput_parsedHeader_ToDafny(nativeOutput.ParsedHeader)) + }() + +} + +func EncryptPathStructureInput_ToDafny(nativeInput awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.EncryptPathStructureInput) AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.EncryptPathStructureInput { + + return func() AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.EncryptPathStructureInput { + + return AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Companion_EncryptPathStructureInput_.Create_EncryptPathStructureInput_(Aws_cryptography_dbEncryptionSdk_structuredEncryption_EncryptPathStructureInput_tableName_ToDafny(nativeInput.TableName), Aws_cryptography_dbEncryptionSdk_structuredEncryption_EncryptPathStructureInput_plaintextStructure_ToDafny(nativeInput.PlaintextStructure), awscryptographymaterialproviderssmithygenerated.CryptographicMaterialsManager_ToDafny(nativeInput.Cmm), Aws_cryptography_dbEncryptionSdk_structuredEncryption_EncryptPathStructureInput_algorithmSuiteId_ToDafny(nativeInput.AlgorithmSuiteId), Aws_cryptography_dbEncryptionSdk_structuredEncryption_EncryptPathStructureInput_encryptionContext_ToDafny(nativeInput.EncryptionContext)) + }() + +} + +func EncryptPathStructureOutput_ToDafny(nativeOutput awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.EncryptPathStructureOutput) AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.EncryptPathStructureOutput { + + return func() AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.EncryptPathStructureOutput { + + return AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Companion_EncryptPathStructureOutput_.Create_EncryptPathStructureOutput_(Aws_cryptography_dbEncryptionSdk_structuredEncryption_EncryptPathStructureOutput_encryptedStructure_ToDafny(nativeOutput.EncryptedStructure), Aws_cryptography_dbEncryptionSdk_structuredEncryption_EncryptPathStructureOutput_parsedHeader_ToDafny(nativeOutput.ParsedHeader)) + }() + +} + +func EncryptStructureInput_ToDafny(nativeInput awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.EncryptStructureInput) AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.EncryptStructureInput { + + return func() AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.EncryptStructureInput { + + return AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Companion_EncryptStructureInput_.Create_EncryptStructureInput_(Aws_cryptography_dbEncryptionSdk_structuredEncryption_EncryptStructureInput_tableName_ToDafny(nativeInput.TableName), Aws_cryptography_dbEncryptionSdk_structuredEncryption_EncryptStructureInput_plaintextStructure_ToDafny(nativeInput.PlaintextStructure), Aws_cryptography_dbEncryptionSdk_structuredEncryption_EncryptStructureInput_cryptoSchema_ToDafny(nativeInput.CryptoSchema), awscryptographymaterialproviderssmithygenerated.CryptographicMaterialsManager_ToDafny(nativeInput.Cmm), Aws_cryptography_dbEncryptionSdk_structuredEncryption_EncryptStructureInput_algorithmSuiteId_ToDafny(nativeInput.AlgorithmSuiteId), Aws_cryptography_dbEncryptionSdk_structuredEncryption_EncryptStructureInput_encryptionContext_ToDafny(nativeInput.EncryptionContext)) + }() + +} + +func EncryptStructureOutput_ToDafny(nativeOutput awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.EncryptStructureOutput) AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.EncryptStructureOutput { + + return func() AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.EncryptStructureOutput { + + return AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Companion_EncryptStructureOutput_.Create_EncryptStructureOutput_(Aws_cryptography_dbEncryptionSdk_structuredEncryption_EncryptStructureOutput_encryptedStructure_ToDafny(nativeOutput.EncryptedStructure), Aws_cryptography_dbEncryptionSdk_structuredEncryption_EncryptStructureOutput_cryptoSchema_ToDafny(nativeOutput.CryptoSchema), Aws_cryptography_dbEncryptionSdk_structuredEncryption_EncryptStructureOutput_parsedHeader_ToDafny(nativeOutput.ParsedHeader)) + }() + +} + +func ResolveAuthActionsInput_ToDafny(nativeInput awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.ResolveAuthActionsInput) AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.ResolveAuthActionsInput { + + return func() AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.ResolveAuthActionsInput { + + return AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Companion_ResolveAuthActionsInput_.Create_ResolveAuthActionsInput_(Aws_cryptography_dbEncryptionSdk_structuredEncryption_ResolveAuthActionsInput_tableName_ToDafny(nativeInput.TableName), Aws_cryptography_dbEncryptionSdk_structuredEncryption_ResolveAuthActionsInput_authActions_ToDafny(nativeInput.AuthActions), Aws_cryptography_dbEncryptionSdk_structuredEncryption_ResolveAuthActionsInput_headerBytes_ToDafny(nativeInput.HeaderBytes)) + }() + +} + +func ResolveAuthActionsOutput_ToDafny(nativeOutput awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.ResolveAuthActionsOutput) AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.ResolveAuthActionsOutput { + + return func() AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.ResolveAuthActionsOutput { + + return AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Companion_ResolveAuthActionsOutput_.Create_ResolveAuthActionsOutput_(Aws_cryptography_dbEncryptionSdk_structuredEncryption_ResolveAuthActionsOutput_cryptoActions_ToDafny(nativeOutput.CryptoActions)) + }() + +} + +func StructuredEncryptionException_ToDafny(nativeInput awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.StructuredEncryptionException) AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Error { + return func() AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Error { + + return AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Companion_Error_.Create_StructuredEncryptionException_(Aws_cryptography_dbEncryptionSdk_structuredEncryption_StructuredEncryptionException_message_ToDafny(nativeInput.Message)) + }() + +} + +func CollectionOfErrors_Input_ToDafny(nativeInput awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.CollectionOfErrors) AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Error { + var e []interface{} + for _, i2 := range nativeInput.ListOfErrors { + e = append(e, Error_ToDafny(i2)) + } + return AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Companion_Error_.Create_CollectionOfErrors_(dafny.SeqOf(e...), func() dafny.Sequence { + res, err := UTF8.DecodeFromNativeGoByteArray([]byte(nativeInput.Message)) + if err != nil { + panic("invalid utf8 input provided") + } + return res + }()) +} +func OpaqueError_Input_ToDafny(nativeInput awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.OpaqueError) AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Error { + return AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Companion_Error_.Create_Opaque_(nativeInput.ErrObject) +} + +func Error_ToDafny(err error) AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Error { + switch err.(type) { + // Service Errors + case awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.StructuredEncryptionException: + return StructuredEncryptionException_ToDafny(err.(awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.StructuredEncryptionException)) + + //DependentErrors + case awscryptographyprimitivessmithygeneratedtypes.AwsCryptographicPrimitivesBaseException: + return AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Companion_Error_.Create_AwsCryptographyPrimitives_(awscryptographyprimitivessmithygenerated.Error_ToDafny(err)) + + case awscryptographymaterialproviderssmithygeneratedtypes.AwsCryptographicMaterialProvidersBaseException: + return AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Companion_Error_.Create_AwsCryptographyMaterialProviders_(awscryptographymaterialproviderssmithygenerated.Error_ToDafny(err)) + + //Unmodelled Errors + case awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.CollectionOfErrors: + return CollectionOfErrors_Input_ToDafny(err.(awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.CollectionOfErrors)) + + default: + error, ok := err.(awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.OpaqueError) + if !ok { + panic("Error is not an OpaqueError") + } + return OpaqueError_Input_ToDafny(error) + } +} + +func StructuredEncryptionConfig_ToDafny(nativeInput awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.StructuredEncryptionConfig) AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.StructuredEncryptionConfig { + return func() AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.StructuredEncryptionConfig { + + return AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Companion_StructuredEncryptionConfig_.Create_StructuredEncryptionConfig_() + }() + +} + +func Aws_cryptography_dbEncryptionSdk_structuredEncryption_DecryptPathStructureInput_tableName_ToDafny(input string) dafny.Sequence { + return func() dafny.Sequence { + + return func() dafny.Sequence { + res, err := UTF8.DecodeFromNativeGoByteArray([]byte(input)) + if err != nil { + panic("invalid utf8 input provided") + } + return res + }() + }() +} + +func Aws_cryptography_dbEncryptionSdk_structuredEncryption_DecryptPathStructureInput_encryptedStructure_ToDafny(input []awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.AuthItem) dafny.Sequence { + return func() dafny.Sequence { + + var fieldValue []interface{} = make([]interface{}, 0, len(input)) + for _, val := range input { + element := Aws_cryptography_dbEncryptionSdk_structuredEncryption_AuthList_member_ToDafny(val) + fieldValue = append(fieldValue, element) + } + return dafny.SeqOf(fieldValue...) + }() +} + +func Aws_cryptography_dbEncryptionSdk_structuredEncryption_AuthList_member_ToDafny(input awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.AuthItem) AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.AuthItem { + return func() AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.AuthItem { + + return AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Companion_AuthItem_.Create_AuthItem_(Aws_cryptography_dbEncryptionSdk_structuredEncryption_AuthItem_key_ToDafny(input.Key), Aws_cryptography_dbEncryptionSdk_structuredEncryption_AuthItem_data_ToDafny(input.Data), Aws_cryptography_dbEncryptionSdk_structuredEncryption_AuthItem_action_ToDafny(input.Action)) + }() +} + +func Aws_cryptography_dbEncryptionSdk_structuredEncryption_AuthItem_key_ToDafny(input []awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.PathSegment) dafny.Sequence { + return func() dafny.Sequence { + + var fieldValue []interface{} = make([]interface{}, 0, len(input)) + for _, val := range input { + element := Aws_cryptography_dbEncryptionSdk_structuredEncryption_Path_member_ToDafny(val) + fieldValue = append(fieldValue, element) + } + return dafny.SeqOf(fieldValue...) + }() +} + +func Aws_cryptography_dbEncryptionSdk_structuredEncryption_Path_member_ToDafny(input awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.PathSegment) AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.PathSegment { + return func() AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.PathSegment { + + switch input.(type) { + case *awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.PathSegmentMembermember: + var inputToConversion = Aws_cryptography_dbEncryptionSdk_structuredEncryption_PathSegment_member_ToDafny(input.(*awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.PathSegmentMembermember).Value) + return AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.CompanionStruct_PathSegment_{}.Create_member_(inputToConversion.UnwrapOr(nil).(AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.StructureSegment)) + + default: + panic("Unhandled union type") + } + }() +} + +func Aws_cryptography_dbEncryptionSdk_structuredEncryption_PathSegment_member_ToDafny(input awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.StructureSegment) Wrappers.Option { + return func() Wrappers.Option { + + return Wrappers.Companion_Option_.Create_Some_(AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Companion_StructureSegment_.Create_StructureSegment_(Aws_cryptography_dbEncryptionSdk_structuredEncryption_StructureSegment_key_ToDafny(input.Key))) + }() +} + +func Aws_cryptography_dbEncryptionSdk_structuredEncryption_StructureSegment_key_ToDafny(input string) dafny.Sequence { + return func() dafny.Sequence { + + return func() dafny.Sequence { + res, err := UTF8.DecodeFromNativeGoByteArray([]byte(input)) + if err != nil { + panic("invalid utf8 input provided") + } + return res + }() + }() +} + +func Aws_cryptography_dbEncryptionSdk_structuredEncryption_AuthItem_data_ToDafny(input awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.StructuredDataTerminal) AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.StructuredDataTerminal { + return func() AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.StructuredDataTerminal { + + return AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Companion_StructuredDataTerminal_.Create_StructuredDataTerminal_(Aws_cryptography_dbEncryptionSdk_structuredEncryption_StructuredDataTerminal_value_ToDafny(input.Value), Aws_cryptography_dbEncryptionSdk_structuredEncryption_StructuredDataTerminal_typeId_ToDafny(input.TypeId)) + }() +} + +func Aws_cryptography_dbEncryptionSdk_structuredEncryption_StructuredDataTerminal_value_ToDafny(input []byte) dafny.Sequence { + return func() dafny.Sequence { + v := make([]interface{}, 0, len(input)) + if input == nil { + return nil + } + for _, e := range input { + v = append(v, e) + } + return dafny.SeqFromArray(v, false) + }() +} + +func Aws_cryptography_dbEncryptionSdk_structuredEncryption_StructuredDataTerminal_typeId_ToDafny(input []byte) dafny.Sequence { + return func() dafny.Sequence { + v := make([]interface{}, 0, len(input)) + if input == nil { + return nil + } + for _, e := range input { + v = append(v, e) + } + return dafny.SeqFromArray(v, false) + }() +} + +func Aws_cryptography_dbEncryptionSdk_structuredEncryption_AuthItem_action_ToDafny(input awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.AuthenticateAction) AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.AuthenticateAction { + return func() AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.AuthenticateAction { + + var index int + for _, enumVal := range input.Values() { + index++ + if enumVal == input { + break + } + if index == len(input.Values()) { + panic("Input value did not found in enum values") + } + + } + var enum interface{} + for allEnums, i := dafny.Iterate(AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.CompanionStruct_AuthenticateAction_{}.AllSingletonConstructors()), 0; i < index; i++ { + var ok bool + enum, ok = allEnums() + if !ok { + break + } + } + return enum.(AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.AuthenticateAction) + }() +} + +func Aws_cryptography_dbEncryptionSdk_structuredEncryption_DecryptPathStructureInput_encryptionContext_ToDafny(input map[string]string) Wrappers.Option { + return func() Wrappers.Option { + fieldValue := dafny.NewMapBuilder() + for key, val := range input { + fieldValue.Add(awscryptographymaterialproviderssmithygenerated.Aws_cryptography_materialProviders_EncryptionContext_key_ToDafny(key), awscryptographymaterialproviderssmithygenerated.Aws_cryptography_materialProviders_EncryptionContext_value_ToDafny(val)) + } + return Wrappers.Companion_Option_.Create_Some_(fieldValue.ToMap()) + }() +} + +func Aws_cryptography_dbEncryptionSdk_structuredEncryption_DecryptPathStructureOutput_plaintextStructure_ToDafny(input []awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.CryptoItem) dafny.Sequence { + return func() dafny.Sequence { + + var fieldValue []interface{} = make([]interface{}, 0, len(input)) + for _, val := range input { + element := Aws_cryptography_dbEncryptionSdk_structuredEncryption_CryptoList_member_ToDafny(val) + fieldValue = append(fieldValue, element) + } + return dafny.SeqOf(fieldValue...) + }() +} + +func Aws_cryptography_dbEncryptionSdk_structuredEncryption_CryptoList_member_ToDafny(input awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.CryptoItem) AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.CryptoItem { + return func() AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.CryptoItem { + + return AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Companion_CryptoItem_.Create_CryptoItem_(Aws_cryptography_dbEncryptionSdk_structuredEncryption_CryptoItem_key_ToDafny(input.Key), Aws_cryptography_dbEncryptionSdk_structuredEncryption_CryptoItem_data_ToDafny(input.Data), Aws_cryptography_dbEncryptionSdk_structuredEncryption_CryptoItem_action_ToDafny(input.Action)) + }() +} + +func Aws_cryptography_dbEncryptionSdk_structuredEncryption_CryptoItem_key_ToDafny(input []awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.PathSegment) dafny.Sequence { + return func() dafny.Sequence { + + var fieldValue []interface{} = make([]interface{}, 0, len(input)) + for _, val := range input { + element := Aws_cryptography_dbEncryptionSdk_structuredEncryption_Path_member_ToDafny(val) + fieldValue = append(fieldValue, element) + } + return dafny.SeqOf(fieldValue...) + }() +} + +func Aws_cryptography_dbEncryptionSdk_structuredEncryption_CryptoItem_data_ToDafny(input awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.StructuredDataTerminal) AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.StructuredDataTerminal { + return func() AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.StructuredDataTerminal { + + return AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Companion_StructuredDataTerminal_.Create_StructuredDataTerminal_(Aws_cryptography_dbEncryptionSdk_structuredEncryption_StructuredDataTerminal_value_ToDafny(input.Value), Aws_cryptography_dbEncryptionSdk_structuredEncryption_StructuredDataTerminal_typeId_ToDafny(input.TypeId)) + }() +} + +func Aws_cryptography_dbEncryptionSdk_structuredEncryption_CryptoItem_action_ToDafny(input awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.CryptoAction) AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.CryptoAction { + return func() AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.CryptoAction { + + var index int + for _, enumVal := range input.Values() { + index++ + if enumVal == input { + break + } + if index == len(input.Values()) { + panic("Input value did not found in enum values") + } + + } + var enum interface{} + for allEnums, i := dafny.Iterate(AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.CompanionStruct_CryptoAction_{}.AllSingletonConstructors()), 0; i < index; i++ { + var ok bool + enum, ok = allEnums() + if !ok { + break + } + } + return enum.(AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.CryptoAction) + }() +} + +func Aws_cryptography_dbEncryptionSdk_structuredEncryption_DecryptPathStructureOutput_parsedHeader_ToDafny(input awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.ParsedHeader) AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.ParsedHeader { + return func() AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.ParsedHeader { + + return AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Companion_ParsedHeader_.Create_ParsedHeader_(Aws_cryptography_dbEncryptionSdk_structuredEncryption_ParsedHeader_algorithmSuiteId_ToDafny(input.AlgorithmSuiteId), Aws_cryptography_dbEncryptionSdk_structuredEncryption_ParsedHeader_encryptedDataKeys_ToDafny(input.EncryptedDataKeys), Aws_cryptography_dbEncryptionSdk_structuredEncryption_ParsedHeader_storedEncryptionContext_ToDafny(input.StoredEncryptionContext), Aws_cryptography_dbEncryptionSdk_structuredEncryption_ParsedHeader_encryptionContext_ToDafny(input.EncryptionContext)) + }() +} + +func Aws_cryptography_dbEncryptionSdk_structuredEncryption_ParsedHeader_algorithmSuiteId_ToDafny(input awscryptographymaterialproviderssmithygeneratedtypes.DBEAlgorithmSuiteId) AwsCryptographyMaterialProvidersTypes.DBEAlgorithmSuiteId { + return func() AwsCryptographyMaterialProvidersTypes.DBEAlgorithmSuiteId { + + var index int + for _, enumVal := range input.Values() { + index++ + if enumVal == input { + break + } + if index == len(input.Values()) { + panic("Input value did not found in enum values") + } + + } + var enum interface{} + for allEnums, i := dafny.Iterate(AwsCryptographyMaterialProvidersTypes.CompanionStruct_DBEAlgorithmSuiteId_{}.AllSingletonConstructors()), 0; i < index; i++ { + var ok bool + enum, ok = allEnums() + if !ok { + break + } + } + return enum.(AwsCryptographyMaterialProvidersTypes.DBEAlgorithmSuiteId) + }() +} + +func Aws_cryptography_dbEncryptionSdk_structuredEncryption_ParsedHeader_encryptedDataKeys_ToDafny(input []awscryptographymaterialproviderssmithygeneratedtypes.EncryptedDataKey) dafny.Sequence { + return func() dafny.Sequence { + + var fieldValue []interface{} = make([]interface{}, 0, len(input)) + for _, val := range input { + element := awscryptographymaterialproviderssmithygenerated.Aws_cryptography_materialProviders_EncryptedDataKeyList_member_ToDafny(val) + fieldValue = append(fieldValue, element) + } + return dafny.SeqOf(fieldValue...) + }() +} + +func Aws_cryptography_dbEncryptionSdk_structuredEncryption_ParsedHeader_storedEncryptionContext_ToDafny(input map[string]string) dafny.Map { + return func() dafny.Map { + fieldValue := dafny.NewMapBuilder() + for key, val := range input { + fieldValue.Add(awscryptographymaterialproviderssmithygenerated.Aws_cryptography_materialProviders_EncryptionContext_key_ToDafny(key), awscryptographymaterialproviderssmithygenerated.Aws_cryptography_materialProviders_EncryptionContext_value_ToDafny(val)) + } + return fieldValue.ToMap() + }() +} + +func Aws_cryptography_dbEncryptionSdk_structuredEncryption_ParsedHeader_encryptionContext_ToDafny(input map[string]string) dafny.Map { + return func() dafny.Map { + fieldValue := dafny.NewMapBuilder() + for key, val := range input { + fieldValue.Add(awscryptographymaterialproviderssmithygenerated.Aws_cryptography_materialProviders_EncryptionContext_key_ToDafny(key), awscryptographymaterialproviderssmithygenerated.Aws_cryptography_materialProviders_EncryptionContext_value_ToDafny(val)) + } + return fieldValue.ToMap() + }() +} + +func Aws_cryptography_dbEncryptionSdk_structuredEncryption_DecryptStructureInput_tableName_ToDafny(input string) dafny.Sequence { + return func() dafny.Sequence { + + return func() dafny.Sequence { + res, err := UTF8.DecodeFromNativeGoByteArray([]byte(input)) + if err != nil { + panic("invalid utf8 input provided") + } + return res + }() + }() +} + +func Aws_cryptography_dbEncryptionSdk_structuredEncryption_DecryptStructureInput_encryptedStructure_ToDafny(input map[string]awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.StructuredDataTerminal) dafny.Map { + return func() dafny.Map { + fieldValue := dafny.NewMapBuilder() + for key, val := range input { + fieldValue.Add(Aws_cryptography_dbEncryptionSdk_structuredEncryption_StructuredDataMap_key_ToDafny(key), Aws_cryptography_dbEncryptionSdk_structuredEncryption_StructuredDataMap_value_ToDafny(val)) + } + return fieldValue.ToMap() + }() +} + +func Aws_cryptography_dbEncryptionSdk_structuredEncryption_StructuredDataMap_key_ToDafny(input string) dafny.Sequence { + return func() dafny.Sequence { + + return func() dafny.Sequence { + res, err := UTF8.DecodeFromNativeGoByteArray([]byte(input)) + if err != nil { + panic("invalid utf8 input provided") + } + return res + }() + }() +} + +func Aws_cryptography_dbEncryptionSdk_structuredEncryption_StructuredDataMap_value_ToDafny(input awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.StructuredDataTerminal) AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.StructuredDataTerminal { + return func() AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.StructuredDataTerminal { + + return AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Companion_StructuredDataTerminal_.Create_StructuredDataTerminal_(Aws_cryptography_dbEncryptionSdk_structuredEncryption_StructuredDataTerminal_value_ToDafny(input.Value), Aws_cryptography_dbEncryptionSdk_structuredEncryption_StructuredDataTerminal_typeId_ToDafny(input.TypeId)) + }() +} + +func Aws_cryptography_dbEncryptionSdk_structuredEncryption_DecryptStructureInput_authenticateSchema_ToDafny(input map[string]awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.AuthenticateAction) dafny.Map { + return func() dafny.Map { + fieldValue := dafny.NewMapBuilder() + for key, val := range input { + fieldValue.Add(Aws_cryptography_dbEncryptionSdk_structuredEncryption_AuthenticateSchemaMap_key_ToDafny(key), Aws_cryptography_dbEncryptionSdk_structuredEncryption_AuthenticateSchemaMap_value_ToDafny(val)) + } + return fieldValue.ToMap() + }() +} + +func Aws_cryptography_dbEncryptionSdk_structuredEncryption_AuthenticateSchemaMap_key_ToDafny(input string) dafny.Sequence { + return func() dafny.Sequence { + + return func() dafny.Sequence { + res, err := UTF8.DecodeFromNativeGoByteArray([]byte(input)) + if err != nil { + panic("invalid utf8 input provided") + } + return res + }() + }() +} + +func Aws_cryptography_dbEncryptionSdk_structuredEncryption_AuthenticateSchemaMap_value_ToDafny(input awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.AuthenticateAction) AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.AuthenticateAction { + return func() AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.AuthenticateAction { + + var index int + for _, enumVal := range input.Values() { + index++ + if enumVal == input { + break + } + if index == len(input.Values()) { + panic("Input value did not found in enum values") + } + + } + var enum interface{} + for allEnums, i := dafny.Iterate(AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.CompanionStruct_AuthenticateAction_{}.AllSingletonConstructors()), 0; i < index; i++ { + var ok bool + enum, ok = allEnums() + if !ok { + break + } + } + return enum.(AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.AuthenticateAction) + }() +} + +func Aws_cryptography_dbEncryptionSdk_structuredEncryption_DecryptStructureInput_encryptionContext_ToDafny(input map[string]string) Wrappers.Option { + return func() Wrappers.Option { + fieldValue := dafny.NewMapBuilder() + for key, val := range input { + fieldValue.Add(awscryptographymaterialproviderssmithygenerated.Aws_cryptography_materialProviders_EncryptionContext_key_ToDafny(key), awscryptographymaterialproviderssmithygenerated.Aws_cryptography_materialProviders_EncryptionContext_value_ToDafny(val)) + } + return Wrappers.Companion_Option_.Create_Some_(fieldValue.ToMap()) + }() +} + +func Aws_cryptography_dbEncryptionSdk_structuredEncryption_DecryptStructureOutput_plaintextStructure_ToDafny(input map[string]awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.StructuredDataTerminal) dafny.Map { + return func() dafny.Map { + fieldValue := dafny.NewMapBuilder() + for key, val := range input { + fieldValue.Add(Aws_cryptography_dbEncryptionSdk_structuredEncryption_StructuredDataMap_key_ToDafny(key), Aws_cryptography_dbEncryptionSdk_structuredEncryption_StructuredDataMap_value_ToDafny(val)) + } + return fieldValue.ToMap() + }() +} + +func Aws_cryptography_dbEncryptionSdk_structuredEncryption_DecryptStructureOutput_cryptoSchema_ToDafny(input map[string]awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.CryptoAction) dafny.Map { + return func() dafny.Map { + fieldValue := dafny.NewMapBuilder() + for key, val := range input { + fieldValue.Add(Aws_cryptography_dbEncryptionSdk_structuredEncryption_CryptoSchemaMap_key_ToDafny(key), Aws_cryptography_dbEncryptionSdk_structuredEncryption_CryptoSchemaMap_value_ToDafny(val)) + } + return fieldValue.ToMap() + }() +} + +func Aws_cryptography_dbEncryptionSdk_structuredEncryption_CryptoSchemaMap_key_ToDafny(input string) dafny.Sequence { + return func() dafny.Sequence { + + return func() dafny.Sequence { + res, err := UTF8.DecodeFromNativeGoByteArray([]byte(input)) + if err != nil { + panic("invalid utf8 input provided") + } + return res + }() + }() +} + +func Aws_cryptography_dbEncryptionSdk_structuredEncryption_CryptoSchemaMap_value_ToDafny(input awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.CryptoAction) AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.CryptoAction { + return func() AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.CryptoAction { + + var index int + for _, enumVal := range input.Values() { + index++ + if enumVal == input { + break + } + if index == len(input.Values()) { + panic("Input value did not found in enum values") + } + + } + var enum interface{} + for allEnums, i := dafny.Iterate(AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.CompanionStruct_CryptoAction_{}.AllSingletonConstructors()), 0; i < index; i++ { + var ok bool + enum, ok = allEnums() + if !ok { + break + } + } + return enum.(AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.CryptoAction) + }() +} + +func Aws_cryptography_dbEncryptionSdk_structuredEncryption_DecryptStructureOutput_parsedHeader_ToDafny(input awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.ParsedHeader) AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.ParsedHeader { + return func() AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.ParsedHeader { + + return AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Companion_ParsedHeader_.Create_ParsedHeader_(Aws_cryptography_dbEncryptionSdk_structuredEncryption_ParsedHeader_algorithmSuiteId_ToDafny(input.AlgorithmSuiteId), Aws_cryptography_dbEncryptionSdk_structuredEncryption_ParsedHeader_encryptedDataKeys_ToDafny(input.EncryptedDataKeys), Aws_cryptography_dbEncryptionSdk_structuredEncryption_ParsedHeader_storedEncryptionContext_ToDafny(input.StoredEncryptionContext), Aws_cryptography_dbEncryptionSdk_structuredEncryption_ParsedHeader_encryptionContext_ToDafny(input.EncryptionContext)) + }() +} + +func Aws_cryptography_dbEncryptionSdk_structuredEncryption_EncryptPathStructureInput_tableName_ToDafny(input string) dafny.Sequence { + return func() dafny.Sequence { + + return func() dafny.Sequence { + res, err := UTF8.DecodeFromNativeGoByteArray([]byte(input)) + if err != nil { + panic("invalid utf8 input provided") + } + return res + }() + }() +} + +func Aws_cryptography_dbEncryptionSdk_structuredEncryption_EncryptPathStructureInput_plaintextStructure_ToDafny(input []awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.CryptoItem) dafny.Sequence { + return func() dafny.Sequence { + + var fieldValue []interface{} = make([]interface{}, 0, len(input)) + for _, val := range input { + element := Aws_cryptography_dbEncryptionSdk_structuredEncryption_CryptoList_member_ToDafny(val) + fieldValue = append(fieldValue, element) + } + return dafny.SeqOf(fieldValue...) + }() +} + +func Aws_cryptography_dbEncryptionSdk_structuredEncryption_EncryptPathStructureInput_algorithmSuiteId_ToDafny(input *awscryptographymaterialproviderssmithygeneratedtypes.DBEAlgorithmSuiteId) Wrappers.Option { + return func() Wrappers.Option { + if input == nil { + return Wrappers.Companion_Option_.Create_None_() + } + var index int + for _, enumVal := range input.Values() { + index++ + if enumVal == *input { + break + } + + } + var enum interface{} + for allEnums, i := dafny.Iterate(AwsCryptographyMaterialProvidersTypes.CompanionStruct_DBEAlgorithmSuiteId_{}.AllSingletonConstructors()), 0; i < index; i++ { + var ok bool + enum, ok = allEnums() + if !ok { + break + } + } + return Wrappers.Companion_Option_.Create_Some_(enum.(AwsCryptographyMaterialProvidersTypes.DBEAlgorithmSuiteId)) + }() +} + +func Aws_cryptography_dbEncryptionSdk_structuredEncryption_EncryptPathStructureInput_encryptionContext_ToDafny(input map[string]string) Wrappers.Option { + return func() Wrappers.Option { + fieldValue := dafny.NewMapBuilder() + for key, val := range input { + fieldValue.Add(awscryptographymaterialproviderssmithygenerated.Aws_cryptography_materialProviders_EncryptionContext_key_ToDafny(key), awscryptographymaterialproviderssmithygenerated.Aws_cryptography_materialProviders_EncryptionContext_value_ToDafny(val)) + } + return Wrappers.Companion_Option_.Create_Some_(fieldValue.ToMap()) + }() +} + +func Aws_cryptography_dbEncryptionSdk_structuredEncryption_EncryptPathStructureOutput_encryptedStructure_ToDafny(input []awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.CryptoItem) dafny.Sequence { + return func() dafny.Sequence { + + var fieldValue []interface{} = make([]interface{}, 0, len(input)) + for _, val := range input { + element := Aws_cryptography_dbEncryptionSdk_structuredEncryption_CryptoList_member_ToDafny(val) + fieldValue = append(fieldValue, element) + } + return dafny.SeqOf(fieldValue...) + }() +} + +func Aws_cryptography_dbEncryptionSdk_structuredEncryption_EncryptPathStructureOutput_parsedHeader_ToDafny(input awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.ParsedHeader) AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.ParsedHeader { + return func() AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.ParsedHeader { + + return AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Companion_ParsedHeader_.Create_ParsedHeader_(Aws_cryptography_dbEncryptionSdk_structuredEncryption_ParsedHeader_algorithmSuiteId_ToDafny(input.AlgorithmSuiteId), Aws_cryptography_dbEncryptionSdk_structuredEncryption_ParsedHeader_encryptedDataKeys_ToDafny(input.EncryptedDataKeys), Aws_cryptography_dbEncryptionSdk_structuredEncryption_ParsedHeader_storedEncryptionContext_ToDafny(input.StoredEncryptionContext), Aws_cryptography_dbEncryptionSdk_structuredEncryption_ParsedHeader_encryptionContext_ToDafny(input.EncryptionContext)) + }() +} + +func Aws_cryptography_dbEncryptionSdk_structuredEncryption_EncryptStructureInput_tableName_ToDafny(input string) dafny.Sequence { + return func() dafny.Sequence { + + return func() dafny.Sequence { + res, err := UTF8.DecodeFromNativeGoByteArray([]byte(input)) + if err != nil { + panic("invalid utf8 input provided") + } + return res + }() + }() +} + +func Aws_cryptography_dbEncryptionSdk_structuredEncryption_EncryptStructureInput_plaintextStructure_ToDafny(input map[string]awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.StructuredDataTerminal) dafny.Map { + return func() dafny.Map { + fieldValue := dafny.NewMapBuilder() + for key, val := range input { + fieldValue.Add(Aws_cryptography_dbEncryptionSdk_structuredEncryption_StructuredDataMap_key_ToDafny(key), Aws_cryptography_dbEncryptionSdk_structuredEncryption_StructuredDataMap_value_ToDafny(val)) + } + return fieldValue.ToMap() + }() +} + +func Aws_cryptography_dbEncryptionSdk_structuredEncryption_EncryptStructureInput_cryptoSchema_ToDafny(input map[string]awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.CryptoAction) dafny.Map { + return func() dafny.Map { + fieldValue := dafny.NewMapBuilder() + for key, val := range input { + fieldValue.Add(Aws_cryptography_dbEncryptionSdk_structuredEncryption_CryptoSchemaMap_key_ToDafny(key), Aws_cryptography_dbEncryptionSdk_structuredEncryption_CryptoSchemaMap_value_ToDafny(val)) + } + return fieldValue.ToMap() + }() +} + +func Aws_cryptography_dbEncryptionSdk_structuredEncryption_EncryptStructureInput_algorithmSuiteId_ToDafny(input *awscryptographymaterialproviderssmithygeneratedtypes.DBEAlgorithmSuiteId) Wrappers.Option { + return func() Wrappers.Option { + if input == nil { + return Wrappers.Companion_Option_.Create_None_() + } + var index int + for _, enumVal := range input.Values() { + index++ + if enumVal == *input { + break + } + + } + var enum interface{} + for allEnums, i := dafny.Iterate(AwsCryptographyMaterialProvidersTypes.CompanionStruct_DBEAlgorithmSuiteId_{}.AllSingletonConstructors()), 0; i < index; i++ { + var ok bool + enum, ok = allEnums() + if !ok { + break + } + } + return Wrappers.Companion_Option_.Create_Some_(enum.(AwsCryptographyMaterialProvidersTypes.DBEAlgorithmSuiteId)) + }() +} + +func Aws_cryptography_dbEncryptionSdk_structuredEncryption_EncryptStructureInput_encryptionContext_ToDafny(input map[string]string) Wrappers.Option { + return func() Wrappers.Option { + fieldValue := dafny.NewMapBuilder() + for key, val := range input { + fieldValue.Add(awscryptographymaterialproviderssmithygenerated.Aws_cryptography_materialProviders_EncryptionContext_key_ToDafny(key), awscryptographymaterialproviderssmithygenerated.Aws_cryptography_materialProviders_EncryptionContext_value_ToDafny(val)) + } + return Wrappers.Companion_Option_.Create_Some_(fieldValue.ToMap()) + }() +} + +func Aws_cryptography_dbEncryptionSdk_structuredEncryption_EncryptStructureOutput_encryptedStructure_ToDafny(input map[string]awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.StructuredDataTerminal) dafny.Map { + return func() dafny.Map { + fieldValue := dafny.NewMapBuilder() + for key, val := range input { + fieldValue.Add(Aws_cryptography_dbEncryptionSdk_structuredEncryption_StructuredDataMap_key_ToDafny(key), Aws_cryptography_dbEncryptionSdk_structuredEncryption_StructuredDataMap_value_ToDafny(val)) + } + return fieldValue.ToMap() + }() +} + +func Aws_cryptography_dbEncryptionSdk_structuredEncryption_EncryptStructureOutput_cryptoSchema_ToDafny(input map[string]awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.CryptoAction) dafny.Map { + return func() dafny.Map { + fieldValue := dafny.NewMapBuilder() + for key, val := range input { + fieldValue.Add(Aws_cryptography_dbEncryptionSdk_structuredEncryption_CryptoSchemaMap_key_ToDafny(key), Aws_cryptography_dbEncryptionSdk_structuredEncryption_CryptoSchemaMap_value_ToDafny(val)) + } + return fieldValue.ToMap() + }() +} + +func Aws_cryptography_dbEncryptionSdk_structuredEncryption_EncryptStructureOutput_parsedHeader_ToDafny(input awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.ParsedHeader) AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.ParsedHeader { + return func() AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.ParsedHeader { + + return AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Companion_ParsedHeader_.Create_ParsedHeader_(Aws_cryptography_dbEncryptionSdk_structuredEncryption_ParsedHeader_algorithmSuiteId_ToDafny(input.AlgorithmSuiteId), Aws_cryptography_dbEncryptionSdk_structuredEncryption_ParsedHeader_encryptedDataKeys_ToDafny(input.EncryptedDataKeys), Aws_cryptography_dbEncryptionSdk_structuredEncryption_ParsedHeader_storedEncryptionContext_ToDafny(input.StoredEncryptionContext), Aws_cryptography_dbEncryptionSdk_structuredEncryption_ParsedHeader_encryptionContext_ToDafny(input.EncryptionContext)) + }() +} + +func Aws_cryptography_dbEncryptionSdk_structuredEncryption_ResolveAuthActionsInput_tableName_ToDafny(input string) dafny.Sequence { + return func() dafny.Sequence { + + return func() dafny.Sequence { + res, err := UTF8.DecodeFromNativeGoByteArray([]byte(input)) + if err != nil { + panic("invalid utf8 input provided") + } + return res + }() + }() +} + +func Aws_cryptography_dbEncryptionSdk_structuredEncryption_ResolveAuthActionsInput_authActions_ToDafny(input []awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.AuthItem) dafny.Sequence { + return func() dafny.Sequence { + + var fieldValue []interface{} = make([]interface{}, 0, len(input)) + for _, val := range input { + element := Aws_cryptography_dbEncryptionSdk_structuredEncryption_AuthList_member_ToDafny(val) + fieldValue = append(fieldValue, element) + } + return dafny.SeqOf(fieldValue...) + }() +} + +func Aws_cryptography_dbEncryptionSdk_structuredEncryption_ResolveAuthActionsInput_headerBytes_ToDafny(input []byte) dafny.Sequence { + return func() dafny.Sequence { + v := make([]interface{}, 0, len(input)) + if input == nil { + return nil + } + for _, e := range input { + v = append(v, e) + } + return dafny.SeqFromArray(v, false) + }() +} + +func Aws_cryptography_dbEncryptionSdk_structuredEncryption_ResolveAuthActionsOutput_cryptoActions_ToDafny(input []awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.CryptoItem) dafny.Sequence { + return func() dafny.Sequence { + + var fieldValue []interface{} = make([]interface{}, 0, len(input)) + for _, val := range input { + element := Aws_cryptography_dbEncryptionSdk_structuredEncryption_CryptoList_member_ToDafny(val) + fieldValue = append(fieldValue, element) + } + return dafny.SeqOf(fieldValue...) + }() +} + +func Aws_cryptography_dbEncryptionSdk_structuredEncryption_StructuredEncryptionException_message_ToDafny(input string) dafny.Sequence { + return func() dafny.Sequence { + + return func() dafny.Sequence { + res, err := UTF8.DecodeFromNativeGoByteArray([]byte(input)) + if err != nil { + panic("invalid utf8 input provided") + } + return res + }() + }() +} diff --git a/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkstructuredencryptionsmithygenerated/to_native.go b/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkstructuredencryptionsmithygenerated/to_native.go new file mode 100644 index 000000000..650135db5 --- /dev/null +++ b/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkstructuredencryptionsmithygenerated/to_native.go @@ -0,0 +1,808 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package awscryptographydbencryptionsdkstructuredencryptionsmithygenerated + +import ( + "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyMaterialProvidersTypes" + "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/awscryptographymaterialproviderssmithygenerated" + "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/awscryptographymaterialproviderssmithygeneratedtypes" + "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/awscryptographyprimitivessmithygenerated" + "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/UTF8" + "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes" + "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes" + "github.com/dafny-lang/DafnyRuntimeGo/v4/dafny" +) + +func DecryptPathStructureInput_FromDafny(dafnyInput AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.DecryptPathStructureInput) awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.DecryptPathStructureInput { + + return awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.DecryptPathStructureInput{TableName: Aws_cryptography_dbEncryptionSdk_structuredEncryption_DecryptPathStructureInput_tableName_FromDafny(dafnyInput.Dtor_tableName()), + EncryptedStructure: Aws_cryptography_dbEncryptionSdk_structuredEncryption_DecryptPathStructureInput_encryptedStructure_FromDafny(dafnyInput.Dtor_encryptedStructure()), + Cmm: awscryptographymaterialproviderssmithygenerated.CryptographicMaterialsManager_FromDafny(dafnyInput.Dtor_cmm()), + EncryptionContext: Aws_cryptography_dbEncryptionSdk_structuredEncryption_DecryptPathStructureInput_encryptionContext_FromDafny(dafnyInput.Dtor_encryptionContext().UnwrapOr(nil)), + } + +} + +func DecryptPathStructureOutput_FromDafny(dafnyOutput AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.DecryptPathStructureOutput) awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.DecryptPathStructureOutput { + + return awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.DecryptPathStructureOutput{PlaintextStructure: Aws_cryptography_dbEncryptionSdk_structuredEncryption_DecryptPathStructureOutput_plaintextStructure_FromDafny(dafnyOutput.Dtor_plaintextStructure()), + ParsedHeader: Aws_cryptography_dbEncryptionSdk_structuredEncryption_DecryptPathStructureOutput_parsedHeader_FromDafny(dafnyOutput.Dtor_parsedHeader()), + } + +} + +func DecryptStructureInput_FromDafny(dafnyInput AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.DecryptStructureInput) awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.DecryptStructureInput { + + return awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.DecryptStructureInput{TableName: Aws_cryptography_dbEncryptionSdk_structuredEncryption_DecryptStructureInput_tableName_FromDafny(dafnyInput.Dtor_tableName()), + EncryptedStructure: Aws_cryptography_dbEncryptionSdk_structuredEncryption_DecryptStructureInput_encryptedStructure_FromDafny(dafnyInput.Dtor_encryptedStructure()), + AuthenticateSchema: Aws_cryptography_dbEncryptionSdk_structuredEncryption_DecryptStructureInput_authenticateSchema_FromDafny(dafnyInput.Dtor_authenticateSchema()), + Cmm: awscryptographymaterialproviderssmithygenerated.CryptographicMaterialsManager_FromDafny(dafnyInput.Dtor_cmm()), + EncryptionContext: Aws_cryptography_dbEncryptionSdk_structuredEncryption_DecryptStructureInput_encryptionContext_FromDafny(dafnyInput.Dtor_encryptionContext().UnwrapOr(nil)), + } + +} + +func DecryptStructureOutput_FromDafny(dafnyOutput AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.DecryptStructureOutput) awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.DecryptStructureOutput { + + return awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.DecryptStructureOutput{PlaintextStructure: Aws_cryptography_dbEncryptionSdk_structuredEncryption_DecryptStructureOutput_plaintextStructure_FromDafny(dafnyOutput.Dtor_plaintextStructure()), + CryptoSchema: Aws_cryptography_dbEncryptionSdk_structuredEncryption_DecryptStructureOutput_cryptoSchema_FromDafny(dafnyOutput.Dtor_cryptoSchema()), + ParsedHeader: Aws_cryptography_dbEncryptionSdk_structuredEncryption_DecryptStructureOutput_parsedHeader_FromDafny(dafnyOutput.Dtor_parsedHeader()), + } + +} + +func EncryptPathStructureInput_FromDafny(dafnyInput AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.EncryptPathStructureInput) awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.EncryptPathStructureInput { + + return awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.EncryptPathStructureInput{TableName: Aws_cryptography_dbEncryptionSdk_structuredEncryption_EncryptPathStructureInput_tableName_FromDafny(dafnyInput.Dtor_tableName()), + PlaintextStructure: Aws_cryptography_dbEncryptionSdk_structuredEncryption_EncryptPathStructureInput_plaintextStructure_FromDafny(dafnyInput.Dtor_plaintextStructure()), + Cmm: awscryptographymaterialproviderssmithygenerated.CryptographicMaterialsManager_FromDafny(dafnyInput.Dtor_cmm()), + AlgorithmSuiteId: Aws_cryptography_dbEncryptionSdk_structuredEncryption_EncryptPathStructureInput_algorithmSuiteId_FromDafny(dafnyInput.Dtor_algorithmSuiteId().UnwrapOr(nil)), + EncryptionContext: Aws_cryptography_dbEncryptionSdk_structuredEncryption_EncryptPathStructureInput_encryptionContext_FromDafny(dafnyInput.Dtor_encryptionContext().UnwrapOr(nil)), + } + +} + +func EncryptPathStructureOutput_FromDafny(dafnyOutput AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.EncryptPathStructureOutput) awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.EncryptPathStructureOutput { + + return awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.EncryptPathStructureOutput{EncryptedStructure: Aws_cryptography_dbEncryptionSdk_structuredEncryption_EncryptPathStructureOutput_encryptedStructure_FromDafny(dafnyOutput.Dtor_encryptedStructure()), + ParsedHeader: Aws_cryptography_dbEncryptionSdk_structuredEncryption_EncryptPathStructureOutput_parsedHeader_FromDafny(dafnyOutput.Dtor_parsedHeader()), + } + +} + +func EncryptStructureInput_FromDafny(dafnyInput AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.EncryptStructureInput) awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.EncryptStructureInput { + + return awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.EncryptStructureInput{TableName: Aws_cryptography_dbEncryptionSdk_structuredEncryption_EncryptStructureInput_tableName_FromDafny(dafnyInput.Dtor_tableName()), + PlaintextStructure: Aws_cryptography_dbEncryptionSdk_structuredEncryption_EncryptStructureInput_plaintextStructure_FromDafny(dafnyInput.Dtor_plaintextStructure()), + CryptoSchema: Aws_cryptography_dbEncryptionSdk_structuredEncryption_EncryptStructureInput_cryptoSchema_FromDafny(dafnyInput.Dtor_cryptoSchema()), + Cmm: awscryptographymaterialproviderssmithygenerated.CryptographicMaterialsManager_FromDafny(dafnyInput.Dtor_cmm()), + AlgorithmSuiteId: Aws_cryptography_dbEncryptionSdk_structuredEncryption_EncryptStructureInput_algorithmSuiteId_FromDafny(dafnyInput.Dtor_algorithmSuiteId().UnwrapOr(nil)), + EncryptionContext: Aws_cryptography_dbEncryptionSdk_structuredEncryption_EncryptStructureInput_encryptionContext_FromDafny(dafnyInput.Dtor_encryptionContext().UnwrapOr(nil)), + } + +} + +func EncryptStructureOutput_FromDafny(dafnyOutput AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.EncryptStructureOutput) awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.EncryptStructureOutput { + + return awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.EncryptStructureOutput{EncryptedStructure: Aws_cryptography_dbEncryptionSdk_structuredEncryption_EncryptStructureOutput_encryptedStructure_FromDafny(dafnyOutput.Dtor_encryptedStructure()), + CryptoSchema: Aws_cryptography_dbEncryptionSdk_structuredEncryption_EncryptStructureOutput_cryptoSchema_FromDafny(dafnyOutput.Dtor_cryptoSchema()), + ParsedHeader: Aws_cryptography_dbEncryptionSdk_structuredEncryption_EncryptStructureOutput_parsedHeader_FromDafny(dafnyOutput.Dtor_parsedHeader()), + } + +} + +func ResolveAuthActionsInput_FromDafny(dafnyInput AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.ResolveAuthActionsInput) awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.ResolveAuthActionsInput { + + return awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.ResolveAuthActionsInput{TableName: Aws_cryptography_dbEncryptionSdk_structuredEncryption_ResolveAuthActionsInput_tableName_FromDafny(dafnyInput.Dtor_tableName()), + AuthActions: Aws_cryptography_dbEncryptionSdk_structuredEncryption_ResolveAuthActionsInput_authActions_FromDafny(dafnyInput.Dtor_authActions()), + HeaderBytes: Aws_cryptography_dbEncryptionSdk_structuredEncryption_ResolveAuthActionsInput_headerBytes_FromDafny(dafnyInput.Dtor_headerBytes()), + } + +} + +func ResolveAuthActionsOutput_FromDafny(dafnyOutput AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.ResolveAuthActionsOutput) awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.ResolveAuthActionsOutput { + + return awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.ResolveAuthActionsOutput{CryptoActions: Aws_cryptography_dbEncryptionSdk_structuredEncryption_ResolveAuthActionsOutput_cryptoActions_FromDafny(dafnyOutput.Dtor_cryptoActions())} + +} + +func StructuredEncryptionException_FromDafny(dafnyOutput AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Error) awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.StructuredEncryptionException { + return awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.StructuredEncryptionException{Message: Aws_cryptography_dbEncryptionSdk_structuredEncryption_StructuredEncryptionException_message_FromDafny(dafnyOutput.Dtor_message())} + +} + +func CollectionOfErrors_Output_FromDafny(dafnyOutput AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Error) awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.CollectionOfErrors { + listOfErrors := dafnyOutput.Dtor_list() + message := dafnyOutput.Dtor_message() + t := awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.CollectionOfErrors{} + for i := dafny.Iterate(listOfErrors); ; { + val, ok := i() + if !ok { + break + } + err := val.(AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Error) + t.ListOfErrors = append(t.ListOfErrors, Error_FromDafny(err)) + + } + t.Message = func() string { + a := UTF8.Encode(message.(dafny.Sequence)).Dtor_value() + s := string(dafny.ToByteArray(a.(dafny.Sequence))) + return s + }() + return t +} +func OpaqueError_Output_FromDafny(dafnyOutput AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Error) awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.OpaqueError { + return awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.OpaqueError{ + ErrObject: dafnyOutput.Dtor_obj(), + } +} + +func Error_FromDafny(err AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.Error) error { + // Service Errors + if err.Is_StructuredEncryptionException() { + return StructuredEncryptionException_FromDafny(err) + } + + //DependentErrors + if err.Is_AwsCryptographyPrimitives() { + return awscryptographyprimitivessmithygenerated.Error_FromDafny(err.Dtor_AwsCryptographyPrimitives()) + } + + if err.Is_AwsCryptographyMaterialProviders() { + return awscryptographymaterialproviderssmithygenerated.Error_FromDafny(err.Dtor_AwsCryptographyMaterialProviders()) + } + + //Unmodelled Errors + if err.Is_CollectionOfErrors() { + return CollectionOfErrors_Output_FromDafny(err) + } + + return OpaqueError_Output_FromDafny(err) +} + +func StructuredEncryptionConfig_FromDafny(dafnyOutput AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.StructuredEncryptionConfig) awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.StructuredEncryptionConfig { + return awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.StructuredEncryptionConfig{} + +} + +func Aws_cryptography_dbEncryptionSdk_structuredEncryption_DecryptPathStructureInput_tableName_FromDafny(input interface{}) string { + return func() string { + + a := UTF8.Encode(input.(dafny.Sequence)).Dtor_value() + s := string(dafny.ToByteArray(a.(dafny.Sequence))) + + return s + }() +} +func Aws_cryptography_dbEncryptionSdk_structuredEncryption_DecryptPathStructureInput_encryptedStructure_FromDafny(input interface{}) []awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.AuthItem { + fieldValue := make([]awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.AuthItem, 0) + for i := dafny.Iterate(input.(dafny.Sequence)); ; { + val, ok := i() + if !ok { + break + } + fieldValue = append(fieldValue, Aws_cryptography_dbEncryptionSdk_structuredEncryption_AuthList_member_FromDafny(val)) + } + return fieldValue +} +func Aws_cryptography_dbEncryptionSdk_structuredEncryption_AuthList_member_FromDafny(input interface{}) awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.AuthItem { + return awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.AuthItem{Key: Aws_cryptography_dbEncryptionSdk_structuredEncryption_AuthItem_key_FromDafny(input.(AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.AuthItem).Dtor_key()), + Data: Aws_cryptography_dbEncryptionSdk_structuredEncryption_AuthItem_data_FromDafny(input.(AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.AuthItem).Dtor_data()), + Action: Aws_cryptography_dbEncryptionSdk_structuredEncryption_AuthItem_action_FromDafny(input.(AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.AuthItem).Dtor_action()), + } +} +func Aws_cryptography_dbEncryptionSdk_structuredEncryption_AuthItem_key_FromDafny(input interface{}) []awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.PathSegment { + fieldValue := make([]awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.PathSegment, 0) + for i := dafny.Iterate(input.(dafny.Sequence)); ; { + val, ok := i() + if !ok { + break + } + fieldValue = append(fieldValue, Aws_cryptography_dbEncryptionSdk_structuredEncryption_Path_member_FromDafny(val)) + } + return fieldValue +} +func Aws_cryptography_dbEncryptionSdk_structuredEncryption_Path_member_FromDafny(input interface{}) awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.PathSegment { + var union awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.PathSegment + + if (input.(AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.PathSegment)).Is_member() { + + union = &awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.PathSegmentMembermember{ + Value: (Aws_cryptography_dbEncryptionSdk_structuredEncryption_PathSegment_member_FromDafny((input.(AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.PathSegment)).Dtor_member())), + } + } + + return union + +} +func Aws_cryptography_dbEncryptionSdk_structuredEncryption_PathSegment_member_FromDafny(input interface{}) awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.StructureSegment { + return awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.StructureSegment{Key: Aws_cryptography_dbEncryptionSdk_structuredEncryption_StructureSegment_key_FromDafny(input.(AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.StructureSegment).Dtor_key())} +} +func Aws_cryptography_dbEncryptionSdk_structuredEncryption_StructureSegment_key_FromDafny(input interface{}) string { + return func() string { + + a := UTF8.Encode(input.(dafny.Sequence)).Dtor_value() + s := string(dafny.ToByteArray(a.(dafny.Sequence))) + + return s + }() +} +func Aws_cryptography_dbEncryptionSdk_structuredEncryption_AuthItem_data_FromDafny(input interface{}) awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.StructuredDataTerminal { + return awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.StructuredDataTerminal{Value: Aws_cryptography_dbEncryptionSdk_structuredEncryption_StructuredDataTerminal_value_FromDafny(input.(AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.StructuredDataTerminal).Dtor_value()), + TypeId: Aws_cryptography_dbEncryptionSdk_structuredEncryption_StructuredDataTerminal_typeId_FromDafny(input.(AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.StructuredDataTerminal).Dtor_typeId()), + } +} +func Aws_cryptography_dbEncryptionSdk_structuredEncryption_StructuredDataTerminal_value_FromDafny(input interface{}) []byte { + return func() []byte { + if input == nil { + return nil + } + a := input.(dafny.Sequence).ToArray().(dafny.GoNativeArray) + b := make([]byte, 0, a.Length()) + for i := uint32(0); i < a.Length(); i++ { + b = append(b, a.Select(i).(byte)) + } + return b + }() +} +func Aws_cryptography_dbEncryptionSdk_structuredEncryption_StructuredDataTerminal_typeId_FromDafny(input interface{}) []byte { + return func() []byte { + if input == nil { + return nil + } + a := input.(dafny.Sequence).ToArray().(dafny.GoNativeArray) + b := make([]byte, 0, a.Length()) + for i := uint32(0); i < a.Length(); i++ { + b = append(b, a.Select(i).(byte)) + } + return b + }() +} +func Aws_cryptography_dbEncryptionSdk_structuredEncryption_AuthItem_action_FromDafny(input interface{}) awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.AuthenticateAction { + return func() awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.AuthenticateAction { + var u awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.AuthenticateAction + inputEnum := input.(AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.AuthenticateAction) + index := -1 + for allEnums := dafny.Iterate(AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.CompanionStruct_AuthenticateAction_{}.AllSingletonConstructors()); ; { + enum, ok := allEnums() + if ok { + index++ + if enum.(AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.AuthenticateAction).Equals(inputEnum) { + break + } + } + } + + return u.Values()[index] + }() +} +func Aws_cryptography_dbEncryptionSdk_structuredEncryption_DecryptPathStructureInput_encryptionContext_FromDafny(input interface{}) map[string]string { + var m map[string]string = make(map[string]string) + if input == nil { + return nil + } + for i := dafny.Iterate(input.(dafny.Map).Items()); ; { + val, ok := i() + if !ok { + break + } + m[awscryptographymaterialproviderssmithygenerated.Aws_cryptography_materialProviders_EncryptionContext_key_FromDafny((*val.(dafny.Tuple).IndexInt(0)))] = awscryptographymaterialproviderssmithygenerated.Aws_cryptography_materialProviders_EncryptionContext_value_FromDafny((*val.(dafny.Tuple).IndexInt(1))) + } + return m + +} +func Aws_cryptography_dbEncryptionSdk_structuredEncryption_DecryptPathStructureOutput_plaintextStructure_FromDafny(input interface{}) []awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.CryptoItem { + fieldValue := make([]awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.CryptoItem, 0) + for i := dafny.Iterate(input.(dafny.Sequence)); ; { + val, ok := i() + if !ok { + break + } + fieldValue = append(fieldValue, Aws_cryptography_dbEncryptionSdk_structuredEncryption_CryptoList_member_FromDafny(val)) + } + return fieldValue +} +func Aws_cryptography_dbEncryptionSdk_structuredEncryption_CryptoList_member_FromDafny(input interface{}) awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.CryptoItem { + return awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.CryptoItem{Key: Aws_cryptography_dbEncryptionSdk_structuredEncryption_CryptoItem_key_FromDafny(input.(AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.CryptoItem).Dtor_key()), + Data: Aws_cryptography_dbEncryptionSdk_structuredEncryption_CryptoItem_data_FromDafny(input.(AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.CryptoItem).Dtor_data()), + Action: Aws_cryptography_dbEncryptionSdk_structuredEncryption_CryptoItem_action_FromDafny(input.(AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.CryptoItem).Dtor_action()), + } +} +func Aws_cryptography_dbEncryptionSdk_structuredEncryption_CryptoItem_key_FromDafny(input interface{}) []awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.PathSegment { + fieldValue := make([]awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.PathSegment, 0) + for i := dafny.Iterate(input.(dafny.Sequence)); ; { + val, ok := i() + if !ok { + break + } + fieldValue = append(fieldValue, Aws_cryptography_dbEncryptionSdk_structuredEncryption_Path_member_FromDafny(val)) + } + return fieldValue +} +func Aws_cryptography_dbEncryptionSdk_structuredEncryption_CryptoItem_data_FromDafny(input interface{}) awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.StructuredDataTerminal { + return awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.StructuredDataTerminal{Value: Aws_cryptography_dbEncryptionSdk_structuredEncryption_StructuredDataTerminal_value_FromDafny(input.(AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.StructuredDataTerminal).Dtor_value()), + TypeId: Aws_cryptography_dbEncryptionSdk_structuredEncryption_StructuredDataTerminal_typeId_FromDafny(input.(AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.StructuredDataTerminal).Dtor_typeId()), + } +} +func Aws_cryptography_dbEncryptionSdk_structuredEncryption_CryptoItem_action_FromDafny(input interface{}) awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.CryptoAction { + return func() awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.CryptoAction { + var u awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.CryptoAction + inputEnum := input.(AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.CryptoAction) + index := -1 + for allEnums := dafny.Iterate(AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.CompanionStruct_CryptoAction_{}.AllSingletonConstructors()); ; { + enum, ok := allEnums() + if ok { + index++ + if enum.(AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.CryptoAction).Equals(inputEnum) { + break + } + } + } + + return u.Values()[index] + }() +} +func Aws_cryptography_dbEncryptionSdk_structuredEncryption_DecryptPathStructureOutput_parsedHeader_FromDafny(input interface{}) awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.ParsedHeader { + return awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.ParsedHeader{AlgorithmSuiteId: Aws_cryptography_dbEncryptionSdk_structuredEncryption_ParsedHeader_algorithmSuiteId_FromDafny(input.(AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.ParsedHeader).Dtor_algorithmSuiteId()), + EncryptedDataKeys: Aws_cryptography_dbEncryptionSdk_structuredEncryption_ParsedHeader_encryptedDataKeys_FromDafny(input.(AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.ParsedHeader).Dtor_encryptedDataKeys()), + StoredEncryptionContext: Aws_cryptography_dbEncryptionSdk_structuredEncryption_ParsedHeader_storedEncryptionContext_FromDafny(input.(AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.ParsedHeader).Dtor_storedEncryptionContext()), + EncryptionContext: Aws_cryptography_dbEncryptionSdk_structuredEncryption_ParsedHeader_encryptionContext_FromDafny(input.(AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.ParsedHeader).Dtor_encryptionContext()), + } +} +func Aws_cryptography_dbEncryptionSdk_structuredEncryption_ParsedHeader_algorithmSuiteId_FromDafny(input interface{}) awscryptographymaterialproviderssmithygeneratedtypes.DBEAlgorithmSuiteId { + return func() awscryptographymaterialproviderssmithygeneratedtypes.DBEAlgorithmSuiteId { + var u awscryptographymaterialproviderssmithygeneratedtypes.DBEAlgorithmSuiteId + inputEnum := input.(AwsCryptographyMaterialProvidersTypes.DBEAlgorithmSuiteId) + index := -1 + for allEnums := dafny.Iterate(AwsCryptographyMaterialProvidersTypes.CompanionStruct_DBEAlgorithmSuiteId_{}.AllSingletonConstructors()); ; { + enum, ok := allEnums() + if ok { + index++ + if enum.(AwsCryptographyMaterialProvidersTypes.DBEAlgorithmSuiteId).Equals(inputEnum) { + break + } + } + } + + return u.Values()[index] + }() +} +func Aws_cryptography_dbEncryptionSdk_structuredEncryption_ParsedHeader_encryptedDataKeys_FromDafny(input interface{}) []awscryptographymaterialproviderssmithygeneratedtypes.EncryptedDataKey { + fieldValue := make([]awscryptographymaterialproviderssmithygeneratedtypes.EncryptedDataKey, 0) + for i := dafny.Iterate(input.(dafny.Sequence)); ; { + val, ok := i() + if !ok { + break + } + fieldValue = append(fieldValue, awscryptographymaterialproviderssmithygenerated.Aws_cryptography_materialProviders_EncryptedDataKeyList_member_FromDafny(val)) + } + return fieldValue +} +func Aws_cryptography_dbEncryptionSdk_structuredEncryption_ParsedHeader_storedEncryptionContext_FromDafny(input interface{}) map[string]string { + var m map[string]string = make(map[string]string) + if input == nil { + return nil + } + for i := dafny.Iterate(input.(dafny.Map).Items()); ; { + val, ok := i() + if !ok { + break + } + m[awscryptographymaterialproviderssmithygenerated.Aws_cryptography_materialProviders_EncryptionContext_key_FromDafny((*val.(dafny.Tuple).IndexInt(0)))] = awscryptographymaterialproviderssmithygenerated.Aws_cryptography_materialProviders_EncryptionContext_value_FromDafny((*val.(dafny.Tuple).IndexInt(1))) + } + return m + +} +func Aws_cryptography_dbEncryptionSdk_structuredEncryption_ParsedHeader_encryptionContext_FromDafny(input interface{}) map[string]string { + var m map[string]string = make(map[string]string) + if input == nil { + return nil + } + for i := dafny.Iterate(input.(dafny.Map).Items()); ; { + val, ok := i() + if !ok { + break + } + m[awscryptographymaterialproviderssmithygenerated.Aws_cryptography_materialProviders_EncryptionContext_key_FromDafny((*val.(dafny.Tuple).IndexInt(0)))] = awscryptographymaterialproviderssmithygenerated.Aws_cryptography_materialProviders_EncryptionContext_value_FromDafny((*val.(dafny.Tuple).IndexInt(1))) + } + return m + +} +func Aws_cryptography_dbEncryptionSdk_structuredEncryption_DecryptStructureInput_tableName_FromDafny(input interface{}) string { + return func() string { + + a := UTF8.Encode(input.(dafny.Sequence)).Dtor_value() + s := string(dafny.ToByteArray(a.(dafny.Sequence))) + + return s + }() +} +func Aws_cryptography_dbEncryptionSdk_structuredEncryption_DecryptStructureInput_encryptedStructure_FromDafny(input interface{}) map[string]awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.StructuredDataTerminal { + var m map[string]awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.StructuredDataTerminal = make(map[string]awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.StructuredDataTerminal) + if input == nil { + return nil + } + for i := dafny.Iterate(input.(dafny.Map).Items()); ; { + val, ok := i() + if !ok { + break + } + m[Aws_cryptography_dbEncryptionSdk_structuredEncryption_StructuredDataMap_key_FromDafny((*val.(dafny.Tuple).IndexInt(0)))] = Aws_cryptography_dbEncryptionSdk_structuredEncryption_StructuredDataMap_value_FromDafny((*val.(dafny.Tuple).IndexInt(1))) + } + return m + +} +func Aws_cryptography_dbEncryptionSdk_structuredEncryption_StructuredDataMap_key_FromDafny(input interface{}) string { + return func() string { + + a := UTF8.Encode(input.(dafny.Sequence)).Dtor_value() + s := string(dafny.ToByteArray(a.(dafny.Sequence))) + + return s + }() +} +func Aws_cryptography_dbEncryptionSdk_structuredEncryption_StructuredDataMap_value_FromDafny(input interface{}) awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.StructuredDataTerminal { + return awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.StructuredDataTerminal{Value: Aws_cryptography_dbEncryptionSdk_structuredEncryption_StructuredDataTerminal_value_FromDafny(input.(AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.StructuredDataTerminal).Dtor_value()), + TypeId: Aws_cryptography_dbEncryptionSdk_structuredEncryption_StructuredDataTerminal_typeId_FromDafny(input.(AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.StructuredDataTerminal).Dtor_typeId()), + } +} +func Aws_cryptography_dbEncryptionSdk_structuredEncryption_DecryptStructureInput_authenticateSchema_FromDafny(input interface{}) map[string]awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.AuthenticateAction { + var m map[string]awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.AuthenticateAction = make(map[string]awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.AuthenticateAction) + if input == nil { + return nil + } + for i := dafny.Iterate(input.(dafny.Map).Items()); ; { + val, ok := i() + if !ok { + break + } + m[Aws_cryptography_dbEncryptionSdk_structuredEncryption_AuthenticateSchemaMap_key_FromDafny((*val.(dafny.Tuple).IndexInt(0)))] = Aws_cryptography_dbEncryptionSdk_structuredEncryption_AuthenticateSchemaMap_value_FromDafny((*val.(dafny.Tuple).IndexInt(1))) + } + return m + +} +func Aws_cryptography_dbEncryptionSdk_structuredEncryption_AuthenticateSchemaMap_key_FromDafny(input interface{}) string { + return func() string { + + a := UTF8.Encode(input.(dafny.Sequence)).Dtor_value() + s := string(dafny.ToByteArray(a.(dafny.Sequence))) + + return s + }() +} +func Aws_cryptography_dbEncryptionSdk_structuredEncryption_AuthenticateSchemaMap_value_FromDafny(input interface{}) awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.AuthenticateAction { + return func() awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.AuthenticateAction { + var u awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.AuthenticateAction + inputEnum := input.(AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.AuthenticateAction) + index := -1 + for allEnums := dafny.Iterate(AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.CompanionStruct_AuthenticateAction_{}.AllSingletonConstructors()); ; { + enum, ok := allEnums() + if ok { + index++ + if enum.(AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.AuthenticateAction).Equals(inputEnum) { + break + } + } + } + + return u.Values()[index] + }() +} +func Aws_cryptography_dbEncryptionSdk_structuredEncryption_DecryptStructureInput_encryptionContext_FromDafny(input interface{}) map[string]string { + var m map[string]string = make(map[string]string) + if input == nil { + return nil + } + for i := dafny.Iterate(input.(dafny.Map).Items()); ; { + val, ok := i() + if !ok { + break + } + m[awscryptographymaterialproviderssmithygenerated.Aws_cryptography_materialProviders_EncryptionContext_key_FromDafny((*val.(dafny.Tuple).IndexInt(0)))] = awscryptographymaterialproviderssmithygenerated.Aws_cryptography_materialProviders_EncryptionContext_value_FromDafny((*val.(dafny.Tuple).IndexInt(1))) + } + return m + +} +func Aws_cryptography_dbEncryptionSdk_structuredEncryption_DecryptStructureOutput_plaintextStructure_FromDafny(input interface{}) map[string]awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.StructuredDataTerminal { + var m map[string]awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.StructuredDataTerminal = make(map[string]awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.StructuredDataTerminal) + if input == nil { + return nil + } + for i := dafny.Iterate(input.(dafny.Map).Items()); ; { + val, ok := i() + if !ok { + break + } + m[Aws_cryptography_dbEncryptionSdk_structuredEncryption_StructuredDataMap_key_FromDafny((*val.(dafny.Tuple).IndexInt(0)))] = Aws_cryptography_dbEncryptionSdk_structuredEncryption_StructuredDataMap_value_FromDafny((*val.(dafny.Tuple).IndexInt(1))) + } + return m + +} +func Aws_cryptography_dbEncryptionSdk_structuredEncryption_DecryptStructureOutput_cryptoSchema_FromDafny(input interface{}) map[string]awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.CryptoAction { + var m map[string]awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.CryptoAction = make(map[string]awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.CryptoAction) + if input == nil { + return nil + } + for i := dafny.Iterate(input.(dafny.Map).Items()); ; { + val, ok := i() + if !ok { + break + } + m[Aws_cryptography_dbEncryptionSdk_structuredEncryption_CryptoSchemaMap_key_FromDafny((*val.(dafny.Tuple).IndexInt(0)))] = Aws_cryptography_dbEncryptionSdk_structuredEncryption_CryptoSchemaMap_value_FromDafny((*val.(dafny.Tuple).IndexInt(1))) + } + return m + +} +func Aws_cryptography_dbEncryptionSdk_structuredEncryption_CryptoSchemaMap_key_FromDafny(input interface{}) string { + return func() string { + + a := UTF8.Encode(input.(dafny.Sequence)).Dtor_value() + s := string(dafny.ToByteArray(a.(dafny.Sequence))) + + return s + }() +} +func Aws_cryptography_dbEncryptionSdk_structuredEncryption_CryptoSchemaMap_value_FromDafny(input interface{}) awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.CryptoAction { + return func() awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.CryptoAction { + var u awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.CryptoAction + inputEnum := input.(AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.CryptoAction) + index := -1 + for allEnums := dafny.Iterate(AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.CompanionStruct_CryptoAction_{}.AllSingletonConstructors()); ; { + enum, ok := allEnums() + if ok { + index++ + if enum.(AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.CryptoAction).Equals(inputEnum) { + break + } + } + } + + return u.Values()[index] + }() +} +func Aws_cryptography_dbEncryptionSdk_structuredEncryption_DecryptStructureOutput_parsedHeader_FromDafny(input interface{}) awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.ParsedHeader { + return awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.ParsedHeader{AlgorithmSuiteId: Aws_cryptography_dbEncryptionSdk_structuredEncryption_ParsedHeader_algorithmSuiteId_FromDafny(input.(AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.ParsedHeader).Dtor_algorithmSuiteId()), + EncryptedDataKeys: Aws_cryptography_dbEncryptionSdk_structuredEncryption_ParsedHeader_encryptedDataKeys_FromDafny(input.(AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.ParsedHeader).Dtor_encryptedDataKeys()), + StoredEncryptionContext: Aws_cryptography_dbEncryptionSdk_structuredEncryption_ParsedHeader_storedEncryptionContext_FromDafny(input.(AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.ParsedHeader).Dtor_storedEncryptionContext()), + EncryptionContext: Aws_cryptography_dbEncryptionSdk_structuredEncryption_ParsedHeader_encryptionContext_FromDafny(input.(AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.ParsedHeader).Dtor_encryptionContext()), + } +} +func Aws_cryptography_dbEncryptionSdk_structuredEncryption_EncryptPathStructureInput_tableName_FromDafny(input interface{}) string { + return func() string { + + a := UTF8.Encode(input.(dafny.Sequence)).Dtor_value() + s := string(dafny.ToByteArray(a.(dafny.Sequence))) + + return s + }() +} +func Aws_cryptography_dbEncryptionSdk_structuredEncryption_EncryptPathStructureInput_plaintextStructure_FromDafny(input interface{}) []awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.CryptoItem { + fieldValue := make([]awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.CryptoItem, 0) + for i := dafny.Iterate(input.(dafny.Sequence)); ; { + val, ok := i() + if !ok { + break + } + fieldValue = append(fieldValue, Aws_cryptography_dbEncryptionSdk_structuredEncryption_CryptoList_member_FromDafny(val)) + } + return fieldValue +} +func Aws_cryptography_dbEncryptionSdk_structuredEncryption_EncryptPathStructureInput_algorithmSuiteId_FromDafny(input interface{}) *awscryptographymaterialproviderssmithygeneratedtypes.DBEAlgorithmSuiteId { + return func() *awscryptographymaterialproviderssmithygeneratedtypes.DBEAlgorithmSuiteId { + var u awscryptographymaterialproviderssmithygeneratedtypes.DBEAlgorithmSuiteId + if input == nil { + return nil + } + inputEnum := input.(AwsCryptographyMaterialProvidersTypes.DBEAlgorithmSuiteId) + index := -1 + for allEnums := dafny.Iterate(AwsCryptographyMaterialProvidersTypes.CompanionStruct_DBEAlgorithmSuiteId_{}.AllSingletonConstructors()); ; { + enum, ok := allEnums() + if ok { + index++ + if enum.(AwsCryptographyMaterialProvidersTypes.DBEAlgorithmSuiteId).Equals(inputEnum) { + break + } + } + } + + return &u.Values()[index] + }() +} +func Aws_cryptography_dbEncryptionSdk_structuredEncryption_EncryptPathStructureInput_encryptionContext_FromDafny(input interface{}) map[string]string { + var m map[string]string = make(map[string]string) + if input == nil { + return nil + } + for i := dafny.Iterate(input.(dafny.Map).Items()); ; { + val, ok := i() + if !ok { + break + } + m[awscryptographymaterialproviderssmithygenerated.Aws_cryptography_materialProviders_EncryptionContext_key_FromDafny((*val.(dafny.Tuple).IndexInt(0)))] = awscryptographymaterialproviderssmithygenerated.Aws_cryptography_materialProviders_EncryptionContext_value_FromDafny((*val.(dafny.Tuple).IndexInt(1))) + } + return m + +} +func Aws_cryptography_dbEncryptionSdk_structuredEncryption_EncryptPathStructureOutput_encryptedStructure_FromDafny(input interface{}) []awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.CryptoItem { + fieldValue := make([]awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.CryptoItem, 0) + for i := dafny.Iterate(input.(dafny.Sequence)); ; { + val, ok := i() + if !ok { + break + } + fieldValue = append(fieldValue, Aws_cryptography_dbEncryptionSdk_structuredEncryption_CryptoList_member_FromDafny(val)) + } + return fieldValue +} +func Aws_cryptography_dbEncryptionSdk_structuredEncryption_EncryptPathStructureOutput_parsedHeader_FromDafny(input interface{}) awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.ParsedHeader { + return awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.ParsedHeader{AlgorithmSuiteId: Aws_cryptography_dbEncryptionSdk_structuredEncryption_ParsedHeader_algorithmSuiteId_FromDafny(input.(AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.ParsedHeader).Dtor_algorithmSuiteId()), + EncryptedDataKeys: Aws_cryptography_dbEncryptionSdk_structuredEncryption_ParsedHeader_encryptedDataKeys_FromDafny(input.(AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.ParsedHeader).Dtor_encryptedDataKeys()), + StoredEncryptionContext: Aws_cryptography_dbEncryptionSdk_structuredEncryption_ParsedHeader_storedEncryptionContext_FromDafny(input.(AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.ParsedHeader).Dtor_storedEncryptionContext()), + EncryptionContext: Aws_cryptography_dbEncryptionSdk_structuredEncryption_ParsedHeader_encryptionContext_FromDafny(input.(AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.ParsedHeader).Dtor_encryptionContext()), + } +} +func Aws_cryptography_dbEncryptionSdk_structuredEncryption_EncryptStructureInput_tableName_FromDafny(input interface{}) string { + return func() string { + + a := UTF8.Encode(input.(dafny.Sequence)).Dtor_value() + s := string(dafny.ToByteArray(a.(dafny.Sequence))) + + return s + }() +} +func Aws_cryptography_dbEncryptionSdk_structuredEncryption_EncryptStructureInput_plaintextStructure_FromDafny(input interface{}) map[string]awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.StructuredDataTerminal { + var m map[string]awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.StructuredDataTerminal = make(map[string]awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.StructuredDataTerminal) + if input == nil { + return nil + } + for i := dafny.Iterate(input.(dafny.Map).Items()); ; { + val, ok := i() + if !ok { + break + } + m[Aws_cryptography_dbEncryptionSdk_structuredEncryption_StructuredDataMap_key_FromDafny((*val.(dafny.Tuple).IndexInt(0)))] = Aws_cryptography_dbEncryptionSdk_structuredEncryption_StructuredDataMap_value_FromDafny((*val.(dafny.Tuple).IndexInt(1))) + } + return m + +} +func Aws_cryptography_dbEncryptionSdk_structuredEncryption_EncryptStructureInput_cryptoSchema_FromDafny(input interface{}) map[string]awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.CryptoAction { + var m map[string]awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.CryptoAction = make(map[string]awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.CryptoAction) + if input == nil { + return nil + } + for i := dafny.Iterate(input.(dafny.Map).Items()); ; { + val, ok := i() + if !ok { + break + } + m[Aws_cryptography_dbEncryptionSdk_structuredEncryption_CryptoSchemaMap_key_FromDafny((*val.(dafny.Tuple).IndexInt(0)))] = Aws_cryptography_dbEncryptionSdk_structuredEncryption_CryptoSchemaMap_value_FromDafny((*val.(dafny.Tuple).IndexInt(1))) + } + return m + +} +func Aws_cryptography_dbEncryptionSdk_structuredEncryption_EncryptStructureInput_algorithmSuiteId_FromDafny(input interface{}) *awscryptographymaterialproviderssmithygeneratedtypes.DBEAlgorithmSuiteId { + return func() *awscryptographymaterialproviderssmithygeneratedtypes.DBEAlgorithmSuiteId { + var u awscryptographymaterialproviderssmithygeneratedtypes.DBEAlgorithmSuiteId + if input == nil { + return nil + } + inputEnum := input.(AwsCryptographyMaterialProvidersTypes.DBEAlgorithmSuiteId) + index := -1 + for allEnums := dafny.Iterate(AwsCryptographyMaterialProvidersTypes.CompanionStruct_DBEAlgorithmSuiteId_{}.AllSingletonConstructors()); ; { + enum, ok := allEnums() + if ok { + index++ + if enum.(AwsCryptographyMaterialProvidersTypes.DBEAlgorithmSuiteId).Equals(inputEnum) { + break + } + } + } + + return &u.Values()[index] + }() +} +func Aws_cryptography_dbEncryptionSdk_structuredEncryption_EncryptStructureInput_encryptionContext_FromDafny(input interface{}) map[string]string { + var m map[string]string = make(map[string]string) + if input == nil { + return nil + } + for i := dafny.Iterate(input.(dafny.Map).Items()); ; { + val, ok := i() + if !ok { + break + } + m[awscryptographymaterialproviderssmithygenerated.Aws_cryptography_materialProviders_EncryptionContext_key_FromDafny((*val.(dafny.Tuple).IndexInt(0)))] = awscryptographymaterialproviderssmithygenerated.Aws_cryptography_materialProviders_EncryptionContext_value_FromDafny((*val.(dafny.Tuple).IndexInt(1))) + } + return m + +} +func Aws_cryptography_dbEncryptionSdk_structuredEncryption_EncryptStructureOutput_encryptedStructure_FromDafny(input interface{}) map[string]awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.StructuredDataTerminal { + var m map[string]awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.StructuredDataTerminal = make(map[string]awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.StructuredDataTerminal) + if input == nil { + return nil + } + for i := dafny.Iterate(input.(dafny.Map).Items()); ; { + val, ok := i() + if !ok { + break + } + m[Aws_cryptography_dbEncryptionSdk_structuredEncryption_StructuredDataMap_key_FromDafny((*val.(dafny.Tuple).IndexInt(0)))] = Aws_cryptography_dbEncryptionSdk_structuredEncryption_StructuredDataMap_value_FromDafny((*val.(dafny.Tuple).IndexInt(1))) + } + return m + +} +func Aws_cryptography_dbEncryptionSdk_structuredEncryption_EncryptStructureOutput_cryptoSchema_FromDafny(input interface{}) map[string]awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.CryptoAction { + var m map[string]awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.CryptoAction = make(map[string]awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.CryptoAction) + if input == nil { + return nil + } + for i := dafny.Iterate(input.(dafny.Map).Items()); ; { + val, ok := i() + if !ok { + break + } + m[Aws_cryptography_dbEncryptionSdk_structuredEncryption_CryptoSchemaMap_key_FromDafny((*val.(dafny.Tuple).IndexInt(0)))] = Aws_cryptography_dbEncryptionSdk_structuredEncryption_CryptoSchemaMap_value_FromDafny((*val.(dafny.Tuple).IndexInt(1))) + } + return m + +} +func Aws_cryptography_dbEncryptionSdk_structuredEncryption_EncryptStructureOutput_parsedHeader_FromDafny(input interface{}) awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.ParsedHeader { + return awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.ParsedHeader{AlgorithmSuiteId: Aws_cryptography_dbEncryptionSdk_structuredEncryption_ParsedHeader_algorithmSuiteId_FromDafny(input.(AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.ParsedHeader).Dtor_algorithmSuiteId()), + EncryptedDataKeys: Aws_cryptography_dbEncryptionSdk_structuredEncryption_ParsedHeader_encryptedDataKeys_FromDafny(input.(AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.ParsedHeader).Dtor_encryptedDataKeys()), + StoredEncryptionContext: Aws_cryptography_dbEncryptionSdk_structuredEncryption_ParsedHeader_storedEncryptionContext_FromDafny(input.(AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.ParsedHeader).Dtor_storedEncryptionContext()), + EncryptionContext: Aws_cryptography_dbEncryptionSdk_structuredEncryption_ParsedHeader_encryptionContext_FromDafny(input.(AwsCryptographyDbEncryptionSdkStructuredEncryptionTypes.ParsedHeader).Dtor_encryptionContext()), + } +} +func Aws_cryptography_dbEncryptionSdk_structuredEncryption_ResolveAuthActionsInput_tableName_FromDafny(input interface{}) string { + return func() string { + + a := UTF8.Encode(input.(dafny.Sequence)).Dtor_value() + s := string(dafny.ToByteArray(a.(dafny.Sequence))) + + return s + }() +} +func Aws_cryptography_dbEncryptionSdk_structuredEncryption_ResolveAuthActionsInput_authActions_FromDafny(input interface{}) []awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.AuthItem { + fieldValue := make([]awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.AuthItem, 0) + for i := dafny.Iterate(input.(dafny.Sequence)); ; { + val, ok := i() + if !ok { + break + } + fieldValue = append(fieldValue, Aws_cryptography_dbEncryptionSdk_structuredEncryption_AuthList_member_FromDafny(val)) + } + return fieldValue +} +func Aws_cryptography_dbEncryptionSdk_structuredEncryption_ResolveAuthActionsInput_headerBytes_FromDafny(input interface{}) []byte { + return func() []byte { + if input == nil { + return nil + } + a := input.(dafny.Sequence).ToArray().(dafny.GoNativeArray) + b := make([]byte, 0, a.Length()) + for i := uint32(0); i < a.Length(); i++ { + b = append(b, a.Select(i).(byte)) + } + return b + }() +} +func Aws_cryptography_dbEncryptionSdk_structuredEncryption_ResolveAuthActionsOutput_cryptoActions_FromDafny(input interface{}) []awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.CryptoItem { + fieldValue := make([]awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes.CryptoItem, 0) + for i := dafny.Iterate(input.(dafny.Sequence)); ; { + val, ok := i() + if !ok { + break + } + fieldValue = append(fieldValue, Aws_cryptography_dbEncryptionSdk_structuredEncryption_CryptoList_member_FromDafny(val)) + } + return fieldValue +} +func Aws_cryptography_dbEncryptionSdk_structuredEncryption_StructuredEncryptionException_message_FromDafny(input interface{}) string { + return func() string { + + a := UTF8.Encode(input.(dafny.Sequence)).Dtor_value() + s := string(dafny.ToByteArray(a.(dafny.Sequence))) + + return s + }() +} diff --git a/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes/enums.go b/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes/enums.go new file mode 100644 index 000000000..bf38d1e83 --- /dev/null +++ b/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes/enums.go @@ -0,0 +1,35 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes + +type AuthenticateAction string + +const ( + AuthenticateActionSign AuthenticateAction = "SIGN" + AuthenticateActionDoNotSign AuthenticateAction = "DO_NOT_SIGN" +) + +func (AuthenticateAction) Values() []AuthenticateAction { + return []AuthenticateAction{ + "SIGN", + "DO_NOT_SIGN", + } +} + +type CryptoAction string + +const ( + CryptoActionEncryptAndSign CryptoAction = "ENCRYPT_AND_SIGN" + CryptoActionSignAndIncludeInEncryptionContext CryptoAction = "SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT" + CryptoActionSignOnly CryptoAction = "SIGN_ONLY" + CryptoActionDoNothing CryptoAction = "DO_NOTHING" +) + +func (CryptoAction) Values() []CryptoAction { + return []CryptoAction{ + "ENCRYPT_AND_SIGN", + "SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT", + "SIGN_ONLY", + "DO_NOTHING", + } +} diff --git a/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes/errors.go b/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes/errors.go new file mode 100644 index 000000000..ba37c71a0 --- /dev/null +++ b/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes/errors.go @@ -0,0 +1,17 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes + +import ( + "fmt" +) + +type StructuredEncryptionException struct { + StructuredEncryptionBaseException + Message string + ErrorCodeOverride *string +} + +func (e StructuredEncryptionException) Error() string { + return fmt.Sprintf("%s: %s", e.ErrorCodeOverride, e.Message) +} diff --git a/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes/types.go b/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes/types.go new file mode 100644 index 000000000..2401b2204 --- /dev/null +++ b/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes/types.go @@ -0,0 +1,615 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes + +import ( + "fmt" + "unicode/utf8" + + "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/awscryptographymaterialproviderssmithygeneratedtypes" +) + +type StructuredDataTerminal struct { + TypeId []byte + + Value []byte +} + +func (input StructuredDataTerminal) Validate() error { + if len(input.TypeId) < 2 { + return fmt.Errorf("TerminalTypeId has a minimum length of 2 but has the length of %d.", len(input.TypeId)) + } + if len(input.TypeId) > 2 { + return fmt.Errorf("TerminalTypeId has a maximum length of 2 but has the length of %d.", len(input.TypeId)) + } + + return nil +} + +type StructureSegment struct { + Key string +} + +func (input StructureSegment) Validate() error { + + return nil +} + +type AuthItem struct { + Action AuthenticateAction + + Data StructuredDataTerminal + + Key []PathSegment +} + +func (input AuthItem) Validate() error { + if input.Data.Validate() != nil { + return input.Data.Validate() + } + if input.Key == nil { + return fmt.Errorf("input.Key is required but has a nil value.") + } + if input.Aws_cryptography_dbEncryptionSdk_structuredEncryption_AuthItem_key_Validate() != nil { + return input.Aws_cryptography_dbEncryptionSdk_structuredEncryption_AuthItem_key_Validate() + } + + return nil +} + +func (input AuthItem) Aws_cryptography_dbEncryptionSdk_structuredEncryption_Path_member_Validate(Value PathSegment) error { + if Value == nil { + return nil + } + switch unionType := Value.(type) { + case *PathSegmentMembermember: + if unionType.Value.Validate() != nil { + return unionType.Value.Validate() + } + // Default case should not be reached. + default: + panic(fmt.Sprintf("Unhandled union type: %T ", unionType)) + } + + return nil +} +func (input AuthItem) Aws_cryptography_dbEncryptionSdk_structuredEncryption_AuthItem_key_Validate() error { + for _, item := range input.Key { + if input.Aws_cryptography_dbEncryptionSdk_structuredEncryption_Path_member_Validate(item) != nil { + return input.Aws_cryptography_dbEncryptionSdk_structuredEncryption_Path_member_Validate(item) + } + } + + return nil +} + +type CryptoItem struct { + Action CryptoAction + + Data StructuredDataTerminal + + Key []PathSegment +} + +func (input CryptoItem) Validate() error { + if input.Data.Validate() != nil { + return input.Data.Validate() + } + if input.Key == nil { + return fmt.Errorf("input.Key is required but has a nil value.") + } + if input.Aws_cryptography_dbEncryptionSdk_structuredEncryption_CryptoItem_key_Validate() != nil { + return input.Aws_cryptography_dbEncryptionSdk_structuredEncryption_CryptoItem_key_Validate() + } + + return nil +} + +func (input CryptoItem) Aws_cryptography_dbEncryptionSdk_structuredEncryption_Path_member_Validate(Value PathSegment) error { + if Value == nil { + return nil + } + switch unionType := Value.(type) { + case *PathSegmentMembermember: + if unionType.Value.Validate() != nil { + return unionType.Value.Validate() + } + // Default case should not be reached. + default: + panic(fmt.Sprintf("Unhandled union type: %T ", unionType)) + } + + return nil +} +func (input CryptoItem) Aws_cryptography_dbEncryptionSdk_structuredEncryption_CryptoItem_key_Validate() error { + for _, item := range input.Key { + if input.Aws_cryptography_dbEncryptionSdk_structuredEncryption_Path_member_Validate(item) != nil { + return input.Aws_cryptography_dbEncryptionSdk_structuredEncryption_Path_member_Validate(item) + } + } + + return nil +} + +type DecryptPathStructureInput struct { + Cmm awscryptographymaterialproviderssmithygeneratedtypes.ICryptographicMaterialsManager + + EncryptedStructure []AuthItem + + TableName string + + EncryptionContext map[string]string +} + +func (input DecryptPathStructureInput) Validate() error { + if input.EncryptedStructure == nil { + return fmt.Errorf("input.EncryptedStructure is required but has a nil value.") + } + if input.Aws_cryptography_dbEncryptionSdk_structuredEncryption_DecryptPathStructureInput_encryptedStructure_Validate() != nil { + return input.Aws_cryptography_dbEncryptionSdk_structuredEncryption_DecryptPathStructureInput_encryptedStructure_Validate() + } + if input.Aws_cryptography_dbEncryptionSdk_structuredEncryption_DecryptPathStructureInput_encryptionContext_Validate() != nil { + return input.Aws_cryptography_dbEncryptionSdk_structuredEncryption_DecryptPathStructureInput_encryptionContext_Validate() + } + + return nil +} + +func (input DecryptPathStructureInput) Aws_cryptography_dbEncryptionSdk_structuredEncryption_DecryptPathStructureInput_encryptedStructure_Validate() error { + for _, item := range input.EncryptedStructure { + if item.Validate() != nil { + return item.Validate() + } + } + + return nil +} +func (input DecryptPathStructureInput) Aws_cryptography_dbEncryptionSdk_structuredEncryption_DecryptPathStructureInput_encryptionContext_Validate() error { + for key, value := range input.EncryptionContext { + if !utf8.ValidString(key) { + return fmt.Errorf("Invalid UTF bytes %s ", key) + } + if !utf8.ValidString(value) { + return fmt.Errorf("Invalid UTF bytes %s ", value) + } + } + + return nil +} + +type ParsedHeader struct { + AlgorithmSuiteId awscryptographymaterialproviderssmithygeneratedtypes.DBEAlgorithmSuiteId + + EncryptedDataKeys []awscryptographymaterialproviderssmithygeneratedtypes.EncryptedDataKey + + EncryptionContext map[string]string + + StoredEncryptionContext map[string]string +} + +func (input ParsedHeader) Validate() error { + if input.EncryptedDataKeys == nil { + return fmt.Errorf("input.EncryptedDataKeys is required but has a nil value.") + } + if input.Aws_cryptography_dbEncryptionSdk_structuredEncryption_ParsedHeader_encryptedDataKeys_Validate() != nil { + return input.Aws_cryptography_dbEncryptionSdk_structuredEncryption_ParsedHeader_encryptedDataKeys_Validate() + } + if input.EncryptionContext == nil { + return fmt.Errorf("input.EncryptionContext is required but has a nil value.") + } + if input.Aws_cryptography_dbEncryptionSdk_structuredEncryption_ParsedHeader_encryptionContext_Validate() != nil { + return input.Aws_cryptography_dbEncryptionSdk_structuredEncryption_ParsedHeader_encryptionContext_Validate() + } + if input.StoredEncryptionContext == nil { + return fmt.Errorf("input.StoredEncryptionContext is required but has a nil value.") + } + if input.Aws_cryptography_dbEncryptionSdk_structuredEncryption_ParsedHeader_storedEncryptionContext_Validate() != nil { + return input.Aws_cryptography_dbEncryptionSdk_structuredEncryption_ParsedHeader_storedEncryptionContext_Validate() + } + + return nil +} + +func (input ParsedHeader) Aws_cryptography_dbEncryptionSdk_structuredEncryption_ParsedHeader_encryptedDataKeys_Validate() error { + for _, item := range input.EncryptedDataKeys { + if item.Validate() != nil { + return item.Validate() + } + } + + return nil +} +func (input ParsedHeader) Aws_cryptography_dbEncryptionSdk_structuredEncryption_ParsedHeader_encryptionContext_Validate() error { + for key, value := range input.EncryptionContext { + if !utf8.ValidString(key) { + return fmt.Errorf("Invalid UTF bytes %s ", key) + } + if !utf8.ValidString(value) { + return fmt.Errorf("Invalid UTF bytes %s ", value) + } + } + + return nil +} +func (input ParsedHeader) Aws_cryptography_dbEncryptionSdk_structuredEncryption_ParsedHeader_storedEncryptionContext_Validate() error { + for key, value := range input.StoredEncryptionContext { + if !utf8.ValidString(key) { + return fmt.Errorf("Invalid UTF bytes %s ", key) + } + if !utf8.ValidString(value) { + return fmt.Errorf("Invalid UTF bytes %s ", value) + } + } + + return nil +} + +type DecryptPathStructureOutput struct { + ParsedHeader ParsedHeader + + PlaintextStructure []CryptoItem +} + +func (input DecryptPathStructureOutput) Validate() error { + if input.ParsedHeader.Validate() != nil { + return input.ParsedHeader.Validate() + } + if input.PlaintextStructure == nil { + return fmt.Errorf("input.PlaintextStructure is required but has a nil value.") + } + if input.Aws_cryptography_dbEncryptionSdk_structuredEncryption_DecryptPathStructureOutput_plaintextStructure_Validate() != nil { + return input.Aws_cryptography_dbEncryptionSdk_structuredEncryption_DecryptPathStructureOutput_plaintextStructure_Validate() + } + + return nil +} + +func (input DecryptPathStructureOutput) Aws_cryptography_dbEncryptionSdk_structuredEncryption_DecryptPathStructureOutput_plaintextStructure_Validate() error { + for _, item := range input.PlaintextStructure { + if item.Validate() != nil { + return item.Validate() + } + } + + return nil +} + +type DecryptStructureInput struct { + AuthenticateSchema map[string]AuthenticateAction + + Cmm awscryptographymaterialproviderssmithygeneratedtypes.ICryptographicMaterialsManager + + EncryptedStructure map[string]StructuredDataTerminal + + TableName string + + EncryptionContext map[string]string +} + +func (input DecryptStructureInput) Validate() error { + if input.AuthenticateSchema == nil { + return fmt.Errorf("input.AuthenticateSchema is required but has a nil value.") + } + if input.EncryptedStructure == nil { + return fmt.Errorf("input.EncryptedStructure is required but has a nil value.") + } + if input.Aws_cryptography_dbEncryptionSdk_structuredEncryption_DecryptStructureInput_encryptedStructure_Validate() != nil { + return input.Aws_cryptography_dbEncryptionSdk_structuredEncryption_DecryptStructureInput_encryptedStructure_Validate() + } + if input.Aws_cryptography_dbEncryptionSdk_structuredEncryption_DecryptStructureInput_encryptionContext_Validate() != nil { + return input.Aws_cryptography_dbEncryptionSdk_structuredEncryption_DecryptStructureInput_encryptionContext_Validate() + } + + return nil +} + +func (input DecryptStructureInput) Aws_cryptography_dbEncryptionSdk_structuredEncryption_DecryptStructureInput_encryptedStructure_Validate() error { + for _, value := range input.EncryptedStructure { + if value.Validate() != nil { + return value.Validate() + } + } + + return nil +} +func (input DecryptStructureInput) Aws_cryptography_dbEncryptionSdk_structuredEncryption_DecryptStructureInput_encryptionContext_Validate() error { + for key, value := range input.EncryptionContext { + if !utf8.ValidString(key) { + return fmt.Errorf("Invalid UTF bytes %s ", key) + } + if !utf8.ValidString(value) { + return fmt.Errorf("Invalid UTF bytes %s ", value) + } + } + + return nil +} + +type DecryptStructureOutput struct { + CryptoSchema map[string]CryptoAction + + ParsedHeader ParsedHeader + + PlaintextStructure map[string]StructuredDataTerminal +} + +func (input DecryptStructureOutput) Validate() error { + if input.CryptoSchema == nil { + return fmt.Errorf("input.CryptoSchema is required but has a nil value.") + } + if input.ParsedHeader.Validate() != nil { + return input.ParsedHeader.Validate() + } + if input.PlaintextStructure == nil { + return fmt.Errorf("input.PlaintextStructure is required but has a nil value.") + } + if input.Aws_cryptography_dbEncryptionSdk_structuredEncryption_DecryptStructureOutput_plaintextStructure_Validate() != nil { + return input.Aws_cryptography_dbEncryptionSdk_structuredEncryption_DecryptStructureOutput_plaintextStructure_Validate() + } + + return nil +} + +func (input DecryptStructureOutput) Aws_cryptography_dbEncryptionSdk_structuredEncryption_DecryptStructureOutput_plaintextStructure_Validate() error { + for _, value := range input.PlaintextStructure { + if value.Validate() != nil { + return value.Validate() + } + } + + return nil +} + +type EncryptPathStructureInput struct { + Cmm awscryptographymaterialproviderssmithygeneratedtypes.ICryptographicMaterialsManager + + PlaintextStructure []CryptoItem + + TableName string + + AlgorithmSuiteId *awscryptographymaterialproviderssmithygeneratedtypes.DBEAlgorithmSuiteId + + EncryptionContext map[string]string +} + +func (input EncryptPathStructureInput) Validate() error { + if input.PlaintextStructure == nil { + return fmt.Errorf("input.PlaintextStructure is required but has a nil value.") + } + if input.Aws_cryptography_dbEncryptionSdk_structuredEncryption_EncryptPathStructureInput_plaintextStructure_Validate() != nil { + return input.Aws_cryptography_dbEncryptionSdk_structuredEncryption_EncryptPathStructureInput_plaintextStructure_Validate() + } + if input.Aws_cryptography_dbEncryptionSdk_structuredEncryption_EncryptPathStructureInput_encryptionContext_Validate() != nil { + return input.Aws_cryptography_dbEncryptionSdk_structuredEncryption_EncryptPathStructureInput_encryptionContext_Validate() + } + + return nil +} + +func (input EncryptPathStructureInput) Aws_cryptography_dbEncryptionSdk_structuredEncryption_EncryptPathStructureInput_plaintextStructure_Validate() error { + for _, item := range input.PlaintextStructure { + if item.Validate() != nil { + return item.Validate() + } + } + + return nil +} +func (input EncryptPathStructureInput) Aws_cryptography_dbEncryptionSdk_structuredEncryption_EncryptPathStructureInput_encryptionContext_Validate() error { + for key, value := range input.EncryptionContext { + if !utf8.ValidString(key) { + return fmt.Errorf("Invalid UTF bytes %s ", key) + } + if !utf8.ValidString(value) { + return fmt.Errorf("Invalid UTF bytes %s ", value) + } + } + + return nil +} + +type EncryptPathStructureOutput struct { + EncryptedStructure []CryptoItem + + ParsedHeader ParsedHeader +} + +func (input EncryptPathStructureOutput) Validate() error { + if input.EncryptedStructure == nil { + return fmt.Errorf("input.EncryptedStructure is required but has a nil value.") + } + if input.Aws_cryptography_dbEncryptionSdk_structuredEncryption_EncryptPathStructureOutput_encryptedStructure_Validate() != nil { + return input.Aws_cryptography_dbEncryptionSdk_structuredEncryption_EncryptPathStructureOutput_encryptedStructure_Validate() + } + if input.ParsedHeader.Validate() != nil { + return input.ParsedHeader.Validate() + } + + return nil +} + +func (input EncryptPathStructureOutput) Aws_cryptography_dbEncryptionSdk_structuredEncryption_EncryptPathStructureOutput_encryptedStructure_Validate() error { + for _, item := range input.EncryptedStructure { + if item.Validate() != nil { + return item.Validate() + } + } + + return nil +} + +type EncryptStructureInput struct { + Cmm awscryptographymaterialproviderssmithygeneratedtypes.ICryptographicMaterialsManager + + CryptoSchema map[string]CryptoAction + + PlaintextStructure map[string]StructuredDataTerminal + + TableName string + + AlgorithmSuiteId *awscryptographymaterialproviderssmithygeneratedtypes.DBEAlgorithmSuiteId + + EncryptionContext map[string]string +} + +func (input EncryptStructureInput) Validate() error { + if input.CryptoSchema == nil { + return fmt.Errorf("input.CryptoSchema is required but has a nil value.") + } + if input.PlaintextStructure == nil { + return fmt.Errorf("input.PlaintextStructure is required but has a nil value.") + } + if input.Aws_cryptography_dbEncryptionSdk_structuredEncryption_EncryptStructureInput_plaintextStructure_Validate() != nil { + return input.Aws_cryptography_dbEncryptionSdk_structuredEncryption_EncryptStructureInput_plaintextStructure_Validate() + } + if input.Aws_cryptography_dbEncryptionSdk_structuredEncryption_EncryptStructureInput_encryptionContext_Validate() != nil { + return input.Aws_cryptography_dbEncryptionSdk_structuredEncryption_EncryptStructureInput_encryptionContext_Validate() + } + + return nil +} + +func (input EncryptStructureInput) Aws_cryptography_dbEncryptionSdk_structuredEncryption_EncryptStructureInput_plaintextStructure_Validate() error { + for _, value := range input.PlaintextStructure { + if value.Validate() != nil { + return value.Validate() + } + } + + return nil +} +func (input EncryptStructureInput) Aws_cryptography_dbEncryptionSdk_structuredEncryption_EncryptStructureInput_encryptionContext_Validate() error { + for key, value := range input.EncryptionContext { + if !utf8.ValidString(key) { + return fmt.Errorf("Invalid UTF bytes %s ", key) + } + if !utf8.ValidString(value) { + return fmt.Errorf("Invalid UTF bytes %s ", value) + } + } + + return nil +} + +type EncryptStructureOutput struct { + CryptoSchema map[string]CryptoAction + + EncryptedStructure map[string]StructuredDataTerminal + + ParsedHeader ParsedHeader +} + +func (input EncryptStructureOutput) Validate() error { + if input.CryptoSchema == nil { + return fmt.Errorf("input.CryptoSchema is required but has a nil value.") + } + if input.EncryptedStructure == nil { + return fmt.Errorf("input.EncryptedStructure is required but has a nil value.") + } + if input.Aws_cryptography_dbEncryptionSdk_structuredEncryption_EncryptStructureOutput_encryptedStructure_Validate() != nil { + return input.Aws_cryptography_dbEncryptionSdk_structuredEncryption_EncryptStructureOutput_encryptedStructure_Validate() + } + if input.ParsedHeader.Validate() != nil { + return input.ParsedHeader.Validate() + } + + return nil +} + +func (input EncryptStructureOutput) Aws_cryptography_dbEncryptionSdk_structuredEncryption_EncryptStructureOutput_encryptedStructure_Validate() error { + for _, value := range input.EncryptedStructure { + if value.Validate() != nil { + return value.Validate() + } + } + + return nil +} + +type ResolveAuthActionsInput struct { + AuthActions []AuthItem + + HeaderBytes []byte + + TableName string +} + +func (input ResolveAuthActionsInput) Validate() error { + if input.AuthActions == nil { + return fmt.Errorf("input.AuthActions is required but has a nil value.") + } + if input.Aws_cryptography_dbEncryptionSdk_structuredEncryption_ResolveAuthActionsInput_authActions_Validate() != nil { + return input.Aws_cryptography_dbEncryptionSdk_structuredEncryption_ResolveAuthActionsInput_authActions_Validate() + } + + return nil +} + +func (input ResolveAuthActionsInput) Aws_cryptography_dbEncryptionSdk_structuredEncryption_ResolveAuthActionsInput_authActions_Validate() error { + for _, item := range input.AuthActions { + if item.Validate() != nil { + return item.Validate() + } + } + + return nil +} + +type ResolveAuthActionsOutput struct { + CryptoActions []CryptoItem +} + +func (input ResolveAuthActionsOutput) Validate() error { + if input.CryptoActions == nil { + return fmt.Errorf("input.CryptoActions is required but has a nil value.") + } + if input.Aws_cryptography_dbEncryptionSdk_structuredEncryption_ResolveAuthActionsOutput_cryptoActions_Validate() != nil { + return input.Aws_cryptography_dbEncryptionSdk_structuredEncryption_ResolveAuthActionsOutput_cryptoActions_Validate() + } + + return nil +} + +func (input ResolveAuthActionsOutput) Aws_cryptography_dbEncryptionSdk_structuredEncryption_ResolveAuthActionsOutput_cryptoActions_Validate() error { + for _, item := range input.CryptoActions { + if item.Validate() != nil { + return item.Validate() + } + } + + return nil +} + +type AtomicPrimitivesReference struct { +} + +func (input AtomicPrimitivesReference) Validate() error { + + return nil +} + +type StructuredEncryptionConfig struct { +} + +func (input StructuredEncryptionConfig) Validate() error { + + return nil +} + +// PathSegmentMembermember +type PathSegment interface { + isPathSegment() +} + +type PathSegmentMembermember struct { + Value StructureSegment +} + +func (*PathSegmentMembermember) isPathSegment() {} + +type StructuredEncryptionBaseException interface { + // This is a dummy method to allow type assertion since Go empty interfaces + // aren't useful for type assertion checks. No concrete class is expected to implement + // this method. This is also not exported. + interfaceBindingMethod() +} diff --git a/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes/unmodelled_errors.go b/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes/unmodelled_errors.go new file mode 100644 index 000000000..43a2adee7 --- /dev/null +++ b/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes/unmodelled_errors.go @@ -0,0 +1,26 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes + +import ( + "fmt" +) + +type CollectionOfErrors struct { + StructuredEncryptionBaseException + ListOfErrors []error + Message string +} + +func (e CollectionOfErrors) Error() string { + return fmt.Sprintf("message: %s\n err %v", e.Message, e.ListOfErrors) +} + +type OpaqueError struct { + StructuredEncryptionBaseException + ErrObject interface{} +} + +func (e OpaqueError) Error() string { + return fmt.Sprintf("message: %v", e.ErrObject) +} diff --git a/releases/go/dynamodb-esdk/dbesdkmiddleware/middleware.go b/releases/go/dynamodb-esdk/dbesdkmiddleware/middleware.go new file mode 100644 index 000000000..4fbb76c29 --- /dev/null +++ b/releases/go/dynamodb-esdk/dbesdkmiddleware/middleware.go @@ -0,0 +1,350 @@ +package dbesdkmiddleware + +import ( + "context" + + "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes" + "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkdynamodbtransformssmithygenerated" + "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes" + "github.com/aws/aws-sdk-go-v2/service/dynamodb" + "github.com/aws/smithy-go/middleware" +) + +const ( + // ContextKeyOriginalInput is the key used to store the original DynamoDB input in the context + ContextKeyOriginalInput = "originalInput" +) + +type DBEsdkMiddleware struct { + client *awscryptographydbencryptionsdkdynamodbtransformssmithygenerated.Client +} + +func NewDBEsdkMiddleware(config awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes.DynamoDbTablesEncryptionConfig) (*DBEsdkMiddleware, error) { + client, err := awscryptographydbencryptionsdkdynamodbtransformssmithygenerated.NewClient(config) + if err != nil { + return nil, err + } + return &DBEsdkMiddleware{ + client: client, + }, nil +} + +func (m DBEsdkMiddleware) CreateMiddleware() func(options *dynamodb.Options) { + return func(options *dynamodb.Options) { + options.APIOptions = append(options.APIOptions, func(stack *middleware.Stack) error { + // Add request interceptor at the beginning of Initialize step + requestIntercetor := m.createRequestInterceptor() + if err := stack.Initialize.Add(requestIntercetor, middleware.Before); err != nil { + return err + } + // Add response interceptor at the end of Finalize step + return stack.Finalize.Add(m.createResponseInterceptor(), middleware.After) + }) + } +} + +func (m DBEsdkMiddleware) createRequestInterceptor() middleware.InitializeMiddleware { + return middleware.InitializeMiddlewareFunc("aws-dbesdk-request-interceptor", func( + ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler, + ) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, + ) { + ctx, err = m.handleRequestInterception(ctx, in.Parameters) + if err != nil { + return middleware.InitializeOutput{}, middleware.Metadata{}, err + } + return next.HandleInitialize(ctx, in) + }) +} + +// handleRequestInterception handles the interception logic before the DynamoDB operation +func (m DBEsdkMiddleware) handleRequestInterception(ctx context.Context, request interface{}) (context.Context, error) { + switch v := request.(type) { + case *dynamodb.PutItemInput: + ctx = middleware.WithStackValue(ctx, ContextKeyOriginalInput, *v) + // Note: this context is not propagated downstream into dafny layer https://issues.amazon.com/CrypTool-5403 + transformedRequest, err := m.client.PutItemInputTransform(ctx, awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.PutItemInputTransformInput{ + SdkInput: *v, + }) + if err != nil { + return nil, err + } + *v = transformedRequest.TransformedInput + case *dynamodb.GetItemInput: + ctx = middleware.WithStackValue(ctx, ContextKeyOriginalInput, *v) + // Note: this context is not propagated downstream into dafny layer https://issues.amazon.com/CrypTool-5403 + transformedRequest, err := m.client.GetItemInputTransform(ctx, awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.GetItemInputTransformInput{ + SdkInput: *v, + }) + if err != nil { + return nil, err + } + *v = transformedRequest.TransformedInput + case *dynamodb.BatchGetItemInput: + ctx = middleware.WithStackValue(ctx, ContextKeyOriginalInput, *v) + // Note: this context is not propagated downstream into dafny layer https://issues.amazon.com/CrypTool-5403 + transformedRequest, err := m.client.BatchGetItemInputTransform(ctx, awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.BatchGetItemInputTransformInput{ + SdkInput: *v, + }) + if err != nil { + return nil, err + } + *v = transformedRequest.TransformedInput + case *dynamodb.BatchWriteItemInput: + ctx = middleware.WithStackValue(ctx, ContextKeyOriginalInput, *v) + // Note: this context is not propagated downstream into dafny layer https://issues.amazon.com/CrypTool-5403 + transformedRequest, err := m.client.BatchWriteItemInputTransform(ctx, awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.BatchWriteItemInputTransformInput{ + SdkInput: *v, + }) + if err != nil { + return nil, err + } + *v = transformedRequest.TransformedInput + case *dynamodb.BatchExecuteStatementInput: + ctx = middleware.WithStackValue(ctx, ContextKeyOriginalInput, *v) + // Note: this context is not propagated downstream into dafny layer https://issues.amazon.com/CrypTool-5403 + transformedRequest, err := m.client.BatchExecuteStatementInputTransform(ctx, awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.BatchExecuteStatementInputTransformInput{ + SdkInput: *v, + }) + if err != nil { + return nil, err + } + *v = transformedRequest.TransformedInput + case *dynamodb.DeleteItemInput: + ctx = middleware.WithStackValue(ctx, ContextKeyOriginalInput, *v) + // Note: this context is not propagated downstream into dafny layer https://issues.amazon.com/CrypTool-5403 + transformedRequest, err := m.client.DeleteItemInputTransform(ctx, awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.DeleteItemInputTransformInput{ + SdkInput: *v, + }) + if err != nil { + return nil, err + } + *v = transformedRequest.TransformedInput + case *dynamodb.ExecuteStatementInput: + ctx = middleware.WithStackValue(ctx, ContextKeyOriginalInput, *v) + // Note: this context is not propagated downstream into dafny layer https://issues.amazon.com/CrypTool-5403 + transformedRequest, err := m.client.ExecuteStatementInputTransform(ctx, awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.ExecuteStatementInputTransformInput{ + SdkInput: *v, + }) + if err != nil { + return nil, err + } + *v = transformedRequest.TransformedInput + case *dynamodb.ExecuteTransactionInput: + ctx = middleware.WithStackValue(ctx, ContextKeyOriginalInput, *v) + // Note: this context is not propagated downstream into dafny layer https://issues.amazon.com/CrypTool-5403 + transformedRequest, err := m.client.ExecuteTransactionInputTransform(ctx, awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.ExecuteTransactionInputTransformInput{ + SdkInput: *v, + }) + if err != nil { + return nil, err + } + *v = transformedRequest.TransformedInput + case *dynamodb.QueryInput: + ctx = middleware.WithStackValue(ctx, ContextKeyOriginalInput, *v) + // Note: this context is not propagated downstream into dafny layer https://issues.amazon.com/CrypTool-5403 + transformedRequest, err := m.client.QueryInputTransform(ctx, awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.QueryInputTransformInput{ + SdkInput: *v, + }) + if err != nil { + return nil, err + } + *v = transformedRequest.TransformedInput + case *dynamodb.ScanInput: + ctx = middleware.WithStackValue(ctx, ContextKeyOriginalInput, *v) + // Note: this context is not propagated downstream into dafny layer https://issues.amazon.com/CrypTool-5403 + transformedRequest, err := m.client.ScanInputTransform(ctx, awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.ScanInputTransformInput{ + SdkInput: *v, + }) + if err != nil { + return nil, err + } + *v = transformedRequest.TransformedInput + case *dynamodb.TransactGetItemsInput: + ctx = middleware.WithStackValue(ctx, ContextKeyOriginalInput, *v) + // Note: this context is not propagated downstream into dafny layer https://issues.amazon.com/CrypTool-5403 + transformedRequest, err := m.client.TransactGetItemsInputTransform(ctx, awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.TransactGetItemsInputTransformInput{ + SdkInput: *v, + }) + if err != nil { + return nil, err + } + *v = transformedRequest.TransformedInput + case *dynamodb.TransactWriteItemsInput: + ctx = middleware.WithStackValue(ctx, ContextKeyOriginalInput, *v) + // Note: this context is not propagated downstream into dafny layer https://issues.amazon.com/CrypTool-5403 + transformedRequest, err := m.client.TransactWriteItemsInputTransform(ctx, awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.TransactWriteItemsInputTransformInput{ + SdkInput: *v, + }) + if err != nil { + return nil, err + } + *v = transformedRequest.TransformedInput + case *dynamodb.UpdateItemInput: + ctx = middleware.WithStackValue(ctx, ContextKeyOriginalInput, *v) + // Note: this context is not propagated downstream into dafny layer https://issues.amazon.com/CrypTool-5403 + transformedRequest, err := m.client.UpdateItemInputTransform(ctx, awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.UpdateItemInputTransformInput{ + SdkInput: *v, + }) + if err != nil { + return nil, err + } + *v = transformedRequest.TransformedInput + } + return ctx, nil +} + +// createResponseInterceptor creates and returns the middleware interceptor for responses +func (m DBEsdkMiddleware) createResponseInterceptor() middleware.FinalizeMiddleware { + return middleware.FinalizeMiddlewareFunc("aws-dbesdk-response-interceptor", func( + ctx context.Context, in middleware.FinalizeInput, next middleware.FinalizeHandler, + ) ( + out middleware.FinalizeOutput, metadata middleware.Metadata, err error, + ) { + // First let the request complete + result, metadata, err := next.HandleFinalize(ctx, in) + if err != nil { + return result, metadata, err + } + // Then intercept the response + err = m.handleResponseInterception(ctx, result.Result) + return result, metadata, err + }) +} + +// handleResponseInterception handles the interception logic after the DynamoDB operation +func (m DBEsdkMiddleware) handleResponseInterception(ctx context.Context, response interface{}) error { + switch v := response.(type) { + case *dynamodb.PutItemOutput: + // Note: this context is not propagated downstream into dafny layer https://issues.amazon.com/CrypTool-5403 + transformedRequest, err := m.client.PutItemOutputTransform(ctx, awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.PutItemOutputTransformInput{ + OriginalInput: middleware.GetStackValue(ctx, ContextKeyOriginalInput).(dynamodb.PutItemInput), + SdkOutput: *v, + }) + if err != nil { + return err + } + *v = transformedRequest.TransformedOutput + case *dynamodb.GetItemOutput: + // Note: this context is not propagated downstream into dafny layer https://issues.amazon.com/CrypTool-5403 + transformedRequest, err := m.client.GetItemOutputTransform(ctx, awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.GetItemOutputTransformInput{ + OriginalInput: middleware.GetStackValue(ctx, ContextKeyOriginalInput).(dynamodb.GetItemInput), + SdkOutput: *v, + }) + if err != nil { + return err + } + *v = transformedRequest.TransformedOutput + case *dynamodb.BatchGetItemOutput: + // Note: this context is not propagated downstream into dafny layer https://issues.amazon.com/CrypTool-5403 + transformedRequest, err := m.client.BatchGetItemOutputTransform(ctx, awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.BatchGetItemOutputTransformInput{ + OriginalInput: middleware.GetStackValue(ctx, ContextKeyOriginalInput).(dynamodb.BatchGetItemInput), + SdkOutput: *v, + }) + if err != nil { + return err + } + *v = transformedRequest.TransformedOutput + case *dynamodb.BatchWriteItemOutput: + // Note: this context is not propagated downstream into dafny layer https://issues.amazon.com/CrypTool-5403 + transformedRequest, err := m.client.BatchWriteItemOutputTransform(ctx, awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.BatchWriteItemOutputTransformInput{ + OriginalInput: middleware.GetStackValue(ctx, ContextKeyOriginalInput).(dynamodb.BatchWriteItemInput), + SdkOutput: *v, + }) + if err != nil { + return err + } + *v = transformedRequest.TransformedOutput + case *dynamodb.BatchExecuteStatementOutput: + // Note: this context is not propagated downstream into dafny layer https://issues.amazon.com/CrypTool-5403 + transformedRequest, err := m.client.BatchExecuteStatementOutputTransform(ctx, awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.BatchExecuteStatementOutputTransformInput{ + OriginalInput: middleware.GetStackValue(ctx, ContextKeyOriginalInput).(dynamodb.BatchExecuteStatementInput), + SdkOutput: *v, + }) + if err != nil { + return err + } + *v = transformedRequest.TransformedOutput + case *dynamodb.DeleteItemOutput: + // Note: this context is not propagated downstream into dafny layer https://issues.amazon.com/CrypTool-5403 + transformedRequest, err := m.client.DeleteItemOutputTransform(ctx, awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.DeleteItemOutputTransformInput{ + OriginalInput: middleware.GetStackValue(ctx, ContextKeyOriginalInput).(dynamodb.DeleteItemInput), + SdkOutput: *v, + }) + if err != nil { + return err + } + *v = transformedRequest.TransformedOutput + case *dynamodb.ExecuteStatementOutput: + // Note: this context is not propagated downstream into dafny layer https://issues.amazon.com/CrypTool-5403 + transformedRequest, err := m.client.ExecuteStatementOutputTransform(ctx, awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.ExecuteStatementOutputTransformInput{ + OriginalInput: middleware.GetStackValue(ctx, ContextKeyOriginalInput).(dynamodb.ExecuteStatementInput), + SdkOutput: *v, + }) + if err != nil { + return err + } + *v = transformedRequest.TransformedOutput + case *dynamodb.ExecuteTransactionOutput: + // Note: this context is not propagated downstream into dafny layer https://issues.amazon.com/CrypTool-5403 + transformedRequest, err := m.client.ExecuteTransactionOutputTransform(ctx, awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.ExecuteTransactionOutputTransformInput{ + OriginalInput: middleware.GetStackValue(ctx, ContextKeyOriginalInput).(dynamodb.ExecuteTransactionInput), + SdkOutput: *v, + }) + if err != nil { + return err + } + *v = transformedRequest.TransformedOutput + case *dynamodb.QueryOutput: + // Note: this context is not propagated downstream into dafny layer https://issues.amazon.com/CrypTool-5403 + transformedRequest, err := m.client.QueryOutputTransform(ctx, awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.QueryOutputTransformInput{ + OriginalInput: middleware.GetStackValue(ctx, ContextKeyOriginalInput).(dynamodb.QueryInput), + SdkOutput: *v, + }) + if err != nil { + return err + } + *v = transformedRequest.TransformedOutput + case *dynamodb.ScanOutput: + // Note: this context is not propagated downstream into dafny layer https://issues.amazon.com/CrypTool-5403 + transformedRequest, err := m.client.ScanOutputTransform(ctx, awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.ScanOutputTransformInput{ + OriginalInput: middleware.GetStackValue(ctx, ContextKeyOriginalInput).(dynamodb.ScanInput), + SdkOutput: *v, + }) + if err != nil { + return err + } + *v = transformedRequest.TransformedOutput + case *dynamodb.TransactGetItemsOutput: + // Note: this context is not propagated downstream into dafny layer https://issues.amazon.com/CrypTool-5403 + transformedRequest, err := m.client.TransactGetItemsOutputTransform(ctx, awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.TransactGetItemsOutputTransformInput{ + OriginalInput: middleware.GetStackValue(ctx, ContextKeyOriginalInput).(dynamodb.TransactGetItemsInput), + SdkOutput: *v, + }) + if err != nil { + return err + } + *v = transformedRequest.TransformedOutput + case *dynamodb.TransactWriteItemsOutput: + // Note: this context is not propagated downstream into dafny layer https://issues.amazon.com/CrypTool-5403 + transformedRequest, err := m.client.TransactWriteItemsOutputTransform(ctx, awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.TransactWriteItemsOutputTransformInput{ + OriginalInput: middleware.GetStackValue(ctx, ContextKeyOriginalInput).(dynamodb.TransactWriteItemsInput), + SdkOutput: *v, + }) + if err != nil { + return err + } + *v = transformedRequest.TransformedOutput + case *dynamodb.UpdateItemOutput: + // Note: this context is not propagated downstream into dafny layer https://issues.amazon.com/CrypTool-5403 + transformedRequest, err := m.client.UpdateItemOutputTransform(ctx, awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes.UpdateItemOutputTransformInput{ + OriginalInput: middleware.GetStackValue(ctx, ContextKeyOriginalInput).(dynamodb.UpdateItemInput), + SdkOutput: *v, + }) + if err != nil { + return err + } + *v = transformedRequest.TransformedOutput + } + return nil +} diff --git a/releases/go/dynamodb-esdk/examples/KmsRsaKeyringPublicKey.pem b/releases/go/dynamodb-esdk/examples/KmsRsaKeyringPublicKey.pem new file mode 100644 index 000000000..49be2fca6 --- /dev/null +++ b/releases/go/dynamodb-esdk/examples/KmsRsaKeyringPublicKey.pem @@ -0,0 +1,9 @@ +-----BEGIN PUBLIC KEY----- +MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAqaXyp9sf/0+j+ujqhqhO +ttXP9qjq+F97QYgH1bL3V/1omPf5yrZmRd7JUi6PH2vzlRcCu9rzAhIYjFlRHv2q +RlFV3ynJl068mP5q5CvMDYUf9DntNVf5aJsrJsskmnXmxlWOO1QSP5a20Vx473gy +vP6jNus+Sl3vhxWLhXUNNaBVXsXYG6fuTtZaGQM+GOzwTPjwByK+/fpUYFOBnxoW +nFiXEOuFrR6SklaMB3eCbe+aXBc0b0b/J7HHTiscZ5/igHkGC/RgO9eSNBXNXA2P +JKDnxL6pwQTnXi0bdP8BJfIB+rXHk9P5VuI4zvY5TYGAOknOtk3Cd4Fh4IX2af2P +4wIDAQAB +-----END PUBLIC KEY----- diff --git a/releases/go/dynamodb-esdk/examples/RawRsaKeyringExamplePrivateKey.pem b/releases/go/dynamodb-esdk/examples/RawRsaKeyringExamplePrivateKey.pem new file mode 100644 index 000000000..ba363fb7b --- /dev/null +++ b/releases/go/dynamodb-esdk/examples/RawRsaKeyringExamplePrivateKey.pem @@ -0,0 +1,28 @@ +-----BEGIN PRIVATE KEY----- +MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQC8CrSaH4gLLDT6 +NskC4dfC6m6Y8AJRiYni/cKw26gYoBKAZKVmsA76w4HICjDM+tx2Ob5BhhjafORR +Onic/OxrYRBMSQfFZGv6JVYix0d+5SnIzFKVfCIqBeSPsDJ8Y3izMC2x03esiTMr +CtM/klcfD0Dnd2yEgJxIV22wegpRmd7jzqTs5zKxA7gjvFZqig0/7HQlibjPtE98 +UEggapryAxqZZqXy2HXBhgTbDHY4xDlTjFurdyHl+PRCfRq5JBIBSy/lkp/hr+Nx +PwstAxnsW0uqZ5PIDGueZDe419rh8t8zbEo4ST0Njx3w6Q4m0SjYBt2yPyEDarvS +UdWXF1obAgMBAAECggEAA6n9vOcSYo1Y9ussXYcDCkRBJW+/y9DvQ+IH8iRFkT1F +PwU3B9o0YISAueIg802MEC2t3F79ivxWApMuGHkBLlJ029esdBcx12z00baqWPmk +J8p7bXg+vizhOD+JrEzP5EXzDfz93vnJanRKi3mRgwRsElaMYcSTxwEVHRQzsUVS +qcw7eO/t/XFRMsdxx/Co0VWuv5KvoP7YMf/mCUwFE1XjMoB7Q4GO/9Cx/6uwM3nD +gxwd21Mx90PI9/k04GfdB4lv9EmjQ0LQDbjpr/ws69+H+AnkU6VVacQT69C2EEtq +1RjaF+GLs679p658FEN+Ua7904VbaOyiLFQpE8cD0QKBgQDB2ZJy0YZdMgQjO9Q6 +kFcp/GxU8OUsHjvBqKNpYsIA07S4XtwrUyzl8M60BSMClRP7GUvqG76d9an6z7cz +WAlcnXjEeOlQe7XurxzoqvOEI+TFSU2JHciFm3lXhOZHt7jNzW0XhV/pdS2Oqkdq +/TQYkeQMDPUxieOpiLeDgbZEAwKBgQD4VG4O/aDMZnq9+5/Tznu09NDlBKS1pybs +risorM7RLSX7gpLyGzH5yfYZog2P329+Zzs88yS19sYBt0xy++tPeJPGSt0fGvxM +dPWMYGjQHCsuDu/ep4bX9WM4blqlNMFcEhAzJ0Gd7HCG6/2zc3jct716vU72CKeH +K0PWNKJSCQKBgEb7orLEoozxya4VNGuVezV2pzybUW/MSllppRzr+tpOq3hv0/NR +a7lvamFlGCLT8BMcej3plu1Ejc+3y//TFuqBBz36gITmKAKUwOM55h3W/uh3JRs2 +erzh55bypVhRoCxMMsxQHITiUaJSHADDYxY0Jet7uzU+psznsTtIfjN9AoGBAOFe +FmgKa+U02A4VD071JLXsPKyrkyO8qAnCYy7N7gBOXhssvFl2rttIG83VkUNR/uiT +nWJKM7XkWHz0MjBkSoDcKBiclqMFJZXpy3LziAvelJ1/Ntg1552UeNCc7izifN0n +E4apCNbe3pzEDYHPuQ9uvUpoBgIphoiYjj8Xk3ypAoGAUcVTaFMff8ojAJsGzZC1 +E+K2GneU8pfMkNVpWovgUM5oeay3D+iXcvG5xGZmTfZPTlfBlXjg728r/I+lI9hD +EI9JkQmSNtzzcrDyeTLuRrufUXkOwiKY2Ug5zOD3DZ6jN9x+cNUuGPeTuc/k+DyU +t+TAC6tTRwZ8Re65wYPTVak= +-----END PRIVATE KEY----- diff --git a/releases/go/dynamodb-esdk/examples/RawRsaKeyringExamplePublicKey.pem b/releases/go/dynamodb-esdk/examples/RawRsaKeyringExamplePublicKey.pem new file mode 100644 index 000000000..5f2334348 --- /dev/null +++ b/releases/go/dynamodb-esdk/examples/RawRsaKeyringExamplePublicKey.pem @@ -0,0 +1,9 @@ +-----BEGIN PUBLIC KEY----- +MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvAq0mh+ICyw0+jbJAuHX +wupumPACUYmJ4v3CsNuoGKASgGSlZrAO+sOByAowzPrcdjm+QYYY2nzkUTp4nPzs +a2EQTEkHxWRr+iVWIsdHfuUpyMxSlXwiKgXkj7AyfGN4szAtsdN3rIkzKwrTP5JX +Hw9A53dshICcSFdtsHoKUZne486k7OcysQO4I7xWaooNP+x0JYm4z7RPfFBIIGqa +8gMamWal8th1wYYE2wx2OMQ5U4xbq3ch5fj0Qn0auSQSAUsv5ZKf4a/jcT8LLQMZ +7FtLqmeTyAxrnmQ3uNfa4fLfM2xKOEk9DY8d8OkOJtEo2Abdsj8hA2q70lHVlxda +GwIDAQAB +-----END PUBLIC KEY----- diff --git a/releases/go/dynamodb-esdk/examples/clientsupplier/clientsupplierexample.go b/releases/go/dynamodb-esdk/examples/clientsupplier/clientsupplierexample.go new file mode 100644 index 000000000..b168d85f1 --- /dev/null +++ b/releases/go/dynamodb-esdk/examples/clientsupplier/clientsupplierexample.go @@ -0,0 +1,250 @@ +// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +package clientsupplier + +import ( + "context" + "fmt" + "reflect" + + mpl "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/awscryptographymaterialproviderssmithygenerated" + mpltypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/awscryptographymaterialproviderssmithygeneratedtypes" + dbesdkdynamodbencryptiontypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes" + dbesdkstructuredencryptiontypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes" + "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/dbesdkmiddleware" + "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/examples/utils" + + "github.com/aws/aws-sdk-go-v2/aws" + "github.com/aws/aws-sdk-go-v2/config" + "github.com/aws/aws-sdk-go-v2/service/dynamodb" + "github.com/aws/aws-sdk-go-v2/service/dynamodb/types" +) + +/* +This example sets up an MRK multi-keyring and an MRK discovery +multi-keyring using a custom client supplier. +A custom client supplier grants users access to more granular +configuration aspects of their authentication details and KMS +client. In this example, we create a simple custom client supplier +that authenticates with a different IAM role based on the +region of the KMS key. + +This example creates a MRK multi-keyring configured with a custom +client supplier using a single MRK and puts an encrypted item to the +table. Then, it creates a MRK discovery multi-keyring to decrypt the item +and retrieves the item from the table. + +Running this example requires access to the DDB Table whose name +is provided in CLI arguments. +This table must be configured with the following +primary key configuration: + - Partition key is named "partition_key" with type (S) + - Sort key is named "sort_key" with type (S) +*/ +func ClientSupplierExample(ddbTableName, keyArn string, accountIds, regions []string) { + // 1. Create a single MRK multi-keyring. + // This can be either a single-region KMS key or an MRK. + // For this example to succeed, the key's region must either + // 1) be in the regions list, or + // 2) the key must be an MRK with a replica defined + // in a region in the regions list, and the client + // must have the correct permissions to access the replica. + matProv, err := mpl.NewClient(mpltypes.MaterialProvidersConfig{}) + utils.HandleError(err) + + // Create the multi-keyring using our custom client supplier + // defined in the RegionalRoleClientSupplier class in this directory. + createAwsKmsMrkMultiKeyringInput := mpltypes.CreateAwsKmsMrkMultiKeyringInput{ + // Note: RegionalRoleClientSupplier will internally use the keyArn's region + // to retrieve the correct IAM role. + ClientSupplier: &RegionalRoleClientSupplier{}, + Generator: &keyArn, + } + mrkKeyringWithClientSupplier, err := matProv.CreateAwsKmsMrkMultiKeyring(context.Background(), createAwsKmsMrkMultiKeyringInput) + utils.HandleError(err) + + // 2. Configure which attributes are encrypted and/or signed when writing new items. + // For each attribute that may exist on the items we plan to write to our DynamoDbTable, + // we must explicitly configure how they should be treated during item encryption: + // - ENCRYPT_AND_SIGN: The attribute is encrypted and included in the signature + // - SIGN_ONLY: The attribute is not encrypted, but is still included in the signature + // - DO_NOTHING: The attribute is not encrypted and not included in the signature + attributeActionsOnEncrypt := map[string]dbesdkstructuredencryptiontypes.CryptoAction{ + "partition_key": dbesdkstructuredencryptiontypes.CryptoActionSignOnly, // Our partition attribute must be SIGN_ONLY + "sort_key": dbesdkstructuredencryptiontypes.CryptoActionSignOnly, // Our sort attribute must be SIGN_ONLY + "sensitive_data": dbesdkstructuredencryptiontypes.CryptoActionEncryptAndSign, + } + + // 3. Configure which attributes we expect to be included in the signature + // when reading items. There are two options for configuring this: + // + // - (Recommended) Configure `allowedUnsignedAttributesPrefix`: + // When defining your DynamoDb schema and deciding on attribute names, + // choose a distinguishing prefix (such as ":") for all attributes that + // you do not want to include in the signature. + // This has two main benefits: + // - It is easier to reason about the security and authenticity of data within your item + // when all unauthenticated data is easily distinguishable by their attribute name. + // - If you need to add new unauthenticated attributes in the future, + // you can easily make the corresponding update to your `attributeActionsOnEncrypt` + // and immediately start writing to that new attribute, without + // any other configuration update needed. + // Once you configure this field, it is not safe to update it. + // + // - Configure `allowedUnsignedAttributes`: You may also explicitly list + // a set of attributes that should be considered unauthenticated when encountered + // on read. Be careful if you use this configuration. Do not remove an attribute + // name from this configuration, even if you are no longer writing with that attribute, + // as old items may still include this attribute, and our configuration needs to know + // to continue to exclude this attribute from the signature scope. + // If you add new attribute names to this field, you must first deploy the update to this + // field to all readers in your host fleet before deploying the update to start writing + // with that new attribute. + // + // For this example, we currently authenticate all attributes. To make it easier to + // add unauthenticated attributes in the future, we define a prefix ":" for such attributes. + unsignAttrPrefix := ":" + partitionKey := "partition_key" + sortKey := "sort_key" + // 4. Create the DynamoDb Encryption configuration for the table we will be writing to. + tableConfig := dbesdkdynamodbencryptiontypes.DynamoDbTableEncryptionConfig{ + LogicalTableName: ddbTableName, + PartitionKeyName: partitionKey, + SortKeyName: &sortKey, + AttributeActionsOnEncrypt: attributeActionsOnEncrypt, + Keyring: mrkKeyringWithClientSupplier, + AllowedUnsignedAttributePrefix: &unsignAttrPrefix, + } + + tableConfigs := map[string]dbesdkdynamodbencryptiontypes.DynamoDbTableEncryptionConfig{ + ddbTableName: tableConfig, + } + + // 5. Create the DynamoDb Encryption Interceptor + encryptionConfig := dbesdkdynamodbencryptiontypes.DynamoDbTablesEncryptionConfig{ + TableEncryptionConfigs: tableConfigs, + } + + // 6. Create a new AWS SDK DynamoDb client using the DynamoDb Encryption Interceptor above + cfg, err := config.LoadDefaultConfig(context.TODO()) + utils.HandleError(err) + + dbEsdkMiddleware, err := dbesdkmiddleware.NewDBEsdkMiddleware(encryptionConfig) + utils.HandleError(err) + ddbClient := dynamodb.NewFromConfig(cfg, dbEsdkMiddleware.CreateMiddleware()) + + // 7. Put an item into our table using the above client. + // Before the item gets sent to DynamoDb, it will be encrypted + // client-side using the MRK multi-keyring. + // The data key protecting this item will be encrypted + // with all the KMS Keys in this keyring, so that it can be + // decrypted with any one of those KMS Keys. + item := map[string]types.AttributeValue{ + "partition_key": &types.AttributeValueMemberS{Value: "clientSupplierItem"}, + "sort_key": &types.AttributeValueMemberN{Value: "0"}, + "sensitive_data": &types.AttributeValueMemberS{Value: "encrypt and sign me!"}, + } + + putRequest := &dynamodb.PutItemInput{ + TableName: &ddbTableName, + Item: item, + } + + _, err = ddbClient.PutItem(context.Background(), putRequest) + utils.HandleError(err) + + // 8. Get the item back from our table using the same keyring. + // The client will decrypt the item client-side using the MRK + // and return the original item. + keyToGet := map[string]types.AttributeValue{ + "partition_key": &types.AttributeValueMemberS{Value: "clientSupplierItem"}, + "sort_key": &types.AttributeValueMemberN{Value: "0"}, + } + + getRequest := &dynamodb.GetItemInput{ + Key: keyToGet, + TableName: aws.String(ddbTableName), + } + + getResponse, err := ddbClient.GetItem(context.Background(), getRequest) + utils.HandleError(err) + + // Verify the decrypted item + if !reflect.DeepEqual(item, getResponse.Item) { + panic("Decrypted item does not match original item") + } + + // 9. Create a MRK discovery multi-keyring with a custom client supplier. + // A discovery MRK multi-keyring will be composed of + // multiple discovery MRK keyrings, one for each region. + // Each component keyring has its own KMS client in a particular region. + // When we provide a client supplier to the multi-keyring, all component + // keyrings will use that client supplier configuration. + // In our tests, we make `keyArn` an MRK with a replica, and + // provide only the replica region in our discovery filter. + discoveryFilter := mpltypes.DiscoveryFilter{ + Partition: "aws", + AccountIds: accountIds, + } + + mrkDiscoveryClientSupplierInput := mpltypes.CreateAwsKmsMrkDiscoveryMultiKeyringInput{ + ClientSupplier: &RegionalRoleClientSupplier{}, + DiscoveryFilter: &discoveryFilter, + Regions: regions, + } + mrkDiscoveryClientSupplierKeyring, err := matProv.CreateAwsKmsMrkDiscoveryMultiKeyring(context.Background(), mrkDiscoveryClientSupplierInput) + utils.HandleError(err) + + // 10. Create a new config and client using the discovery keyring. + // This is the same setup as above, except we provide the discovery keyring to the config. + onlyReplicaKeyTableConfig := dbesdkdynamodbencryptiontypes.DynamoDbTableEncryptionConfig{ + LogicalTableName: ddbTableName, + PartitionKeyName: partitionKey, + SortKeyName: &sortKey, + AttributeActionsOnEncrypt: attributeActionsOnEncrypt, + // Provide discovery keyring here + Keyring: mrkDiscoveryClientSupplierKeyring, + AllowedUnsignedAttributePrefix: &unsignAttrPrefix, + } + + onlyReplicaKeyTableConfigs := map[string]dbesdkdynamodbencryptiontypes.DynamoDbTableEncryptionConfig{ + ddbTableName: onlyReplicaKeyTableConfig, + } + + onlyReplicaKeyEncryptionConfig := dbesdkdynamodbencryptiontypes.DynamoDbTablesEncryptionConfig{ + TableEncryptionConfigs: onlyReplicaKeyTableConfigs, + } + + onlyReplicaKeyDbEsdkMiddleware, err := dbesdkmiddleware.NewDBEsdkMiddleware(onlyReplicaKeyEncryptionConfig) + utils.HandleError(err) + onlyReplicaKeyDdbClient := dynamodb.NewFromConfig(cfg, onlyReplicaKeyDbEsdkMiddleware.CreateMiddleware()) + + // 11. Get the item back from our table using the discovery keyring client. + // The client will decrypt the item client-side using the keyring, + // and return the original item. + // The discovery keyring will only use KMS keys in the provided regions and + // AWS accounts. Since we have provided it with a custom client supplier + // which uses different IAM roles based on the key region, + // the discovery keyring will use a particular IAM role to decrypt + // based on the region of the KMS key it uses to decrypt. + onlyReplicaKeyKeyToGet := map[string]types.AttributeValue{ + "partition_key": &types.AttributeValueMemberS{Value: "clientSupplierItem"}, + "sort_key": &types.AttributeValueMemberN{Value: "0"}, + } + + onlyReplicaKeyGetRequest := &dynamodb.GetItemInput{ + Key: onlyReplicaKeyKeyToGet, + TableName: &ddbTableName, + } + + onlyReplicaKeyGetResponse, err := onlyReplicaKeyDdbClient.GetItem(context.Background(), onlyReplicaKeyGetRequest) + utils.HandleError(err) + + // Verify the decrypted item + if !reflect.DeepEqual(item, onlyReplicaKeyGetResponse.Item) { + panic("Decrypted item does not match original item") + } + + fmt.Println("Client Supplier Example completed successfully") +} diff --git a/releases/go/dynamodb-esdk/examples/clientsupplier/regionalRoleClientSupplierConfig.go b/releases/go/dynamodb-esdk/examples/clientsupplier/regionalRoleClientSupplierConfig.go new file mode 100644 index 000000000..42bd52c38 --- /dev/null +++ b/releases/go/dynamodb-esdk/examples/clientsupplier/regionalRoleClientSupplierConfig.go @@ -0,0 +1,27 @@ +// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +package clientsupplier + +/* +Class containing config for the RegionalRoleClientSupplier. +In your own code, this might be hardcoded, or reference +an external source, e.g. environment variables or AWS AppConfig. +*/ +type RegionalRoleClientSupplierConfig struct { + RegionIamRoleMap map[string]string +} + +const ( + usEast1IamRole = "arn:aws:iam::370957321024:role/GitHub-CI-DDBEC-Dafny-Role-only-us-east-1-KMS-keys" + euWest1IamRole = "arn:aws:iam::370957321024:role/GitHub-CI-DDBEC-Dafny-Role-only-eu-west-1-KMS-keys" +) + +func NewRegionalRoleClientSupplierConfig() *RegionalRoleClientSupplierConfig { + return &RegionalRoleClientSupplierConfig{ + RegionIamRoleMap: map[string]string{ + "us-east-1": usEast1IamRole, + "eu-west-1": euWest1IamRole, + }, + } +} diff --git a/releases/go/dynamodb-esdk/examples/clientsupplier/regionalroleclientsupplier.go b/releases/go/dynamodb-esdk/examples/clientsupplier/regionalroleclientsupplier.go new file mode 100644 index 000000000..ce69c02c7 --- /dev/null +++ b/releases/go/dynamodb-esdk/examples/clientsupplier/regionalroleclientsupplier.go @@ -0,0 +1,53 @@ +// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +package clientsupplier + +import ( + "context" + + mpltypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/awscryptographymaterialproviderssmithygeneratedtypes" + + "github.com/aws/aws-sdk-go-v2/config" + "github.com/aws/aws-sdk-go-v2/credentials/stscreds" + "github.com/aws/aws-sdk-go-v2/service/kms" + "github.com/aws/aws-sdk-go-v2/service/sts" +) + +/* +Example class demonstrating an implementation of a custom client supplier. +This particular implementation will create KMS clients with different IAM roles, +depending on the region passed. +*/ +type RegionalRoleClientSupplier struct{} + +func (r *RegionalRoleClientSupplier) GetClient(input mpltypes.GetClientInput) (kms.Client, error) { + supplierConfig := NewRegionalRoleClientSupplierConfig() + + roleArn, exists := supplierConfig.RegionIamRoleMap[input.Region] + if !exists { + return kms.Client{}, mpltypes.AwsCryptographicMaterialProvidersException{ + Message: "Missing region: " + input.Region, + } + } + + // Load default AWS config + cfg, err := config.LoadDefaultConfig(context.TODO()) + if err != nil { + return kms.Client{}, err + } + + // Create STS client for assuming role + stsClient := sts.NewFromConfig(cfg) + + // Create credentials provider that assumes the role + roleProvider := stscreds.NewAssumeRoleProvider(stsClient, roleArn, func(o *stscreds.AssumeRoleOptions) { + o.RoleSessionName = "Go-Client-Supplier-Example-Session" + }) + + // Create KMS client with the assumed role credentials + sdkConfig, err := config.LoadDefaultConfig(context.Background(), config.WithRegion(input.Region), config.WithCredentialsProvider(roleProvider)) + kmsClient := kms.NewFromConfig(sdkConfig) + + return *kmsClient, nil +} diff --git a/releases/go/dynamodb-esdk/examples/go.mod b/releases/go/dynamodb-esdk/examples/go.mod new file mode 100644 index 000000000..761f7faea --- /dev/null +++ b/releases/go/dynamodb-esdk/examples/go.mod @@ -0,0 +1,35 @@ +module github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/examples + +go 1.23.2 + +require ( + github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl v0.2.1 + github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk v0.0.0 + github.com/aws/aws-sdk-go-v2 v1.38.0 + github.com/aws/aws-sdk-go-v2/config v1.31.0 + github.com/aws/aws-sdk-go-v2/credentials v1.18.4 + github.com/aws/aws-sdk-go-v2/service/dynamodb v1.47.0 + github.com/aws/aws-sdk-go-v2/service/kms v1.44.0 + github.com/aws/aws-sdk-go-v2/service/sts v1.37.0 + github.com/aws/smithy-go v1.22.5 + github.com/google/uuid v1.6.0 +) + +require ( + github.com/aws/aws-cryptographic-material-providers-library/releases/go/dynamodb v0.2.1 // indirect + github.com/aws/aws-cryptographic-material-providers-library/releases/go/kms v0.2.1 // indirect + github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives v0.2.1 // indirect + github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library v0.2.1 // indirect + github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.3 // indirect + github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.3 // indirect + github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.3 // indirect + github.com/aws/aws-sdk-go-v2/internal/ini v1.8.3 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.0 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/endpoint-discovery v1.11.3 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.3 // indirect + github.com/aws/aws-sdk-go-v2/service/sso v1.28.0 // indirect + github.com/aws/aws-sdk-go-v2/service/ssooidc v1.33.0 // indirect + github.com/dafny-lang/DafnyRuntimeGo/v4 v4.10.1 // indirect +) + +replace github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk => ../ diff --git a/releases/go/dynamodb-esdk/examples/go.sum b/releases/go/dynamodb-esdk/examples/go.sum new file mode 100644 index 000000000..c872c995c --- /dev/null +++ b/releases/go/dynamodb-esdk/examples/go.sum @@ -0,0 +1,46 @@ +github.com/aws/aws-cryptographic-material-providers-library/releases/go/dynamodb v0.2.1 h1:nvrlDo1EddNCFknnyaW7s49P4Vwjgbm1VT13Mh87+D0= +github.com/aws/aws-cryptographic-material-providers-library/releases/go/dynamodb v0.2.1/go.mod h1:lZ/LN+rINEWvrfRItZoMNYPp6nTx/iZLIlXYq5yvWvA= +github.com/aws/aws-cryptographic-material-providers-library/releases/go/kms v0.2.1 h1:GHba7vmqUvFOLhQvpzfE9KCh2oIOn/nQaN5Xu2rY1Ac= +github.com/aws/aws-cryptographic-material-providers-library/releases/go/kms v0.2.1/go.mod h1:Rh8pLBW83043mr0GMCE5k68x7Gm/zMBtcWBuGFrsleM= +github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl v0.2.1 h1:TzZdNan/tjcDnwaiVwiR90t/iOohfQGdW5z5JyicBI0= +github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl v0.2.1/go.mod h1:d6R+lhtZXMkqsAuZ9zqNVZk3iXOYwVjxhBYQI3yr7OQ= +github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives v0.2.1 h1:TAIxapsLa/vJVrDyVM9R/+wuFWYdnyjfe/N9lvn5yFc= +github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives v0.2.1/go.mod h1:Uj8qJSU7Bx4YHEv0Up8J91Dh9TU0ggFnpAWLAbiFx+k= +github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library v0.2.1 h1:KShsiDfiiFa2A4UBh81BfiBMnNBIkelql7filQw6kfQ= +github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library v0.2.1/go.mod h1:j4QF5oVY9L1yNZrzoDu3l3d8TRh53uBw3FLZCL7xCTk= +github.com/aws/aws-sdk-go-v2 v1.38.0 h1:UCRQ5mlqcFk9HJDIqENSLR3wiG1VTWlyUfLDEvY7RxU= +github.com/aws/aws-sdk-go-v2 v1.38.0/go.mod h1:9Q0OoGQoboYIAJyslFyF1f5K1Ryddop8gqMhWx/n4Wg= +github.com/aws/aws-sdk-go-v2/config v1.31.0 h1:9yH0xiY5fUnVNLRWO0AtayqwU1ndriZdN78LlhruJR4= +github.com/aws/aws-sdk-go-v2/config v1.31.0/go.mod h1:VeV3K72nXnhbe4EuxxhzsDc/ByrCSlZwUnWH52Nde/I= +github.com/aws/aws-sdk-go-v2/credentials v1.18.4 h1:IPd0Algf1b+Qy9BcDp0sCUcIWdCQPSzDoMK3a8pcbUM= +github.com/aws/aws-sdk-go-v2/credentials v1.18.4/go.mod h1:nwg78FjH2qvsRM1EVZlX9WuGUJOL5od+0qvm0adEzHk= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.3 h1:GicIdnekoJsjq9wqnvyi2elW6CGMSYKhdozE7/Svh78= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.3/go.mod h1:R7BIi6WNC5mc1kfRM7XM/VHC3uRWkjc396sfabq4iOo= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.3 h1:o9RnO+YZ4X+kt5Z7Nvcishlz0nksIt2PIzDglLMP0vA= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.3/go.mod h1:+6aLJzOG1fvMOyzIySYjOFjcguGvVRL68R+uoRencN4= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.3 h1:joyyUFhiTQQmVK6ImzNU9TQSNRNeD9kOklqTzyk5v6s= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.3/go.mod h1:+vNIyZQP3b3B1tSLI0lxvrU9cfM7gpdRXMFfm67ZcPc= +github.com/aws/aws-sdk-go-v2/internal/ini v1.8.3 h1:bIqFDwgGXXN1Kpp99pDOdKMTTb5d2KyU5X/BZxjOkRo= +github.com/aws/aws-sdk-go-v2/internal/ini v1.8.3/go.mod h1:H5O/EsxDWyU+LP/V8i5sm8cxoZgc2fdNR9bxlOFrQTo= +github.com/aws/aws-sdk-go-v2/service/dynamodb v1.47.0 h1:A5zeikrrAgz3YtNzhMat4K8hK/CFzOjFKLVk8pI7Cz8= +github.com/aws/aws-sdk-go-v2/service/dynamodb v1.47.0/go.mod h1:tMQ/Edfn5xLcBFSVd3JDreJPias8GqBq0dVbCbMz9vs= +github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.0 h1:6+lZi2JeGKtCraAj1rpoZfKqnQ9SptseRZioejfUOLM= +github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.0/go.mod h1:eb3gfbVIxIoGgJsi9pGne19dhCBpK6opTYpQqAmdy44= +github.com/aws/aws-sdk-go-v2/service/internal/endpoint-discovery v1.11.3 h1:xMmJPUT0G1q9+I0mzH4B6oN9fB5PkDoD+jvpVIcom1I= +github.com/aws/aws-sdk-go-v2/service/internal/endpoint-discovery v1.11.3/go.mod h1:U0JFMTY/gPxV07XTXXz152nX0Hg1eBenzyslKF2j4j4= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.3 h1:ieRzyHXypu5ByllM7Sp4hC5f/1Fy5wqxqY0yB85hC7s= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.3/go.mod h1:O5ROz8jHiOAKAwx179v+7sHMhfobFVi6nZt8DEyiYoM= +github.com/aws/aws-sdk-go-v2/service/kms v1.44.0 h1:Z95XCqqSnwXr0AY7PgsiOUBhUG2GoDM5getw6RfD1Lg= +github.com/aws/aws-sdk-go-v2/service/kms v1.44.0/go.mod h1:DqcSngL7jJeU1fOzh5Ll5rSvX/MlMV6OZlE4mVdFAQc= +github.com/aws/aws-sdk-go-v2/service/sso v1.28.0 h1:Mc/MKBf2m4VynyJkABoVEN+QzkfLqGj0aiJuEe7cMeM= +github.com/aws/aws-sdk-go-v2/service/sso v1.28.0/go.mod h1:iS5OmxEcN4QIPXARGhavH7S8kETNL11kym6jhoS7IUQ= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.33.0 h1:6csaS/aJmqZQbKhi1EyEMM7yBW653Wy/B9hnBofW+sw= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.33.0/go.mod h1:59qHWaY5B+Rs7HGTuVGaC32m0rdpQ68N8QCN3khYiqs= +github.com/aws/aws-sdk-go-v2/service/sts v1.37.0 h1:MG9VFW43M4A8BYeAfaJJZWrroinxeTi2r3+SnmLQfSA= +github.com/aws/aws-sdk-go-v2/service/sts v1.37.0/go.mod h1:JdeBDPgpJfuS6rU/hNglmOigKhyEZtBmbraLE4GK1J8= +github.com/aws/smithy-go v1.22.5 h1:P9ATCXPMb2mPjYBgueqJNCA5S9UfktsW0tTxi+a7eqw= +github.com/aws/smithy-go v1.22.5/go.mod h1:t1ufH5HMublsJYulve2RKmHDC15xu1f26kHCp/HgceI= +github.com/dafny-lang/DafnyRuntimeGo/v4 v4.10.1 h1:QyrSST4WJYQIXRSJNXFEwL1NIoA9bgirUHK8YwGoWkA= +github.com/dafny-lang/DafnyRuntimeGo/v4 v4.10.1/go.mod h1:l2Tm4N2DKuq3ljONC2vOATeM9PUpXbIc8SgXdwwqEto= +github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= +github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= diff --git a/releases/go/dynamodb-esdk/examples/itemencryptor/itemencryptdecrypt.go b/releases/go/dynamodb-esdk/examples/itemencryptor/itemencryptdecrypt.go new file mode 100644 index 000000000..41a69a343 --- /dev/null +++ b/releases/go/dynamodb-esdk/examples/itemencryptor/itemencryptdecrypt.go @@ -0,0 +1,180 @@ +// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +package itemencryptor + +import ( + "context" + "fmt" + "reflect" + + mpl "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/awscryptographymaterialproviderssmithygenerated" + mpltypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/awscryptographymaterialproviderssmithygeneratedtypes" + itemencryptor "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkdynamodbitemencryptorsmithygenerated" + dbesdkitemencryptortypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkdynamodbitemencryptorsmithygeneratedtypes" + dbesdkstructuredencryptiontypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes" + "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/examples/utils" + "github.com/aws/aws-sdk-go-v2/config" + "github.com/aws/aws-sdk-go-v2/service/dynamodb/types" + "github.com/aws/aws-sdk-go-v2/service/kms" +) + +/* +This example sets up a DynamoDb Item Encryptor and uses +the EncryptItem and DecryptItem APIs to directly encrypt and +decrypt an existing DynamoDb item. +You should use the DynamoDb Item Encryptor +if you already have a DynamoDb Item to encrypt or decrypt, +and do not need to make a Put or Get call to DynamoDb. +For example, if you are using DynamoDb Streams, +you may already be working with an encrypted item obtained from +DynamoDb, and want to directly decrypt the item. + +Running this example requires access to the DDB Table whose name +is provided in CLI arguments. +This table must be configured with the following +primary key configuration: +- Partition key is named "partition_key" with type (S) +- Sort key is named "sort_key" with type (S) +*/ + +func ItemEncryptDecryptExample(kmsKeyID, ddbTableName string) { + // 1. Create a Keyring. This Keyring will be responsible for protecting the data keys that protect your data. + // For this example, we will create a AWS KMS Keyring with the AWS KMS Key we want to use. + // We will use the `CreateMrkMultiKeyring` method to create this keyring, + // as it will correctly handle both single region and Multi-Region KMS Keys. + + cfg, err := config.LoadDefaultConfig(context.TODO()) + utils.HandleError(err) + // Create KMS client + kmsClient := kms.NewFromConfig(cfg) + // Initialize the mpl client + matProv, err := mpl.NewClient(mpltypes.MaterialProvidersConfig{}) + utils.HandleError(err) + // Create the Aws Kms Keyring + awsKmsKeyringInput := mpltypes.CreateAwsKmsKeyringInput{ + KmsClient: kmsClient, + KmsKeyId: kmsKeyID, + } + keyring, err := matProv.CreateAwsKmsKeyring(context.Background(), awsKmsKeyringInput) + utils.HandleError(err) + + // 2. Configure which attributes are encrypted and/or signed when writing new items. + // For each attribute that may exist on the items we plan to write to our DynamoDbTable, + // we must explicitly configure how they should be treated during item encryption: + // - ENCRYPT_AND_SIGN: The attribute is encrypted and included in the signature + // - SIGN_ONLY: The attribute not encrypted, but is still included in the signature + // - DO_NOTHING: The attribute is not encrypted and not included in the signature + attributeActions := map[string]dbesdkstructuredencryptiontypes.CryptoAction{ + "partition_key": dbesdkstructuredencryptiontypes.CryptoActionSignOnly, // Partition key must be SIGN_ONLY + "sort_key": dbesdkstructuredencryptiontypes.CryptoActionSignOnly, // Sort key must be SIGN_ONLY + "attribute1": dbesdkstructuredencryptiontypes.CryptoActionEncryptAndSign, + "attribute2": dbesdkstructuredencryptiontypes.CryptoActionSignOnly, + ":attribute3": dbesdkstructuredencryptiontypes.CryptoActionDoNothing, + } + + // 3. Configure which attributes we expect to be included in the signature + // when reading items. There are two options for configuring this: + // + // - (Recommended) Configure `allowedUnsignedAttributesPrefix`: + // When defining your DynamoDb schema and deciding on attribute names, + // choose a distinguishing prefix (such as ":") for all attributes that + // you do not want to include in the signature. + // This has two main benefits: + // - It is easier to reason about the security and authenticity of data within your item + // when all unauthenticated data is easily distinguishable by their attribute name. + // - If you need to add new unauthenticated attributes in the future, + // you can easily make the corresponding update to your `attributeActionsOnEncrypt` + // and immediately start writing to that new attribute, without + // any other configuration update needed. + // Once you configure this field, it is not safe to update it. + // + // - Configure `allowedUnsignedAttributes`: You may also explicitly list + // a set of attributes that should be considered unauthenticated when encountered + // on read. Be careful if you use this configuration. Do not remove an attribute + // name from this configuration, even if you are no longer writing with that attribute, + // as old items may still include this attribute, and our configuration needs to know + // to continue to exclude this attribute from the signature scope. + // If you add new attribute names to this field, you must first deploy the update to this + // field to all readers in your host fleet before deploying the update to start writing + // with that new attribute. + // + // For this example, we have designed our DynamoDb table such that any attribute name with + // the ":" prefix should be considered unauthenticated. + allowedUnsignedAttributePrefix := ":" + + // 4. Create the DynamoDb Encryption configuration for the table we will be writing to. + partitionKey := "partition_key" + sortKeyName := "sort_key" + algorithmSuiteID := mpltypes.DBEAlgorithmSuiteIdAlgAes256GcmHkdfSha512CommitKeyEcdsaP384SymsigHmacSha384 + itemEncryptorConfig := dbesdkitemencryptortypes.DynamoDbItemEncryptorConfig{ + LogicalTableName: ddbTableName, + PartitionKeyName: partitionKey, + SortKeyName: &sortKeyName, + AttributeActionsOnEncrypt: attributeActions, + Keyring: keyring, + AllowedUnsignedAttributePrefix: &allowedUnsignedAttributePrefix, + // Specifying an algorithm suite is not required, + // but is done here to demonstrate how to do so. + // We suggest using the + // `ALG_AES_256_GCM_HKDF_SHA512_COMMIT_KEY_ECDSA_P384_SYMSIG_HMAC_SHA384` suite, + // which includes AES-GCM with key derivation, signing, and key commitment. + // This is also the default algorithm suite if one is not specified in this config. + // For more information on supported algorithm suites, see: + // https://docs.aws.amazon.com/database-encryption-sdk/latest/devguide/supported-algorithms.html + AlgorithmSuiteId: &algorithmSuiteID, + } + + // 5. Create the DynamoDb Item Encryptor + itemEncryptorClient, err := itemencryptor.NewClient(itemEncryptorConfig) + utils.HandleError(err) + + // 6. Directly encrypt a DynamoDb item using the DynamoDb Item Encryptor + item := map[string]types.AttributeValue{ + "partition_key": &types.AttributeValueMemberS{Value: "ItemEncryptDecryptExample"}, + "sort_key": &types.AttributeValueMemberS{Value: "0"}, + "attribute1": &types.AttributeValueMemberS{Value: "encrypt and sign me!"}, + "attribute2": &types.AttributeValueMemberS{Value: "sign me!"}, + ":attribute3": &types.AttributeValueMemberS{Value: "ignore me!"}, + } + encryptItemInput := &dbesdkitemencryptortypes.EncryptItemInput{ + PlaintextItem: item, + } + encryptItemOutput, err := itemEncryptorClient.EncryptItem(context.Background(), *encryptItemInput) + utils.HandleError(err) + + // Demonstrate that the item has been encrypted + encryptedItem := encryptItemOutput.EncryptedItem + // Check partition_key is still a string and equals "ItemEncryptDecryptExample" + if partitionKeyAttr, ok := encryptedItem["partition_key"].(*types.AttributeValueMemberS); ok { + if partitionKeyAttr.Value != "ItemEncryptDecryptExample" { + panic("Partition key is not 'ItemEncryptDecryptExample'") + } + } else { + panic("Partition key is not a string attribute or doesn't exist") + } + // Check sort_key is a string and equals "0" + if sortKeyAttr, ok := encryptedItem["sort_key"].(*types.AttributeValueMemberS); ok { + if sortKeyAttr.Value != "0" { + panic("Sort key is not '0'") + } + } else { + panic("Sort key is not a string attribute or doesn't exist") + } + // Check attribute1 is binary (encrypted) and not a string anymore + if _, ok := encryptedItem["attribute1"].(*types.AttributeValueMemberB); !ok { + panic("attribute1 is not binary. It might not be encrypted.") + } + + // 7. Directly decrypt the encrypted item using the DynamoDb Item Encryptor + decryptItemInput := &dbesdkitemencryptortypes.DecryptItemInput{ + EncryptedItem: encryptedItem, + } + decryptedItem, err := itemEncryptorClient.DecryptItem(context.Background(), *decryptItemInput) + utils.HandleError(err) + + if !reflect.DeepEqual(item, decryptedItem.PlaintextItem) { + panic("Decrypted item does not match original item") + } + fmt.Println("Item Encryptor example successful") +} diff --git a/releases/go/dynamodb-esdk/examples/keyring/awskmskeyring.go b/releases/go/dynamodb-esdk/examples/keyring/awskmskeyring.go new file mode 100644 index 000000000..e81ac9728 --- /dev/null +++ b/releases/go/dynamodb-esdk/examples/keyring/awskmskeyring.go @@ -0,0 +1,168 @@ +// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +package keyring + +import ( + "context" + "fmt" + "reflect" + + mpl "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/awscryptographymaterialproviderssmithygenerated" + mpltypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/awscryptographymaterialproviderssmithygeneratedtypes" + dbesdkdynamodbencryptiontypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes" + dbesdkstructuredencryptiontypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes" + "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/dbesdkmiddleware" + "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/examples/utils" + + "github.com/aws/aws-sdk-go-v2/aws" + "github.com/aws/aws-sdk-go-v2/config" + "github.com/aws/aws-sdk-go-v2/service/dynamodb" + "github.com/aws/aws-sdk-go-v2/service/dynamodb/types" + "github.com/aws/aws-sdk-go-v2/service/kms" +) + +/* +This example sets up DynamoDb Encryption for the AWS SDK client +and uses the low level PutItem and GetItem DDB APIs to demonstrate +putting a client-side encrypted item into DynamoDb +and then retrieving and decrypting that item from DynamoDb. + +Running this example requires access to the DDB Table whose name +is provided in CLI arguments. +This table must be configured with the following +primary key configuration: + - Partition key is named "partition_key" with type (S) + - Sort key is named "sort_key" with type (N) +*/ +func AwsKmsKeyringExample(kmsKeyID, ddbTableName string) { + // 1. Create a Keyring. This Keyring will be responsible for protecting the data keys that protect your data. + // For this example, we will create a AWS KMS Keyring with the AWS KMS Key we want to use. + // We will use the `CreateMrkMultiKeyring` method to create this keyring, + // as it will correctly handle both single region and Multi-Region KMS Keys. + cfg, err := config.LoadDefaultConfig(context.TODO()) + utils.HandleError(err) + // Create KMS client + kmsClient := kms.NewFromConfig(cfg, func(o *kms.Options) { + o.Region = "us-west-2" + }) + // Initialize the mpl client + matProv, err := mpl.NewClient(mpltypes.MaterialProvidersConfig{}) + utils.HandleError(err) + // Create the Aws Kms Keyring + awsKmsKeyringInput := mpltypes.CreateAwsKmsKeyringInput{ + KmsClient: kmsClient, + KmsKeyId: kmsKeyID, + } + keyring, err := matProv.CreateAwsKmsKeyring(context.Background(), awsKmsKeyringInput) + utils.HandleError(err) + + // 2. Configure which attributes are encrypted and/or signed when writing new items. + // For each attribute that may exist on the items we plan to write to our DynamoDbTable, + // we must explicitly configure how they should be treated during item encryption: + // - ENCRYPT_AND_SIGN: The attribute is encrypted and included in the signature + // - SIGN_ONLY: The attribute not encrypted, but is still included in the signature + // - DO_NOTHING: The attribute is not encrypted and not included in the signature + attributeActions := map[string]dbesdkstructuredencryptiontypes.CryptoAction{ + "partition_key": dbesdkstructuredencryptiontypes.CryptoActionSignOnly, // Partition key must be SIGN_ONLY + "sort_key": dbesdkstructuredencryptiontypes.CryptoActionSignOnly, // Sort key must be SIGN_ONLY + "attribute1": dbesdkstructuredencryptiontypes.CryptoActionEncryptAndSign, + "attribute2": dbesdkstructuredencryptiontypes.CryptoActionSignOnly, + ":attribute3": dbesdkstructuredencryptiontypes.CryptoActionDoNothing, + } + + // 3. Configure which attributes we expect to be included in the signature + // when reading items. There are two options for configuring this: + // + // - (Recommended) Configure `allowedUnsignedAttributesPrefix`: + // When defining your DynamoDb schema and deciding on attribute names, + // choose a distinguishing prefix (such as ":") for all attributes that + // you do not want to include in the signature. + // This has two main benefits: + // - It is easier to reason about the security and authenticity of data within your item + // when all unauthenticated data is easily distinguishable by their attribute name. + // - If you need to add new unauthenticated attributes in the future, + // you can easily make the corresponding update to your `attributeActionsOnEncrypt` + // and immediately start writing to that new attribute, without + // any other configuration update needed. + // Once you configure this field, it is not safe to update it. + // + // - Configure `allowedUnsignedAttributes`: You may also explicitly list + // a set of attributes that should be considered unauthenticated when encountered + // on read. Be careful if you use this configuration. Do not remove an attribute + // name from this configuration, even if you are no longer writing with that attribute, + // as old items may still include this attribute, and our configuration needs to know + // to continue to exclude this attribute from the signature scope. + // If you add new attribute names to this field, you must first deploy the update to this + // field to all readers in your host fleet before deploying the update to start writing + // with that new attribute. + // + // For this example, we have designed our DynamoDb table such that any attribute name with + // the ":" prefix should be considered unauthenticated. + allowedUnsignedAttributePrefix := ":" + + // 4. Create the DynamoDb Encryption configuration for the table we will be writing to. + partitionKey := "partition_key" + sortKeyName := "sort_key" + algorithmSuiteID := mpltypes.DBEAlgorithmSuiteIdAlgAes256GcmHkdfSha512CommitKeyEcdsaP384SymsigHmacSha384 + tableConfig := dbesdkdynamodbencryptiontypes.DynamoDbTableEncryptionConfig{ + LogicalTableName: ddbTableName, + PartitionKeyName: partitionKey, + SortKeyName: &sortKeyName, + AttributeActionsOnEncrypt: attributeActions, + Keyring: keyring, + AllowedUnsignedAttributePrefix: &allowedUnsignedAttributePrefix, + AlgorithmSuiteId: &algorithmSuiteID, + } + tableConfigsMap := make(map[string]dbesdkdynamodbencryptiontypes.DynamoDbTableEncryptionConfig) + tableConfigsMap[ddbTableName] = tableConfig + listOfTableConfigs := dbesdkdynamodbencryptiontypes.DynamoDbTablesEncryptionConfig{ + TableEncryptionConfigs: tableConfigsMap, + } + // 5. Create a new AWS SDK DynamoDb client using the TableEncryptionConfigs + dbEsdkMiddleware, err := dbesdkmiddleware.NewDBEsdkMiddleware(listOfTableConfigs) + utils.HandleError(err) + ddb := dynamodb.NewFromConfig(cfg, dbEsdkMiddleware.CreateMiddleware()) + + // 6. Put an item into our table using the above client. + // Before the item gets sent to DynamoDb, it will be encrypted + // client-side, according to our configuration. + item := map[string]types.AttributeValue{ + "partition_key": &types.AttributeValueMemberS{Value: "BasicPutGetExample"}, + "sort_key": &types.AttributeValueMemberN{Value: "0"}, + "attribute1": &types.AttributeValueMemberS{Value: "encrypt and sign me!"}, + "attribute2": &types.AttributeValueMemberS{Value: "sign me!"}, + ":attribute3": &types.AttributeValueMemberS{Value: "ignore me!"}, + } + putInput := &dynamodb.PutItemInput{ + TableName: aws.String(ddbTableName), + Item: item, + } + _, err = ddb.PutItem(context.TODO(), putInput) + utils.HandleError(err) + + // 7. Get the item back from our table using the same client. + // The client will decrypt the item client-side, and return + // back the original item. + key := map[string]types.AttributeValue{ + "partition_key": &types.AttributeValueMemberS{Value: "BasicPutGetExample"}, + "sort_key": &types.AttributeValueMemberN{Value: "0"}, + } + getInput := &dynamodb.GetItemInput{ + TableName: aws.String(ddbTableName), + Key: key, + // In this example we configure a strongly consistent read + // because we perform a read immediately after a write (for demonstrative purposes). + // By default, reads are only eventually consistent. + // Read our docs to determine which read consistency to use for your application: + // https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.ReadConsistency.html + ConsistentRead: aws.Bool(true), + } + result, err := ddb.GetItem(context.TODO(), getInput) + utils.HandleError(err) + // Verify the decrypted item + if !reflect.DeepEqual(item, result.Item) { + panic("Decrypted item does not match original item") + } + fmt.Println("Aws Kms Keyring Example successful.") +} diff --git a/releases/go/dynamodb-esdk/examples/keyring/awskmsrsakeyring.go b/releases/go/dynamodb-esdk/examples/keyring/awskmsrsakeyring.go new file mode 100644 index 000000000..ed2c3a2ff --- /dev/null +++ b/releases/go/dynamodb-esdk/examples/keyring/awskmsrsakeyring.go @@ -0,0 +1,268 @@ +// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +package keyring + +import ( + "context" + "encoding/base64" + "fmt" + "os" + "path/filepath" + "reflect" + "strings" + + mpl "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/awscryptographymaterialproviderssmithygenerated" + mpltypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/awscryptographymaterialproviderssmithygeneratedtypes" + dbesdkdynamodbencryptiontypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes" + dbesdkstructuredencryptiontypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes" + "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/dbesdkmiddleware" + "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/examples/utils" + + "github.com/aws/aws-sdk-go-v2/aws" + "github.com/aws/aws-sdk-go-v2/config" + "github.com/aws/aws-sdk-go-v2/service/dynamodb" + "github.com/aws/aws-sdk-go-v2/service/dynamodb/types" + "github.com/aws/aws-sdk-go-v2/service/kms" + kmstypes "github.com/aws/aws-sdk-go-v2/service/kms/types" +) + +/* + This example sets up DynamoDb Encryption for the AWS SDK client + using the KMS RSA Keyring. This keyring uses a KMS RSA key pair to + encrypt and decrypt records. The client uses the downloaded public key + to encrypt items it adds to the table. + The keyring uses the private key to decrypt existing table items it retrieves, + by calling KMS' decrypt API. + + Running this example requires access to the DDB Table whose name + is provided in CLI arguments. + This table must be configured with the following + primary key configuration: + - Partition key is named "partition_key" with type (S) + - Sort key is named "sort_key" with type (S) + This example also requires access to a KMS RSA key. + Our tests provide a KMS RSA ARN that anyone can use, but you + can also provide your own KMS RSA key. + To use your own KMS RSA key, you must have either: + - Its public key downloaded in a UTF-8 encoded PEM file + - kms:GetPublicKey permissions on that key + If you do not have the public key downloaded, running this example + through its main method will download the public key for you + by calling kms:GetPublicKey. + You must also have kms:Decrypt permissions on the KMS RSA key. +*/ + +func KmsRsaKeyringExample(ddbTableName, rsaKeyArn, rsaPublicKeyFilename string) { + // You may provide your own RSA public key at rsaPublicKeyFilename. + // This must be the public key for the RSA key represented at rsaKeyArn. + // If this file is not present, this will write a UTF-8 encoded PEM file for you. + if !utils.FileExists(rsaPublicKeyFilename) { + writePublicKeyPemForRsaKey(rsaKeyArn, rsaPublicKeyFilename) + } + + // 1. Load UTF-8 encoded public key PEM file. + // You may have an RSA public key file already defined. + // If not, the main method in this class will call + // the KMS RSA key, retrieve its public key, and store it + // in a PEM file for example use. + publicKeyUtf8EncodedBytes, err := os.ReadFile(rsaPublicKeyFilename) + utils.HandleError(err) + + // 2. Create a KMS RSA keyring. + // This keyring takes in: + // - kmsClient + // - kmsKeyId: Must be an ARN representing a KMS RSA key + // - publicKey: A ByteBuffer of a UTF-8 encoded PEM file representing the public + // key for the key passed into kmsKeyId + // - encryptionAlgorithm: Must be either RSAES_OAEP_SHA_256 or RSAES_OAEP_SHA_1 + cfg, err := config.LoadDefaultConfig(context.TODO()) + utils.HandleError(err) + kmsClient := kms.NewFromConfig(cfg, func(o *kms.Options) { + o.Region = "us-west-2" + }) + matProv, err := mpl.NewClient(mpltypes.MaterialProvidersConfig{}) + utils.HandleError(err) + + createAwsKmsRsaKeyringInput := mpltypes.CreateAwsKmsRsaKeyringInput{ + KmsClient: kmsClient, + KmsKeyId: rsaKeyArn, + PublicKey: publicKeyUtf8EncodedBytes, + EncryptionAlgorithm: kmstypes.EncryptionAlgorithmSpecRsaesOaepSha256, + } + awsKmsRsaKeyring, err := matProv.CreateAwsKmsRsaKeyring(context.Background(), createAwsKmsRsaKeyringInput) + utils.HandleError(err) + + // 3. Configure which attributes are encrypted and/or signed when writing new items. + // For each attribute that may exist on the items we plan to write to our DynamoDbTable, + // we must explicitly configure how they should be treated during item encryption: + // - ENCRYPT_AND_SIGN: The attribute is encrypted and included in the signature + // - SIGN_ONLY: The attribute not encrypted, but is still included in the signature + // - DO_NOTHING: The attribute is not encrypted and not included in the signature + attributeActions := map[string]dbesdkstructuredencryptiontypes.CryptoAction{ + "partition_key": dbesdkstructuredencryptiontypes.CryptoActionSignOnly, // Our partition attribute must be SIGN_ONLY + "sort_key": dbesdkstructuredencryptiontypes.CryptoActionSignOnly, // Our sort attribute must be SIGN_ONLY + "sensitive_data": dbesdkstructuredencryptiontypes.CryptoActionEncryptAndSign, + } + + // 4. Configure which attributes we expect to be included in the signature + // when reading items. There are two options for configuring this: + // + // - (Recommended) Configure `allowedUnsignedAttributesPrefix`: + // When defining your DynamoDb schema and deciding on attribute names, + // choose a distinguishing prefix (such as ":") for all attributes that + // you do not want to include in the signature. + // This has two main benefits: + // - It is easier to reason about the security and authenticity of data within your item + // when all unauthenticated data is easily distinguishable by their attribute name. + // - If you need to add new unauthenticated attributes in the future, + // you can easily make the corresponding update to your `attributeActions` + // and immediately start writing to that new attribute, without + // any other configuration update needed. + // Once you configure this field, it is not safe to update it. + // + // - Configure `allowedUnsignedAttributes`: You may also explicitly list + // a set of attributes that should be considered unauthenticated when encountered + // on read. Be careful if you use this configuration. Do not remove an attribute + // name from this configuration, even if you are no longer writing with that attribute, + // as old items may still include this attribute, and our configuration needs to know + // to continue to exclude this attribute from the signature scope. + // If you add new attribute names to this field, you must first deploy the update to this + // field to all readers in your host fleet before deploying the update to start writing + // with that new attribute. + // + // For this example, we currently authenticate all attributes. To make it easier to + // add unauthenticated attributes in the future, we define a prefix ":" for such attributes. + unsignAttrPrefix := ":" + + // 5. Create the DynamoDb Encryption configuration for the table we will be writing to. + // Note: To use the KMS RSA keyring, your table config must specify an algorithmSuite + // that does not use asymmetric signing. + partitionKey := "partition_key" + sortKeyName := "sort_key" + // Specify algorithmSuite without asymmetric signing here + // The only supported algorithmSuite without asymmetric signing is + // ALG_AES_256_GCM_HKDF_SHA512_COMMIT_KEY_SYMSIG_HMAC_SHA384. + algorithmSuiteID := mpltypes.DBEAlgorithmSuiteIdAlgAes256GcmHkdfSha512CommitKeySymsigHmacSha384 + + tableConfig := dbesdkdynamodbencryptiontypes.DynamoDbTableEncryptionConfig{ + LogicalTableName: ddbTableName, + PartitionKeyName: partitionKey, + SortKeyName: &sortKeyName, + AttributeActionsOnEncrypt: attributeActions, + Keyring: awsKmsRsaKeyring, + AllowedUnsignedAttributePrefix: &unsignAttrPrefix, + AlgorithmSuiteId: &algorithmSuiteID, + } + + tableConfigsMap := make(map[string]dbesdkdynamodbencryptiontypes.DynamoDbTableEncryptionConfig) + tableConfigsMap[ddbTableName] = tableConfig + listOfTableConfigs := dbesdkdynamodbencryptiontypes.DynamoDbTablesEncryptionConfig{ + TableEncryptionConfigs: tableConfigsMap, + } + + // 6. Create a new AWS SDK DynamoDb client using the DynamoDb Encryption Interceptor + dbEsdkMiddleware, err := dbesdkmiddleware.NewDBEsdkMiddleware(listOfTableConfigs) + utils.HandleError(err) + ddb := dynamodb.NewFromConfig(cfg, dbEsdkMiddleware.CreateMiddleware()) + + // 7. Put an item into our table using the above client. + // Before the item gets sent to DynamoDb, it will be encrypted + // client-side, according to our configuration. + item := map[string]types.AttributeValue{ + "partition_key": &types.AttributeValueMemberS{Value: "awsKmsRsaKeyringItem"}, + "sort_key": &types.AttributeValueMemberN{Value: "0"}, + "sensitive_data": &types.AttributeValueMemberS{Value: "encrypt and sign me!"}, + } + + putInput := &dynamodb.PutItemInput{ + TableName: aws.String(ddbTableName), + Item: item, + } + + _, err = ddb.PutItem(context.TODO(), putInput) + utils.HandleError(err) + + // 8. Get the item back from our table using the client. + // The client will decrypt the item client-side using the RSA keyring + // and return the original item. + keyToGet := map[string]types.AttributeValue{ + "partition_key": &types.AttributeValueMemberS{Value: "awsKmsRsaKeyringItem"}, + "sort_key": &types.AttributeValueMemberN{Value: "0"}, + } + + getInput := &dynamodb.GetItemInput{ + Key: keyToGet, + TableName: aws.String(ddbTableName), + // In this example we configure a strongly consistent read + // because we perform a read immediately after a write (for demonstrative purposes). + // By default, reads are only eventually consistent. + // Read our docs to determine which read consistency to use for your application: + // https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.ReadConsistency.html + ConsistentRead: aws.Bool(true), + } + + getResponse, err := ddb.GetItem(context.TODO(), getInput) + utils.HandleError(err) + + returnedItem := getResponse.Item + if !reflect.DeepEqual(item, returnedItem) { + panic("Decrypted item does not match original item") + } + + fmt.Println("AWS KMS RSA Keyring Example successful.") +} + +func writePublicKeyPemForRsaKey(rsaKeyArn, rsaPublicKeyFilename string) { + // This code will call KMS to get the public key for the KMS RSA key. + // You must have kms:GetPublicKey permissions on the key for this to succeed. + // The public key will be written to the file rsaPublicKeyFilename. + cfg, err := config.LoadDefaultConfig(context.TODO()) + utils.HandleError(err) + + getterForPublicKey := kms.NewFromConfig(cfg, func(o *kms.Options) { + o.Region = "us-west-2" + }) + + response, err := getterForPublicKey.GetPublicKey(context.TODO(), &kms.GetPublicKeyInput{ + KeyId: aws.String(rsaKeyArn), + }) + utils.HandleError(err) + + publicKeyByteArray := response.PublicKey + + // Create PEM formatted public key + pemContent := fmt.Sprintf("-----BEGIN PUBLIC KEY-----\n%s\n-----END PUBLIC KEY-----\n", + encodeToPemBase64(publicKeyByteArray)) + + // Ensure directory exists + dir := filepath.Dir(rsaPublicKeyFilename) + if err := os.MkdirAll(dir, 0755); err != nil { + utils.HandleError(err) + } + + // Write to file + err = os.WriteFile(rsaPublicKeyFilename, []byte(pemContent), 0644) + utils.HandleError(err) +} + +// encodeToPemBase64 encodes bytes to base64 with proper line breaks for PEM format +func encodeToPemBase64(data []byte) string { + const lineLength = 64 + encoded := base64.StdEncoding.EncodeToString(data) + + // Add line breaks every 64 characters + var result strings.Builder + for i := 0; i < len(encoded); i += lineLength { + end := i + lineLength + if end > len(encoded) { + end = len(encoded) + } + result.WriteString(encoded[i:end]) + if end < len(encoded) { + result.WriteString("\n") + } + } + + return result.String() +} diff --git a/releases/go/dynamodb-esdk/examples/keyring/branchkeyidsupplier.go b/releases/go/dynamodb-esdk/examples/keyring/branchkeyidsupplier.go new file mode 100644 index 000000000..dbceca3c0 --- /dev/null +++ b/releases/go/dynamodb-esdk/examples/keyring/branchkeyidsupplier.go @@ -0,0 +1,71 @@ +// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +package keyring + +import ( + "fmt" + + dbesdkdynamodbencryptiontypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes" + "github.com/aws/aws-sdk-go-v2/service/dynamodb/types" +) + +// ExampleBranchKeyIdSupplier is used in the 'HierarchicalKeyringExample'. +// In that example, we have a table where we distinguish multiple tenants +// by a tenant ID that is stored in our partition attribute. +// The expectation is that this does not produce a confused deputy +// because the tenants are separated by partition. +// In order to create a Hierarchical Keyring that is capable of encrypting or +// decrypting data for either tenant, we implement this interface +// to map the correct branch key ID to the correct tenant ID. +type ExampleBranchKeyIdSupplier struct { + branchKeyIdForTenant1 string + branchKeyIdForTenant2 string +} + +// NewExampleBranchKeyIdSupplier creates a new instance of ExampleBranchKeyIdSupplier +func NewExampleBranchKeyIdSupplier(tenant1Id, tenant2Id string) *ExampleBranchKeyIdSupplier { + return &ExampleBranchKeyIdSupplier{ + branchKeyIdForTenant1: tenant1Id, + branchKeyIdForTenant2: tenant2Id, + } +} + +// GetBranchKeyIdFromDdbKey implements the DynamoDbKeyBranchKeyIdSupplier interface +func (s *ExampleBranchKeyIdSupplier) GetBranchKeyIdFromDdbKey( + input dbesdkdynamodbencryptiontypes.GetBranchKeyIdFromDdbKeyInput, +) (*dbesdkdynamodbencryptiontypes.GetBranchKeyIdFromDdbKeyOutput, error) { + if input.DdbKey == nil { + return nil, fmt.Errorf("DdbKey cannot be nil") + } + + key := input.DdbKey + + partitionKeyAttr, exists := key["partition_key"] + if !exists { + return nil, fmt.Errorf("item invalid, does not contain expected partition key attribute") + } + + // Extract the string value from the AttributeValue + var tenantKeyId string + switch attr := partitionKeyAttr.(type) { + case *types.AttributeValueMemberS: + tenantKeyId = attr.Value + default: + return nil, fmt.Errorf("partition_key must be a string attribute") + } + + var branchKeyId string + switch tenantKeyId { + case "tenant1Id": + branchKeyId = s.branchKeyIdForTenant1 + case "tenant2Id": + branchKeyId = s.branchKeyIdForTenant2 + default: + return nil, fmt.Errorf("item does not contain valid tenant ID") + } + + return &dbesdkdynamodbencryptiontypes.GetBranchKeyIdFromDdbKeyOutput{ + BranchKeyId: branchKeyId, + }, nil +} diff --git a/releases/go/dynamodb-esdk/examples/keyring/hierarchicalkeyring.go b/releases/go/dynamodb-esdk/examples/keyring/hierarchicalkeyring.go new file mode 100644 index 000000000..15f323a87 --- /dev/null +++ b/releases/go/dynamodb-esdk/examples/keyring/hierarchicalkeyring.go @@ -0,0 +1,261 @@ +// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +package keyring + +import ( + "context" + "fmt" + "reflect" + + keystoreclient "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/awscryptographykeystoresmithygenerated" + keystoretypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/awscryptographykeystoresmithygeneratedtypes" + mpl "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/awscryptographymaterialproviderssmithygenerated" + mpltypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/awscryptographymaterialproviderssmithygeneratedtypes" + dbesdkdynamodb "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkdynamodbsmithygenerated" + dbesdkdynamodbencryptiontypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes" + dbesdkstructuredencryptiontypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes" + "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/dbesdkmiddleware" + "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/examples/utils" + + "github.com/aws/aws-sdk-go-v2/aws" + "github.com/aws/aws-sdk-go-v2/config" + "github.com/aws/aws-sdk-go-v2/service/dynamodb" + "github.com/aws/aws-sdk-go-v2/service/dynamodb/types" + "github.com/aws/aws-sdk-go-v2/service/kms" +) + +/* +This example sets up DynamoDb Encryption for the AWS SDK client +using the Hierarchical Keyring, which establishes a key hierarchy +where "branch" keys are persisted in DynamoDb. +These branch keys are used to protect your data keys, +and these branch keys are themselves protected by a root KMS Key. + +Establishing a key hierarchy like this has two benefits: + +First, by caching the branch key material, and only calling back +to KMS to re-establish authentication regularly according to your configured TTL, +you limit how often you need to call back to KMS to protect your data. +This is a performance/security tradeoff, where your authentication, audit, and +logging from KMS is no longer one-to-one with every encrypt or decrypt call. +However, the benefit is that you no longer have to make a +network call to KMS for every encrypt or decrypt. + +Second, this key hierarchy makes it easy to hold multi-tenant data +that is isolated per branch key in a single DynamoDb table. +You can create a branch key for each tenant in your table, +and encrypt all that tenant's data under that distinct branch key. +On decrypt, you can either statically configure a single branch key +to ensure you are restricting decryption to a single tenant, +or you can implement an interface that lets you map the primary key on your items +to the branch key that should be responsible for decrypting that data. + +This example then demonstrates configuring a Hierarchical Keyring +with a Branch Key ID Supplier to encrypt and decrypt data for +two separate tenants. + +Running this example requires access to the DDB Table whose name +is provided in CLI arguments. +This table must be configured with the following +primary key configuration: + - Partition key is named "partition_key" with type (S) + - Sort key is named "sort_key" with type (S) + +This example also requires using a KMS Key whose ARN +is provided in CLI arguments. You need the following access +on this key: + - GenerateDataKeyWithoutPlaintext + - Decrypt +*/ +func HierarchicalKeyringExample(ddbTableName, tenant1BranchKeyId, tenant2BranchKeyId, keyStoreTableName, logicalKeyStoreName, kmsKeyId string) { + // Initial KeyStore Setup: This example requires that you have already + // created your KeyStore, and have populated it with two new branch keys. + // See the "Create KeyStore Table Example" and "Create KeyStore Key Example" + // for an example of how to do this. + + // 1. Configure your KeyStore resource. + // This SHOULD be the same configuration that you used + // to initially create and populate your KeyStore. + cfg, err := config.LoadDefaultConfig(context.TODO()) + utils.HandleError(err) + + // Create KMS and DynamoDB clients + kmsClient := kms.NewFromConfig(cfg, func(o *kms.Options) { + o.Region = "us-west-2" + }) + ddbClient := dynamodb.NewFromConfig(cfg) + + // Create KeyStore configuration + kmsConfig := keystoretypes.KMSConfigurationMemberkmsKeyArn{ + Value: kmsKeyId, + } + keystoreConfig := keystoretypes.KeyStoreConfig{ + DdbClient: ddbClient, + DdbTableName: keyStoreTableName, + LogicalKeyStoreName: logicalKeyStoreName, + KmsClient: kmsClient, + KmsConfiguration: &kmsConfig, + } + + // Initialize the KeyStore client + keystore, err := keystoreclient.NewClient(keystoreConfig) + utils.HandleError(err) + + // 2. Create a Branch Key ID Supplier. See ExampleBranchKeyIdSupplier in this directory. + dbEsdkClient, err := dbesdkdynamodb.NewClient(dbesdkdynamodbencryptiontypes.DynamoDbEncryptionConfig{}) + utils.HandleError(err) + + branchKeyIdSupplier := NewExampleBranchKeyIdSupplier(tenant1BranchKeyId, tenant2BranchKeyId) + + branchKeyIdSupplierInput := dbesdkdynamodbencryptiontypes.CreateDynamoDbEncryptionBranchKeyIdSupplierInput{ + DdbKeyBranchKeyIdSupplier: branchKeyIdSupplier, + } + + branchKeyIdSupplierInterface, err := dbEsdkClient.CreateDynamoDbEncryptionBranchKeyIdSupplier( + context.Background(), + branchKeyIdSupplierInput, + ) + utils.HandleError(err) + + // 3. Create the Hierarchical Keyring, using the Branch Key ID Supplier above. + // With this configuration, the AWS SDK Client ultimately configured will be capable + // of encrypting or decrypting items for either tenant (assuming correct KMS access). + // If you want to restrict the client to only encrypt or decrypt for a single tenant, + // configure this Hierarchical Keyring using `.BranchKeyId(tenant1BranchKeyId)` instead + // of `.BranchKeyIdSupplier(branchKeyIdSupplier)`. + matProv, err := mpl.NewClient(mpltypes.MaterialProvidersConfig{}) + utils.HandleError(err) + + hierarchicalKeyringInput := mpltypes.CreateAwsKmsHierarchicalKeyringInput{ + KeyStore: keystore, + BranchKeyIdSupplier: branchKeyIdSupplierInterface.BranchKeyIdSupplier, + TtlSeconds: 600, // This dictates how often we call back to KMS to authorize use of the branch keys + Cache: &mpltypes.CacheTypeMemberDefault{ // This dictates how many branch keys will be held locally + Value: mpltypes.DefaultCache{ + EntryCapacity: 100, + }, + }, + } + + hierarchicalKeyring, err := matProv.CreateAwsKmsHierarchicalKeyring(context.Background(), hierarchicalKeyringInput) + utils.HandleError(err) + + // 4. Configure which attributes are encrypted and/or signed when writing new items. + // For each attribute that may exist on the items we plan to write to our DynamoDbTable, + // we must explicitly configure how they should be treated during item encryption: + // - ENCRYPT_AND_SIGN: The attribute is encrypted and included in the signature + // - SIGN_ONLY: The attribute not encrypted, but is still included in the signature + // - DO_NOTHING: The attribute is not encrypted and not included in the signature + attributeActions := map[string]dbesdkstructuredencryptiontypes.CryptoAction{ + "partition_key": dbesdkstructuredencryptiontypes.CryptoActionSignOnly, // Our partition attribute must be SIGN_ONLY + "sort_key": dbesdkstructuredencryptiontypes.CryptoActionSignOnly, // Our sort attribute must be SIGN_ONLY + "tenant_sensitive_data": dbesdkstructuredencryptiontypes.CryptoActionEncryptAndSign, + } + + // 5. Configure which attributes we expect to be included in the signature + // when reading items. There are two options for configuring this: + // + // - (Recommended) Configure `allowedUnsignedAttributesPrefix`: + // When defining your DynamoDb schema and deciding on attribute names, + // choose a distinguishing prefix (such as ":") for all attributes that + // you do not want to include in the signature. + // This has two main benefits: + // - It is easier to reason about the security and authenticity of data within your item + // when all unauthenticated data is easily distinguishable by their attribute name. + // - If you need to add new unauthenticated attributes in the future, + // you can easily make the corresponding update to your `attributeActionsOnEncrypt` + // and immediately start writing to that new attribute, without + // any other configuration update needed. + // Once you configure this field, it is not safe to update it. + // + // - Configure `allowedUnsignedAttributes`: You may also explicitly list + // a set of attributes that should be considered unauthenticated when encountered + // on read. Be careful if you use this configuration. Do not remove an attribute + // name from this configuration, even if you are no longer writing with that attribute, + // as old items may still include this attribute, and our configuration needs to know + // to continue to exclude this attribute from the signature scope. + // If you add new attribute names to this field, you must first deploy the update to this + // field to all readers in your host fleet before deploying the update to start writing + // with that new attribute. + // + // For this example, we currently authenticate all attributes. To make it easier to + // add unauthenticated attributes in the future, we define a prefix ":" for such attributes. + allowedUnsignedAttributePrefix := ":" + + // 6. Create the DynamoDb Encryption configuration for the table we will be writing to. + partitionKey := "partition_key" + sortKeyName := "sort_key" + algorithmSuiteID := mpltypes.DBEAlgorithmSuiteIdAlgAes256GcmHkdfSha512CommitKeyEcdsaP384SymsigHmacSha384 + + tableConfig := dbesdkdynamodbencryptiontypes.DynamoDbTableEncryptionConfig{ + LogicalTableName: ddbTableName, + PartitionKeyName: partitionKey, + SortKeyName: &sortKeyName, + AttributeActionsOnEncrypt: attributeActions, + Keyring: hierarchicalKeyring, + AllowedUnsignedAttributePrefix: &allowedUnsignedAttributePrefix, + AlgorithmSuiteId: &algorithmSuiteID, + } + + tableConfigsMap := make(map[string]dbesdkdynamodbencryptiontypes.DynamoDbTableEncryptionConfig) + tableConfigsMap[ddbTableName] = tableConfig + listOfTableConfigs := dbesdkdynamodbencryptiontypes.DynamoDbTablesEncryptionConfig{ + TableEncryptionConfigs: tableConfigsMap, + } + + // 7. Create a new AWS SDK DynamoDb client using the DynamoDb Encryption Interceptor above + dbEsdkMiddleware, err := dbesdkmiddleware.NewDBEsdkMiddleware(listOfTableConfigs) + utils.HandleError(err) + ddb := dynamodb.NewFromConfig(cfg, dbEsdkMiddleware.CreateMiddleware()) + + // 8. Put an item into our table using the above client. + // Before the item gets sent to DynamoDb, it will be encrypted + // client-side, according to our configuration. + // Because the item we are writing uses "tenant1Id" as our partition value, + // based on the code we wrote in the ExampleBranchKeySupplier, + // `tenant1BranchKeyId` will be used to encrypt this item. + item := map[string]types.AttributeValue{ + "partition_key": &types.AttributeValueMemberS{Value: "tenant1Id"}, + "sort_key": &types.AttributeValueMemberN{Value: "0"}, + "tenant_sensitive_data": &types.AttributeValueMemberS{Value: "encrypt and sign me!"}, + } + + putInput := &dynamodb.PutItemInput{ + TableName: aws.String(ddbTableName), + Item: item, + } + _, err = ddb.PutItem(context.TODO(), putInput) + utils.HandleError(err) + + // 9. Get the item back from our table using the same client. + // The client will decrypt the item client-side, and return + // back the original item. + // Because the returned item's partition value is "tenant1Id", + // based on the code we wrote in the ExampleBranchKeySupplier, + // `tenant1BranchKeyId` will be used to decrypt this item. + key := map[string]types.AttributeValue{ + "partition_key": &types.AttributeValueMemberS{Value: "tenant1Id"}, + "sort_key": &types.AttributeValueMemberN{Value: "0"}, + } + + getInput := &dynamodb.GetItemInput{ + TableName: aws.String(ddbTableName), + Key: key, + // In this example we configure a strongly consistent read + // because we perform a read immediately after a write (for demonstrative purposes). + // By default, reads are only eventually consistent. + // Read our docs to determine which read consistency to use for your application: + // https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.ReadConsistency.html + ConsistentRead: aws.Bool(true), + } + result, err := ddb.GetItem(context.TODO(), getInput) + utils.HandleError(err) + + // Verify the decrypted item + if !reflect.DeepEqual(item, result.Item) { + panic("Decrypted item does not match original item") + } + + fmt.Println("Hierarchical Keyring Example successful.") +} diff --git a/releases/go/dynamodb-esdk/examples/keyring/mrkdiscoverymultikeyring.go b/releases/go/dynamodb-esdk/examples/keyring/mrkdiscoverymultikeyring.go new file mode 100644 index 000000000..4180b8c8a --- /dev/null +++ b/releases/go/dynamodb-esdk/examples/keyring/mrkdiscoverymultikeyring.go @@ -0,0 +1,214 @@ +// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +package keyring + +import ( + "context" + "fmt" + "reflect" + + mpl "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/awscryptographymaterialproviderssmithygenerated" + mpltypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/awscryptographymaterialproviderssmithygeneratedtypes" + dbesdkdynamodbencryptiontypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes" + dbesdkstructuredencryptiontypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes" + "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/dbesdkmiddleware" + "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/examples/utils" + + "github.com/aws/aws-sdk-go-v2/aws" + "github.com/aws/aws-sdk-go-v2/config" + "github.com/aws/aws-sdk-go-v2/service/dynamodb" + "github.com/aws/aws-sdk-go-v2/service/dynamodb/types" +) + +/* +This example sets up a MRK discovery multi-keyring to decrypt data using +the DynamoDB encryption client. A discovery keyring is not provided with any wrapping +keys; instead, it recognizes the KMS key that was used to encrypt a data key, +and asks KMS to decrypt with that KMS key. Discovery keyrings cannot be used +to encrypt data. + +For more information on discovery keyrings, see +https://docs.aws.amazon.com/encryption-sdk/latest/developer-guide/use-kms-keyring.html#kms-keyring-discovery + +This example encrypts an item using an MRK multi-keyring and puts the +encrypted item to the configured DynamoDb table. Then, it gets the item +from the table and decrypts it using the discovery keyring. + +Running this example requires access to the DDB Table whose name +is provided in CLI arguments. +This table must be configured with the following +primary key configuration: + - Partition key is named "partition_key" with type (S) + - Sort key is named "sort_key" with type (S) +*/ +func MrkDiscoveryMultiKeyringExample(keyArn, ddbTableName string, accountIds, regions []string) { + // 1. Create a single MRK multi-keyring using the key arn. + // Although this example demonstrates use of the MRK discovery multi-keyring, + // a discovery keyring cannot be used to encrypt. So we will need to construct + // a non-discovery keyring for this example to encrypt. For more information on MRK + // multi-keyrings, see the MultiMrkKeyringExample in this directory. + // Though this is an "MRK multi-keyring", we do not need to provide multiple keys, + // and can use single-region KMS keys. We will provide a single key here; this + // can be either an MRK or a single-region key. + cfg, err := config.LoadDefaultConfig(context.TODO()) + utils.HandleError(err) + + matProv, err := mpl.NewClient(mpltypes.MaterialProvidersConfig{}) + utils.HandleError(err) + + createAwsKmsMrkMultiKeyringInput := mpltypes.CreateAwsKmsMrkMultiKeyringInput{ + Generator: &keyArn, + } + encryptKeyring, err := matProv.CreateAwsKmsMrkMultiKeyring(context.Background(), createAwsKmsMrkMultiKeyringInput) + utils.HandleError(err) + + // 2. Configure which attributes are encrypted and/or signed when writing new items. + // For each attribute that may exist on the items we plan to write to our DynamoDbTable, + // we must explicitly configure how they should be treated during item encryption: + // - ENCRYPT_AND_SIGN: The attribute is encrypted and icncluded in the signature + // - SIGN_ONLY: The attribute not encrypted, but is still included in the signature + // - DO_NOTHING: The attribute is not encrypted and not included in the signature + attributeActions := map[string]dbesdkstructuredencryptiontypes.CryptoAction{ + "partition_key": dbesdkstructuredencryptiontypes.CryptoActionSignOnly, // Partition key must be SIGN_ONLY + "sort_key": dbesdkstructuredencryptiontypes.CryptoActionSignOnly, // Sort key must be SIGN_ONLY + "sensitive_data": dbesdkstructuredencryptiontypes.CryptoActionEncryptAndSign, + } + + // 3. Configure which attributes we expect to be included in the signature + // when reading items. There are two options for configuring this: + // + // - (Recommended) Configure `allowedUnsignedAttributesPrefix`: + // When defining your DynamoDb schema and deciding on attribute names, + // choose a distinguishing prefix (such as ":") for all attributes that + // you do not want to include in the signature. + // This has two main benefits: + // - It is easier to reason about the security and authenticity of data within your item + // when all unauthenticated data is easily distinguishable by their attribute name. + // - If you need to add new unauthenticated attributes in the future, + // you can easily make the corresponding update to your `attributeActionsOnEncrypt` + // and immediately start writing to that new attribute, without + // any other configuration update needed. + // Once you configure this field, it is not safe to update it. + // + // - Configure `allowedUnsignedAttributes`: You may also explicitly list + // a set of attributes that should be considered unauthenticated when encountered + // on read. Be careful if you use this configuration. Do not remove an attribute + // name from this configuration, even if you are no longer writing with that attribute, + // as old items may still include this attribute, and our configuration needs to know + // to continue to exclude this attribute from the signature scope. + // If you add new attribute names to this field, you must first deploy the update to this + // field to all readers in your host fleet before deploying the update to start writing + // with that new attribute. + // + // For this example, we currently authenticate all attributes. To make it easier to + // add unauthenticated attributes in the future, we define a prefix ":" for such attributes. + unsignAttrPrefix := ":" + + // 4. Create the DynamoDb Encryption configuration for the table we will be writing to. + tableConfig := dbesdkdynamodbencryptiontypes.DynamoDbTableEncryptionConfig{ + LogicalTableName: ddbTableName, + PartitionKeyName: "partition_key", + SortKeyName: aws.String("sort_key"), + AttributeActionsOnEncrypt: attributeActions, + Keyring: encryptKeyring, + AllowedUnsignedAttributePrefix: &unsignAttrPrefix, + } + tableConfigsMap := make(map[string]dbesdkdynamodbencryptiontypes.DynamoDbTableEncryptionConfig) + tableConfigsMap[ddbTableName] = tableConfig + + // 5. Create the DynamoDb Encryption Interceptor + dbEsdkMiddleware, err := dbesdkmiddleware.NewDBEsdkMiddleware(dbesdkdynamodbencryptiontypes.DynamoDbTablesEncryptionConfig{ + TableEncryptionConfigs: tableConfigsMap, + }) + utils.HandleError(err) + + // 6. Create a new AWS SDK DynamoDb client using the DynamoDb Encryption Interceptor above + ddbClient := dynamodb.NewFromConfig(cfg, dbEsdkMiddleware.CreateMiddleware()) + + // 7. Put an item into our table using the above client. + // Before the item gets sent to DynamoDb, it will be encrypted + // client-side using the MRK multi-keyring. + item := map[string]types.AttributeValue{ + "partition_key": &types.AttributeValueMemberS{Value: "awsKmsMrkDiscoveryMultiKeyringItem"}, + "sort_key": &types.AttributeValueMemberN{Value: "0"}, + "sensitive_data": &types.AttributeValueMemberS{Value: "encrypt and sign me!"}, + } + + putRequest := &dynamodb.PutItemInput{ + TableName: aws.String(ddbTableName), + Item: item, + } + + _, err = ddbClient.PutItem(context.TODO(), putRequest) + utils.HandleError(err) + + // 8. Construct a discovery filter. + // A discovery filter limits the set of encrypted data keys + // the keyring can use to decrypt data. + // We will only let the keyring use keys in the selected AWS accounts + // and in the `aws` partition. + // This is the suggested config for most users; for more detailed config, see + // https://docs.aws.amazon.com/encryption-sdk/latest/developer-guide/use-kms-keyring.html#kms-keyring-discovery + discoveryFilter := mpltypes.DiscoveryFilter{ + Partition: "aws", + AccountIds: accountIds, + } + + // 9. Construct a discovery keyring. + // Note that we choose to use the MRK discovery multi-keyring, even though + // our original keyring used a single KMS key. + createAwsKmsMrkDiscoveryMultiKeyringInput := mpltypes.CreateAwsKmsMrkDiscoveryMultiKeyringInput{ + DiscoveryFilter: &discoveryFilter, + Regions: regions, + } + decryptKeyring, err := matProv.CreateAwsKmsMrkDiscoveryMultiKeyring(context.Background(), createAwsKmsMrkDiscoveryMultiKeyringInput) + utils.HandleError(err) + + // 10. Create new DDB config and client using the decrypt discovery keyring. + // This is the same as the above config, except we pass in the decrypt keyring. + tableConfigForDecrypt := dbesdkdynamodbencryptiontypes.DynamoDbTableEncryptionConfig{ + LogicalTableName: ddbTableName, + PartitionKeyName: "partition_key", + SortKeyName: aws.String("sort_key"), + AttributeActionsOnEncrypt: attributeActions, + Keyring: decryptKeyring, + AllowedUnsignedAttributePrefix: &unsignAttrPrefix, + } + tableConfigsMapForDecrypt := make(map[string]dbesdkdynamodbencryptiontypes.DynamoDbTableEncryptionConfig) + tableConfigsMapForDecrypt[ddbTableName] = tableConfigForDecrypt + + dbEsdkMiddlewareForDecrypt, err := dbesdkmiddleware.NewDBEsdkMiddleware(dbesdkdynamodbencryptiontypes.DynamoDbTablesEncryptionConfig{ + TableEncryptionConfigs: tableConfigsMapForDecrypt, + }) + utils.HandleError(err) + + ddbClientForDecrypt := dynamodb.NewFromConfig(cfg, dbEsdkMiddlewareForDecrypt.CreateMiddleware()) + + // 11. Get the item back from our table using the client. + // The client will retrieve encrypted items from the DDB table, then + // detect the KMS key that was used to encrypt their data keys. + // The client will make a request to KMS to decrypt with the encrypting KMS key. + // If the client has permission to decrypt with the KMS key, + // the client will decrypt the item client-side using the keyring + // and return the original item. + keyToGet := map[string]types.AttributeValue{ + "partition_key": &types.AttributeValueMemberS{Value: "awsKmsMrkDiscoveryMultiKeyringItem"}, + "sort_key": &types.AttributeValueMemberN{Value: "0"}, + } + + getRequest := &dynamodb.GetItemInput{ + Key: keyToGet, + TableName: aws.String(ddbTableName), + ConsistentRead: aws.Bool(true), + } + + getResponse, err := ddbClientForDecrypt.GetItem(context.TODO(), getRequest) + utils.HandleError(err) + + // Demonstrate that GetItem succeeded and returned the decrypted item + if !reflect.DeepEqual(item, getResponse.Item) { + panic("Decrypted item does not match original item") + } + fmt.Println("MRK Discovery Multi Keyring Example successful.") +} diff --git a/releases/go/dynamodb-esdk/examples/keyring/rawaeskeyring.go b/releases/go/dynamodb-esdk/examples/keyring/rawaeskeyring.go new file mode 100644 index 000000000..c29cc91bc --- /dev/null +++ b/releases/go/dynamodb-esdk/examples/keyring/rawaeskeyring.go @@ -0,0 +1,170 @@ +// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +package keyring + +import ( + "context" + "fmt" + "reflect" + + mpl "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/awscryptographymaterialproviderssmithygenerated" + mpltypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/awscryptographymaterialproviderssmithygeneratedtypes" + dbesdkdynamodbencryptiontypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes" + dbesdkstructuredencryptiontypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes" + "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/dbesdkmiddleware" + "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/examples/utils" + "github.com/aws/aws-sdk-go-v2/aws" + "github.com/aws/aws-sdk-go-v2/config" + "github.com/aws/aws-sdk-go-v2/service/dynamodb" + "github.com/aws/aws-sdk-go-v2/service/dynamodb/types" +) + +/* + This example sets up DynamoDb Encryption for the AWS SDK client + using the raw AES Keyring. This keyring takes in an AES key + and uses that key to protect the data keys that encrypt and + decrypt DynamoDb table items. + + This example takes in an `aesKeyBytes` parameter. This parameter + should be a ByteBuffer representing a 256-bit AES key. If this example + is run through the class' main method, it will create a new key. + In practice, users of this library should not randomly generate a key, + and should instead retrieve an existing key from a secure key + management system (e.g. an HSM). + + This example encrypts a test item using the provided AES key and puts the + encrypted item to the provided DynamoDb table. Then, it gets the + item from the table and decrypts it. + + Running this example requires access to the DDB Table whose name + is provided in CLI arguments. + This table must be configured with the following + primary key configuration: + - Partition key is named "partition_key" with type (S) + - Sort key is named "sort_key" with type (S) +*/ + +func RawAesExample(ddbTableName, keyNamespace, keyName string, aesKeyBytes []byte) { + // Initialize the mpl client + matProv, err := mpl.NewClient(mpltypes.MaterialProvidersConfig{}) + utils.HandleError(err) + + // 1. Create the keyring. + // The DynamoDb encryption client uses this to encrypt and decrypt items. + + // Create the Raw Aes Keyring + rawAesKeyRingInput := mpltypes.CreateRawAesKeyringInput{ + KeyName: keyName, + KeyNamespace: keyNamespace, + WrappingKey: aesKeyBytes, + WrappingAlg: mpltypes.AesWrappingAlgAlgAes256GcmIv12Tag16, + } + rawAesKeyring, err := matProv.CreateRawAesKeyring(context.Background(), rawAesKeyRingInput) + utils.HandleError(err) + // 2. Configure which attributes are encrypted and/or signed when writing new items. + // For each attribute that may exist on the items we plan to write to our DynamoDbTable, + // we must explicitly configure how they should be treated during item encryption: + // - ENCRYPT_AND_SIGN: The attribute is encrypted and included in the signature + // - SIGN_ONLY: The attribute not encrypted, but is still included in the signature + // - DO_NOTHING: The attribute is not encrypted and not included in the signature + attributeActionsOnEncrypt := map[string]dbesdkstructuredencryptiontypes.CryptoAction{ + "partition_key": dbesdkstructuredencryptiontypes.CryptoActionSignOnly, // Partition key must be SIGN_ONLY + "sort_key": dbesdkstructuredencryptiontypes.CryptoActionSignOnly, // Sort key must be SIGN_ONLY + "sensitive_data": dbesdkstructuredencryptiontypes.CryptoActionEncryptAndSign, + } + // 3. Configure which attributes we expect to be included in the signature + // when reading items. There are two options for configuring this: + // + // - (Recommended) Configure `allowedUnsignedAttributesPrefix`: + // When defining your DynamoDb schema and deciding on attribute names, + // choose a distinguishing prefix (such as ":") for all attributes that + // you do not want to include in the signature. + // This has two main benefits: + // - It is easier to reason about the security and authenticity of data within your item + // when all unauthenticated data is easily distinguishable by their attribute name. + // - If you need to add new unauthenticated attributes in the future, + // you can easily make the corresponding update to your `attributeActionsOnEncrypt` + // and immediately start writing to that new attribute, without + // any other configuration update needed. + // Once you configure this field, it is not safe to update it. + // + // - Configure `allowedUnsignedAttributes`: You may also explicitly list + // a set of attributes that should be considered unauthenticated when encountered + // on read. Be careful if you use this configuration. Do not remove an attribute + // name from this configuration, even if you are no longer writing with that attribute, + // as old items may still include this attribute, and our configuration needs to know + // to continue to exclude this attribute from the signature scope. + // If you add new attribute names to this field, you must first deploy the update to this + // field to all readers in your host fleet before deploying the update to start writing + // with that new attribute. + // + // For this example, we currently authenticate all attributes. To make it easier to + // add unauthenticated attributes in the future, we define a prefix ":" for such attributes. + unsignedAttrPrefix := ":" + + // 4. Create the DynamoDb Encryption configuration for the table we will be writing to. + partitionKey := "partition_key" + sortKeyName := "sort_key" + tableConfig := dbesdkdynamodbencryptiontypes.DynamoDbTableEncryptionConfig{ + LogicalTableName: ddbTableName, + PartitionKeyName: partitionKey, + SortKeyName: &sortKeyName, + AttributeActionsOnEncrypt: attributeActionsOnEncrypt, + Keyring: rawAesKeyring, + AllowedUnsignedAttributePrefix: &unsignedAttrPrefix, + } + tableConfigsMap := make(map[string]dbesdkdynamodbencryptiontypes.DynamoDbTableEncryptionConfig) + tableConfigsMap[ddbTableName] = tableConfig + listOfTableConfigs := dbesdkdynamodbencryptiontypes.DynamoDbTablesEncryptionConfig{ + TableEncryptionConfigs: tableConfigsMap, + } + // 5. Create a new AWS SDK DynamoDb client using the Config above + + // Create DBESDK middleware + dbEsdkMiddleware, err := dbesdkmiddleware.NewDBEsdkMiddleware(listOfTableConfigs) + utils.HandleError(err) + // Create aws config + cfg, err := config.LoadDefaultConfig(context.TODO()) + utils.HandleError(err) + ddb := dynamodb.NewFromConfig(cfg, dbEsdkMiddleware.CreateMiddleware()) + + // 6. Put an item into our table using the above client. + // Before the item gets sent to DynamoDb, it will be encrypted + // client-side, according to our configuration. + item := map[string]types.AttributeValue{ + "partition_key": &types.AttributeValueMemberS{Value: "rawAesKeyringItem"}, + "sort_key": &types.AttributeValueMemberN{Value: "0"}, + "sensitive_data": &types.AttributeValueMemberS{Value: "encrypt and sign me!"}, + } + putInput := &dynamodb.PutItemInput{ + TableName: aws.String(ddbTableName), + Item: item, + } + _, err = ddb.PutItem(context.TODO(), putInput) + utils.HandleError(err) + // 7. Get the item back from our table using the same client. + // The client will decrypt the item client-side, and return + // back the original item. + key := map[string]types.AttributeValue{ + "partition_key": &types.AttributeValueMemberS{Value: "rawAesKeyringItem"}, + "sort_key": &types.AttributeValueMemberN{Value: "0"}, + } + getInput := &dynamodb.GetItemInput{ + TableName: aws.String(ddbTableName), + Key: key, + // In this example we configure a strongly consistent read + // because we perform a read immediately after a write (for demonstrative purposes). + // By default, reads are only eventually consistent. + // Read our docs to determine which read consistency to use for your application: + // https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.ReadConsistency.html + ConsistentRead: aws.Bool(true), + } + result, err := ddb.GetItem(context.TODO(), getInput) + utils.HandleError(err) + // Verify the decrypted item + if !reflect.DeepEqual(item, result.Item) { + panic("Decrypted item does not match original item") + } + fmt.Println("Raw Aes Example successful.") +} diff --git a/releases/go/dynamodb-esdk/examples/keyring/rawrsakeyring.go b/releases/go/dynamodb-esdk/examples/keyring/rawrsakeyring.go new file mode 100644 index 000000000..fb2d7b5af --- /dev/null +++ b/releases/go/dynamodb-esdk/examples/keyring/rawrsakeyring.go @@ -0,0 +1,284 @@ +// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +package keyring + +import ( + "context" + "crypto/rand" + "crypto/rsa" + "crypto/x509" + "encoding/pem" + "fmt" + "os" + "reflect" + + mpl "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/awscryptographymaterialproviderssmithygenerated" + mpltypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/awscryptographymaterialproviderssmithygeneratedtypes" + dbesdkdynamodbencryptiontypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes" + dbesdkstructuredencryptiontypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes" + "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/dbesdkmiddleware" + "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/examples/utils" + "github.com/aws/aws-sdk-go-v2/aws" + "github.com/aws/aws-sdk-go-v2/config" + "github.com/aws/aws-sdk-go-v2/service/dynamodb" + "github.com/aws/aws-sdk-go-v2/service/dynamodb/types" +) + +/* + This example sets up DynamoDb Encryption for the AWS SDK client + using the raw RSA Keyring. This keyring uses an RSA key pair to + encrypt and decrypt records. This keyring accepts PEM encodings of + the key pair as UTF-8 interpreted bytes. The client uses the public key + to encrypt items it adds to the table and uses the private key to decrypt + existing table items it retrieves. + + This example loads a key pair from PEM files with paths defined in + - exampleRsaPrivateKeyFilename + - exampleRsaPublicKeyFilename + If you do not provide these files, running this example through this + class' main method will generate these files for you. These files will + be generated in the directory where the example is run. + In practice, users of this library should not generate new key pairs + like this, and should instead retrieve an existing key from a secure + key management system (e.g. an HSM). + You may also provide your own key pair by placing PEM files in the + directory where the example is run or modifying the paths in the code + below. These files must be valid PEM encodings of the key pair as UTF-8 + encoded bytes. If you do provide your own key pair, or if a key pair + already exists, this class' main method will not generate a new key pair. + + This example loads a key pair from disk, encrypts a test item, and puts the + encrypted item to the provided DynamoDb table. Then, it gets the + item from the table and decrypts it. + + Running this example requires access to the DDB Table whose name + is provided in CLI arguments. + This table must be configured with the following + primary key configuration: + - Partition key is named "partition_key" with type (S) + - Sort key is named "sort_key" with type (S) +*/ + +func RawRsaKeyringExample(ddbTableName, exampleRsaPublicKeyFilename, exampleRsaPrivateKeyFilename string) { + // You may provide your own RSA key pair in the files located at + // - exampleRsaPrivateKeyFilename + // - exampleRsaPublicKeyFilename + // If these files are not present, this will generate a pair for you + if shouldGenerateNewRsaKeyPair(exampleRsaPublicKeyFilename, exampleRsaPrivateKeyFilename) { + generateRsaKeyPair(exampleRsaPublicKeyFilename, exampleRsaPrivateKeyFilename) + } + + // 1. Load key pair from UTF-8 encoded PEM files. + // You may provide your own PEM files to use here. + // If you do not, the main method in this class will generate PEM + // files for example use. Do not use these files for any other purpose. + publicKeyUtf8EncodedBytes, err := os.ReadFile(exampleRsaPublicKeyFilename) + utils.HandleError(err) + + privateKeyUtf8EncodedBytes, err := os.ReadFile(exampleRsaPrivateKeyFilename) + utils.HandleError(err) + + matProv, err := mpl.NewClient(mpltypes.MaterialProvidersConfig{}) + utils.HandleError(err) + + // 2. Create the keyring. + // The DynamoDb encryption client uses this to encrypt and decrypt items. + keyringInput := mpltypes.CreateRawRsaKeyringInput{ + KeyName: "my-rsa-key-name", + KeyNamespace: "my-key-namespace", + PaddingScheme: mpltypes.PaddingSchemeOaepSha256Mgf1, + PublicKey: publicKeyUtf8EncodedBytes, + PrivateKey: privateKeyUtf8EncodedBytes, + } + rawRsaKeyring, err := matProv.CreateRawRsaKeyring(context.Background(), keyringInput) + utils.HandleError(err) + + // 3. Configure which attributes are encrypted and/or signed when writing new items. + // For each attribute that may exist on the items we plan to write to our DynamoDbTable, + // we must explicitly configure how they should be treated during item encryption: + // - ENCRYPT_AND_SIGN: The attribute is encrypted and included in the signature + // - SIGN_ONLY: The attribute not encrypted, but is still included in the signature + // - DO_NOTHING: The attribute is not encrypted and not included in the signature + attributeActionsOnEncrypt := map[string]dbesdkstructuredencryptiontypes.CryptoAction{ + "partition_key": dbesdkstructuredencryptiontypes.CryptoActionSignOnly, // Our partition attribute must be SIGN_ONLY + "sort_key": dbesdkstructuredencryptiontypes.CryptoActionSignOnly, // Our sort attribute must be SIGN_ONLY + "sensitive_data": dbesdkstructuredencryptiontypes.CryptoActionEncryptAndSign, + } + + // 4. Configure which attributes we expect to be included in the signature + // when reading items. There are two options for configuring this: + // + // - (Recommended) Configure `allowedUnsignedAttributesPrefix`: + // When defining your DynamoDb schema and deciding on attribute names, + // choose a distinguishing prefix (such as ":") for all attributes that + // you do not want to include in the signature. + // This has two main benefits: + // - It is easier to reason about the security and authenticity of data within your item + // when all unauthenticated data is easily distinguishable by their attribute name. + // - If you need to add new unauthenticated attributes in the future, + // you can easily make the corresponding update to your `attributeActionsOnEncrypt` + // and immediately start writing to that new attribute, without + // any other configuration update needed. + // Once you configure this field, it is not safe to update it. + // + // - Configure `allowedUnsignedAttributes`: You may also explicitly list + // a set of attributes that should be considered unauthenticated when encountered + // on read. Be careful if you use this configuration. Do not remove an attribute + // name from this configuration, even if you are no longer writing with that attribute, + // as old items may still include this attribute, and our configuration needs to know + // to continue to exclude this attribute from the signature scope. + // If you add new attribute names to this field, you must first deploy the update to this + // field to all readers in your host fleet before deploying the update to start writing + // with that new attribute. + // + // For this example, we currently authenticate all attributes. To make it easier to + // add unauthenticated attributes in the future, we define a prefix ":" for such attributes. + unsignedAttrPrefix := ":" + + // 5. Create the DynamoDb Encryption configuration for the table we will be writing to. + partitionKey := "partition_key" + sortKeyName := "sort_key" + tableConfig := dbesdkdynamodbencryptiontypes.DynamoDbTableEncryptionConfig{ + LogicalTableName: ddbTableName, + PartitionKeyName: partitionKey, + SortKeyName: &sortKeyName, + AttributeActionsOnEncrypt: attributeActionsOnEncrypt, + Keyring: rawRsaKeyring, + AllowedUnsignedAttributePrefix: &unsignedAttrPrefix, + } + tableConfigsMap := make(map[string]dbesdkdynamodbencryptiontypes.DynamoDbTableEncryptionConfig) + tableConfigsMap[ddbTableName] = tableConfig + listOfTableConfigs := dbesdkdynamodbencryptiontypes.DynamoDbTablesEncryptionConfig{ + TableEncryptionConfigs: tableConfigsMap, + } + + // 6. Create a new AWS SDK DynamoDb client using the Config above + + // Create DBESDK middleware + dbEsdkMiddleware, err := dbesdkmiddleware.NewDBEsdkMiddleware(listOfTableConfigs) + utils.HandleError(err) + // Create aws config + cfg, err := config.LoadDefaultConfig(context.TODO()) + utils.HandleError(err) + ddb := dynamodb.NewFromConfig(cfg, dbEsdkMiddleware.CreateMiddleware()) + + // 7. Put an item into our table using the above client. + // Before the item gets sent to DynamoDb, it will be encrypted + // client-side, according to our configuration. + item := map[string]types.AttributeValue{ + "partition_key": &types.AttributeValueMemberS{Value: "rawRsaKeyringItem"}, + "sort_key": &types.AttributeValueMemberN{Value: "0"}, + "sensitive_data": &types.AttributeValueMemberS{Value: "encrypt and sign me!"}, + } + putInput := &dynamodb.PutItemInput{ + TableName: aws.String(ddbTableName), + Item: item, + } + _, err = ddb.PutItem(context.TODO(), putInput) + utils.HandleError(err) + + // 8. Get the item back from our table using the same client. + // The client will decrypt the item client-side, and return + // back the original item. + key := map[string]types.AttributeValue{ + "partition_key": &types.AttributeValueMemberS{Value: "rawRsaKeyringItem"}, + "sort_key": &types.AttributeValueMemberN{Value: "0"}, + } + getInput := &dynamodb.GetItemInput{ + TableName: aws.String(ddbTableName), + Key: key, + // In this example we configure a strongly consistent read + // because we perform a read immediately after a write (for demonstrative purposes). + // By default, reads are only eventually consistent. + // Read our docs to determine which read consistency to use for your application: + // https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.ReadConsistency.html + ConsistentRead: aws.Bool(true), + } + result, err := ddb.GetItem(context.TODO(), getInput) + utils.HandleError(err) + + // Demonstrate that GetItem succeeded and returned the decrypted item + if !reflect.DeepEqual(item, result.Item) { + panic("Decrypted item does not match original item") + } + fmt.Println("Raw RSA Keyring Example successful.") +} + +func shouldGenerateNewRsaKeyPair(exampleRsaPublicKeyFilename, exampleRsaPrivateKeyFilename string) bool { + // Check if a key pair already exists + privateKeyExists := utils.FileExists(exampleRsaPrivateKeyFilename) + publicKeyExists := utils.FileExists(exampleRsaPublicKeyFilename) + + // If a key pair already exists: do not overwrite existing key pair + if privateKeyExists && publicKeyExists { + return false + } + + // If only one file is present: throw exception + if privateKeyExists && !publicKeyExists { + panic("Missing public key file at " + exampleRsaPublicKeyFilename) + } + if !privateKeyExists && publicKeyExists { + panic("Missing private key file at " + exampleRsaPrivateKeyFilename) + } + + // If neither file is present, generate a new key pair + return true +} + +func generateRsaKeyPair(exampleRsaPublicKeyFilename, exampleRsaPrivateKeyFilename string) { + // Safety check: Validate neither file is present + if utils.FileExists(exampleRsaPrivateKeyFilename) || utils.FileExists(exampleRsaPublicKeyFilename) { + panic("generateRsaKeyPair will not overwrite existing PEM files") + } + + // This code will generate a new RSA key pair for example use. + // The public and private key will be written to the files: + // - public: exampleRsaPublicKeyFilename + // - private: exampleRsaPrivateKeyFilename + // This example uses Go's crypto/rsa package to generate the key pair. + // In practice, you should not generate this in your code, and should instead + // retrieve this key from a secure key management system (e.g. HSM) + // This key is created here for example purposes only. + privateKey, err := rsa.GenerateKey(rand.Reader, 2048) + utils.HandleError(err) + + // Extract public key from the private key + publicKey := &privateKey.PublicKey + + // Encode private key to PKCS8 DER format + privateKeyDER, err := x509.MarshalPKCS8PrivateKey(privateKey) + utils.HandleError(err) + + // Encode public key to PKIX DER format + publicKeyDER, err := x509.MarshalPKIXPublicKey(publicKey) + utils.HandleError(err) + + // Create PEM blocks + privateKeyBlock := &pem.Block{ + Type: "PRIVATE KEY", + Bytes: privateKeyDER, + } + + publicKeyBlock := &pem.Block{ + Type: "PUBLIC KEY", + Bytes: publicKeyDER, + } + + // Write private key to file + privateKeyFile, err := os.Create(exampleRsaPrivateKeyFilename) + utils.HandleError(err) + defer privateKeyFile.Close() + + err = pem.Encode(privateKeyFile, privateKeyBlock) + utils.HandleError(err) + + // Write public key to file + publicKeyFile, err := os.Create(exampleRsaPublicKeyFilename) + utils.HandleError(err) + defer publicKeyFile.Close() + + err = pem.Encode(publicKeyFile, publicKeyBlock) + utils.HandleError(err) +} diff --git a/releases/go/dynamodb-esdk/examples/main.go b/releases/go/dynamodb-esdk/examples/main.go new file mode 100644 index 000000000..8be077479 --- /dev/null +++ b/releases/go/dynamodb-esdk/examples/main.go @@ -0,0 +1,103 @@ +// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +package main + +import ( + "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/examples/clientsupplier" + "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/examples/itemencryptor" + "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/examples/keyring" + "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/examples/misc" + "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/examples/searchableencryption" + "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/examples/searchableencryption/complexexample" + "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/examples/utils" +) + +func main() { + // clientsupplier example + clientsupplier.ClientSupplierExample( + utils.DdbTableName(), + utils.TestMrkReplicaKeyIdUsEast1(), + utils.DefaultKMSKeyAccountID(), + utils.AlternateRegionKmsKeyRegionAsAList()) + // misc examples + misc.BasicPutGetExample( + utils.KmsKeyID(), + utils.DdbTableName()) + misc.GetEncryptedDataKeyDescriptionExample( + utils.KmsKeyID(), + utils.DdbTableName()) + misc.MultiPutGetExample( + utils.KmsKeyID(), + utils.DdbTableName()) + branchKey1 := misc.CreateBranchKeyIDExample( + utils.TestKeystoreName(), + utils.TestLogicalKeystoreName(), + utils.TestKeystoreKmsKeyId()) + branchKey2 := misc.CreateBranchKeyIDExample( + utils.TestKeystoreName(), + utils.TestLogicalKeystoreName(), + utils.TestKeystoreKmsKeyId()) + + // keyring examples + keyring.AwsKmsKeyringExample( + utils.KmsKeyID(), + utils.DdbTableName()) + keyring.RawAesExample( + utils.DdbTableName(), + utils.KeyNamespace(), + utils.KeyName(), + utils.GenerateAes256KeyBytes()) + keyring.HierarchicalKeyringExample( + utils.DdbTableName(), + branchKey1, + branchKey2, + utils.TestKeystoreName(), + utils.TestLogicalKeystoreName(), + utils.TestKeystoreKmsKeyId()) + keyring.KmsRsaKeyringExample( + utils.DdbTableName(), + utils.TestKmsRsaKeyID(), + utils.DefaultRsaPublicKeyFilename()) + keyring.RawRsaKeyringExample( + utils.DdbTableName(), + utils.ExampleRsaPublicKeyFilename(), + utils.ExampleRsaPrivateKeyFilename()) + keyring.MrkDiscoveryMultiKeyringExample( + utils.KmsKeyID(), + utils.DdbTableName(), + utils.DefaultKMSKeyAccountID(), + utils.DefaultKmsKeyRegion()) + + // item encryptor example + itemencryptor.ItemEncryptDecryptExample( + utils.KmsKeyID(), + utils.DdbTableName()) + + // searchable encryption example + searchableencryption.BasicSearchableEncryptionExample( + utils.UnitInspectionTestDdbTableName(), + branchKey1, + utils.TestKeystoreKmsKeyId(), + utils.TestKeystoreName()) + searchableencryption.BeaconStylesSearchableEncryptionExample( + utils.UnitInspectionTestDdbTableName(), + branchKey1, + utils.TestKeystoreKmsKeyId(), + utils.TestKeystoreName()) + searchableencryption.CompoundBeaconSearchableEncryptionExample( + utils.UnitInspectionTestDdbTableName(), + branchKey2, + utils.TestKeystoreKmsKeyId(), + utils.TestKeystoreName()) + searchableencryption.VirtualBeaconSearchableEncryptionExample( + utils.SimpleBeaconTestDdbTableName(), + branchKey2, + utils.TestKeystoreKmsKeyId(), + utils.TestKeystoreName()) + complexexample.ComplexSearchableEncryptionExample( + utils.TestComplexDdbTableName(), + branchKey1, + utils.TestKeystoreKmsKeyId(), + utils.TestKeystoreName()) +} diff --git a/releases/go/dynamodb-esdk/examples/migration/PlaintextToAWSDBE/README.md b/releases/go/dynamodb-esdk/examples/migration/PlaintextToAWSDBE/README.md new file mode 100644 index 000000000..31170c101 --- /dev/null +++ b/releases/go/dynamodb-esdk/examples/migration/PlaintextToAWSDBE/README.md @@ -0,0 +1,51 @@ +# Plaintext DynamoDB Table to AWS Database Encryption SDK Encrypted Table Migration + +This projects demonstrates the steps necessary +to migrate to the AWS Database Encryption SDK for DynamoDb +from a plaintext database. + +[Step 0](plaintext/step0.go) demonstrates the starting state for your system. + +## Step 1 + +In Step 1, you update your system to do the following: + +- continue to read plaintext items +- continue to write plaintext items +- prepare to read encrypted items + +When you deploy changes in Step 1, +you should not expect any behavior change in your system, +and your dataset still consists of plaintext data. + +You must ensure that the changes in Step 1 make it to all your readers before you proceed to Step 2. + +## Step 2 + +In Step 2, you update your system to do the following: + +- continue to read plaintext items +- start writing encrypted items +- continue to read encrypted items + +When you deploy changes in Step 2, +you are introducing encrypted items to your system, +and must make sure that all your readers are updated with the changes from Step 1. + +Before you move onto the next step, you will need to encrypt all plaintext items in your dataset. +Once you have completed this step, +while new items are being encrypted using the new format and will be authenticated on read, +your system will still accept reading plaintext, unauthenticated items. +In order to complete migration to a system where you always authenticate your items, +you should prioritize moving on to Step 3. + +## Step 3 + +Once all old items are encrypted, +update your system to do the following: + +- continue to write encrypted items +- continue to read encrypted items +- do not accept reading plaintext items + +Once you have deployed these changes to your system, you have completed migration. diff --git a/releases/go/dynamodb-esdk/examples/migration/PlaintextToAWSDBE/awsdbe/common.go b/releases/go/dynamodb-esdk/examples/migration/PlaintextToAWSDBE/awsdbe/common.go new file mode 100644 index 000000000..4e51f6d98 --- /dev/null +++ b/releases/go/dynamodb-esdk/examples/migration/PlaintextToAWSDBE/awsdbe/common.go @@ -0,0 +1,71 @@ +package awsdbe + +import ( + "context" + + mpl "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/awscryptographymaterialproviderssmithygenerated" + mpltypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/awscryptographymaterialproviderssmithygeneratedtypes" + dbesdkdynamodbencryptiontypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes" + dbesdkstructuredencryptiontypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes" + "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/examples/utils" +) + +func configureTable(kmsKeyID, ddbTableName string, plaintextOverride dbesdkdynamodbencryptiontypes.PlaintextOverride) dbesdkdynamodbencryptiontypes.DynamoDbTablesEncryptionConfig { + + // Create a Keyring. This Keyring will be responsible for protecting the data keys that protect your data. + // We will use the `CreateMrkMultiKeyring` method to create this keyring, + // as it will correctly handle both single region and Multi-Region KMS Keys. + matProv, err := mpl.NewClient(mpltypes.MaterialProvidersConfig{}) + utils.HandleError(err) + + keyringInput := mpltypes.CreateAwsKmsMrkMultiKeyringInput{ + Generator: &kmsKeyID, + } + kmsKeyring, err := matProv.CreateAwsKmsMrkMultiKeyring(context.Background(), keyringInput) + utils.HandleError(err) + + // Configure which attributes are encrypted and/or signed when writing new items. + // For each attribute that may exist on the items we plan to write to our DynamoDbTable, + // we must explicitly configure how they should be treated during item encryption: + // - ENCRYPT_AND_SIGN: The attribute is encrypted and included in the signature + // - SIGN_ONLY: The attribute not encrypted, but is still included in the signature + // - DO_NOTHING: The attribute is not encrypted and not included in the signature + partitionKeyName := "partition_key" + sortKeyName := "sort_key" + + attributeActions := map[string]dbesdkstructuredencryptiontypes.CryptoAction{ + partitionKeyName: dbesdkstructuredencryptiontypes.CryptoActionSignOnly, + sortKeyName: dbesdkstructuredencryptiontypes.CryptoActionSignOnly, + "attribute1": dbesdkstructuredencryptiontypes.CryptoActionEncryptAndSign, + "attribute2": dbesdkstructuredencryptiontypes.CryptoActionSignOnly, + "attribute3": dbesdkstructuredencryptiontypes.CryptoActionDoNothing, + } + + // Configure which attributes we expect to be excluded in the signature + // when reading items. This value represents all unsigned attributes + // across our entire dataset. If you ever want to add new unsigned attributes + // in the future, you must make an update to this field to all your readers + // before deploying any change to start writing that new data. It is not safe + // to remove attributes from this field. + unsignedAttributes := []string{"attribute3"} + + // Create encryption configuration for table. + tableConfig := dbesdkdynamodbencryptiontypes.DynamoDbTableEncryptionConfig{ + LogicalTableName: ddbTableName, + PartitionKeyName: partitionKeyName, + SortKeyName: &sortKeyName, + AttributeActionsOnEncrypt: attributeActions, + Keyring: kmsKeyring, + AllowedUnsignedAttributes: unsignedAttributes, + PlaintextOverride: &plaintextOverride, + } + + tableConfigsMap := make(map[string]dbesdkdynamodbencryptiontypes.DynamoDbTableEncryptionConfig) + tableConfigsMap[ddbTableName] = tableConfig + + listOfTableConfigs := dbesdkdynamodbencryptiontypes.DynamoDbTablesEncryptionConfig{ + TableEncryptionConfigs: tableConfigsMap, + } + + return listOfTableConfigs +} diff --git a/releases/go/dynamodb-esdk/examples/migration/PlaintextToAWSDBE/awsdbe/step1.go b/releases/go/dynamodb-esdk/examples/migration/PlaintextToAWSDBE/awsdbe/step1.go new file mode 100644 index 000000000..44db5e18b --- /dev/null +++ b/releases/go/dynamodb-esdk/examples/migration/PlaintextToAWSDBE/awsdbe/step1.go @@ -0,0 +1,124 @@ +package awsdbe + +import ( + "context" + "fmt" + + "github.com/aws/aws-sdk-go-v2/aws" + "github.com/aws/aws-sdk-go-v2/config" + "github.com/aws/aws-sdk-go-v2/service/dynamodb" + "github.com/aws/aws-sdk-go-v2/service/dynamodb/types" + + "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/dbesdkmiddleware" + plaintexttoawsdbe "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/examples/migration/PlaintextToAWSDBE" + "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/examples/utils" + + dbesdkdynamodbencryptiontypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes" +) + +/* +Migration Step 1: This is an example demonstrating how to start using the +AWS Database Encryption SDK with a pre-existing table with plaintext items. +In this example, we configure a DynamoDb Encryption Interceptor to do the following: + - Write items only in plaintext + - Read items in plaintext or, if the item is encrypted, decrypt with our encryption configuration + +While this step configures your client to be ready to start reading encrypted items, +we do not yet expect to be reading any encrypted items, +as our client still writes plaintext items. +Before you move on to step 2, ensure that these changes have successfully been deployed +to all of your readers. + +Running this example requires access to the DDB Table whose name +is provided in the function parameter. +This table must be configured with the following +primary key configuration: + - Partition key is named "partition_key" with type (S) + - Sort key is named "sort_key" with type (S) +*/ +func MigrationStep1(kmsKeyID, ddbTableName, partitionKeyValue, sortKeyWriteValue, sortKeyReadValue string) error { + cfg, err := config.LoadDefaultConfig(context.TODO()) + utils.HandleError(err) + + // 1. Configure your Keyring, attribute actions, + // allowedUnsignedAttributes, and encryption configuration for table. + // This is common across all the steps. + + // Note that while we still are not writing encrypted items, + // and our key will not be used to encrypt items in this example, + // our configuration specifies that we may read encrypted items, + // and we should expect to be able to decrypt and process any encrypted items. + // To that end, we must fully define our encryption configuration in + // this step. + + // This `PlaintextOverrideForcePlaintextWriteAllowPlaintextRead` means: + // - Write: Items are forced to be written as plaintext. + // Items may not be written as encrypted items. + // - Read: Items are allowed to be read as plaintext. + // Items are allowed to be read as encrypted items. + listOfTableConfigs := configureTable(kmsKeyID, ddbTableName, dbesdkdynamodbencryptiontypes.PlaintextOverrideForcePlaintextWriteAllowPlaintextRead) + + // 2. Create DynamoDB client with dbEsdkMiddleware + dbEsdkMiddleware, err := dbesdkmiddleware.NewDBEsdkMiddleware(listOfTableConfigs) + utils.HandleError(err) + + ddb := dynamodb.NewFromConfig(cfg, dbEsdkMiddleware.CreateMiddleware()) + + // 3. Put an item into your table. + // This item will be stored in plaintext. + encryptedAndSignedValue := "this will be encrypted and signed" + signOnlyValue := "this will never be encrypted, but it will be signed" + doNothingValue := "this will never be encrypted nor signed" + item := map[string]types.AttributeValue{ + "partition_key": &types.AttributeValueMemberS{Value: partitionKeyValue}, + "sort_key": &types.AttributeValueMemberN{Value: sortKeyWriteValue}, + "attribute1": &types.AttributeValueMemberS{Value: encryptedAndSignedValue}, + "attribute2": &types.AttributeValueMemberS{Value: signOnlyValue}, + "attribute3": &types.AttributeValueMemberS{Value: doNothingValue}, + } + + putInput := dynamodb.PutItemInput{ + TableName: &ddbTableName, + Item: item, + } + + _, err = ddb.PutItem(context.TODO(), &putInput) + + // We return this error because we run test against the error. + // When used in production code, you can decide how you want to handle errors. + if err != nil { + return err + } + + // 4. Get an item back from the table using the DynamoDb Client. + // If this is an item written in plaintext (i.e. any item written + // during Step 0 or 1), then the item will still be in plaintext. + // If this is an item that was encrypted client-side (i.e. any item written + // during Step 2 or after), then the item will be decrypted client-side + // and surfaced as a plaintext item. + key := map[string]types.AttributeValue{ + "partition_key": &types.AttributeValueMemberS{Value: partitionKeyValue}, + "sort_key": &types.AttributeValueMemberN{Value: sortKeyReadValue}, + } + + getInput := &dynamodb.GetItemInput{ + TableName: &ddbTableName, + Key: key, + ConsistentRead: aws.Bool(true), + } + + result, err := ddb.GetItem(context.TODO(), getInput) + // We return this error because we run test against the error. + // When used in production code, you can decide how you want to handle errors. + if err != nil { + return err + } + + // Verify we got the expected item back + err = plaintexttoawsdbe.VerifyReturnedItem(result, partitionKeyValue, sortKeyReadValue, encryptedAndSignedValue, signOnlyValue, doNothingValue) + if err != nil { + return err + } + fmt.Println("MigrationStep1 completed successfully") + return nil +} diff --git a/releases/go/dynamodb-esdk/examples/migration/PlaintextToAWSDBE/awsdbe/step1_test.go b/releases/go/dynamodb-esdk/examples/migration/PlaintextToAWSDBE/awsdbe/step1_test.go new file mode 100644 index 000000000..43eaf7f86 --- /dev/null +++ b/releases/go/dynamodb-esdk/examples/migration/PlaintextToAWSDBE/awsdbe/step1_test.go @@ -0,0 +1,50 @@ +package awsdbe + +import ( + "testing" + + "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/examples/migration/PlaintextToAWSDBE/plaintext" + "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/examples/utils" + "github.com/google/uuid" +) + +func TestMigrationStep1(t *testing.T) { + kmsKeyID := utils.KmsKeyID() + tableName := utils.DdbTableName() + partitionKey := uuid.New().String() + sortKeys := []string{"0", "1", "2", "3"} + + // Successfully executes Step 1 + err := MigrationStep1(kmsKeyID, tableName, partitionKey, sortKeys[1], sortKeys[1]) + utils.HandleError(err) + + // Given: Step 0 has succeeded + err = plaintext.MigrationStep0(tableName, partitionKey, sortKeys[0], sortKeys[0]) + utils.HandleError(err) + + // When: Execute Step 1 with sortReadValue=0, Then: Success (i.e. can read plaintext values) + err = MigrationStep1(kmsKeyID, tableName, partitionKey, sortKeys[1], sortKeys[0]) + utils.HandleError(err) + + // Given: Step 2 has succeeded + err = MigrationStep2(kmsKeyID, tableName, partitionKey, sortKeys[2], sortKeys[2]) + utils.HandleError(err) + + // When: Execute Step 1 with sortReadValue=2, Then: Success (i.e. can read encrypted values) + err = MigrationStep1(kmsKeyID, tableName, partitionKey, sortKeys[1], sortKeys[2]) + utils.HandleError(err) + + // Given: Step 3 has succeeded + err = MigrationStep3(kmsKeyID, tableName, partitionKey, sortKeys[3], sortKeys[3]) + utils.HandleError(err) + + // When: Execute Step 1 with sortReadValue=3, Then: Success (i.e. can read encrypted values) + err = MigrationStep1(kmsKeyID, tableName, partitionKey, sortKeys[1], sortKeys[3]) + utils.HandleError(err) + + // Cleanup + for _, sortKey := range sortKeys { + utils.DeleteItem(tableName, "partition_key", partitionKey, "sort_key", sortKey) + } + +} diff --git a/releases/go/dynamodb-esdk/examples/migration/PlaintextToAWSDBE/awsdbe/step2.go b/releases/go/dynamodb-esdk/examples/migration/PlaintextToAWSDBE/awsdbe/step2.go new file mode 100644 index 000000000..1da1bcda3 --- /dev/null +++ b/releases/go/dynamodb-esdk/examples/migration/PlaintextToAWSDBE/awsdbe/step2.go @@ -0,0 +1,122 @@ +package awsdbe + +import ( + // Standard imports + "context" + "fmt" + + // AWS SDK imports + + "github.com/aws/aws-sdk-go-v2/aws" + "github.com/aws/aws-sdk-go-v2/config" + "github.com/aws/aws-sdk-go-v2/service/dynamodb" + "github.com/aws/aws-sdk-go-v2/service/dynamodb/types" + + dbesdkdynamodbencryptiontypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes" + "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/dbesdkmiddleware" + plaintexttoawsdbe "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/examples/migration/PlaintextToAWSDBE" + "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/examples/utils" +) + +/* +Migration Step 2: This is an example demonstrating how to update your configuration +to start writing encrypted items, but still continue to read any plaintext or +encrypted items. + +Once you deploy this change to your system, you will have a dataset +containing both encrypted and plaintext items. +Because the changes in Step 1 have been deployed to all our readers, +we can be sure that our entire system is ready to read this new data. + +Before you move onto the next step, you will need to encrypt all plaintext items in your dataset. +How you will want to do this depends on your system. + +Running this example requires access to the DDB Table whose name +is provided in the function parameter. +This table must be configured with the following +primary key configuration: + - Partition key is named "partition_key" with type (S) + - Sort key is named "sort_key" with type (S) +*/ +func MigrationStep2(kmsKeyID, ddbTableName, partitionKeyValue, sortKeyWriteValue, sortKeyReadValue string) error { + cfg, err := config.LoadDefaultConfig(context.TODO()) + utils.HandleError(err) + + // 1. Configure your Keyring, attribute actions, + // allowedUnsignedAttributes, and encryption configuration for table. + // This is common across all the steps. + + // When creating encryption configuration for your table, + // you must use the plaintext override `PlaintextOverrideForbidPlaintextWriteAllowPlaintextRead`. + // This plaintext override means: + // - Write: Items are forbidden to be written as plaintext. + // Items will be written as encrypted items. + // - Read: Items are allowed to be read as plaintext. + // Items are allowed to be read as encrypted items. + + listOfTableConfigs := configureTable(kmsKeyID, ddbTableName, dbesdkdynamodbencryptiontypes.PlaintextOverrideForbidPlaintextWriteAllowPlaintextRead) + + // 2. Create DynamoDB client with dbEsdkMiddleware + dbEsdkMiddleware, err := dbesdkmiddleware.NewDBEsdkMiddleware(listOfTableConfigs) + utils.HandleError(err) + + ddb := dynamodb.NewFromConfig(cfg, dbEsdkMiddleware.CreateMiddleware()) + + // 3. Put an item into your table. + // This item will be encrypted. + encryptedAndSignedValue := "this will be encrypted and signed" + signOnlyValue := "this will never be encrypted, but it will be signed" + doNothingValue := "this will never be encrypted nor signed" + item := map[string]types.AttributeValue{ + "partition_key": &types.AttributeValueMemberS{Value: partitionKeyValue}, + "sort_key": &types.AttributeValueMemberN{Value: sortKeyWriteValue}, + "attribute1": &types.AttributeValueMemberS{Value: encryptedAndSignedValue}, + "attribute2": &types.AttributeValueMemberS{Value: signOnlyValue}, + "attribute3": &types.AttributeValueMemberS{Value: doNothingValue}, + } + + putInput := dynamodb.PutItemInput{ + TableName: &ddbTableName, + Item: item, + } + + _, err = ddb.PutItem(context.TODO(), &putInput) + + // We return this error because we run test against the error. + // When used in production code, you can decide how you want to handle errors. + if err != nil { + return err + } + + // 4. Get an item back from the table. + // If this is an item written in plaintext (i.e. any item written + // during Step 0 or 1), then the item will still be in plaintext. + // If this is an item that was encrypted client-side (i.e. any item written + // during Step 2 or after), then the DDB client will decrypt the + // item client-side and surface it in our code as a plaintext item. + key := map[string]types.AttributeValue{ + "partition_key": &types.AttributeValueMemberS{Value: partitionKeyValue}, + "sort_key": &types.AttributeValueMemberN{Value: sortKeyReadValue}, + } + + getInput := &dynamodb.GetItemInput{ + TableName: &ddbTableName, + Key: key, + ConsistentRead: aws.Bool(true), + } + + result, err := ddb.GetItem(context.TODO(), getInput) + // We return this error because we run test against the error. + // When used in production code, you can decide how you want to handle errors. + if err != nil { + return err + } + + // Verify we got the expected item back + err = plaintexttoawsdbe.VerifyReturnedItem(result, partitionKeyValue, sortKeyReadValue, encryptedAndSignedValue, signOnlyValue, doNothingValue) + if err != nil { + return err + } + fmt.Println("MigrationStep2 completed successfully") + return nil +} diff --git a/releases/go/dynamodb-esdk/examples/migration/PlaintextToAWSDBE/awsdbe/step2_test.go b/releases/go/dynamodb-esdk/examples/migration/PlaintextToAWSDBE/awsdbe/step2_test.go new file mode 100644 index 000000000..e202cd6e8 --- /dev/null +++ b/releases/go/dynamodb-esdk/examples/migration/PlaintextToAWSDBE/awsdbe/step2_test.go @@ -0,0 +1,49 @@ +package awsdbe + +import ( + "testing" + + "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/examples/migration/PlaintextToAWSDBE/plaintext" + "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/examples/utils" + "github.com/google/uuid" +) + +func TestMigrationStep2(t *testing.T) { + kmsKeyID := utils.KmsKeyID() + tableName := utils.DdbTableName() + partitionKey := uuid.New().String() + sortKeys := []string{"0", "1", "2", "3"} + + // Successfully executes Step 2 + err := MigrationStep2(kmsKeyID, tableName, partitionKey, sortKeys[2], sortKeys[2]) + utils.HandleError(err) + + // Given: Step 0 has succeeded + err = plaintext.MigrationStep0(tableName, partitionKey, sortKeys[0], sortKeys[0]) + utils.HandleError(err) + + // When: Execute Step 2 with sortReadValue=0, Then: Success (i.e. can read plaintext values) + err = MigrationStep2(kmsKeyID, tableName, partitionKey, sortKeys[2], sortKeys[0]) + utils.HandleError(err) + + // Given: Step 1 has succeeded + err = MigrationStep1(kmsKeyID, tableName, partitionKey, sortKeys[1], sortKeys[1]) + utils.HandleError(err) + + // When: Execute Step 2 with sortReadValue=1, Then: Success (i.e. can read encrypted values) + err = MigrationStep2(kmsKeyID, tableName, partitionKey, sortKeys[2], sortKeys[1]) + utils.HandleError(err) + + // Given: Step 3 has succeeded + err = MigrationStep3(kmsKeyID, tableName, partitionKey, sortKeys[3], sortKeys[3]) + utils.HandleError(err) + + // When: Execute Step 2 with sortReadValue=3, Then: Success (i.e. can read encrypted values) + err = MigrationStep2(kmsKeyID, tableName, partitionKey, sortKeys[2], sortKeys[3]) + utils.HandleError(err) + + // Cleanup + for _, sortKey := range sortKeys { + utils.DeleteItem(tableName, "partition_key", partitionKey, "sort_key", sortKey) + } +} diff --git a/releases/go/dynamodb-esdk/examples/migration/PlaintextToAWSDBE/awsdbe/step3.go b/releases/go/dynamodb-esdk/examples/migration/PlaintextToAWSDBE/awsdbe/step3.go new file mode 100644 index 000000000..96304cdce --- /dev/null +++ b/releases/go/dynamodb-esdk/examples/migration/PlaintextToAWSDBE/awsdbe/step3.go @@ -0,0 +1,119 @@ +package awsdbe + +import ( + "context" + "fmt" + + "github.com/aws/aws-sdk-go-v2/aws" + "github.com/aws/aws-sdk-go-v2/config" + "github.com/aws/aws-sdk-go-v2/service/dynamodb" + "github.com/aws/aws-sdk-go-v2/service/dynamodb/types" + + dbesdkdynamodbencryptiontypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes" + "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/dbesdkmiddleware" + plaintexttoawsdbe "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/examples/migration/PlaintextToAWSDBE" + "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/examples/utils" +) + +/* +Migration Step 3: This is an example demonstrating how to update your configuration +to stop accepting reading plaintext items. + +Once you complete Step 3, all items being read by your system are encrypted. + +Before you move onto this step, you will need to encrypt all plaintext items in your dataset. +How you will want to do this depends on your system. + +Running this example requires access to the DDB Table whose name +is provided in the function parameter. +This table must be configured with the following +primary key configuration: + - Partition key is named "partition_key" with type (S) + - Sort key is named "sort_key" with type (S) +*/ +func MigrationStep3(kmsKeyID, ddbTableName, partitionKeyValue, sortKeyWriteValue, sortKeyReadValue string) error { + cfg, err := config.LoadDefaultConfig(context.TODO()) + utils.HandleError(err) + + // 1. Configure your Keyring, attribute actions, + // allowedUnsignedAttributes, and encryption configuration for table. + // This is common across all the steps. + + // When creating encryption configuration for your table, + // you can either not specify PlaintextOverride or use + // `PlaintextOverrideForbidPlaintextWriteForbidPlaintextRead` as PlaintextOverride. + // If you do not specify `PlaintextOverrideForbidPlaintextWriteForbidPlaintextRead` + // plaintext override defaults to `PlaintextOverrideForbidPlaintextWriteForbidPlaintextRead`, + // which is the desired behavior for a client interacting with a fully encrypted database. + // This plaintext override means: + // - Write: Items are forbidden to be written as plaintext. + // Items will be written as encrypted items. + // - Read: Items are forbidden to be read as plaintext. + // Items will be read as encrypted items. + + listOfTableConfigs := configureTable(kmsKeyID, ddbTableName, dbesdkdynamodbencryptiontypes.PlaintextOverrideForbidPlaintextWriteForbidPlaintextRead) + + // 2. Create DynamoDB client with dbEsdkMiddleware + dbEsdkMiddleware, err := dbesdkmiddleware.NewDBEsdkMiddleware(listOfTableConfigs) + utils.HandleError(err) + + ddb := dynamodb.NewFromConfig(cfg, dbEsdkMiddleware.CreateMiddleware()) + + // 3. Put an item into your table. + // This item will be encrypted. + encryptedAndSignedValue := "this will be encrypted and signed" + signOnlyValue := "this will never be encrypted, but it will be signed" + doNothingValue := "this will never be encrypted nor signed" + item := map[string]types.AttributeValue{ + "partition_key": &types.AttributeValueMemberS{Value: partitionKeyValue}, + "sort_key": &types.AttributeValueMemberN{Value: sortKeyWriteValue}, + "attribute1": &types.AttributeValueMemberS{Value: encryptedAndSignedValue}, + "attribute2": &types.AttributeValueMemberS{Value: signOnlyValue}, + "attribute3": &types.AttributeValueMemberS{Value: doNothingValue}, + } + + putInput := dynamodb.PutItemInput{ + TableName: &ddbTableName, + Item: item, + } + + _, err = ddb.PutItem(context.TODO(), &putInput) + // We return this error because we run test against the error. + // When used in production code, you can decide how you want to handle errors. + if err != nil { + return err + } + + // 4. Get an item back from the table using the DynamoDb Client. + // If this is an item written in plaintext (i.e. any item written + // during Step 0 or 1), then the read will fail, as we have + // configured our client to forbid reading plaintext items. + // If this is an item that was encrypted client-side (i.e. any item written + // during Step 2 or after), then the item will be decrypted client-side + // and surfaced as a plaintext item. + key := map[string]types.AttributeValue{ + "partition_key": &types.AttributeValueMemberS{Value: partitionKeyValue}, + "sort_key": &types.AttributeValueMemberN{Value: sortKeyReadValue}, + } + + getInput := &dynamodb.GetItemInput{ + TableName: &ddbTableName, + Key: key, + ConsistentRead: aws.Bool(true), + } + + result, err := ddb.GetItem(context.TODO(), getInput) + // We return this error because we run test against the error. + // When used in production code, you can decide how you want to handle errors. + if err != nil { + return err + } + + // Verify we got the expected item back + err = plaintexttoawsdbe.VerifyReturnedItem(result, partitionKeyValue, sortKeyReadValue, encryptedAndSignedValue, signOnlyValue, doNothingValue) + if err != nil { + return err + } + fmt.Println("MigrationStep3 completed successfully") + return nil +} diff --git a/releases/go/dynamodb-esdk/examples/migration/PlaintextToAWSDBE/awsdbe/step3_test.go b/releases/go/dynamodb-esdk/examples/migration/PlaintextToAWSDBE/awsdbe/step3_test.go new file mode 100644 index 000000000..276b23214 --- /dev/null +++ b/releases/go/dynamodb-esdk/examples/migration/PlaintextToAWSDBE/awsdbe/step3_test.go @@ -0,0 +1,49 @@ +package awsdbe + +import ( + "testing" + + "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/examples/migration/PlaintextToAWSDBE/plaintext" + "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/examples/utils" + "github.com/google/uuid" +) + +func TestMigrationStep3(t *testing.T) { + kmsKeyID := utils.KmsKeyID() + tableName := utils.DdbTableName() + partitionKey := uuid.New().String() + sortKeys := []string{"0", "1", "2", "3"} + + // Successfully executes Step 3 + err := MigrationStep3(kmsKeyID, tableName, partitionKey, sortKeys[3], sortKeys[3]) + utils.HandleError(err) + + // Given: Step 0 has succeeded + err = plaintext.MigrationStep0(tableName, partitionKey, sortKeys[0], sortKeys[0]) + utils.HandleError(err) + + // When: Execute Step 3 with sortReadValue=0, Then: should panic (cannot read plaintext values) + err = MigrationStep3(kmsKeyID, tableName, partitionKey, sortKeys[3], sortKeys[0]) + utils.AssertServiceError(err, "DynamoDB", "GetItem", "Encrypted item missing expected header and footer attributes") + + // Given: Step 1 has succeeded + err = MigrationStep1(kmsKeyID, tableName, partitionKey, sortKeys[1], sortKeys[1]) + utils.HandleError(err) + + // When: Execute Step 3 with sortReadValue=1, Then: should error out (cannot read plaintext values) + err = MigrationStep3(kmsKeyID, tableName, partitionKey, sortKeys[3], sortKeys[1]) + utils.AssertServiceError(err, "DynamoDB", "GetItem", "Encrypted item missing expected header and footer attributes") + + // Given: Step 2 has succeeded + err = MigrationStep2(kmsKeyID, tableName, partitionKey, sortKeys[2], sortKeys[2]) + utils.HandleError(err) + + // When: Execute Step 3 with sortReadValue=2, Then: Success (can read encrypted values) + err = MigrationStep3(kmsKeyID, tableName, partitionKey, sortKeys[3], sortKeys[2]) + utils.HandleError(err) + + // Cleanup + for _, sortKey := range sortKeys { + utils.DeleteItem(tableName, "partition_key", partitionKey, "sort_key", sortKey) + } +} diff --git a/releases/go/dynamodb-esdk/examples/migration/PlaintextToAWSDBE/migrationutils.go b/releases/go/dynamodb-esdk/examples/migration/PlaintextToAWSDBE/migrationutils.go new file mode 100644 index 000000000..c060048f4 --- /dev/null +++ b/releases/go/dynamodb-esdk/examples/migration/PlaintextToAWSDBE/migrationutils.go @@ -0,0 +1,58 @@ +package plaintexttoawsdbe + +import ( + "fmt" + + "github.com/aws/aws-sdk-go-v2/service/dynamodb" + "github.com/aws/aws-sdk-go-v2/service/dynamodb/types" +) + +func VerifyReturnedItem(result *dynamodb.GetItemOutput, partitionKeyValue, sortKeyValue, encryptedAndSignedValue, signOnlyValue, doNothingValue string) error { + returnedPartitionKey, ok := result.Item["partition_key"].(*types.AttributeValueMemberS) + if !ok { + // We return this error because we run test against the error. + // When used in production code, you can decide how you want to handle errors. + return fmt.Errorf("partition_key is not a string attribute") + } + returnedsortKey, ok := result.Item["sort_key"].(*types.AttributeValueMemberN) + if !ok { + // We return this error because we run test against the error. + // When used in production code, you can decide how you want to handle errors. + return fmt.Errorf("sort_key is not a number attribute") + } + returnedAttribute1, ok := result.Item["attribute1"].(*types.AttributeValueMemberS) + if !ok { + // We return this error because we run test against the error. + // When used in production code, you can decide how you want to handle errors. + return fmt.Errorf("attribute1 is not a string attribute") + } + returnedAttribute2, ok := result.Item["attribute2"].(*types.AttributeValueMemberS) + if !ok { + // We return this error because we run test against the error. + // When used in production code, you can decide how you want to handle errors. + return fmt.Errorf("attribute2 is not a string attribute") + } + returnedAttribute3, ok := result.Item["attribute3"].(*types.AttributeValueMemberS) + if !ok { + // We return this error because we run test against the error. + // When used in production code, you can decide how you want to handle errors. + return fmt.Errorf("attribute3 is not a string attribute") + } + + if returnedPartitionKey.Value != partitionKeyValue { + panic(fmt.Sprintf("Expected partition key %s, got %s", partitionKeyValue, returnedPartitionKey)) + } + if returnedsortKey.Value != sortKeyValue { + panic(fmt.Sprintf("Expected partition key %s, got %s", sortKeyValue, returnedsortKey)) + } + if returnedAttribute1.Value != encryptedAndSignedValue { + panic(fmt.Sprintf("Expected attribute1 value %s, got %s", encryptedAndSignedValue, returnedAttribute1.Value)) + } + if returnedAttribute2.Value != signOnlyValue { + panic(fmt.Sprintf("Expected attribute2 value %s, got %s", signOnlyValue, returnedAttribute2.Value)) + } + if returnedAttribute3.Value != doNothingValue { + panic(fmt.Sprintf("Expected attribute3 value %s, got %s", doNothingValue, returnedAttribute3.Value)) + } + return nil +} diff --git a/releases/go/dynamodb-esdk/examples/migration/PlaintextToAWSDBE/plaintext/step0.go b/releases/go/dynamodb-esdk/examples/migration/PlaintextToAWSDBE/plaintext/step0.go new file mode 100644 index 000000000..b2b57410c --- /dev/null +++ b/releases/go/dynamodb-esdk/examples/migration/PlaintextToAWSDBE/plaintext/step0.go @@ -0,0 +1,93 @@ +package plaintext + +import ( + "context" + "fmt" + + plaintexttoawsdbe "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/examples/migration/PlaintextToAWSDBE" + "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/examples/utils" + "github.com/aws/aws-sdk-go-v2/config" + "github.com/aws/aws-sdk-go-v2/service/dynamodb" + "github.com/aws/aws-sdk-go-v2/service/dynamodb/types" +) + +/* +Migration Step 0: This is the pre-migration step for the +plaintext-to-encrypted database migration, and is the starting +state for our migration from a plaintext database to a +client-side encrypted database encrypted using the +AWS Database Encryption SDK for DynamoDb. + +In this example, we configure a DynamoDbClient to +write a plaintext record to a table and read that record. +This emulates the starting state of a plaintext-to-encrypted +database migration; i.e. a plaintext database you can +read and write to with the DynamoDbClient. + +Running this example requires access to the DDB Table whose name +is provided in the function parameter. +This table must be configured with the following +primary key configuration: + - Partition key is named "partition_key" with type (S) + - Sort key is named "sort_key" with type (S) +*/ +func MigrationStep0(ddbTableName, partitionKeyValue, sortKeyWriteValue, sortKeyReadValue string) error { + // 1. Create a standard DynamoDB client + cfg, err := config.LoadDefaultConfig(context.TODO()) + utils.HandleError(err) + ddb := dynamodb.NewFromConfig(cfg) + + // 2. Put an example item into DynamoDB table + // This item will be stored in plaintext. + encryptedAndSignedValue := "this will be encrypted and signed" + signOnlyValue := "this will never be encrypted, but it will be signed" + doNothingValue := "this will never be encrypted nor signed" + item := map[string]types.AttributeValue{ + "partition_key": &types.AttributeValueMemberS{Value: partitionKeyValue}, + "sort_key": &types.AttributeValueMemberN{Value: sortKeyWriteValue}, + "attribute1": &types.AttributeValueMemberS{Value: encryptedAndSignedValue}, + "attribute2": &types.AttributeValueMemberS{Value: signOnlyValue}, + "attribute3": &types.AttributeValueMemberS{Value: doNothingValue}, + } + + putInput := &dynamodb.PutItemInput{ + TableName: &ddbTableName, + Item: item, + } + _, err = ddb.PutItem(context.TODO(), putInput) + utils.HandleError(err) + + // 3. Get an item back from the table as it was written. + // If this is an item written in plaintext (i.e. any item written + // during Step 0 or 1), then the item will still be in plaintext + // and will be able to be processed. + // If this is an item that was encrypted client-side (i.e. any item written + // during Step 2 or after), then the item will still be encrypted client-side + // and will be unable to be processed in your code. To decrypt and process + // client-side encrypted items, you will need to configure encrypted reads on + // your dynamodb client (this is configured from Step 1 onwards). + key := map[string]types.AttributeValue{ + "partition_key": &types.AttributeValueMemberS{Value: partitionKeyValue}, + "sort_key": &types.AttributeValueMemberN{Value: sortKeyReadValue}, + } + + getInput := &dynamodb.GetItemInput{ + TableName: &ddbTableName, + Key: key, + } + result, err := ddb.GetItem(context.TODO(), getInput) + utils.HandleError(err) + + // 4. Verify we get the expected item back + if result.Item == nil { + panic("No item found") + } + + err = plaintexttoawsdbe.VerifyReturnedItem(result, partitionKeyValue, sortKeyReadValue, encryptedAndSignedValue, signOnlyValue, doNothingValue) + if err != nil { + return err + } + + fmt.Println("MigrationStep0 completed successfully") + return nil +} diff --git a/releases/go/dynamodb-esdk/examples/migration/PlaintextToAWSDBE/plaintext/step0_test.go b/releases/go/dynamodb-esdk/examples/migration/PlaintextToAWSDBE/plaintext/step0_test.go new file mode 100644 index 000000000..b54382a81 --- /dev/null +++ b/releases/go/dynamodb-esdk/examples/migration/PlaintextToAWSDBE/plaintext/step0_test.go @@ -0,0 +1,47 @@ +package plaintext + +import ( + "testing" + + "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/examples/migration/PlaintextToAWSDBE/awsdbe" + "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/examples/utils" + "github.com/google/uuid" +) + +func TestMigrationStep0(t *testing.T) { + kmsKeyID := utils.KmsKeyID() + tableName := utils.DdbTableName() + partitionKey := uuid.New().String() + sortKeys := []string{"0", "1", "2", "3"} + + // Successfully executes step 0 + err := MigrationStep0(tableName, partitionKey, sortKeys[0], sortKeys[0]) + utils.HandleError(err) + + // Given: Step 1 has succeeded + err = awsdbe.MigrationStep1(kmsKeyID, tableName, partitionKey, sortKeys[1], sortKeys[1]) + utils.HandleError(err) + + // When: Execute Step 0 with sortReadValue=1, Then: Success (i.e. can read plaintext values) + err = MigrationStep0(tableName, partitionKey, sortKeys[0], sortKeys[1]) + utils.HandleError(err) + + // Given: Step 2 has succeeded + err = awsdbe.MigrationStep2(kmsKeyID, tableName, partitionKey, sortKeys[2], sortKeys[2]) + utils.HandleError(err) + + // When: Execute Step 0 with sortReadValue=2, Then: should error out when reading encrypted items. + err = MigrationStep0(tableName, partitionKey, sortKeys[0], sortKeys[2]) + utils.AssertErrorMessage(err, "attribute1 is not a string attribute") + + // Given: Step 3 has succeeded (if it exists) + awsdbe.MigrationStep3(kmsKeyID, tableName, partitionKey, sortKeys[3], sortKeys[3]) + // When: Execute Step 0 with sortReadValue=3, Then: should error out + err = MigrationStep0(tableName, partitionKey, sortKeys[0], sortKeys[3]) + utils.AssertErrorMessage(err, "attribute1 is not a string attribute") + + // Cleanup + for _, sortKey := range sortKeys { // Only clean up items we created + utils.DeleteItem(tableName, "partition_key", partitionKey, "sort_key", sortKey) + } +} diff --git a/releases/go/dynamodb-esdk/examples/misc/basicputgetexample.go b/releases/go/dynamodb-esdk/examples/misc/basicputgetexample.go new file mode 100644 index 000000000..4b3ab8166 --- /dev/null +++ b/releases/go/dynamodb-esdk/examples/misc/basicputgetexample.go @@ -0,0 +1,145 @@ +package misc + +import ( + "context" + "fmt" + "reflect" + + mpl "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/awscryptographymaterialproviderssmithygenerated" + mpltypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/awscryptographymaterialproviderssmithygeneratedtypes" + dbesdkdynamodbencryptiontypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes" + dbesdkstructuredencryptiontypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes" + "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/dbesdkmiddleware" + "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/examples/utils" + "github.com/aws/aws-sdk-go-v2/aws" + "github.com/aws/aws-sdk-go-v2/config" + "github.com/aws/aws-sdk-go-v2/service/dynamodb" + "github.com/aws/aws-sdk-go-v2/service/dynamodb/types" +) + +func BasicPutGetExample(kmsKeyID, ddbTableName string) { + // 1. Create a Keyring. This Keyring will be responsible for protecting the data keys that protect your data. + // For this example, we will create a AWS KMS Keyring with the AWS KMS Key we want to use. + // We will use the `CreateMrkMultiKeyring` method to create this keyring, + // as it will correctly handle both single region and Multi-Region KMS Keys. + + matProv, err := mpl.NewClient(mpltypes.MaterialProvidersConfig{}) + utils.HandleError(err) + awsKmsMrkKeyringMultiInput := mpltypes.CreateAwsKmsMrkMultiKeyringInput{ + Generator: &kmsKeyID, + } + keyring, err := matProv.CreateAwsKmsMrkMultiKeyring(context.Background(), awsKmsMrkKeyringMultiInput) + if err != nil { + panic(err) + } + // 2. Configure which attributes are encrypted and/or signed when writing new items. + // For each attribute that may exist on the items we plan to write to our DynamoDbTable, + // we must explicitly configure how they should be treated during item encryption: + // - ENCRYPT_AND_SIGN: The attribute is encrypted and included in the signature + // - SIGN_ONLY: The attribute not encrypted, but is still included in the signature + // - DO_NOTHING: The attribute is not encrypted and not included in the signature + attributeActions := map[string]dbesdkstructuredencryptiontypes.CryptoAction{ + "partition_key": dbesdkstructuredencryptiontypes.CryptoActionSignOnly, // Partition key must be SIGN_ONLY + "sort_key": dbesdkstructuredencryptiontypes.CryptoActionSignOnly, // Sort key must be SIGN_ONLY + "attribute1": dbesdkstructuredencryptiontypes.CryptoActionEncryptAndSign, + "attribute2": dbesdkstructuredencryptiontypes.CryptoActionSignOnly, + ":attribute3": dbesdkstructuredencryptiontypes.CryptoActionDoNothing, + } + + // 3. Configure which attributes we expect to be included in the signature + // when reading items. There are two options for configuring this: + // + // - (Recommended) Configure `allowedUnsignedAttributesPrefix`: + // When defining your DynamoDb schema and deciding on attribute names, + // choose a distinguishing prefix (such as ":") for all attributes that + // you do not want to include in the signature. + // This has two main benefits: + // - It is easier to reason about the security and authenticity of data within your item + // when all unauthenticated data is easily distinguishable by their attribute name. + // - If you need to add new unauthenticated attributes in the future, + // you can easily make the corresponding update to your `attributeActionsOnEncrypt` + // and immediately start writing to that new attribute, without + // any other configuration update needed. + // Once you configure this field, it is not safe to update it. + // + // - Configure `allowedUnsignedAttributes`: You may also explicitly list + // a set of attributes that should be considered unauthenticated when encountered + // on read. Be careful if you use this configuration. Do not remove an attribute + // name from this configuration, even if you are no longer writing with that attribute, + // as old items may still include this attribute, and our configuration needs to know + // to continue to exclude this attribute from the signature scope. + // If you add new attribute names to this field, you must first deploy the update to this + // field to all readers in your host fleet before deploying the update to start writing + // with that new attribute. + // + // For this example, we have designed our DynamoDb table such that any attribute name with + // the ":" prefix should be considered unauthenticated. + allowedUnsignedAttributePrefix := ":" + + // 4. Create the DynamoDb Encryption configuration for the table we will be writing to. + partitionKey := "partition_key" + sortKeyName := "sort_key" + algorithmSuiteID := mpltypes.DBEAlgorithmSuiteIdAlgAes256GcmHkdfSha512CommitKeyEcdsaP384SymsigHmacSha384 + tableConfig := dbesdkdynamodbencryptiontypes.DynamoDbTableEncryptionConfig{ + LogicalTableName: ddbTableName, + PartitionKeyName: partitionKey, + SortKeyName: &sortKeyName, + AttributeActionsOnEncrypt: attributeActions, + Keyring: keyring, + AllowedUnsignedAttributePrefix: &allowedUnsignedAttributePrefix, + AlgorithmSuiteId: &algorithmSuiteID, + } + tableConfigsMap := make(map[string]dbesdkdynamodbencryptiontypes.DynamoDbTableEncryptionConfig) + tableConfigsMap[ddbTableName] = tableConfig + listOfTableConfigs := dbesdkdynamodbencryptiontypes.DynamoDbTablesEncryptionConfig{ + TableEncryptionConfigs: tableConfigsMap, + } + // 5. Create a new AWS SDK DynamoDb client using the DynamoDb Encryption Interceptor + dbEsdkMiddleware, err := dbesdkmiddleware.NewDBEsdkMiddleware(listOfTableConfigs) + utils.HandleError(err) + cfg, err := config.LoadDefaultConfig(context.TODO()) + utils.HandleError(err) + ddb := dynamodb.NewFromConfig(cfg, dbEsdkMiddleware.CreateMiddleware()) + + // 6. Put an item into our table using the above client. + // Before the item gets sent to DynamoDb, it will be encrypted + // client-side, according to our configuration. + item := map[string]types.AttributeValue{ + "partition_key": &types.AttributeValueMemberS{Value: "BasicPutGetExample"}, + "sort_key": &types.AttributeValueMemberN{Value: "0"}, + "attribute1": &types.AttributeValueMemberS{Value: "encrypt and sign me!"}, + "attribute2": &types.AttributeValueMemberS{Value: "sign me!"}, + ":attribute3": &types.AttributeValueMemberS{Value: "ignore me!"}, + } + putInput := &dynamodb.PutItemInput{ + TableName: aws.String(ddbTableName), + Item: item, + } + _, err = ddb.PutItem(context.TODO(), putInput) + utils.HandleError(err) + + // 7. Get the item back from our table using the same client. + // The client will decrypt the item client-side, and return + // back the original item. + key := map[string]types.AttributeValue{ + "partition_key": &types.AttributeValueMemberS{Value: "BasicPutGetExample"}, + "sort_key": &types.AttributeValueMemberN{Value: "0"}, + } + getInput := &dynamodb.GetItemInput{ + TableName: aws.String(ddbTableName), + Key: key, + // In this example we configure a strongly consistent read + // because we perform a read immediately after a write (for demonstrative purposes). + // By default, reads are only eventually consistent. + // Read our docs to determine which read consistency to use for your application: + // https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.ReadConsistency.html + ConsistentRead: aws.Bool(true), + } + result, err := ddb.GetItem(context.TODO(), getInput) + utils.HandleError(err) + // Verify the decrypted item + if !reflect.DeepEqual(item, result.Item) { + panic("Decrypted item does not match original item") + } + fmt.Println("BasicPutGetExample successful.") +} diff --git a/releases/go/dynamodb-esdk/examples/misc/createBranchKeyID.go b/releases/go/dynamodb-esdk/examples/misc/createBranchKeyID.go new file mode 100644 index 000000000..d28b10391 --- /dev/null +++ b/releases/go/dynamodb-esdk/examples/misc/createBranchKeyID.go @@ -0,0 +1,63 @@ +// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +package misc + +import ( + "context" + + keystore "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/awscryptographykeystoresmithygenerated" + keystoretypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/awscryptographykeystoresmithygeneratedtypes" + "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/examples/utils" + "github.com/aws/aws-sdk-go-v2/config" + "github.com/aws/aws-sdk-go-v2/service/dynamodb" + "github.com/aws/aws-sdk-go-v2/service/kms" +) + +/* + The Hierarchical Keyring Example and Searchable Encryption Examples + rely on the existence of a DDB-backed key store with pre-existing + branch key material or beacon key material. + + See the "Create KeyStore Table Example" for how to first set up + the DDB Table that will back this KeyStore. + + This example demonstrates configuring a KeyStore and then + using a helper method to create a branch key and beacon key + that share the same Id, then return that Id. + We will always create a new beacon key alongside a new branch key, + even if you are not using searchable encryption. + + This key creation should occur within your control plane. +*/ + +func CreateBranchKeyIDExample( + keyStoreTableName, + logicalKeyStoreName, + kmsKeyArn string) string { + cfg, err := config.LoadDefaultConfig(context.TODO()) + utils.HandleError(err) + ddbClient := dynamodb.NewFromConfig(cfg) + kmsClient := kms.NewFromConfig(cfg) + // 1. Configure your KeyStore resource. + // This SHOULD be the same configuration that was used to create the DDB table + // in the "Create KeyStore Table Example". + kmsConfig := keystoretypes.KMSConfigurationMemberkmsKeyArn{ + Value: kmsKeyArn, + } + keyStore, err := keystore.NewClient(keystoretypes.KeyStoreConfig{ + DdbTableName: keyStoreTableName, + KmsConfiguration: &kmsConfig, + LogicalKeyStoreName: logicalKeyStoreName, + DdbClient: ddbClient, + KmsClient: kmsClient, + }) + utils.HandleError(err) + // 2. Create a new branch key and beacon key in our KeyStore. + // Both the branch key and the beacon key will share an Id. + // This creation is eventually consistent. + branchKey, err := keyStore.CreateKey(context.Background(), keystoretypes.CreateKeyInput{}) + utils.HandleError(err) + + return branchKey.BranchKeyIdentifier +} diff --git a/releases/go/dynamodb-esdk/examples/misc/getEncryptedDataKeyDescription.go b/releases/go/dynamodb-esdk/examples/misc/getEncryptedDataKeyDescription.go new file mode 100644 index 000000000..a933d29ce --- /dev/null +++ b/releases/go/dynamodb-esdk/examples/misc/getEncryptedDataKeyDescription.go @@ -0,0 +1,75 @@ +// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 +package misc + +import ( + "context" + "fmt" + + dbesdkdynamodbencryption "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkdynamodbsmithygenerated" + dbesdkdynamodbencryptiontypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes" + "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/examples/utils" + "github.com/aws/aws-sdk-go-v2/aws" + "github.com/aws/aws-sdk-go-v2/config" + "github.com/aws/aws-sdk-go-v2/service/dynamodb" + "github.com/aws/aws-sdk-go-v2/service/dynamodb/types" +) + +func GetEncryptedDataKeyDescriptionExample(kmsKeyID, ddbTableName string) { + cfg, err := config.LoadDefaultConfig(context.TODO()) + utils.HandleError(err) + ddbec, err := dbesdkdynamodbencryption.NewClient(dbesdkdynamodbencryptiontypes.DynamoDbEncryptionConfig{}) + utils.HandleError(err) + // 1. Define keys that will be used to retrieve item from the DynamoDB table. + keyToGet := map[string]types.AttributeValue{ + "partition_key": &types.AttributeValueMemberS{Value: "BasicPutGetExample"}, + "sort_key": &types.AttributeValueMemberN{Value: "0"}, + } + + // 2. Create a Amazon DynamoDB Client and retrieve item from DynamoDB table + ddb := dynamodb.NewFromConfig(cfg) + + // 3. Extract the item from the dynamoDB table and prepare input for the GetEncryptedDataKeyDescription method. + // Here, we are sending dynamodb item but you can also input the header itself by extracting the header from + // "aws_dbe_head" attribute in the dynamoDB item. The part of the code where we send input as the header is commented. + getInput := &dynamodb.GetItemInput{ + TableName: aws.String(ddbTableName), + Key: keyToGet, + // In this example we configure a strongly consistent read + // because we perform a read immediately after a write (for demonstrative purposes). + // By default, reads are only eventually consistent. + // Read our docs to determine which read consistency to use for your application: + // https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.ReadConsistency.html + ConsistentRead: aws.Bool(true), + } + returnedItem, err := ddb.GetItem(context.TODO(), getInput) + utils.HandleError(err) + inputUnion := dbesdkdynamodbencryptiontypes.GetEncryptedDataKeyDescriptionUnionMemberitem{ + Value: returnedItem.Item, + } + + // The code below shows how we can send header as the input to the DynamoDB. This code is written to demo the + // alternative approach. So, it is commented. + // headerAttribute := "aws_dbe_head" + // headerBytes, ok := returnedItem.Item[headerAttribute].(*types.AttributeValueMemberB) + // if !ok { + // panic("attribute1 is not binary. It might not be encrypted.") + // } + // inputUnion := dbesdkdynamodbencryptiontypes.GetEncryptedDataKeyDescriptionUnionMemberheader{ + // Value: headerBytes.Value, + // } + + encryptedDataKeyDescriptionInput := dbesdkdynamodbencryptiontypes.GetEncryptedDataKeyDescriptionInput{ + Input: &inputUnion, + } + encryptedDataKeyDescription, err := ddbec.GetEncryptedDataKeyDescription(context.TODO(), encryptedDataKeyDescriptionInput) + utils.HandleError(err) + + if encryptedDataKeyDescription.EncryptedDataKeyDescriptionOutput[0].KeyProviderId != "aws-kms" { + panic("Key provider should have been aws-kms") + } + if *encryptedDataKeyDescription.EncryptedDataKeyDescriptionOutput[0].KeyProviderInfo != kmsKeyID { + panic("Key provider info should have been " + kmsKeyID) + } + fmt.Println("Get encrypted data Key description example successful.") +} diff --git a/releases/go/dynamodb-esdk/examples/misc/multiPutGet.go b/releases/go/dynamodb-esdk/examples/misc/multiPutGet.go new file mode 100644 index 000000000..78b94a6c4 --- /dev/null +++ b/releases/go/dynamodb-esdk/examples/misc/multiPutGet.go @@ -0,0 +1,196 @@ +// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +package misc + +import ( + "context" + "fmt" + "reflect" + + mpl "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/awscryptographymaterialproviderssmithygenerated" + mpltypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/awscryptographymaterialproviderssmithygeneratedtypes" + dbesdkdynamodbencryptiontypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes" + dbesdkstructuredencryptiontypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes" + "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/dbesdkmiddleware" + "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/examples/utils" + + "github.com/aws/aws-sdk-go-v2/aws" + "github.com/aws/aws-sdk-go-v2/config" + "github.com/aws/aws-sdk-go-v2/service/dynamodb" + "github.com/aws/aws-sdk-go-v2/service/dynamodb/types" +) + +/* +This example sets up DynamoDb Encryption for the AWS SDK client +and uses the low level PutItem and GetItem DDB APIs to demonstrate +putting a client-side encrypted item into DynamoDb +and then retrieving and decrypting that item from DynamoDb. + +Running this example requires access to the DDB Table whose name +is provided in CLI arguments. +This table must be configured with the following +primary key configuration: + - Partition key is named "partition_key" with type (S) + - Sort key is named "sort_key" with type (N) +*/ +func MultiPutGetExample(kmsKeyID, ddbTableName string) { + cfg, err := config.LoadDefaultConfig(context.TODO()) + utils.HandleError(err) + // Initialize the mpl client + matProv, err := mpl.NewClient(mpltypes.MaterialProvidersConfig{}) + utils.HandleError(err) + // 1. Create a Keyring. This Keyring will be responsible for protecting the data keys that protect your data. + // For this example, we will create a AWS KMS Keyring with the AWS KMS Key we want to use. + // We will use the `CreateAwsKmsMultiKeyring` method to create this keyring, + // as it will correctly handle both single region and Multi-Region KMS Keys. + generatorKeyID := kmsKeyID + awsKmsMultiKeyringInput := mpltypes.CreateAwsKmsMultiKeyringInput{ + Generator: &generatorKeyID, + } + keyring, err := matProv.CreateAwsKmsMultiKeyring(context.Background(), awsKmsMultiKeyringInput) + utils.HandleError(err) + + // 2. Configure which attributes are encrypted and/or signed when writing new items. + // For each attribute that may exist on the items we plan to write to our DynamoDbTable, + // we must explicitly configure how they should be treated during item encryption: + // - ENCRYPT_AND_SIGN: The attribute is encrypted and included in the signature + // - SIGN_ONLY: The attribute not encrypted, but is still included in the signature + // - DO_NOTHING: The attribute is not encrypted and not included in the signature + attributeActions := map[string]dbesdkstructuredencryptiontypes.CryptoAction{ + "partition_key": dbesdkstructuredencryptiontypes.CryptoActionSignOnly, // Partition key must be SIGN_ONLY + "sort_key": dbesdkstructuredencryptiontypes.CryptoActionSignOnly, // Sort key must be SIGN_ONLY + "attribute1": dbesdkstructuredencryptiontypes.CryptoActionEncryptAndSign, + "attribute2": dbesdkstructuredencryptiontypes.CryptoActionSignOnly, + ":attribute3": dbesdkstructuredencryptiontypes.CryptoActionDoNothing, + } + + // 3. Configure which attributes we expect to be included in the signature + // when reading items. There are two options for configuring this: + // + // - (Recommended) Configure `allowedUnsignedAttributesPrefix`: + // When defining your DynamoDb schema and deciding on attribute names, + // choose a distinguishing prefix (such as ":") for all attributes that + // you do not want to include in the signature. + // This has two main benefits: + // - It is easier to reason about the security and authenticity of data within your item + // when all unauthenticated data is easily distinguishable by their attribute name. + // - If you need to add new unauthenticated attributes in the future, + // you can easily make the corresponding update to your `attributeActionsOnEncrypt` + // and immediately start writing to that new attribute, without + // any other configuration update needed. + // Once you configure this field, it is not safe to update it. + // + // - Configure `allowedUnsignedAttributes`: You may also explicitly list + // a set of attributes that should be considered unauthenticated when encountered + // on read. Be careful if you use this configuration. Do not remove an attribute + // name from this configuration, even if you are no longer writing with that attribute, + // as old items may still include this attribute, and our configuration needs to know + // to continue to exclude this attribute from the signature scope. + // If you add new attribute names to this field, you must first deploy the update to this + // field to all readers in your host fleet before deploying the update to start writing + // with that new attribute. + // + // For this example, we have designed our DynamoDb table such that any attribute name with + // the ":" prefix should be considered unauthenticated. + allowedUnsignedAttributePrefix := ":" + + // 4. Create the DynamoDb Encryption configuration for the table we will be writing to. + partitionKey := "partition_key" + sortKeyName := "sort_key" + algorithmSuiteID := mpltypes.DBEAlgorithmSuiteIdAlgAes256GcmHkdfSha512CommitKeyEcdsaP384SymsigHmacSha384 + tableConfig := dbesdkdynamodbencryptiontypes.DynamoDbTableEncryptionConfig{ + LogicalTableName: ddbTableName, + PartitionKeyName: partitionKey, + SortKeyName: &sortKeyName, + AttributeActionsOnEncrypt: attributeActions, + Keyring: keyring, + AllowedUnsignedAttributePrefix: &allowedUnsignedAttributePrefix, + // Specifying an algorithm suite is not required, + // but is done here to demonstrate how to do so. + // We suggest using the + // `ALG_AES_256_GCM_HKDF_SHA512_COMMIT_KEY_ECDSA_P384_SYMSIG_HMAC_SHA384` suite, + // which includes AES-GCM with key derivation, signing, and key commitment. + // This is also the default algorithm suite if one is not specified in this config. + // For more information on supported algorithm suites, see: + // https://docs.aws.amazon.com/database-encryption-sdk/latest/devguide/supported-algorithms.html + AlgorithmSuiteId: &algorithmSuiteID, + } + tableConfigsMap := make(map[string]dbesdkdynamodbencryptiontypes.DynamoDbTableEncryptionConfig) + tableConfigsMap[ddbTableName] = tableConfig + listOfTableConfigs := dbesdkdynamodbencryptiontypes.DynamoDbTablesEncryptionConfig{ + TableEncryptionConfigs: tableConfigsMap, + } + // 5. Create a new AWS SDK DynamoDb client using the TableEncryptionConfigs + dbEsdkMiddleware, err := dbesdkmiddleware.NewDBEsdkMiddleware(listOfTableConfigs) + utils.HandleError(err) + ddb := dynamodb.NewFromConfig(cfg, dbEsdkMiddleware.CreateMiddleware()) + + // 6. Put an item into our table using the above client. + // Before the item gets sent to DynamoDb, it will be encrypted + // client-side, according to our configuration. + item := map[string]types.AttributeValue{ + "partition_key": &types.AttributeValueMemberS{Value: "WriteItemExample"}, + "sort_key": &types.AttributeValueMemberN{Value: "0"}, + "attribute1": &types.AttributeValueMemberS{Value: "encrypt and sign me!"}, + "attribute2": &types.AttributeValueMemberS{Value: "sign me!"}, + ":attribute3": &types.AttributeValueMemberS{Value: "ignore me!"}, + } + putbatchWriteItemInput := &dynamodb.PutItemInput{ + TableName: aws.String(ddbTableName), + Item: item, + } + _, err = ddb.PutItem(context.TODO(), putbatchWriteItemInput) + utils.HandleError(err) + + transactWriteItemsInput := &dynamodb.TransactWriteItemsInput{ + TransactItems: []types.TransactWriteItem{ + { + Put: &types.Put{ + TableName: aws.String(ddbTableName), + Item: item, + }, + }, + }, + } + _, err = ddb.TransactWriteItems(context.TODO(), transactWriteItemsInput) + utils.HandleError(err) + + // 7. Get the item back from our table using the same client. + // The client will decrypt the item client-side, and return + // back the original item. + key := map[string]types.AttributeValue{ + "partition_key": &types.AttributeValueMemberS{Value: "WriteItemExample"}, + "sort_key": &types.AttributeValueMemberN{Value: "0"}, + } + getInput := &dynamodb.GetItemInput{ + TableName: aws.String(ddbTableName), + Key: key, + // In this example we configure a strongly consistent read + // because we perform a read immediately after a write (for demonstrative purposes). + // By default, reads are only eventually consistent. + // Read our docs to determine which read consistency to use for your application: + // https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.ReadConsistency.html + ConsistentRead: aws.Bool(true), + } + result, err := ddb.GetItem(context.TODO(), getInput) + utils.HandleError(err) + // Verify the decrypted item + if !reflect.DeepEqual(item, result.Item) { + panic("Decrypted item does not match original item") + } + + transactGetItemsInput := &dynamodb.TransactGetItemsInput{ + TransactItems: []types.TransactGetItem{ + { + Get: &types.Get{ + Key: key, + TableName: aws.String(ddbTableName), + }, + }, + }, + } + _, err = ddb.TransactGetItems(context.TODO(), transactGetItemsInput) + utils.HandleError(err) + fmt.Println("MultiPutGetExample successful") +} diff --git a/releases/go/dynamodb-esdk/examples/searchableencryption/basicsearchableencryptionexample.go b/releases/go/dynamodb-esdk/examples/searchableencryption/basicsearchableencryptionexample.go new file mode 100644 index 000000000..35805ab52 --- /dev/null +++ b/releases/go/dynamodb-esdk/examples/searchableencryption/basicsearchableencryptionexample.go @@ -0,0 +1,367 @@ +// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +package searchableencryption + +import ( + "context" + "fmt" + "time" + + keystoreclient "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/awscryptographykeystoresmithygenerated" + keystoretypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/awscryptographykeystoresmithygeneratedtypes" + mpl "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/awscryptographymaterialproviderssmithygenerated" + mpltypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/awscryptographymaterialproviderssmithygeneratedtypes" + dbesdkdynamodbencryptiontypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes" + dbesdkstructuredencryptiontypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes" + "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/dbesdkmiddleware" + "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/examples/utils" + + "github.com/aws/aws-sdk-go-v2/aws" + "github.com/aws/aws-sdk-go-v2/config" + "github.com/aws/aws-sdk-go-v2/service/dynamodb" + "github.com/aws/aws-sdk-go-v2/service/dynamodb/types" + "github.com/aws/aws-sdk-go-v2/service/kms" +) + +/* +This example demonstrates how to set up a beacon on an encrypted attribute, +put an item with the beacon, and query against that beacon. +This example follows a use case of a database that stores unit inspection information. + +Running this example requires access to a DDB table with the +following key configuration: + - Partition key is named "work_id" with type (S) + - Sort key is named "inspection_date" with type (S) + +This table must have a Global Secondary Index (GSI) configured named "last4-unit-index": + - Partition key is named "aws_dbe_b_inspector_id_last4" with type (S) + - Sort key is named "aws_dbe_b_unit" with type (S) + +In this example for storing unit inspection information, this schema is utilized for the data: + - "work_id" stores a unique identifier for a unit inspection work order (v4 UUID) + - "inspection_date" stores an ISO 8601 date for the inspection (YYYY-MM-DD) + - "inspector_id_last4" stores the last 4 digits of the ID of the inspector performing the work + - "unit" stores a 12-digit serial number for the unit being inspected + +The example requires the following ordered input command line parameters: + 1. DDB table name for table to put/query data from + 2. Branch key ID for a branch key that was previously created in your key store. See the + CreateKeyStoreKeyExample. + 3. Branch key wrapping KMS key ARN for the KMS key used to create the branch key with ID + provided in arg 2 + 4. Branch key DDB table name for the DDB table representing the branch key store +*/ +func BasicSearchableEncryptionExample( + ddbTableName, + branchKeyId, + branchKeyWrappingKmsKeyArn, + branchKeyDdbTableName string) { + const gsiName = "last4-unit-index" + partitionKeyName := "work_id" + sortKeyName := "inspection_date" + // 1. Configure Beacons. + // The beacon name must be the name of a table attribute that will be encrypted. + // The `length` parameter dictates how many bits are in the beacon attribute value. + // The following link provides guidance on choosing a beacon length: + // https://docs.aws.amazon.com/database-encryption-sdk/latest/devguide/choosing-beacon-length.html + + // The configured DDB table has a GSI on the `aws_dbe_b_inspector_id_last4` AttributeName. + // This field holds the last 4 digits of an inspector ID. + // For our example, this field may range from 0 to 9,999 (10,000 possible values). + // For our example, we assume a full inspector ID is an integer + // ranging from 0 to 99,999,999. We do not assume that the full inspector ID's + // values are uniformly distributed across its range of possible values. + // In many use cases, the prefix of an identifier encodes some information + // about that identifier (e.g. zipcode and SSN prefixes encode geographic + // information), while the suffix does not and is more uniformly distributed. + // We will assume that the inspector ID field matches a similar use case. + // So for this example, we only store and use the last + // 4 digits of the inspector ID, which we assume is uniformly distributed. + // Since the full ID's range is divisible by the range of the last 4 digits, + // then the last 4 digits of the inspector ID are uniformly distributed + // over the range from 0 to 9,999. + // See our documentation for why you should avoid creating beacons over non-uniform distributions + // https://docs.aws.amazon.com/database-encryption-sdk/latest/devguide/searchable-encryption.html#are-beacons-right-for-me + // A single inspector ID suffix may be assigned to multiple `work_id`s. + // + // This link provides guidance for choosing a beacon length: + // https://docs.aws.amazon.com/database-encryption-sdk/latest/devguide/choosing-beacon-length.html + // We follow the guidance in the link above to determine reasonable bounds + // for the length of a beacon on the last 4 digits of an inspector ID: + // - min: log(sqrt(10,000))/log(2) ~= 6.6, round up to 7 + // - max: log((10,000/2))/log(2) ~= 12.3, round down to 12 + // You will somehow need to round results to a nearby integer. + // We choose to round to the nearest integer; you might consider a different rounding approach. + // Rounding up will return fewer expected "false positives" in queries, + // leading to fewer decrypt calls and better performance, + // but it is easier to identify which beacon values encode distinct plaintexts. + // Rounding down will return more expected "false positives" in queries, + // leading to more decrypt calls and worse performance, + // but it is harder to identify which beacon values encode distinct plaintexts. + // We can choose a beacon length between 7 and 12: + // - Closer to 7, we expect more "false positives" to be returned, + // making it harder to identify which beacon values encode distinct plaintexts, + // but leading to more decrypt calls and worse performance + // - Closer to 12, we expect fewer "false positives" returned in queries, + // leading to fewer decrypt calls and better performance, + // but it is easier to identify which beacon values encode distinct plaintexts. + // As an example, we will choose 10. + // + // Values stored in aws_dbe_b_inspector_id_last4 will be 10 bits long (0x000 - 0x3ff) + // There will be 2^10 = 1,024 possible HMAC values. + // With a sufficiently large number of well-distributed inspector IDs, + // for a particular beacon we expect (10,000/1,024) ~= 9.8 4-digit inspector ID suffixes + // sharing that beacon value. + last4Beacon := dbesdkdynamodbencryptiontypes.StandardBeacon{ + Name: "inspector_id_last4", + Length: 10, + } + + // The configured DDB table has a GSI on the `aws_dbe_b_unit` AttributeName. + // This field holds a unit serial number. + // For this example, this is a 12-digit integer from 0 to 999,999,999,999 (10^12 possible values). + // We will assume values for this attribute are uniformly distributed across this range. + // A single unit serial number may be assigned to multiple `work_id`s. + // + // This link provides guidance for choosing a beacon length: + // https://docs.aws.amazon.com/database-encryption-sdk/latest/devguide/choosing-beacon-length.html + // We follow the guidance in the link above to determine reasonable bounds + // for the length of a beacon on a unit serial number: + // - min: log(sqrt(999,999,999,999))/log(2) ~= 19.9, round up to 20 + // - max: log((999,999,999,999/2))/log(2) ~= 38.9, round up to 39 + // We can choose a beacon length between 20 and 39: + // - Closer to 20, we expect more "false positives" to be returned, + // making it harder to identify which beacon values encode distinct plaintexts, + // but leading to more decrypt calls and worse performance + // - Closer to 39, we expect fewer "false positives" returned in queries, + // leading to fewer decrypt calls and better performance, + // but it is easier to identify which beacon values encode distinct plaintexts. + // As an example, we will choose 30. + // + // Values stored in aws_dbe_b_unit will be 30 bits long (0x00000000 - 0x3fffffff) + // There will be 2^30 = 1,073,741,824 ~= 1.1B possible HMAC values. + // With a sufficiently large number of well-distributed inspector IDs, + // for a particular beacon we expect (10^12/2^30) ~= 931.3 unit serial numbers + // sharing that beacon value. + unitBeacon := dbesdkdynamodbencryptiontypes.StandardBeacon{ + Name: "unit", + Length: 30, + } + + standardBeaconList := []dbesdkdynamodbencryptiontypes.StandardBeacon{last4Beacon, unitBeacon} + + // 2. Configure Keystore. + // The keystore is a separate DDB table where the client stores encryption and decryption materials. + // In order to configure beacons on the DDB client, you must configure a keystore. + // + // This example expects that you have already set up a KeyStore with a single branch key. + // See the "Create KeyStore Table Example" and "Create KeyStore Key Example" for how to do this. + // After you create a branch key, you should persist its ID for use in this example. + cfg, err := config.LoadDefaultConfig(context.TODO()) + utils.HandleError(err) + + kmsClient := kms.NewFromConfig(cfg) + ddbClient := dynamodb.NewFromConfig(cfg) + + kmsConfig := keystoretypes.KMSConfigurationMemberkmsKeyArn{ + Value: branchKeyWrappingKmsKeyArn, + } + keyStoreConfig := keystoretypes.KeyStoreConfig{ + KmsClient: kmsClient, + DdbClient: ddbClient, + DdbTableName: branchKeyDdbTableName, + LogicalKeyStoreName: branchKeyDdbTableName, + KmsConfiguration: &kmsConfig, + } + + keyStore, err := keystoreclient.NewClient(keyStoreConfig) + utils.HandleError(err) + + // 3. Create BeaconVersion. + // The BeaconVersion inside the list holds the list of beacons on the table. + // The BeaconVersion also stores information about the keystore. + // BeaconVersion must be provided: + // - keyStore: The keystore configured in step 2. + // - keySource: A configuration for the key source. + // For simple use cases, we can configure a 'singleKeySource' which + // statically configures a single beaconKey. That is the approach this example takes. + // For use cases where you want to use different beacon keys depending on the data + // (for example if your table holds data for multiple tenants, and you want to use + // a different beacon key per tenant), look into configuring a MultiKeyStore: + // https://docs.aws.amazon.com/database-encryption-sdk/latest/devguide/searchable-encryption-multitenant.html + ttl := 6000 + cacheTTL := int32(ttl) + singleKeyStore := dbesdkdynamodbencryptiontypes.SingleKeyStore{ + // `keyId` references a beacon key. + // For every branch key we create in the keystore, + // we also create a beacon key. + // This beacon key is not the same as the branch key, + // but is created with the same ID as the branch key. + KeyId: branchKeyId, + CacheTTL: cacheTTL, + } + beaconKeySource := dbesdkdynamodbencryptiontypes.BeaconKeySourceMembersingle{ + Value: singleKeyStore, + } + beaconVersion := dbesdkdynamodbencryptiontypes.BeaconVersion{ + StandardBeacons: standardBeaconList, + Version: 1, // MUST be 1 + KeyStore: keyStore, + KeySource: &beaconKeySource, + } + + beaconVersions := []dbesdkdynamodbencryptiontypes.BeaconVersion{beaconVersion} + + // 4. Create a Hierarchical Keyring + // This is a KMS keyring that utilizes the keystore table. + // This config defines how items are encrypted and decrypted. + // NOTE: You should configure this to use the same keystore as your search config. + matProv, err := mpl.NewClient(mpltypes.MaterialProvidersConfig{}) + utils.HandleError(err) + + ttlSeconds := int64(ttl) + keyringInput := mpltypes.CreateAwsKmsHierarchicalKeyringInput{ + BranchKeyId: &branchKeyId, + KeyStore: keyStore, + TtlSeconds: ttlSeconds, + } + kmsKeyring, err := matProv.CreateAwsKmsHierarchicalKeyring(context.Background(), keyringInput) + utils.HandleError(err) + + // 5. Configure which attributes are encrypted and/or signed when writing new items. + // For each attribute that may exist on the items we plan to write to our DynamoDbTable, + // we must explicitly configure how they should be treated during item encryption: + // - ENCRYPT_AND_SIGN: The attribute is encrypted and included in the signature + // - SIGN_ONLY: The attribute not encrypted, but is still included in the signature + // - DO_NOTHING: The attribute is not encrypted and not included in the signature + // Any attributes that will be used in beacons must be configured as ENCRYPT_AND_SIGN. + attributeActionsOnEncrypt := map[string]dbesdkstructuredencryptiontypes.CryptoAction{ + partitionKeyName: dbesdkstructuredencryptiontypes.CryptoActionSignOnly, // Our partition attribute must be SIGN_ONLY + sortKeyName: dbesdkstructuredencryptiontypes.CryptoActionSignOnly, // Our sort attribute must be SIGN_ONLY + "inspector_id_last4": dbesdkstructuredencryptiontypes.CryptoActionEncryptAndSign, // Beaconized attributes must be encrypted + "unit": dbesdkstructuredencryptiontypes.CryptoActionEncryptAndSign, // Beaconized attributes must be encrypted + } + + // 6. Create the DynamoDb Encryption configuration for the table we will be writing to. + // The beaconVersions are added to the search configuration. + writeVersion := int32(1) + searchConfig := dbesdkdynamodbencryptiontypes.SearchConfig{ + WriteVersion: writeVersion, // MUST be 1 + Versions: beaconVersions, + } + + tableConfig := dbesdkdynamodbencryptiontypes.DynamoDbTableEncryptionConfig{ + LogicalTableName: ddbTableName, + PartitionKeyName: partitionKeyName, + SortKeyName: &sortKeyName, + AttributeActionsOnEncrypt: attributeActionsOnEncrypt, + Keyring: kmsKeyring, + Search: &searchConfig, + } + + tableConfigs := map[string]dbesdkdynamodbencryptiontypes.DynamoDbTableEncryptionConfig{ + ddbTableName: tableConfig, + } + + // 7. Create the DynamoDb Encryption Interceptor + encryptionConfig := dbesdkdynamodbencryptiontypes.DynamoDbTablesEncryptionConfig{ + TableEncryptionConfigs: tableConfigs, + } + + // 8. Create a new AWS SDK DynamoDb client + dbEsdkMiddleware, err := dbesdkmiddleware.NewDBEsdkMiddleware(encryptionConfig) + utils.HandleError(err) + ddb := dynamodb.NewFromConfig(cfg, dbEsdkMiddleware.CreateMiddleware()) + + // 9. Put an item into our table using the above client. + // Before the item gets sent to DynamoDb, it will be encrypted + // client-side, according to our configuration. + // Since our configuration includes beacons for `inspector_id_last4` and `unit`, + // the client will add two additional attributes to the item. These attributes will have names + // `aws_dbe_b_inspector_id_last4` and `aws_dbe_b_unit`. Their values will be HMACs + // truncated to as many bits as the beacon's `length` parameter; e.g. + // aws_dbe_b_inspector_id_last4 = truncate(HMAC("4321"), 10) + // aws_dbe_b_unit = truncate(HMAC("123456789012"), 30) + item := map[string]types.AttributeValue{ + partitionKeyName: &types.AttributeValueMemberS{Value: "1313ba89-5661-41eb-ba6c-cb1b4cb67b2d"}, + sortKeyName: &types.AttributeValueMemberS{Value: "2023-06-13"}, + "inspector_id_last4": &types.AttributeValueMemberS{Value: "4321"}, + "unit": &types.AttributeValueMemberS{Value: "123456789012"}, + } + + putRequest := &dynamodb.PutItemInput{ + TableName: aws.String(ddbTableName), + Item: item, + } + + _, err = ddb.PutItem(context.Background(), putRequest) + utils.HandleError(err) + + // 10. Query for the item we just put. + // Note that we are constructing the query as if we were querying on plaintext values. + // However, the DDB encryption client will detect that this attribute name has a beacon configured. + // The client will add the beaconized attribute name and attribute value to the query, + // and transform the query to use the beaconized name and value. + // Internally, the client will query for and receive all items with a matching HMAC value in the beacon field. + // This may include a number of "false positives" with different ciphertext, but the same truncated HMAC. + // e.g. if truncate(HMAC("123456789012"), 30) + // == truncate(HMAC("098765432109"), 30), + // the query will return both items. + // The client will decrypt all returned items to determine which ones have the expected attribute values, + // and only surface items with the correct plaintext to the user. + // This procedure is internal to the client and is abstracted away from the user; + // e.g. the user will only see "123456789012" and never + // "098765432109", though the actual query returned both. + expressionAttributeNames := map[string]string{ + "#last4": "inspector_id_last4", + "#unit": "unit", + } + + expressionAttributeValues := map[string]types.AttributeValue{ + ":last4": &types.AttributeValueMemberS{Value: "4321"}, + ":unit": &types.AttributeValueMemberS{Value: "123456789012"}, + } + + queryRequest := &dynamodb.QueryInput{ + TableName: aws.String(ddbTableName), + IndexName: aws.String(gsiName), + KeyConditionExpression: aws.String("#last4 = :last4 and #unit = :unit"), + ExpressionAttributeNames: expressionAttributeNames, + ExpressionAttributeValues: expressionAttributeValues, + } + + // GSIs do not update instantly + // so if the results come back empty + // we retry after a short sleep + for i := 0; i < 10; i++ { + queryResponse, err := ddb.Query(context.Background(), queryRequest) + utils.HandleError(err) + + attributeValues := queryResponse.Items + + // if no results, sleep and try again + if len(attributeValues) == 0 { + time.Sleep(20 * time.Millisecond) + continue + } + + // Validate only 1 item was returned: the item we just put + if len(attributeValues) != 1 { + panic(fmt.Sprintf("Expected 1 item, got %d", len(attributeValues))) + } + returnedItem := attributeValues[0] + // Validate the item has the expected attributes + inspectorIDLast4 := returnedItem["inspector_id_last4"].(*types.AttributeValueMemberS).Value + unit := returnedItem["unit"].(*types.AttributeValueMemberS).Value + if inspectorIDLast4 != "4321" { + panic(fmt.Sprintf("Expected inspector_id_last4 '4321', got '%s'", inspectorIDLast4)) + } + if unit != "123456789012" { + panic(fmt.Sprintf("Expected unit '123456789012', got '%s'", unit)) + } + break + } + + fmt.Println("Basic Searchable Encryption Example completed successfully") +} diff --git a/releases/go/dynamodb-esdk/examples/searchableencryption/beaconstylessearchableencryptionexample.go b/releases/go/dynamodb-esdk/examples/searchableencryption/beaconstylessearchableencryptionexample.go new file mode 100644 index 000000000..843a069cb --- /dev/null +++ b/releases/go/dynamodb-esdk/examples/searchableencryption/beaconstylessearchableencryptionexample.go @@ -0,0 +1,425 @@ +// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +package searchableencryption + +import ( + "context" + "fmt" + + keystoreclient "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/awscryptographykeystoresmithygenerated" + keystoretypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/awscryptographykeystoresmithygeneratedtypes" + mpl "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/awscryptographymaterialproviderssmithygenerated" + mpltypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/awscryptographymaterialproviderssmithygeneratedtypes" + dbesdkdynamodbencryptiontypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes" + dbesdkstructuredencryptiontypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes" + "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/dbesdkmiddleware" + "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/examples/utils" + + "github.com/aws/aws-sdk-go-v2/aws" + "github.com/aws/aws-sdk-go-v2/config" + "github.com/aws/aws-sdk-go-v2/service/dynamodb" + "github.com/aws/aws-sdk-go-v2/service/dynamodb/types" + "github.com/aws/aws-sdk-go-v2/service/kms" +) + +/* +This example demonstrates how to use Beacons Styles on Standard Beacons on encrypted attributes, + + put an item with the beacon, and query against that beacon. + +This example follows a use case of a database that stores food information. + + This is an extension of the "BasicSearchableEncryptionExample" in this directory + and uses the same table schema. + +Running this example requires access to a DDB table with the +following key configuration: + - Partition key is named partitionKeyName with type (S) + - Sort key is named "inspection_time" with type (S) + +In this example for storing food information, this schema is utilized for the data: + - partitionKeyName stores a unique identifier for a unit inspection work order (v4 UUID) + - sortKeyName stores an ISO 8601 date for the inspection (YYYY-MM-DD) + - "fruit" stores one type of fruit + - "basket" stores a set of types of fruit + - "dessert" stores one type of dessert + - "veggies" stores a set of types of vegetable + - "work_type" stores a unit inspection category + +The example requires the following ordered input command line parameters: + 1. DDB table name for table to put/query data from + 2. Branch key ID for a branch key that was previously created in your key store. See the + CreateKeyStoreKeyExample. + 3. Branch key wrapping KMS key ARN for the KMS key used to create the branch key with ID + provided in arg 2 + 4. Branch key DDB table ARN for the DDB table representing the branch key store +*/ + +func BeaconStylesSearchableEncryptionExample( + ddbTableName, + branchKeyId, + branchKeyWrappingKmsKeyArn, + branchKeyDdbTableName string) { + partitionKeyName := "work_id" + sortKeyName := "inspection_date" + // 1. Create Beacons. + standardBeaconList := []dbesdkdynamodbencryptiontypes.StandardBeacon{ + // The fruit beacon allows searching on the encrypted fruit attribute + // We have selected 30 as an example beacon length, but you should go to + // https://docs.aws.amazon.com/database-encryption-sdk/latest/devguide/choosing-beacon-length.html + // when creating your beacons. + { + Name: "fruit", + Length: 30, + }, + + // The basket beacon allows searching on the encrypted basket attribute + // basket is used as a Set, and therefore needs a beacon style to reflect that. + // Further, we need to be able to compare the items in basket to the fruit attribute + // so we `share` this beacon with `fruit`. + // Since we need both of these things, we use the SharedSet style. + { + Name: "basket", + Length: 30, + Style: &dbesdkdynamodbencryptiontypes.BeaconStyleMembersharedSet{ + Value: dbesdkdynamodbencryptiontypes.SharedSet{ + Other: "fruit", + }, + }, + }, + + // The dessert beacon allows searching on the encrypted dessert attribute + // We need to be able to compare the dessert attribute to the fruit attribute + // so we `share` this beacon with `fruit`. + { + Name: "dessert", + Length: 30, + Style: &dbesdkdynamodbencryptiontypes.BeaconStyleMembershared{ + Value: dbesdkdynamodbencryptiontypes.Shared{ + Other: "fruit", + }, + }, + }, + + // The veggieBeacon allows searching on the encrypted veggies attribute + // veggies is used as a Set, and therefore needs a beacon style to reflect that. + { + Name: "veggies", + Length: 30, + Style: &dbesdkdynamodbencryptiontypes.BeaconStyleMemberasSet{ + Value: dbesdkdynamodbencryptiontypes.AsSet{}, + }, + }, + + // The work_typeBeacon allows searching on the encrypted work_type attribute + // We only use it as part of the compound work_unit beacon, + // so we disable its use as a standalone beacon + { + Name: "work_type", + Length: 30, + Style: &dbesdkdynamodbencryptiontypes.BeaconStyleMemberpartOnly{ + Value: dbesdkdynamodbencryptiontypes.PartOnly{}, + }, + }, + } + + // Here we build a compound beacon from work_id and work_type + // If we had tried to make a StandardBeacon from work_type, we would have seen an error + // because work_type is "PartOnly" + encryptedPartList := []dbesdkdynamodbencryptiontypes.EncryptedPart{ + { + Name: "work_type", + Prefix: "T-", + }, + } + + signedPartList := []dbesdkdynamodbencryptiontypes.SignedPart{ + { + Name: partitionKeyName, + Prefix: "I-", + }, + } + + compoundBeaconList := []dbesdkdynamodbencryptiontypes.CompoundBeacon{ + { + Name: "work_unit", + Split: ".", + Encrypted: encryptedPartList, + Signed: signedPartList, + }, + } + + // 2. Configure the Keystore + // These are the same constructions as in the Basic example, which describes these in more detail. + cfg, err := config.LoadDefaultConfig(context.TODO()) + utils.HandleError(err) + + kmsClient := kms.NewFromConfig(cfg) + ddbClient := dynamodb.NewFromConfig(cfg) + + kmsConfig := keystoretypes.KMSConfigurationMemberkmsKeyArn{ + Value: branchKeyWrappingKmsKeyArn, + } + keyStoreConfig := keystoretypes.KeyStoreConfig{ + KmsClient: kmsClient, + DdbClient: ddbClient, + DdbTableName: branchKeyDdbTableName, + LogicalKeyStoreName: branchKeyDdbTableName, + KmsConfiguration: &kmsConfig, + } + + keyStore, err := keystoreclient.NewClient(keyStoreConfig) + utils.HandleError(err) + + // 3. Create BeaconVersion. + // This is similar to the Basic example + ttl := 6000 + cacheTTL := int32(ttl) + singleKeyStore := dbesdkdynamodbencryptiontypes.SingleKeyStore{ + KeyId: branchKeyId, + CacheTTL: cacheTTL, + } + beaconKeySource := dbesdkdynamodbencryptiontypes.BeaconKeySourceMembersingle{ + Value: singleKeyStore, + } + beaconVersion := dbesdkdynamodbencryptiontypes.BeaconVersion{ + StandardBeacons: standardBeaconList, + CompoundBeacons: compoundBeaconList, + Version: 1, // MUST be 1 + KeyStore: keyStore, + KeySource: &beaconKeySource, + } + + beaconVersions := []dbesdkdynamodbencryptiontypes.BeaconVersion{beaconVersion} + + // 4. Create a Hierarchical Keyring + // This is the same configuration as in the Basic example. + matProv, err := mpl.NewClient(mpltypes.MaterialProvidersConfig{}) + utils.HandleError(err) + + ttlSeconds := int64(ttl) + keyringInput := mpltypes.CreateAwsKmsHierarchicalKeyringInput{ + BranchKeyId: &branchKeyId, + KeyStore: keyStore, + TtlSeconds: ttlSeconds, + } + kmsKeyring, err := matProv.CreateAwsKmsHierarchicalKeyring(context.Background(), keyringInput) + utils.HandleError(err) + + // 5. Configure which attributes are encrypted and/or signed when writing new items. + attributeActionsOnEncrypt := map[string]dbesdkstructuredencryptiontypes.CryptoAction{ + partitionKeyName: dbesdkstructuredencryptiontypes.CryptoActionSignOnly, // Our partition attribute must be SIGN_ONLY + sortKeyName: dbesdkstructuredencryptiontypes.CryptoActionSignOnly, // Our sort attribute must be SIGN_ONLY + "dessert": dbesdkstructuredencryptiontypes.CryptoActionEncryptAndSign, // Beaconized attributes must be encrypted + "fruit": dbesdkstructuredencryptiontypes.CryptoActionEncryptAndSign, // Beaconized attributes must be encrypted + "basket": dbesdkstructuredencryptiontypes.CryptoActionEncryptAndSign, // Beaconized attributes must be encrypted + "veggies": dbesdkstructuredencryptiontypes.CryptoActionEncryptAndSign, // Beaconized attributes must be encrypted + "work_type": dbesdkstructuredencryptiontypes.CryptoActionEncryptAndSign, // Beaconized attributes must be encrypted + } + + // 6. Create the DynamoDb Encryption configuration for the table we will be writing to. + // The beaconVersions are added to the search configuration. + writeVersion := int32(1) + searchConfig := dbesdkdynamodbencryptiontypes.SearchConfig{ + WriteVersion: writeVersion, // MUST be 1 + Versions: beaconVersions, + } + + tableConfig := dbesdkdynamodbencryptiontypes.DynamoDbTableEncryptionConfig{ + LogicalTableName: ddbTableName, + PartitionKeyName: partitionKeyName, + SortKeyName: &sortKeyName, + AttributeActionsOnEncrypt: attributeActionsOnEncrypt, + Keyring: kmsKeyring, + Search: &searchConfig, + } + + tableConfigs := map[string]dbesdkdynamodbencryptiontypes.DynamoDbTableEncryptionConfig{ + ddbTableName: tableConfig, + } + + // 7. Create config + encryptionConfig := dbesdkdynamodbencryptiontypes.DynamoDbTablesEncryptionConfig{ + TableEncryptionConfigs: tableConfigs, + } + + // 8. Create item one, specifically with "dessert != fruit", and "fruit in basket". + item1 := map[string]types.AttributeValue{ + partitionKeyName: &types.AttributeValueMemberS{Value: "1"}, + sortKeyName: &types.AttributeValueMemberS{Value: "2023-06-13"}, + "dessert": &types.AttributeValueMemberS{Value: "cake"}, + "fruit": &types.AttributeValueMemberS{Value: "banana"}, + "basket": &types.AttributeValueMemberSS{Value: []string{"banana", "apple", "pear"}}, + "veggies": &types.AttributeValueMemberSS{Value: []string{"beans", "carrots", "celery"}}, + "work_type": &types.AttributeValueMemberS{Value: "small"}, + } + + // 9. Create item two, specifically with "dessert == fruit", and "fruit not in basket". + item2 := map[string]types.AttributeValue{ + partitionKeyName: &types.AttributeValueMemberS{Value: "2"}, + sortKeyName: &types.AttributeValueMemberS{Value: "2023-06-13"}, + "dessert": &types.AttributeValueMemberS{Value: "orange"}, + "fruit": &types.AttributeValueMemberS{Value: "orange"}, + "basket": &types.AttributeValueMemberSS{Value: []string{"strawberry", "blueberry", "blackberry"}}, + "veggies": &types.AttributeValueMemberSS{Value: []string{"beans", "carrots", "peas"}}, + "work_type": &types.AttributeValueMemberS{Value: "large"}, + } + + // 10. Create a new AWS SDK DynamoDb client using the DynamoDb Encryption Interceptor + dbEsdkMiddleware, err := dbesdkmiddleware.NewDBEsdkMiddleware(encryptionConfig) + utils.HandleError(err) + ddb := dynamodb.NewFromConfig(cfg, dbEsdkMiddleware.CreateMiddleware()) + + // 11. Put the two items + putRequest1 := &dynamodb.PutItemInput{ + TableName: &ddbTableName, + Item: item1, + } + + _, err = ddb.PutItem(context.Background(), putRequest1) + utils.HandleError(err) + + putRequest2 := &dynamodb.PutItemInput{ + TableName: aws.String(ddbTableName), + Item: item2, + } + + _, err = ddb.PutItem(context.Background(), putRequest2) + utils.HandleError(err) + + // 12. Test the first type of Set operation : + // Select records where the basket attribute holds a particular value + expressionAttributeValues := map[string]types.AttributeValue{ + ":value": &types.AttributeValueMemberS{Value: "banana"}, + } + + scanRequest := &dynamodb.ScanInput{ + TableName: aws.String(ddbTableName), + FilterExpression: aws.String("contains(basket, :value)"), + ExpressionAttributeValues: expressionAttributeValues, + } + + scanResponse, err := ddb.Scan(context.Background(), scanRequest) + utils.HandleError(err) + + // Validate only 1 item was returned: item1 + if len(scanResponse.Items) != 1 { + panic(fmt.Sprintf("Expected 1 item, got %d", len(scanResponse.Items))) + } + returnedItem := scanResponse.Items[0] + if returnedItem[partitionKeyName].(*types.AttributeValueMemberS).Value != item1[partitionKeyName].(*types.AttributeValueMemberS).Value { + panic("Expected item1 to be returned") + } + + // 13. Test the second type of Set operation : + // Select records where the basket attribute holds the fruit attribute + scanRequest = &dynamodb.ScanInput{ + TableName: aws.String(ddbTableName), + FilterExpression: aws.String("contains(basket, fruit)"), + } + + scanResponse, err = ddb.Scan(context.Background(), scanRequest) + utils.HandleError(err) + + // Validate only 1 item was returned: item1 + if len(scanResponse.Items) != 1 { + panic(fmt.Sprintf("Expected 1 item, got %d", len(scanResponse.Items))) + } + returnedItem = scanResponse.Items[0] + if returnedItem[partitionKeyName].(*types.AttributeValueMemberS).Value != item1[partitionKeyName].(*types.AttributeValueMemberS).Value { + panic("Expected item1 to be returned") + } + + // 14. Test the third type of Set operation : + // Select records where the fruit attribute exists in a particular set + basket3 := []string{"boysenberry", "orange", "grape"} + expressionAttributeValues = map[string]types.AttributeValue{ + ":value": &types.AttributeValueMemberSS{Value: basket3}, + } + + scanRequest = &dynamodb.ScanInput{ + TableName: aws.String(ddbTableName), + FilterExpression: aws.String("contains(:value, fruit)"), + ExpressionAttributeValues: expressionAttributeValues, + } + + scanResponse, err = ddb.Scan(context.Background(), scanRequest) + utils.HandleError(err) + + // Validate only 1 item was returned: item2 + if len(scanResponse.Items) != 1 { + panic(fmt.Sprintf("Expected 1 item, got %d", len(scanResponse.Items))) + } + returnedItem = scanResponse.Items[0] + if returnedItem[partitionKeyName].(*types.AttributeValueMemberS).Value != item2[partitionKeyName].(*types.AttributeValueMemberS).Value { + panic("Expected item2 to be returned") + } + + // 15. Test a Shared search. Select records where the dessert attribute matches the fruit attribute + scanRequest = &dynamodb.ScanInput{ + TableName: aws.String(ddbTableName), + FilterExpression: aws.String("dessert = fruit"), + } + + scanResponse, err = ddb.Scan(context.Background(), scanRequest) + utils.HandleError(err) + + // Validate only 1 item was returned: item2 + if len(scanResponse.Items) != 1 { + panic(fmt.Sprintf("Expected 1 item, got %d", len(scanResponse.Items))) + } + returnedItem = scanResponse.Items[0] + if returnedItem[partitionKeyName].(*types.AttributeValueMemberS).Value != item2[partitionKeyName].(*types.AttributeValueMemberS).Value { + panic("Expected item2 to be returned") + } + + // 16. Test the AsSet attribute 'veggies' : + // Select records where the veggies attribute holds a particular value + expressionAttributeValues = map[string]types.AttributeValue{ + ":value": &types.AttributeValueMemberS{Value: "peas"}, + } + + scanRequest = &dynamodb.ScanInput{ + TableName: aws.String(ddbTableName), + FilterExpression: aws.String("contains(veggies, :value)"), + ExpressionAttributeValues: expressionAttributeValues, + } + + scanResponse, err = ddb.Scan(context.Background(), scanRequest) + utils.HandleError(err) + + // Validate only 1 item was returned: item2 + if len(scanResponse.Items) != 1 { + panic(fmt.Sprintf("Expected 1 item, got %d", len(scanResponse.Items))) + } + returnedItem = scanResponse.Items[0] + if returnedItem[partitionKeyName].(*types.AttributeValueMemberS).Value != item2[partitionKeyName].(*types.AttributeValueMemberS).Value { + panic("Expected item2 to be returned") + } + + // 17. Test the compound beacon 'work_unit' : + expressionAttributeValues = map[string]types.AttributeValue{ + ":value": &types.AttributeValueMemberS{Value: "I-1.T-small"}, + } + + scanRequest = &dynamodb.ScanInput{ + TableName: aws.String(ddbTableName), + FilterExpression: aws.String("work_unit = :value"), + ExpressionAttributeValues: expressionAttributeValues, + } + + scanResponse, err = ddb.Scan(context.Background(), scanRequest) + utils.HandleError(err) + + // Validate only 1 item was returned: item1 + if len(scanResponse.Items) != 1 { + panic(fmt.Sprintf("Expected 1 item, got %d", len(scanResponse.Items))) + } + returnedItem = scanResponse.Items[0] + if returnedItem[partitionKeyName].(*types.AttributeValueMemberS).Value != item1[partitionKeyName].(*types.AttributeValueMemberS).Value { + panic("Expected item1 to be returned") + } + + fmt.Println("Beacon Styles Searchable Encryption Example completed successfully") +} diff --git a/releases/go/dynamodb-esdk/examples/searchableencryption/complexexample/README.md b/releases/go/dynamodb-esdk/examples/searchableencryption/complexexample/README.md new file mode 100644 index 000000000..375f2fa66 --- /dev/null +++ b/releases/go/dynamodb-esdk/examples/searchableencryption/complexexample/README.md @@ -0,0 +1,23 @@ +# ComplexSearchableEncryptionExample + +This example demonstrates complex queries +you can perform using beacons. +The example data used is for demonstrative purposes only, +and might not meet the distribution and correlation uniqueness +recommendations for beacons. +See our documentation for whether beacons are +right for your particular data set: +https://docs.aws.amazon.com/database-encryption-sdk/latest/devguide/searchable-encryption.html#are-beacons-right-for-me + +This example uses a more complex searchable encryption configuration than other examples. +This is intended to demonstrate how to set up a more complicated searchable encryption configuration. +This also walks through some example query expressions one can use to search their encrypted data. + +``` +. +├── complexsearchableencryptionexample.go // Main entry point for example +├── beaconconfig.go // Sets up beacons and searchable encryption configuration +├── putrequests.go // PUT requests added to the DDB table +├── queryrequests.go // QUERY requests executed on the DDB table +└── README.md +``` diff --git a/releases/go/dynamodb-esdk/examples/searchableencryption/complexexample/beaconconfig.go b/releases/go/dynamodb-esdk/examples/searchableencryption/complexexample/beaconconfig.go new file mode 100644 index 000000000..5b13c74bb --- /dev/null +++ b/releases/go/dynamodb-esdk/examples/searchableencryption/complexexample/beaconconfig.go @@ -0,0 +1,357 @@ +// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +package complexexample + +import ( + "context" + + keystoreclient "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/awscryptographykeystoresmithygenerated" + keystoretypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/awscryptographykeystoresmithygeneratedtypes" + mpl "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/awscryptographymaterialproviderssmithygenerated" + mpltypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/awscryptographymaterialproviderssmithygeneratedtypes" + dbesdkdynamodbencryptiontypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes" + dbesdkstructuredencryptiontypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes" + "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/dbesdkmiddleware" + "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/examples/utils" + "github.com/aws/aws-sdk-go-v2/config" + "github.com/aws/aws-sdk-go-v2/service/dynamodb" + "github.com/aws/aws-sdk-go-v2/service/kms" +) + +/* + * This file is used in an example to demonstrate complex queries + * you can perform using beacons. + * The example data used is for demonstrative purposes only, + * and might not meet the distribution and correlation uniqueness + * recommendations for beacons. + * See our documentation for whether beacons are + * right for your particular data set: + * https://docs.aws.amazon.com/database-encryption-sdk/latest/devguide/searchable-encryption.html#are-beacons-right-for-me + * + * This file sets up all the searchable encryption configuration required to execute the examples from + * our workshop using the encryption client. + */ + +func SetupBeaconConfig( + ctx context.Context, + ddbTableName, + branchKeyId, + branchKeyWrappingKmsKeyArn, + branchKeyDdbTableName string) (*dynamodb.Client, error) { + // 1. Create Keystore and branch key. + // These are the same constructions as in the Basic examples, which describe this in more detail. + cfg, err := config.LoadDefaultConfig(ctx) + if err != nil { + return nil, err + } + + kmsClient := kms.NewFromConfig(cfg) + ddbClient := dynamodb.NewFromConfig(cfg) + + kmsConfig := keystoretypes.KMSConfigurationMemberkmsKeyArn{ + Value: branchKeyWrappingKmsKeyArn, + } + keyStoreConfig := keystoretypes.KeyStoreConfig{ + KmsClient: kmsClient, + DdbClient: ddbClient, + DdbTableName: branchKeyDdbTableName, + LogicalKeyStoreName: branchKeyDdbTableName, + KmsConfiguration: &kmsConfig, + } + + keyStore, err := keystoreclient.NewClient(keyStoreConfig) + if err != nil { + return nil, err + } + + // 2. Create standard beacons + // For this example, we use a standard beacon length of 4. + // The BasicSearchableEncryptionExample gives a more thorough consideration of beacon length. + // For production applications, one should always exercise rigor when deciding beacon length, including + // examining population size and considering performance. + standardBeaconList := []dbesdkdynamodbencryptiontypes.StandardBeacon{ + {Name: "EmployeeID", Length: 4}, + {Name: "TicketNumber", Length: 4}, + {Name: "ProjectName", Length: 4}, + {Name: "EmployeeEmail", Length: 4}, + {Name: "CreatorEmail", Length: 4}, + {Name: "ProjectStatus", Length: 4}, + {Name: "OrganizerEmail", Length: 4}, + {Name: "ManagerEmail", Length: 4}, + {Name: "AssigneeEmail", Length: 4}, + {Name: "City", Loc: StringPtr("Location.City"), Length: 4}, + {Name: "Severity", Length: 4}, + {Name: "Building", Loc: StringPtr("Location.Building"), Length: 4}, + {Name: "Floor", Loc: StringPtr("Location.Floor"), Length: 4}, + {Name: "Room", Loc: StringPtr("Location.Room"), Length: 4}, + {Name: "Desk", Loc: StringPtr("Location.Desk"), Length: 4}, + } + + // 3. Define encrypted parts + // Note that some of the prefixes are modified from the suggested prefixes in Demo.md. + // This is because all prefixes must be unique in a configuration. + // Encrypted parts are described in more detail in the CompoundBeaconSearchableEncryptionExample. + encryptedPartList := []dbesdkdynamodbencryptiontypes.EncryptedPart{ + {Name: "EmployeeID", Prefix: "E-"}, + {Name: "TicketNumber", Prefix: "T-"}, + {Name: "ProjectName", Prefix: "P-"}, + {Name: "EmployeeEmail", Prefix: "EE-"}, + {Name: "CreatorEmail", Prefix: "CE-"}, + {Name: "ProjectStatus", Prefix: "PSts-"}, + {Name: "OrganizerEmail", Prefix: "OE-"}, + {Name: "ManagerEmail", Prefix: "ME-"}, + {Name: "AssigneeEmail", Prefix: "AE-"}, + {Name: "City", Prefix: "C-"}, + {Name: "Severity", Prefix: "S-"}, + {Name: "Building", Prefix: "B-"}, + {Name: "Floor", Prefix: "F-"}, + {Name: "Room", Prefix: "R-"}, + {Name: "Desk", Prefix: "D-"}, + } + + // 4. Define signed parts. + // These are unencrypted attributes we would like to use in beacon queries. + // In this example, all of these represent dates or times. + // Keeping these attributes unencrypted allows us to use them in comparison-based queries. If a signed + // part is the first part in a compound beacon, then that part can be used in comparison for sorting. + signedPartList := []dbesdkdynamodbencryptiontypes.SignedPart{ + {Name: "TicketModTime", Prefix: "M-"}, + {Name: "MeetingStart", Prefix: "MS-"}, + {Name: "TimeCardStart", Prefix: "TC-"}, + {Name: "ProjectStart", Prefix: "PS-"}, + } + + // 5. Create constructor parts. + // Constructor parts are used to assemble constructors (constructors described more in next step). + // For each attribute that will be used in a constructor, there must be a corresponding constructor part. + // A constructor part must receive: + // - name: Name of a standard beacon + // - required: Whether this attribute must be present in the item to match a constructor + // In this example, we will define each constructor part once and re-use it across multiple constructors. + // The parts below are defined by working backwards from the constructors in "PK Constructors", + // "SK constructors", etc. sections in Demo.md. + employeeIdConstructorPart := &dbesdkdynamodbencryptiontypes.ConstructorPart{Name: "EmployeeID", Required: true} + ticketNumberConstructorPart := &dbesdkdynamodbencryptiontypes.ConstructorPart{Name: "TicketNumber", Required: true} + projectNameConstructorPart := &dbesdkdynamodbencryptiontypes.ConstructorPart{Name: "ProjectName", Required: true} + ticketModTimeConstructorPart := &dbesdkdynamodbencryptiontypes.ConstructorPart{Name: "TicketModTime", Required: true} + meetingStartConstructorPart := &dbesdkdynamodbencryptiontypes.ConstructorPart{Name: "MeetingStart", Required: true} + timeCardStartConstructorPart := &dbesdkdynamodbencryptiontypes.ConstructorPart{Name: "TimeCardStart", Required: true} + employeeEmailConstructorPart := &dbesdkdynamodbencryptiontypes.ConstructorPart{Name: "EmployeeEmail", Required: true} + creatorEmailConstructorPart := &dbesdkdynamodbencryptiontypes.ConstructorPart{Name: "CreatorEmail", Required: true} + projectStatusConstructorPart := &dbesdkdynamodbencryptiontypes.ConstructorPart{Name: "ProjectStatus", Required: true} + organizerEmailConstructorPart := &dbesdkdynamodbencryptiontypes.ConstructorPart{Name: "OrganizerEmail", Required: true} + projectStartConstructorPart := &dbesdkdynamodbencryptiontypes.ConstructorPart{Name: "ProjectStart", Required: true} + managerEmailConstructorPart := &dbesdkdynamodbencryptiontypes.ConstructorPart{Name: "ManagerEmail", Required: true} + assigneeEmailConstructorPart := &dbesdkdynamodbencryptiontypes.ConstructorPart{Name: "AssigneeEmail", Required: true} + cityConstructorPart := &dbesdkdynamodbencryptiontypes.ConstructorPart{Name: "City", Required: true} + severityConstructorPart := &dbesdkdynamodbencryptiontypes.ConstructorPart{Name: "Severity", Required: true} + buildingConstructorPart := &dbesdkdynamodbencryptiontypes.ConstructorPart{Name: "Building", Required: true} + floorConstructorPart := &dbesdkdynamodbencryptiontypes.ConstructorPart{Name: "Floor", Required: true} + roomConstructorPart := &dbesdkdynamodbencryptiontypes.ConstructorPart{Name: "Room", Required: true} + deskConstructorPart := &dbesdkdynamodbencryptiontypes.ConstructorPart{Name: "Desk", Required: true} + + // 6. Define constructors + // Constructors define how encrypted and signed parts are assembled into compound beacons. + // The constructors below are based off of the "PK Constructors", "SK constructors", etc. sections in Demo.md. + + // The employee ID constructor only requires an employee ID. + // If an item has an attribute with name "EmployeeID", it will match this constructor. + // If this is the first matching constructor in the constructor list (constructor list described more below), + // the compound beacon will use this constructor, and the compound beacon will be written as `E-X`. + employeeIdConstructor := dbesdkdynamodbencryptiontypes.Constructor{Parts: []dbesdkdynamodbencryptiontypes.ConstructorPart{*employeeIdConstructorPart}} + ticketNumberConstructor := dbesdkdynamodbencryptiontypes.Constructor{Parts: []dbesdkdynamodbencryptiontypes.ConstructorPart{*ticketNumberConstructorPart}} + projectNameConstructor := dbesdkdynamodbencryptiontypes.Constructor{Parts: []dbesdkdynamodbencryptiontypes.ConstructorPart{*projectNameConstructorPart}} + ticketModTimeConstructor := dbesdkdynamodbencryptiontypes.Constructor{Parts: []dbesdkdynamodbencryptiontypes.ConstructorPart{*ticketModTimeConstructorPart}} + buildingConstructor := dbesdkdynamodbencryptiontypes.Constructor{Parts: []dbesdkdynamodbencryptiontypes.ConstructorPart{*buildingConstructorPart}} + + // This constructor requires all of "MeetingStart", "Location.Floor", and "Location.Room" attributes. + // If an item has all of these attributes, it will match this constructor. + // If this is the first matching constructor in the constructor list (constructor list described more below), + // the compound beacon will use this constructor, and the compound beacon will be written as `MS-X~F-Y~R-Z`. + // In a constructor with multiple constructor parts, the order the constructor parts are added to + // the constructor part list defines how the compound beacon is written. + // We can rearrange the beacon parts by changing the order the constructors were added to the list. + meetingStartFloorRoomConstructor := dbesdkdynamodbencryptiontypes.Constructor{ + Parts: []dbesdkdynamodbencryptiontypes.ConstructorPart{*meetingStartConstructorPart, *floorConstructorPart, *roomConstructorPart}, + } + + timeCardStartEmployeeEmailConstructor := dbesdkdynamodbencryptiontypes.Constructor{ + Parts: []dbesdkdynamodbencryptiontypes.ConstructorPart{*timeCardStartConstructorPart, *employeeEmailConstructorPart}, + } + timeCardStartConstructor := dbesdkdynamodbencryptiontypes.Constructor{Parts: []dbesdkdynamodbencryptiontypes.ConstructorPart{*timeCardStartConstructorPart}} + creatorEmailConstructor := dbesdkdynamodbencryptiontypes.Constructor{Parts: []dbesdkdynamodbencryptiontypes.ConstructorPart{*creatorEmailConstructorPart}} + projectStatusConstructor := dbesdkdynamodbencryptiontypes.Constructor{Parts: []dbesdkdynamodbencryptiontypes.ConstructorPart{*projectStatusConstructorPart}} + employeeEmailConstructor := dbesdkdynamodbencryptiontypes.Constructor{Parts: []dbesdkdynamodbencryptiontypes.ConstructorPart{*employeeEmailConstructorPart}} + organizerEmailConstructor := dbesdkdynamodbencryptiontypes.Constructor{Parts: []dbesdkdynamodbencryptiontypes.ConstructorPart{*organizerEmailConstructorPart}} + projectStartConstructor := dbesdkdynamodbencryptiontypes.Constructor{Parts: []dbesdkdynamodbencryptiontypes.ConstructorPart{*projectStartConstructorPart}} + managerEmailConstructor := dbesdkdynamodbencryptiontypes.Constructor{Parts: []dbesdkdynamodbencryptiontypes.ConstructorPart{*managerEmailConstructorPart}} + assigneeEmailConstructor := dbesdkdynamodbencryptiontypes.Constructor{Parts: []dbesdkdynamodbencryptiontypes.ConstructorPart{*assigneeEmailConstructorPart}} + cityConstructor := dbesdkdynamodbencryptiontypes.Constructor{Parts: []dbesdkdynamodbencryptiontypes.ConstructorPart{*cityConstructorPart}} + severityConstructor := dbesdkdynamodbencryptiontypes.Constructor{Parts: []dbesdkdynamodbencryptiontypes.ConstructorPart{*severityConstructorPart}} + buildingFloorDeskConstructor := dbesdkdynamodbencryptiontypes.Constructor{ + Parts: []dbesdkdynamodbencryptiontypes.ConstructorPart{*buildingConstructorPart, *floorConstructorPart, *deskConstructorPart}, + } + + // 7. Add constructors to the compound beacon constructor list in desired construction order. + // In a compound beacon with multiple constructors, the order the constructors are added to + // the constructor list determines their priority. + // The first constructor added to a constructor list will be the first constructor that is executed. + // The client will evaluate constructors until one matches, and will use the first one that matches. + // If no constructors match, an attribute value is not written for that beacon. + // A general strategy is to add constructors with unique conditions at the beginning of the list, + // and add constructors with general conditions at the end of the list. This would allow a given + // item would trigger the constructor most specific to its attributes. + pk0ConstructorList := []dbesdkdynamodbencryptiontypes.Constructor{ + employeeIdConstructor, + buildingConstructor, + ticketNumberConstructor, + projectNameConstructor, + } + + sk0ConstructorList := []dbesdkdynamodbencryptiontypes.Constructor{ + ticketModTimeConstructor, + meetingStartFloorRoomConstructor, + timeCardStartEmployeeEmailConstructor, + projectNameConstructor, + employeeIdConstructor, + } + + pk1ConstructorList := []dbesdkdynamodbencryptiontypes.Constructor{ + creatorEmailConstructor, + employeeEmailConstructor, + projectStatusConstructor, + organizerEmailConstructor, + } + + sk1ConstructorList := []dbesdkdynamodbencryptiontypes.Constructor{ + meetingStartFloorRoomConstructor, + timeCardStartConstructor, + ticketModTimeConstructor, + projectStartConstructor, + employeeIdConstructor, + } + + pk2ConstructorList := []dbesdkdynamodbencryptiontypes.Constructor{ + managerEmailConstructor, + assigneeEmailConstructor, + } + + pk3ConstructorList := []dbesdkdynamodbencryptiontypes.Constructor{ + cityConstructor, + severityConstructor, + } + + sk3ConstructorList := []dbesdkdynamodbencryptiontypes.Constructor{ + buildingFloorDeskConstructor, + ticketModTimeConstructor, + } + + // 8. Define compound beacons + // Compound beacon construction is defined in more detail in CompoundBeaconSearchableEncryptionExample. + // Note that the split character must be a character that is not used in any attribute value. + compoundBeaconList := []dbesdkdynamodbencryptiontypes.CompoundBeacon{ + {Name: "PK", Split: "~", Constructors: pk0ConstructorList}, + {Name: "SK", Split: "~", Constructors: sk0ConstructorList}, + {Name: "PK1", Split: "~", Constructors: pk1ConstructorList}, + {Name: "SK1", Split: "~", Constructors: sk1ConstructorList}, + {Name: "PK2", Split: "~", Constructors: pk2ConstructorList}, + {Name: "PK3", Split: "~", Constructors: pk3ConstructorList}, + {Name: "SK3", Split: "~", Constructors: sk3ConstructorList}, + } + + // 9. Create BeaconVersion. + beaconVersion := &dbesdkdynamodbencryptiontypes.BeaconVersion{ + StandardBeacons: standardBeaconList, + CompoundBeacons: compoundBeaconList, + EncryptedParts: encryptedPartList, + SignedParts: signedPartList, + Version: 1, // MUST be 1 + KeyStore: keyStore, + KeySource: &dbesdkdynamodbencryptiontypes.BeaconKeySourceMembersingle{ + Value: dbesdkdynamodbencryptiontypes.SingleKeyStore{ + KeyId: branchKeyId, + CacheTTL: 6000, + }, + }, + } + + beaconVersions := []dbesdkdynamodbencryptiontypes.BeaconVersion{*beaconVersion} + + // 10. Create a Hierarchical Keyring + matProv, err := mpl.NewClient(mpltypes.MaterialProvidersConfig{}) + utils.HandleError(err) + + hierarchicalKeyringInput := mpltypes.CreateAwsKmsHierarchicalKeyringInput{ + KeyStore: keyStore, + BranchKeyId: &branchKeyId, + TtlSeconds: 6000, // This dictates how often we call back to KMS to authorize use of the branch keys + } + + kmsKeyring, err := matProv.CreateAwsKmsHierarchicalKeyring(context.Background(), hierarchicalKeyringInput) + utils.HandleError(err) + + // 11. Define crypto actions + attributeActionsOnEncrypt := map[string]dbesdkstructuredencryptiontypes.CryptoAction{ + // Our partition key must be configured as SIGN_ONLY + "partition_key": dbesdkstructuredencryptiontypes.CryptoActionSignOnly, + // Attributes used in beacons must be configured as ENCRYPT_AND_SIGN + "EmployeeID": dbesdkstructuredencryptiontypes.CryptoActionEncryptAndSign, + "TicketNumber": dbesdkstructuredencryptiontypes.CryptoActionEncryptAndSign, + "ProjectName": dbesdkstructuredencryptiontypes.CryptoActionEncryptAndSign, + "EmployeeName": dbesdkstructuredencryptiontypes.CryptoActionEncryptAndSign, + "EmployeeEmail": dbesdkstructuredencryptiontypes.CryptoActionEncryptAndSign, + "CreatorEmail": dbesdkstructuredencryptiontypes.CryptoActionEncryptAndSign, + "ProjectStatus": dbesdkstructuredencryptiontypes.CryptoActionEncryptAndSign, + "OrganizerEmail": dbesdkstructuredencryptiontypes.CryptoActionEncryptAndSign, + "ManagerEmail": dbesdkstructuredencryptiontypes.CryptoActionEncryptAndSign, + "AssigneeEmail": dbesdkstructuredencryptiontypes.CryptoActionEncryptAndSign, + "City": dbesdkstructuredencryptiontypes.CryptoActionEncryptAndSign, + "Severity": dbesdkstructuredencryptiontypes.CryptoActionEncryptAndSign, + "Location": dbesdkstructuredencryptiontypes.CryptoActionEncryptAndSign, + // These are not beaconized attributes, but are sensitive data that must be encrypted + "Attendees": dbesdkstructuredencryptiontypes.CryptoActionEncryptAndSign, + "Subject": dbesdkstructuredencryptiontypes.CryptoActionEncryptAndSign, + // signed parts and unencrypted attributes can be configured as SIGN_ONLY or DO_NOTHING + // For this example, we will set these to SIGN_ONLY to ensure authenticity + "TicketModTime": dbesdkstructuredencryptiontypes.CryptoActionSignOnly, + "MeetingStart": dbesdkstructuredencryptiontypes.CryptoActionSignOnly, + "TimeCardStart": dbesdkstructuredencryptiontypes.CryptoActionSignOnly, + "EmployeeTitle": dbesdkstructuredencryptiontypes.CryptoActionSignOnly, + "Description": dbesdkstructuredencryptiontypes.CryptoActionSignOnly, + "ProjectTarget": dbesdkstructuredencryptiontypes.CryptoActionSignOnly, + "Hours": dbesdkstructuredencryptiontypes.CryptoActionSignOnly, + "Role": dbesdkstructuredencryptiontypes.CryptoActionSignOnly, + "Message": dbesdkstructuredencryptiontypes.CryptoActionSignOnly, + "ProjectStart": dbesdkstructuredencryptiontypes.CryptoActionSignOnly, + "Duration": dbesdkstructuredencryptiontypes.CryptoActionSignOnly, + } + + // 12. Set up table config + tableConfig := &dbesdkdynamodbencryptiontypes.DynamoDbTableEncryptionConfig{ + LogicalTableName: ddbTableName, + PartitionKeyName: "partition_key", + AttributeActionsOnEncrypt: attributeActionsOnEncrypt, + Keyring: kmsKeyring, + Search: &dbesdkdynamodbencryptiontypes.SearchConfig{ + WriteVersion: 1, // MUST be 1 + Versions: beaconVersions, + }, + } + + tableConfigs := map[string]dbesdkdynamodbencryptiontypes.DynamoDbTableEncryptionConfig{ + ddbTableName: *tableConfig, + } + + // 13. Create the DynamoDb Encryption Interceptor + encryptionConfig := dbesdkdynamodbencryptiontypes.DynamoDbTablesEncryptionConfig{ + TableEncryptionConfigs: tableConfigs, + } + + // 14. Create a new AWS SDK DynamoDb client using the DynamoDb Encryption Interceptor above + dbEsdkMiddleware, err := dbesdkmiddleware.NewDBEsdkMiddleware(encryptionConfig) + utils.HandleError(err) + ddb := dynamodb.NewFromConfig(cfg, dbEsdkMiddleware.CreateMiddleware()) + + return ddb, nil +} diff --git a/releases/go/dynamodb-esdk/examples/searchableencryption/complexexample/complexsearchableencryptionexample.go b/releases/go/dynamodb-esdk/examples/searchableencryption/complexexample/complexsearchableencryptionexample.go new file mode 100644 index 000000000..8e7866704 --- /dev/null +++ b/releases/go/dynamodb-esdk/examples/searchableencryption/complexexample/complexsearchableencryptionexample.go @@ -0,0 +1,41 @@ +// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +package complexexample + +import ( + "context" + "fmt" + + "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/examples/utils" +) + +/* + * This file is used in an example to demonstrate complex queries + * you can perform using beacons. + * The example data used is for demonstrative purposes only, + * and might not meet the distribution and correlation uniqueness + * recommendations for beacons. + * See our documentation for whether beacons are + * right for your particular data set: + * https://docs.aws.amazon.com/database-encryption-sdk/latest/devguide/searchable-encryption.html#are-beacons-right-for-me + */ +func ComplexSearchableEncryptionExample( + ddbTableName, + branchKeyId, + branchKeyWrappingKmsKeyArn, + branchKeyDdbTableName string, +) { + ddb, err := SetupBeaconConfig( + context.TODO(), + ddbTableName, + branchKeyId, + branchKeyWrappingKmsKeyArn, + branchKeyDdbTableName, + ) + utils.HandleError(err) + PutAllItemsToTable(context.TODO(), ddbTableName, ddb) + RunQueries(context.TODO(), ddbTableName, ddb) + + fmt.Println("Complex Searchable Encryption Example Completed") +} diff --git a/releases/go/dynamodb-esdk/examples/searchableencryption/complexexample/putrequests.go b/releases/go/dynamodb-esdk/examples/searchableencryption/complexexample/putrequests.go new file mode 100644 index 000000000..625f6b0cd --- /dev/null +++ b/releases/go/dynamodb-esdk/examples/searchableencryption/complexexample/putrequests.go @@ -0,0 +1,646 @@ +// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +package complexexample + +import ( + "context" + + "github.com/aws/aws-sdk-go-v2/service/dynamodb" + "github.com/aws/aws-sdk-go-v2/service/dynamodb/types" +) + +/* + * This file is used in an example to demonstrate complex queries + * you can perform using beacons. + * The example data used is for demonstrative purposes only, + * and might not meet the distribution and correlation uniqueness + * recommendations for beacons. + * See our documentation for whether beacons are + * right for your particular data set: + * https://docs.aws.amazon.com/database-encryption-sdk/latest/devguide/searchable-encryption.html#are-beacons-right-for-me + * + * This file implements PutItem calls to populate a DDB table with items from our workshop. + * By providing a DynamoDbClient that is configured to use searchable encryption, + * this file will encrypt the data client side and add beacon attributes to the items. + * This only implements a single item of each of the 6 record types from Demo.md. Adding the remaining + * items would extend the test and example coverage. + */ + +// PutAllItemsToTable puts all sample items to the specified DynamoDB table +func PutAllItemsToTable(ctx context.Context, ddbTableName string, ddb *dynamodb.Client) error { + if err := PutAllMeetingItemsToTable(ctx, ddbTableName, ddb); err != nil { + return err + } + if err := PutAllEmployeeItemsToTable(ctx, ddbTableName, ddb); err != nil { + return err + } + if err := PutAllProjectItemsToTable(ctx, ddbTableName, ddb); err != nil { + return err + } + if err := PutAllReservationItemsToTable(ctx, ddbTableName, ddb); err != nil { + return err + } + if err := PutAllTicketItemsToTable(ctx, ddbTableName, ddb); err != nil { + return err + } + if err := PutAllTimecardItemsToTable(ctx, ddbTableName, ddb); err != nil { + return err + } + return nil +} + +// Helper function to create string attribute value +func stringAttr(s string) types.AttributeValue { + return &types.AttributeValueMemberS{Value: s} +} + +// Helper function to create map attribute value +func mapAttr(m map[string]types.AttributeValue) types.AttributeValue { + return &types.AttributeValueMemberM{Value: m} +} + +// Helper function to create list attribute value +func listAttr(l []types.AttributeValue) types.AttributeValue { + return &types.AttributeValueMemberL{Value: l} +} + +// meeting.json +// PutAllMeetingItemsToTable puts all meeting items to the table +func PutAllMeetingItemsToTable(ctx context.Context, ddbTableName string, ddb *dynamodb.Client) error { + // Meeting 1 + meeting1AttendeeList := []types.AttributeValue{ + stringAttr("able@gmail.com"), + stringAttr("zorro@gmail.com"), + } + + meeting1Location := map[string]types.AttributeValue{ + "Floor": stringAttr("12"), + "Room": stringAttr("403"), + } + + meeting1 := map[string]types.AttributeValue{ + "partition_key": stringAttr("meeting1"), + "EmployeeID": stringAttr("emp_001"), + "EmployeeEmail": stringAttr("able@gmail.com"), + "MeetingStart": stringAttr("2022-07-04T13:00"), + "Location": mapAttr(meeting1Location), + "Duration": stringAttr("30"), + "Attendees": listAttr(meeting1AttendeeList), + "Subject": stringAttr("Scan Beacons"), + } + + _, err := ddb.PutItem(ctx, &dynamodb.PutItemInput{ + TableName: &ddbTableName, + Item: meeting1, + }) + if err != nil { + return err + } + + // Meeting 2 + meeting2AttendeeList := []types.AttributeValue{ + stringAttr("barney@gmail.com"), + stringAttr("zorro@gmail.com"), + } + + meeting2Location := map[string]types.AttributeValue{ + "Floor": stringAttr("12"), + "Room": stringAttr("403"), + } + + meeting2 := map[string]types.AttributeValue{ + "partition_key": stringAttr("meeting2"), + "EmployeeID": stringAttr("emp_002"), + "EmployeeEmail": stringAttr("barney@gmail.com"), + "MeetingStart": stringAttr("2022-07-04T13:00"), + "Location": mapAttr(meeting2Location), + "Duration": stringAttr("30"), + "Attendees": listAttr(meeting2AttendeeList), + "Subject": stringAttr("Scan Beacons"), + } + + _, err = ddb.PutItem(ctx, &dynamodb.PutItemInput{ + TableName: &ddbTableName, + Item: meeting2, + }) + if err != nil { + return err + } + + // Meeting 3 + meeting3AttendeeList := []types.AttributeValue{ + stringAttr("charlie@gmail.com"), + stringAttr("zorro@gmail.com"), + } + + meeting3Location := map[string]types.AttributeValue{ + "Floor": stringAttr("12"), + "Room": stringAttr("403"), + } + + meeting3 := map[string]types.AttributeValue{ + "partition_key": stringAttr("meeting3"), + "EmployeeID": stringAttr("emp_003"), + "EmployeeEmail": stringAttr("charlie@gmail.com"), + "MeetingStart": stringAttr("2022-07-04T13:00"), + "Location": mapAttr(meeting3Location), + "Duration": stringAttr("30"), + "Attendees": listAttr(meeting3AttendeeList), + "Subject": stringAttr("Scan Beacons"), + } + + _, err = ddb.PutItem(ctx, &dynamodb.PutItemInput{ + TableName: &ddbTableName, + Item: meeting3, + }) + if err != nil { + return err + } + + // Meeting 4 + meeting4AttendeeList := []types.AttributeValue{ + stringAttr("david@gmail.com"), + stringAttr("zorro@gmail.com"), + } + + meeting4Location := map[string]types.AttributeValue{ + "Floor": stringAttr("12"), + "Room": stringAttr("403"), + } + + meeting4 := map[string]types.AttributeValue{ + "partition_key": stringAttr("meeting4"), + "EmployeeID": stringAttr("emp_004"), + "EmployeeEmail": stringAttr("david@gmail.com"), + "MeetingStart": stringAttr("2022-07-04T13:00"), + "Location": mapAttr(meeting4Location), + "Duration": stringAttr("30"), + "Attendees": listAttr(meeting4AttendeeList), + "Subject": stringAttr("Scan Beacons"), + } + + _, err = ddb.PutItem(ctx, &dynamodb.PutItemInput{ + TableName: &ddbTableName, + Item: meeting4, + }) + if err != nil { + return err + } + + // Meeting 5 + meeting5AttendeeList := []types.AttributeValue{ + stringAttr("barney@gmail.com"), + stringAttr("zorro@gmail.com"), + } + + meeting5Location := map[string]types.AttributeValue{ + "Floor": stringAttr("12"), + "Room": stringAttr("407"), + } + + meeting5 := map[string]types.AttributeValue{ + "partition_key": stringAttr("meeting5"), + "EmployeeID": stringAttr("emp_002"), + "EmployeeEmail": stringAttr("barney@gmail.com"), + "MeetingStart": stringAttr("2022-07-04T14:00"), + "Location": mapAttr(meeting5Location), + "Duration": stringAttr("30"), + "Attendees": listAttr(meeting5AttendeeList), + "Subject": stringAttr("DB ESDK"), + } + + _, err = ddb.PutItem(ctx, &dynamodb.PutItemInput{ + TableName: &ddbTableName, + Item: meeting5, + }) + if err != nil { + return err + } + + // Meeting 6 + meeting6AttendeeList := []types.AttributeValue{ + stringAttr("charlie@gmail.com"), + stringAttr("zorro@gmail.com"), + } + + meeting6Location := map[string]types.AttributeValue{ + "Floor": stringAttr("12"), + "Room": stringAttr("407"), + } + + meeting6 := map[string]types.AttributeValue{ + "partition_key": stringAttr("meeting6"), + "EmployeeID": stringAttr("emp_003"), + "EmployeeEmail": stringAttr("charlie@gmail.com"), + "MeetingStart": stringAttr("2022-07-04T14:00"), + "Location": mapAttr(meeting6Location), + "Duration": stringAttr("30"), + "Attendees": listAttr(meeting6AttendeeList), + "Subject": stringAttr("DB ESDK"), + } + + _, err = ddb.PutItem(ctx, &dynamodb.PutItemInput{ + TableName: &ddbTableName, + Item: meeting6, + }) + return err +} + +// employee.json +// PutAllEmployeeItemsToTable puts all employee items to the table +func PutAllEmployeeItemsToTable(ctx context.Context, ddbTableName string, ddb *dynamodb.Client) error { + // Employee 1 + employee1Location := map[string]types.AttributeValue{ + "Building": stringAttr("44"), + "Floor": stringAttr("12"), + "Desk": stringAttr("3"), + "City": stringAttr("Seattle"), + } + + employee1 := map[string]types.AttributeValue{ + "partition_key": stringAttr("employee1"), + "EmployeeID": stringAttr("emp_001"), + "EmployeeEmail": stringAttr("able@gmail.com"), + "ManagerEmail": stringAttr("zorro@gmail.com"), + "EmployeeName": stringAttr("Able Jones"), + "EmployeeTitle": stringAttr("SDE9"), + "Location": mapAttr(employee1Location), + } + + _, err := ddb.PutItem(ctx, &dynamodb.PutItemInput{ + TableName: &ddbTableName, + Item: employee1, + }) + if err != nil { + return err + } + + // Employee 2 + employee2Location := map[string]types.AttributeValue{ + "Building": stringAttr("44"), + "Floor": stringAttr("12"), + "Desk": stringAttr("4"), + "City": stringAttr("Seattle"), + } + + employee2 := map[string]types.AttributeValue{ + "partition_key": stringAttr("employee2"), + "EmployeeID": stringAttr("emp_002"), + "EmployeeEmail": stringAttr("barney@gmail.com"), + "ManagerEmail": stringAttr("zorro@gmail.com"), + "EmployeeName": stringAttr("Barney Jones"), + "EmployeeTitle": stringAttr("SDE8"), + "Location": mapAttr(employee2Location), + } + + _, err = ddb.PutItem(ctx, &dynamodb.PutItemInput{ + TableName: &ddbTableName, + Item: employee2, + }) + if err != nil { + return err + } + + // Employee 3 + employee3Location := map[string]types.AttributeValue{ + "Building": stringAttr("44"), + "Floor": stringAttr("4"), + "Desk": stringAttr("5"), + "City": stringAttr("Seattle"), + } + + employee3 := map[string]types.AttributeValue{ + "partition_key": stringAttr("employee3"), + "EmployeeID": stringAttr("emp_003"), + "EmployeeEmail": stringAttr("charlie@gmail.com"), + "ManagerEmail": stringAttr("zorro@gmail.com"), + "EmployeeName": stringAttr("Charlie Jones"), + "EmployeeTitle": stringAttr("SDE7"), + "Location": mapAttr(employee3Location), + } + + _, err = ddb.PutItem(ctx, &dynamodb.PutItemInput{ + TableName: &ddbTableName, + Item: employee3, + }) + if err != nil { + return err + } + + // Employee 4 + employee4Location := map[string]types.AttributeValue{ + "Building": stringAttr("22"), + "Floor": stringAttr("1"), + "Desk": stringAttr("3"), + "City": stringAttr("NYC"), + } + + employee4 := map[string]types.AttributeValue{ + "partition_key": stringAttr("employee4"), + "EmployeeID": stringAttr("emp_004"), + "EmployeeEmail": stringAttr("david@gmail.com"), + "ManagerEmail": stringAttr("zorro@gmail.com"), + "EmployeeName": stringAttr("David Jones"), + "EmployeeTitle": stringAttr("SDE6"), + "Location": mapAttr(employee4Location), + } + + _, err = ddb.PutItem(ctx, &dynamodb.PutItemInput{ + TableName: &ddbTableName, + Item: employee4, + }) + return err +} + +// project.json +// PutAllProjectItemsToTable puts all project items to the table +func PutAllProjectItemsToTable(ctx context.Context, ddbTableName string, ddb *dynamodb.Client) error { + // Project 1 + project1 := map[string]types.AttributeValue{ + "partition_key": stringAttr("project1"), + "ProjectName": stringAttr("project_001"), + "ProjectStatus": stringAttr("Pending"), + "ProjectStart": stringAttr("2022-11-01"), + "Description": stringAttr("Turbo Crypto"), + "ProjectTarget": stringAttr("2024-01-01"), + } + + _, err := ddb.PutItem(ctx, &dynamodb.PutItemInput{ + TableName: &ddbTableName, + Item: project1, + }) + if err != nil { + return err + } + + // Project 2 + project2 := map[string]types.AttributeValue{ + "partition_key": stringAttr("project2"), + "ProjectName": stringAttr("project_002"), + "ProjectStatus": stringAttr("Active"), + "ProjectStart": stringAttr("2022-07-04"), + "Description": stringAttr("Scan Beacons"), + "ProjectTarget": stringAttr("2024-01-01"), + } + + _, err = ddb.PutItem(ctx, &dynamodb.PutItemInput{ + TableName: &ddbTableName, + Item: project2, + }) + if err != nil { + return err + } + + // Project 3 + project3 := map[string]types.AttributeValue{ + "partition_key": stringAttr("project3"), + "ProjectName": stringAttr("project_003"), + "ProjectStatus": stringAttr("Active"), + "ProjectStart": stringAttr("2022-08-05"), + "Description": stringAttr("DB ESDK"), + "ProjectTarget": stringAttr("2023-02-27"), + } + + _, err = ddb.PutItem(ctx, &dynamodb.PutItemInput{ + TableName: &ddbTableName, + Item: project3, + }) + if err != nil { + return err + } + + // Project 4 + project4 := map[string]types.AttributeValue{ + "partition_key": stringAttr("project4"), + "ProjectName": stringAttr("project_004"), + "ProjectStatus": stringAttr("Done"), + "ProjectStart": stringAttr("2020-03-03"), + "Description": stringAttr("S3EC"), + "ProjectTarget": stringAttr("2021-09-05"), + } + + _, err = ddb.PutItem(ctx, &dynamodb.PutItemInput{ + TableName: &ddbTableName, + Item: project4, + }) + return err +} + +// reservation.json +// PutAllReservationItemsToTable puts all reservation items to the table +func PutAllReservationItemsToTable(ctx context.Context, ddbTableName string, ddb *dynamodb.Client) error { + // Reservation 1 + reservation1AttendeeList := []types.AttributeValue{ + stringAttr("able@gmail.com"), + stringAttr("barney@gmail.com"), + } + + reservation1Location := map[string]types.AttributeValue{ + "Building": stringAttr("SEA33"), + "Floor": stringAttr("12"), + "Room": stringAttr("403"), + } + + reservation1 := map[string]types.AttributeValue{ + "partition_key": stringAttr("reservation1"), + "Location": mapAttr(reservation1Location), + "MeetingStart": stringAttr("2022-07-04T13:00"), + "OrganizerEmail": stringAttr("able@gmail.com"), + "Duration": stringAttr("30"), + "Attendees": listAttr(reservation1AttendeeList), + "Subject": stringAttr("Scan beacons"), + } + + _, err := ddb.PutItem(ctx, &dynamodb.PutItemInput{ + TableName: &ddbTableName, + Item: reservation1, + }) + if err != nil { + return err + } + + // Reservation 2 + reservation2AttendeeList := []types.AttributeValue{ + stringAttr("able@gmail.com"), + stringAttr("barney@gmail.com"), + } + + reservation2Location := map[string]types.AttributeValue{ + "Building": stringAttr("SEA33"), + "Floor": stringAttr("12"), + "Room": stringAttr("407"), + } + + reservation2 := map[string]types.AttributeValue{ + "partition_key": stringAttr("reservation2"), + "Location": mapAttr(reservation2Location), + "MeetingStart": stringAttr("2022-07-04T14:00"), + "OrganizerEmail": stringAttr("barney@gmail.com"), + "Duration": stringAttr("30"), + "Attendees": listAttr(reservation2AttendeeList), + "Subject": stringAttr("DB ESDK"), + } + + _, err = ddb.PutItem(ctx, &dynamodb.PutItemInput{ + TableName: &ddbTableName, + Item: reservation2, + }) + return err +} + +// ticket.json +// PutAllTicketItemsToTable puts all ticket items to the table +func PutAllTicketItemsToTable(ctx context.Context, ddbTableName string, ddb *dynamodb.Client) error { + // Ticket 1 + ticket1 := map[string]types.AttributeValue{ + "partition_key": stringAttr("ticket1"), + "TicketNumber": stringAttr("ticket_001"), + "TicketModTime": stringAttr("2022-10-07T14:32:25"), + "CreatorEmail": stringAttr("zorro@gmail.com"), + "AssigneeEmail": stringAttr("able@gmail.com"), + "Severity": stringAttr("3"), + "Subject": stringAttr("Bad bug"), + "Message": stringAttr("This bug looks pretty bad"), + } + + _, err := ddb.PutItem(ctx, &dynamodb.PutItemInput{ + TableName: &ddbTableName, + Item: ticket1, + }) + if err != nil { + return err + } + + // Ticket 2 + ticket2 := map[string]types.AttributeValue{ + "partition_key": stringAttr("ticket2"), + "TicketNumber": stringAttr("ticket_001"), + "TicketModTime": stringAttr("2022-10-07T14:32:25"), + "CreatorEmail": stringAttr("able@gmail.com"), + "AssigneeEmail": stringAttr("charlie@gmail.com"), + "Severity": stringAttr("3"), + "Subject": stringAttr("Bad bug"), + "Message": stringAttr("Charlie should handle this"), + } + + _, err = ddb.PutItem(ctx, &dynamodb.PutItemInput{ + TableName: &ddbTableName, + Item: ticket2, + }) + if err != nil { + return err + } + + // Ticket 3 + ticket3 := map[string]types.AttributeValue{ + "partition_key": stringAttr("ticket3"), + "TicketNumber": stringAttr("ticket_002"), + "TicketModTime": stringAttr("2022-10-06T14:32:25"), + "CreatorEmail": stringAttr("zorro@gmail.com"), + "AssigneeEmail": stringAttr("charlie@gmail.com"), + "Severity": stringAttr("3"), + "Subject": stringAttr("Easy Bug"), + "Message": stringAttr("This seems simple enough"), + } + + _, err = ddb.PutItem(ctx, &dynamodb.PutItemInput{ + TableName: &ddbTableName, + Item: ticket3, + }) + if err != nil { + return err + } + + // Ticket 4 + ticket4 := map[string]types.AttributeValue{ + "partition_key": stringAttr("ticket4"), + "TicketNumber": stringAttr("ticket_002"), + "TicketModTime": stringAttr("2022-10-08T14:32:25"), + "CreatorEmail": stringAttr("charlie@gmail.com"), + "AssigneeEmail": stringAttr("able@gmail.com"), + "Severity": stringAttr("3"), + "Subject": stringAttr("Easy Bug"), + "Message": stringAttr("that's in able's code"), + } + + _, err = ddb.PutItem(ctx, &dynamodb.PutItemInput{ + TableName: &ddbTableName, + Item: ticket4, + }) + return err +} + +// timecard.json +// PutAllTimecardItemsToTable puts all timecard items to the table +func PutAllTimecardItemsToTable(ctx context.Context, ddbTableName string, ddb *dynamodb.Client) error { + // Timecard 1 + timecard1 := map[string]types.AttributeValue{ + "partition_key": stringAttr("timecard1"), + "ProjectName": stringAttr("project_002"), + "TimeCardStart": stringAttr("2022-09-12"), + "EmployeeEmail": stringAttr("able@gmail.com"), + "Hours": stringAttr("40"), + "Role": stringAttr("SDE3"), + } + + _, err := ddb.PutItem(ctx, &dynamodb.PutItemInput{ + TableName: &ddbTableName, + Item: timecard1, + }) + if err != nil { + return err + } + + // Timecard 2 + timecard2 := map[string]types.AttributeValue{ + "partition_key": stringAttr("timecard2"), + "ProjectName": stringAttr("project_002"), + "TimeCardStart": stringAttr("2022-09-12"), + "EmployeeEmail": stringAttr("barney@gmail.com"), + "Hours": stringAttr("20"), + "Role": stringAttr("PM"), + } + + _, err = ddb.PutItem(ctx, &dynamodb.PutItemInput{ + TableName: &ddbTableName, + Item: timecard2, + }) + if err != nil { + return err + } + + // Timecard 3 + timecard3 := map[string]types.AttributeValue{ + "partition_key": stringAttr("timecard3"), + "ProjectName": stringAttr("project_003"), + "TimeCardStart": stringAttr("2022-09-12"), + "EmployeeEmail": stringAttr("charlie@gmail.com"), + "Hours": stringAttr("40"), + "Role": stringAttr("SDE3"), + } + + _, err = ddb.PutItem(ctx, &dynamodb.PutItemInput{ + TableName: &ddbTableName, + Item: timecard3, + }) + if err != nil { + return err + } + + // Timecard 4 + timecard4 := map[string]types.AttributeValue{ + "partition_key": stringAttr("timecard4"), + "ProjectName": stringAttr("project_003"), + "TimeCardStart": stringAttr("2022-09-12"), + "EmployeeEmail": stringAttr("barney@gmail.com"), + "Hours": stringAttr("20"), + "Role": stringAttr("PM"), + } + + _, err = ddb.PutItem(ctx, &dynamodb.PutItemInput{ + TableName: &ddbTableName, + Item: timecard4, + }) + return err +} diff --git a/releases/go/dynamodb-esdk/examples/searchableencryption/complexexample/queryrequests.go b/releases/go/dynamodb-esdk/examples/searchableencryption/complexexample/queryrequests.go new file mode 100644 index 000000000..ce1e85936 --- /dev/null +++ b/releases/go/dynamodb-esdk/examples/searchableencryption/complexexample/queryrequests.go @@ -0,0 +1,1426 @@ +// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +package complexexample + +import ( + "context" + "fmt" + + "github.com/aws/aws-sdk-go-v2/service/dynamodb" + "github.com/aws/aws-sdk-go-v2/service/dynamodb/types" +) + +/* + * This file is used in an example to demonstrate complex queries + * you can perform using beacons. + * The example data used is for demonstrative purposes only, + * and might not meet the distribution and correlation uniqueness + * recommendations for beacons. + * See our documentation for whether beacons are + * right for your particular data set: + * https://docs.aws.amazon.com/database-encryption-sdk/latest/devguide/searchable-encryption.html#are-beacons-right-for-me + * + * This class implements query access patterns from our workshop. + * The queries in this file are more complicated than in other searchable encryption examples, + * and should demonstrate how one can structure queries on beacons in a broader variety of applications. + */ + +// RunQueries executes all 23 complex query examples +func RunQueries(ctx context.Context, ddbTableName string, ddb *dynamodb.Client) error { + if err := RunQuery1(ctx, ddbTableName, ddb); err != nil { + return err + } + if err := RunQuery2(ctx, ddbTableName, ddb); err != nil { + return err + } + if err := RunQuery3(ctx, ddbTableName, ddb); err != nil { + return err + } + if err := RunQuery4(ctx, ddbTableName, ddb); err != nil { + return err + } + if err := RunQuery5(ctx, ddbTableName, ddb); err != nil { + return err + } + if err := RunQuery6(ctx, ddbTableName, ddb); err != nil { + return err + } + if err := RunQuery7(ctx, ddbTableName, ddb); err != nil { + return err + } + if err := RunQuery8(ctx, ddbTableName, ddb); err != nil { + return err + } + if err := RunQuery9(ctx, ddbTableName, ddb); err != nil { + return err + } + if err := RunQuery10(ctx, ddbTableName, ddb); err != nil { + return err + } + if err := RunQuery11(ctx, ddbTableName, ddb); err != nil { + return err + } + if err := RunQuery12(ctx, ddbTableName, ddb); err != nil { + return err + } + if err := RunQuery13(ctx, ddbTableName, ddb); err != nil { + return err + } + if err := RunQuery14(ctx, ddbTableName, ddb); err != nil { + return err + } + if err := RunQuery15(ctx, ddbTableName, ddb); err != nil { + return err + } + if err := RunQuery16(ctx, ddbTableName, ddb); err != nil { + return err + } + if err := RunQuery17(ctx, ddbTableName, ddb); err != nil { + return err + } + if err := RunQuery18(ctx, ddbTableName, ddb); err != nil { + return err + } + if err := RunQuery19(ctx, ddbTableName, ddb); err != nil { + return err + } + if err := RunQuery20(ctx, ddbTableName, ddb); err != nil { + return err + } + if err := RunQuery21(ctx, ddbTableName, ddb); err != nil { + return err + } + if err := RunQuery22(ctx, ddbTableName, ddb); err != nil { + return err + } + if err := RunQuery23(ctx, ddbTableName, ddb); err != nil { + return err + } + return nil +} + +// Helper function to check if a list contains a specific string value +func listContainsString(list []types.AttributeValue, value string) bool { + for _, item := range list { + if s, ok := item.(*types.AttributeValueMemberS); ok && s.Value == value { + return true + } + } + return false +} + +// RunQuery1 executes Query 1: Get meetings by date and email +// Key condition: PK1=email SK1 between(date1, date2) +// Filter condition: duration > 0 +func RunQuery1(ctx context.Context, ddbTableName string, ddb *dynamodb.Client) error { + query1AttributeNames := map[string]string{ + "#pk1": "PK1", + "#sk1": "SK1", + "#duration": "Duration", + } + + query1AttributeValues := map[string]types.AttributeValue{ + ":e": stringAttr("EE-able@gmail.com"), + ":date1": stringAttr("MS-2022-07-02"), + ":date2": stringAttr("MS-2022-07-08"), + ":zero": stringAttr("0"), + } + + query1Input := &dynamodb.QueryInput{ + TableName: &ddbTableName, + IndexName: StringPtr("GSI-1"), + KeyConditionExpression: StringPtr("#pk1 = :e AND #sk1 BETWEEN :date1 AND :date2"), + FilterExpression: StringPtr("#duration > :zero"), + ExpressionAttributeNames: query1AttributeNames, + ExpressionAttributeValues: query1AttributeValues, + } + + query1Response, err := ddb.Query(ctx, query1Input) + if err != nil { + return fmt.Errorf("query1 failed: %w", err) + } + + // Validate query was returned successfully + if query1Response == nil { + return fmt.Errorf("query1: no response") + } + + // Assert 1 item was returned: `meeting1` + if len(query1Response.Items) != 1 { + return fmt.Errorf("query1: expected 1 item, got %d", len(query1Response.Items)) + } + + // Known value test: Assert some properties on one of the items + foundKnownValueItemQuery1 := false + for _, item := range query1Response.Items { + if partitionKey, ok := item["partition_key"].(*types.AttributeValueMemberS); ok && partitionKey.Value == "meeting1" { + foundKnownValueItemQuery1 = true + + if subject, ok := item["Subject"].(*types.AttributeValueMemberS); !ok || subject.Value != "Scan Beacons" { + return fmt.Errorf("query1: expected Subject 'Scan Beacons'") + } + + if location, ok := item["Location"].(*types.AttributeValueMemberM); ok { + if floor, ok := location.Value["Floor"].(*types.AttributeValueMemberS); !ok || floor.Value != "12" { + return fmt.Errorf("query1: expected Floor '12'") + } + } else { + return fmt.Errorf("query1: expected Location map") + } + + if attendees, ok := item["Attendees"].(*types.AttributeValueMemberL); ok { + if !listContainsString(attendees.Value, "zorro@gmail.com") { + return fmt.Errorf("query1: expected attendee 'zorro@gmail.com'") + } + } else { + return fmt.Errorf("query1: expected Attendees list") + } + } + } + + if !foundKnownValueItemQuery1 { + return fmt.Errorf("query1: did not find expected item 'meeting1'") + } + + return nil +} + +// RunQuery2 executes Query 2: Get meetings by date and employeeID +// Key condition: PK=employeeID SK between(date1, date2) +// Filter condition: duration > 0 +func RunQuery2(ctx context.Context, ddbTableName string, ddb *dynamodb.Client) error { + query2AttributeNames := map[string]string{ + "#pk": "PK", + "#sk": "SK", + "#duration": "Duration", + } + + query2AttributeValues := map[string]types.AttributeValue{ + ":employee": stringAttr("E-emp_001"), + ":date1": stringAttr("MS-2022-07-02"), + ":date2": stringAttr("MS-2022-07-08"), + ":zero": stringAttr("0"), + } + + query2Input := &dynamodb.QueryInput{ + TableName: &ddbTableName, + IndexName: StringPtr("GSI-0"), + KeyConditionExpression: StringPtr("#pk = :employee AND #sk BETWEEN :date1 AND :date2"), + FilterExpression: StringPtr("#duration > :zero"), + ExpressionAttributeNames: query2AttributeNames, + ExpressionAttributeValues: query2AttributeValues, + } + + query2Response, err := ddb.Query(ctx, query2Input) + if err != nil { + return fmt.Errorf("query2 failed: %w", err) + } + + // Assert 1 item was returned: `meeting1` + if len(query2Response.Items) != 1 { + return fmt.Errorf("query2: expected 1 item, got %d", len(query2Response.Items)) + } + + // Known value test: Assert some properties on one of the items + foundKnownValueItemQuery2 := false + for _, item := range query2Response.Items { + if partitionKey, ok := item["partition_key"].(*types.AttributeValueMemberS); ok && partitionKey.Value == "meeting1" { + foundKnownValueItemQuery2 = true + + if subject, ok := item["Subject"].(*types.AttributeValueMemberS); !ok || subject.Value != "Scan Beacons" { + return fmt.Errorf("query2: expected Subject 'Scan Beacons'") + } + + if location, ok := item["Location"].(*types.AttributeValueMemberM); ok { + if floor, ok := location.Value["Floor"].(*types.AttributeValueMemberS); !ok || floor.Value != "12" { + return fmt.Errorf("query2: expected Floor '12'") + } + } else { + return fmt.Errorf("query2: expected Location map") + } + + if attendees, ok := item["Attendees"].(*types.AttributeValueMemberL); ok { + if !listContainsString(attendees.Value, "zorro@gmail.com") { + return fmt.Errorf("query2: expected attendee 'zorro@gmail.com'") + } + } else { + return fmt.Errorf("query2: expected Attendees list") + } + } + } + + if !foundKnownValueItemQuery2 { + return fmt.Errorf("query2: did not find expected item 'meeting1'") + } + + return nil +} + +// RunQuery3 executes Query 3: Get meetings by date and building/floor/room +// Key condition: PK=employeeID SK between(date1, date2) +// Filter condition: SK contains building.floor.room (see NOTE) +// NOTE: This query is modified from Demo.md. +// +// Demo.md calls for a filter condition "SK contains building.floor.room" +// However, one cannot use primary keys (partition nor sort) in a filter expression. +// Instead, this query filters on the individual beacon attributes: building, floor, and room. +func RunQuery3(ctx context.Context, ddbTableName string, ddb *dynamodb.Client) error { + query3AttributeNames := map[string]string{ + "#pk": "PK", + "#sk": "SK", + "#building": "Building", + "#floor": "Floor", + "#room": "Room", + } + + query3AttributeValues := map[string]types.AttributeValue{ + ":buildingbeacon": stringAttr("B-SEA33"), + ":building": stringAttr("SEA33"), + ":floor": stringAttr("12"), + ":room": stringAttr("403"), + ":date1": stringAttr("MS-2022-07-02"), + ":date2": stringAttr("MS-2022-07-08"), + } + + query3Input := &dynamodb.QueryInput{ + TableName: &ddbTableName, + IndexName: StringPtr("GSI-0"), + KeyConditionExpression: StringPtr("#pk = :buildingbeacon AND #sk BETWEEN :date1 AND :date2"), + FilterExpression: StringPtr("#building = :building AND #floor = :floor AND #room = :room"), + ExpressionAttributeNames: query3AttributeNames, + ExpressionAttributeValues: query3AttributeValues, + } + + query3Response, err := ddb.Query(ctx, query3Input) + if err != nil { + return fmt.Errorf("query3 failed: %w", err) + } + + // Assert 1 item was returned: `reservation1` + if len(query3Response.Items) != 1 { + return fmt.Errorf("query3: expected 1 item, got %d", len(query3Response.Items)) + } + + // Known value test: Assert some properties on one of the items + foundKnownValueItemQuery3 := false + for _, item := range query3Response.Items { + if partitionKey, ok := item["partition_key"].(*types.AttributeValueMemberS); ok && partitionKey.Value == "reservation1" { + foundKnownValueItemQuery3 = true + + if subject, ok := item["Subject"].(*types.AttributeValueMemberS); !ok || subject.Value != "Scan beacons" { + return fmt.Errorf("query3: expected Subject 'Scan beacons'") + } + + if location, ok := item["Location"].(*types.AttributeValueMemberM); ok { + if building, ok := location.Value["Building"].(*types.AttributeValueMemberS); !ok || building.Value != "SEA33" { + return fmt.Errorf("query3: expected Building 'SEA33'") + } + } else { + return fmt.Errorf("query3: expected Location map") + } + + if attendees, ok := item["Attendees"].(*types.AttributeValueMemberL); ok { + if !listContainsString(attendees.Value, "barney@gmail.com") { + return fmt.Errorf("query3: expected attendee 'barney@gmail.com'") + } + } else { + return fmt.Errorf("query3: expected Attendees list") + } + } + } + + if !foundKnownValueItemQuery3 { + return fmt.Errorf("query3: did not find expected item 'reservation1'") + } + + return nil +} + +// RunQuery4 executes Query 4: Get employee data by email +// Key condition: PK1=email SK1=employee ID +func RunQuery4(ctx context.Context, ddbTableName string, ddb *dynamodb.Client) error { + query4AttributeNames := map[string]string{ + "#pk1": "PK1", + "#sk1": "SK1", + } + + query4AttributeValues := map[string]types.AttributeValue{ + ":email": stringAttr("EE-able@gmail.com"), + ":employee": stringAttr("E-emp_001"), + } + + query4Input := &dynamodb.QueryInput{ + TableName: &ddbTableName, + IndexName: StringPtr("GSI-1"), + KeyConditionExpression: StringPtr("#pk1 = :email AND #sk1 = :employee"), + ExpressionAttributeNames: query4AttributeNames, + ExpressionAttributeValues: query4AttributeValues, + } + + query4Response, err := ddb.Query(ctx, query4Input) + if err != nil { + return fmt.Errorf("query4 failed: %w", err) + } + + // Assert 1 item was returned: `employee1` + if len(query4Response.Items) != 1 { + return fmt.Errorf("query4: expected 1 item, got %d", len(query4Response.Items)) + } + + // Known value test: Assert some properties on one of the items + foundKnownValueItemQuery4 := false + for _, item := range query4Response.Items { + if partitionKey, ok := item["partition_key"].(*types.AttributeValueMemberS); ok && partitionKey.Value == "employee1" { + foundKnownValueItemQuery4 = true + + if employeeID, ok := item["EmployeeID"].(*types.AttributeValueMemberS); !ok || employeeID.Value != "emp_001" { + return fmt.Errorf("query4: expected EmployeeID 'emp_001'") + } + + if location, ok := item["Location"].(*types.AttributeValueMemberM); ok { + if desk, ok := location.Value["Desk"].(*types.AttributeValueMemberS); !ok || desk.Value != "3" { + return fmt.Errorf("query4: expected Desk '3'") + } + } else { + return fmt.Errorf("query4: expected Location map") + } + } + } + + if !foundKnownValueItemQuery4 { + return fmt.Errorf("query4: did not find expected item 'employee1'") + } + + return nil +} + +// RunQuery5 executes Query 5: Get meetings by email +// Key condition: PK1=email SK1 > 30 days ago +func RunQuery5(ctx context.Context, ddbTableName string, ddb *dynamodb.Client) error { + query5AttributeNames := map[string]string{ + "#pk1": "PK1", + "#sk1": "SK1", + } + + query5AttributeValues := map[string]types.AttributeValue{ + ":email": stringAttr("EE-able@gmail.com"), + ":thirtydaysago": stringAttr("MS-2023-03-20"), + ":prefix": stringAttr("MS-"), + } + + query5Input := &dynamodb.QueryInput{ + TableName: &ddbTableName, + IndexName: StringPtr("GSI-1"), + KeyConditionExpression: StringPtr("#pk1 = :email AND #sk1 BETWEEN :prefix AND :thirtydaysago"), + ExpressionAttributeNames: query5AttributeNames, + ExpressionAttributeValues: query5AttributeValues, + } + + query5Response, err := ddb.Query(ctx, query5Input) + if err != nil { + return fmt.Errorf("query5 failed: %w", err) + } + + // Assert 1 item was returned: `meeting1` + if len(query5Response.Items) != 1 { + return fmt.Errorf("query5: expected 1 item, got %d", len(query5Response.Items)) + } + + // Known value test: Assert some properties on one of the items + foundKnownValueItemQuery5 := false + for _, item := range query5Response.Items { + if partitionKey, ok := item["partition_key"].(*types.AttributeValueMemberS); ok && partitionKey.Value == "meeting1" { + foundKnownValueItemQuery5 = true + + if subject, ok := item["Subject"].(*types.AttributeValueMemberS); !ok || subject.Value != "Scan Beacons" { + return fmt.Errorf("query5: expected Subject 'Scan Beacons'") + } + + if location, ok := item["Location"].(*types.AttributeValueMemberM); ok { + if floor, ok := location.Value["Floor"].(*types.AttributeValueMemberS); !ok || floor.Value != "12" { + return fmt.Errorf("query5: expected Floor '12'") + } + } else { + return fmt.Errorf("query5: expected Location map") + } + + if attendees, ok := item["Attendees"].(*types.AttributeValueMemberL); ok { + if !listContainsString(attendees.Value, "zorro@gmail.com") { + return fmt.Errorf("query5: expected attendee 'zorro@gmail.com'") + } + } else { + return fmt.Errorf("query5: expected Attendees list") + } + } + } + + if !foundKnownValueItemQuery5 { + return fmt.Errorf("query5: did not find expected item 'meeting1'") + } + + return nil +} + +// RunQuery6 executes Query 6: Get tickets by email +// Key condition: PK1=email SK1 > 30 days ago +func RunQuery6(ctx context.Context, ddbTableName string, ddb *dynamodb.Client) error { + query6AttributeNames := map[string]string{ + "#pk1": "PK1", + "#sk1": "SK1", + } + + query6AttributeValues := map[string]types.AttributeValue{ + ":creatoremail": stringAttr("CE-zorro@gmail.com"), + ":thirtydaysago": stringAttr("MS-2023-03-20"), + } + + query6Input := &dynamodb.QueryInput{ + TableName: &ddbTableName, + IndexName: StringPtr("GSI-1"), + KeyConditionExpression: StringPtr("#pk1 = :creatoremail AND #sk1 < :thirtydaysago"), + ExpressionAttributeNames: query6AttributeNames, + ExpressionAttributeValues: query6AttributeValues, + } + + query6Response, err := ddb.Query(ctx, query6Input) + if err != nil { + return fmt.Errorf("query6 failed: %w", err) + } + + // Assert 2 items returned: Expected to be `ticket1` and `ticket3` + if len(query6Response.Items) != 2 { + return fmt.Errorf("query6: expected 2 items, got %d", len(query6Response.Items)) + } + + // Known value test: Assert some properties on one of the items + foundKnownValueItemQuery6 := false + for _, item := range query6Response.Items { + if partitionKey, ok := item["partition_key"].(*types.AttributeValueMemberS); ok && partitionKey.Value == "ticket1" { + foundKnownValueItemQuery6 = true + + if ticketNumber, ok := item["TicketNumber"].(*types.AttributeValueMemberS); !ok || ticketNumber.Value != "ticket_001" { + return fmt.Errorf("query6: expected TicketNumber 'ticket_001'") + } + } + } + + if !foundKnownValueItemQuery6 { + return fmt.Errorf("query6: did not find expected item 'ticket1'") + } + + return nil +} + +// RunQuery7 executes Query 7: Get reservations by email +// Key condition: PK1=organizeremail SK1 > 30 days ago +func RunQuery7(ctx context.Context, ddbTableName string, ddb *dynamodb.Client) error { + query7AttributeNames := map[string]string{ + "#pk1": "PK1", + "#sk1": "SK1", + } + + query7AttributeValues := map[string]types.AttributeValue{ + ":organizeremail": stringAttr("OE-able@gmail.com"), + ":thirtydaysago": stringAttr("MS-2023-03-20"), + } + + query7Input := &dynamodb.QueryInput{ + TableName: &ddbTableName, + IndexName: StringPtr("GSI-1"), + KeyConditionExpression: StringPtr("#pk1 = :organizeremail AND #sk1 < :thirtydaysago"), + ExpressionAttributeNames: query7AttributeNames, + ExpressionAttributeValues: query7AttributeValues, + } + + query7Response, err := ddb.Query(ctx, query7Input) + if err != nil { + return fmt.Errorf("query7 failed: %w", err) + } + + // Assert 1 item was returned: `reservation1` + if len(query7Response.Items) != 1 { + return fmt.Errorf("query7: expected 1 item, got %d", len(query7Response.Items)) + } + + // Known value test: Assert some properties on one of the items + foundKnownValueItemQuery7 := false + for _, item := range query7Response.Items { + if partitionKey, ok := item["partition_key"].(*types.AttributeValueMemberS); ok && partitionKey.Value == "reservation1" { + foundKnownValueItemQuery7 = true + + if subject, ok := item["Subject"].(*types.AttributeValueMemberS); !ok || subject.Value != "Scan beacons" { + return fmt.Errorf("query7: expected Subject 'Scan beacons'") + } + + if location, ok := item["Location"].(*types.AttributeValueMemberM); ok { + if floor, ok := location.Value["Floor"].(*types.AttributeValueMemberS); !ok || floor.Value != "12" { + return fmt.Errorf("query7: expected Floor '12'") + } + } else { + return fmt.Errorf("query7: expected Location map") + } + + if attendees, ok := item["Attendees"].(*types.AttributeValueMemberL); ok { + if !listContainsString(attendees.Value, "barney@gmail.com") { + return fmt.Errorf("query7: expected attendee 'barney@gmail.com'") + } + } else { + return fmt.Errorf("query7: expected Attendees list") + } + } + } + + if !foundKnownValueItemQuery7 { + return fmt.Errorf("query7: did not find expected item 'reservation1'") + } + + return nil +} + +// RunQuery8 executes Query 8: Get time cards by email +// Key condition: PK1=employeeemail SK1 > 30 days ago +func RunQuery8(ctx context.Context, ddbTableName string, ddb *dynamodb.Client) error { + query8AttributeNames := map[string]string{ + "#pk1": "PK1", + "#sk1": "SK1", + } + + query8AttributeValues := map[string]types.AttributeValue{ + ":email": stringAttr("EE-able@gmail.com"), + ":prefix": stringAttr("TC-"), + ":thirtydaysago": stringAttr("TC-2023-03-20"), + } + + query8Input := &dynamodb.QueryInput{ + TableName: &ddbTableName, + IndexName: StringPtr("GSI-1"), + KeyConditionExpression: StringPtr("#pk1 = :email AND #sk1 BETWEEN :prefix AND :thirtydaysago"), + ExpressionAttributeNames: query8AttributeNames, + ExpressionAttributeValues: query8AttributeValues, + } + + query8Response, err := ddb.Query(ctx, query8Input) + if err != nil { + return fmt.Errorf("query8 failed: %w", err) + } + + // Assert 1 item was returned: `timecard1` + if len(query8Response.Items) != 1 { + return fmt.Errorf("query8: expected 1 item, got %d", len(query8Response.Items)) + } + + // Known value test: Assert some properties on one of the items + foundKnownValueItemQuery8 := false + for _, item := range query8Response.Items { + if partitionKey, ok := item["partition_key"].(*types.AttributeValueMemberS); ok && partitionKey.Value == "timecard1" { + foundKnownValueItemQuery8 = true + + if projectName, ok := item["ProjectName"].(*types.AttributeValueMemberS); !ok || projectName.Value != "project_002" { + return fmt.Errorf("query8: expected ProjectName 'project_002'") + } + } + } + + if !foundKnownValueItemQuery8 { + return fmt.Errorf("query8: did not find expected item 'timecard1'") + } + + return nil +} + +// RunQuery9 executes Query 9: Get employee info by employee ID +// Key condition: PK1=employeeID SK starts with "E-" +func RunQuery9(ctx context.Context, ddbTableName string, ddb *dynamodb.Client) error { + query9AttributeNames := map[string]string{ + "#pk": "PK", + "#sk": "SK", + } + + query9AttributeValues := map[string]types.AttributeValue{ + ":employee": stringAttr("E-emp_001"), + ":prefix": stringAttr("E-"), + } + + query9Input := &dynamodb.QueryInput{ + TableName: &ddbTableName, + IndexName: StringPtr("GSI-0"), + KeyConditionExpression: StringPtr("#pk = :employee AND begins_with(#sk, :prefix)"), + ExpressionAttributeNames: query9AttributeNames, + ExpressionAttributeValues: query9AttributeValues, + } + + query9Response, err := ddb.Query(ctx, query9Input) + if err != nil { + return fmt.Errorf("query9 failed: %w", err) + } + + // Assert 1 item was returned: `employee1` + if len(query9Response.Items) != 1 { + return fmt.Errorf("query9: expected 1 item, got %d", len(query9Response.Items)) + } + + // Known value test: Assert some properties on one of the items + foundKnownValueItemQuery9 := false + for _, item := range query9Response.Items { + if partitionKey, ok := item["partition_key"].(*types.AttributeValueMemberS); ok && partitionKey.Value == "employee1" { + foundKnownValueItemQuery9 = true + + if employeeID, ok := item["EmployeeID"].(*types.AttributeValueMemberS); !ok || employeeID.Value != "emp_001" { + return fmt.Errorf("query9: expected EmployeeID 'emp_001'") + } + } + } + + if !foundKnownValueItemQuery9 { + return fmt.Errorf("query9: did not find expected item 'employee1'") + } + + return nil +} + +// RunQuery10 executes Query 10: Get employee info by email +// Key condition: PK1=email +// Filter condition: SK starts with "E-" +func RunQuery10(ctx context.Context, ddbTableName string, ddb *dynamodb.Client) error { + query10AttributeNames := map[string]string{ + "#pk1": "PK1", + "#sk1": "SK1", + } + + query10AttributeValues := map[string]types.AttributeValue{ + ":email": stringAttr("EE-able@gmail.com"), + ":prefix": stringAttr("E-"), + } + + query10Input := &dynamodb.QueryInput{ + TableName: &ddbTableName, + IndexName: StringPtr("GSI-1"), + KeyConditionExpression: StringPtr("#pk1 = :email AND begins_with(#sk1, :prefix)"), + ExpressionAttributeNames: query10AttributeNames, + ExpressionAttributeValues: query10AttributeValues, + } + + query10Response, err := ddb.Query(ctx, query10Input) + if err != nil { + return fmt.Errorf("query10 failed: %w", err) + } + + // Assert 1 item was returned: `employee1` + if len(query10Response.Items) != 1 { + return fmt.Errorf("query10: expected 1 item, got %d", len(query10Response.Items)) + } + + // Known value test: Assert some properties on one of the items + foundKnownValueItemQuery10 := false + for _, item := range query10Response.Items { + if partitionKey, ok := item["partition_key"].(*types.AttributeValueMemberS); ok && partitionKey.Value == "employee1" { + foundKnownValueItemQuery10 = true + + if employeeID, ok := item["EmployeeID"].(*types.AttributeValueMemberS); !ok || employeeID.Value != "emp_001" { + return fmt.Errorf("query10: expected EmployeeID 'emp_001'") + } + } + } + + if !foundKnownValueItemQuery10 { + return fmt.Errorf("query10: did not find expected item 'employee1'") + } + + return nil +} + +// RunQuery11 executes Query 11: Get ticket history by ticket number +// Key condition: PK=TicketNumber +func RunQuery11(ctx context.Context, ddbTableName string, ddb *dynamodb.Client) error { + query11AttributeNames := map[string]string{ + "#pk": "PK", + } + + query11AttributeValues := map[string]types.AttributeValue{ + ":ticket": stringAttr("T-ticket_001"), + } + + query11Input := &dynamodb.QueryInput{ + TableName: &ddbTableName, + IndexName: StringPtr("GSI-0"), + KeyConditionExpression: StringPtr("#pk = :ticket"), + ExpressionAttributeNames: query11AttributeNames, + ExpressionAttributeValues: query11AttributeValues, + } + + query11Response, err := ddb.Query(ctx, query11Input) + if err != nil { + return fmt.Errorf("query11 failed: %w", err) + } + + // Assert 2 items returned: Expected to be `ticket1` and `ticket2` + if len(query11Response.Items) != 2 { + return fmt.Errorf("query11: expected 2 items, got %d", len(query11Response.Items)) + } + + // Known value test: Assert some properties on one of the items + foundKnownValueItemQuery11 := false + for _, item := range query11Response.Items { + if partitionKey, ok := item["partition_key"].(*types.AttributeValueMemberS); ok && partitionKey.Value == "ticket1" { + foundKnownValueItemQuery11 = true + + if ticketNumber, ok := item["TicketNumber"].(*types.AttributeValueMemberS); !ok || ticketNumber.Value != "ticket_001" { + return fmt.Errorf("query11: expected TicketNumber 'ticket_001'") + } + } + } + + if !foundKnownValueItemQuery11 { + return fmt.Errorf("query11: did not find expected item 'ticket1'") + } + + return nil +} + +// RunQuery12 executes Query 12: Get Ticket History by employee email +// Key condition: PK1=CreatorEmail +// Filter condition: PK=TicketNumber +func RunQuery12(ctx context.Context, ddbTableName string, ddb *dynamodb.Client) error { + query12AttributeNames := map[string]string{ + "#pk1": "PK1", + "#pk": "PK", + } + + query12AttributeValues := map[string]types.AttributeValue{ + ":email": stringAttr("CE-zorro@gmail.com"), + ":ticket": stringAttr("T-ticket_001"), + } + + query12Input := &dynamodb.QueryInput{ + TableName: &ddbTableName, + IndexName: StringPtr("GSI-1"), + KeyConditionExpression: StringPtr("#pk1 = :email"), + FilterExpression: StringPtr("#pk = :ticket"), + ExpressionAttributeNames: query12AttributeNames, + ExpressionAttributeValues: query12AttributeValues, + } + + query12Response, err := ddb.Query(ctx, query12Input) + if err != nil { + return fmt.Errorf("query12 failed: %w", err) + } + + // Assert 1 item was returned: `ticket1` + if len(query12Response.Items) != 1 { + return fmt.Errorf("query12: expected 1 item, got %d", len(query12Response.Items)) + } + + // Known value test: Assert some properties on one of the items + foundKnownValueItemQuery12 := false + for _, item := range query12Response.Items { + if partitionKey, ok := item["partition_key"].(*types.AttributeValueMemberS); ok && partitionKey.Value == "ticket1" { + foundKnownValueItemQuery12 = true + + if ticketNumber, ok := item["TicketNumber"].(*types.AttributeValueMemberS); !ok || ticketNumber.Value != "ticket_001" { + return fmt.Errorf("query12: expected TicketNumber 'ticket_001'") + } + } + } + + if !foundKnownValueItemQuery12 { + return fmt.Errorf("query12: did not find expected item 'ticket1'") + } + + return nil +} + +// RunQuery13 executes Query 13: Get ticket history by assignee email +// Key condition: PK=AssigneeEmail +// Filter condition: PK=ticketNumber +func RunQuery13(ctx context.Context, ddbTableName string, ddb *dynamodb.Client) error { + query13AttributeNames := map[string]string{ + "#pk2": "PK2", + "#pk": "PK", + } + + query13AttributeValues := map[string]types.AttributeValue{ + ":assigneeemail": stringAttr("AE-able@gmail.com"), + ":ticket": stringAttr("T-ticket_001"), + } + + query13Input := &dynamodb.QueryInput{ + TableName: &ddbTableName, + IndexName: StringPtr("GSI-2"), + KeyConditionExpression: StringPtr("#pk2 = :assigneeemail"), + FilterExpression: StringPtr("#pk = :ticket"), + ExpressionAttributeNames: query13AttributeNames, + ExpressionAttributeValues: query13AttributeValues, + } + + query13Response, err := ddb.Query(ctx, query13Input) + if err != nil { + return fmt.Errorf("query13 failed: %w", err) + } + + // Assert 1 item was returned: `ticket1` + if len(query13Response.Items) != 1 { + return fmt.Errorf("query13: expected 1 item, got %d", len(query13Response.Items)) + } + + // Known value test: Assert some properties on one of the items + foundKnownValueItemQuery13 := false + for _, item := range query13Response.Items { + if partitionKey, ok := item["partition_key"].(*types.AttributeValueMemberS); ok && partitionKey.Value == "ticket1" { + foundKnownValueItemQuery13 = true + + if subject, ok := item["Subject"].(*types.AttributeValueMemberS); !ok || subject.Value != "Bad bug" { + return fmt.Errorf("query13: expected Subject 'Bad bug'") + } + } + } + + if !foundKnownValueItemQuery13 { + return fmt.Errorf("query13: did not find expected item 'ticket1'") + } + + return nil +} + +// RunQuery14 executes Query 14: Get employees by city.building.floor.desk +// Key condition: PK3=city SK3 begins_with(building.floor.desk) +func RunQuery14(ctx context.Context, ddbTableName string, ddb *dynamodb.Client) error { + query14AttributeNames := map[string]string{ + "#pk3": "PK3", + "#sk3": "SK3", + } + + query14AttributeValues := map[string]types.AttributeValue{ + ":city": stringAttr("C-Seattle"), + ":location": stringAttr("B-44~F-12~D-3"), + } + + query14Input := &dynamodb.QueryInput{ + TableName: &ddbTableName, + IndexName: StringPtr("GSI-3"), + KeyConditionExpression: StringPtr("#pk3 = :city AND begins_with(#sk3, :location)"), + ExpressionAttributeNames: query14AttributeNames, + ExpressionAttributeValues: query14AttributeValues, + } + + // GSIs do not update instantly, so if the results come back empty + // we retry after a short sleep + for i := 0; i < 10; i++ { + query14Response, err := ddb.Query(ctx, query14Input) + if err != nil { + return fmt.Errorf("query14 failed: %w", err) + } + + // if no results, sleep and try again + if len(query14Response.Items) == 0 { + // Sleep for 20ms and continue + continue + } + + // Assert 1 item was returned: `employee1` + if len(query14Response.Items) != 1 { + return fmt.Errorf("query14: expected 1 item, got %d", len(query14Response.Items)) + } + + // Known value test: Assert some properties on one of the items + foundKnownValueItemQuery14 := false + for _, item := range query14Response.Items { + if partitionKey, ok := item["partition_key"].(*types.AttributeValueMemberS); ok && partitionKey.Value == "employee1" { + foundKnownValueItemQuery14 = true + + if employeeID, ok := item["EmployeeID"].(*types.AttributeValueMemberS); !ok || employeeID.Value != "emp_001" { + return fmt.Errorf("query14: expected EmployeeID 'emp_001'") + } + + if location, ok := item["Location"].(*types.AttributeValueMemberM); ok { + if desk, ok := location.Value["Desk"].(*types.AttributeValueMemberS); !ok || desk.Value != "3" { + return fmt.Errorf("query14: expected Desk '3'") + } + } else { + return fmt.Errorf("query14: expected Location map") + } + } + } + + if !foundKnownValueItemQuery14 { + return fmt.Errorf("query14: did not find expected item 'employee1'") + } + + return nil + } + + return fmt.Errorf("query14: failed after 10 retries") +} + +// RunQuery15 executes Query 15: Get employees by manager email +// Key condition: PK2 = ManagerEmail +func RunQuery15(ctx context.Context, ddbTableName string, ddb *dynamodb.Client) error { + query15AttributeNames := map[string]string{ + "#pk2": "PK2", + } + + query15AttributeValues := map[string]types.AttributeValue{ + ":manageremail": stringAttr("ME-zorro@gmail.com"), + } + + query15Input := &dynamodb.QueryInput{ + TableName: &ddbTableName, + IndexName: StringPtr("GSI-2"), + KeyConditionExpression: StringPtr("#pk2 = :manageremail"), + ExpressionAttributeNames: query15AttributeNames, + ExpressionAttributeValues: query15AttributeValues, + } + + query15Response, err := ddb.Query(ctx, query15Input) + if err != nil { + return fmt.Errorf("query15 failed: %w", err) + } + + // Assert 4 items returned: Expected to be `employee1`, `employee2`, `employee3`, and `employee4` + if len(query15Response.Items) != 4 { + return fmt.Errorf("query15: expected 4 items, got %d", len(query15Response.Items)) + } + + // Known value test: Assert some properties on one of the items + foundKnownValueItemQuery15 := false + for _, item := range query15Response.Items { + if partitionKey, ok := item["partition_key"].(*types.AttributeValueMemberS); ok && partitionKey.Value == "employee1" { + foundKnownValueItemQuery15 = true + + if employeeID, ok := item["EmployeeID"].(*types.AttributeValueMemberS); !ok || employeeID.Value != "emp_001" { + return fmt.Errorf("query15: expected EmployeeID 'emp_001'") + } + + if location, ok := item["Location"].(*types.AttributeValueMemberM); ok { + if desk, ok := location.Value["Desk"].(*types.AttributeValueMemberS); !ok || desk.Value != "3" { + return fmt.Errorf("query15: expected Desk '3'") + } + } else { + return fmt.Errorf("query15: expected Location map") + } + } + } + + if !foundKnownValueItemQuery15 { + return fmt.Errorf("query15: did not find expected item 'employee1'") + } + + return nil +} + +// RunQuery16 executes Query 16: Get assigned tickets by assignee email +// Key condition: PK2 = AssigneeEmail +func RunQuery16(ctx context.Context, ddbTableName string, ddb *dynamodb.Client) error { + query16AttributeNames := map[string]string{ + "#pk2": "PK2", + } + + query16AttributeValues := map[string]types.AttributeValue{ + ":assigneeemail": stringAttr("AE-able@gmail.com"), + } + + query16Input := &dynamodb.QueryInput{ + TableName: &ddbTableName, + IndexName: StringPtr("GSI-2"), + KeyConditionExpression: StringPtr("#pk2 = :assigneeemail"), + ExpressionAttributeNames: query16AttributeNames, + ExpressionAttributeValues: query16AttributeValues, + } + + query16Response, err := ddb.Query(ctx, query16Input) + if err != nil { + return fmt.Errorf("query16 failed: %w", err) + } + + // Assert 2 items returned: Expected to be `ticket1` and `ticket4` + if len(query16Response.Items) != 2 { + return fmt.Errorf("query16: expected 2 items, got %d", len(query16Response.Items)) + } + + // Known value test: Assert some properties on one of the items + foundKnownValueItemQuery16 := false + for _, item := range query16Response.Items { + if partitionKey, ok := item["partition_key"].(*types.AttributeValueMemberS); ok && partitionKey.Value == "ticket1" { + foundKnownValueItemQuery16 = true + + if ticketNumber, ok := item["TicketNumber"].(*types.AttributeValueMemberS); !ok || ticketNumber.Value != "ticket_001" { + return fmt.Errorf("query16: expected TicketNumber 'ticket_001'") + } + } + } + + if !foundKnownValueItemQuery16 { + return fmt.Errorf("query16: did not find expected item 'ticket1'") + } + + return nil +} + +// RunQuery17 executes Query 17: Get tickets updated within the last 24 hours +// Key condition: PK3 = Severity, SK3 > 24 hours ago +// (For the sake of this example, we will assume +// +// the date is 2022-10-08T09:30:00, such that "24 hours ago" +// is 2022-10-07T09:30:00, and that our sample ticket record +// with TicketModTime=2022-10-07T14:32:25 will be returned.) +func RunQuery17(ctx context.Context, ddbTableName string, ddb *dynamodb.Client) error { + query17AttributeNames := map[string]string{ + "#pk3": "PK3", + "#sk3": "SK3", + } + + query17AttributeValues := map[string]types.AttributeValue{ + ":severity": stringAttr("S-3"), + ":yesterday": stringAttr("M-2022-10-07T09:30:00"), + } + + query17Input := &dynamodb.QueryInput{ + TableName: &ddbTableName, + IndexName: StringPtr("GSI-3"), + KeyConditionExpression: StringPtr("#pk3 = :severity AND #sk3 > :yesterday"), + ExpressionAttributeNames: query17AttributeNames, + ExpressionAttributeValues: query17AttributeValues, + } + + query17Response, err := ddb.Query(ctx, query17Input) + if err != nil { + return fmt.Errorf("query17 failed: %w", err) + } + + // Assert 3 items returned: Expected to be `ticket1`, `ticket2`, and `ticket4` + if len(query17Response.Items) != 3 { + return fmt.Errorf("query17: expected 3 items, got %d", len(query17Response.Items)) + } + + // Known value test: Assert some properties on one of the items + foundKnownValueItemQuery17 := false + for _, item := range query17Response.Items { + if partitionKey, ok := item["partition_key"].(*types.AttributeValueMemberS); ok && partitionKey.Value == "ticket1" { + foundKnownValueItemQuery17 = true + + if ticketNumber, ok := item["TicketNumber"].(*types.AttributeValueMemberS); !ok || ticketNumber.Value != "ticket_001" { + return fmt.Errorf("query17: expected TicketNumber 'ticket_001'") + } + } + } + + if !foundKnownValueItemQuery17 { + return fmt.Errorf("query17: did not find expected item 'ticket1'") + } + + return nil +} + +// RunQuery18 executes Query 18: Get projects by status, start and target date +// Key condition: PK1 = Status, SK1 > StartDate +// Filter condition: TargetDelivery < TargetDate +func RunQuery18(ctx context.Context, ddbTableName string, ddb *dynamodb.Client) error { + query18AttributeNames := map[string]string{ + "#pk1": "PK1", + "#sk1": "SK1", + "#target": "ProjectTarget", + } + + query18AttributeValues := map[string]types.AttributeValue{ + ":status": stringAttr("PSts-Pending"), + ":startdate": stringAttr("PS-2022-01-01"), + ":target": stringAttr("2025-01-01"), + } + + query18Input := &dynamodb.QueryInput{ + TableName: &ddbTableName, + IndexName: StringPtr("GSI-1"), + KeyConditionExpression: StringPtr("#pk1 = :status AND #sk1 > :startdate"), + FilterExpression: StringPtr("#target < :target"), + ExpressionAttributeNames: query18AttributeNames, + ExpressionAttributeValues: query18AttributeValues, + } + + query18Response, err := ddb.Query(ctx, query18Input) + if err != nil { + return fmt.Errorf("query18 failed: %w", err) + } + + // Assert 1 item was returned: `project1` + if len(query18Response.Items) != 1 { + return fmt.Errorf("query18: expected 1 item, got %d", len(query18Response.Items)) + } + + // Known value test: Assert some properties on one of the items + foundKnownValueItemQuery18 := false + for _, item := range query18Response.Items { + if partitionKey, ok := item["partition_key"].(*types.AttributeValueMemberS); ok && partitionKey.Value == "project1" { + foundKnownValueItemQuery18 = true + + if projectName, ok := item["ProjectName"].(*types.AttributeValueMemberS); !ok || projectName.Value != "project_001" { + return fmt.Errorf("query18: expected ProjectName 'project_001'") + } + } + } + + if !foundKnownValueItemQuery18 { + return fmt.Errorf("query18: did not find expected item 'project1'") + } + + return nil +} + +// RunQuery19 executes Query 19: Get projects by name +// Key condition: PK = ProjectName, SK = ProjectName +func RunQuery19(ctx context.Context, ddbTableName string, ddb *dynamodb.Client) error { + query19AttributeNames := map[string]string{ + "#pk": "PK", + "#sk": "SK", + } + + query19AttributeValues := map[string]types.AttributeValue{ + ":projectname": stringAttr("P-project_001"), + } + + query19Input := &dynamodb.QueryInput{ + TableName: &ddbTableName, + IndexName: StringPtr("GSI-0"), + KeyConditionExpression: StringPtr("#pk = :projectname AND #sk = :projectname"), + ExpressionAttributeNames: query19AttributeNames, + ExpressionAttributeValues: query19AttributeValues, + } + + query19Response, err := ddb.Query(ctx, query19Input) + if err != nil { + return fmt.Errorf("query19 failed: %w", err) + } + + // Assert 1 item was returned: `project1` + if len(query19Response.Items) != 1 { + return fmt.Errorf("query19: expected 1 item, got %d", len(query19Response.Items)) + } + + // Known value test: Assert some properties on one of the items + foundKnownValueItemQuery19 := false + for _, item := range query19Response.Items { + if partitionKey, ok := item["partition_key"].(*types.AttributeValueMemberS); ok && partitionKey.Value == "project1" { + foundKnownValueItemQuery19 = true + + if projectName, ok := item["ProjectName"].(*types.AttributeValueMemberS); !ok || projectName.Value != "project_001" { + return fmt.Errorf("query19: expected ProjectName 'project_001'") + } + } + } + + if !foundKnownValueItemQuery19 { + return fmt.Errorf("query19: did not find expected item 'project1'") + } + + return nil +} + +// RunQuery20 executes Query 20: Get Project History by date range (against timecard record) +// Key condition: PK = ProjectName, SK between(date1, date2) +func RunQuery20(ctx context.Context, ddbTableName string, ddb *dynamodb.Client) error { + query20AttributeNames := map[string]string{ + "#pk": "PK", + "#sk": "SK", + } + + query20AttributeValues := map[string]types.AttributeValue{ + ":projectname": stringAttr("P-project_002"), + ":date1": stringAttr("TC-2022-01-01"), + ":date2": stringAttr("TC-2023-01-01"), + } + + query20Input := &dynamodb.QueryInput{ + TableName: &ddbTableName, + IndexName: StringPtr("GSI-0"), + KeyConditionExpression: StringPtr("#pk = :projectname AND #sk BETWEEN :date1 AND :date2"), + ExpressionAttributeNames: query20AttributeNames, + ExpressionAttributeValues: query20AttributeValues, + } + + query20Response, err := ddb.Query(ctx, query20Input) + if err != nil { + return fmt.Errorf("query20 failed: %w", err) + } + + // Assert 2 items returned: Expected to be `timecard1` and `timecard2` + if len(query20Response.Items) != 2 { + return fmt.Errorf("query20: expected 2 items, got %d", len(query20Response.Items)) + } + + // Known value test: Assert some properties on one of the items + foundKnownValueItemQuery20 := false + for _, item := range query20Response.Items { + if partitionKey, ok := item["partition_key"].(*types.AttributeValueMemberS); ok && partitionKey.Value == "timecard1" { + foundKnownValueItemQuery20 = true + + if projectName, ok := item["ProjectName"].(*types.AttributeValueMemberS); !ok || projectName.Value != "project_002" { + return fmt.Errorf("query20: expected ProjectName 'project_002'") + } + } + } + + if !foundKnownValueItemQuery20 { + return fmt.Errorf("query20: did not find expected item 'timecard1'") + } + + return nil +} + +// RunQuery21 executes Query 21: Get Project History by role +// Key condition: PK = ProjectName +// Filter condition: role=rolename +func RunQuery21(ctx context.Context, ddbTableName string, ddb *dynamodb.Client) error { + query21AttributeNames := map[string]string{ + "#pk": "PK", + "#role": "Role", + } + + query21AttributeValues := map[string]types.AttributeValue{ + ":projectname": stringAttr("P-project_002"), + ":role": stringAttr("SDE3"), + } + + query21Input := &dynamodb.QueryInput{ + TableName: &ddbTableName, + IndexName: StringPtr("GSI-0"), + KeyConditionExpression: StringPtr("#pk = :projectname"), + FilterExpression: StringPtr("#role = :role"), + ExpressionAttributeNames: query21AttributeNames, + ExpressionAttributeValues: query21AttributeValues, + } + + query21Response, err := ddb.Query(ctx, query21Input) + if err != nil { + return fmt.Errorf("query21 failed: %w", err) + } + + // Assert 1 item was returned: `timecard1` + if len(query21Response.Items) != 1 { + return fmt.Errorf("query21: expected 1 item, got %d", len(query21Response.Items)) + } + + // Known value test: Assert some properties on one of the items + foundKnownValueItemQuery21 := false + for _, item := range query21Response.Items { + if partitionKey, ok := item["partition_key"].(*types.AttributeValueMemberS); ok && partitionKey.Value == "timecard1" { + foundKnownValueItemQuery21 = true + + if projectName, ok := item["ProjectName"].(*types.AttributeValueMemberS); !ok || projectName.Value != "project_002" { + return fmt.Errorf("query21: expected ProjectName 'project_002'") + } + } + } + + if !foundKnownValueItemQuery21 { + return fmt.Errorf("query21: did not find expected item 'timecard1'") + } + + return nil +} + +// RunQuery22 executes Query 22: Get reservations by building ID +// Key condition: PK = Building ID +func RunQuery22(ctx context.Context, ddbTableName string, ddb *dynamodb.Client) error { + query22AttributeNames := map[string]string{ + "#pk": "PK", + } + + query22AttributeValues := map[string]types.AttributeValue{ + ":building": stringAttr("B-SEA33"), + } + + query22Input := &dynamodb.QueryInput{ + TableName: &ddbTableName, + IndexName: StringPtr("GSI-0"), + KeyConditionExpression: StringPtr("#pk = :building"), + ExpressionAttributeNames: query22AttributeNames, + ExpressionAttributeValues: query22AttributeValues, + } + + query22Response, err := ddb.Query(ctx, query22Input) + if err != nil { + return fmt.Errorf("query22 failed: %w", err) + } + + // Assert 2 items returned: Expected to be `reservation1` and `reservation2` + if len(query22Response.Items) != 2 { + return fmt.Errorf("query22: expected 2 items, got %d", len(query22Response.Items)) + } + + // Known value test: Assert some properties on one of the items + foundKnownValueItemQuery22 := false + for _, item := range query22Response.Items { + if partitionKey, ok := item["partition_key"].(*types.AttributeValueMemberS); ok && partitionKey.Value == "reservation1" { + foundKnownValueItemQuery22 = true + + if subject, ok := item["Subject"].(*types.AttributeValueMemberS); !ok || subject.Value != "Scan beacons" { + return fmt.Errorf("query22: expected Subject 'Scan beacons'") + } + } + } + + if !foundKnownValueItemQuery22 { + return fmt.Errorf("query22: did not find expected item 'reservation1'") + } + + return nil +} + +// RunQuery23 executes Query 23: Get reservations by building ID and time range +// Key condition: PK = Building ID, SK between(date1, date2) +// Filter condition: Duration > 0 +func RunQuery23(ctx context.Context, ddbTableName string, ddb *dynamodb.Client) error { + query23AttributeNames := map[string]string{ + "#pk": "PK", + "#sk": "SK", + "#duration": "Duration", + } + + query23AttributeValues := map[string]types.AttributeValue{ + ":building": stringAttr("B-SEA33"), + ":date1": stringAttr("MS-2022-07-01"), + ":date2": stringAttr("MS-2022-07-08"), + ":zero": stringAttr("0"), + } + + query23Input := &dynamodb.QueryInput{ + TableName: &ddbTableName, + IndexName: StringPtr("GSI-0"), + KeyConditionExpression: StringPtr("#pk = :building AND #sk BETWEEN :date1 AND :date2"), + FilterExpression: StringPtr("#duration > :zero"), + ExpressionAttributeNames: query23AttributeNames, + ExpressionAttributeValues: query23AttributeValues, + } + + query23Response, err := ddb.Query(ctx, query23Input) + if err != nil { + return fmt.Errorf("query23 failed: %w", err) + } + + // Assert 2 items returned: Expected to be `reservation1` and `reservation2` + if len(query23Response.Items) != 2 { + return fmt.Errorf("query23: expected 2 items, got %d", len(query23Response.Items)) + } + + // Known value test: Assert some properties on one of the items + foundKnownValueItemQuery23 := false + for _, item := range query23Response.Items { + if partitionKey, ok := item["partition_key"].(*types.AttributeValueMemberS); ok && partitionKey.Value == "reservation1" { + foundKnownValueItemQuery23 = true + + if subject, ok := item["Subject"].(*types.AttributeValueMemberS); !ok || subject.Value != "Scan beacons" { + return fmt.Errorf("query23: expected Subject 'Scan beacons'") + } + } + } + + if !foundKnownValueItemQuery23 { + return fmt.Errorf("query23: did not find expected item 'reservation1'") + } + + return nil +} + +// Helper function to create string pointer +func StringPtr(s string) *string { + return &s +} diff --git a/releases/go/dynamodb-esdk/examples/searchableencryption/compoundbeaconsearchableencryptionexample.go b/releases/go/dynamodb-esdk/examples/searchableencryption/compoundbeaconsearchableencryptionexample.go new file mode 100644 index 000000000..10b15c9be --- /dev/null +++ b/releases/go/dynamodb-esdk/examples/searchableencryption/compoundbeaconsearchableencryptionexample.go @@ -0,0 +1,357 @@ +// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +package searchableencryption + +import ( + "context" + "fmt" + "time" + + keystoreclient "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/awscryptographykeystoresmithygenerated" + keystoretypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/awscryptographykeystoresmithygeneratedtypes" + mpl "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/awscryptographymaterialproviderssmithygenerated" + mpltypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/awscryptographymaterialproviderssmithygeneratedtypes" + dbesdkdynamodbencryptiontypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes" + dbesdkstructuredencryptiontypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes" + "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/dbesdkmiddleware" + "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/examples/utils" + + "github.com/aws/aws-sdk-go-v2/aws" + "github.com/aws/aws-sdk-go-v2/config" + "github.com/aws/aws-sdk-go-v2/service/dynamodb" + "github.com/aws/aws-sdk-go-v2/service/dynamodb/types" + "github.com/aws/aws-sdk-go-v2/service/kms" +) + +/* +This example demonstrates how to set up a compound beacon on encrypted attributes, + + put an item with the beacon, and query against that beacon. + +This example follows a use case of a database that stores unit inspection information. + + This is an extension of the "BasicSearchableEncryptionExample" in this directory. + This example uses the same situation (storing unit inspection information) + and the same table schema. + +However, this example uses a different Global Secondary Index (GSI) + + that is based on a compound beacon configuration composed of + the `last4` and `unit` attributes. + +Running this example requires access to a DDB table with the +following key configuration: + - Partition key is named "work_id" with type (S) + - Sort key is named "inspection_time" with type (S) + +This table must have a Global Secondary Index (GSI) configured named "last4UnitCompound-index": + - Partition key is named "aws_dbe_b_last4UnitCompound" with type (S) + +In this example for storing unit inspection information, this schema is utilized for the data: + - "work_id" stores a unique identifier for a unit inspection work order (v4 UUID) + - "inspection_date" stores an ISO 8601 date for the inspection (YYYY-MM-DD) + - "inspector_id_last4" stores the last 4 digits of the ID of the inspector performing the work + - "unit" stores a 12-digit serial number for the unit being inspected + +The example requires the following ordered input command line parameters: + 1. DDB table name for table to put/query data from + 2. Branch key ID for a branch key that was previously created in your key store. See the + CreateKeyStoreKeyExample. + 3. Branch key wrapping KMS key ARN for the KMS key used to create the branch key with ID + provided in arg 2 + 4. Branch key DDB table ARN for the DDB table representing the branch key store +*/ +func CompoundBeaconSearchableEncryptionExample( + ddbTableName, + branchKeyID, + branchKeyWrappingKmsKeyArn, + branchKeyDdbTableName string) { + const gsiName = "last4UnitCompound-index" + partitionKeyName := "work_id" + sortKeyName := "inspection_date" + + // 1. Create Beacons. + // These are the same beacons as in the "BasicSearchableEncryptionExample" in this directory. + // See that file to see details on beacon construction and parameters. + // While we will not directly query against these beacons, + // you must create standard beacons on encrypted fields + // that we wish to use in compound beacons. + // We mark them both as PartOnly to enforce the fact that + // we will not directly query against these beacons. + standardBeaconList := []dbesdkdynamodbencryptiontypes.StandardBeacon{ + { + Name: "inspector_id_last4", + Length: 10, + Style: &dbesdkdynamodbencryptiontypes.BeaconStyleMemberpartOnly{ + Value: dbesdkdynamodbencryptiontypes.PartOnly{}, + }, + }, + { + Name: "unit", + Length: 30, + Style: &dbesdkdynamodbencryptiontypes.BeaconStyleMemberpartOnly{ + Value: dbesdkdynamodbencryptiontypes.PartOnly{}, + }, + }, + } + + // 2. Define encrypted parts. + // Encrypted parts define the beacons that can be used to construct a compound beacon, + // and how the compound beacon prefixes those beacon values. + // A encrypted part must receive: + // - name: Name of a standard beacon + // - prefix: Any string. This is plaintext that prefixes the beaconized value in the compound beacon. + // Prefixes must be unique across the configuration, and must not be a prefix of another prefix; + // i.e. for all configured prefixes, the first N characters of a prefix must not equal another prefix. + // In practice, it is suggested to have a short value distinguishable from other parts served on the prefix. + + encryptedPartList := []dbesdkdynamodbencryptiontypes.EncryptedPart{ + // For this example, we will choose "L-" as the prefix for "Last 4 digits of inspector ID". + // With this prefix and the standard beacon's bit length definition (10), the beaconized + // version of the inspector ID's last 4 digits will appear as + // `L-000` to `L-3ff` inside a compound beacon. + { + Name: "inspector_id_last4", + Prefix: "L-", + }, + // For this example, we will choose "U-" as the prefix for "unit". + // With this prefix and the standard beacon's bit length definition (30), a unit beacon will appear + // as `U-00000000` to `U-3fffffff` inside a compound beacon. + { + Name: "unit", + Prefix: "U-", + }, + } + + constructorParts := []dbesdkdynamodbencryptiontypes.ConstructorPart{ + { + Name: "inspector_id_last4", + Required: true, + }, + { + // This name comes from the "unit" standard beacon. + Name: "unit", + Required: true, + }, + } + constructors := []dbesdkdynamodbencryptiontypes.Constructor{ + { + Parts: constructorParts, + }, + } + + // 3. Define compound beacon. + // A compound beacon allows one to serve multiple beacons or attributes from a single index. + // A compound beacon must receive: + // - name: The name of the beacon. Compound beacon values will be written to `aws_ddb_e_[name]`. + // - split: A character separating parts in a compound beacon + // A compound beacon may also receive: + // - encrypted: A list of encrypted parts. This is effectively a list of beacons. We provide the list + // that we created above. + // - constructors: A list of constructors. This is an ordered list of possible ways to create a beacon. + // We have not defined any constructors here; see the complex example for how to do this. + // The client will provide a default constructor, which will write a compound beacon as: + // all signed parts in the order they are added to the signed list; + // all encrypted parts in order they are added to the encrypted list; all parts required. + // In this example, we expect compound beacons to be written as + // `L-XXX.U-YYYYYYYY`, since our encrypted list looks like + // [last4EncryptedPart, unitEncryptedPart]. + // - signed: A list of signed parts, i.e. plaintext attributes. This would be provided if we + // wanted to use plaintext values as part of constructing our compound beacon. We do not + // provide this here; see the Complex example for an example. + compoundBeaconList := []dbesdkdynamodbencryptiontypes.CompoundBeacon{ + { + Name: "last4UnitCompound", + Constructors: constructors, + Split: ".", + }, + } + + // 4. Configure the Keystore + // These are the same constructions as in the Basic example, which describes these in more detail. + cfg, err := config.LoadDefaultConfig(context.TODO()) + utils.HandleError(err) + + kmsClient := kms.NewFromConfig(cfg) + ddbClient := dynamodb.NewFromConfig(cfg) + + kmsConfig := keystoretypes.KMSConfigurationMemberkmsKeyArn{ + Value: branchKeyWrappingKmsKeyArn, + } + keyStoreConfig := keystoretypes.KeyStoreConfig{ + KmsClient: kmsClient, + DdbClient: ddbClient, + DdbTableName: branchKeyDdbTableName, + LogicalKeyStoreName: branchKeyDdbTableName, + KmsConfiguration: &kmsConfig, + } + + keyStore, err := keystoreclient.NewClient(keyStoreConfig) + utils.HandleError(err) + + // 5. Create BeaconVersion. + // This is similar to the Basic example, except we have also provided a compoundBeaconList. + // We must also continue to provide all of the standard beacons that compose a compound beacon list. + ttl := 6000 + cacheTTL := int32(ttl) + singleKeyStore := dbesdkdynamodbencryptiontypes.SingleKeyStore{ + KeyId: branchKeyID, + CacheTTL: cacheTTL, + } + beaconKeySource := dbesdkdynamodbencryptiontypes.BeaconKeySourceMembersingle{ + Value: singleKeyStore, + } + beaconVersion := dbesdkdynamodbencryptiontypes.BeaconVersion{ + EncryptedParts: encryptedPartList, + StandardBeacons: standardBeaconList, + CompoundBeacons: compoundBeaconList, + Version: 1, // MUST be 1 + KeyStore: keyStore, + KeySource: &beaconKeySource, + } + + beaconVersions := []dbesdkdynamodbencryptiontypes.BeaconVersion{beaconVersion} + + // 6. Create a Hierarchical Keyring + // This is the same configuration as in the Basic example. + matProv, err := mpl.NewClient(mpltypes.MaterialProvidersConfig{}) + utils.HandleError(err) + + ttlSeconds := int64(ttl) + keyringInput := mpltypes.CreateAwsKmsHierarchicalKeyringInput{ + BranchKeyId: &branchKeyID, + KeyStore: keyStore, + TtlSeconds: ttlSeconds, + } + kmsKeyring, err := matProv.CreateAwsKmsHierarchicalKeyring(context.Background(), keyringInput) + utils.HandleError(err) + + // 7. Configure which attributes are encrypted and/or signed when writing new items. + attributeActionsOnEncrypt := map[string]dbesdkstructuredencryptiontypes.CryptoAction{ + partitionKeyName: dbesdkstructuredencryptiontypes.CryptoActionSignOnly, // Our partition attribute must be SIGN_ONLY + sortKeyName: dbesdkstructuredencryptiontypes.CryptoActionSignOnly, // Our sort attribute must be SIGN_ONLY + "inspector_id_last4": dbesdkstructuredencryptiontypes.CryptoActionEncryptAndSign, // Beaconized attributes must be encrypted + "unit": dbesdkstructuredencryptiontypes.CryptoActionEncryptAndSign, // Beaconized attributes must be encrypted + } + + // We do not need to define a crypto action on last4UnitCompound. + // We only need to define crypto actions on attributes that we pass to PutItem. + + // 8. Create the DynamoDb Encryption configuration for the table we will be writing to. + // The beaconVersions are added to the search configuration. + writeVersion := int32(1) + searchConfig := dbesdkdynamodbencryptiontypes.SearchConfig{ + WriteVersion: writeVersion, // MUST be 1 + Versions: beaconVersions, + } + + tableConfig := dbesdkdynamodbencryptiontypes.DynamoDbTableEncryptionConfig{ + LogicalTableName: ddbTableName, + PartitionKeyName: partitionKeyName, + SortKeyName: aws.String(sortKeyName), + AttributeActionsOnEncrypt: attributeActionsOnEncrypt, + Keyring: kmsKeyring, + Search: &searchConfig, + } + + tableConfigs := map[string]dbesdkdynamodbencryptiontypes.DynamoDbTableEncryptionConfig{ + ddbTableName: tableConfig, + } + + // 9. Create config + encryptionConfig := dbesdkdynamodbencryptiontypes.DynamoDbTablesEncryptionConfig{ + TableEncryptionConfigs: tableConfigs, + } + + // 10. Create an item with both attributes used in the compound beacon. + item := map[string]types.AttributeValue{ + partitionKeyName: &types.AttributeValueMemberS{Value: "9ce39272-8068-4efd-a211-cd162ad65d4c"}, + sortKeyName: &types.AttributeValueMemberS{Value: "2023-06-13"}, + "inspector_id_last4": &types.AttributeValueMemberS{Value: "5678"}, + "unit": &types.AttributeValueMemberS{Value: "011899988199"}, + } + + // 11. Create the DynamoDb Encryption Interceptor + dbEsdkMiddleware, err := dbesdkmiddleware.NewDBEsdkMiddleware(encryptionConfig) + utils.HandleError(err) + + // 12. Create a new AWS SDK DynamoDb client using the DynamoDb Encryption Interceptor above + ddb := dynamodb.NewFromConfig(cfg, dbEsdkMiddleware.CreateMiddleware()) + + putAndQueryItemWithCompoundBeacon(ddb, ddbTableName, item, gsiName) + + fmt.Println("Compound Beacon Searchable Encryption Example completed successfully") +} + +func putAndQueryItemWithCompoundBeacon(ddb *dynamodb.Client, ddbTableName string, item map[string]types.AttributeValue, gsiName string) { + // 13. Write the item to the table + putRequest := &dynamodb.PutItemInput{ + TableName: aws.String(ddbTableName), + Item: item, + } + + _, err := ddb.PutItem(context.Background(), putRequest) + utils.HandleError(err) + + // 14. Query for the item we just put. + expressionAttributeNames := map[string]string{ + "#compound": "last4UnitCompound", + } + + expressionAttributeValues := map[string]types.AttributeValue{ + // This query expression takes a few factors into consideration: + // - The configured prefix for the last 4 digits of an inspector ID is "L-"; + // the prefix for the unit is "U-" + // - The configured split character, separating component parts, is "." + // - The default constructor adds encrypted parts in the order they are in the encrypted list, which + // configures `last4` to come before `unit`` + // NOTE: We did not need to create a compound beacon for this query. This query could have also been + // done by querying on the partition and sort key, as was done in the Basic example. + // This is intended to be a simple example to demonstrate how one might set up a compound beacon. + // For examples where compound beacons are required, see the Complex example. + // The most basic extension to this example that would require a compound beacon would add a third + // part to the compound beacon, then query against three parts. + ":value": &types.AttributeValueMemberS{Value: "L-5678.U-011899988199"}, + } + + queryRequest := &dynamodb.QueryInput{ + TableName: aws.String(ddbTableName), + IndexName: aws.String(gsiName), + KeyConditionExpression: aws.String("#compound = :value"), + ExpressionAttributeNames: expressionAttributeNames, + ExpressionAttributeValues: expressionAttributeValues, + } + + // GSIs do not update instantly + // so if the results come back empty + // we retry after a short sleep + for i := 0; i < 10; i++ { + queryResponse, err := ddb.Query(context.Background(), queryRequest) + utils.HandleError(err) + + attributeValues := queryResponse.Items + + // if no results, sleep and try again + if len(attributeValues) == 0 { + time.Sleep(20 * time.Millisecond) + continue + } + + // Validate only 1 item was returned: the item we just put + if len(attributeValues) != 1 { + panic(fmt.Sprintf("Expected 1 item, got %d", len(attributeValues))) + } + returnedItem := attributeValues[0] + // Validate the item has the expected attributes + inspectorIdLast4 := returnedItem["inspector_id_last4"].(*types.AttributeValueMemberS).Value + unit := returnedItem["unit"].(*types.AttributeValueMemberS).Value + if inspectorIdLast4 != "5678" { + panic(fmt.Sprintf("Expected inspector_id_last4 '5678', got '%s'", inspectorIdLast4)) + } + if unit != "011899988199" { + panic(fmt.Sprintf("Expected unit '011899988199', got '%s'", unit)) + } + break + } +} diff --git a/releases/go/dynamodb-esdk/examples/searchableencryption/virtualbeaconsearchableencryptionexample.go b/releases/go/dynamodb-esdk/examples/searchableencryption/virtualbeaconsearchableencryptionexample.go new file mode 100644 index 000000000..b89f6cb5c --- /dev/null +++ b/releases/go/dynamodb-esdk/examples/searchableencryption/virtualbeaconsearchableencryptionexample.go @@ -0,0 +1,474 @@ +// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +package searchableencryption + +import ( + "context" + "fmt" + "time" + + keystoreclient "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/awscryptographykeystoresmithygenerated" + keystoretypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/awscryptographykeystoresmithygeneratedtypes" + mpl "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/awscryptographymaterialproviderssmithygenerated" + mpltypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/awscryptographymaterialproviderssmithygeneratedtypes" + dbesdkdynamodbencryptiontypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkdynamodbsmithygeneratedtypes" + dbesdktransforms "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkdynamodbtransformssmithygenerated" + dbesdktransformstypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkdynamodbtransformssmithygeneratedtypes" + dbesdkstructuredencryptiontypes "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/awscryptographydbencryptionsdkstructuredencryptionsmithygeneratedtypes" + "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/dbesdkmiddleware" + "github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk/examples/utils" + + "github.com/aws/aws-sdk-go-v2/aws" + "github.com/aws/aws-sdk-go-v2/config" + "github.com/aws/aws-sdk-go-v2/service/dynamodb" + "github.com/aws/aws-sdk-go-v2/service/dynamodb/types" + "github.com/aws/aws-sdk-go-v2/service/kms" +) + +/* +This example demonstrates how to set up a virtual field from two DDB +attributes, create a standard beacon with that field, put an item with +that beacon, and query against that beacon. + +A virtual field is a field consisting of a transformation of one or more attributes in a DDB item. +Virtual fields are useful in querying against encrypted fields that only have a handful of +possible values. They allow you to take fields with few possible values, concatenate +them to other fields, then query against the combined field. This enables using these types of +fields in queries while making it infeasible to identify which beacon values encode +the few possible distinct plaintexts. This is explained in more detail below. +Virtual fields are not stored in the DDB table. However, they are used to construct +a beacon, the value of which is stored. + +For more information on virtual fields, see + + https://docs.aws.amazon.com/database-encryption-sdk/latest/devguide/beacons.html#virtual-field + +For our example, we will construct a virtual field +from two DDB attributes `state` and `hasTestResult` as `state`+prefix(`hasTestResult`, 1). +We will then create a beacon out of this virtual field and use it to search. + +This example follows a use case of a database that stores customer test result metadata. +Records are indexed by `customer_id` and store a `state` attribute, representing the +US state or territory where the customer lives, and a `hasTestResult` boolean attribute, +representing whether the customer has a "test result" available. (Maybe this represents +some medical test result, and this table stores "result available" metadata.) We assume +that values in these fields are uniformly distributed across all possible values for +these fields (56 for `state`, 2 for `hasTestResult`), and are uniformly distributed across +customer IDs. + +The motivation behind this example is to demonstrate how and why one would use a virtual beacon. +In this example, our table stores records with an encrypted boolean `hasTestResult` attribute. +We would like to be able to query for customers in a given state with a `true` hasTestResult +attribute. + +To be able to execute this query securely and efficiently, we want the following +properties on our table: + 1. Hide the distribution of `hasTestResult` attribute values (i.e. it should be infeasible + to determine the percentage of `true`s to `false`s across the dataset from beaconized + values) + 2. Query against a combination of whether `hasTestResult` is true/false and the `state` field + +We cannot achieve these properties with a standard beacon on a true/false attribute. Following +the guidance to choose a beacon length: + + https://docs.aws.amazon.com/database-encryption-sdk/latest/devguide/choosing-beacon-length.html + +For a boolean value (in our case, whether `hasTestResult` is true or false), the acceptable +bounds for beacon length are either 0 or 1. This corresponds to either not storing a beacon +(length 0), or effectively storing another boolean attribute (length 1). With +length 0, this beacon is useless for searching (violating property 2); with length 1, this +beacon may not hide the attribute (violating property 1). +In addition, choosing a longer beacon length does not help us. +Each attribute value is mapped to a distinct beacon. +Since booleans only have 2 possible attribute values, we will still only have 2 possible +beacon values, though those values may be longer. A longer beacon provides no advantages over +beacon of length 1 in this situation. + +A compound beacon also does not help. +To (over)simplify, a compound beacon is a concatenation of standard beacons, +i.e. beacon(`state`)+beacon(`hasTestResult`). +The `hasTestResult` beacon is still visible, so we would still have the problems above. + +To achieve these properties, we instead construct a virtual field and use that in our beacon, +i.e. beacon(`state`+`hasTestResult`). Assuming these fields are well-distributed across +customer IDs and possible values, this gives us both desired properties; we can query against +both attributes while hiding information from the underlying data. This is demonstrated in more +detail below. + +Running this example requires access to a DDB table with the +following primary key configuration: + - Partition key is named "customer_id" with type (S) + - Sort key is named "create_time" with type (S) + +This table must have a Global Secondary Index (GSI) configured named "stateAndHasTestResult-index": + - Partition key is named "aws_dbe_b_stateAndHasTestResult" with type (S) + +In this example for storing customer location data, this schema is utilized for the data: + - "customer_id" stores a unique customer identifier + - "create_time" stores a Unix timestamp + - "state" stores an encrypted 2-letter US state or territory abbreviation + (https://www.faa.gov/air_traffic/publications/atpubs/cnt_html/appendix_a.html) + - "hasTestResult" is not part of the schema, but is an attribute utilized in this example. + It stores a boolean attribute (false/true) indicating whether this customer has a test result + available. + +The example requires the following ordered input command line parameters: + 1. DDB table name for table to put/query data from + 2. Branch key ID for a branch key that was previously created in your key store. See the + CreateKeyStoreKeyExample. + 2. Branch key wrapping KMS key ARN for the KMS key used to create the branch key + 3. Branch key DDB table name for the DDB table representing the branch key store +*/ +func VirtualBeaconSearchableEncryptionExample( + ddbTableName, + branchKeyId, + branchKeyWrappingKmsKeyArn, + branchKeyDdbTableName string) { + const gsiName = "stateAndHasTestResult-index" + + // 1. Construct a length-1 prefix virtual transform. + // `hasTestResult` is a binary attribute, containing either `true` or `false`. + // As an example to demonstrate virtual transforms, we will truncate the value + // of `hasTestResult` in the virtual field to the length-1 prefix of the binary value, i.e.: + // - "true" -> "t" + // - "false -> "f" + // This is not necessary. This is done as a demonstration of virtual transforms. + // Virtual transform operations treat all attributes as strings + // (i.e. the boolean value `true` is interpreted as a string "true"), + // so its length-1 prefix is just "t". + length1PrefixVirtualTransformList := []dbesdkdynamodbencryptiontypes.VirtualTransform{ + &dbesdkdynamodbencryptiontypes.VirtualTransformMemberprefix{ + Value: dbesdkdynamodbencryptiontypes.GetPrefix{ + Length: 1, + }, + }, + } + + // 2. Construct the VirtualParts required for the VirtualField + hasTestResultPart := dbesdkdynamodbencryptiontypes.VirtualPart{ + Loc: "hasTestResult", + // Here, we apply the length-1 prefix virtual transform + Trans: length1PrefixVirtualTransformList, + } + + statePart := dbesdkdynamodbencryptiontypes.VirtualPart{ + Loc: "state", + // Note that we do not apply any transform to the `state` attribute, + // and the virtual field will read in the attribute as-is. + } + + // 3. Construct the VirtualField from the VirtualParts + // Note that the order that virtual parts are added to the virtualPartList + // dictates the order in which they are concatenated to build the virtual field. + // You must add virtual parts in the same order on write as you do on read. + virtualPartList := []dbesdkdynamodbencryptiontypes.VirtualPart{statePart, hasTestResultPart} + + stateAndHasTestResultField := dbesdkdynamodbencryptiontypes.VirtualField{ + Name: "stateAndHasTestResult", + Parts: virtualPartList, + } + + virtualFieldList := []dbesdkdynamodbencryptiontypes.VirtualField{stateAndHasTestResultField} + + // 4. Configure our beacon. + // The virtual field is assumed to hold a US 2-letter state abbreviation + // (56 possible values = 50 states + 6 territories) concatenated with a binary attribute + // (2 possible values: true/false hasTestResult field), we expect a population size of + // 56 * 2 = 112 possible values. + // We will also assume that these values are reasonably well-distributed across + // customer IDs. In practice, this will not be true. We would expect + // more populous states to appear more frequently in the database. + // A more complex analysis would show that a stricter upper bound + // is necessary to account for this by hiding information from the + // underlying distribution. + // + // This link provides guidance for choosing a beacon length: + // https://docs.aws.amazon.com/database-encryption-sdk/latest/devguide/choosing-beacon-length.html + // We follow the guidance in the link above to determine reasonable bounds for beacon length: + // - min: log(sqrt(112))/log(2) ~= 3.4, round down to 3 + // - max: log((112/2))/log(2) ~= 5.8, round up to 6 + // You will somehow need to round results to a nearby integer. + // We choose to round to the nearest integer; you might consider a different rounding approach. + // Rounding up will return fewer expected "false positives" in queries, + // leading to fewer decrypt calls and better performance, + // but it is easier to identify which beacon values encode distinct plaintexts. + // Rounding down will return more expected "false positives" in queries, + // leading to more decrypt calls and worse performance, + // but it is harder to identify which beacon values encode distinct plaintexts. + // We can choose a beacon length between 3 and 6: + // - Closer to 3, we expect more "false positives" to be returned, + // making it harder to identify which beacon values encode distinct plaintexts, + // but leading to more decrypt calls and worse performance + // - Closer to 6, we expect fewer "false positives" returned in queries, + // leading to fewer decrypt calls and better performance, + // but it is easier to identify which beacon values encode distinct plaintexts. + // As an example, we will choose 5. + // Values stored in aws_dbe_b_stateAndHasTestResult will be 5 bits long (0x00 - 0x1f) + // There will be 2^5 = 32 possible HMAC values. + // With a well-distributed dataset (112 values), for a particular beacon we expect + // (112/32) = 3.5 combinations of abbreviation + true/false attribute + // sharing that beacon value. + standardBeaconList := []dbesdkdynamodbencryptiontypes.StandardBeacon{ + { + // This name is the same as our virtual field's name above + Name: "stateAndHasTestResult", + Length: 5, + }, + } + + // 5. Configure Keystore. + // This example expects that you have already set up a KeyStore with a single branch key. + // See the "CreateKeyStoreTableExample" and "CreateKeyStoreKeyExample" files for how to do this. + // After you create a branch key, you should persist its ID for use in this example. + cfg, err := config.LoadDefaultConfig(context.TODO()) + utils.HandleError(err) + + kmsClient := kms.NewFromConfig(cfg) + ddbClient := dynamodb.NewFromConfig(cfg) + + kmsConfig := keystoretypes.KMSConfigurationMemberkmsKeyArn{ + Value: branchKeyWrappingKmsKeyArn, + } + keyStoreConfig := keystoretypes.KeyStoreConfig{ + KmsClient: kmsClient, + DdbClient: ddbClient, + DdbTableName: branchKeyDdbTableName, + LogicalKeyStoreName: branchKeyDdbTableName, + KmsConfiguration: &kmsConfig, + } + + keyStore, err := keystoreclient.NewClient(keyStoreConfig) + utils.HandleError(err) + + // 6. Create BeaconVersion. + // The BeaconVersion inside the list holds the list of beacons on the table. + // The BeaconVersion also stores information about the keystore. + // BeaconVersion must be provided: + // - keyStore: The keystore configured in the previous step. + // - keySource: A configuration for the key source. + // For simple use cases, we can configure a 'singleKeySource' which + // statically configures a single beaconKey. That is the approach this example takes. + // For use cases where you want to use different beacon keys depending on the data + // (for example if your table holds data for multiple tenants, and you want to use + // a different beacon key per tenant), look into configuring a MultiKeyStore: + // https://docs.aws.amazon.com/database-encryption-sdk/latest/devguide/searchable-encryption-multitenant.html + // We also provide our standard beacon list and virtual fields here. + ttl := 6000 + cacheTTL := int32(ttl) + singleKeyStore := dbesdkdynamodbencryptiontypes.SingleKeyStore{ + KeyId: branchKeyId, + CacheTTL: cacheTTL, + } + beaconKeySource := dbesdkdynamodbencryptiontypes.BeaconKeySourceMembersingle{ + Value: singleKeyStore, + } + beaconVersion := dbesdkdynamodbencryptiontypes.BeaconVersion{ + VirtualFields: virtualFieldList, + StandardBeacons: standardBeaconList, + Version: 1, // MUST be 1 + KeyStore: keyStore, + KeySource: &beaconKeySource, + } + + beaconVersions := []dbesdkdynamodbencryptiontypes.BeaconVersion{beaconVersion} + + // 7. Create a Hierarchical Keyring + // This is a KMS keyring that utilizes the keystore table. + // This config defines how items are encrypted and decrypted. + // NOTE: You should configure this to use the same keystore as your search config. + matProv, err := mpl.NewClient(mpltypes.MaterialProvidersConfig{}) + utils.HandleError(err) + + ttlSeconds := int64(ttl) + keyringInput := mpltypes.CreateAwsKmsHierarchicalKeyringInput{ + BranchKeyId: &branchKeyId, + KeyStore: keyStore, + TtlSeconds: ttlSeconds, + } + kmsKeyring, err := matProv.CreateAwsKmsHierarchicalKeyring(context.Background(), keyringInput) + utils.HandleError(err) + + // 8. Configure which attributes are encrypted and/or signed when writing new items. + // For each attribute that may exist on the items we plan to write to our DynamoDbTable, + // we must explicitly configure how they should be treated during item encryption: + // - ENCRYPT_AND_SIGN: The attribute is encrypted and included in the signature + // - SIGN_ONLY: The attribute not encrypted, but is still included in the signature + // - DO_NOTHING: The attribute is not encrypted and not included in the signature + // Any attributes that will be used in beacons must be configured as ENCRYPT_AND_SIGN. + attributeActionsOnEncrypt := map[string]dbesdkstructuredencryptiontypes.CryptoAction{ + "customer_id": dbesdkstructuredencryptiontypes.CryptoActionSignOnly, // Our partition attribute must be SIGN_ONLY + "create_time": dbesdkstructuredencryptiontypes.CryptoActionSignOnly, // Our sort attribute must be SIGN_ONLY + "state": dbesdkstructuredencryptiontypes.CryptoActionEncryptAndSign, // Beaconized attributes must be encrypted + "hasTestResult": dbesdkstructuredencryptiontypes.CryptoActionEncryptAndSign, // Beaconized attributes must be encrypted + } + + // 9. Create the DynamoDb Encryption configuration for the table we will be writing to. + // The beaconVersions are added to the search configuration. + writeVersion := int32(1) + searchConfig := dbesdkdynamodbencryptiontypes.SearchConfig{ + WriteVersion: writeVersion, // MUST be 1 + Versions: beaconVersions, + } + + tableConfig := dbesdkdynamodbencryptiontypes.DynamoDbTableEncryptionConfig{ + LogicalTableName: ddbTableName, + PartitionKeyName: "customer_id", + SortKeyName: aws.String("create_time"), + AttributeActionsOnEncrypt: attributeActionsOnEncrypt, + Keyring: kmsKeyring, + Search: &searchConfig, + } + + tableConfigs := map[string]dbesdkdynamodbencryptiontypes.DynamoDbTableEncryptionConfig{ + ddbTableName: tableConfig, + } + + // 10. Create config + encryptionConfig := dbesdkdynamodbencryptiontypes.DynamoDbTablesEncryptionConfig{ + TableEncryptionConfigs: tableConfigs, + } + + // 11. Create test items + + // Create item with hasTestResult=true + itemWithHasTestResult := map[string]types.AttributeValue{ + "customer_id": &types.AttributeValueMemberS{Value: "ABC-123"}, + "create_time": &types.AttributeValueMemberN{Value: "1681495205"}, + "state": &types.AttributeValueMemberS{Value: "CA"}, + "hasTestResult": &types.AttributeValueMemberBOOL{Value: true}, + } + + // Create item with hasTestResult=false + itemWithNoHasTestResult := map[string]types.AttributeValue{ + "customer_id": &types.AttributeValueMemberS{Value: "DEF-456"}, + "create_time": &types.AttributeValueMemberN{Value: "1681495205"}, + "state": &types.AttributeValueMemberS{Value: "CA"}, + "hasTestResult": &types.AttributeValueMemberBOOL{Value: false}, + } + + // 12. If developing or debugging, verify config by checking virtual field values directly + transformsClient, err := dbesdktransforms.NewClient(encryptionConfig) + utils.HandleError(err) + resolveInput := dbesdktransformstypes.ResolveAttributesInput{ + TableName: ddbTableName, + Item: itemWithHasTestResult, + } + resolveOutput, err := transformsClient.ResolveAttributes(context.TODO(), resolveInput) + utils.HandleError(err) + // CompoundBeacons is empty because we have no Compound Beacons configured + if len(resolveOutput.CompoundBeacons) != 0 { + panic("CompoundBeacons is not empty although it is not configured") + } + // Verify that VirtualFields has the expected value + virtualFields := resolveOutput.VirtualFields + if (len(virtualFields)) != 1 { + panic("VirtualFields does not have the expected length") + } + if virtualFields["stateAndHasTestResult"] != "CAt" { + panic("VirtualFields does not have the expected value") + } + + // 13. Create a new AWS SDK DynamoDb client using the DynamoDb Encryption Interceptor + dbEsdkMiddleware, err := dbesdkmiddleware.NewDBEsdkMiddleware(encryptionConfig) + utils.HandleError(err) + ddb := dynamodb.NewFromConfig(cfg, dbEsdkMiddleware.CreateMiddleware()) + + // 14. Put two items into our table using the above client. + // The two items will differ only in their `customer_id` attribute (primary key) + // and their `hasTestResult` attribute. + // We will query against these items to demonstrate how to use our setup above + // to query against our `stateAndHasTestResult` beacon. + // Before the item gets sent to DynamoDb, it will be encrypted + // client-side, according to our configuration. + // Since our configuration includes a beacon on a virtual field named + // `stateAndHasTestResult`, the client will add an attribute + // to the item with name `aws_dbe_b_stateAndHasTestResult`. + // Its value will be an HMAC truncated to as many bits as the + // beacon's `length` parameter; i.e. 5. + itemWithHasTestResultPutRequest := &dynamodb.PutItemInput{ + TableName: aws.String(ddbTableName), + Item: itemWithHasTestResult, + } + + _, err = ddb.PutItem(context.Background(), itemWithHasTestResultPutRequest) + utils.HandleError(err) + + itemWithNoHasTestResultPutRequest := &dynamodb.PutItemInput{ + TableName: aws.String(ddbTableName), + Item: itemWithNoHasTestResult, + } + + _, err = ddb.PutItem(context.Background(), itemWithNoHasTestResultPutRequest) + utils.HandleError(err) + + // 15. Query by stateAndHasTestResult attribute. + // Note that we are constructing the query as if we were querying on plaintext values. + // However, the DDB encryption client will detect that this attribute name has a beacon configured. + // The client will add the beaconized attribute name and attribute value to the query, + // and transform the query to use the beaconized name and value. + // Internally, the client will query for and receive all items with a matching HMAC value in the beacon field. + // This may include a number of "false positives" with different ciphertext, but the same truncated HMAC. + // e.g. if truncate(HMAC("CAt"), 5) == truncate(HMAC("DCf"), 5), the query will return both items. + // The client will decrypt all returned items to determine which ones have the expected attribute values, + // and only surface items with the correct plaintext to the user. + // This procedure is internal to the client and is abstracted away from the user; + // e.g. the user will only see "CAt" and never "DCf", though the actual query returned both. + expressionAttributeNames := map[string]string{ + "#stateAndHasTestResult": "stateAndHasTestResult", + } + + expressionAttributeValues := map[string]types.AttributeValue{ + // We are querying for the item with `state`="CA" and `hasTestResult`=`true`. + // Since we added virtual parts as `state` then `hasTestResult`, + // we must write our query expression in the same order. + // We constructed our virtual field as `state`+`hasTestResult`, + // so we add the two parts in that order. + // Since we also created a virtual transform that truncated `hasTestResult` + // to its length-1 prefix, i.e. "true" -> "t", + // we write that field as its length-1 prefix in the query. + ":stateAndHasTestResult": &types.AttributeValueMemberS{Value: "CAt"}, + } + + queryRequest := &dynamodb.QueryInput{ + TableName: aws.String(ddbTableName), + IndexName: aws.String(gsiName), + KeyConditionExpression: aws.String("#stateAndHasTestResult = :stateAndHasTestResult"), + ExpressionAttributeNames: expressionAttributeNames, + ExpressionAttributeValues: expressionAttributeValues, + } + + // GSIs do not update instantly + // so if the results come back empty + // we retry after a short sleep + for i := 0; i < 10; i++ { + queryResponse, err := ddb.Query(context.Background(), queryRequest) + utils.HandleError(err) + + attributeValues := queryResponse.Items + + // if no results, sleep and try again + if len(attributeValues) == 0 { + time.Sleep(20 * time.Millisecond) + continue + } + + // Validate only 1 item was returned: the item with the expected attributes + if len(attributeValues) != 1 { + panic(fmt.Sprintf("Expected 1 item, got %d", len(attributeValues))) + } + returnedItem := attributeValues[0] + // Validate the item has the expected attributes + state := returnedItem["state"].(*types.AttributeValueMemberS).Value + hasTestResult := returnedItem["hasTestResult"].(*types.AttributeValueMemberBOOL).Value + if state != "CA" { + panic(fmt.Sprintf("Expected state 'CA', got '%s'", state)) + } + if !hasTestResult { + panic(fmt.Sprintf("Expected hasTestResult true, got %t", hasTestResult)) + } + break + } + + fmt.Println("Virtual Beacon Searchable Encryption Example completed successfully") +} diff --git a/releases/go/dynamodb-esdk/examples/utils/exampleUtils.go b/releases/go/dynamodb-esdk/examples/utils/exampleUtils.go new file mode 100644 index 000000000..763d2cfe6 --- /dev/null +++ b/releases/go/dynamodb-esdk/examples/utils/exampleUtils.go @@ -0,0 +1,204 @@ +// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +package utils + +import ( + "context" + "crypto/rand" + "errors" + "os" + "strings" + + "github.com/aws/aws-sdk-go-v2/aws" + "github.com/aws/aws-sdk-go-v2/config" + "github.com/aws/aws-sdk-go-v2/service/dynamodb" + "github.com/aws/aws-sdk-go-v2/service/dynamodb/types" + "github.com/aws/smithy-go" +) + +const ( + kmsKeyID = "arn:aws:kms:us-west-2:658956600833:key/b3537ef1-d8dc-4780-9f5a-55776cbb2f7f" + ddbTableName = "DynamoDbEncryptionInterceptorTestTableCS" + keyNamespace = "my-key-namespace" + keyName = "my-key-name" + aesKeyBytes = 32 // 256 bits = 32 bytes + testKeystoreName = "KeyStoreDdbTable" + testLogicalKeystoreName = "KeyStoreDdbTable" + testKeystoreKmsKeyId = "arn:aws:kms:us-west-2:370957321024:key/9d989aa2-2f9c-438c-a745-cc57d3ad0126" + defaultRsaPublicKeyFilename = "KmsRsaKeyringPublicKey.pem" + testKmsRsaKeyID = "arn:aws:kms:us-west-2:658956600833:key/8b432da4-dde4-4bc3-a794-c7d68cbab5a6" + defaultKMSKeyAccountID = "658956600833" + defaultKmsKeyRegion = "us-west-2" + alternateRegionKmsKeyRegion = "eu-west-1" + exampleRsaPrivateKeyFilename = "RawRsaKeyringExamplePrivateKey.pem" + exampleRsaPublicKeyFilename = "RawRsaKeyringExamplePublicKey.pem" + unitInspectionTestDdbTableName = "UnitInspectionTestTableCS" + simpleBeaconTestDdbTableName = "SimpleBeaconTestTable" + testComplexDdbTableName = "ComplexBeaconTestTable" + testMrkReplicaKeyIdUsEast1 = "arn:aws:kms:us-east-1:658956600833:key/mrk-80bd8ecdcd4342aebd84b7dc9da498a7" +) + +func AlternateRegionKmsKeyRegionAsAList() []string { + return []string{alternateRegionKmsKeyRegion} +} + +func TestMrkReplicaKeyIdUsEast1() string { + return testMrkReplicaKeyIdUsEast1 +} + +func UnitInspectionTestDdbTableName() string { + return unitInspectionTestDdbTableName +} + +func SimpleBeaconTestDdbTableName() string { + return simpleBeaconTestDdbTableName +} + +func TestComplexDdbTableName() string { + return testComplexDdbTableName +} + +func ExampleRsaPublicKeyFilename() string { + return exampleRsaPublicKeyFilename +} + +func ExampleRsaPrivateKeyFilename() string { + return exampleRsaPrivateKeyFilename +} + +func DefaultKMSKeyAccountID() []string { + return []string{defaultKMSKeyAccountID} +} + +func DefaultKmsKeyRegion() []string { + return []string{defaultKmsKeyRegion} +} + +func TestKmsRsaKeyID() string { + return testKmsRsaKeyID +} + +func DefaultRsaPublicKeyFilename() string { + return defaultRsaPublicKeyFilename +} + +func TestKeystoreName() string { + return testKeystoreName +} + +func TestLogicalKeystoreName() string { + return testLogicalKeystoreName +} + +func TestKeystoreKmsKeyId() string { + return testKeystoreKmsKeyId +} + +func KmsKeyID() string { + return kmsKeyID +} + +func DdbTableName() string { + return ddbTableName +} + +func KeyNamespace() string { + return keyNamespace +} + +func KeyName() string { + return keyName +} + +func AreMapsEqual(map1, map2 map[string]string) bool { + if len(map1) != len(map2) { + return false + } + + for key, value1 := range map1 { + value2, exists := map2[key] + if !exists || value1 != value2 { + return false + } + } + return true +} + +func HandleError(err error) { + // Error handling is limited to panic for demonstration purposes only. + // In your code, errors should be properly handled. + if err != nil { + panic(err) + } +} + +func AssertServiceError(err error, service string, operation string, errorMessage string) { + if err == nil { + panic("Expected error but got no error") + } + var oe *smithy.OperationError + if errors.As(err, &oe) { + if oe.Service() != service { + panic("Expected service to be: " + service + " but got: " + oe.Service()) + } + if oe.Operation() != operation { + panic("Expected Operation to be: " + operation + " but got: " + oe.Operation()) + } + if !strings.Contains(oe.Unwrap().Error(), errorMessage) { + panic("Expected message to contain: " + errorMessage + " but got: " + oe.Unwrap().Error()) + } + } +} + +func AssertErrorMessage(err error, expectedMessage string) { + if err == nil { + panic("Expected error but got no error") + } + if !strings.Contains(err.Error(), expectedMessage) { + panic("Expected error containing: `" + expectedMessage + "` but got:" + err.Error()) + } +} + +func GenerateAes256KeyBytes() []byte { + key := make([]byte, aesKeyBytes) + // crypto/rand is used here for demonstration. + // In your code, you should implement a key generation strategy that meets your security needs. + _, err := rand.Read(key) + HandleError(err) + return key +} + +func FileExists(filename string) bool { + _, err := os.Stat(filename) + return !os.IsNotExist(err) +} + +func DeleteItem( + tableName string, + partitionKeyName string, + partitionKeyValue string, + sortKeyName string, + sortKeyValue string, +) { + cfg, err := config.LoadDefaultConfig(context.TODO()) + HandleError(err) + + // Create DynamoDB client + client := dynamodb.NewFromConfig(cfg) + // Build the key attributes map with both partition and sort keys + key := map[string]types.AttributeValue{ + partitionKeyName: &types.AttributeValueMemberS{Value: partitionKeyValue}, + sortKeyName: &types.AttributeValueMemberN{Value: sortKeyValue}, + } + + // Create the DeleteItem input + input := &dynamodb.DeleteItemInput{ + TableName: aws.String(tableName), + Key: key, + } + + // Execute the DeleteItem operation + _, err = client.DeleteItem(context.TODO(), input) + HandleError(err) +} diff --git a/releases/go/dynamodb-esdk/go.mod b/releases/go/dynamodb-esdk/go.mod new file mode 100644 index 000000000..0949c7569 --- /dev/null +++ b/releases/go/dynamodb-esdk/go.mod @@ -0,0 +1,32 @@ +module github.com/aws/aws-database-encryption-sdk-dynamodb/releases/go/dynamodb-esdk + +go 1.23.2 + +require ( + github.com/aws/aws-cryptographic-material-providers-library/releases/go/dynamodb v0.2.1 + github.com/aws/aws-cryptographic-material-providers-library/releases/go/kms v0.2.1 + github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl v0.2.1 + github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives v0.2.1 + github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library v0.2.1 + github.com/aws/aws-sdk-go-v2/service/dynamodb v1.47.0 + github.com/aws/smithy-go v1.22.5 + github.com/dafny-lang/DafnyRuntimeGo/v4 v4.10.1 +) + +require ( + github.com/aws/aws-sdk-go-v2 v1.38.0 // indirect + github.com/aws/aws-sdk-go-v2/config v1.31.0 // indirect + github.com/aws/aws-sdk-go-v2/credentials v1.18.4 // indirect + github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.3 // indirect + github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.3 // indirect + github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.3 // indirect + github.com/aws/aws-sdk-go-v2/internal/ini v1.8.3 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.0 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/endpoint-discovery v1.11.3 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.3 // indirect + github.com/aws/aws-sdk-go-v2/service/kms v1.44.0 // indirect + github.com/aws/aws-sdk-go-v2/service/sso v1.28.0 // indirect + github.com/aws/aws-sdk-go-v2/service/ssooidc v1.33.0 // indirect + github.com/aws/aws-sdk-go-v2/service/sts v1.37.0 // indirect + github.com/google/uuid v1.6.0 // indirect +) diff --git a/releases/go/dynamodb-esdk/go.sum b/releases/go/dynamodb-esdk/go.sum new file mode 100644 index 000000000..c872c995c --- /dev/null +++ b/releases/go/dynamodb-esdk/go.sum @@ -0,0 +1,46 @@ +github.com/aws/aws-cryptographic-material-providers-library/releases/go/dynamodb v0.2.1 h1:nvrlDo1EddNCFknnyaW7s49P4Vwjgbm1VT13Mh87+D0= +github.com/aws/aws-cryptographic-material-providers-library/releases/go/dynamodb v0.2.1/go.mod h1:lZ/LN+rINEWvrfRItZoMNYPp6nTx/iZLIlXYq5yvWvA= +github.com/aws/aws-cryptographic-material-providers-library/releases/go/kms v0.2.1 h1:GHba7vmqUvFOLhQvpzfE9KCh2oIOn/nQaN5Xu2rY1Ac= +github.com/aws/aws-cryptographic-material-providers-library/releases/go/kms v0.2.1/go.mod h1:Rh8pLBW83043mr0GMCE5k68x7Gm/zMBtcWBuGFrsleM= +github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl v0.2.1 h1:TzZdNan/tjcDnwaiVwiR90t/iOohfQGdW5z5JyicBI0= +github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl v0.2.1/go.mod h1:d6R+lhtZXMkqsAuZ9zqNVZk3iXOYwVjxhBYQI3yr7OQ= +github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives v0.2.1 h1:TAIxapsLa/vJVrDyVM9R/+wuFWYdnyjfe/N9lvn5yFc= +github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives v0.2.1/go.mod h1:Uj8qJSU7Bx4YHEv0Up8J91Dh9TU0ggFnpAWLAbiFx+k= +github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library v0.2.1 h1:KShsiDfiiFa2A4UBh81BfiBMnNBIkelql7filQw6kfQ= +github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library v0.2.1/go.mod h1:j4QF5oVY9L1yNZrzoDu3l3d8TRh53uBw3FLZCL7xCTk= +github.com/aws/aws-sdk-go-v2 v1.38.0 h1:UCRQ5mlqcFk9HJDIqENSLR3wiG1VTWlyUfLDEvY7RxU= +github.com/aws/aws-sdk-go-v2 v1.38.0/go.mod h1:9Q0OoGQoboYIAJyslFyF1f5K1Ryddop8gqMhWx/n4Wg= +github.com/aws/aws-sdk-go-v2/config v1.31.0 h1:9yH0xiY5fUnVNLRWO0AtayqwU1ndriZdN78LlhruJR4= +github.com/aws/aws-sdk-go-v2/config v1.31.0/go.mod h1:VeV3K72nXnhbe4EuxxhzsDc/ByrCSlZwUnWH52Nde/I= +github.com/aws/aws-sdk-go-v2/credentials v1.18.4 h1:IPd0Algf1b+Qy9BcDp0sCUcIWdCQPSzDoMK3a8pcbUM= +github.com/aws/aws-sdk-go-v2/credentials v1.18.4/go.mod h1:nwg78FjH2qvsRM1EVZlX9WuGUJOL5od+0qvm0adEzHk= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.3 h1:GicIdnekoJsjq9wqnvyi2elW6CGMSYKhdozE7/Svh78= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.3/go.mod h1:R7BIi6WNC5mc1kfRM7XM/VHC3uRWkjc396sfabq4iOo= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.3 h1:o9RnO+YZ4X+kt5Z7Nvcishlz0nksIt2PIzDglLMP0vA= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.3/go.mod h1:+6aLJzOG1fvMOyzIySYjOFjcguGvVRL68R+uoRencN4= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.3 h1:joyyUFhiTQQmVK6ImzNU9TQSNRNeD9kOklqTzyk5v6s= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.3/go.mod h1:+vNIyZQP3b3B1tSLI0lxvrU9cfM7gpdRXMFfm67ZcPc= +github.com/aws/aws-sdk-go-v2/internal/ini v1.8.3 h1:bIqFDwgGXXN1Kpp99pDOdKMTTb5d2KyU5X/BZxjOkRo= +github.com/aws/aws-sdk-go-v2/internal/ini v1.8.3/go.mod h1:H5O/EsxDWyU+LP/V8i5sm8cxoZgc2fdNR9bxlOFrQTo= +github.com/aws/aws-sdk-go-v2/service/dynamodb v1.47.0 h1:A5zeikrrAgz3YtNzhMat4K8hK/CFzOjFKLVk8pI7Cz8= +github.com/aws/aws-sdk-go-v2/service/dynamodb v1.47.0/go.mod h1:tMQ/Edfn5xLcBFSVd3JDreJPias8GqBq0dVbCbMz9vs= +github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.0 h1:6+lZi2JeGKtCraAj1rpoZfKqnQ9SptseRZioejfUOLM= +github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.0/go.mod h1:eb3gfbVIxIoGgJsi9pGne19dhCBpK6opTYpQqAmdy44= +github.com/aws/aws-sdk-go-v2/service/internal/endpoint-discovery v1.11.3 h1:xMmJPUT0G1q9+I0mzH4B6oN9fB5PkDoD+jvpVIcom1I= +github.com/aws/aws-sdk-go-v2/service/internal/endpoint-discovery v1.11.3/go.mod h1:U0JFMTY/gPxV07XTXXz152nX0Hg1eBenzyslKF2j4j4= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.3 h1:ieRzyHXypu5ByllM7Sp4hC5f/1Fy5wqxqY0yB85hC7s= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.3/go.mod h1:O5ROz8jHiOAKAwx179v+7sHMhfobFVi6nZt8DEyiYoM= +github.com/aws/aws-sdk-go-v2/service/kms v1.44.0 h1:Z95XCqqSnwXr0AY7PgsiOUBhUG2GoDM5getw6RfD1Lg= +github.com/aws/aws-sdk-go-v2/service/kms v1.44.0/go.mod h1:DqcSngL7jJeU1fOzh5Ll5rSvX/MlMV6OZlE4mVdFAQc= +github.com/aws/aws-sdk-go-v2/service/sso v1.28.0 h1:Mc/MKBf2m4VynyJkABoVEN+QzkfLqGj0aiJuEe7cMeM= +github.com/aws/aws-sdk-go-v2/service/sso v1.28.0/go.mod h1:iS5OmxEcN4QIPXARGhavH7S8kETNL11kym6jhoS7IUQ= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.33.0 h1:6csaS/aJmqZQbKhi1EyEMM7yBW653Wy/B9hnBofW+sw= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.33.0/go.mod h1:59qHWaY5B+Rs7HGTuVGaC32m0rdpQ68N8QCN3khYiqs= +github.com/aws/aws-sdk-go-v2/service/sts v1.37.0 h1:MG9VFW43M4A8BYeAfaJJZWrroinxeTi2r3+SnmLQfSA= +github.com/aws/aws-sdk-go-v2/service/sts v1.37.0/go.mod h1:JdeBDPgpJfuS6rU/hNglmOigKhyEZtBmbraLE4GK1J8= +github.com/aws/smithy-go v1.22.5 h1:P9ATCXPMb2mPjYBgueqJNCA5S9UfktsW0tTxi+a7eqw= +github.com/aws/smithy-go v1.22.5/go.mod h1:t1ufH5HMublsJYulve2RKmHDC15xu1f26kHCp/HgceI= +github.com/dafny-lang/DafnyRuntimeGo/v4 v4.10.1 h1:QyrSST4WJYQIXRSJNXFEwL1NIoA9bgirUHK8YwGoWkA= +github.com/dafny-lang/DafnyRuntimeGo/v4 v4.10.1/go.mod h1:l2Tm4N2DKuq3ljONC2vOATeM9PUpXbIc8SgXdwwqEto= +github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= +github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= diff --git a/scripts/go-release-automation.sh b/scripts/go-release-automation.sh deleted file mode 100644 index 4e105550f..000000000 --- a/scripts/go-release-automation.sh +++ /dev/null @@ -1,107 +0,0 @@ -#!/bin/bash - -# Go Release Process Script -# Used for copying go files to release directory and make a commit - -set -e # Exit on error - -# Check if project name and version is provided -if [ $# -ne 3 ]; then - echo "Usage: $0 [version]" - echo "Example: $0 get_release_dir_name DynamoDbEncryption v0.1.0" - echo "Example: $0 run_release_script DynamoDbEncryption v0.1.0" - exit 1 -fi - -# Function to map project name to release directory name -get_release_dir_name() { - local project=$1 - case "$project" in - "DynamoDbEncryption") echo "dynamodb-esdk" ;; - *) echo "Error: Unknown project name: $project" >&2; return 1 ;; - esac -} - -run_release_script() { - PROJECT_NAME=$1 - VERSION=$2 - - echo "Starting Go release script for $PROJECT_NAME $VERSION" - - # Pull the latest smithy-dafny and libraries git submodules - echo " Pulling latest git submodules..." - git submodule update --init --recursive - - # Go to the project directory - echo " Navigating to $PROJECT_NAME..." - cd "$PROJECT_NAME" || { echo "Error: Project directory $PROJECT_NAME not found"; exit 1; } - - # Build using make commands - echo " Building project..." - make polymorph_dafny - make polymorph_go - make transpile_go - make test_go - - # Run Go tools in ImplementationFromDafny-go - echo " Running Go tools in ImplementationFromDafny-go..." - cd runtimes/go/ImplementationFromDafny-go || { echo "Error: ImplementationFromDafny-go directory not found"; exit 1; } - - find . -name "*shim.go" -type f -delete - echo "Removed all shim.go files" - - echo "Running goimports..." - goimports -w . - - echo "Running go get -u..." - go get -u - - echo "Running go mod tidy..." - go mod tidy - - echo "Running go build to check for errors..." - go build --gcflags="-e" ./... - - # Replacement directives are removed to get package from go pkg instead of local copy - echo "Removing all replace directives from go.mod..." - go mod edit -json | jq -r '.Replace[].Old.Path' | xargs -n1 go mod edit -dropreplace - - # Get the mapped release directory name - RELEASE_DIR_NAME=$(get_release_dir_name "$PROJECT_NAME") - - # Copy files to releases directory - echo " Copying files to releases/go/$RELEASE_DIR_NAME..." - - # Use rsync to copy files while excluding following ones: - # ImplementationFromDafny.go: This file is for devlopment. Users is expected use API(s) from `*/api_client.go` - # ImplementationFromDafny-go.dtr: This is the dafny translation record only needed for code generation - # go.sum: This files will be updated by go mod tidy - rsync -av --exclude="ImplementationFromDafny.go" --exclude="ImplementationFromDafny-go.dtr" --exclude="go.sum" ./ "$(git rev-parse --show-toplevel)/releases/go/$RELEASE_DIR_NAME/" - - # Run Go tools in releases directory - echo "Running Go tools in releases/go/$RELEASE_DIR_NAME..." - - cd "$(git rev-parse --show-toplevel)/releases/go/$RELEASE_DIR_NAME/" || { echo "Error: releases directory not found"; exit 1; } - - echo "Running goimports..." - goimports -w . - echo "Running go get -u..." - go get -u ./... - - echo "Running go mod tidy..." - go mod tidy - - echo "Running go build to check for errors..." - go build --gcflags="-e" ./... - - # Prepare for commit - echo "creating a branch..." - - git checkout -b "golang-release-staging-branch/$RELEASE_DIR_NAME/${VERSION}" - git add * - - git commit -m "Release $RELEASE_DIR_NAME Go module ${VERSION}" - git push origin "golang-release-staging-branch/$RELEASE_DIR_NAME/${VERSION}" -} - -"$@" \ No newline at end of file diff --git a/submodules/MaterialProviders b/submodules/MaterialProviders index ec013f6ba..6fed3f6c8 160000 --- a/submodules/MaterialProviders +++ b/submodules/MaterialProviders @@ -1 +1 @@ -Subproject commit ec013f6ba85d62ab41db48fec92baca85625e4b9 +Subproject commit 6fed3f6c89f06d6d7d35b85937c0216b2d5fa03b