From 7975d15032ecd894619681e30f5fe17ec9d171ff Mon Sep 17 00:00:00 2001 From: Lucas McDonald Date: Thu, 12 Dec 2024 16:15:47 -0800 Subject: [PATCH] m --- TestVectors/runtimes/python/poetry.lock | 462 +++++++++++ TestVectors/runtimes/python/pyproject.toml | 24 + .../__init__.py | 8 + .../__pycache__/__init__.cpython-311.pyc | Bin 0 -> 368 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 330 bytes .../internaldafny/extern/__init__.py | 3 + .../__pycache__/__init__.cpython-311.pyc | Bin 0 -> 323 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 286 bytes .../__pycache__/wrapped_esdk.cpython-311.pyc | Bin 0 -> 2007 bytes .../__pycache__/wrapped_esdk.cpython-312.pyc | Bin 0 -> 1845 bytes .../internaldafny/extern/wrapped_esdk.py | 18 + .../generated/AllEsdkV4NoReqEc.py | 277 +++++++ .../generated/AllEsdkV4WithReqEc.py | 246 ++++++ .../generated/EsdkManifestOptions.py | 266 ++++++ .../generated/EsdkTestManifests.py | 633 ++++++++++++++ .../generated/EsdkTestVectors.py | 780 ++++++++++++++++++ .../generated/ParseEsdkJsonManifest.py | 629 ++++++++++++++ .../internaldafny/generated/WrappedESDK.py | 229 +++++ .../generated/WrappedESDKMain.py | 346 ++++++++ .../generated/WriteEsdkJsonManifests.py | 369 +++++++++ .../internaldafny/generated/WriteVectors.py | 369 +++++++++ .../internaldafny/generated/__main__.py | 15 + .../AllEsdkV4NoReqEc.cpython-311.pyc | Bin 0 -> 41096 bytes .../AllEsdkV4NoReqEc.cpython-312.pyc | Bin 0 -> 34692 bytes .../AllEsdkV4WithReqEc.cpython-311.pyc | Bin 0 -> 37299 bytes .../AllEsdkV4WithReqEc.cpython-312.pyc | Bin 0 -> 30339 bytes .../EsdkManifestOptions.cpython-311.pyc | Bin 0 -> 42464 bytes .../EsdkManifestOptions.cpython-312.pyc | Bin 0 -> 35046 bytes .../EsdkTestManifests.cpython-311.pyc | Bin 0 -> 70239 bytes .../EsdkTestManifests.cpython-312.pyc | Bin 0 -> 61554 bytes .../EsdkTestVectors.cpython-311.pyc | Bin 0 -> 105553 bytes .../EsdkTestVectors.cpython-312.pyc | Bin 0 -> 100113 bytes .../ParseEsdkJsonManifest.cpython-311.pyc | Bin 0 -> 68617 bytes .../ParseEsdkJsonManifest.cpython-312.pyc | Bin 0 -> 59215 bytes .../__pycache__/WrappedESDK.cpython-311.pyc | Bin 0 -> 35584 bytes .../__pycache__/WrappedESDK.cpython-312.pyc | Bin 0 -> 28501 bytes .../WrappedESDKMain.cpython-311.pyc | Bin 0 -> 53505 bytes .../WrappedESDKMain.cpython-312.pyc | Bin 0 -> 46599 bytes .../WriteEsdkJsonManifests.cpython-311.pyc | Bin 0 -> 53261 bytes .../WriteEsdkJsonManifests.cpython-312.pyc | Bin 0 -> 45429 bytes .../__pycache__/WriteVectors.cpython-311.pyc | Bin 0 -> 48774 bytes .../__pycache__/WriteVectors.cpython-312.pyc | Bin 0 -> 41100 bytes .../__pycache__/module_.cpython-311.pyc | Bin 0 -> 35924 bytes .../__pycache__/module_.cpython-312.pyc | Bin 0 -> 28554 bytes .../internaldafny/generated/dafny_src-py.dtr | 35 + .../internaldafny/generated/module_.py | 234 ++++++ .../__init__.py | 3 + .../__pycache__/__init__.cpython-311.pyc | Bin 0 -> 282 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 270 bytes .../__pycache__/shim.cpython-311.pyc | Bin 0 -> 3959 bytes .../__pycache__/shim.cpython-312.pyc | Bin 0 -> 3701 bytes .../aws_cryptography_encryptionsdk/shim.py | 66 ++ .../generated/AllEsdkV4NoReqEc.py | 277 +++++++ .../generated/AllEsdkV4WithReqEc.py | 246 ++++++ .../generated/EsdkManifestOptions.py | 266 ++++++ .../generated/EsdkTestManifests.py | 633 ++++++++++++++ .../generated/EsdkTestVectors.py | 780 ++++++++++++++++++ .../generated/ParseEsdkJsonManifest.py | 629 ++++++++++++++ .../internaldafny/generated/WrappedESDK.py | 229 +++++ .../generated/WrappedESDKMain.py | 346 ++++++++ .../generated/WriteEsdkJsonManifests.py | 369 +++++++++ .../internaldafny/generated/WriteVectors.py | 369 +++++++++ .../src/internaldafny/generated/__main__.py | 15 + .../internaldafny/generated/dafny_src-py.dtr | 35 + .../src/internaldafny/generated/module_.py | 234 ++++++ .../python/test/internaldafny/__init__.py | 2 + .../__pycache__/__init__.cpython-311.pyc | Bin 0 -> 218 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 206 bytes ...dafny_wrapper.cpython-311-pytest-7.4.4.pyc | Bin 0 -> 1345 bytes ...dafny_wrapper.cpython-312-pytest-7.4.4.pyc | Bin 0 -> 1214 bytes .../extern/TestWrappedESDKMain_extern.py | 10 + .../test/internaldafny/extern/__init__.py | 3 + ...TestWrappedESDKMain_extern.cpython-311.pyc | Bin 0 -> 943 bytes ...TestWrappedESDKMain_extern.cpython-312.pyc | Bin 0 -> 861 bytes .../__pycache__/__init__.cpython-311.pyc | Bin 0 -> 306 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 269 bytes .../generated/TestWrappedESDKMain.py | 278 +++++++ .../test/internaldafny/generated/__main__.py | 15 + .../TestWrappedESDKMain.cpython-311.pyc | Bin 0 -> 39437 bytes .../TestWrappedESDKMain.cpython-312.pyc | Bin 0 -> 32003 bytes .../__pycache__/__main__.cpython-311.pyc | Bin 0 -> 1216 bytes .../__pycache__/__main__.cpython-312.pyc | Bin 0 -> 1042 bytes .../__pycache__/module_.cpython-311.pyc | Bin 0 -> 36936 bytes .../__pycache__/module_.cpython-312.pyc | Bin 0 -> 29570 bytes .../internaldafny/generated/dafny_test-py.dtr | 4 + .../test/internaldafny/generated/module_.py | 248 ++++++ .../test/internaldafny/test_dafny_wrapper.py | 22 + TestVectors/runtimes/python/tox.ini | 26 + 88 files changed, 10048 insertions(+) create mode 100644 TestVectors/runtimes/python/poetry.lock create mode 100644 TestVectors/runtimes/python/pyproject.toml create mode 100644 TestVectors/runtimes/python/src/aws_encryption_sdk_test_vectors/__init__.py create mode 100644 TestVectors/runtimes/python/src/aws_encryption_sdk_test_vectors/__pycache__/__init__.cpython-311.pyc create mode 100644 TestVectors/runtimes/python/src/aws_encryption_sdk_test_vectors/__pycache__/__init__.cpython-312.pyc create mode 100644 TestVectors/runtimes/python/src/aws_encryption_sdk_test_vectors/internaldafny/extern/__init__.py create mode 100644 TestVectors/runtimes/python/src/aws_encryption_sdk_test_vectors/internaldafny/extern/__pycache__/__init__.cpython-311.pyc create mode 100644 TestVectors/runtimes/python/src/aws_encryption_sdk_test_vectors/internaldafny/extern/__pycache__/__init__.cpython-312.pyc create mode 100644 TestVectors/runtimes/python/src/aws_encryption_sdk_test_vectors/internaldafny/extern/__pycache__/wrapped_esdk.cpython-311.pyc create mode 100644 TestVectors/runtimes/python/src/aws_encryption_sdk_test_vectors/internaldafny/extern/__pycache__/wrapped_esdk.cpython-312.pyc create mode 100644 TestVectors/runtimes/python/src/aws_encryption_sdk_test_vectors/internaldafny/extern/wrapped_esdk.py create mode 100644 TestVectors/runtimes/python/src/aws_encryption_sdk_test_vectors/internaldafny/generated/AllEsdkV4NoReqEc.py create mode 100644 TestVectors/runtimes/python/src/aws_encryption_sdk_test_vectors/internaldafny/generated/AllEsdkV4WithReqEc.py create mode 100644 TestVectors/runtimes/python/src/aws_encryption_sdk_test_vectors/internaldafny/generated/EsdkManifestOptions.py create mode 100644 TestVectors/runtimes/python/src/aws_encryption_sdk_test_vectors/internaldafny/generated/EsdkTestManifests.py create mode 100644 TestVectors/runtimes/python/src/aws_encryption_sdk_test_vectors/internaldafny/generated/EsdkTestVectors.py create mode 100644 TestVectors/runtimes/python/src/aws_encryption_sdk_test_vectors/internaldafny/generated/ParseEsdkJsonManifest.py create mode 100644 TestVectors/runtimes/python/src/aws_encryption_sdk_test_vectors/internaldafny/generated/WrappedESDK.py create mode 100644 TestVectors/runtimes/python/src/aws_encryption_sdk_test_vectors/internaldafny/generated/WrappedESDKMain.py create mode 100644 TestVectors/runtimes/python/src/aws_encryption_sdk_test_vectors/internaldafny/generated/WriteEsdkJsonManifests.py create mode 100644 TestVectors/runtimes/python/src/aws_encryption_sdk_test_vectors/internaldafny/generated/WriteVectors.py create mode 100644 TestVectors/runtimes/python/src/aws_encryption_sdk_test_vectors/internaldafny/generated/__main__.py create mode 100644 TestVectors/runtimes/python/src/aws_encryption_sdk_test_vectors/internaldafny/generated/__pycache__/AllEsdkV4NoReqEc.cpython-311.pyc create mode 100644 TestVectors/runtimes/python/src/aws_encryption_sdk_test_vectors/internaldafny/generated/__pycache__/AllEsdkV4NoReqEc.cpython-312.pyc create mode 100644 TestVectors/runtimes/python/src/aws_encryption_sdk_test_vectors/internaldafny/generated/__pycache__/AllEsdkV4WithReqEc.cpython-311.pyc create mode 100644 TestVectors/runtimes/python/src/aws_encryption_sdk_test_vectors/internaldafny/generated/__pycache__/AllEsdkV4WithReqEc.cpython-312.pyc create mode 100644 TestVectors/runtimes/python/src/aws_encryption_sdk_test_vectors/internaldafny/generated/__pycache__/EsdkManifestOptions.cpython-311.pyc create mode 100644 TestVectors/runtimes/python/src/aws_encryption_sdk_test_vectors/internaldafny/generated/__pycache__/EsdkManifestOptions.cpython-312.pyc create mode 100644 TestVectors/runtimes/python/src/aws_encryption_sdk_test_vectors/internaldafny/generated/__pycache__/EsdkTestManifests.cpython-311.pyc create mode 100644 TestVectors/runtimes/python/src/aws_encryption_sdk_test_vectors/internaldafny/generated/__pycache__/EsdkTestManifests.cpython-312.pyc create mode 100644 TestVectors/runtimes/python/src/aws_encryption_sdk_test_vectors/internaldafny/generated/__pycache__/EsdkTestVectors.cpython-311.pyc create mode 100644 TestVectors/runtimes/python/src/aws_encryption_sdk_test_vectors/internaldafny/generated/__pycache__/EsdkTestVectors.cpython-312.pyc create mode 100644 TestVectors/runtimes/python/src/aws_encryption_sdk_test_vectors/internaldafny/generated/__pycache__/ParseEsdkJsonManifest.cpython-311.pyc create mode 100644 TestVectors/runtimes/python/src/aws_encryption_sdk_test_vectors/internaldafny/generated/__pycache__/ParseEsdkJsonManifest.cpython-312.pyc create mode 100644 TestVectors/runtimes/python/src/aws_encryption_sdk_test_vectors/internaldafny/generated/__pycache__/WrappedESDK.cpython-311.pyc create mode 100644 TestVectors/runtimes/python/src/aws_encryption_sdk_test_vectors/internaldafny/generated/__pycache__/WrappedESDK.cpython-312.pyc create mode 100644 TestVectors/runtimes/python/src/aws_encryption_sdk_test_vectors/internaldafny/generated/__pycache__/WrappedESDKMain.cpython-311.pyc create mode 100644 TestVectors/runtimes/python/src/aws_encryption_sdk_test_vectors/internaldafny/generated/__pycache__/WrappedESDKMain.cpython-312.pyc create mode 100644 TestVectors/runtimes/python/src/aws_encryption_sdk_test_vectors/internaldafny/generated/__pycache__/WriteEsdkJsonManifests.cpython-311.pyc create mode 100644 TestVectors/runtimes/python/src/aws_encryption_sdk_test_vectors/internaldafny/generated/__pycache__/WriteEsdkJsonManifests.cpython-312.pyc create mode 100644 TestVectors/runtimes/python/src/aws_encryption_sdk_test_vectors/internaldafny/generated/__pycache__/WriteVectors.cpython-311.pyc create mode 100644 TestVectors/runtimes/python/src/aws_encryption_sdk_test_vectors/internaldafny/generated/__pycache__/WriteVectors.cpython-312.pyc create mode 100644 TestVectors/runtimes/python/src/aws_encryption_sdk_test_vectors/internaldafny/generated/__pycache__/module_.cpython-311.pyc create mode 100644 TestVectors/runtimes/python/src/aws_encryption_sdk_test_vectors/internaldafny/generated/__pycache__/module_.cpython-312.pyc create mode 100644 TestVectors/runtimes/python/src/aws_encryption_sdk_test_vectors/internaldafny/generated/dafny_src-py.dtr create mode 100644 TestVectors/runtimes/python/src/aws_encryption_sdk_test_vectors/internaldafny/generated/module_.py create mode 100644 TestVectors/runtimes/python/src/aws_encryption_sdk_test_vectors/smithygenerated/aws_cryptography_encryptionsdk/__init__.py create mode 100644 TestVectors/runtimes/python/src/aws_encryption_sdk_test_vectors/smithygenerated/aws_cryptography_encryptionsdk/__pycache__/__init__.cpython-311.pyc create mode 100644 TestVectors/runtimes/python/src/aws_encryption_sdk_test_vectors/smithygenerated/aws_cryptography_encryptionsdk/__pycache__/__init__.cpython-312.pyc create mode 100644 TestVectors/runtimes/python/src/aws_encryption_sdk_test_vectors/smithygenerated/aws_cryptography_encryptionsdk/__pycache__/shim.cpython-311.pyc create mode 100644 TestVectors/runtimes/python/src/aws_encryption_sdk_test_vectors/smithygenerated/aws_cryptography_encryptionsdk/__pycache__/shim.cpython-312.pyc create mode 100644 TestVectors/runtimes/python/src/aws_encryption_sdk_test_vectors/smithygenerated/aws_cryptography_encryptionsdk/shim.py create mode 100644 TestVectors/runtimes/python/src/internaldafny/generated/AllEsdkV4NoReqEc.py create mode 100644 TestVectors/runtimes/python/src/internaldafny/generated/AllEsdkV4WithReqEc.py create mode 100644 TestVectors/runtimes/python/src/internaldafny/generated/EsdkManifestOptions.py create mode 100644 TestVectors/runtimes/python/src/internaldafny/generated/EsdkTestManifests.py create mode 100644 TestVectors/runtimes/python/src/internaldafny/generated/EsdkTestVectors.py create mode 100644 TestVectors/runtimes/python/src/internaldafny/generated/ParseEsdkJsonManifest.py create mode 100644 TestVectors/runtimes/python/src/internaldafny/generated/WrappedESDK.py create mode 100644 TestVectors/runtimes/python/src/internaldafny/generated/WrappedESDKMain.py create mode 100644 TestVectors/runtimes/python/src/internaldafny/generated/WriteEsdkJsonManifests.py create mode 100644 TestVectors/runtimes/python/src/internaldafny/generated/WriteVectors.py create mode 100644 TestVectors/runtimes/python/src/internaldafny/generated/__main__.py create mode 100644 TestVectors/runtimes/python/src/internaldafny/generated/dafny_src-py.dtr create mode 100644 TestVectors/runtimes/python/src/internaldafny/generated/module_.py create mode 100644 TestVectors/runtimes/python/test/internaldafny/__init__.py create mode 100644 TestVectors/runtimes/python/test/internaldafny/__pycache__/__init__.cpython-311.pyc create mode 100644 TestVectors/runtimes/python/test/internaldafny/__pycache__/__init__.cpython-312.pyc create mode 100644 TestVectors/runtimes/python/test/internaldafny/__pycache__/test_dafny_wrapper.cpython-311-pytest-7.4.4.pyc create mode 100644 TestVectors/runtimes/python/test/internaldafny/__pycache__/test_dafny_wrapper.cpython-312-pytest-7.4.4.pyc create mode 100644 TestVectors/runtimes/python/test/internaldafny/extern/TestWrappedESDKMain_extern.py create mode 100644 TestVectors/runtimes/python/test/internaldafny/extern/__init__.py create mode 100644 TestVectors/runtimes/python/test/internaldafny/extern/__pycache__/TestWrappedESDKMain_extern.cpython-311.pyc create mode 100644 TestVectors/runtimes/python/test/internaldafny/extern/__pycache__/TestWrappedESDKMain_extern.cpython-312.pyc create mode 100644 TestVectors/runtimes/python/test/internaldafny/extern/__pycache__/__init__.cpython-311.pyc create mode 100644 TestVectors/runtimes/python/test/internaldafny/extern/__pycache__/__init__.cpython-312.pyc create mode 100644 TestVectors/runtimes/python/test/internaldafny/generated/TestWrappedESDKMain.py create mode 100644 TestVectors/runtimes/python/test/internaldafny/generated/__main__.py create mode 100644 TestVectors/runtimes/python/test/internaldafny/generated/__pycache__/TestWrappedESDKMain.cpython-311.pyc create mode 100644 TestVectors/runtimes/python/test/internaldafny/generated/__pycache__/TestWrappedESDKMain.cpython-312.pyc create mode 100644 TestVectors/runtimes/python/test/internaldafny/generated/__pycache__/__main__.cpython-311.pyc create mode 100644 TestVectors/runtimes/python/test/internaldafny/generated/__pycache__/__main__.cpython-312.pyc create mode 100644 TestVectors/runtimes/python/test/internaldafny/generated/__pycache__/module_.cpython-311.pyc create mode 100644 TestVectors/runtimes/python/test/internaldafny/generated/__pycache__/module_.cpython-312.pyc create mode 100644 TestVectors/runtimes/python/test/internaldafny/generated/dafny_test-py.dtr create mode 100644 TestVectors/runtimes/python/test/internaldafny/generated/module_.py create mode 100644 TestVectors/runtimes/python/test/internaldafny/test_dafny_wrapper.py create mode 100644 TestVectors/runtimes/python/tox.ini diff --git a/TestVectors/runtimes/python/poetry.lock b/TestVectors/runtimes/python/poetry.lock new file mode 100644 index 000000000..765b15188 --- /dev/null +++ b/TestVectors/runtimes/python/poetry.lock @@ -0,0 +1,462 @@ +# This file is automatically @generated by Poetry 1.8.3 and should not be changed by hand. + +[[package]] +name = "aws-cryptographic-material-providers" +version = "1.8.0" +description = "AWS Cryptographic Material Providers Library for Python" +optional = false +python-versions = "^3.11.0" +files = [] +develop = false + +[package.dependencies] +aws-cryptography-internal-dynamodb = {path = "../../../ComAmazonawsDynamodb/runtimes/python"} +aws-cryptography-internal-kms = {path = "../../../ComAmazonawsKms/runtimes/python"} +aws-cryptography-internal-primitives = {path = "../../../AwsCryptographyPrimitives/runtimes/python"} +aws-cryptography-internal-standard-library = {path = "../../../StandardLibrary/runtimes/python"} + +[package.source] +type = "directory" +url = "../../../mpl/AwsCryptographicMaterialProviders/runtimes/python" + +[[package]] +name = "aws-cryptography-internal-dynamodb" +version = "1.8.0" +description = "" +optional = false +python-versions = "^3.11.0" +files = [] +develop = false + +[package.dependencies] +aws-cryptography-internal-standard-library = {path = "../../../StandardLibrary/runtimes/python"} +boto3 = "^1.35.42" + +[package.source] +type = "directory" +url = "../../../mpl/ComAmazonawsDynamodb/runtimes/python" + +[[package]] +name = "aws-cryptography-internal-kms" +version = "1.8.0" +description = "" +optional = false +python-versions = "^3.11.0" +files = [] +develop = false + +[package.dependencies] +aws-cryptography-internal-standard-library = {path = "../../../StandardLibrary/runtimes/python"} +boto3 = "^1.35.42" + +[package.source] +type = "directory" +url = "../../../mpl/ComAmazonawsKms/runtimes/python" + +[[package]] +name = "aws-cryptography-internal-mpl-testvectors" +version = "0.1.0" +description = "" +optional = false +python-versions = "^3.11.0" +files = [] +develop = false + +[package.dependencies] +aws-cryptographic-material-providers = {path = "../../../AwsCryptographicMaterialProviders/runtimes/python"} + +[package.source] +type = "directory" +url = "../../../mpl/TestVectorsAwsCryptographicMaterialProviders/runtimes/python" + +[[package]] +name = "aws-cryptography-internal-primitives" +version = "1.8.0" +description = "" +optional = false +python-versions = "^3.11.0" +files = [] +develop = false + +[package.dependencies] +aws-cryptography-internal-standard-library = {path = "../../../StandardLibrary/runtimes/python"} +cryptography = "^43.0.1" + +[package.source] +type = "directory" +url = "../../../mpl/AwsCryptographyPrimitives/runtimes/python" + +[[package]] +name = "aws-cryptography-internal-standard-library" +version = "1.8.0" +description = "" +optional = false +python-versions = "^3.11.0" +files = [] +develop = false + +[package.dependencies] +DafnyRuntimePython = "4.8.1.post1" +pytz = "^2023.3.post1" + +[package.source] +type = "directory" +url = "../../../mpl/StandardLibrary/runtimes/python" + +[[package]] +name = "aws-encryption-sdk" +version = "0.1.0" +description = "" +optional = false +python-versions = "^3.11.0" +files = [] +develop = false + +[package.dependencies] +aws-cryptographic-material-providers = {path = "../../../mpl/AwsCryptographicMaterialProviders/runtimes/python"} + +[package.source] +type = "directory" +url = "../../../AwsEncryptionSDK/runtimes/python" + +[[package]] +name = "boto3" +version = "1.35.80" +description = "The AWS SDK for Python" +optional = false +python-versions = ">=3.8" +files = [ + {file = "boto3-1.35.80-py3-none-any.whl", hash = "sha256:21a3b18c3a7fd20e463708fe3fa035983105dc7f3a1c274e1903e1583ab91159"}, + {file = "boto3-1.35.80.tar.gz", hash = "sha256:50dae461ab5fbedfb81b690895d48a918fed0d5fdff37be1c4232770c0dc9712"}, +] + +[package.dependencies] +botocore = ">=1.35.80,<1.36.0" +jmespath = ">=0.7.1,<2.0.0" +s3transfer = ">=0.10.0,<0.11.0" + +[package.extras] +crt = ["botocore[crt] (>=1.21.0,<2.0a0)"] + +[[package]] +name = "botocore" +version = "1.35.80" +description = "Low-level, data-driven core of boto 3." +optional = false +python-versions = ">=3.8" +files = [ + {file = "botocore-1.35.80-py3-none-any.whl", hash = "sha256:36e589dccb62380abd628b08fecfa2f7c89b99f41ec9fc42c467c94008c0be4a"}, + {file = "botocore-1.35.80.tar.gz", hash = "sha256:b8dfceca58891cb2711bd6455ec4f7159051f3796e0f64adef9bb334f19d8a92"}, +] + +[package.dependencies] +jmespath = ">=0.7.1,<2.0.0" +python-dateutil = ">=2.1,<3.0.0" +urllib3 = {version = ">=1.25.4,<2.2.0 || >2.2.0,<3", markers = "python_version >= \"3.10\""} + +[package.extras] +crt = ["awscrt (==0.22.0)"] + +[[package]] +name = "cffi" +version = "1.17.1" +description = "Foreign Function Interface for Python calling C code." +optional = false +python-versions = ">=3.8" +files = [ + {file = "cffi-1.17.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:df8b1c11f177bc2313ec4b2d46baec87a5f3e71fc8b45dab2ee7cae86d9aba14"}, + {file = "cffi-1.17.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8f2cdc858323644ab277e9bb925ad72ae0e67f69e804f4898c070998d50b1a67"}, + {file = "cffi-1.17.1-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:edae79245293e15384b51f88b00613ba9f7198016a5948b5dddf4917d4d26382"}, + {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:45398b671ac6d70e67da8e4224a065cec6a93541bb7aebe1b198a61b58c7b702"}, + {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ad9413ccdeda48c5afdae7e4fa2192157e991ff761e7ab8fdd8926f40b160cc3"}, + {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5da5719280082ac6bd9aa7becb3938dc9f9cbd57fac7d2871717b1feb0902ab6"}, + {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2bb1a08b8008b281856e5971307cc386a8e9c5b625ac297e853d36da6efe9c17"}, + {file = "cffi-1.17.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:045d61c734659cc045141be4bae381a41d89b741f795af1dd018bfb532fd0df8"}, + {file = "cffi-1.17.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:6883e737d7d9e4899a8a695e00ec36bd4e5e4f18fabe0aca0efe0a4b44cdb13e"}, + {file = "cffi-1.17.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:6b8b4a92e1c65048ff98cfe1f735ef8f1ceb72e3d5f0c25fdb12087a23da22be"}, + {file = "cffi-1.17.1-cp310-cp310-win32.whl", hash = "sha256:c9c3d058ebabb74db66e431095118094d06abf53284d9c81f27300d0e0d8bc7c"}, + {file = "cffi-1.17.1-cp310-cp310-win_amd64.whl", hash = "sha256:0f048dcf80db46f0098ccac01132761580d28e28bc0f78ae0d58048063317e15"}, + {file = "cffi-1.17.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a45e3c6913c5b87b3ff120dcdc03f6131fa0065027d0ed7ee6190736a74cd401"}, + {file = "cffi-1.17.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:30c5e0cb5ae493c04c8b42916e52ca38079f1b235c2f8ae5f4527b963c401caf"}, + {file = "cffi-1.17.1-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f75c7ab1f9e4aca5414ed4d8e5c0e303a34f4421f8a0d47a4d019ceff0ab6af4"}, + {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a1ed2dd2972641495a3ec98445e09766f077aee98a1c896dcb4ad0d303628e41"}, + {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:46bf43160c1a35f7ec506d254e5c890f3c03648a4dbac12d624e4490a7046cd1"}, + {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a24ed04c8ffd54b0729c07cee15a81d964e6fee0e3d4d342a27b020d22959dc6"}, + {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:610faea79c43e44c71e1ec53a554553fa22321b65fae24889706c0a84d4ad86d"}, + {file = "cffi-1.17.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:a9b15d491f3ad5d692e11f6b71f7857e7835eb677955c00cc0aefcd0669adaf6"}, + {file = "cffi-1.17.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:de2ea4b5833625383e464549fec1bc395c1bdeeb5f25c4a3a82b5a8c756ec22f"}, + {file = "cffi-1.17.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:fc48c783f9c87e60831201f2cce7f3b2e4846bf4d8728eabe54d60700b318a0b"}, + {file = "cffi-1.17.1-cp311-cp311-win32.whl", hash = "sha256:85a950a4ac9c359340d5963966e3e0a94a676bd6245a4b55bc43949eee26a655"}, + {file = "cffi-1.17.1-cp311-cp311-win_amd64.whl", hash = "sha256:caaf0640ef5f5517f49bc275eca1406b0ffa6aa184892812030f04c2abf589a0"}, + {file = "cffi-1.17.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:805b4371bf7197c329fcb3ead37e710d1bca9da5d583f5073b799d5c5bd1eee4"}, + {file = "cffi-1.17.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:733e99bc2df47476e3848417c5a4540522f234dfd4ef3ab7fafdf555b082ec0c"}, + {file = "cffi-1.17.1-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1257bdabf294dceb59f5e70c64a3e2f462c30c7ad68092d01bbbfb1c16b1ba36"}, + {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da95af8214998d77a98cc14e3a3bd00aa191526343078b530ceb0bd710fb48a5"}, + {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d63afe322132c194cf832bfec0dc69a99fb9bb6bbd550f161a49e9e855cc78ff"}, + {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f79fc4fc25f1c8698ff97788206bb3c2598949bfe0fef03d299eb1b5356ada99"}, + {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b62ce867176a75d03a665bad002af8e6d54644fad99a3c70905c543130e39d93"}, + {file = "cffi-1.17.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:386c8bf53c502fff58903061338ce4f4950cbdcb23e2902d86c0f722b786bbe3"}, + {file = "cffi-1.17.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4ceb10419a9adf4460ea14cfd6bc43d08701f0835e979bf821052f1805850fe8"}, + {file = "cffi-1.17.1-cp312-cp312-win32.whl", hash = "sha256:a08d7e755f8ed21095a310a693525137cfe756ce62d066e53f502a83dc550f65"}, + {file = "cffi-1.17.1-cp312-cp312-win_amd64.whl", hash = "sha256:51392eae71afec0d0c8fb1a53b204dbb3bcabcb3c9b807eedf3e1e6ccf2de903"}, + {file = "cffi-1.17.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f3a2b4222ce6b60e2e8b337bb9596923045681d71e5a082783484d845390938e"}, + {file = "cffi-1.17.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0984a4925a435b1da406122d4d7968dd861c1385afe3b45ba82b750f229811e2"}, + {file = "cffi-1.17.1-cp313-cp313-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d01b12eeeb4427d3110de311e1774046ad344f5b1a7403101878976ecd7a10f3"}, + {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:706510fe141c86a69c8ddc029c7910003a17353970cff3b904ff0686a5927683"}, + {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:de55b766c7aa2e2a3092c51e0483d700341182f08e67c63630d5b6f200bb28e5"}, + {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c59d6e989d07460165cc5ad3c61f9fd8f1b4796eacbd81cee78957842b834af4"}, + {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd398dbc6773384a17fe0d3e7eeb8d1a21c2200473ee6806bb5e6a8e62bb73dd"}, + {file = "cffi-1.17.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:3edc8d958eb099c634dace3c7e16560ae474aa3803a5df240542b305d14e14ed"}, + {file = "cffi-1.17.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:72e72408cad3d5419375fc87d289076ee319835bdfa2caad331e377589aebba9"}, + {file = "cffi-1.17.1-cp313-cp313-win32.whl", hash = "sha256:e03eab0a8677fa80d646b5ddece1cbeaf556c313dcfac435ba11f107ba117b5d"}, + {file = "cffi-1.17.1-cp313-cp313-win_amd64.whl", hash = "sha256:f6a16c31041f09ead72d69f583767292f750d24913dadacf5756b966aacb3f1a"}, + {file = "cffi-1.17.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:636062ea65bd0195bc012fea9321aca499c0504409f413dc88af450b57ffd03b"}, + {file = "cffi-1.17.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c7eac2ef9b63c79431bc4b25f1cd649d7f061a28808cbc6c47b534bd789ef964"}, + {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e221cf152cff04059d011ee126477f0d9588303eb57e88923578ace7baad17f9"}, + {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:31000ec67d4221a71bd3f67df918b1f88f676f1c3b535a7eb473255fdc0b83fc"}, + {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6f17be4345073b0a7b8ea599688f692ac3ef23ce28e5df79c04de519dbc4912c"}, + {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0e2b1fac190ae3ebfe37b979cc1ce69c81f4e4fe5746bb401dca63a9062cdaf1"}, + {file = "cffi-1.17.1-cp38-cp38-win32.whl", hash = "sha256:7596d6620d3fa590f677e9ee430df2958d2d6d6de2feeae5b20e82c00b76fbf8"}, + {file = "cffi-1.17.1-cp38-cp38-win_amd64.whl", hash = "sha256:78122be759c3f8a014ce010908ae03364d00a1f81ab5c7f4a7a5120607ea56e1"}, + {file = "cffi-1.17.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b2ab587605f4ba0bf81dc0cb08a41bd1c0a5906bd59243d56bad7668a6fc6c16"}, + {file = "cffi-1.17.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:28b16024becceed8c6dfbc75629e27788d8a3f9030691a1dbf9821a128b22c36"}, + {file = "cffi-1.17.1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1d599671f396c4723d016dbddb72fe8e0397082b0a77a4fab8028923bec050e8"}, + {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ca74b8dbe6e8e8263c0ffd60277de77dcee6c837a3d0881d8c1ead7268c9e576"}, + {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f7f5baafcc48261359e14bcd6d9bff6d4b28d9103847c9e136694cb0501aef87"}, + {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:98e3969bcff97cae1b2def8ba499ea3d6f31ddfdb7635374834cf89a1a08ecf0"}, + {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cdf5ce3acdfd1661132f2a9c19cac174758dc2352bfe37d98aa7512c6b7178b3"}, + {file = "cffi-1.17.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:9755e4345d1ec879e3849e62222a18c7174d65a6a92d5b346b1863912168b595"}, + {file = "cffi-1.17.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:f1e22e8c4419538cb197e4dd60acc919d7696e5ef98ee4da4e01d3f8cfa4cc5a"}, + {file = "cffi-1.17.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:c03e868a0b3bc35839ba98e74211ed2b05d2119be4e8a0f224fba9384f1fe02e"}, + {file = "cffi-1.17.1-cp39-cp39-win32.whl", hash = "sha256:e31ae45bc2e29f6b2abd0de1cc3b9d5205aa847cafaecb8af1476a609a2f6eb7"}, + {file = "cffi-1.17.1-cp39-cp39-win_amd64.whl", hash = "sha256:d016c76bdd850f3c626af19b0542c9677ba156e4ee4fccfdd7848803533ef662"}, + {file = "cffi-1.17.1.tar.gz", hash = "sha256:1c39c6016c32bc48dd54561950ebd6836e1670f2ae46128f67cf49e789c52824"}, +] + +[package.dependencies] +pycparser = "*" + +[[package]] +name = "colorama" +version = "0.4.6" +description = "Cross-platform colored terminal text." +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" +files = [ + {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, + {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, +] + +[[package]] +name = "cryptography" +version = "43.0.3" +description = "cryptography is a package which provides cryptographic recipes and primitives to Python developers." +optional = false +python-versions = ">=3.7" +files = [ + {file = "cryptography-43.0.3-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:bf7a1932ac4176486eab36a19ed4c0492da5d97123f1406cf15e41b05e787d2e"}, + {file = "cryptography-43.0.3-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:63efa177ff54aec6e1c0aefaa1a241232dcd37413835a9b674b6e3f0ae2bfd3e"}, + {file = "cryptography-43.0.3-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7e1ce50266f4f70bf41a2c6dc4358afadae90e2a1e5342d3c08883df1675374f"}, + {file = "cryptography-43.0.3-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:443c4a81bb10daed9a8f334365fe52542771f25aedaf889fd323a853ce7377d6"}, + {file = "cryptography-43.0.3-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:74f57f24754fe349223792466a709f8e0c093205ff0dca557af51072ff47ab18"}, + {file = "cryptography-43.0.3-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:9762ea51a8fc2a88b70cf2995e5675b38d93bf36bd67d91721c309df184f49bd"}, + {file = "cryptography-43.0.3-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:81ef806b1fef6b06dcebad789f988d3b37ccaee225695cf3e07648eee0fc6b73"}, + {file = "cryptography-43.0.3-cp37-abi3-win32.whl", hash = "sha256:cbeb489927bd7af4aa98d4b261af9a5bc025bd87f0e3547e11584be9e9427be2"}, + {file = "cryptography-43.0.3-cp37-abi3-win_amd64.whl", hash = "sha256:f46304d6f0c6ab8e52770addfa2fc41e6629495548862279641972b6215451cd"}, + {file = "cryptography-43.0.3-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:8ac43ae87929a5982f5948ceda07001ee5e83227fd69cf55b109144938d96984"}, + {file = "cryptography-43.0.3-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:846da004a5804145a5f441b8530b4bf35afbf7da70f82409f151695b127213d5"}, + {file = "cryptography-43.0.3-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0f996e7268af62598f2fc1204afa98a3b5712313a55c4c9d434aef49cadc91d4"}, + {file = "cryptography-43.0.3-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:f7b178f11ed3664fd0e995a47ed2b5ff0a12d893e41dd0494f406d1cf555cab7"}, + {file = "cryptography-43.0.3-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:c2e6fc39c4ab499049df3bdf567f768a723a5e8464816e8f009f121a5a9f4405"}, + {file = "cryptography-43.0.3-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:e1be4655c7ef6e1bbe6b5d0403526601323420bcf414598955968c9ef3eb7d16"}, + {file = "cryptography-43.0.3-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:df6b6c6d742395dd77a23ea3728ab62f98379eff8fb61be2744d4679ab678f73"}, + {file = "cryptography-43.0.3-cp39-abi3-win32.whl", hash = "sha256:d56e96520b1020449bbace2b78b603442e7e378a9b3bd68de65c782db1507995"}, + {file = "cryptography-43.0.3-cp39-abi3-win_amd64.whl", hash = "sha256:0c580952eef9bf68c4747774cde7ec1d85a6e61de97281f2dba83c7d2c806362"}, + {file = "cryptography-43.0.3-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:d03b5621a135bffecad2c73e9f4deb1a0f977b9a8ffe6f8e002bf6c9d07b918c"}, + {file = "cryptography-43.0.3-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:a2a431ee15799d6db9fe80c82b055bae5a752bef645bba795e8e52687c69efe3"}, + {file = "cryptography-43.0.3-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:281c945d0e28c92ca5e5930664c1cefd85efe80e5c0d2bc58dd63383fda29f83"}, + {file = "cryptography-43.0.3-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:f18c716be16bc1fea8e95def49edf46b82fccaa88587a45f8dc0ff6ab5d8e0a7"}, + {file = "cryptography-43.0.3-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:4a02ded6cd4f0a5562a8887df8b3bd14e822a90f97ac5e544c162899bc467664"}, + {file = "cryptography-43.0.3-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:53a583b6637ab4c4e3591a15bc9db855b8d9dee9a669b550f311480acab6eb08"}, + {file = "cryptography-43.0.3-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:1ec0bcf7e17c0c5669d881b1cd38c4972fade441b27bda1051665faaa89bdcaa"}, + {file = "cryptography-43.0.3-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:2ce6fae5bdad59577b44e4dfed356944fbf1d925269114c28be377692643b4ff"}, + {file = "cryptography-43.0.3.tar.gz", hash = "sha256:315b9001266a492a6ff443b61238f956b214dbec9910a081ba5b6646a055a805"}, +] + +[package.dependencies] +cffi = {version = ">=1.12", markers = "platform_python_implementation != \"PyPy\""} + +[package.extras] +docs = ["sphinx (>=5.3.0)", "sphinx-rtd-theme (>=1.1.1)"] +docstest = ["pyenchant (>=1.6.11)", "readme-renderer", "sphinxcontrib-spelling (>=4.0.1)"] +nox = ["nox"] +pep8test = ["check-sdist", "click", "mypy", "ruff"] +sdist = ["build"] +ssh = ["bcrypt (>=3.1.5)"] +test = ["certifi", "cryptography-vectors (==43.0.3)", "pretend", "pytest (>=6.2.0)", "pytest-benchmark", "pytest-cov", "pytest-xdist"] +test-randomorder = ["pytest-randomly"] + +[[package]] +name = "dafnyruntimepython" +version = "4.8.1.post1" +description = "Dafny runtime for Python" +optional = false +python-versions = ">=3.8" +files = [ + {file = "DafnyRuntimePython-4.8.1.post1-py3-none-any.whl", hash = "sha256:72e5d9e27413301b2ca5fb0be304bca96e63e6ea4e1dbcc5ee5b4bd68a5a415f"}, + {file = "dafnyruntimepython-4.8.1.post1.tar.gz", hash = "sha256:71a4983ae4a55272c7edfef012a5ff36e2db02441f3a3ac0c2bd02cf57324c4c"}, +] + +[[package]] +name = "iniconfig" +version = "2.0.0" +description = "brain-dead simple config-ini parsing" +optional = false +python-versions = ">=3.7" +files = [ + {file = "iniconfig-2.0.0-py3-none-any.whl", hash = "sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374"}, + {file = "iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3"}, +] + +[[package]] +name = "jmespath" +version = "1.0.1" +description = "JSON Matching Expressions" +optional = false +python-versions = ">=3.7" +files = [ + {file = "jmespath-1.0.1-py3-none-any.whl", hash = "sha256:02e2e4cc71b5bcab88332eebf907519190dd9e6e82107fa7f83b1003a6252980"}, + {file = "jmespath-1.0.1.tar.gz", hash = "sha256:90261b206d6defd58fdd5e85f478bf633a2901798906be2ad389150c5c60edbe"}, +] + +[[package]] +name = "packaging" +version = "24.2" +description = "Core utilities for Python packages" +optional = false +python-versions = ">=3.8" +files = [ + {file = "packaging-24.2-py3-none-any.whl", hash = "sha256:09abb1bccd265c01f4a3aa3f7a7db064b36514d2cba19a2f694fe6150451a759"}, + {file = "packaging-24.2.tar.gz", hash = "sha256:c228a6dc5e932d346bc5739379109d49e8853dd8223571c7c5b55260edc0b97f"}, +] + +[[package]] +name = "pluggy" +version = "1.5.0" +description = "plugin and hook calling mechanisms for python" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pluggy-1.5.0-py3-none-any.whl", hash = "sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669"}, + {file = "pluggy-1.5.0.tar.gz", hash = "sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1"}, +] + +[package.extras] +dev = ["pre-commit", "tox"] +testing = ["pytest", "pytest-benchmark"] + +[[package]] +name = "pycparser" +version = "2.22" +description = "C parser in Python" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pycparser-2.22-py3-none-any.whl", hash = "sha256:c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc"}, + {file = "pycparser-2.22.tar.gz", hash = "sha256:491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6"}, +] + +[[package]] +name = "pytest" +version = "7.4.4" +description = "pytest: simple powerful testing with Python" +optional = false +python-versions = ">=3.7" +files = [ + {file = "pytest-7.4.4-py3-none-any.whl", hash = "sha256:b090cdf5ed60bf4c45261be03239c2c1c22df034fbffe691abe93cd80cea01d8"}, + {file = "pytest-7.4.4.tar.gz", hash = "sha256:2cf0005922c6ace4a3e2ec8b4080eb0d9753fdc93107415332f50ce9e7994280"}, +] + +[package.dependencies] +colorama = {version = "*", markers = "sys_platform == \"win32\""} +iniconfig = "*" +packaging = "*" +pluggy = ">=0.12,<2.0" + +[package.extras] +testing = ["argcomplete", "attrs (>=19.2.0)", "hypothesis (>=3.56)", "mock", "nose", "pygments (>=2.7.2)", "requests", "setuptools", "xmlschema"] + +[[package]] +name = "python-dateutil" +version = "2.9.0.post0" +description = "Extensions to the standard Python datetime module" +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" +files = [ + {file = "python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3"}, + {file = "python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427"}, +] + +[package.dependencies] +six = ">=1.5" + +[[package]] +name = "pytz" +version = "2023.4" +description = "World timezone definitions, modern and historical" +optional = false +python-versions = "*" +files = [ + {file = "pytz-2023.4-py2.py3-none-any.whl", hash = "sha256:f90ef520d95e7c46951105338d918664ebfd6f1d995bd7d153127ce90efafa6a"}, + {file = "pytz-2023.4.tar.gz", hash = "sha256:31d4583c4ed539cd037956140d695e42c033a19e984bfce9964a3f7d59bc2b40"}, +] + +[[package]] +name = "s3transfer" +version = "0.10.4" +description = "An Amazon S3 Transfer Manager" +optional = false +python-versions = ">=3.8" +files = [ + {file = "s3transfer-0.10.4-py3-none-any.whl", hash = "sha256:244a76a24355363a68164241438de1b72f8781664920260c48465896b712a41e"}, + {file = "s3transfer-0.10.4.tar.gz", hash = "sha256:29edc09801743c21eb5ecbc617a152df41d3c287f67b615f73e5f750583666a7"}, +] + +[package.dependencies] +botocore = ">=1.33.2,<2.0a.0" + +[package.extras] +crt = ["botocore[crt] (>=1.33.2,<2.0a.0)"] + +[[package]] +name = "six" +version = "1.17.0" +description = "Python 2 and 3 compatibility utilities" +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" +files = [ + {file = "six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274"}, + {file = "six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81"}, +] + +[[package]] +name = "urllib3" +version = "2.2.3" +description = "HTTP library with thread-safe connection pooling, file post, and more." +optional = false +python-versions = ">=3.8" +files = [ + {file = "urllib3-2.2.3-py3-none-any.whl", hash = "sha256:ca899ca043dcb1bafa3e262d73aa25c465bfb49e0bd9dd5d59f1d0acba2f8fac"}, + {file = "urllib3-2.2.3.tar.gz", hash = "sha256:e7d814a81dad81e6caf2ec9fdedb284ecc9c73076b62654547cc64ccdcae26e9"}, +] + +[package.extras] +brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"] +h2 = ["h2 (>=4,<5)"] +socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] +zstd = ["zstandard (>=0.18.0)"] + +[metadata] +lock-version = "2.0" +python-versions = "^3.11.0" +content-hash = "381f995f8cf538eccb77844811a375e3693c76060a7e7066767e7aaf835e3405" diff --git a/TestVectors/runtimes/python/pyproject.toml b/TestVectors/runtimes/python/pyproject.toml new file mode 100644 index 000000000..ff9a624d0 --- /dev/null +++ b/TestVectors/runtimes/python/pyproject.toml @@ -0,0 +1,24 @@ +[tool.poetry] +name = "aws-encryption-sdk-test-vectors" +version = "0.1.0" +description = "" +authors = ["AWS Crypto Tools "] +packages = [ + { include = "aws_encryption_sdk_test_vectors", from = "src" } +] +# Include generated internaldafny files in package distributions, +# even though they are not included in version control +include = ["**/internaldafny/generated/*.py"] + +[tool.poetry.dependencies] +python = "^3.11.0" +aws-cryptographic-material-providers = { path = "../../../mpl/AwsCryptographicMaterialProviders/runtimes/python", develop = false} +aws-cryptography-internal-mpl-testvectors = { path = "../../../mpl/TestVectorsAwsCryptographicMaterialProviders/runtimes/python", develop = false} +aws-encryption-sdk = { path = "../../../AwsEncryptionSDK/runtimes/python", develop = false} + +[tool.poetry.group.test.dependencies] +pytest = "^7.4.0" + +[build-system] +requires = ["poetry-core"] +build-backend = "poetry.core.masonry.api" diff --git a/TestVectors/runtimes/python/src/aws_encryption_sdk_test_vectors/__init__.py b/TestVectors/runtimes/python/src/aws_encryption_sdk_test_vectors/__init__.py new file mode 100644 index 000000000..b9427e19d --- /dev/null +++ b/TestVectors/runtimes/python/src/aws_encryption_sdk_test_vectors/__init__.py @@ -0,0 +1,8 @@ +# Copyright Amazon.com Inc. or its affiliates. All Rights Reserved. +# SPDX-License-Identifier: Apache-2.0 + +# Initialize generated Dafny +from .internaldafny.generated import module_ + +# Initialize externs +from .internaldafny import extern diff --git a/TestVectors/runtimes/python/src/aws_encryption_sdk_test_vectors/__pycache__/__init__.cpython-311.pyc b/TestVectors/runtimes/python/src/aws_encryption_sdk_test_vectors/__pycache__/__init__.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..c3c02684fe61624aac29db6292ea4932df57b89f GIT binary patch literal 368 zcmZXQy-ve05P;7~RH{mu*^pq1MCySR@dzyZ3}vt)`zTQzC$b$%7G8r#KuA1H=d4T& zNRhgA>KTdvaXOtp`}|otKd0#gC|>o={DaoFu=$Q?2kQfZCs3f6hKkJ?3moaFif1u# zd;wYV&gfFc`n{@FtwupO!UvDmoM%bDUz&i0R>iI9rgJoC3y;diWcBHvu1)Cd1=dty z^T@9pTE}%OE2(P3m$h9qx{%0=rOVMs+cmzdP43hp|9qWaqVv}%eNCQijV~*7yy^TM z>CVa^iXTysC_E|Re&+~Ln$im~ZMx0)^lP3o8~!QG=uW5%F=K3)0Lxc!{5yvcu%i_m J{!cq5ZwpFGZmIwP literal 0 HcmV?d00001 diff --git a/TestVectors/runtimes/python/src/aws_encryption_sdk_test_vectors/__pycache__/__init__.cpython-312.pyc b/TestVectors/runtimes/python/src/aws_encryption_sdk_test_vectors/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..1b73b3e2305a7db9ee64f2cb8a2ccee501477a03 GIT binary patch literal 330 zcmY+Au};G<5I}uNRH{l5BMTE-hSWcR_yi_kD1#N**AmrnqO(KE!f)^mNc;(Zkd=u6 z38{ji6K5zw+;Dz(_Oo>NoaZya@no-8Z+yPQ;y02#Y>ycpgb@a;XkY;lIk8ETE>aLf zT4b-lPYM_hn%49d72^c&0+Kr~vhk>P5i4t|r5olebVyY|Ln&Kh{_mDD?mdbvXR*7N zmmbMW+v`S~*2zsv>&{jhWwr4oI!!|t>eiLstjq7;1F%wXJP6V9LlzU$s=VI~z literal 0 HcmV?d00001 diff --git a/TestVectors/runtimes/python/src/aws_encryption_sdk_test_vectors/internaldafny/extern/__init__.py b/TestVectors/runtimes/python/src/aws_encryption_sdk_test_vectors/internaldafny/extern/__init__.py new file mode 100644 index 000000000..df1c5e11e --- /dev/null +++ b/TestVectors/runtimes/python/src/aws_encryption_sdk_test_vectors/internaldafny/extern/__init__.py @@ -0,0 +1,3 @@ +from . import ( + wrapped_esdk, +) \ No newline at end of file diff --git a/TestVectors/runtimes/python/src/aws_encryption_sdk_test_vectors/internaldafny/extern/__pycache__/__init__.cpython-311.pyc b/TestVectors/runtimes/python/src/aws_encryption_sdk_test_vectors/internaldafny/extern/__pycache__/__init__.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..39f1879c8a91ff96883aa4da2f3e0df6d3ac0ebc GIT binary patch literal 323 zcmajau}%Xq3;@t1C!q?_gN?H3n) cw1bCBT+og6Be|nAH=OfX2rg#!Z^9!I-$EcGd2v>*g#l`Ibk@O*LudkfFtS-iovR(2+v zSZuXJT;nv%5BVm*$8vehs9xOt!x^ogE<fG}}{Z-k4zq92?;dfK}diUqIVEY)>ur(pJl5UfVhm<- Xc$pS-$M%ri{^7d=fFI6*rz47c)d5vl literal 0 HcmV?d00001 diff --git a/TestVectors/runtimes/python/src/aws_encryption_sdk_test_vectors/internaldafny/extern/__pycache__/wrapped_esdk.cpython-311.pyc b/TestVectors/runtimes/python/src/aws_encryption_sdk_test_vectors/internaldafny/extern/__pycache__/wrapped_esdk.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..7d5ed83e11724a1144d795ed236001696af372fa GIT binary patch literal 2007 zcmb^xU27v%^vp-HX_GY7B5OI5`Njd6xmghb)lfQ zXf7stRj(F#tVejsTv9-Vw*aeqfHk7^8);C7BFZE2k3X|P8bm{x6e~UG=zmDzhMnj{ zi<)fCUJ%4S5HJ-Crb;xd?7^Yn9VH3?rjAwNMdJ&YY+55XK*&}yDS#}C4B+fff%YND ziTasdKRpooS+ECsPBkNg=mO$xznroUE~Qj{-GxJO!qNFDl~nq(Qj~n71kF?i(9h1; zeOylsp33RfQhHY{`V$3FH#!QhVQbSLBinU|A9U*cNo$88;@fmQ44i?F7{0?B%yWY6 z@fPt3wE}|q^HM2N8EjE&xINBUNP}|hjxWEy!)|82dO}h!Y^f|D*KhXTe216rTJDH& zoozcFuSixeqCOD^3<+g?=|jTg<@H9kO&AmRS+)oMrnANCaePSP~UQ6Z{#bvGt&5oQ11@Myc*|-Wzt`_vnK84*z&#^ z5@-Uyx2}e*SHjkn_>0J!TND^Ev&9h^|do`1Z;Flyn>K#c?2Q8h>$nH zBUjQjguWbEZX&6%zzQ7OBcdFb%C`Fv=+k1MmnD*y8zI@$Y*nC1_WM<9%+!+h@(ctz z)j(g~yME4yxUnbcq_fQ5m{aI(q0rr|Rr59E^@0*#$h4x^`Fheu@kEH+d~8vST<12m z=y=Wvl+hhvcG!8F2TtJjbRNv~iXuAwBKo!(F28sx1rN`qEqLb2q#8nd8bMTxzX66NM4$iw literal 0 HcmV?d00001 diff --git a/TestVectors/runtimes/python/src/aws_encryption_sdk_test_vectors/internaldafny/extern/__pycache__/wrapped_esdk.cpython-312.pyc b/TestVectors/runtimes/python/src/aws_encryption_sdk_test_vectors/internaldafny/extern/__pycache__/wrapped_esdk.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b5192d0eaa16ca4a24b610586fd50ea435a41872 GIT binary patch literal 1845 zcmb_c&1>976o2~I&Dy)`-9*~-gEkmL0vqs(CXn_JyOcJxQ0gY#xFu?WkfpILMbd6( zv~g5i@WFpTbJ}aJ#X0o<=%r#Qf@#2o_R^cn`jk^=^sygxN+?u_dGGz+$GrFE&HPla zF9Q2c{I7SONC3Zcq4-KUGk(UHA=qFG9{7SK3gC(M%(7V3k|~(at$ZEA$-$ujiEybIhKBI z5xf8xb>$f$XWjBku!XZ&m>vqp-P&2LJ1KRl+lQk(Q@1%q3+|avXulIer9fS^;HGqc zYAJ@V6}bC)!ALfnfUp@Nn_l8ZsY!1KoBiEr#)CVQvv9Qe!5+CaiPdGA`kaV)yQzGu`_ZSg^vLuE zh{|Nw@o9xa-IV)^ZO})U(4{XB;m6w@SQa9Lop{;m1>4RJt!Me=MbM?a)Wyza!cTvB zdHKaq+axTI<_#?0vU`EH*TWC{o@pVC)w4P+dX?3%n)XGzi%9q-vcewo!-F7nd_=T< z6z(#2f-UYiQ#b0NcYh$(%Y_v8aaTIrY_9!QV#mK3h&CK@g7N-U#j;!<`Y_ t`4v8A|1sPi!R=$%8o}17ToJB+Urm~q$_te}PuI!QZyD|5E?} literal 0 HcmV?d00001 diff --git a/TestVectors/runtimes/python/src/aws_encryption_sdk_test_vectors/internaldafny/extern/wrapped_esdk.py b/TestVectors/runtimes/python/src/aws_encryption_sdk_test_vectors/internaldafny/extern/wrapped_esdk.py new file mode 100644 index 000000000..04d938847 --- /dev/null +++ b/TestVectors/runtimes/python/src/aws_encryption_sdk_test_vectors/internaldafny/extern/wrapped_esdk.py @@ -0,0 +1,18 @@ +import aws_encryption_sdk_test_vectors.internaldafny.generated.WrappedESDK as WrappedESDK +import smithy_dafny_standard_library.internaldafny.generated.Wrappers as Wrappers +import aws_encryption_sdk.smithygenerated.aws_cryptography_encryptionsdk.client +import aws_encryption_sdk.smithygenerated.aws_cryptography_encryptionsdk.config +import aws_encryption_sdk.internaldafny.generated.EncryptionSdk as EncryptionSdk +import aws_encryption_sdk_test_vectors.smithygenerated.aws_cryptography_encryptionsdk.shim as shim + +class default__(WrappedESDK.default__): + + @staticmethod + def WrappedESDK(config): + smithy_client = aws_encryption_sdk.smithygenerated.aws_cryptography_encryptionsdk.client.AwsEncryptionSdk( + dafny_client=EncryptionSdk.default__.ESDK(config).value + ) + wrapped_client = shim.ESDKShim(smithy_client) + return Wrappers.Result_Success(wrapped_client) + +WrappedESDK.default__ = default__ \ No newline at end of file diff --git a/TestVectors/runtimes/python/src/aws_encryption_sdk_test_vectors/internaldafny/generated/AllEsdkV4NoReqEc.py b/TestVectors/runtimes/python/src/aws_encryption_sdk_test_vectors/internaldafny/generated/AllEsdkV4NoReqEc.py new file mode 100644 index 000000000..2be6e72aa --- /dev/null +++ b/TestVectors/runtimes/python/src/aws_encryption_sdk_test_vectors/internaldafny/generated/AllEsdkV4NoReqEc.py @@ -0,0 +1,277 @@ +import sys +from typing import Callable, Any, TypeVar, NamedTuple +from math import floor +from itertools import count + +import aws_encryption_sdk_test_vectors.internaldafny.generated.module_ as module_ +import _dafny as _dafny +import System_ as System_ +import smithy_dafny_standard_library.internaldafny.generated.Wrappers as Wrappers +import smithy_dafny_standard_library.internaldafny.generated.BoundedInts as BoundedInts +import smithy_dafny_standard_library.internaldafny.generated.StandardLibrary_UInt as StandardLibrary_UInt +import smithy_dafny_standard_library.internaldafny.generated.StandardLibrary_Sequence as StandardLibrary_Sequence +import smithy_dafny_standard_library.internaldafny.generated.StandardLibrary_String as StandardLibrary_String +import smithy_dafny_standard_library.internaldafny.generated.StandardLibrary as StandardLibrary +import smithy_dafny_standard_library.internaldafny.generated.UTF8 as UTF8 +import aws_cryptography_primitives.internaldafny.generated.AwsCryptographyPrimitivesTypes as AwsCryptographyPrimitivesTypes +import aws_cryptography_primitives.internaldafny.generated.ExternRandom as ExternRandom +import aws_cryptography_primitives.internaldafny.generated.Random as Random +import aws_cryptography_primitives.internaldafny.generated.AESEncryption as AESEncryption +import aws_cryptography_primitives.internaldafny.generated.ExternDigest as ExternDigest +import aws_cryptography_primitives.internaldafny.generated.Digest as Digest +import aws_cryptography_primitives.internaldafny.generated.HMAC as HMAC +import aws_cryptography_primitives.internaldafny.generated.WrappedHMAC as WrappedHMAC +import aws_cryptography_primitives.internaldafny.generated.HKDF as HKDF +import aws_cryptography_primitives.internaldafny.generated.WrappedHKDF as WrappedHKDF +import aws_cryptography_primitives.internaldafny.generated.Signature as Signature +import aws_cryptography_primitives.internaldafny.generated.KdfCtr as KdfCtr +import aws_cryptography_primitives.internaldafny.generated.RSAEncryption as RSAEncryption +import aws_cryptography_primitives.internaldafny.generated.ECDH as ECDH +import aws_cryptography_primitives.internaldafny.generated.AwsCryptographyPrimitivesOperations as AwsCryptographyPrimitivesOperations +import aws_cryptography_primitives.internaldafny.generated.AtomicPrimitives as AtomicPrimitives +import aws_cryptography_internal_dynamodb.internaldafny.generated.ComAmazonawsDynamodbTypes as ComAmazonawsDynamodbTypes +import aws_cryptography_internal_kms.internaldafny.generated.ComAmazonawsKmsTypes as ComAmazonawsKmsTypes +import aws_cryptographic_material_providers.internaldafny.generated.AwsCryptographyKeyStoreTypes as AwsCryptographyKeyStoreTypes +import aws_cryptographic_material_providers.internaldafny.generated.AwsCryptographyMaterialProvidersTypes as AwsCryptographyMaterialProvidersTypes +import smithy_dafny_standard_library.internaldafny.generated.Base64 as Base64 +import aws_cryptographic_material_providers.internaldafny.generated.AlgorithmSuites as AlgorithmSuites +import aws_cryptographic_material_providers.internaldafny.generated.Materials as Materials +import aws_cryptographic_material_providers.internaldafny.generated.Keyring as Keyring +import smithy_dafny_standard_library.internaldafny.generated.Relations as Relations +import smithy_dafny_standard_library.internaldafny.generated.Seq_MergeSort as Seq_MergeSort +import smithy_dafny_standard_library.internaldafny.generated.Math as Math +import smithy_dafny_standard_library.internaldafny.generated.Seq as Seq +import aws_cryptographic_material_providers.internaldafny.generated.MultiKeyring as MultiKeyring +import aws_cryptographic_material_providers.internaldafny.generated.AwsArnParsing as AwsArnParsing +import aws_cryptographic_material_providers.internaldafny.generated.AwsKmsMrkAreUnique as AwsKmsMrkAreUnique +import smithy_dafny_standard_library.internaldafny.generated.Actions as Actions +import aws_cryptographic_material_providers.internaldafny.generated.AwsKmsMrkMatchForDecrypt as AwsKmsMrkMatchForDecrypt +import aws_cryptographic_material_providers.internaldafny.generated.AwsKmsUtils as AwsKmsUtils +import aws_cryptographic_material_providers.internaldafny.generated.Constants as Constants +import smithy_dafny_standard_library.internaldafny.generated.UUID as UUID +import aws_cryptographic_material_providers.internaldafny.generated.MaterialWrapping as MaterialWrapping +import smithy_dafny_standard_library.internaldafny.generated.SortedSets as SortedSets +import aws_cryptographic_material_providers.internaldafny.generated.CanonicalEncryptionContext as CanonicalEncryptionContext +import aws_cryptographic_material_providers.internaldafny.generated.IntermediateKeyWrapping as IntermediateKeyWrapping +import aws_cryptographic_material_providers.internaldafny.generated.EdkWrapping as EdkWrapping +import aws_cryptographic_material_providers.internaldafny.generated.ErrorMessages as ErrorMessages +import aws_cryptographic_material_providers.internaldafny.generated.AwsKmsKeyring as AwsKmsKeyring +import aws_cryptographic_material_providers.internaldafny.generated.StrictMultiKeyring as StrictMultiKeyring +import aws_cryptographic_material_providers.internaldafny.generated.AwsKmsDiscoveryKeyring as AwsKmsDiscoveryKeyring +import aws_cryptography_internal_kms.internaldafny.generated.Com_Amazonaws_Kms as Com_Amazonaws_Kms +import aws_cryptography_internal_dynamodb.internaldafny.generated.Com_Amazonaws_Dynamodb as Com_Amazonaws_Dynamodb +import aws_cryptographic_material_providers.internaldafny.generated.DiscoveryMultiKeyring as DiscoveryMultiKeyring +import aws_cryptographic_material_providers.internaldafny.generated.AwsKmsMrkDiscoveryKeyring as AwsKmsMrkDiscoveryKeyring +import aws_cryptographic_material_providers.internaldafny.generated.MrkAwareDiscoveryMultiKeyring as MrkAwareDiscoveryMultiKeyring +import aws_cryptographic_material_providers.internaldafny.generated.AwsKmsMrkKeyring as AwsKmsMrkKeyring +import aws_cryptographic_material_providers.internaldafny.generated.MrkAwareStrictMultiKeyring as MrkAwareStrictMultiKeyring +import smithy_dafny_standard_library.internaldafny.generated.DafnyLibraries as DafnyLibraries +import smithy_dafny_standard_library.internaldafny.generated.Time as Time +import aws_cryptographic_material_providers.internaldafny.generated.LocalCMC as LocalCMC +import aws_cryptographic_material_providers.internaldafny.generated.SynchronizedLocalCMC as SynchronizedLocalCMC +import aws_cryptographic_material_providers.internaldafny.generated.StormTracker as StormTracker +import aws_cryptographic_material_providers.internaldafny.generated.StormTrackingCMC as StormTrackingCMC +import aws_cryptographic_material_providers.internaldafny.generated.CacheConstants as CacheConstants +import aws_cryptographic_material_providers.internaldafny.generated.AwsKmsHierarchicalKeyring as AwsKmsHierarchicalKeyring +import aws_cryptographic_material_providers.internaldafny.generated.AwsKmsRsaKeyring as AwsKmsRsaKeyring +import aws_cryptographic_material_providers.internaldafny.generated.EcdhEdkWrapping as EcdhEdkWrapping +import aws_cryptographic_material_providers.internaldafny.generated.RawECDHKeyring as RawECDHKeyring +import aws_cryptographic_material_providers.internaldafny.generated.AwsKmsEcdhKeyring as AwsKmsEcdhKeyring +import aws_cryptographic_material_providers.internaldafny.generated.RawAESKeyring as RawAESKeyring +import aws_cryptographic_material_providers.internaldafny.generated.RawRSAKeyring as RawRSAKeyring +import aws_cryptographic_material_providers.internaldafny.generated.CMM as CMM +import aws_cryptographic_material_providers.internaldafny.generated.Defaults as Defaults +import aws_cryptographic_material_providers.internaldafny.generated.Commitment as Commitment +import aws_cryptographic_material_providers.internaldafny.generated.DefaultCMM as DefaultCMM +import aws_cryptographic_material_providers.internaldafny.generated.DefaultClientSupplier as DefaultClientSupplier +import aws_cryptographic_material_providers.internaldafny.generated.Utils as Utils +import aws_cryptographic_material_providers.internaldafny.generated.RequiredEncryptionContextCMM as RequiredEncryptionContextCMM +import aws_cryptographic_material_providers.internaldafny.generated.AwsCryptographyMaterialProvidersOperations as AwsCryptographyMaterialProvidersOperations +import aws_cryptographic_material_providers.internaldafny.generated.MaterialProviders as MaterialProviders +import aws_cryptographic_material_providers.internaldafny.generated.KeyStoreErrorMessages as KeyStoreErrorMessages +import aws_cryptographic_material_providers.internaldafny.generated.KmsArn as KmsArn +import aws_cryptographic_material_providers.internaldafny.generated.Structure as Structure +import aws_cryptographic_material_providers.internaldafny.generated.KMSKeystoreOperations as KMSKeystoreOperations +import aws_cryptographic_material_providers.internaldafny.generated.DDBKeystoreOperations as DDBKeystoreOperations +import aws_cryptographic_material_providers.internaldafny.generated.CreateKeys as CreateKeys +import aws_cryptographic_material_providers.internaldafny.generated.CreateKeyStoreTable as CreateKeyStoreTable +import aws_cryptographic_material_providers.internaldafny.generated.GetKeys as GetKeys +import aws_cryptographic_material_providers.internaldafny.generated.AwsCryptographyKeyStoreOperations as AwsCryptographyKeyStoreOperations +import aws_cryptographic_material_providers.internaldafny.generated.KeyStore as KeyStore +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AwsCryptographyMaterialProvidersTestVectorKeysTypes as AwsCryptographyMaterialProvidersTestVectorKeysTypes +import smithy_dafny_standard_library.internaldafny.generated.JSON_Utils_Views_Core as JSON_Utils_Views_Core +import smithy_dafny_standard_library.internaldafny.generated.JSON_Utils_Views_Writers as JSON_Utils_Views_Writers +import smithy_dafny_standard_library.internaldafny.generated.JSON_Utils_Lexers_Core as JSON_Utils_Lexers_Core +import smithy_dafny_standard_library.internaldafny.generated.JSON_Utils_Lexers_Strings as JSON_Utils_Lexers_Strings +import smithy_dafny_standard_library.internaldafny.generated.JSON_Utils_Cursors as JSON_Utils_Cursors +import smithy_dafny_standard_library.internaldafny.generated.JSON_Utils_Parsers as JSON_Utils_Parsers +import smithy_dafny_standard_library.internaldafny.generated.GeneralInternals as GeneralInternals +import smithy_dafny_standard_library.internaldafny.generated.MulInternalsNonlinear as MulInternalsNonlinear +import smithy_dafny_standard_library.internaldafny.generated.MulInternals as MulInternals +import smithy_dafny_standard_library.internaldafny.generated.Mul as Mul +import smithy_dafny_standard_library.internaldafny.generated.ModInternalsNonlinear as ModInternalsNonlinear +import smithy_dafny_standard_library.internaldafny.generated.DivInternalsNonlinear as DivInternalsNonlinear +import smithy_dafny_standard_library.internaldafny.generated.ModInternals as ModInternals +import smithy_dafny_standard_library.internaldafny.generated.DivInternals as DivInternals +import smithy_dafny_standard_library.internaldafny.generated.DivMod as DivMod +import smithy_dafny_standard_library.internaldafny.generated.Power as Power +import smithy_dafny_standard_library.internaldafny.generated.Logarithm as Logarithm +import smithy_dafny_standard_library.internaldafny.generated.JSON_Utils_Str_CharStrConversion as JSON_Utils_Str_CharStrConversion +import smithy_dafny_standard_library.internaldafny.generated.JSON_Utils_Str_CharStrEscaping as JSON_Utils_Str_CharStrEscaping +import smithy_dafny_standard_library.internaldafny.generated.JSON_Utils_Str as JSON_Utils_Str +import smithy_dafny_standard_library.internaldafny.generated.JSON_Utils_Seq as JSON_Utils_Seq +import smithy_dafny_standard_library.internaldafny.generated.JSON_Utils_Vectors as JSON_Utils_Vectors +import smithy_dafny_standard_library.internaldafny.generated.JSON_Errors as JSON_Errors +import smithy_dafny_standard_library.internaldafny.generated.JSON_Values as JSON_Values +import smithy_dafny_standard_library.internaldafny.generated.Unicode as Unicode +import smithy_dafny_standard_library.internaldafny.generated.Functions as Functions +import smithy_dafny_standard_library.internaldafny.generated.Utf8EncodingForm as Utf8EncodingForm +import smithy_dafny_standard_library.internaldafny.generated.Utf16EncodingForm as Utf16EncodingForm +import smithy_dafny_standard_library.internaldafny.generated.UnicodeStrings as UnicodeStrings +import smithy_dafny_standard_library.internaldafny.generated.JSON_Spec as JSON_Spec +import smithy_dafny_standard_library.internaldafny.generated.JSON_Grammar as JSON_Grammar +import smithy_dafny_standard_library.internaldafny.generated.JSON_Serializer_ByteStrConversion as JSON_Serializer_ByteStrConversion +import smithy_dafny_standard_library.internaldafny.generated.JSON_Serializer as JSON_Serializer +import smithy_dafny_standard_library.internaldafny.generated.JSON_Deserializer_Uint16StrConversion as JSON_Deserializer_Uint16StrConversion +import smithy_dafny_standard_library.internaldafny.generated.JSON_Deserializer_ByteStrConversion as JSON_Deserializer_ByteStrConversion +import smithy_dafny_standard_library.internaldafny.generated.JSON_Deserializer as JSON_Deserializer +import smithy_dafny_standard_library.internaldafny.generated.JSON_ConcreteSyntax_Spec as JSON_ConcreteSyntax_Spec +import smithy_dafny_standard_library.internaldafny.generated.JSON_ConcreteSyntax_SpecProperties as JSON_ConcreteSyntax_SpecProperties +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_Serializer as JSON_ZeroCopy_Serializer +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_Deserializer_Core as JSON_ZeroCopy_Deserializer_Core +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_Deserializer_Strings as JSON_ZeroCopy_Deserializer_Strings +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_Deserializer_Numbers as JSON_ZeroCopy_Deserializer_Numbers +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_Deserializer_ObjectParams as JSON_ZeroCopy_Deserializer_ObjectParams +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_Deserializer_Objects as JSON_ZeroCopy_Deserializer_Objects +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_Deserializer_ArrayParams as JSON_ZeroCopy_Deserializer_ArrayParams +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_Deserializer_Arrays as JSON_ZeroCopy_Deserializer_Arrays +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_Deserializer_Constants as JSON_ZeroCopy_Deserializer_Constants +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_Deserializer_Values as JSON_ZeroCopy_Deserializer_Values +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_Deserializer_API as JSON_ZeroCopy_Deserializer_API +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_Deserializer as JSON_ZeroCopy_Deserializer +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_API as JSON_ZeroCopy_API +import smithy_dafny_standard_library.internaldafny.generated.JSON_API as JSON_API +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.JSONHelpers as JSONHelpers +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.KeyDescription as KeyDescription +import smithy_dafny_standard_library.internaldafny.generated.HexStrings as HexStrings +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.KeyMaterial as KeyMaterial +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.CreateStaticKeyrings as CreateStaticKeyrings +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.CreateStaticKeyStores as CreateStaticKeyStores +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.KeyringFromKeyDescription as KeyringFromKeyDescription +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.CmmFromKeyDescription as CmmFromKeyDescription +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.WrappedMaterialProviders as WrappedMaterialProviders +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.KeysVectorOperations as KeysVectorOperations +import smithy_dafny_standard_library.internaldafny.generated.FileIO as FileIO +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.KeyVectors as KeyVectors +import aws_encryption_sdk.internaldafny.generated.AwsCryptographyEncryptionSdkTypes as AwsCryptographyEncryptionSdkTypes +import smithy_dafny_standard_library.internaldafny.generated.Streams as Streams +import aws_encryption_sdk.internaldafny.generated.SerializableTypes as SerializableTypes +import aws_encryption_sdk.internaldafny.generated.SerializeFunctions as SerializeFunctions +import aws_encryption_sdk.internaldafny.generated.EncryptionContext as EncryptionContext +import aws_encryption_sdk.internaldafny.generated.HeaderTypes as HeaderTypes +import aws_encryption_sdk.internaldafny.generated.SharedHeaderFunctions as SharedHeaderFunctions +import aws_encryption_sdk.internaldafny.generated.EncryptedDataKeys as EncryptedDataKeys +import aws_encryption_sdk.internaldafny.generated.V1HeaderBody as V1HeaderBody +import aws_encryption_sdk.internaldafny.generated.V2HeaderBody as V2HeaderBody +import aws_encryption_sdk.internaldafny.generated.HeaderAuth as HeaderAuth +import aws_encryption_sdk.internaldafny.generated.Header as Header +import aws_encryption_sdk.internaldafny.generated.Frames as Frames +import aws_encryption_sdk.internaldafny.generated.MessageBody as MessageBody +import aws_encryption_sdk.internaldafny.generated.KeyDerivation as KeyDerivation +import aws_encryption_sdk.internaldafny.generated.EncryptDecryptHelpers as EncryptDecryptHelpers +import aws_encryption_sdk.internaldafny.generated.AwsEncryptionSdkOperations as AwsEncryptionSdkOperations +import aws_encryption_sdk.internaldafny.generated.EncryptionSdk as EncryptionSdk +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.MplManifestOptions as MplManifestOptions +import smithy_dafny_standard_library.internaldafny.generated.GetOpt as GetOpt +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllAlgorithmSuites as AllAlgorithmSuites +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.TestVectors as TestVectors +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllHierarchy as AllHierarchy +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllKms as AllKms +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllKmsMrkAware as AllKmsMrkAware +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllKmsMrkAwareDiscovery as AllKmsMrkAwareDiscovery +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllKmsRsa as AllKmsRsa +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllKmsEcdh as AllKmsEcdh +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllRawAES as AllRawAES +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllRawRSA as AllRawRSA +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllRawECDH as AllRawECDH +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllDefaultCmm as AllDefaultCmm +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllRequiredEncryptionContextCmm as AllRequiredEncryptionContextCmm +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllMulti as AllMulti +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.WriteJsonManifests as WriteJsonManifests +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.CompleteVectors as CompleteVectors +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.ParseJsonManifests as ParseJsonManifests +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.TestManifests as TestManifests +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.WrappedMaterialProvidersMain as WrappedMaterialProvidersMain +import aws_cryptography_primitives.internaldafny.generated.AesKdfCtr as AesKdfCtr +import smithy_dafny_standard_library.internaldafny.generated.StandardLibraryInterop as StandardLibraryInterop +import smithy_dafny_standard_library.internaldafny.generated.Sorting as Sorting +import smithy_dafny_standard_library.internaldafny.generated.FloatCompare as FloatCompare +import smithy_dafny_standard_library.internaldafny.generated.ConcurrentCall as ConcurrentCall +import smithy_dafny_standard_library.internaldafny.generated.Base64Lemmas as Base64Lemmas +import aws_encryption_sdk_test_vectors.internaldafny.generated.WrappedESDK as WrappedESDK +import aws_encryption_sdk_test_vectors.internaldafny.generated.EsdkManifestOptions as EsdkManifestOptions +import aws_encryption_sdk_test_vectors.internaldafny.generated.EsdkTestVectors as EsdkTestVectors + +# Module: AllEsdkV4NoReqEc + +class default__: + def __init__(self): + pass + + @_dafny.classproperty + def AllPositiveKeyringTestsNoReqCmmNoKmsRsa(instance): + return ((((((((((_dafny.Set({})) | (AllDefaultCmm.default__.SuccessTestingRequiredEncryptionContextKeysReproducedEncryptionContext)) | (AllHierarchy.default__.Tests)) | (AllKms.default__.Tests)) | (AllKmsMrkAware.default__.Tests)) | (AllKmsMrkAwareDiscovery.default__.Tests)) | (AllRawAES.default__.Tests)) | (AllRawRSA.default__.Tests)) | (AllMulti.default__.Tests)) | (AllRawECDH.default__.Tests)) | (AllKmsEcdh.default__.Tests) + @_dafny.classproperty + def frameSize(instance): + return 512 + @_dafny.classproperty + def AllPostiveKeyringTestsNoDBESuiteNoReqEC(instance): + def iife0_(): + coll0_ = _dafny.Set() + compr_0_: TestVectors.EncryptTestVector + for compr_0_ in (default__.AllPositiveKeyringTestsNoReqCmmNoKmsRsa).Elements: + d_0_keyringConfig_: TestVectors.EncryptTestVector = compr_0_ + if ((d_0_keyringConfig_) in (default__.AllPositiveKeyringTestsNoReqCmmNoKmsRsa)) and (not((d_0_keyringConfig_).is_NegativeEncryptKeyringVector)): + compr_1_: AwsCryptographyMaterialProvidersTypes.AlgorithmSuiteInfo + for compr_1_ in (AllAlgorithmSuites.default__.ESDKAlgorithmSuites).Elements: + d_1_algorithmSuite_: AwsCryptographyMaterialProvidersTypes.AlgorithmSuiteInfo = compr_1_ + if (d_1_algorithmSuite_) in (AllAlgorithmSuites.default__.ESDKAlgorithmSuites): + coll0_ = coll0_.union(_dafny.Set([EsdkTestVectors.EsdkEncryptTestVector_PositiveEncryptTestVector(Wrappers.Option_None(), 4, _dafny.Seq(""), _dafny.Seq(""), _dafny.Seq(""), (d_0_keyringConfig_).encryptDescription, (d_0_keyringConfig_).decryptDescription, Wrappers.Option_None(), Wrappers.Option_None(), AwsCryptographyMaterialProvidersTypes.ESDKCommitmentPolicy_FORBID__ENCRYPT__ALLOW__DECRYPT(), Wrappers.Option_Some(default__.frameSize), Wrappers.Option_Some(d_1_algorithmSuite_), (d_0_keyringConfig_).name, Wrappers.Option_Some(1))])) + return _dafny.Set(coll0_) + return iife0_() + + @_dafny.classproperty + def AwsKmsRsaTests(instance): + return AllKmsRsa.default__.Tests + @_dafny.classproperty + def esdkAlgorithmSuitesKmsRsa(instance): + def iife0_(): + coll0_ = _dafny.Set() + compr_0_: AwsCryptographyMaterialProvidersTypes.AlgorithmSuiteInfo + for compr_0_ in (AllAlgorithmSuites.default__.AllAlgorithmSuites).Elements: + d_0_suite_: AwsCryptographyMaterialProvidersTypes.AlgorithmSuiteInfo = compr_0_ + if AlgorithmSuites.AlgorithmSuite._Is(d_0_suite_): + if (((d_0_suite_) in (AllAlgorithmSuites.default__.AllAlgorithmSuites)) and (not(((d_0_suite_).signature).is_ECDSA))) and (((d_0_suite_).id).is_ESDK): + coll0_ = coll0_.union(_dafny.Set([d_0_suite_])) + return _dafny.Set(coll0_) + return iife0_() + + @_dafny.classproperty + def AllPositiveKeyringTestsNoDBEKmsRsa(instance): + def iife0_(): + coll0_ = _dafny.Set() + compr_0_: TestVectors.EncryptTestVector + for compr_0_ in (default__.AwsKmsRsaTests).Elements: + d_0_keyringConfig_: TestVectors.EncryptTestVector = compr_0_ + if ((d_0_keyringConfig_) in (default__.AwsKmsRsaTests)) and (not((d_0_keyringConfig_).is_NegativeEncryptKeyringVector)): + compr_1_: AwsCryptographyMaterialProvidersTypes.AlgorithmSuiteInfo + for compr_1_ in (default__.esdkAlgorithmSuitesKmsRsa).Elements: + d_1_algorithmSuite_: AwsCryptographyMaterialProvidersTypes.AlgorithmSuiteInfo = compr_1_ + if (d_1_algorithmSuite_) in (default__.esdkAlgorithmSuitesKmsRsa): + coll0_ = coll0_.union(_dafny.Set([EsdkTestVectors.EsdkEncryptTestVector_PositiveEncryptTestVector(Wrappers.Option_None(), 4, _dafny.Seq(""), _dafny.Seq(""), _dafny.Seq(""), (d_0_keyringConfig_).encryptDescription, (d_0_keyringConfig_).decryptDescription, Wrappers.Option_None(), Wrappers.Option_None(), AwsCryptographyMaterialProvidersTypes.ESDKCommitmentPolicy_FORBID__ENCRYPT__ALLOW__DECRYPT(), Wrappers.Option_Some(default__.frameSize), Wrappers.Option_Some(d_1_algorithmSuite_), (d_0_keyringConfig_).name, Wrappers.Option_Some(1))])) + return _dafny.Set(coll0_) + return iife0_() + + @_dafny.classproperty + def Tests(instance): + return (default__.AllPostiveKeyringTestsNoDBESuiteNoReqEC) | (default__.AllPositiveKeyringTestsNoDBEKmsRsa) diff --git a/TestVectors/runtimes/python/src/aws_encryption_sdk_test_vectors/internaldafny/generated/AllEsdkV4WithReqEc.py b/TestVectors/runtimes/python/src/aws_encryption_sdk_test_vectors/internaldafny/generated/AllEsdkV4WithReqEc.py new file mode 100644 index 000000000..a92d1789a --- /dev/null +++ b/TestVectors/runtimes/python/src/aws_encryption_sdk_test_vectors/internaldafny/generated/AllEsdkV4WithReqEc.py @@ -0,0 +1,246 @@ +import sys +from typing import Callable, Any, TypeVar, NamedTuple +from math import floor +from itertools import count + +import aws_encryption_sdk_test_vectors.internaldafny.generated.module_ as module_ +import _dafny as _dafny +import System_ as System_ +import smithy_dafny_standard_library.internaldafny.generated.Wrappers as Wrappers +import smithy_dafny_standard_library.internaldafny.generated.BoundedInts as BoundedInts +import smithy_dafny_standard_library.internaldafny.generated.StandardLibrary_UInt as StandardLibrary_UInt +import smithy_dafny_standard_library.internaldafny.generated.StandardLibrary_Sequence as StandardLibrary_Sequence +import smithy_dafny_standard_library.internaldafny.generated.StandardLibrary_String as StandardLibrary_String +import smithy_dafny_standard_library.internaldafny.generated.StandardLibrary as StandardLibrary +import smithy_dafny_standard_library.internaldafny.generated.UTF8 as UTF8 +import aws_cryptography_primitives.internaldafny.generated.AwsCryptographyPrimitivesTypes as AwsCryptographyPrimitivesTypes +import aws_cryptography_primitives.internaldafny.generated.ExternRandom as ExternRandom +import aws_cryptography_primitives.internaldafny.generated.Random as Random +import aws_cryptography_primitives.internaldafny.generated.AESEncryption as AESEncryption +import aws_cryptography_primitives.internaldafny.generated.ExternDigest as ExternDigest +import aws_cryptography_primitives.internaldafny.generated.Digest as Digest +import aws_cryptography_primitives.internaldafny.generated.HMAC as HMAC +import aws_cryptography_primitives.internaldafny.generated.WrappedHMAC as WrappedHMAC +import aws_cryptography_primitives.internaldafny.generated.HKDF as HKDF +import aws_cryptography_primitives.internaldafny.generated.WrappedHKDF as WrappedHKDF +import aws_cryptography_primitives.internaldafny.generated.Signature as Signature +import aws_cryptography_primitives.internaldafny.generated.KdfCtr as KdfCtr +import aws_cryptography_primitives.internaldafny.generated.RSAEncryption as RSAEncryption +import aws_cryptography_primitives.internaldafny.generated.ECDH as ECDH +import aws_cryptography_primitives.internaldafny.generated.AwsCryptographyPrimitivesOperations as AwsCryptographyPrimitivesOperations +import aws_cryptography_primitives.internaldafny.generated.AtomicPrimitives as AtomicPrimitives +import aws_cryptography_internal_dynamodb.internaldafny.generated.ComAmazonawsDynamodbTypes as ComAmazonawsDynamodbTypes +import aws_cryptography_internal_kms.internaldafny.generated.ComAmazonawsKmsTypes as ComAmazonawsKmsTypes +import aws_cryptographic_material_providers.internaldafny.generated.AwsCryptographyKeyStoreTypes as AwsCryptographyKeyStoreTypes +import aws_cryptographic_material_providers.internaldafny.generated.AwsCryptographyMaterialProvidersTypes as AwsCryptographyMaterialProvidersTypes +import smithy_dafny_standard_library.internaldafny.generated.Base64 as Base64 +import aws_cryptographic_material_providers.internaldafny.generated.AlgorithmSuites as AlgorithmSuites +import aws_cryptographic_material_providers.internaldafny.generated.Materials as Materials +import aws_cryptographic_material_providers.internaldafny.generated.Keyring as Keyring +import smithy_dafny_standard_library.internaldafny.generated.Relations as Relations +import smithy_dafny_standard_library.internaldafny.generated.Seq_MergeSort as Seq_MergeSort +import smithy_dafny_standard_library.internaldafny.generated.Math as Math +import smithy_dafny_standard_library.internaldafny.generated.Seq as Seq +import aws_cryptographic_material_providers.internaldafny.generated.MultiKeyring as MultiKeyring +import aws_cryptographic_material_providers.internaldafny.generated.AwsArnParsing as AwsArnParsing +import aws_cryptographic_material_providers.internaldafny.generated.AwsKmsMrkAreUnique as AwsKmsMrkAreUnique +import smithy_dafny_standard_library.internaldafny.generated.Actions as Actions +import aws_cryptographic_material_providers.internaldafny.generated.AwsKmsMrkMatchForDecrypt as AwsKmsMrkMatchForDecrypt +import aws_cryptographic_material_providers.internaldafny.generated.AwsKmsUtils as AwsKmsUtils +import aws_cryptographic_material_providers.internaldafny.generated.Constants as Constants +import smithy_dafny_standard_library.internaldafny.generated.UUID as UUID +import aws_cryptographic_material_providers.internaldafny.generated.MaterialWrapping as MaterialWrapping +import smithy_dafny_standard_library.internaldafny.generated.SortedSets as SortedSets +import aws_cryptographic_material_providers.internaldafny.generated.CanonicalEncryptionContext as CanonicalEncryptionContext +import aws_cryptographic_material_providers.internaldafny.generated.IntermediateKeyWrapping as IntermediateKeyWrapping +import aws_cryptographic_material_providers.internaldafny.generated.EdkWrapping as EdkWrapping +import aws_cryptographic_material_providers.internaldafny.generated.ErrorMessages as ErrorMessages +import aws_cryptographic_material_providers.internaldafny.generated.AwsKmsKeyring as AwsKmsKeyring +import aws_cryptographic_material_providers.internaldafny.generated.StrictMultiKeyring as StrictMultiKeyring +import aws_cryptographic_material_providers.internaldafny.generated.AwsKmsDiscoveryKeyring as AwsKmsDiscoveryKeyring +import aws_cryptography_internal_kms.internaldafny.generated.Com_Amazonaws_Kms as Com_Amazonaws_Kms +import aws_cryptography_internal_dynamodb.internaldafny.generated.Com_Amazonaws_Dynamodb as Com_Amazonaws_Dynamodb +import aws_cryptographic_material_providers.internaldafny.generated.DiscoveryMultiKeyring as DiscoveryMultiKeyring +import aws_cryptographic_material_providers.internaldafny.generated.AwsKmsMrkDiscoveryKeyring as AwsKmsMrkDiscoveryKeyring +import aws_cryptographic_material_providers.internaldafny.generated.MrkAwareDiscoveryMultiKeyring as MrkAwareDiscoveryMultiKeyring +import aws_cryptographic_material_providers.internaldafny.generated.AwsKmsMrkKeyring as AwsKmsMrkKeyring +import aws_cryptographic_material_providers.internaldafny.generated.MrkAwareStrictMultiKeyring as MrkAwareStrictMultiKeyring +import smithy_dafny_standard_library.internaldafny.generated.DafnyLibraries as DafnyLibraries +import smithy_dafny_standard_library.internaldafny.generated.Time as Time +import aws_cryptographic_material_providers.internaldafny.generated.LocalCMC as LocalCMC +import aws_cryptographic_material_providers.internaldafny.generated.SynchronizedLocalCMC as SynchronizedLocalCMC +import aws_cryptographic_material_providers.internaldafny.generated.StormTracker as StormTracker +import aws_cryptographic_material_providers.internaldafny.generated.StormTrackingCMC as StormTrackingCMC +import aws_cryptographic_material_providers.internaldafny.generated.CacheConstants as CacheConstants +import aws_cryptographic_material_providers.internaldafny.generated.AwsKmsHierarchicalKeyring as AwsKmsHierarchicalKeyring +import aws_cryptographic_material_providers.internaldafny.generated.AwsKmsRsaKeyring as AwsKmsRsaKeyring +import aws_cryptographic_material_providers.internaldafny.generated.EcdhEdkWrapping as EcdhEdkWrapping +import aws_cryptographic_material_providers.internaldafny.generated.RawECDHKeyring as RawECDHKeyring +import aws_cryptographic_material_providers.internaldafny.generated.AwsKmsEcdhKeyring as AwsKmsEcdhKeyring +import aws_cryptographic_material_providers.internaldafny.generated.RawAESKeyring as RawAESKeyring +import aws_cryptographic_material_providers.internaldafny.generated.RawRSAKeyring as RawRSAKeyring +import aws_cryptographic_material_providers.internaldafny.generated.CMM as CMM +import aws_cryptographic_material_providers.internaldafny.generated.Defaults as Defaults +import aws_cryptographic_material_providers.internaldafny.generated.Commitment as Commitment +import aws_cryptographic_material_providers.internaldafny.generated.DefaultCMM as DefaultCMM +import aws_cryptographic_material_providers.internaldafny.generated.DefaultClientSupplier as DefaultClientSupplier +import aws_cryptographic_material_providers.internaldafny.generated.Utils as Utils +import aws_cryptographic_material_providers.internaldafny.generated.RequiredEncryptionContextCMM as RequiredEncryptionContextCMM +import aws_cryptographic_material_providers.internaldafny.generated.AwsCryptographyMaterialProvidersOperations as AwsCryptographyMaterialProvidersOperations +import aws_cryptographic_material_providers.internaldafny.generated.MaterialProviders as MaterialProviders +import aws_cryptographic_material_providers.internaldafny.generated.KeyStoreErrorMessages as KeyStoreErrorMessages +import aws_cryptographic_material_providers.internaldafny.generated.KmsArn as KmsArn +import aws_cryptographic_material_providers.internaldafny.generated.Structure as Structure +import aws_cryptographic_material_providers.internaldafny.generated.KMSKeystoreOperations as KMSKeystoreOperations +import aws_cryptographic_material_providers.internaldafny.generated.DDBKeystoreOperations as DDBKeystoreOperations +import aws_cryptographic_material_providers.internaldafny.generated.CreateKeys as CreateKeys +import aws_cryptographic_material_providers.internaldafny.generated.CreateKeyStoreTable as CreateKeyStoreTable +import aws_cryptographic_material_providers.internaldafny.generated.GetKeys as GetKeys +import aws_cryptographic_material_providers.internaldafny.generated.AwsCryptographyKeyStoreOperations as AwsCryptographyKeyStoreOperations +import aws_cryptographic_material_providers.internaldafny.generated.KeyStore as KeyStore +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AwsCryptographyMaterialProvidersTestVectorKeysTypes as AwsCryptographyMaterialProvidersTestVectorKeysTypes +import smithy_dafny_standard_library.internaldafny.generated.JSON_Utils_Views_Core as JSON_Utils_Views_Core +import smithy_dafny_standard_library.internaldafny.generated.JSON_Utils_Views_Writers as JSON_Utils_Views_Writers +import smithy_dafny_standard_library.internaldafny.generated.JSON_Utils_Lexers_Core as JSON_Utils_Lexers_Core +import smithy_dafny_standard_library.internaldafny.generated.JSON_Utils_Lexers_Strings as JSON_Utils_Lexers_Strings +import smithy_dafny_standard_library.internaldafny.generated.JSON_Utils_Cursors as JSON_Utils_Cursors +import smithy_dafny_standard_library.internaldafny.generated.JSON_Utils_Parsers as JSON_Utils_Parsers +import smithy_dafny_standard_library.internaldafny.generated.GeneralInternals as GeneralInternals +import smithy_dafny_standard_library.internaldafny.generated.MulInternalsNonlinear as MulInternalsNonlinear +import smithy_dafny_standard_library.internaldafny.generated.MulInternals as MulInternals +import smithy_dafny_standard_library.internaldafny.generated.Mul as Mul +import smithy_dafny_standard_library.internaldafny.generated.ModInternalsNonlinear as ModInternalsNonlinear +import smithy_dafny_standard_library.internaldafny.generated.DivInternalsNonlinear as DivInternalsNonlinear +import smithy_dafny_standard_library.internaldafny.generated.ModInternals as ModInternals +import smithy_dafny_standard_library.internaldafny.generated.DivInternals as DivInternals +import smithy_dafny_standard_library.internaldafny.generated.DivMod as DivMod +import smithy_dafny_standard_library.internaldafny.generated.Power as Power +import smithy_dafny_standard_library.internaldafny.generated.Logarithm as Logarithm +import smithy_dafny_standard_library.internaldafny.generated.JSON_Utils_Str_CharStrConversion as JSON_Utils_Str_CharStrConversion +import smithy_dafny_standard_library.internaldafny.generated.JSON_Utils_Str_CharStrEscaping as JSON_Utils_Str_CharStrEscaping +import smithy_dafny_standard_library.internaldafny.generated.JSON_Utils_Str as JSON_Utils_Str +import smithy_dafny_standard_library.internaldafny.generated.JSON_Utils_Seq as JSON_Utils_Seq +import smithy_dafny_standard_library.internaldafny.generated.JSON_Utils_Vectors as JSON_Utils_Vectors +import smithy_dafny_standard_library.internaldafny.generated.JSON_Errors as JSON_Errors +import smithy_dafny_standard_library.internaldafny.generated.JSON_Values as JSON_Values +import smithy_dafny_standard_library.internaldafny.generated.Unicode as Unicode +import smithy_dafny_standard_library.internaldafny.generated.Functions as Functions +import smithy_dafny_standard_library.internaldafny.generated.Utf8EncodingForm as Utf8EncodingForm +import smithy_dafny_standard_library.internaldafny.generated.Utf16EncodingForm as Utf16EncodingForm +import smithy_dafny_standard_library.internaldafny.generated.UnicodeStrings as UnicodeStrings +import smithy_dafny_standard_library.internaldafny.generated.JSON_Spec as JSON_Spec +import smithy_dafny_standard_library.internaldafny.generated.JSON_Grammar as JSON_Grammar +import smithy_dafny_standard_library.internaldafny.generated.JSON_Serializer_ByteStrConversion as JSON_Serializer_ByteStrConversion +import smithy_dafny_standard_library.internaldafny.generated.JSON_Serializer as JSON_Serializer +import smithy_dafny_standard_library.internaldafny.generated.JSON_Deserializer_Uint16StrConversion as JSON_Deserializer_Uint16StrConversion +import smithy_dafny_standard_library.internaldafny.generated.JSON_Deserializer_ByteStrConversion as JSON_Deserializer_ByteStrConversion +import smithy_dafny_standard_library.internaldafny.generated.JSON_Deserializer as JSON_Deserializer +import smithy_dafny_standard_library.internaldafny.generated.JSON_ConcreteSyntax_Spec as JSON_ConcreteSyntax_Spec +import smithy_dafny_standard_library.internaldafny.generated.JSON_ConcreteSyntax_SpecProperties as JSON_ConcreteSyntax_SpecProperties +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_Serializer as JSON_ZeroCopy_Serializer +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_Deserializer_Core as JSON_ZeroCopy_Deserializer_Core +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_Deserializer_Strings as JSON_ZeroCopy_Deserializer_Strings +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_Deserializer_Numbers as JSON_ZeroCopy_Deserializer_Numbers +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_Deserializer_ObjectParams as JSON_ZeroCopy_Deserializer_ObjectParams +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_Deserializer_Objects as JSON_ZeroCopy_Deserializer_Objects +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_Deserializer_ArrayParams as JSON_ZeroCopy_Deserializer_ArrayParams +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_Deserializer_Arrays as JSON_ZeroCopy_Deserializer_Arrays +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_Deserializer_Constants as JSON_ZeroCopy_Deserializer_Constants +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_Deserializer_Values as JSON_ZeroCopy_Deserializer_Values +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_Deserializer_API as JSON_ZeroCopy_Deserializer_API +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_Deserializer as JSON_ZeroCopy_Deserializer +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_API as JSON_ZeroCopy_API +import smithy_dafny_standard_library.internaldafny.generated.JSON_API as JSON_API +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.JSONHelpers as JSONHelpers +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.KeyDescription as KeyDescription +import smithy_dafny_standard_library.internaldafny.generated.HexStrings as HexStrings +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.KeyMaterial as KeyMaterial +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.CreateStaticKeyrings as CreateStaticKeyrings +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.CreateStaticKeyStores as CreateStaticKeyStores +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.KeyringFromKeyDescription as KeyringFromKeyDescription +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.CmmFromKeyDescription as CmmFromKeyDescription +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.WrappedMaterialProviders as WrappedMaterialProviders +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.KeysVectorOperations as KeysVectorOperations +import smithy_dafny_standard_library.internaldafny.generated.FileIO as FileIO +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.KeyVectors as KeyVectors +import aws_encryption_sdk.internaldafny.generated.AwsCryptographyEncryptionSdkTypes as AwsCryptographyEncryptionSdkTypes +import smithy_dafny_standard_library.internaldafny.generated.Streams as Streams +import aws_encryption_sdk.internaldafny.generated.SerializableTypes as SerializableTypes +import aws_encryption_sdk.internaldafny.generated.SerializeFunctions as SerializeFunctions +import aws_encryption_sdk.internaldafny.generated.EncryptionContext as EncryptionContext +import aws_encryption_sdk.internaldafny.generated.HeaderTypes as HeaderTypes +import aws_encryption_sdk.internaldafny.generated.SharedHeaderFunctions as SharedHeaderFunctions +import aws_encryption_sdk.internaldafny.generated.EncryptedDataKeys as EncryptedDataKeys +import aws_encryption_sdk.internaldafny.generated.V1HeaderBody as V1HeaderBody +import aws_encryption_sdk.internaldafny.generated.V2HeaderBody as V2HeaderBody +import aws_encryption_sdk.internaldafny.generated.HeaderAuth as HeaderAuth +import aws_encryption_sdk.internaldafny.generated.Header as Header +import aws_encryption_sdk.internaldafny.generated.Frames as Frames +import aws_encryption_sdk.internaldafny.generated.MessageBody as MessageBody +import aws_encryption_sdk.internaldafny.generated.KeyDerivation as KeyDerivation +import aws_encryption_sdk.internaldafny.generated.EncryptDecryptHelpers as EncryptDecryptHelpers +import aws_encryption_sdk.internaldafny.generated.AwsEncryptionSdkOperations as AwsEncryptionSdkOperations +import aws_encryption_sdk.internaldafny.generated.EncryptionSdk as EncryptionSdk +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.MplManifestOptions as MplManifestOptions +import smithy_dafny_standard_library.internaldafny.generated.GetOpt as GetOpt +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllAlgorithmSuites as AllAlgorithmSuites +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.TestVectors as TestVectors +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllHierarchy as AllHierarchy +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllKms as AllKms +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllKmsMrkAware as AllKmsMrkAware +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllKmsMrkAwareDiscovery as AllKmsMrkAwareDiscovery +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllKmsRsa as AllKmsRsa +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllKmsEcdh as AllKmsEcdh +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllRawAES as AllRawAES +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllRawRSA as AllRawRSA +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllRawECDH as AllRawECDH +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllDefaultCmm as AllDefaultCmm +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllRequiredEncryptionContextCmm as AllRequiredEncryptionContextCmm +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllMulti as AllMulti +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.WriteJsonManifests as WriteJsonManifests +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.CompleteVectors as CompleteVectors +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.ParseJsonManifests as ParseJsonManifests +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.TestManifests as TestManifests +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.WrappedMaterialProvidersMain as WrappedMaterialProvidersMain +import aws_cryptography_primitives.internaldafny.generated.AesKdfCtr as AesKdfCtr +import smithy_dafny_standard_library.internaldafny.generated.StandardLibraryInterop as StandardLibraryInterop +import smithy_dafny_standard_library.internaldafny.generated.Sorting as Sorting +import smithy_dafny_standard_library.internaldafny.generated.FloatCompare as FloatCompare +import smithy_dafny_standard_library.internaldafny.generated.ConcurrentCall as ConcurrentCall +import smithy_dafny_standard_library.internaldafny.generated.Base64Lemmas as Base64Lemmas +import aws_encryption_sdk_test_vectors.internaldafny.generated.WrappedESDK as WrappedESDK +import aws_encryption_sdk_test_vectors.internaldafny.generated.EsdkManifestOptions as EsdkManifestOptions +import aws_encryption_sdk_test_vectors.internaldafny.generated.EsdkTestVectors as EsdkTestVectors +import aws_encryption_sdk_test_vectors.internaldafny.generated.AllEsdkV4NoReqEc as AllEsdkV4NoReqEc + +# Module: AllEsdkV4WithReqEc + +class default__: + def __init__(self): + pass + + @_dafny.classproperty + def AllPositiveReqEcTests(instance): + return AllRequiredEncryptionContextCmm.default__.SuccessTestingRequiredEncryptionContextKeysReproducedEncryptionContext + @_dafny.classproperty + def frameSize(instance): + return 512 + @_dafny.classproperty + def AllPositiveReqEcEsdkTests(instance): + def iife0_(): + coll0_ = _dafny.Set() + compr_0_: TestVectors.EncryptTestVector + for compr_0_ in (default__.AllPositiveReqEcTests).Elements: + d_0_config_: TestVectors.EncryptTestVector = compr_0_ + if (d_0_config_) in (default__.AllPositiveReqEcTests): + compr_1_: AwsCryptographyMaterialProvidersTypes.AlgorithmSuiteInfo + for compr_1_ in (AllAlgorithmSuites.default__.ESDKAlgorithmSuites).Elements: + d_1_algorithmSuite_: AwsCryptographyMaterialProvidersTypes.AlgorithmSuiteInfo = compr_1_ + if (d_1_algorithmSuite_) in (AllAlgorithmSuites.default__.ESDKAlgorithmSuites): + coll0_ = coll0_.union(_dafny.Set([EsdkTestVectors.EsdkEncryptTestVector_PositiveEncryptTestVector(Wrappers.Option_None(), 4, _dafny.Seq(""), _dafny.Seq(""), _dafny.Seq(""), (d_0_config_).encryptDescription, (d_0_config_).decryptDescription, Wrappers.Option_Some((d_0_config_).encryptionContext), (d_0_config_).reproducedEncryptionContext, AwsCryptographyMaterialProvidersTypes.ESDKCommitmentPolicy_FORBID__ENCRYPT__ALLOW__DECRYPT(), Wrappers.Option_Some(default__.frameSize), Wrappers.Option_Some(d_1_algorithmSuite_), (d_0_config_).name, Wrappers.Option_Some(1))])) + return _dafny.Set(coll0_) + return iife0_() + + @_dafny.classproperty + def Tests(instance): + return default__.AllPositiveReqEcEsdkTests diff --git a/TestVectors/runtimes/python/src/aws_encryption_sdk_test_vectors/internaldafny/generated/EsdkManifestOptions.py b/TestVectors/runtimes/python/src/aws_encryption_sdk_test_vectors/internaldafny/generated/EsdkManifestOptions.py new file mode 100644 index 000000000..93dcdb192 --- /dev/null +++ b/TestVectors/runtimes/python/src/aws_encryption_sdk_test_vectors/internaldafny/generated/EsdkManifestOptions.py @@ -0,0 +1,266 @@ +import sys +from typing import Callable, Any, TypeVar, NamedTuple +from math import floor +from itertools import count + +import aws_encryption_sdk_test_vectors.internaldafny.generated.module_ as module_ +import _dafny as _dafny +import System_ as System_ +import smithy_dafny_standard_library.internaldafny.generated.Wrappers as Wrappers +import smithy_dafny_standard_library.internaldafny.generated.BoundedInts as BoundedInts +import smithy_dafny_standard_library.internaldafny.generated.StandardLibrary_UInt as StandardLibrary_UInt +import smithy_dafny_standard_library.internaldafny.generated.StandardLibrary_Sequence as StandardLibrary_Sequence +import smithy_dafny_standard_library.internaldafny.generated.StandardLibrary_String as StandardLibrary_String +import smithy_dafny_standard_library.internaldafny.generated.StandardLibrary as StandardLibrary +import smithy_dafny_standard_library.internaldafny.generated.UTF8 as UTF8 +import aws_cryptography_primitives.internaldafny.generated.AwsCryptographyPrimitivesTypes as AwsCryptographyPrimitivesTypes +import aws_cryptography_primitives.internaldafny.generated.ExternRandom as ExternRandom +import aws_cryptography_primitives.internaldafny.generated.Random as Random +import aws_cryptography_primitives.internaldafny.generated.AESEncryption as AESEncryption +import aws_cryptography_primitives.internaldafny.generated.ExternDigest as ExternDigest +import aws_cryptography_primitives.internaldafny.generated.Digest as Digest +import aws_cryptography_primitives.internaldafny.generated.HMAC as HMAC +import aws_cryptography_primitives.internaldafny.generated.WrappedHMAC as WrappedHMAC +import aws_cryptography_primitives.internaldafny.generated.HKDF as HKDF +import aws_cryptography_primitives.internaldafny.generated.WrappedHKDF as WrappedHKDF +import aws_cryptography_primitives.internaldafny.generated.Signature as Signature +import aws_cryptography_primitives.internaldafny.generated.KdfCtr as KdfCtr +import aws_cryptography_primitives.internaldafny.generated.RSAEncryption as RSAEncryption +import aws_cryptography_primitives.internaldafny.generated.ECDH as ECDH +import aws_cryptography_primitives.internaldafny.generated.AwsCryptographyPrimitivesOperations as AwsCryptographyPrimitivesOperations +import aws_cryptography_primitives.internaldafny.generated.AtomicPrimitives as AtomicPrimitives +import aws_cryptography_internal_dynamodb.internaldafny.generated.ComAmazonawsDynamodbTypes as ComAmazonawsDynamodbTypes +import aws_cryptography_internal_kms.internaldafny.generated.ComAmazonawsKmsTypes as ComAmazonawsKmsTypes +import aws_cryptographic_material_providers.internaldafny.generated.AwsCryptographyKeyStoreTypes as AwsCryptographyKeyStoreTypes +import aws_cryptographic_material_providers.internaldafny.generated.AwsCryptographyMaterialProvidersTypes as AwsCryptographyMaterialProvidersTypes +import smithy_dafny_standard_library.internaldafny.generated.Base64 as Base64 +import aws_cryptographic_material_providers.internaldafny.generated.AlgorithmSuites as AlgorithmSuites +import aws_cryptographic_material_providers.internaldafny.generated.Materials as Materials +import aws_cryptographic_material_providers.internaldafny.generated.Keyring as Keyring +import smithy_dafny_standard_library.internaldafny.generated.Relations as Relations +import smithy_dafny_standard_library.internaldafny.generated.Seq_MergeSort as Seq_MergeSort +import smithy_dafny_standard_library.internaldafny.generated.Math as Math +import smithy_dafny_standard_library.internaldafny.generated.Seq as Seq +import aws_cryptographic_material_providers.internaldafny.generated.MultiKeyring as MultiKeyring +import aws_cryptographic_material_providers.internaldafny.generated.AwsArnParsing as AwsArnParsing +import aws_cryptographic_material_providers.internaldafny.generated.AwsKmsMrkAreUnique as AwsKmsMrkAreUnique +import smithy_dafny_standard_library.internaldafny.generated.Actions as Actions +import aws_cryptographic_material_providers.internaldafny.generated.AwsKmsMrkMatchForDecrypt as AwsKmsMrkMatchForDecrypt +import aws_cryptographic_material_providers.internaldafny.generated.AwsKmsUtils as AwsKmsUtils +import aws_cryptographic_material_providers.internaldafny.generated.Constants as Constants +import smithy_dafny_standard_library.internaldafny.generated.UUID as UUID +import aws_cryptographic_material_providers.internaldafny.generated.MaterialWrapping as MaterialWrapping +import smithy_dafny_standard_library.internaldafny.generated.SortedSets as SortedSets +import aws_cryptographic_material_providers.internaldafny.generated.CanonicalEncryptionContext as CanonicalEncryptionContext +import aws_cryptographic_material_providers.internaldafny.generated.IntermediateKeyWrapping as IntermediateKeyWrapping +import aws_cryptographic_material_providers.internaldafny.generated.EdkWrapping as EdkWrapping +import aws_cryptographic_material_providers.internaldafny.generated.ErrorMessages as ErrorMessages +import aws_cryptographic_material_providers.internaldafny.generated.AwsKmsKeyring as AwsKmsKeyring +import aws_cryptographic_material_providers.internaldafny.generated.StrictMultiKeyring as StrictMultiKeyring +import aws_cryptographic_material_providers.internaldafny.generated.AwsKmsDiscoveryKeyring as AwsKmsDiscoveryKeyring +import aws_cryptography_internal_kms.internaldafny.generated.Com_Amazonaws_Kms as Com_Amazonaws_Kms +import aws_cryptography_internal_dynamodb.internaldafny.generated.Com_Amazonaws_Dynamodb as Com_Amazonaws_Dynamodb +import aws_cryptographic_material_providers.internaldafny.generated.DiscoveryMultiKeyring as DiscoveryMultiKeyring +import aws_cryptographic_material_providers.internaldafny.generated.AwsKmsMrkDiscoveryKeyring as AwsKmsMrkDiscoveryKeyring +import aws_cryptographic_material_providers.internaldafny.generated.MrkAwareDiscoveryMultiKeyring as MrkAwareDiscoveryMultiKeyring +import aws_cryptographic_material_providers.internaldafny.generated.AwsKmsMrkKeyring as AwsKmsMrkKeyring +import aws_cryptographic_material_providers.internaldafny.generated.MrkAwareStrictMultiKeyring as MrkAwareStrictMultiKeyring +import smithy_dafny_standard_library.internaldafny.generated.DafnyLibraries as DafnyLibraries +import smithy_dafny_standard_library.internaldafny.generated.Time as Time +import aws_cryptographic_material_providers.internaldafny.generated.LocalCMC as LocalCMC +import aws_cryptographic_material_providers.internaldafny.generated.SynchronizedLocalCMC as SynchronizedLocalCMC +import aws_cryptographic_material_providers.internaldafny.generated.StormTracker as StormTracker +import aws_cryptographic_material_providers.internaldafny.generated.StormTrackingCMC as StormTrackingCMC +import aws_cryptographic_material_providers.internaldafny.generated.CacheConstants as CacheConstants +import aws_cryptographic_material_providers.internaldafny.generated.AwsKmsHierarchicalKeyring as AwsKmsHierarchicalKeyring +import aws_cryptographic_material_providers.internaldafny.generated.AwsKmsRsaKeyring as AwsKmsRsaKeyring +import aws_cryptographic_material_providers.internaldafny.generated.EcdhEdkWrapping as EcdhEdkWrapping +import aws_cryptographic_material_providers.internaldafny.generated.RawECDHKeyring as RawECDHKeyring +import aws_cryptographic_material_providers.internaldafny.generated.AwsKmsEcdhKeyring as AwsKmsEcdhKeyring +import aws_cryptographic_material_providers.internaldafny.generated.RawAESKeyring as RawAESKeyring +import aws_cryptographic_material_providers.internaldafny.generated.RawRSAKeyring as RawRSAKeyring +import aws_cryptographic_material_providers.internaldafny.generated.CMM as CMM +import aws_cryptographic_material_providers.internaldafny.generated.Defaults as Defaults +import aws_cryptographic_material_providers.internaldafny.generated.Commitment as Commitment +import aws_cryptographic_material_providers.internaldafny.generated.DefaultCMM as DefaultCMM +import aws_cryptographic_material_providers.internaldafny.generated.DefaultClientSupplier as DefaultClientSupplier +import aws_cryptographic_material_providers.internaldafny.generated.Utils as Utils +import aws_cryptographic_material_providers.internaldafny.generated.RequiredEncryptionContextCMM as RequiredEncryptionContextCMM +import aws_cryptographic_material_providers.internaldafny.generated.AwsCryptographyMaterialProvidersOperations as AwsCryptographyMaterialProvidersOperations +import aws_cryptographic_material_providers.internaldafny.generated.MaterialProviders as MaterialProviders +import aws_cryptographic_material_providers.internaldafny.generated.KeyStoreErrorMessages as KeyStoreErrorMessages +import aws_cryptographic_material_providers.internaldafny.generated.KmsArn as KmsArn +import aws_cryptographic_material_providers.internaldafny.generated.Structure as Structure +import aws_cryptographic_material_providers.internaldafny.generated.KMSKeystoreOperations as KMSKeystoreOperations +import aws_cryptographic_material_providers.internaldafny.generated.DDBKeystoreOperations as DDBKeystoreOperations +import aws_cryptographic_material_providers.internaldafny.generated.CreateKeys as CreateKeys +import aws_cryptographic_material_providers.internaldafny.generated.CreateKeyStoreTable as CreateKeyStoreTable +import aws_cryptographic_material_providers.internaldafny.generated.GetKeys as GetKeys +import aws_cryptographic_material_providers.internaldafny.generated.AwsCryptographyKeyStoreOperations as AwsCryptographyKeyStoreOperations +import aws_cryptographic_material_providers.internaldafny.generated.KeyStore as KeyStore +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AwsCryptographyMaterialProvidersTestVectorKeysTypes as AwsCryptographyMaterialProvidersTestVectorKeysTypes +import smithy_dafny_standard_library.internaldafny.generated.JSON_Utils_Views_Core as JSON_Utils_Views_Core +import smithy_dafny_standard_library.internaldafny.generated.JSON_Utils_Views_Writers as JSON_Utils_Views_Writers +import smithy_dafny_standard_library.internaldafny.generated.JSON_Utils_Lexers_Core as JSON_Utils_Lexers_Core +import smithy_dafny_standard_library.internaldafny.generated.JSON_Utils_Lexers_Strings as JSON_Utils_Lexers_Strings +import smithy_dafny_standard_library.internaldafny.generated.JSON_Utils_Cursors as JSON_Utils_Cursors +import smithy_dafny_standard_library.internaldafny.generated.JSON_Utils_Parsers as JSON_Utils_Parsers +import smithy_dafny_standard_library.internaldafny.generated.GeneralInternals as GeneralInternals +import smithy_dafny_standard_library.internaldafny.generated.MulInternalsNonlinear as MulInternalsNonlinear +import smithy_dafny_standard_library.internaldafny.generated.MulInternals as MulInternals +import smithy_dafny_standard_library.internaldafny.generated.Mul as Mul +import smithy_dafny_standard_library.internaldafny.generated.ModInternalsNonlinear as ModInternalsNonlinear +import smithy_dafny_standard_library.internaldafny.generated.DivInternalsNonlinear as DivInternalsNonlinear +import smithy_dafny_standard_library.internaldafny.generated.ModInternals as ModInternals +import smithy_dafny_standard_library.internaldafny.generated.DivInternals as DivInternals +import smithy_dafny_standard_library.internaldafny.generated.DivMod as DivMod +import smithy_dafny_standard_library.internaldafny.generated.Power as Power +import smithy_dafny_standard_library.internaldafny.generated.Logarithm as Logarithm +import smithy_dafny_standard_library.internaldafny.generated.JSON_Utils_Str_CharStrConversion as JSON_Utils_Str_CharStrConversion +import smithy_dafny_standard_library.internaldafny.generated.JSON_Utils_Str_CharStrEscaping as JSON_Utils_Str_CharStrEscaping +import smithy_dafny_standard_library.internaldafny.generated.JSON_Utils_Str as JSON_Utils_Str +import smithy_dafny_standard_library.internaldafny.generated.JSON_Utils_Seq as JSON_Utils_Seq +import smithy_dafny_standard_library.internaldafny.generated.JSON_Utils_Vectors as JSON_Utils_Vectors +import smithy_dafny_standard_library.internaldafny.generated.JSON_Errors as JSON_Errors +import smithy_dafny_standard_library.internaldafny.generated.JSON_Values as JSON_Values +import smithy_dafny_standard_library.internaldafny.generated.Unicode as Unicode +import smithy_dafny_standard_library.internaldafny.generated.Functions as Functions +import smithy_dafny_standard_library.internaldafny.generated.Utf8EncodingForm as Utf8EncodingForm +import smithy_dafny_standard_library.internaldafny.generated.Utf16EncodingForm as Utf16EncodingForm +import smithy_dafny_standard_library.internaldafny.generated.UnicodeStrings as UnicodeStrings +import smithy_dafny_standard_library.internaldafny.generated.JSON_Spec as JSON_Spec +import smithy_dafny_standard_library.internaldafny.generated.JSON_Grammar as JSON_Grammar +import smithy_dafny_standard_library.internaldafny.generated.JSON_Serializer_ByteStrConversion as JSON_Serializer_ByteStrConversion +import smithy_dafny_standard_library.internaldafny.generated.JSON_Serializer as JSON_Serializer +import smithy_dafny_standard_library.internaldafny.generated.JSON_Deserializer_Uint16StrConversion as JSON_Deserializer_Uint16StrConversion +import smithy_dafny_standard_library.internaldafny.generated.JSON_Deserializer_ByteStrConversion as JSON_Deserializer_ByteStrConversion +import smithy_dafny_standard_library.internaldafny.generated.JSON_Deserializer as JSON_Deserializer +import smithy_dafny_standard_library.internaldafny.generated.JSON_ConcreteSyntax_Spec as JSON_ConcreteSyntax_Spec +import smithy_dafny_standard_library.internaldafny.generated.JSON_ConcreteSyntax_SpecProperties as JSON_ConcreteSyntax_SpecProperties +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_Serializer as JSON_ZeroCopy_Serializer +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_Deserializer_Core as JSON_ZeroCopy_Deserializer_Core +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_Deserializer_Strings as JSON_ZeroCopy_Deserializer_Strings +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_Deserializer_Numbers as JSON_ZeroCopy_Deserializer_Numbers +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_Deserializer_ObjectParams as JSON_ZeroCopy_Deserializer_ObjectParams +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_Deserializer_Objects as JSON_ZeroCopy_Deserializer_Objects +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_Deserializer_ArrayParams as JSON_ZeroCopy_Deserializer_ArrayParams +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_Deserializer_Arrays as JSON_ZeroCopy_Deserializer_Arrays +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_Deserializer_Constants as JSON_ZeroCopy_Deserializer_Constants +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_Deserializer_Values as JSON_ZeroCopy_Deserializer_Values +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_Deserializer_API as JSON_ZeroCopy_Deserializer_API +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_Deserializer as JSON_ZeroCopy_Deserializer +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_API as JSON_ZeroCopy_API +import smithy_dafny_standard_library.internaldafny.generated.JSON_API as JSON_API +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.JSONHelpers as JSONHelpers +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.KeyDescription as KeyDescription +import smithy_dafny_standard_library.internaldafny.generated.HexStrings as HexStrings +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.KeyMaterial as KeyMaterial +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.CreateStaticKeyrings as CreateStaticKeyrings +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.CreateStaticKeyStores as CreateStaticKeyStores +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.KeyringFromKeyDescription as KeyringFromKeyDescription +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.CmmFromKeyDescription as CmmFromKeyDescription +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.WrappedMaterialProviders as WrappedMaterialProviders +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.KeysVectorOperations as KeysVectorOperations +import smithy_dafny_standard_library.internaldafny.generated.FileIO as FileIO +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.KeyVectors as KeyVectors +import aws_encryption_sdk.internaldafny.generated.AwsCryptographyEncryptionSdkTypes as AwsCryptographyEncryptionSdkTypes +import smithy_dafny_standard_library.internaldafny.generated.Streams as Streams +import aws_encryption_sdk.internaldafny.generated.SerializableTypes as SerializableTypes +import aws_encryption_sdk.internaldafny.generated.SerializeFunctions as SerializeFunctions +import aws_encryption_sdk.internaldafny.generated.EncryptionContext as EncryptionContext +import aws_encryption_sdk.internaldafny.generated.HeaderTypes as HeaderTypes +import aws_encryption_sdk.internaldafny.generated.SharedHeaderFunctions as SharedHeaderFunctions +import aws_encryption_sdk.internaldafny.generated.EncryptedDataKeys as EncryptedDataKeys +import aws_encryption_sdk.internaldafny.generated.V1HeaderBody as V1HeaderBody +import aws_encryption_sdk.internaldafny.generated.V2HeaderBody as V2HeaderBody +import aws_encryption_sdk.internaldafny.generated.HeaderAuth as HeaderAuth +import aws_encryption_sdk.internaldafny.generated.Header as Header +import aws_encryption_sdk.internaldafny.generated.Frames as Frames +import aws_encryption_sdk.internaldafny.generated.MessageBody as MessageBody +import aws_encryption_sdk.internaldafny.generated.KeyDerivation as KeyDerivation +import aws_encryption_sdk.internaldafny.generated.EncryptDecryptHelpers as EncryptDecryptHelpers +import aws_encryption_sdk.internaldafny.generated.AwsEncryptionSdkOperations as AwsEncryptionSdkOperations +import aws_encryption_sdk.internaldafny.generated.EncryptionSdk as EncryptionSdk +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.MplManifestOptions as MplManifestOptions +import smithy_dafny_standard_library.internaldafny.generated.GetOpt as GetOpt +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllAlgorithmSuites as AllAlgorithmSuites +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.TestVectors as TestVectors +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllHierarchy as AllHierarchy +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllKms as AllKms +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllKmsMrkAware as AllKmsMrkAware +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllKmsMrkAwareDiscovery as AllKmsMrkAwareDiscovery +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllKmsRsa as AllKmsRsa +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllKmsEcdh as AllKmsEcdh +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllRawAES as AllRawAES +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllRawRSA as AllRawRSA +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllRawECDH as AllRawECDH +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllDefaultCmm as AllDefaultCmm +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllRequiredEncryptionContextCmm as AllRequiredEncryptionContextCmm +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllMulti as AllMulti +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.WriteJsonManifests as WriteJsonManifests +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.CompleteVectors as CompleteVectors +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.ParseJsonManifests as ParseJsonManifests +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.TestManifests as TestManifests +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.WrappedMaterialProvidersMain as WrappedMaterialProvidersMain +import aws_cryptography_primitives.internaldafny.generated.AesKdfCtr as AesKdfCtr +import smithy_dafny_standard_library.internaldafny.generated.StandardLibraryInterop as StandardLibraryInterop +import smithy_dafny_standard_library.internaldafny.generated.Sorting as Sorting +import smithy_dafny_standard_library.internaldafny.generated.FloatCompare as FloatCompare +import smithy_dafny_standard_library.internaldafny.generated.ConcurrentCall as ConcurrentCall +import smithy_dafny_standard_library.internaldafny.generated.Base64Lemmas as Base64Lemmas +import aws_encryption_sdk_test_vectors.internaldafny.generated.WrappedESDK as WrappedESDK + +# Module: EsdkManifestOptions + + +class ManifestOptions: + @classmethod + def default(cls, ): + return lambda: ManifestOptions_Decrypt(_dafny.Seq(""), _dafny.Seq(""), Wrappers.Option.default()()) + def __ne__(self, __o: object) -> bool: + return not self.__eq__(__o) + @property + def is_Decrypt(self) -> bool: + return isinstance(self, ManifestOptions_Decrypt) + @property + def is_Encrypt(self) -> bool: + return isinstance(self, ManifestOptions_Encrypt) + @property + def is_DecryptSingle(self) -> bool: + return isinstance(self, ManifestOptions_DecryptSingle) + @property + def is_EncryptManifest(self) -> bool: + return isinstance(self, ManifestOptions_EncryptManifest) + +class ManifestOptions_Decrypt(ManifestOptions, NamedTuple('Decrypt', [('manifestPath', Any), ('manifestFileName', Any), ('testName', Any)])): + def __dafnystr__(self) -> str: + return f'EsdkManifestOptions.ManifestOptions.Decrypt({_dafny.string_of(self.manifestPath)}, {_dafny.string_of(self.manifestFileName)}, {_dafny.string_of(self.testName)})' + def __eq__(self, __o: object) -> bool: + return isinstance(__o, ManifestOptions_Decrypt) and self.manifestPath == __o.manifestPath and self.manifestFileName == __o.manifestFileName and self.testName == __o.testName + def __hash__(self) -> int: + return super().__hash__() + +class ManifestOptions_Encrypt(ManifestOptions, NamedTuple('Encrypt', [('manifestPath', Any), ('manifest', Any), ('decryptManifestOutput', Any), ('testName', Any)])): + def __dafnystr__(self) -> str: + return f'EsdkManifestOptions.ManifestOptions.Encrypt({_dafny.string_of(self.manifestPath)}, {_dafny.string_of(self.manifest)}, {_dafny.string_of(self.decryptManifestOutput)}, {_dafny.string_of(self.testName)})' + def __eq__(self, __o: object) -> bool: + return isinstance(__o, ManifestOptions_Encrypt) and self.manifestPath == __o.manifestPath and self.manifest == __o.manifest and self.decryptManifestOutput == __o.decryptManifestOutput and self.testName == __o.testName + def __hash__(self) -> int: + return super().__hash__() + +class ManifestOptions_DecryptSingle(ManifestOptions, NamedTuple('DecryptSingle', [('keysPath', Any), ('keyDescription', Any), ('base64Bytes', Any)])): + def __dafnystr__(self) -> str: + return f'EsdkManifestOptions.ManifestOptions.DecryptSingle({_dafny.string_of(self.keysPath)}, {_dafny.string_of(self.keyDescription)}, {_dafny.string_of(self.base64Bytes)})' + def __eq__(self, __o: object) -> bool: + return isinstance(__o, ManifestOptions_DecryptSingle) and self.keysPath == __o.keysPath and self.keyDescription == __o.keyDescription and self.base64Bytes == __o.base64Bytes + def __hash__(self) -> int: + return super().__hash__() + +class ManifestOptions_EncryptManifest(ManifestOptions, NamedTuple('EncryptManifest', [('encryptManifestOutput', Any), ('version', Any)])): + def __dafnystr__(self) -> str: + return f'EsdkManifestOptions.ManifestOptions.EncryptManifest({_dafny.string_of(self.encryptManifestOutput)}, {_dafny.string_of(self.version)})' + def __eq__(self, __o: object) -> bool: + return isinstance(__o, ManifestOptions_EncryptManifest) and self.encryptManifestOutput == __o.encryptManifestOutput and self.version == __o.version + def __hash__(self) -> int: + return super().__hash__() + diff --git a/TestVectors/runtimes/python/src/aws_encryption_sdk_test_vectors/internaldafny/generated/EsdkTestManifests.py b/TestVectors/runtimes/python/src/aws_encryption_sdk_test_vectors/internaldafny/generated/EsdkTestManifests.py new file mode 100644 index 000000000..dcc58de4a --- /dev/null +++ b/TestVectors/runtimes/python/src/aws_encryption_sdk_test_vectors/internaldafny/generated/EsdkTestManifests.py @@ -0,0 +1,633 @@ +import sys +from typing import Callable, Any, TypeVar, NamedTuple +from math import floor +from itertools import count + +import aws_encryption_sdk_test_vectors.internaldafny.generated.module_ as module_ +import _dafny as _dafny +import System_ as System_ +import smithy_dafny_standard_library.internaldafny.generated.Wrappers as Wrappers +import smithy_dafny_standard_library.internaldafny.generated.BoundedInts as BoundedInts +import smithy_dafny_standard_library.internaldafny.generated.StandardLibrary_UInt as StandardLibrary_UInt +import smithy_dafny_standard_library.internaldafny.generated.StandardLibrary_Sequence as StandardLibrary_Sequence +import smithy_dafny_standard_library.internaldafny.generated.StandardLibrary_String as StandardLibrary_String +import smithy_dafny_standard_library.internaldafny.generated.StandardLibrary as StandardLibrary +import smithy_dafny_standard_library.internaldafny.generated.UTF8 as UTF8 +import aws_cryptography_primitives.internaldafny.generated.AwsCryptographyPrimitivesTypes as AwsCryptographyPrimitivesTypes +import aws_cryptography_primitives.internaldafny.generated.ExternRandom as ExternRandom +import aws_cryptography_primitives.internaldafny.generated.Random as Random +import aws_cryptography_primitives.internaldafny.generated.AESEncryption as AESEncryption +import aws_cryptography_primitives.internaldafny.generated.ExternDigest as ExternDigest +import aws_cryptography_primitives.internaldafny.generated.Digest as Digest +import aws_cryptography_primitives.internaldafny.generated.HMAC as HMAC +import aws_cryptography_primitives.internaldafny.generated.WrappedHMAC as WrappedHMAC +import aws_cryptography_primitives.internaldafny.generated.HKDF as HKDF +import aws_cryptography_primitives.internaldafny.generated.WrappedHKDF as WrappedHKDF +import aws_cryptography_primitives.internaldafny.generated.Signature as Signature +import aws_cryptography_primitives.internaldafny.generated.KdfCtr as KdfCtr +import aws_cryptography_primitives.internaldafny.generated.RSAEncryption as RSAEncryption +import aws_cryptography_primitives.internaldafny.generated.ECDH as ECDH +import aws_cryptography_primitives.internaldafny.generated.AwsCryptographyPrimitivesOperations as AwsCryptographyPrimitivesOperations +import aws_cryptography_primitives.internaldafny.generated.AtomicPrimitives as AtomicPrimitives +import aws_cryptography_internal_dynamodb.internaldafny.generated.ComAmazonawsDynamodbTypes as ComAmazonawsDynamodbTypes +import aws_cryptography_internal_kms.internaldafny.generated.ComAmazonawsKmsTypes as ComAmazonawsKmsTypes +import aws_cryptographic_material_providers.internaldafny.generated.AwsCryptographyKeyStoreTypes as AwsCryptographyKeyStoreTypes +import aws_cryptographic_material_providers.internaldafny.generated.AwsCryptographyMaterialProvidersTypes as AwsCryptographyMaterialProvidersTypes +import smithy_dafny_standard_library.internaldafny.generated.Base64 as Base64 +import aws_cryptographic_material_providers.internaldafny.generated.AlgorithmSuites as AlgorithmSuites +import aws_cryptographic_material_providers.internaldafny.generated.Materials as Materials +import aws_cryptographic_material_providers.internaldafny.generated.Keyring as Keyring +import smithy_dafny_standard_library.internaldafny.generated.Relations as Relations +import smithy_dafny_standard_library.internaldafny.generated.Seq_MergeSort as Seq_MergeSort +import smithy_dafny_standard_library.internaldafny.generated.Math as Math +import smithy_dafny_standard_library.internaldafny.generated.Seq as Seq +import aws_cryptographic_material_providers.internaldafny.generated.MultiKeyring as MultiKeyring +import aws_cryptographic_material_providers.internaldafny.generated.AwsArnParsing as AwsArnParsing +import aws_cryptographic_material_providers.internaldafny.generated.AwsKmsMrkAreUnique as AwsKmsMrkAreUnique +import smithy_dafny_standard_library.internaldafny.generated.Actions as Actions +import aws_cryptographic_material_providers.internaldafny.generated.AwsKmsMrkMatchForDecrypt as AwsKmsMrkMatchForDecrypt +import aws_cryptographic_material_providers.internaldafny.generated.AwsKmsUtils as AwsKmsUtils +import aws_cryptographic_material_providers.internaldafny.generated.Constants as Constants +import smithy_dafny_standard_library.internaldafny.generated.UUID as UUID +import aws_cryptographic_material_providers.internaldafny.generated.MaterialWrapping as MaterialWrapping +import smithy_dafny_standard_library.internaldafny.generated.SortedSets as SortedSets +import aws_cryptographic_material_providers.internaldafny.generated.CanonicalEncryptionContext as CanonicalEncryptionContext +import aws_cryptographic_material_providers.internaldafny.generated.IntermediateKeyWrapping as IntermediateKeyWrapping +import aws_cryptographic_material_providers.internaldafny.generated.EdkWrapping as EdkWrapping +import aws_cryptographic_material_providers.internaldafny.generated.ErrorMessages as ErrorMessages +import aws_cryptographic_material_providers.internaldafny.generated.AwsKmsKeyring as AwsKmsKeyring +import aws_cryptographic_material_providers.internaldafny.generated.StrictMultiKeyring as StrictMultiKeyring +import aws_cryptographic_material_providers.internaldafny.generated.AwsKmsDiscoveryKeyring as AwsKmsDiscoveryKeyring +import aws_cryptography_internal_kms.internaldafny.generated.Com_Amazonaws_Kms as Com_Amazonaws_Kms +import aws_cryptography_internal_dynamodb.internaldafny.generated.Com_Amazonaws_Dynamodb as Com_Amazonaws_Dynamodb +import aws_cryptographic_material_providers.internaldafny.generated.DiscoveryMultiKeyring as DiscoveryMultiKeyring +import aws_cryptographic_material_providers.internaldafny.generated.AwsKmsMrkDiscoveryKeyring as AwsKmsMrkDiscoveryKeyring +import aws_cryptographic_material_providers.internaldafny.generated.MrkAwareDiscoveryMultiKeyring as MrkAwareDiscoveryMultiKeyring +import aws_cryptographic_material_providers.internaldafny.generated.AwsKmsMrkKeyring as AwsKmsMrkKeyring +import aws_cryptographic_material_providers.internaldafny.generated.MrkAwareStrictMultiKeyring as MrkAwareStrictMultiKeyring +import smithy_dafny_standard_library.internaldafny.generated.DafnyLibraries as DafnyLibraries +import smithy_dafny_standard_library.internaldafny.generated.Time as Time +import aws_cryptographic_material_providers.internaldafny.generated.LocalCMC as LocalCMC +import aws_cryptographic_material_providers.internaldafny.generated.SynchronizedLocalCMC as SynchronizedLocalCMC +import aws_cryptographic_material_providers.internaldafny.generated.StormTracker as StormTracker +import aws_cryptographic_material_providers.internaldafny.generated.StormTrackingCMC as StormTrackingCMC +import aws_cryptographic_material_providers.internaldafny.generated.CacheConstants as CacheConstants +import aws_cryptographic_material_providers.internaldafny.generated.AwsKmsHierarchicalKeyring as AwsKmsHierarchicalKeyring +import aws_cryptographic_material_providers.internaldafny.generated.AwsKmsRsaKeyring as AwsKmsRsaKeyring +import aws_cryptographic_material_providers.internaldafny.generated.EcdhEdkWrapping as EcdhEdkWrapping +import aws_cryptographic_material_providers.internaldafny.generated.RawECDHKeyring as RawECDHKeyring +import aws_cryptographic_material_providers.internaldafny.generated.AwsKmsEcdhKeyring as AwsKmsEcdhKeyring +import aws_cryptographic_material_providers.internaldafny.generated.RawAESKeyring as RawAESKeyring +import aws_cryptographic_material_providers.internaldafny.generated.RawRSAKeyring as RawRSAKeyring +import aws_cryptographic_material_providers.internaldafny.generated.CMM as CMM +import aws_cryptographic_material_providers.internaldafny.generated.Defaults as Defaults +import aws_cryptographic_material_providers.internaldafny.generated.Commitment as Commitment +import aws_cryptographic_material_providers.internaldafny.generated.DefaultCMM as DefaultCMM +import aws_cryptographic_material_providers.internaldafny.generated.DefaultClientSupplier as DefaultClientSupplier +import aws_cryptographic_material_providers.internaldafny.generated.Utils as Utils +import aws_cryptographic_material_providers.internaldafny.generated.RequiredEncryptionContextCMM as RequiredEncryptionContextCMM +import aws_cryptographic_material_providers.internaldafny.generated.AwsCryptographyMaterialProvidersOperations as AwsCryptographyMaterialProvidersOperations +import aws_cryptographic_material_providers.internaldafny.generated.MaterialProviders as MaterialProviders +import aws_cryptographic_material_providers.internaldafny.generated.KeyStoreErrorMessages as KeyStoreErrorMessages +import aws_cryptographic_material_providers.internaldafny.generated.KmsArn as KmsArn +import aws_cryptographic_material_providers.internaldafny.generated.Structure as Structure +import aws_cryptographic_material_providers.internaldafny.generated.KMSKeystoreOperations as KMSKeystoreOperations +import aws_cryptographic_material_providers.internaldafny.generated.DDBKeystoreOperations as DDBKeystoreOperations +import aws_cryptographic_material_providers.internaldafny.generated.CreateKeys as CreateKeys +import aws_cryptographic_material_providers.internaldafny.generated.CreateKeyStoreTable as CreateKeyStoreTable +import aws_cryptographic_material_providers.internaldafny.generated.GetKeys as GetKeys +import aws_cryptographic_material_providers.internaldafny.generated.AwsCryptographyKeyStoreOperations as AwsCryptographyKeyStoreOperations +import aws_cryptographic_material_providers.internaldafny.generated.KeyStore as KeyStore +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AwsCryptographyMaterialProvidersTestVectorKeysTypes as AwsCryptographyMaterialProvidersTestVectorKeysTypes +import smithy_dafny_standard_library.internaldafny.generated.JSON_Utils_Views_Core as JSON_Utils_Views_Core +import smithy_dafny_standard_library.internaldafny.generated.JSON_Utils_Views_Writers as JSON_Utils_Views_Writers +import smithy_dafny_standard_library.internaldafny.generated.JSON_Utils_Lexers_Core as JSON_Utils_Lexers_Core +import smithy_dafny_standard_library.internaldafny.generated.JSON_Utils_Lexers_Strings as JSON_Utils_Lexers_Strings +import smithy_dafny_standard_library.internaldafny.generated.JSON_Utils_Cursors as JSON_Utils_Cursors +import smithy_dafny_standard_library.internaldafny.generated.JSON_Utils_Parsers as JSON_Utils_Parsers +import smithy_dafny_standard_library.internaldafny.generated.GeneralInternals as GeneralInternals +import smithy_dafny_standard_library.internaldafny.generated.MulInternalsNonlinear as MulInternalsNonlinear +import smithy_dafny_standard_library.internaldafny.generated.MulInternals as MulInternals +import smithy_dafny_standard_library.internaldafny.generated.Mul as Mul +import smithy_dafny_standard_library.internaldafny.generated.ModInternalsNonlinear as ModInternalsNonlinear +import smithy_dafny_standard_library.internaldafny.generated.DivInternalsNonlinear as DivInternalsNonlinear +import smithy_dafny_standard_library.internaldafny.generated.ModInternals as ModInternals +import smithy_dafny_standard_library.internaldafny.generated.DivInternals as DivInternals +import smithy_dafny_standard_library.internaldafny.generated.DivMod as DivMod +import smithy_dafny_standard_library.internaldafny.generated.Power as Power +import smithy_dafny_standard_library.internaldafny.generated.Logarithm as Logarithm +import smithy_dafny_standard_library.internaldafny.generated.JSON_Utils_Str_CharStrConversion as JSON_Utils_Str_CharStrConversion +import smithy_dafny_standard_library.internaldafny.generated.JSON_Utils_Str_CharStrEscaping as JSON_Utils_Str_CharStrEscaping +import smithy_dafny_standard_library.internaldafny.generated.JSON_Utils_Str as JSON_Utils_Str +import smithy_dafny_standard_library.internaldafny.generated.JSON_Utils_Seq as JSON_Utils_Seq +import smithy_dafny_standard_library.internaldafny.generated.JSON_Utils_Vectors as JSON_Utils_Vectors +import smithy_dafny_standard_library.internaldafny.generated.JSON_Errors as JSON_Errors +import smithy_dafny_standard_library.internaldafny.generated.JSON_Values as JSON_Values +import smithy_dafny_standard_library.internaldafny.generated.Unicode as Unicode +import smithy_dafny_standard_library.internaldafny.generated.Functions as Functions +import smithy_dafny_standard_library.internaldafny.generated.Utf8EncodingForm as Utf8EncodingForm +import smithy_dafny_standard_library.internaldafny.generated.Utf16EncodingForm as Utf16EncodingForm +import smithy_dafny_standard_library.internaldafny.generated.UnicodeStrings as UnicodeStrings +import smithy_dafny_standard_library.internaldafny.generated.JSON_Spec as JSON_Spec +import smithy_dafny_standard_library.internaldafny.generated.JSON_Grammar as JSON_Grammar +import smithy_dafny_standard_library.internaldafny.generated.JSON_Serializer_ByteStrConversion as JSON_Serializer_ByteStrConversion +import smithy_dafny_standard_library.internaldafny.generated.JSON_Serializer as JSON_Serializer +import smithy_dafny_standard_library.internaldafny.generated.JSON_Deserializer_Uint16StrConversion as JSON_Deserializer_Uint16StrConversion +import smithy_dafny_standard_library.internaldafny.generated.JSON_Deserializer_ByteStrConversion as JSON_Deserializer_ByteStrConversion +import smithy_dafny_standard_library.internaldafny.generated.JSON_Deserializer as JSON_Deserializer +import smithy_dafny_standard_library.internaldafny.generated.JSON_ConcreteSyntax_Spec as JSON_ConcreteSyntax_Spec +import smithy_dafny_standard_library.internaldafny.generated.JSON_ConcreteSyntax_SpecProperties as JSON_ConcreteSyntax_SpecProperties +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_Serializer as JSON_ZeroCopy_Serializer +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_Deserializer_Core as JSON_ZeroCopy_Deserializer_Core +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_Deserializer_Strings as JSON_ZeroCopy_Deserializer_Strings +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_Deserializer_Numbers as JSON_ZeroCopy_Deserializer_Numbers +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_Deserializer_ObjectParams as JSON_ZeroCopy_Deserializer_ObjectParams +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_Deserializer_Objects as JSON_ZeroCopy_Deserializer_Objects +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_Deserializer_ArrayParams as JSON_ZeroCopy_Deserializer_ArrayParams +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_Deserializer_Arrays as JSON_ZeroCopy_Deserializer_Arrays +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_Deserializer_Constants as JSON_ZeroCopy_Deserializer_Constants +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_Deserializer_Values as JSON_ZeroCopy_Deserializer_Values +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_Deserializer_API as JSON_ZeroCopy_Deserializer_API +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_Deserializer as JSON_ZeroCopy_Deserializer +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_API as JSON_ZeroCopy_API +import smithy_dafny_standard_library.internaldafny.generated.JSON_API as JSON_API +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.JSONHelpers as JSONHelpers +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.KeyDescription as KeyDescription +import smithy_dafny_standard_library.internaldafny.generated.HexStrings as HexStrings +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.KeyMaterial as KeyMaterial +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.CreateStaticKeyrings as CreateStaticKeyrings +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.CreateStaticKeyStores as CreateStaticKeyStores +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.KeyringFromKeyDescription as KeyringFromKeyDescription +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.CmmFromKeyDescription as CmmFromKeyDescription +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.WrappedMaterialProviders as WrappedMaterialProviders +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.KeysVectorOperations as KeysVectorOperations +import smithy_dafny_standard_library.internaldafny.generated.FileIO as FileIO +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.KeyVectors as KeyVectors +import aws_encryption_sdk.internaldafny.generated.AwsCryptographyEncryptionSdkTypes as AwsCryptographyEncryptionSdkTypes +import smithy_dafny_standard_library.internaldafny.generated.Streams as Streams +import aws_encryption_sdk.internaldafny.generated.SerializableTypes as SerializableTypes +import aws_encryption_sdk.internaldafny.generated.SerializeFunctions as SerializeFunctions +import aws_encryption_sdk.internaldafny.generated.EncryptionContext as EncryptionContext +import aws_encryption_sdk.internaldafny.generated.HeaderTypes as HeaderTypes +import aws_encryption_sdk.internaldafny.generated.SharedHeaderFunctions as SharedHeaderFunctions +import aws_encryption_sdk.internaldafny.generated.EncryptedDataKeys as EncryptedDataKeys +import aws_encryption_sdk.internaldafny.generated.V1HeaderBody as V1HeaderBody +import aws_encryption_sdk.internaldafny.generated.V2HeaderBody as V2HeaderBody +import aws_encryption_sdk.internaldafny.generated.HeaderAuth as HeaderAuth +import aws_encryption_sdk.internaldafny.generated.Header as Header +import aws_encryption_sdk.internaldafny.generated.Frames as Frames +import aws_encryption_sdk.internaldafny.generated.MessageBody as MessageBody +import aws_encryption_sdk.internaldafny.generated.KeyDerivation as KeyDerivation +import aws_encryption_sdk.internaldafny.generated.EncryptDecryptHelpers as EncryptDecryptHelpers +import aws_encryption_sdk.internaldafny.generated.AwsEncryptionSdkOperations as AwsEncryptionSdkOperations +import aws_encryption_sdk.internaldafny.generated.EncryptionSdk as EncryptionSdk +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.MplManifestOptions as MplManifestOptions +import smithy_dafny_standard_library.internaldafny.generated.GetOpt as GetOpt +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllAlgorithmSuites as AllAlgorithmSuites +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.TestVectors as TestVectors +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllHierarchy as AllHierarchy +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllKms as AllKms +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllKmsMrkAware as AllKmsMrkAware +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllKmsMrkAwareDiscovery as AllKmsMrkAwareDiscovery +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllKmsRsa as AllKmsRsa +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllKmsEcdh as AllKmsEcdh +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllRawAES as AllRawAES +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllRawRSA as AllRawRSA +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllRawECDH as AllRawECDH +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllDefaultCmm as AllDefaultCmm +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllRequiredEncryptionContextCmm as AllRequiredEncryptionContextCmm +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllMulti as AllMulti +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.WriteJsonManifests as WriteJsonManifests +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.CompleteVectors as CompleteVectors +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.ParseJsonManifests as ParseJsonManifests +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.TestManifests as TestManifests +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.WrappedMaterialProvidersMain as WrappedMaterialProvidersMain +import aws_cryptography_primitives.internaldafny.generated.AesKdfCtr as AesKdfCtr +import smithy_dafny_standard_library.internaldafny.generated.StandardLibraryInterop as StandardLibraryInterop +import smithy_dafny_standard_library.internaldafny.generated.Sorting as Sorting +import smithy_dafny_standard_library.internaldafny.generated.FloatCompare as FloatCompare +import smithy_dafny_standard_library.internaldafny.generated.ConcurrentCall as ConcurrentCall +import smithy_dafny_standard_library.internaldafny.generated.Base64Lemmas as Base64Lemmas +import aws_encryption_sdk_test_vectors.internaldafny.generated.WrappedESDK as WrappedESDK +import aws_encryption_sdk_test_vectors.internaldafny.generated.EsdkManifestOptions as EsdkManifestOptions +import aws_encryption_sdk_test_vectors.internaldafny.generated.EsdkTestVectors as EsdkTestVectors +import aws_encryption_sdk_test_vectors.internaldafny.generated.AllEsdkV4NoReqEc as AllEsdkV4NoReqEc +import aws_encryption_sdk_test_vectors.internaldafny.generated.AllEsdkV4WithReqEc as AllEsdkV4WithReqEc +import aws_encryption_sdk_test_vectors.internaldafny.generated.WriteEsdkJsonManifests as WriteEsdkJsonManifests +import aws_encryption_sdk_test_vectors.internaldafny.generated.WriteVectors as WriteVectors +import aws_encryption_sdk_test_vectors.internaldafny.generated.ParseEsdkJsonManifest as ParseEsdkJsonManifest + +# Module: EsdkTestManifests + +class default__: + def __init__(self): + pass + + @staticmethod + def StartDecryptVectors(op): + output: Wrappers.Result = Wrappers.Result.default(_dafny.Seq)() + d_0_valueOrError0_: Wrappers.Result = None + out0_: Wrappers.Result + out0_ = default__.GetManifest((op).manifestPath, (op).manifestFileName) + d_0_valueOrError0_ = out0_ + if not(not((d_0_valueOrError0_).IsFailure())): + raise _dafny.HaltException("dafny/TestVectors/src/EsdkTestManifests.dfy(40,27): " + _dafny.string_of(d_0_valueOrError0_)) + d_1_decryptManifest_: ManifestData + d_1_decryptManifest_ = (d_0_valueOrError0_).Extract() + d_2_valueOrError1_: Wrappers.Outcome = Wrappers.Outcome.default()() + d_2_valueOrError1_ = Wrappers.default__.Need((d_1_decryptManifest_).is_DecryptManifest, _dafny.Seq("Not a decrypt manifest")) + if (d_2_valueOrError1_).IsFailure(): + output = (d_2_valueOrError1_).PropagateFailure() + return output + d_3_valueOrError2_: Wrappers.Result = Wrappers.Result.default(_dafny.Seq)() + d_3_valueOrError2_ = ParseEsdkJsonManifest.default__.BuildDecryptTestVector(op, (d_1_decryptManifest_).version, (d_1_decryptManifest_).keys, (d_1_decryptManifest_).jsonTests) + if (d_3_valueOrError2_).IsFailure(): + output = (d_3_valueOrError2_).PropagateFailure() + return output + d_4_decryptVectors_: _dafny.Seq + d_4_decryptVectors_ = (d_3_valueOrError2_).Extract() + out1_: Wrappers.Result + out1_ = default__.TestDecrypts((d_1_decryptManifest_).keys, d_4_decryptVectors_) + output = out1_ + return output + + @staticmethod + def TestDecryptVector_q(v): + return (True) and (((v).decryptionMethod).is_OneShot) + + @staticmethod + def TestDecrypts(keys, vectors): + manifest: Wrappers.Result = Wrappers.Result.default(_dafny.Seq)() + _dafny.print(_dafny.string_of(_dafny.Seq("\n=================== Starting "))) + _dafny.print(_dafny.string_of(len(vectors))) + _dafny.print(_dafny.string_of(_dafny.Seq(" Decrypt Tests =================== \n\n"))) + d_0_hasFailure_: bool + d_0_hasFailure_ = False + d_1_skipped_: int + d_1_skipped_ = 0 + hi0_ = len(vectors) + for d_2_i_ in range(0, hi0_): + d_3_vector_: EsdkTestVectors.EsdkDecryptTestVector + d_3_vector_ = (vectors)[d_2_i_] + if default__.TestDecryptVector_q(d_3_vector_): + d_4_pass_: bool + out0_: bool + out0_ = EsdkTestVectors.default__.TestDecrypt(keys, d_3_vector_) + d_4_pass_ = out0_ + if not(d_4_pass_): + d_0_hasFailure_ = True + elif True: + d_1_skipped_ = (d_1_skipped_) + (1) + _dafny.print(_dafny.string_of(_dafny.Seq("\nSKIP===> "))) + _dafny.print(_dafny.string_of((d_3_vector_).id)) + _dafny.print(_dafny.string_of(_dafny.Seq("\n"))) + _dafny.print(_dafny.string_of(_dafny.Seq("\n=================== Completed "))) + _dafny.print(_dafny.string_of(len(vectors))) + _dafny.print(_dafny.string_of(_dafny.Seq(" Decrypt Tests =================== \n\n"))) + if (0) < (d_1_skipped_): + _dafny.print(_dafny.string_of(_dafny.Seq("Skipped: "))) + _dafny.print(_dafny.string_of(d_1_skipped_)) + _dafny.print(_dafny.string_of(_dafny.Seq("\n"))) + if not(not(d_0_hasFailure_)): + raise _dafny.HaltException("dafny/TestVectors/src/EsdkTestManifests.dfy(92,4): " + _dafny.string_of(_dafny.Seq("expectation violation"))) + manifest = Wrappers.Result_Success(_dafny.Seq([])) + return manifest + + @staticmethod + def StartEncryptVectors(op): + output: Wrappers.Result = Wrappers.Result.default(_dafny.defaults.tuple())() + d_0_valueOrError0_: Wrappers.Result = None + out0_: Wrappers.Result + out0_ = default__.GetManifest((op).manifestPath, (op).manifest) + d_0_valueOrError0_ = out0_ + if (d_0_valueOrError0_).IsFailure(): + output = (d_0_valueOrError0_).PropagateFailure() + return output + d_1_encryptManifest_: ManifestData + d_1_encryptManifest_ = (d_0_valueOrError0_).Extract() + d_2_valueOrError1_: Wrappers.Outcome = Wrappers.Outcome.default()() + d_2_valueOrError1_ = Wrappers.default__.Need((d_1_encryptManifest_).is_EncryptManifest, _dafny.Seq("Not a encrypt manifest")) + if (d_2_valueOrError1_).IsFailure(): + output = (d_2_valueOrError1_).PropagateFailure() + return output + d_3_valueOrError2_: Wrappers.Result = Wrappers.Result.default(_dafny.Seq)() + d_3_valueOrError2_ = ParseEsdkJsonManifest.default__.BuildEncryptTestVector(op, (d_1_encryptManifest_).version, (d_1_encryptManifest_).keys, (d_1_encryptManifest_).jsonTests) + if (d_3_valueOrError2_).IsFailure(): + output = (d_3_valueOrError2_).PropagateFailure() + return output + d_4_encryptVectors_: _dafny.Seq + d_4_encryptVectors_ = (d_3_valueOrError2_).Extract() + d_5_valueOrError3_: Wrappers.Result = None + out1_: Wrappers.Result + out1_ = AtomicPrimitives.default__.AtomicPrimitives(AtomicPrimitives.default__.DefaultCryptoConfig()) + d_5_valueOrError3_ = out1_ + if not(not((d_5_valueOrError3_).IsFailure())): + raise _dafny.HaltException("dafny/TestVectors/src/EsdkTestManifests.dfy(114,13): " + _dafny.string_of(d_5_valueOrError3_)) + d_6_p_: AtomicPrimitives.AtomicPrimitivesClient + d_6_p_ = (d_5_valueOrError3_).Extract() + d_7_plaintext_: _dafny.Map + d_7_plaintext_ = _dafny.Map({}) + hi0_ = len((d_1_encryptManifest_).plaintext) + for d_8_i_ in range(0, hi0_): + let_tmp_rhs0_ = ((d_1_encryptManifest_).plaintext)[d_8_i_] + d_9_name_ = let_tmp_rhs0_[0] + d_10_length_ = let_tmp_rhs0_[1] + d_11_valueOrError4_: Wrappers.Result = Wrappers.Result.default(_dafny.Seq)() + out2_: Wrappers.Result + out2_ = (d_6_p_).GenerateRandomBytes(AwsCryptographyPrimitivesTypes.GenerateRandomBytesInput_GenerateRandomBytesInput(d_10_length_)) + d_11_valueOrError4_ = out2_ + if not(not((d_11_valueOrError4_).IsFailure())): + raise _dafny.HaltException("dafny/TestVectors/src/EsdkTestManifests.dfy(119,18): " + _dafny.string_of(d_11_valueOrError4_)) + d_12_data_: _dafny.Seq + d_12_data_ = (d_11_valueOrError4_).Extract() + _dafny.print(_dafny.string_of((((op).decryptManifestOutput) + (EsdkTestVectors.default__.plaintextPathRoot)) + (d_9_name_))) + _dafny.print(_dafny.string_of(_dafny.Seq("\n\n"))) + d_13_valueOrError5_: Wrappers.Result = Wrappers.Result.default(_dafny.defaults.tuple())() + out3_: Wrappers.Result + out3_ = EsdkTestVectors.default__.WriteVectorsFile((((op).decryptManifestOutput) + (EsdkTestVectors.default__.plaintextPathRoot)) + (d_9_name_), d_12_data_) + d_13_valueOrError5_ = out3_ + if (d_13_valueOrError5_).IsFailure(): + output = (d_13_valueOrError5_).PropagateFailure() + return output + d_14___v0_: tuple + d_14___v0_ = (d_13_valueOrError5_).Extract() + d_7_plaintext_ = (d_7_plaintext_) | (_dafny.Map({d_9_name_: d_12_data_})) + d_15_encryptTests_q_: Wrappers.Result + out4_: Wrappers.Result + out4_ = default__.ToEncryptTests((d_1_encryptManifest_).keys, d_4_encryptVectors_) + d_15_encryptTests_q_ = out4_ + d_16_valueOrError6_: Wrappers.Result = Wrappers.Result.default(_dafny.Seq)() + def lambda0_(d_17_e_): + def iife0_(_pat_let6_0): + def iife1_(d_18___v1_): + return _dafny.Seq("Cmm failure") + return iife1_(_pat_let6_0) + return iife0_(EsdkTestVectors.default__.MplVectorPrintErr(d_17_e_)) + + d_16_valueOrError6_ = (d_15_encryptTests_q_).MapFailure(lambda0_) + if (d_16_valueOrError6_).IsFailure(): + output = (d_16_valueOrError6_).PropagateFailure() + return output + d_19_encryptTests_: _dafny.Seq + d_19_encryptTests_ = (d_16_valueOrError6_).Extract() + d_20_valueOrError7_: Wrappers.Result = Wrappers.Result.default(_dafny.Seq)() + out5_: Wrappers.Result + out5_ = default__.TestEncrypts(d_7_plaintext_, (d_1_encryptManifest_).keys, d_19_encryptTests_) + d_20_valueOrError7_ = out5_ + if (d_20_valueOrError7_).IsFailure(): + output = (d_20_valueOrError7_).PropagateFailure() + return output + d_21_decryptVectors_: _dafny.Seq + d_21_decryptVectors_ = (d_20_valueOrError7_).Extract() + d_22_valueOrError8_: Wrappers.Result = Wrappers.Result.default(_dafny.defaults.tuple())() + out6_: Wrappers.Result + out6_ = WriteVectors.default__.WriteDecryptManifest(op, (d_1_encryptManifest_).keys, d_21_decryptVectors_) + d_22_valueOrError8_ = out6_ + if (d_22_valueOrError8_).IsFailure(): + output = (d_22_valueOrError8_).PropagateFailure() + return output + d_23___v2_: tuple + d_23___v2_ = (d_22_valueOrError8_).Extract() + output = Wrappers.Result_Success(()) + return output + + @staticmethod + def TestEncryptVector_q(vector): + return (True) and (not (((vector).frameLength).is_Some) or (AwsCryptographyEncryptionSdkTypes.default__.IsValid__FrameLength(((vector).frameLength).value))) + + @staticmethod + def ToEncryptTests(keys, vectors): + output: Wrappers.Result = Wrappers.Result.default(_dafny.Seq)() + d_0_encryptTests_: _dafny.Seq + d_0_encryptTests_ = _dafny.Seq([]) + hi0_ = len(vectors) + for d_1_i_ in range(0, hi0_): + d_2_valueOrError0_: Wrappers.Result = None + out0_: Wrappers.Result + out0_ = EsdkTestVectors.default__.EncryptVectorToEncryptTest(keys, (vectors)[d_1_i_]) + d_2_valueOrError0_ = out0_ + if (d_2_valueOrError0_).IsFailure(): + output = (d_2_valueOrError0_).PropagateFailure() + return output + d_3_test_: EsdkTestVectors.EncryptTest + d_3_test_ = (d_2_valueOrError0_).Extract() + d_0_encryptTests_ = (d_0_encryptTests_) + (_dafny.Seq([d_3_test_])) + output = Wrappers.Result_Success(d_0_encryptTests_) + return output + return output + + @staticmethod + def TestEncrypts(plaintexts, keys, tests): + manifest: Wrappers.Result = Wrappers.Result.default(_dafny.Seq)() + _dafny.print(_dafny.string_of(_dafny.Seq("\n=================== Starting "))) + _dafny.print(_dafny.string_of(len(tests))) + _dafny.print(_dafny.string_of(_dafny.Seq(" Encrypt Tests =================== \n\n"))) + d_0_hasFailure_: bool + d_0_hasFailure_ = False + d_1_decryptVectors_: _dafny.Seq + d_1_decryptVectors_ = _dafny.Seq([]) + d_2_skipped_: _dafny.Seq + d_2_skipped_ = _dafny.Seq([]) + hi0_ = len(tests) + for d_3_i_ in range(0, hi0_): + d_4_test_: EsdkTestVectors.EncryptTest + d_4_test_ = (tests)[d_3_i_] + d_5_valueOrError0_: Wrappers.Outcome = Wrappers.Outcome.default()() + d_5_valueOrError0_ = Wrappers.default__.Need((((d_4_test_).vector).id).is_Some, _dafny.Seq("Vector is missing uuid")) + if (d_5_valueOrError0_).IsFailure(): + manifest = (d_5_valueOrError0_).PropagateFailure() + return manifest + if default__.TestEncryptVector_q((d_4_test_).vector): + d_6_valueOrError1_: Wrappers.Outcome = Wrappers.Outcome.default()() + d_6_valueOrError1_ = Wrappers.default__.Need(((((d_4_test_).vector).algorithmSuiteId).is_Some) and ((((((d_4_test_).vector).algorithmSuiteId).value).id).is_ESDK), _dafny.Seq("Vector is using an algorithm suite other than ESDK")) + if (d_6_valueOrError1_).IsFailure(): + manifest = (d_6_valueOrError1_).PropagateFailure() + return manifest + d_7_valueOrError2_: Wrappers.Result = Wrappers.Result.default(EsdkTestVectors.EncryptTestOutput.default())() + out0_: Wrappers.Result + out0_ = EsdkTestVectors.default__.TestEncrypt(plaintexts, keys, d_4_test_) + d_7_valueOrError2_ = out0_ + if (d_7_valueOrError2_).IsFailure(): + manifest = (d_7_valueOrError2_).PropagateFailure() + return manifest + d_8_pass_: EsdkTestVectors.EncryptTestOutput + d_8_pass_ = (d_7_valueOrError2_).Extract() + if not((d_8_pass_).output): + d_0_hasFailure_ = True + elif ((d_8_pass_).vector).is_Some: + d_1_decryptVectors_ = (d_1_decryptVectors_) + (_dafny.Seq([((d_8_pass_).vector).value])) + elif True: + d_2_skipped_ = (d_2_skipped_) + (_dafny.Seq([((((d_4_test_).vector).id).value) + (_dafny.Seq("\n"))])) + _dafny.print(_dafny.string_of(_dafny.Seq("\nSKIP===> "))) + _dafny.print(_dafny.string_of((((d_4_test_).vector).id).value)) + _dafny.print(_dafny.string_of(_dafny.Seq("\n"))) + _dafny.print(_dafny.string_of(_dafny.Seq("\n=================== Completed "))) + _dafny.print(_dafny.string_of(len(tests))) + _dafny.print(_dafny.string_of(_dafny.Seq(" Encrypt Tests =================== \n\n"))) + if not(not(d_0_hasFailure_)): + raise _dafny.HaltException("dafny/TestVectors/src/EsdkTestManifests.dfy(215,4): " + _dafny.string_of(_dafny.Seq("expectation violation"))) + manifest = Wrappers.Result_Success(d_1_decryptVectors_) + return manifest + + @staticmethod + def GetManifest(manifestPath, manifestFileName): + manifestData: Wrappers.Result = None + d_0_valueOrError0_: Wrappers.Result = Wrappers.Result.default(_dafny.Seq)() + out0_: Wrappers.Result + out0_ = FileIO.default__.ReadBytesFromFile((manifestPath) + (manifestFileName)) + d_0_valueOrError0_ = out0_ + if (d_0_valueOrError0_).IsFailure(): + manifestData = (d_0_valueOrError0_).PropagateFailure() + return manifestData + d_1_decryptManifestBv_: _dafny.Seq + d_1_decryptManifestBv_ = (d_0_valueOrError0_).Extract() + d_2_decryptManifestBytes_: _dafny.Seq + d_2_decryptManifestBytes_ = JSONHelpers.default__.BvToBytes(d_1_decryptManifestBv_) + d_3_valueOrError1_: Wrappers.Result = Wrappers.Result.default(JSON_Values.JSON.default())() + def lambda0_(d_4_e_): + return (d_4_e_).ToString() + + d_3_valueOrError1_ = (JSON_API.default__.Deserialize(d_2_decryptManifestBytes_)).MapFailure(lambda0_) + if (d_3_valueOrError1_).IsFailure(): + manifestData = (d_3_valueOrError1_).PropagateFailure() + return manifestData + d_5_manifestJson_: JSON_Values.JSON + d_5_manifestJson_ = (d_3_valueOrError1_).Extract() + d_6_valueOrError2_: Wrappers.Outcome = Wrappers.Outcome.default()() + d_6_valueOrError2_ = Wrappers.default__.Need((d_5_manifestJson_).is_Object, _dafny.Seq("Not a JSON object")) + if (d_6_valueOrError2_).IsFailure(): + manifestData = (d_6_valueOrError2_).PropagateFailure() + return manifestData + d_7_valueOrError3_: Wrappers.Result = Wrappers.Result.default(_dafny.Seq)() + d_7_valueOrError3_ = JSONHelpers.default__.GetObject(_dafny.Seq("manifest"), (d_5_manifestJson_).obj) + if (d_7_valueOrError3_).IsFailure(): + manifestData = (d_7_valueOrError3_).PropagateFailure() + return manifestData + d_8_manifest_: _dafny.Seq + d_8_manifest_ = (d_7_valueOrError3_).Extract() + d_9_valueOrError4_: Wrappers.Result = Wrappers.Result.default(System_.nat.default)() + d_9_valueOrError4_ = JSONHelpers.default__.GetNat(_dafny.Seq("version"), d_8_manifest_) + if (d_9_valueOrError4_).IsFailure(): + manifestData = (d_9_valueOrError4_).PropagateFailure() + return manifestData + d_10_version_: int + d_10_version_ = (d_9_valueOrError4_).Extract() + d_11_valueOrError5_: Wrappers.Result = Wrappers.Result.default(_dafny.Seq)() + d_11_valueOrError5_ = JSONHelpers.default__.GetString(_dafny.Seq("type"), d_8_manifest_) + if (d_11_valueOrError5_).IsFailure(): + manifestData = (d_11_valueOrError5_).PropagateFailure() + return manifestData + d_12_typ_: _dafny.Seq + d_12_typ_ = (d_11_valueOrError5_).Extract() + d_13_valueOrError6_: Wrappers.Result = Wrappers.Result.default(_dafny.Seq)() + d_13_valueOrError6_ = JSONHelpers.default__.GetString(_dafny.Seq("keys"), (d_5_manifestJson_).obj) + if (d_13_valueOrError6_).IsFailure(): + manifestData = (d_13_valueOrError6_).PropagateFailure() + return manifestData + d_14_keyManifestUri_: _dafny.Seq + d_14_keyManifestUri_ = (d_13_valueOrError6_).Extract() + d_15_valueOrError7_: Wrappers.Outcome = Wrappers.Outcome.default()() + d_15_valueOrError7_ = Wrappers.default__.Need((_dafny.Seq("file://")) < (d_14_keyManifestUri_), _dafny.Seq("Unexpected URI prefix")) + if (d_15_valueOrError7_).IsFailure(): + manifestData = (d_15_valueOrError7_).PropagateFailure() + return manifestData + d_16_keyManifestPath_: _dafny.Seq + d_16_keyManifestPath_ = (manifestPath) + (_dafny.Seq((d_14_keyManifestUri_)[7::])) + d_17_valueOrError8_: Wrappers.Result = None + out1_: Wrappers.Result + out1_ = KeyVectors.default__.KeyVectors(AwsCryptographyMaterialProvidersTestVectorKeysTypes.KeyVectorsConfig_KeyVectorsConfig(d_16_keyManifestPath_)) + d_17_valueOrError8_ = out1_ + if not(not((d_17_valueOrError8_).IsFailure())): + raise _dafny.HaltException("dafny/TestVectors/src/EsdkTestManifests.dfy(263,16): " + _dafny.string_of(d_17_valueOrError8_)) + d_18_keys_: KeyVectors.KeyVectorsClient + d_18_keys_ = (d_17_valueOrError8_).Extract() + d_19_valueOrError9_: Wrappers.Result = Wrappers.Result.default(_dafny.Seq)() + d_19_valueOrError9_ = JSONHelpers.default__.GetObject(_dafny.Seq("tests"), (d_5_manifestJson_).obj) + if (d_19_valueOrError9_).IsFailure(): + manifestData = (d_19_valueOrError9_).PropagateFailure() + return manifestData + d_20_jsonTests_: _dafny.Seq + d_20_jsonTests_ = (d_19_valueOrError9_).Extract() + source0_ = d_12_typ_ + with _dafny.label("match0"): + if True: + if (source0_) == (_dafny.Seq("awses-decrypt")): + d_21_valueOrError10_: Wrappers.Outcome = Wrappers.Outcome.default()() + d_21_valueOrError10_ = Wrappers.default__.Need(EsdkTestVectors.default__.SupportedDecryptVersion_q(d_10_version_), _dafny.Seq("Unsupported manifest version")) + if (d_21_valueOrError10_).IsFailure(): + manifestData = (d_21_valueOrError10_).PropagateFailure() + return manifestData + d_22_valueOrError11_: Wrappers.Result = Wrappers.Result.default(JSON_Values.JSON.default())() + d_22_valueOrError11_ = JSONHelpers.default__.Get(_dafny.Seq("client"), (d_5_manifestJson_).obj) + if (d_22_valueOrError11_).IsFailure(): + manifestData = (d_22_valueOrError11_).PropagateFailure() + return manifestData + d_23_client_: JSON_Values.JSON + d_23_client_ = (d_22_valueOrError11_).Extract() + manifestData = Wrappers.Result_Success(ManifestData_DecryptManifest(d_10_version_, d_18_keys_, d_23_client_, d_20_jsonTests_)) + raise _dafny.Break("match0") + if True: + if (source0_) == (_dafny.Seq("awses-encrypt")): + d_24_valueOrError12_: Wrappers.Outcome = Wrappers.Outcome.default()() + d_24_valueOrError12_ = Wrappers.default__.Need(EsdkTestVectors.default__.SupportedEncryptVersion_q(d_10_version_), _dafny.Seq("Unsupported manifest version")) + if (d_24_valueOrError12_).IsFailure(): + manifestData = (d_24_valueOrError12_).PropagateFailure() + return manifestData + d_25_valueOrError13_: Wrappers.Result = Wrappers.Result.default(_dafny.Seq)() + d_25_valueOrError13_ = JSONHelpers.default__.GetObject(_dafny.Seq("plaintexts"), (d_5_manifestJson_).obj) + if (d_25_valueOrError13_).IsFailure(): + manifestData = (d_25_valueOrError13_).PropagateFailure() + return manifestData + d_26_plaintextsJson_: _dafny.Seq + d_26_plaintextsJson_ = (d_25_valueOrError13_).Extract() + d_27_valueOrError15_: Wrappers.Result = Wrappers.Result.default(_dafny.Seq)() + def lambda1_(d_28_obj_): + def iife0_(_pat_let7_0): + def iife1_(d_29_valueOrError14_): + return ((d_29_valueOrError14_).PropagateFailure() if (d_29_valueOrError14_).IsFailure() else Wrappers.Result_Success(((d_28_obj_)[0], (((d_28_obj_)[1]).num).n))) + return iife1_(_pat_let7_0) + return iife0_(Wrappers.default__.Need((((d_28_obj_)[1]).is_Number) and (((0) < ((((d_28_obj_)[1]).num).n)) and (((((d_28_obj_)[1]).num).n) <= (BoundedInts.default__.INT32__MAX))), _dafny.Seq("Size is not a natural number."))) + + d_27_valueOrError15_ = Seq.default__.MapWithResult(lambda1_, d_26_plaintextsJson_) + if (d_27_valueOrError15_).IsFailure(): + manifestData = (d_27_valueOrError15_).PropagateFailure() + return manifestData + d_30_plaintextsLength_: _dafny.Seq + d_30_plaintextsLength_ = (d_27_valueOrError15_).Extract() + manifestData = Wrappers.Result_Success(ManifestData_EncryptManifest(d_10_version_, d_18_keys_, d_30_plaintextsLength_, d_20_jsonTests_)) + raise _dafny.Break("match0") + if True: + manifestData = Wrappers.Result_Failure((_dafny.Seq("Unsupported manifest type:")) + (d_12_typ_)) + pass + return manifestData + + +class ManifestData: + @classmethod + def default(cls, ): + return lambda: ManifestData_DecryptManifest(int(0), None, JSON_Values.JSON.default()(), _dafny.Seq({})) + def __ne__(self, __o: object) -> bool: + return not self.__eq__(__o) + @property + def is_DecryptManifest(self) -> bool: + return isinstance(self, ManifestData_DecryptManifest) + @property + def is_EncryptManifest(self) -> bool: + return isinstance(self, ManifestData_EncryptManifest) + +class ManifestData_DecryptManifest(ManifestData, NamedTuple('DecryptManifest', [('version', Any), ('keys', Any), ('client', Any), ('jsonTests', Any)])): + def __dafnystr__(self) -> str: + return f'EsdkTestManifests.ManifestData.DecryptManifest({_dafny.string_of(self.version)}, {_dafny.string_of(self.keys)}, {_dafny.string_of(self.client)}, {_dafny.string_of(self.jsonTests)})' + def __eq__(self, __o: object) -> bool: + return isinstance(__o, ManifestData_DecryptManifest) and self.version == __o.version and self.keys == __o.keys and self.client == __o.client and self.jsonTests == __o.jsonTests + def __hash__(self) -> int: + return super().__hash__() + +class ManifestData_EncryptManifest(ManifestData, NamedTuple('EncryptManifest', [('version', Any), ('keys', Any), ('plaintext', Any), ('jsonTests', Any)])): + def __dafnystr__(self) -> str: + return f'EsdkTestManifests.ManifestData.EncryptManifest({_dafny.string_of(self.version)}, {_dafny.string_of(self.keys)}, {_dafny.string_of(self.plaintext)}, {_dafny.string_of(self.jsonTests)})' + def __eq__(self, __o: object) -> bool: + return isinstance(__o, ManifestData_EncryptManifest) and self.version == __o.version and self.keys == __o.keys and self.plaintext == __o.plaintext and self.jsonTests == __o.jsonTests + def __hash__(self) -> int: + return super().__hash__() + diff --git a/TestVectors/runtimes/python/src/aws_encryption_sdk_test_vectors/internaldafny/generated/EsdkTestVectors.py b/TestVectors/runtimes/python/src/aws_encryption_sdk_test_vectors/internaldafny/generated/EsdkTestVectors.py new file mode 100644 index 000000000..6baf1da54 --- /dev/null +++ b/TestVectors/runtimes/python/src/aws_encryption_sdk_test_vectors/internaldafny/generated/EsdkTestVectors.py @@ -0,0 +1,780 @@ +import sys +from typing import Callable, Any, TypeVar, NamedTuple +from math import floor +from itertools import count + +import aws_encryption_sdk_test_vectors.internaldafny.generated.module_ as module_ +import _dafny as _dafny +import System_ as System_ +import smithy_dafny_standard_library.internaldafny.generated.Wrappers as Wrappers +import smithy_dafny_standard_library.internaldafny.generated.BoundedInts as BoundedInts +import smithy_dafny_standard_library.internaldafny.generated.StandardLibrary_UInt as StandardLibrary_UInt +import smithy_dafny_standard_library.internaldafny.generated.StandardLibrary_Sequence as StandardLibrary_Sequence +import smithy_dafny_standard_library.internaldafny.generated.StandardLibrary_String as StandardLibrary_String +import smithy_dafny_standard_library.internaldafny.generated.StandardLibrary as StandardLibrary +import smithy_dafny_standard_library.internaldafny.generated.UTF8 as UTF8 +import aws_cryptography_primitives.internaldafny.generated.AwsCryptographyPrimitivesTypes as AwsCryptographyPrimitivesTypes +import aws_cryptography_primitives.internaldafny.generated.ExternRandom as ExternRandom +import aws_cryptography_primitives.internaldafny.generated.Random as Random +import aws_cryptography_primitives.internaldafny.generated.AESEncryption as AESEncryption +import aws_cryptography_primitives.internaldafny.generated.ExternDigest as ExternDigest +import aws_cryptography_primitives.internaldafny.generated.Digest as Digest +import aws_cryptography_primitives.internaldafny.generated.HMAC as HMAC +import aws_cryptography_primitives.internaldafny.generated.WrappedHMAC as WrappedHMAC +import aws_cryptography_primitives.internaldafny.generated.HKDF as HKDF +import aws_cryptography_primitives.internaldafny.generated.WrappedHKDF as WrappedHKDF +import aws_cryptography_primitives.internaldafny.generated.Signature as Signature +import aws_cryptography_primitives.internaldafny.generated.KdfCtr as KdfCtr +import aws_cryptography_primitives.internaldafny.generated.RSAEncryption as RSAEncryption +import aws_cryptography_primitives.internaldafny.generated.ECDH as ECDH +import aws_cryptography_primitives.internaldafny.generated.AwsCryptographyPrimitivesOperations as AwsCryptographyPrimitivesOperations +import aws_cryptography_primitives.internaldafny.generated.AtomicPrimitives as AtomicPrimitives +import aws_cryptography_internal_dynamodb.internaldafny.generated.ComAmazonawsDynamodbTypes as ComAmazonawsDynamodbTypes +import aws_cryptography_internal_kms.internaldafny.generated.ComAmazonawsKmsTypes as ComAmazonawsKmsTypes +import aws_cryptographic_material_providers.internaldafny.generated.AwsCryptographyKeyStoreTypes as AwsCryptographyKeyStoreTypes +import aws_cryptographic_material_providers.internaldafny.generated.AwsCryptographyMaterialProvidersTypes as AwsCryptographyMaterialProvidersTypes +import smithy_dafny_standard_library.internaldafny.generated.Base64 as Base64 +import aws_cryptographic_material_providers.internaldafny.generated.AlgorithmSuites as AlgorithmSuites +import aws_cryptographic_material_providers.internaldafny.generated.Materials as Materials +import aws_cryptographic_material_providers.internaldafny.generated.Keyring as Keyring +import smithy_dafny_standard_library.internaldafny.generated.Relations as Relations +import smithy_dafny_standard_library.internaldafny.generated.Seq_MergeSort as Seq_MergeSort +import smithy_dafny_standard_library.internaldafny.generated.Math as Math +import smithy_dafny_standard_library.internaldafny.generated.Seq as Seq +import aws_cryptographic_material_providers.internaldafny.generated.MultiKeyring as MultiKeyring +import aws_cryptographic_material_providers.internaldafny.generated.AwsArnParsing as AwsArnParsing +import aws_cryptographic_material_providers.internaldafny.generated.AwsKmsMrkAreUnique as AwsKmsMrkAreUnique +import smithy_dafny_standard_library.internaldafny.generated.Actions as Actions +import aws_cryptographic_material_providers.internaldafny.generated.AwsKmsMrkMatchForDecrypt as AwsKmsMrkMatchForDecrypt +import aws_cryptographic_material_providers.internaldafny.generated.AwsKmsUtils as AwsKmsUtils +import aws_cryptographic_material_providers.internaldafny.generated.Constants as Constants +import smithy_dafny_standard_library.internaldafny.generated.UUID as UUID +import aws_cryptographic_material_providers.internaldafny.generated.MaterialWrapping as MaterialWrapping +import smithy_dafny_standard_library.internaldafny.generated.SortedSets as SortedSets +import aws_cryptographic_material_providers.internaldafny.generated.CanonicalEncryptionContext as CanonicalEncryptionContext +import aws_cryptographic_material_providers.internaldafny.generated.IntermediateKeyWrapping as IntermediateKeyWrapping +import aws_cryptographic_material_providers.internaldafny.generated.EdkWrapping as EdkWrapping +import aws_cryptographic_material_providers.internaldafny.generated.ErrorMessages as ErrorMessages +import aws_cryptographic_material_providers.internaldafny.generated.AwsKmsKeyring as AwsKmsKeyring +import aws_cryptographic_material_providers.internaldafny.generated.StrictMultiKeyring as StrictMultiKeyring +import aws_cryptographic_material_providers.internaldafny.generated.AwsKmsDiscoveryKeyring as AwsKmsDiscoveryKeyring +import aws_cryptography_internal_kms.internaldafny.generated.Com_Amazonaws_Kms as Com_Amazonaws_Kms +import aws_cryptography_internal_dynamodb.internaldafny.generated.Com_Amazonaws_Dynamodb as Com_Amazonaws_Dynamodb +import aws_cryptographic_material_providers.internaldafny.generated.DiscoveryMultiKeyring as DiscoveryMultiKeyring +import aws_cryptographic_material_providers.internaldafny.generated.AwsKmsMrkDiscoveryKeyring as AwsKmsMrkDiscoveryKeyring +import aws_cryptographic_material_providers.internaldafny.generated.MrkAwareDiscoveryMultiKeyring as MrkAwareDiscoveryMultiKeyring +import aws_cryptographic_material_providers.internaldafny.generated.AwsKmsMrkKeyring as AwsKmsMrkKeyring +import aws_cryptographic_material_providers.internaldafny.generated.MrkAwareStrictMultiKeyring as MrkAwareStrictMultiKeyring +import smithy_dafny_standard_library.internaldafny.generated.DafnyLibraries as DafnyLibraries +import smithy_dafny_standard_library.internaldafny.generated.Time as Time +import aws_cryptographic_material_providers.internaldafny.generated.LocalCMC as LocalCMC +import aws_cryptographic_material_providers.internaldafny.generated.SynchronizedLocalCMC as SynchronizedLocalCMC +import aws_cryptographic_material_providers.internaldafny.generated.StormTracker as StormTracker +import aws_cryptographic_material_providers.internaldafny.generated.StormTrackingCMC as StormTrackingCMC +import aws_cryptographic_material_providers.internaldafny.generated.CacheConstants as CacheConstants +import aws_cryptographic_material_providers.internaldafny.generated.AwsKmsHierarchicalKeyring as AwsKmsHierarchicalKeyring +import aws_cryptographic_material_providers.internaldafny.generated.AwsKmsRsaKeyring as AwsKmsRsaKeyring +import aws_cryptographic_material_providers.internaldafny.generated.EcdhEdkWrapping as EcdhEdkWrapping +import aws_cryptographic_material_providers.internaldafny.generated.RawECDHKeyring as RawECDHKeyring +import aws_cryptographic_material_providers.internaldafny.generated.AwsKmsEcdhKeyring as AwsKmsEcdhKeyring +import aws_cryptographic_material_providers.internaldafny.generated.RawAESKeyring as RawAESKeyring +import aws_cryptographic_material_providers.internaldafny.generated.RawRSAKeyring as RawRSAKeyring +import aws_cryptographic_material_providers.internaldafny.generated.CMM as CMM +import aws_cryptographic_material_providers.internaldafny.generated.Defaults as Defaults +import aws_cryptographic_material_providers.internaldafny.generated.Commitment as Commitment +import aws_cryptographic_material_providers.internaldafny.generated.DefaultCMM as DefaultCMM +import aws_cryptographic_material_providers.internaldafny.generated.DefaultClientSupplier as DefaultClientSupplier +import aws_cryptographic_material_providers.internaldafny.generated.Utils as Utils +import aws_cryptographic_material_providers.internaldafny.generated.RequiredEncryptionContextCMM as RequiredEncryptionContextCMM +import aws_cryptographic_material_providers.internaldafny.generated.AwsCryptographyMaterialProvidersOperations as AwsCryptographyMaterialProvidersOperations +import aws_cryptographic_material_providers.internaldafny.generated.MaterialProviders as MaterialProviders +import aws_cryptographic_material_providers.internaldafny.generated.KeyStoreErrorMessages as KeyStoreErrorMessages +import aws_cryptographic_material_providers.internaldafny.generated.KmsArn as KmsArn +import aws_cryptographic_material_providers.internaldafny.generated.Structure as Structure +import aws_cryptographic_material_providers.internaldafny.generated.KMSKeystoreOperations as KMSKeystoreOperations +import aws_cryptographic_material_providers.internaldafny.generated.DDBKeystoreOperations as DDBKeystoreOperations +import aws_cryptographic_material_providers.internaldafny.generated.CreateKeys as CreateKeys +import aws_cryptographic_material_providers.internaldafny.generated.CreateKeyStoreTable as CreateKeyStoreTable +import aws_cryptographic_material_providers.internaldafny.generated.GetKeys as GetKeys +import aws_cryptographic_material_providers.internaldafny.generated.AwsCryptographyKeyStoreOperations as AwsCryptographyKeyStoreOperations +import aws_cryptographic_material_providers.internaldafny.generated.KeyStore as KeyStore +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AwsCryptographyMaterialProvidersTestVectorKeysTypes as AwsCryptographyMaterialProvidersTestVectorKeysTypes +import smithy_dafny_standard_library.internaldafny.generated.JSON_Utils_Views_Core as JSON_Utils_Views_Core +import smithy_dafny_standard_library.internaldafny.generated.JSON_Utils_Views_Writers as JSON_Utils_Views_Writers +import smithy_dafny_standard_library.internaldafny.generated.JSON_Utils_Lexers_Core as JSON_Utils_Lexers_Core +import smithy_dafny_standard_library.internaldafny.generated.JSON_Utils_Lexers_Strings as JSON_Utils_Lexers_Strings +import smithy_dafny_standard_library.internaldafny.generated.JSON_Utils_Cursors as JSON_Utils_Cursors +import smithy_dafny_standard_library.internaldafny.generated.JSON_Utils_Parsers as JSON_Utils_Parsers +import smithy_dafny_standard_library.internaldafny.generated.GeneralInternals as GeneralInternals +import smithy_dafny_standard_library.internaldafny.generated.MulInternalsNonlinear as MulInternalsNonlinear +import smithy_dafny_standard_library.internaldafny.generated.MulInternals as MulInternals +import smithy_dafny_standard_library.internaldafny.generated.Mul as Mul +import smithy_dafny_standard_library.internaldafny.generated.ModInternalsNonlinear as ModInternalsNonlinear +import smithy_dafny_standard_library.internaldafny.generated.DivInternalsNonlinear as DivInternalsNonlinear +import smithy_dafny_standard_library.internaldafny.generated.ModInternals as ModInternals +import smithy_dafny_standard_library.internaldafny.generated.DivInternals as DivInternals +import smithy_dafny_standard_library.internaldafny.generated.DivMod as DivMod +import smithy_dafny_standard_library.internaldafny.generated.Power as Power +import smithy_dafny_standard_library.internaldafny.generated.Logarithm as Logarithm +import smithy_dafny_standard_library.internaldafny.generated.JSON_Utils_Str_CharStrConversion as JSON_Utils_Str_CharStrConversion +import smithy_dafny_standard_library.internaldafny.generated.JSON_Utils_Str_CharStrEscaping as JSON_Utils_Str_CharStrEscaping +import smithy_dafny_standard_library.internaldafny.generated.JSON_Utils_Str as JSON_Utils_Str +import smithy_dafny_standard_library.internaldafny.generated.JSON_Utils_Seq as JSON_Utils_Seq +import smithy_dafny_standard_library.internaldafny.generated.JSON_Utils_Vectors as JSON_Utils_Vectors +import smithy_dafny_standard_library.internaldafny.generated.JSON_Errors as JSON_Errors +import smithy_dafny_standard_library.internaldafny.generated.JSON_Values as JSON_Values +import smithy_dafny_standard_library.internaldafny.generated.Unicode as Unicode +import smithy_dafny_standard_library.internaldafny.generated.Functions as Functions +import smithy_dafny_standard_library.internaldafny.generated.Utf8EncodingForm as Utf8EncodingForm +import smithy_dafny_standard_library.internaldafny.generated.Utf16EncodingForm as Utf16EncodingForm +import smithy_dafny_standard_library.internaldafny.generated.UnicodeStrings as UnicodeStrings +import smithy_dafny_standard_library.internaldafny.generated.JSON_Spec as JSON_Spec +import smithy_dafny_standard_library.internaldafny.generated.JSON_Grammar as JSON_Grammar +import smithy_dafny_standard_library.internaldafny.generated.JSON_Serializer_ByteStrConversion as JSON_Serializer_ByteStrConversion +import smithy_dafny_standard_library.internaldafny.generated.JSON_Serializer as JSON_Serializer +import smithy_dafny_standard_library.internaldafny.generated.JSON_Deserializer_Uint16StrConversion as JSON_Deserializer_Uint16StrConversion +import smithy_dafny_standard_library.internaldafny.generated.JSON_Deserializer_ByteStrConversion as JSON_Deserializer_ByteStrConversion +import smithy_dafny_standard_library.internaldafny.generated.JSON_Deserializer as JSON_Deserializer +import smithy_dafny_standard_library.internaldafny.generated.JSON_ConcreteSyntax_Spec as JSON_ConcreteSyntax_Spec +import smithy_dafny_standard_library.internaldafny.generated.JSON_ConcreteSyntax_SpecProperties as JSON_ConcreteSyntax_SpecProperties +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_Serializer as JSON_ZeroCopy_Serializer +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_Deserializer_Core as JSON_ZeroCopy_Deserializer_Core +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_Deserializer_Strings as JSON_ZeroCopy_Deserializer_Strings +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_Deserializer_Numbers as JSON_ZeroCopy_Deserializer_Numbers +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_Deserializer_ObjectParams as JSON_ZeroCopy_Deserializer_ObjectParams +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_Deserializer_Objects as JSON_ZeroCopy_Deserializer_Objects +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_Deserializer_ArrayParams as JSON_ZeroCopy_Deserializer_ArrayParams +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_Deserializer_Arrays as JSON_ZeroCopy_Deserializer_Arrays +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_Deserializer_Constants as JSON_ZeroCopy_Deserializer_Constants +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_Deserializer_Values as JSON_ZeroCopy_Deserializer_Values +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_Deserializer_API as JSON_ZeroCopy_Deserializer_API +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_Deserializer as JSON_ZeroCopy_Deserializer +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_API as JSON_ZeroCopy_API +import smithy_dafny_standard_library.internaldafny.generated.JSON_API as JSON_API +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.JSONHelpers as JSONHelpers +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.KeyDescription as KeyDescription +import smithy_dafny_standard_library.internaldafny.generated.HexStrings as HexStrings +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.KeyMaterial as KeyMaterial +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.CreateStaticKeyrings as CreateStaticKeyrings +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.CreateStaticKeyStores as CreateStaticKeyStores +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.KeyringFromKeyDescription as KeyringFromKeyDescription +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.CmmFromKeyDescription as CmmFromKeyDescription +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.WrappedMaterialProviders as WrappedMaterialProviders +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.KeysVectorOperations as KeysVectorOperations +import smithy_dafny_standard_library.internaldafny.generated.FileIO as FileIO +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.KeyVectors as KeyVectors +import aws_encryption_sdk.internaldafny.generated.AwsCryptographyEncryptionSdkTypes as AwsCryptographyEncryptionSdkTypes +import smithy_dafny_standard_library.internaldafny.generated.Streams as Streams +import aws_encryption_sdk.internaldafny.generated.SerializableTypes as SerializableTypes +import aws_encryption_sdk.internaldafny.generated.SerializeFunctions as SerializeFunctions +import aws_encryption_sdk.internaldafny.generated.EncryptionContext as EncryptionContext +import aws_encryption_sdk.internaldafny.generated.HeaderTypes as HeaderTypes +import aws_encryption_sdk.internaldafny.generated.SharedHeaderFunctions as SharedHeaderFunctions +import aws_encryption_sdk.internaldafny.generated.EncryptedDataKeys as EncryptedDataKeys +import aws_encryption_sdk.internaldafny.generated.V1HeaderBody as V1HeaderBody +import aws_encryption_sdk.internaldafny.generated.V2HeaderBody as V2HeaderBody +import aws_encryption_sdk.internaldafny.generated.HeaderAuth as HeaderAuth +import aws_encryption_sdk.internaldafny.generated.Header as Header +import aws_encryption_sdk.internaldafny.generated.Frames as Frames +import aws_encryption_sdk.internaldafny.generated.MessageBody as MessageBody +import aws_encryption_sdk.internaldafny.generated.KeyDerivation as KeyDerivation +import aws_encryption_sdk.internaldafny.generated.EncryptDecryptHelpers as EncryptDecryptHelpers +import aws_encryption_sdk.internaldafny.generated.AwsEncryptionSdkOperations as AwsEncryptionSdkOperations +import aws_encryption_sdk.internaldafny.generated.EncryptionSdk as EncryptionSdk +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.MplManifestOptions as MplManifestOptions +import smithy_dafny_standard_library.internaldafny.generated.GetOpt as GetOpt +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllAlgorithmSuites as AllAlgorithmSuites +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.TestVectors as TestVectors +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllHierarchy as AllHierarchy +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllKms as AllKms +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllKmsMrkAware as AllKmsMrkAware +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllKmsMrkAwareDiscovery as AllKmsMrkAwareDiscovery +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllKmsRsa as AllKmsRsa +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllKmsEcdh as AllKmsEcdh +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllRawAES as AllRawAES +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllRawRSA as AllRawRSA +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllRawECDH as AllRawECDH +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllDefaultCmm as AllDefaultCmm +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllRequiredEncryptionContextCmm as AllRequiredEncryptionContextCmm +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllMulti as AllMulti +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.WriteJsonManifests as WriteJsonManifests +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.CompleteVectors as CompleteVectors +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.ParseJsonManifests as ParseJsonManifests +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.TestManifests as TestManifests +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.WrappedMaterialProvidersMain as WrappedMaterialProvidersMain +import aws_cryptography_primitives.internaldafny.generated.AesKdfCtr as AesKdfCtr +import smithy_dafny_standard_library.internaldafny.generated.StandardLibraryInterop as StandardLibraryInterop +import smithy_dafny_standard_library.internaldafny.generated.Sorting as Sorting +import smithy_dafny_standard_library.internaldafny.generated.FloatCompare as FloatCompare +import smithy_dafny_standard_library.internaldafny.generated.ConcurrentCall as ConcurrentCall +import smithy_dafny_standard_library.internaldafny.generated.Base64Lemmas as Base64Lemmas +import aws_encryption_sdk_test_vectors.internaldafny.generated.WrappedESDK as WrappedESDK +import aws_encryption_sdk_test_vectors.internaldafny.generated.EsdkManifestOptions as EsdkManifestOptions + +# Module: EsdkTestVectors + +class default__: + def __init__(self): + pass + + @staticmethod + def SupportedGenerateManifestVersion_q(v): + return (False) or ((v) == (4)) + + @staticmethod + def SupportedEncryptVersion_q(v): + return (((v) == (1)) or ((v) == (4))) or ((v) == (5)) + + @staticmethod + def SupportedDecryptVersion_q(v): + return (((v) == (1)) or ((v) == (2))) or ((v) == (3)) + + @staticmethod + def TestDecrypt(keys, vector): + output: bool = False + if ((vector).algorithmSuiteId).is_Some: + d_0_id_: _dafny.Seq + d_0_id_ = AllAlgorithmSuites.default__.ToHex(((vector).algorithmSuiteId).value) + _dafny.print(_dafny.string_of(_dafny.Seq("\nTEST-DECRYPT===> "))) + _dafny.print(_dafny.string_of((vector).id)) + _dafny.print(_dafny.string_of(_dafny.Seq("\n"))) + _dafny.print(_dafny.string_of(d_0_id_)) + _dafny.print(_dafny.string_of(_dafny.Seq(" "))) + _dafny.print(_dafny.string_of((vector).description)) + _dafny.print(_dafny.string_of(_dafny.Seq("\n"))) + elif True: + _dafny.print(_dafny.string_of(_dafny.Seq("\nTEST-DECRYPT===> "))) + _dafny.print(_dafny.string_of((vector).id)) + _dafny.print(_dafny.string_of(_dafny.Seq("\n"))) + _dafny.print(_dafny.string_of((vector).description)) + _dafny.print(_dafny.string_of(_dafny.Seq("\n"))) + d_1_test_q_: Wrappers.Result + out0_: Wrappers.Result + out0_ = default__.DecryptVectorToDecryptTest(keys, vector) + d_1_test_q_ = out0_ + if (d_1_test_q_).is_Failure: + _dafny.print(_dafny.string_of((d_1_test_q_).error)) + _dafny.print(_dafny.string_of(_dafny.Seq("\n"))) + _dafny.print(_dafny.string_of(_dafny.Seq("\nFAILED! <-----------\n"))) + output = False + return output + d_2_test_: DecryptTest + d_2_test_ = (d_1_test_q_).value + d_3_valueOrError0_: Wrappers.Result = Wrappers.Result.default(_dafny.Seq)() + out1_: Wrappers.Result + out1_ = default__.ReadVectorsFile((((d_2_test_).vector).manifestPath) + (((d_2_test_).vector).ciphertextPath)) + d_3_valueOrError0_ = out1_ + if not(not((d_3_valueOrError0_).IsFailure())): + raise _dafny.HaltException("dafny/TestVectors/src/EsdkTestVectors.dfy(202,22): " + _dafny.string_of(d_3_valueOrError0_)) + d_4_ciphertext_: _dafny.Seq + d_4_ciphertext_ = (d_3_valueOrError0_).Extract() + d_5_plaintext_: _dafny.Seq = _dafny.Seq({}) + if (((d_2_test_).vector).is_PositiveDecryptTestVector) or (((d_2_test_).vector).is_PositiveV1OrV2DecryptTestVector): + d_6_valueOrError1_: Wrappers.Result = Wrappers.Result.default(_dafny.Seq)() + out2_: Wrappers.Result + out2_ = default__.ReadVectorsFile((((d_2_test_).vector).manifestPath) + (((d_2_test_).vector).plaintextPath)) + d_6_valueOrError1_ = out2_ + if not(not((d_6_valueOrError1_).IsFailure())): + raise _dafny.HaltException("dafny/TestVectors/src/EsdkTestVectors.dfy(205,19): " + _dafny.string_of(d_6_valueOrError1_)) + d_5_plaintext_ = (d_6_valueOrError1_).Extract() + d_7_input_: AwsCryptographyEncryptionSdkTypes.DecryptInput + d_7_input_ = AwsCryptographyEncryptionSdkTypes.DecryptInput_DecryptInput(d_4_ciphertext_, Wrappers.Option_Some((d_2_test_).cmm), Wrappers.Option_None(), ((d_2_test_).vector).reproducedEncryptionContext) + d_8_result_: Wrappers.Result + out3_: Wrappers.Result + out3_ = ((d_2_test_).client).Decrypt(d_7_input_) + d_8_result_ = out3_ + source0_ = (d_2_test_).vector + with _dafny.label("match0"): + if True: + if source0_.is_PositiveDecryptTestVector: + output = ((d_8_result_).is_Success) and ((((d_8_result_).value).plaintext) == (d_5_plaintext_)) + raise _dafny.Break("match0") + if True: + if source0_.is_NegativeDecryptTestVector: + output = (True) and ((d_8_result_).is_Failure) + raise _dafny.Break("match0") + if True: + output = ((d_8_result_).is_Success) and ((((d_8_result_).value).plaintext) == (d_5_plaintext_)) + pass + if not(output): + if ((((d_2_test_).vector).is_PositiveDecryptTestVector) or (((d_2_test_).vector).is_PositiveV1OrV2DecryptTestVector)) and ((d_8_result_).is_Failure): + _dafny.print(_dafny.string_of((d_8_result_).error)) + _dafny.print(_dafny.string_of(_dafny.Seq("\n"))) + if (((d_8_result_).error).is_AwsCryptographyMaterialProviders) and ((((d_8_result_).error).AwsCryptographyMaterialProviders).is_CollectionOfErrors): + _dafny.print(_dafny.string_of(_dafny.Seq("list:"))) + _dafny.print(_dafny.string_of((((d_8_result_).error).AwsCryptographyMaterialProviders).list)) + _dafny.print(_dafny.string_of(_dafny.Seq("\n"))) + _dafny.print(_dafny.string_of(_dafny.Seq("\nFAILED! <-----------\n"))) + return output + + @staticmethod + def DecryptVectorToDecryptTest(keys, vector): + output: Wrappers.Result = None + d_0_valueOrError0_: Wrappers.Outcome = Wrappers.Outcome.default()() + d_0_valueOrError0_ = Wrappers.default__.Need(not((vector).is_NegativeDecryptTestVector), AwsCryptographyMaterialProvidersTestVectorKeysTypes.Error_KeyVectorException(_dafny.Seq("Negative Test Vectors not supported at this time"))) + if (d_0_valueOrError0_).IsFailure(): + output = (d_0_valueOrError0_).PropagateFailure() + return output + d_1_valueOrError1_: Wrappers.Result = None + out0_: Wrappers.Result + out0_ = (keys).CreateWrappedTestVectorCmm(AwsCryptographyMaterialProvidersTestVectorKeysTypes.TestVectorCmmInput_TestVectorCmmInput((vector).decryptDescriptions, AwsCryptographyMaterialProvidersTestVectorKeysTypes.CmmOperation_DECRYPT())) + d_1_valueOrError1_ = out0_ + if (d_1_valueOrError1_).IsFailure(): + output = (d_1_valueOrError1_).PropagateFailure() + return output + d_2_cmm_: AwsCryptographyMaterialProvidersTypes.ICryptographicMaterialsManager + d_2_cmm_ = (d_1_valueOrError1_).Extract() + d_3_commitmentPolicy_: AwsCryptographyMaterialProvidersTypes.CommitmentPolicy + if ((vector).algorithmSuiteId).is_Some: + d_3_commitmentPolicy_ = AllAlgorithmSuites.default__.GetCompatibleCommitmentPolicy(((vector).algorithmSuiteId).value) + elif True: + d_3_commitmentPolicy_ = AwsCryptographyMaterialProvidersTypes.CommitmentPolicy_ESDK(AwsCryptographyMaterialProvidersTypes.ESDKCommitmentPolicy_FORBID__ENCRYPT__ALLOW__DECRYPT()) + d_4_valueOrError2_: Wrappers.Outcome = Wrappers.Outcome.default()() + d_4_valueOrError2_ = Wrappers.default__.Need((d_3_commitmentPolicy_).is_ESDK, AwsCryptographyMaterialProvidersTestVectorKeysTypes.Error_KeyVectorException(_dafny.Seq("Compatible commitment policy is not for ESDK"))) + if (d_4_valueOrError2_).IsFailure(): + output = (d_4_valueOrError2_).PropagateFailure() + return output + d_5_config_: AwsCryptographyEncryptionSdkTypes.AwsEncryptionSdkConfig + d_5_config_ = WrappedESDK.default__.WrappedAwsEncryptionSdkConfigWithSuppliedCommitment((d_3_commitmentPolicy_).ESDK) + d_6_valueOrError3_: Wrappers.Result = None + out1_: Wrappers.Result + out1_ = WrappedESDK.default__.WrappedESDK(d_5_config_) + d_6_valueOrError3_ = out1_ + if not(not((d_6_valueOrError3_).IsFailure())): + raise _dafny.HaltException("dafny/TestVectors/src/EsdkTestVectors.dfy(281,18): " + _dafny.string_of(d_6_valueOrError3_)) + d_7_client_: AwsCryptographyEncryptionSdkTypes.IAwsEncryptionSdkClient + d_7_client_ = (d_6_valueOrError3_).Extract() + d_8_test_: DecryptTest + d_8_test_ = DecryptTest_DecryptTest(d_2_cmm_, d_7_client_, vector) + output = Wrappers.Result_Success(d_8_test_) + return output + + @staticmethod + def TestEncrypt(plaintexts, keys, test): + output: Wrappers.Result = Wrappers.Result.default(EncryptTestOutput.default())() + d_0_id_: _dafny.Seq + d_0_id_ = AllAlgorithmSuites.default__.ToHex((((test).vector).algorithmSuiteId).value) + _dafny.print(_dafny.string_of(_dafny.Seq("\nTEST-ENCRYPT===> "))) + _dafny.print(_dafny.string_of((((test).vector).id).value)) + _dafny.print(_dafny.string_of(_dafny.Seq("\n"))) + _dafny.print(_dafny.string_of(d_0_id_)) + _dafny.print(_dafny.string_of(_dafny.Seq(" "))) + _dafny.print(_dafny.string_of(((test).vector).description)) + _dafny.print(_dafny.string_of(_dafny.Seq("\n"))) + d_1_vector_: EsdkEncryptTestVector + d_1_vector_ = (test).vector + if not((((test).vector).plaintextPath) in (plaintexts)): + raise _dafny.HaltException("dafny/TestVectors/src/EsdkTestVectors.dfy(324,4): " + _dafny.string_of(_dafny.Seq("expectation violation"))) + d_2_plaintext_: _dafny.Seq + d_2_plaintext_ = (plaintexts)[((test).vector).plaintextPath] + d_3_frameLength_: Wrappers.Option + d_3_frameLength_ = (d_1_vector_).frameLength + d_4_input_: AwsCryptographyEncryptionSdkTypes.EncryptInput + d_4_input_ = AwsCryptographyEncryptionSdkTypes.EncryptInput_EncryptInput(d_2_plaintext_, ((test).vector).encryptionContext, Wrappers.Option_Some((test).cmm), Wrappers.Option_None(), Wrappers.Option_Some((((((test).vector).algorithmSuiteId).value).id).ESDK), d_3_frameLength_) + d_5_result_: Wrappers.Result + out0_: Wrappers.Result + out0_ = ((test).client).Encrypt(d_4_input_) + d_5_result_ = out0_ + if ((d_5_result_).is_Success) and ((((test).vector).is_PositiveEncryptTestVector) or (((test).vector).is_PositiveEncryptNegativeDecryptTestVector)): + d_6_valueOrError0_: Wrappers.Result = Wrappers.Result.default(EsdkDecryptTestVector.default())() + out1_: Wrappers.Result + out1_ = default__.EncryptTestToDecryptVector(test, (d_5_result_).value) + d_6_valueOrError0_ = out1_ + if (d_6_valueOrError0_).IsFailure(): + output = (d_6_valueOrError0_).PropagateFailure() + return output + d_7_decryptVector_: EsdkDecryptTestVector + d_7_decryptVector_ = (d_6_valueOrError0_).Extract() + output = Wrappers.Result_Success(EncryptTestOutput_EncryptTestOutput(True, Wrappers.Option_Some(d_7_decryptVector_))) + elif ((d_5_result_).is_Failure) and (((test).vector).is_NegativeEncryptTestVector): + output = Wrappers.Result_Success(EncryptTestOutput_EncryptTestOutput(True, Wrappers.Option_None())) + elif True: + output = Wrappers.Result_Success(EncryptTestOutput_EncryptTestOutput(False, Wrappers.Option_None())) + if (not(((test).vector).is_NegativeEncryptTestVector)) and ((d_5_result_).is_Failure): + _dafny.print(_dafny.string_of((d_5_result_).error)) + _dafny.print(_dafny.string_of(_dafny.Seq("\nFAILED! <-----------\n"))) + return output + + @staticmethod + def EncryptVectorToEncryptTest(keys, vector): + output: Wrappers.Result = None + d_0_valueOrError0_: Wrappers.Result = None + out0_: Wrappers.Result + out0_ = (keys).CreateWrappedTestVectorCmm(AwsCryptographyMaterialProvidersTestVectorKeysTypes.TestVectorCmmInput_TestVectorCmmInput(((vector).encryptDescriptions if (vector).is_PositiveEncryptTestVector else ((vector).encryptDescriptions if (vector).is_PositiveEncryptNegativeDecryptTestVector else (vector).encryptDescriptions)), AwsCryptographyMaterialProvidersTestVectorKeysTypes.CmmOperation_ENCRYPT())) + d_0_valueOrError0_ = out0_ + if (d_0_valueOrError0_).IsFailure(): + output = (d_0_valueOrError0_).PropagateFailure() + return output + d_1_cmm_: AwsCryptographyMaterialProvidersTypes.ICryptographicMaterialsManager + d_1_cmm_ = (d_0_valueOrError0_).Extract() + d_2_valueOrError1_: Wrappers.Outcome = Wrappers.Outcome.default()() + d_2_valueOrError1_ = Wrappers.default__.Need(((vector).algorithmSuiteId).is_Some, AwsCryptographyMaterialProvidersTestVectorKeysTypes.Error_KeyVectorException(_dafny.Seq("Missing AlgorithmSuiteId in test vector"))) + if (d_2_valueOrError1_).IsFailure(): + output = (d_2_valueOrError1_).PropagateFailure() + return output + d_3_commitmentPolicy_: AwsCryptographyMaterialProvidersTypes.CommitmentPolicy + d_3_commitmentPolicy_ = AllAlgorithmSuites.default__.GetCompatibleCommitmentPolicy(((vector).algorithmSuiteId).value) + d_4_valueOrError2_: Wrappers.Outcome = Wrappers.Outcome.default()() + d_4_valueOrError2_ = Wrappers.default__.Need((d_3_commitmentPolicy_).is_ESDK, AwsCryptographyMaterialProvidersTestVectorKeysTypes.Error_KeyVectorException(_dafny.Seq("Compatible commitment policy is not for ESDK"))) + if (d_4_valueOrError2_).IsFailure(): + output = (d_4_valueOrError2_).PropagateFailure() + return output + d_5_config_: AwsCryptographyEncryptionSdkTypes.AwsEncryptionSdkConfig + d_5_config_ = WrappedESDK.default__.WrappedAwsEncryptionSdkConfigWithSuppliedCommitment((d_3_commitmentPolicy_).ESDK) + d_6_valueOrError3_: Wrappers.Result = None + out1_: Wrappers.Result + out1_ = WrappedESDK.default__.WrappedESDK(d_5_config_) + d_6_valueOrError3_ = out1_ + if not(not((d_6_valueOrError3_).IsFailure())): + raise _dafny.HaltException("dafny/TestVectors/src/EsdkTestVectors.dfy(397,18): " + _dafny.string_of(d_6_valueOrError3_)) + d_7_client_: AwsCryptographyEncryptionSdkTypes.IAwsEncryptionSdkClient + d_7_client_ = (d_6_valueOrError3_).Extract() + d_8_test_: EncryptTest + d_8_test_ = EncryptTest_EncryptTest(d_1_cmm_, d_7_client_, vector) + output = Wrappers.Result_Success(d_8_test_) + return output + + @staticmethod + def EncryptTestToDecryptVector(test, result): + output: Wrappers.Result = Wrappers.Result.default(EsdkDecryptTestVector.default())() + source0_ = (test).vector + with _dafny.label("match0"): + if True: + if source0_.is_PositiveEncryptTestVector: + output = Wrappers.Result_Success(EsdkDecryptTestVector_PositiveDecryptTestVector((((test).vector).id).value, 3, ((test).vector).decryptManifestPath, default__.ciphertextPathPathRoot, (default__.plaintextPathRoot) + (((test).vector).plaintextPath), ((test).vector).reproducedEncryptionContext, ((test).vector).decryptDescriptions, ((test).vector).commitmentPolicy, ((test).vector).frameLength, ((test).vector).algorithmSuiteId, ((test).vector).description, DecryptionMethod_OneShot())) + raise _dafny.Break("match0") + if True: + output = Wrappers.Result_Failure(_dafny.Seq("Only postive tests supported")) + pass + d_0_decryptManifestCiphertext_: _dafny.Seq + d_0_decryptManifestCiphertext_ = ((((test).vector).decryptManifestPath) + (default__.ciphertextPathPathRoot)) + ((((test).vector).id).value) + d_1_valueOrError0_: Wrappers.Result = Wrappers.Result.default(_dafny.defaults.tuple())() + out0_: Wrappers.Result + out0_ = default__.WriteVectorsFile(d_0_decryptManifestCiphertext_, (result).ciphertext) + d_1_valueOrError0_ = out0_ + if not(not((d_1_valueOrError0_).IsFailure())): + raise _dafny.HaltException("dafny/TestVectors/src/EsdkTestVectors.dfy(439,13): " + _dafny.string_of(d_1_valueOrError0_)) + d_2___v52_: tuple + d_2___v52_ = (d_1_valueOrError0_).Extract() + return output + + @staticmethod + def MplPrintErr(e): + hresult_: tuple = () + _dafny.print(_dafny.string_of(e)) + _dafny.print(_dafny.string_of(_dafny.Seq("\n"))) + _dafny.print(_dafny.string_of(_dafny.Seq("\n"))) + hresult_ = () + return hresult_ + return hresult_ + + @staticmethod + def MplVectorPrintErr(e): + hresult_: tuple = () + _dafny.print(_dafny.string_of(e)) + _dafny.print(_dafny.string_of(_dafny.Seq("\n"))) + _dafny.print(_dafny.string_of(_dafny.Seq("\n"))) + hresult_ = () + return hresult_ + return hresult_ + + @staticmethod + def KeyDescriptionToCmm(keys, keyDescriptions): + output: Wrappers.Result = None + d_0_keyringList_: _dafny.Seq + d_0_keyringList_ = _dafny.Seq([]) + hi0_ = len(keyDescriptions) + for d_1_i_ in range(0, hi0_): + d_2_keyDescription_: AwsCryptographyMaterialProvidersTestVectorKeysTypes.KeyDescription + d_2_keyDescription_ = (keyDescriptions)[d_1_i_] + d_3_valueOrError0_: Wrappers.Result = None + out0_: Wrappers.Result + out0_ = (keys).CreateWrappedTestVectorKeyring(AwsCryptographyMaterialProvidersTestVectorKeysTypes.TestVectorKeyringInput_TestVectorKeyringInput(d_2_keyDescription_)) + d_3_valueOrError0_ = out0_ + if (d_3_valueOrError0_).IsFailure(): + output = (d_3_valueOrError0_).PropagateFailure() + return output + d_4_keyring_: AwsCryptographyMaterialProvidersTypes.IKeyring + d_4_keyring_ = (d_3_valueOrError0_).Extract() + d_0_keyringList_ = (d_0_keyringList_) + (_dafny.Seq([d_4_keyring_])) + d_5_valueOrError1_: Wrappers.Outcome = Wrappers.Outcome.default()() + d_5_valueOrError1_ = Wrappers.default__.Need((len(d_0_keyringList_)) == (1), AwsCryptographyMaterialProvidersTestVectorKeysTypes.Error_KeyVectorException(_dafny.Seq("Failed to create any keyrings"))) + if (d_5_valueOrError1_).IsFailure(): + output = (d_5_valueOrError1_).PropagateFailure() + return output + d_6_valueOrError2_: Wrappers.Result = None + out1_: Wrappers.Result + out1_ = WrappedMaterialProviders.default__.WrappedMaterialProviders(WrappedMaterialProviders.default__.WrappedDefaultMaterialProvidersConfig()) + d_6_valueOrError2_ = out1_ + if not(not((d_6_valueOrError2_).IsFailure())): + raise _dafny.HaltException("dafny/TestVectors/src/EsdkTestVectors.dfy(482,15): " + _dafny.string_of(d_6_valueOrError2_)) + d_7_mpl_: AwsCryptographyMaterialProvidersTypes.IAwsCryptographicMaterialProvidersClient + d_7_mpl_ = (d_6_valueOrError2_).Extract() + d_8_generatorKeyring_: AwsCryptographyMaterialProvidersTypes.IKeyring + d_8_generatorKeyring_ = (d_0_keyringList_)[0] + d_9_maybeMultiKeyring_: Wrappers.Result + out2_: Wrappers.Result + out2_ = (d_7_mpl_).CreateMultiKeyring(AwsCryptographyMaterialProvidersTypes.CreateMultiKeyringInput_CreateMultiKeyringInput(Wrappers.Option_Some(d_8_generatorKeyring_), _dafny.Seq((d_0_keyringList_)[1::]))) + d_9_maybeMultiKeyring_ = out2_ + d_10_valueOrError3_: Wrappers.Result = None + def lambda0_(d_11_e_): + return AwsCryptographyMaterialProvidersTestVectorKeysTypes.Error_AwsCryptographyMaterialProviders(d_11_e_) + + d_10_valueOrError3_ = (d_9_maybeMultiKeyring_).MapFailure(lambda0_) + if (d_10_valueOrError3_).IsFailure(): + output = (d_10_valueOrError3_).PropagateFailure() + return output + d_12_keyring_: AwsCryptographyMaterialProvidersTypes.IKeyring + d_12_keyring_ = (d_10_valueOrError3_).Extract() + d_13_maybeCmm_: Wrappers.Result + out3_: Wrappers.Result + out3_ = (d_7_mpl_).CreateDefaultCryptographicMaterialsManager(AwsCryptographyMaterialProvidersTypes.CreateDefaultCryptographicMaterialsManagerInput_CreateDefaultCryptographicMaterialsManagerInput((d_9_maybeMultiKeyring_).value)) + d_13_maybeCmm_ = out3_ + def lambda1_(d_14_e_): + return AwsCryptographyMaterialProvidersTestVectorKeysTypes.Error_AwsCryptographyMaterialProviders(d_14_e_) + + output = (d_13_maybeCmm_).MapFailure(lambda1_) + return output + + @staticmethod + def ReadVectorsFile(location): + output: Wrappers.Result = Wrappers.Result.default(_dafny.Seq)() + d_0_valueOrError0_: Wrappers.Result = Wrappers.Result.default(_dafny.Seq)() + out0_: Wrappers.Result + out0_ = FileIO.default__.ReadBytesFromFile(location) + d_0_valueOrError0_ = out0_ + if (d_0_valueOrError0_).IsFailure(): + output = (d_0_valueOrError0_).PropagateFailure() + return output + d_1_fileBv_: _dafny.Seq + d_1_fileBv_ = (d_0_valueOrError0_).Extract() + output = Wrappers.Result_Success(JSONHelpers.default__.BvToBytes(d_1_fileBv_)) + return output + + @staticmethod + def WriteVectorsFile(location, bytes): + output: Wrappers.Result = Wrappers.Result.default(_dafny.defaults.tuple())() + d_0_bv_: _dafny.Seq + d_0_bv_ = JSONHelpers.default__.BytesBv(bytes) + out0_: Wrappers.Result + out0_ = FileIO.default__.WriteBytesToFile(location, d_0_bv_) + output = out0_ + return output + + @_dafny.classproperty + def ciphertextPathPathRoot(instance): + return _dafny.Seq("ciphertexts/") + @_dafny.classproperty + def plaintextPathRoot(instance): + return _dafny.Seq("plaintexts/") + +class EncryptTest: + @classmethod + def default(cls, ): + return lambda: EncryptTest_EncryptTest(None, None, EsdkEncryptTestVector.default()()) + def __ne__(self, __o: object) -> bool: + return not self.__eq__(__o) + @property + def is_EncryptTest(self) -> bool: + return isinstance(self, EncryptTest_EncryptTest) + +class EncryptTest_EncryptTest(EncryptTest, NamedTuple('EncryptTest', [('cmm', Any), ('client', Any), ('vector', Any)])): + def __dafnystr__(self) -> str: + return f'EsdkTestVectors.EncryptTest.EncryptTest({_dafny.string_of(self.cmm)}, {_dafny.string_of(self.client)}, {_dafny.string_of(self.vector)})' + def __eq__(self, __o: object) -> bool: + return isinstance(__o, EncryptTest_EncryptTest) and self.cmm == __o.cmm and self.client == __o.client and self.vector == __o.vector + def __hash__(self) -> int: + return super().__hash__() + + +class DecryptTest: + @classmethod + def default(cls, ): + return lambda: DecryptTest_DecryptTest(None, None, EsdkDecryptTestVector.default()()) + def __ne__(self, __o: object) -> bool: + return not self.__eq__(__o) + @property + def is_DecryptTest(self) -> bool: + return isinstance(self, DecryptTest_DecryptTest) + +class DecryptTest_DecryptTest(DecryptTest, NamedTuple('DecryptTest', [('cmm', Any), ('client', Any), ('vector', Any)])): + def __dafnystr__(self) -> str: + return f'EsdkTestVectors.DecryptTest.DecryptTest({_dafny.string_of(self.cmm)}, {_dafny.string_of(self.client)}, {_dafny.string_of(self.vector)})' + def __eq__(self, __o: object) -> bool: + return isinstance(__o, DecryptTest_DecryptTest) and self.cmm == __o.cmm and self.client == __o.client and self.vector == __o.vector + def __hash__(self) -> int: + return super().__hash__() + + +class SupportedGenerateManifestVersion: + def __init__(self): + pass + + @staticmethod + def default(): + return 4 + def _Is(source__): + d_0_v_: int = source__ + if System_.nat._Is(d_0_v_): + return default__.SupportedGenerateManifestVersion_q(d_0_v_) + return False + +class SupportedEncryptVersion: + def __init__(self): + pass + + @staticmethod + def default(): + return 1 + def _Is(source__): + d_1_v_: int = source__ + if System_.nat._Is(d_1_v_): + return default__.SupportedEncryptVersion_q(d_1_v_) + return False + +class EsdkEncryptTestVector: + @classmethod + def default(cls, ): + return lambda: EsdkEncryptTestVector_PositiveEncryptTestVector(Wrappers.Option.default()(), SupportedEncryptVersion.default(), _dafny.Seq(""), _dafny.Seq(""), _dafny.Seq(""), AwsCryptographyMaterialProvidersTestVectorKeysTypes.KeyDescription.default()(), AwsCryptographyMaterialProvidersTestVectorKeysTypes.KeyDescription.default()(), Wrappers.Option.default()(), Wrappers.Option.default()(), AwsCryptographyMaterialProvidersTypes.ESDKCommitmentPolicy.default()(), Wrappers.Option.default()(), Wrappers.Option.default()(), _dafny.Seq(""), Wrappers.Option.default()()) + def __ne__(self, __o: object) -> bool: + return not self.__eq__(__o) + @property + def is_PositiveEncryptTestVector(self) -> bool: + return isinstance(self, EsdkEncryptTestVector_PositiveEncryptTestVector) + @property + def is_PositiveEncryptNegativeDecryptTestVector(self) -> bool: + return isinstance(self, EsdkEncryptTestVector_PositiveEncryptNegativeDecryptTestVector) + @property + def is_NegativeEncryptTestVector(self) -> bool: + return isinstance(self, EsdkEncryptTestVector_NegativeEncryptTestVector) + +class EsdkEncryptTestVector_PositiveEncryptTestVector(EsdkEncryptTestVector, NamedTuple('PositiveEncryptTestVector', [('id', Any), ('version', Any), ('manifestPath', Any), ('decryptManifestPath', Any), ('plaintextPath', Any), ('encryptDescriptions', Any), ('decryptDescriptions', Any), ('encryptionContext', Any), ('reproducedEncryptionContext', Any), ('commitmentPolicy', Any), ('frameLength', Any), ('algorithmSuiteId', Any), ('description', Any), ('maxEncryptedDataKeys', Any)])): + def __dafnystr__(self) -> str: + return f'EsdkTestVectors.EsdkEncryptTestVector.PositiveEncryptTestVector({_dafny.string_of(self.id)}, {_dafny.string_of(self.version)}, {_dafny.string_of(self.manifestPath)}, {_dafny.string_of(self.decryptManifestPath)}, {_dafny.string_of(self.plaintextPath)}, {_dafny.string_of(self.encryptDescriptions)}, {_dafny.string_of(self.decryptDescriptions)}, {_dafny.string_of(self.encryptionContext)}, {_dafny.string_of(self.reproducedEncryptionContext)}, {_dafny.string_of(self.commitmentPolicy)}, {_dafny.string_of(self.frameLength)}, {_dafny.string_of(self.algorithmSuiteId)}, {_dafny.string_of(self.description)}, {_dafny.string_of(self.maxEncryptedDataKeys)})' + def __eq__(self, __o: object) -> bool: + return isinstance(__o, EsdkEncryptTestVector_PositiveEncryptTestVector) and self.id == __o.id and self.version == __o.version and self.manifestPath == __o.manifestPath and self.decryptManifestPath == __o.decryptManifestPath and self.plaintextPath == __o.plaintextPath and self.encryptDescriptions == __o.encryptDescriptions and self.decryptDescriptions == __o.decryptDescriptions and self.encryptionContext == __o.encryptionContext and self.reproducedEncryptionContext == __o.reproducedEncryptionContext and self.commitmentPolicy == __o.commitmentPolicy and self.frameLength == __o.frameLength and self.algorithmSuiteId == __o.algorithmSuiteId and self.description == __o.description and self.maxEncryptedDataKeys == __o.maxEncryptedDataKeys + def __hash__(self) -> int: + return super().__hash__() + +class EsdkEncryptTestVector_PositiveEncryptNegativeDecryptTestVector(EsdkEncryptTestVector, NamedTuple('PositiveEncryptNegativeDecryptTestVector', [('id', Any), ('version', Any), ('manifestPath', Any), ('decryptManifestPath', Any), ('plaintextPath', Any), ('encryptDescriptions', Any), ('decryptDescriptions', Any), ('encryptionContext', Any), ('reproducedEncryptionContext', Any), ('commitmentPolicy', Any), ('frameLength', Any), ('algorithmSuiteId', Any), ('decryptErrorDescription', Any), ('description', Any), ('maxEncryptedDataKeys', Any)])): + def __dafnystr__(self) -> str: + return f'EsdkTestVectors.EsdkEncryptTestVector.PositiveEncryptNegativeDecryptTestVector({_dafny.string_of(self.id)}, {_dafny.string_of(self.version)}, {_dafny.string_of(self.manifestPath)}, {_dafny.string_of(self.decryptManifestPath)}, {_dafny.string_of(self.plaintextPath)}, {_dafny.string_of(self.encryptDescriptions)}, {_dafny.string_of(self.decryptDescriptions)}, {_dafny.string_of(self.encryptionContext)}, {_dafny.string_of(self.reproducedEncryptionContext)}, {_dafny.string_of(self.commitmentPolicy)}, {_dafny.string_of(self.frameLength)}, {_dafny.string_of(self.algorithmSuiteId)}, {_dafny.string_of(self.decryptErrorDescription)}, {_dafny.string_of(self.description)}, {_dafny.string_of(self.maxEncryptedDataKeys)})' + def __eq__(self, __o: object) -> bool: + return isinstance(__o, EsdkEncryptTestVector_PositiveEncryptNegativeDecryptTestVector) and self.id == __o.id and self.version == __o.version and self.manifestPath == __o.manifestPath and self.decryptManifestPath == __o.decryptManifestPath and self.plaintextPath == __o.plaintextPath and self.encryptDescriptions == __o.encryptDescriptions and self.decryptDescriptions == __o.decryptDescriptions and self.encryptionContext == __o.encryptionContext and self.reproducedEncryptionContext == __o.reproducedEncryptionContext and self.commitmentPolicy == __o.commitmentPolicy and self.frameLength == __o.frameLength and self.algorithmSuiteId == __o.algorithmSuiteId and self.decryptErrorDescription == __o.decryptErrorDescription and self.description == __o.description and self.maxEncryptedDataKeys == __o.maxEncryptedDataKeys + def __hash__(self) -> int: + return super().__hash__() + +class EsdkEncryptTestVector_NegativeEncryptTestVector(EsdkEncryptTestVector, NamedTuple('NegativeEncryptTestVector', [('id', Any), ('version', Any), ('manifestPath', Any), ('plaintextPath', Any), ('encryptDescriptions', Any), ('encryptionContext', Any), ('reproducedEncryptionContext', Any), ('commitmentPolicy', Any), ('frameLength', Any), ('algorithmSuiteId', Any), ('errorDescription', Any), ('description', Any), ('maxEncryptedDataKeys', Any)])): + def __dafnystr__(self) -> str: + return f'EsdkTestVectors.EsdkEncryptTestVector.NegativeEncryptTestVector({_dafny.string_of(self.id)}, {_dafny.string_of(self.version)}, {_dafny.string_of(self.manifestPath)}, {_dafny.string_of(self.plaintextPath)}, {_dafny.string_of(self.encryptDescriptions)}, {_dafny.string_of(self.encryptionContext)}, {_dafny.string_of(self.reproducedEncryptionContext)}, {_dafny.string_of(self.commitmentPolicy)}, {_dafny.string_of(self.frameLength)}, {_dafny.string_of(self.algorithmSuiteId)}, {_dafny.string_of(self.errorDescription)}, {_dafny.string_of(self.description)}, {_dafny.string_of(self.maxEncryptedDataKeys)})' + def __eq__(self, __o: object) -> bool: + return isinstance(__o, EsdkEncryptTestVector_NegativeEncryptTestVector) and self.id == __o.id and self.version == __o.version and self.manifestPath == __o.manifestPath and self.plaintextPath == __o.plaintextPath and self.encryptDescriptions == __o.encryptDescriptions and self.encryptionContext == __o.encryptionContext and self.reproducedEncryptionContext == __o.reproducedEncryptionContext and self.commitmentPolicy == __o.commitmentPolicy and self.frameLength == __o.frameLength and self.algorithmSuiteId == __o.algorithmSuiteId and self.errorDescription == __o.errorDescription and self.description == __o.description and self.maxEncryptedDataKeys == __o.maxEncryptedDataKeys + def __hash__(self) -> int: + return super().__hash__() + + +class SupportedDecryptVersion: + def __init__(self): + pass + + @staticmethod + def default(): + return 1 + def _Is(source__): + d_2_v_: int = source__ + if System_.nat._Is(d_2_v_): + return default__.SupportedDecryptVersion_q(d_2_v_) + return False + +class EsdkDecryptTestVector: + @classmethod + def default(cls, ): + return lambda: EsdkDecryptTestVector_PositiveDecryptTestVector(_dafny.Seq(""), SupportedDecryptVersion.default(), _dafny.Seq(""), _dafny.Seq(""), _dafny.Seq(""), Wrappers.Option.default()(), AwsCryptographyMaterialProvidersTestVectorKeysTypes.KeyDescription.default()(), AwsCryptographyMaterialProvidersTypes.ESDKCommitmentPolicy.default()(), Wrappers.Option.default()(), Wrappers.Option.default()(), _dafny.Seq(""), DecryptionMethod.default()()) + def __ne__(self, __o: object) -> bool: + return not self.__eq__(__o) + @property + def is_PositiveDecryptTestVector(self) -> bool: + return isinstance(self, EsdkDecryptTestVector_PositiveDecryptTestVector) + @property + def is_NegativeDecryptTestVector(self) -> bool: + return isinstance(self, EsdkDecryptTestVector_NegativeDecryptTestVector) + @property + def is_PositiveV1OrV2DecryptTestVector(self) -> bool: + return isinstance(self, EsdkDecryptTestVector_PositiveV1OrV2DecryptTestVector) + +class EsdkDecryptTestVector_PositiveDecryptTestVector(EsdkDecryptTestVector, NamedTuple('PositiveDecryptTestVector', [('id', Any), ('version', Any), ('manifestPath', Any), ('ciphertextPath', Any), ('plaintextPath', Any), ('reproducedEncryptionContext', Any), ('decryptDescriptions', Any), ('commitmentPolicy', Any), ('frameLength', Any), ('algorithmSuiteId', Any), ('description', Any), ('decryptionMethod', Any)])): + def __dafnystr__(self) -> str: + return f'EsdkTestVectors.EsdkDecryptTestVector.PositiveDecryptTestVector({_dafny.string_of(self.id)}, {_dafny.string_of(self.version)}, {_dafny.string_of(self.manifestPath)}, {_dafny.string_of(self.ciphertextPath)}, {_dafny.string_of(self.plaintextPath)}, {_dafny.string_of(self.reproducedEncryptionContext)}, {_dafny.string_of(self.decryptDescriptions)}, {_dafny.string_of(self.commitmentPolicy)}, {_dafny.string_of(self.frameLength)}, {_dafny.string_of(self.algorithmSuiteId)}, {_dafny.string_of(self.description)}, {_dafny.string_of(self.decryptionMethod)})' + def __eq__(self, __o: object) -> bool: + return isinstance(__o, EsdkDecryptTestVector_PositiveDecryptTestVector) and self.id == __o.id and self.version == __o.version and self.manifestPath == __o.manifestPath and self.ciphertextPath == __o.ciphertextPath and self.plaintextPath == __o.plaintextPath and self.reproducedEncryptionContext == __o.reproducedEncryptionContext and self.decryptDescriptions == __o.decryptDescriptions and self.commitmentPolicy == __o.commitmentPolicy and self.frameLength == __o.frameLength and self.algorithmSuiteId == __o.algorithmSuiteId and self.description == __o.description and self.decryptionMethod == __o.decryptionMethod + def __hash__(self) -> int: + return super().__hash__() + +class EsdkDecryptTestVector_NegativeDecryptTestVector(EsdkDecryptTestVector, NamedTuple('NegativeDecryptTestVector', [('id', Any), ('version', Any), ('manifestPath', Any), ('ciphertextPath', Any), ('errorDescription', Any), ('reproducedEncryptionContext', Any), ('decryptDescriptions', Any), ('commitmentPolicy', Any), ('frameLength', Any), ('algorithmSuiteId', Any), ('description', Any), ('decryptionMethod', Any)])): + def __dafnystr__(self) -> str: + return f'EsdkTestVectors.EsdkDecryptTestVector.NegativeDecryptTestVector({_dafny.string_of(self.id)}, {_dafny.string_of(self.version)}, {_dafny.string_of(self.manifestPath)}, {_dafny.string_of(self.ciphertextPath)}, {_dafny.string_of(self.errorDescription)}, {_dafny.string_of(self.reproducedEncryptionContext)}, {_dafny.string_of(self.decryptDescriptions)}, {_dafny.string_of(self.commitmentPolicy)}, {_dafny.string_of(self.frameLength)}, {_dafny.string_of(self.algorithmSuiteId)}, {_dafny.string_of(self.description)}, {_dafny.string_of(self.decryptionMethod)})' + def __eq__(self, __o: object) -> bool: + return isinstance(__o, EsdkDecryptTestVector_NegativeDecryptTestVector) and self.id == __o.id and self.version == __o.version and self.manifestPath == __o.manifestPath and self.ciphertextPath == __o.ciphertextPath and self.errorDescription == __o.errorDescription and self.reproducedEncryptionContext == __o.reproducedEncryptionContext and self.decryptDescriptions == __o.decryptDescriptions and self.commitmentPolicy == __o.commitmentPolicy and self.frameLength == __o.frameLength and self.algorithmSuiteId == __o.algorithmSuiteId and self.description == __o.description and self.decryptionMethod == __o.decryptionMethod + def __hash__(self) -> int: + return super().__hash__() + +class EsdkDecryptTestVector_PositiveV1OrV2DecryptTestVector(EsdkDecryptTestVector, NamedTuple('PositiveV1OrV2DecryptTestVector', [('id', Any), ('version', Any), ('manifestPath', Any), ('ciphertextPath', Any), ('plaintextPath', Any), ('reproducedEncryptionContext', Any), ('requiredEncryptionContextKeys', Any), ('decryptDescriptions', Any), ('commitmentPolicy', Any), ('frameLength', Any), ('algorithmSuiteId', Any), ('description', Any), ('decryptionMethod', Any)])): + def __dafnystr__(self) -> str: + return f'EsdkTestVectors.EsdkDecryptTestVector.PositiveV1OrV2DecryptTestVector({_dafny.string_of(self.id)}, {_dafny.string_of(self.version)}, {_dafny.string_of(self.manifestPath)}, {_dafny.string_of(self.ciphertextPath)}, {_dafny.string_of(self.plaintextPath)}, {_dafny.string_of(self.reproducedEncryptionContext)}, {_dafny.string_of(self.requiredEncryptionContextKeys)}, {_dafny.string_of(self.decryptDescriptions)}, {_dafny.string_of(self.commitmentPolicy)}, {_dafny.string_of(self.frameLength)}, {_dafny.string_of(self.algorithmSuiteId)}, {_dafny.string_of(self.description)}, {_dafny.string_of(self.decryptionMethod)})' + def __eq__(self, __o: object) -> bool: + return isinstance(__o, EsdkDecryptTestVector_PositiveV1OrV2DecryptTestVector) and self.id == __o.id and self.version == __o.version and self.manifestPath == __o.manifestPath and self.ciphertextPath == __o.ciphertextPath and self.plaintextPath == __o.plaintextPath and self.reproducedEncryptionContext == __o.reproducedEncryptionContext and self.requiredEncryptionContextKeys == __o.requiredEncryptionContextKeys and self.decryptDescriptions == __o.decryptDescriptions and self.commitmentPolicy == __o.commitmentPolicy and self.frameLength == __o.frameLength and self.algorithmSuiteId == __o.algorithmSuiteId and self.description == __o.description and self.decryptionMethod == __o.decryptionMethod + def __hash__(self) -> int: + return super().__hash__() + + +class DecryptionMethod: + @_dafny.classproperty + def AllSingletonConstructors(cls): + return [DecryptionMethod_StreamingUnsignedOnly(), DecryptionMethod_OneShot()] + @classmethod + def default(cls, ): + return lambda: DecryptionMethod_StreamingUnsignedOnly() + def __ne__(self, __o: object) -> bool: + return not self.__eq__(__o) + @property + def is_StreamingUnsignedOnly(self) -> bool: + return isinstance(self, DecryptionMethod_StreamingUnsignedOnly) + @property + def is_OneShot(self) -> bool: + return isinstance(self, DecryptionMethod_OneShot) + +class DecryptionMethod_StreamingUnsignedOnly(DecryptionMethod, NamedTuple('StreamingUnsignedOnly', [])): + def __dafnystr__(self) -> str: + return f'EsdkTestVectors.DecryptionMethod.StreamingUnsignedOnly' + def __eq__(self, __o: object) -> bool: + return isinstance(__o, DecryptionMethod_StreamingUnsignedOnly) + def __hash__(self) -> int: + return super().__hash__() + +class DecryptionMethod_OneShot(DecryptionMethod, NamedTuple('OneShot', [])): + def __dafnystr__(self) -> str: + return f'EsdkTestVectors.DecryptionMethod.OneShot' + def __eq__(self, __o: object) -> bool: + return isinstance(__o, DecryptionMethod_OneShot) + def __hash__(self) -> int: + return super().__hash__() + + +class EncryptTestOutput: + @classmethod + def default(cls, ): + return lambda: EncryptTestOutput_EncryptTestOutput(False, Wrappers.Option.default()()) + def __ne__(self, __o: object) -> bool: + return not self.__eq__(__o) + @property + def is_EncryptTestOutput(self) -> bool: + return isinstance(self, EncryptTestOutput_EncryptTestOutput) + +class EncryptTestOutput_EncryptTestOutput(EncryptTestOutput, NamedTuple('EncryptTestOutput', [('output', Any), ('vector', Any)])): + def __dafnystr__(self) -> str: + return f'EsdkTestVectors.EncryptTestOutput.EncryptTestOutput({_dafny.string_of(self.output)}, {_dafny.string_of(self.vector)})' + def __eq__(self, __o: object) -> bool: + return isinstance(__o, EncryptTestOutput_EncryptTestOutput) and self.output == __o.output and self.vector == __o.vector + def __hash__(self) -> int: + return super().__hash__() + diff --git a/TestVectors/runtimes/python/src/aws_encryption_sdk_test_vectors/internaldafny/generated/ParseEsdkJsonManifest.py b/TestVectors/runtimes/python/src/aws_encryption_sdk_test_vectors/internaldafny/generated/ParseEsdkJsonManifest.py new file mode 100644 index 000000000..593892eef --- /dev/null +++ b/TestVectors/runtimes/python/src/aws_encryption_sdk_test_vectors/internaldafny/generated/ParseEsdkJsonManifest.py @@ -0,0 +1,629 @@ +import sys +from typing import Callable, Any, TypeVar, NamedTuple +from math import floor +from itertools import count + +import aws_encryption_sdk_test_vectors.internaldafny.generated.module_ as module_ +import _dafny as _dafny +import System_ as System_ +import smithy_dafny_standard_library.internaldafny.generated.Wrappers as Wrappers +import smithy_dafny_standard_library.internaldafny.generated.BoundedInts as BoundedInts +import smithy_dafny_standard_library.internaldafny.generated.StandardLibrary_UInt as StandardLibrary_UInt +import smithy_dafny_standard_library.internaldafny.generated.StandardLibrary_Sequence as StandardLibrary_Sequence +import smithy_dafny_standard_library.internaldafny.generated.StandardLibrary_String as StandardLibrary_String +import smithy_dafny_standard_library.internaldafny.generated.StandardLibrary as StandardLibrary +import smithy_dafny_standard_library.internaldafny.generated.UTF8 as UTF8 +import aws_cryptography_primitives.internaldafny.generated.AwsCryptographyPrimitivesTypes as AwsCryptographyPrimitivesTypes +import aws_cryptography_primitives.internaldafny.generated.ExternRandom as ExternRandom +import aws_cryptography_primitives.internaldafny.generated.Random as Random +import aws_cryptography_primitives.internaldafny.generated.AESEncryption as AESEncryption +import aws_cryptography_primitives.internaldafny.generated.ExternDigest as ExternDigest +import aws_cryptography_primitives.internaldafny.generated.Digest as Digest +import aws_cryptography_primitives.internaldafny.generated.HMAC as HMAC +import aws_cryptography_primitives.internaldafny.generated.WrappedHMAC as WrappedHMAC +import aws_cryptography_primitives.internaldafny.generated.HKDF as HKDF +import aws_cryptography_primitives.internaldafny.generated.WrappedHKDF as WrappedHKDF +import aws_cryptography_primitives.internaldafny.generated.Signature as Signature +import aws_cryptography_primitives.internaldafny.generated.KdfCtr as KdfCtr +import aws_cryptography_primitives.internaldafny.generated.RSAEncryption as RSAEncryption +import aws_cryptography_primitives.internaldafny.generated.ECDH as ECDH +import aws_cryptography_primitives.internaldafny.generated.AwsCryptographyPrimitivesOperations as AwsCryptographyPrimitivesOperations +import aws_cryptography_primitives.internaldafny.generated.AtomicPrimitives as AtomicPrimitives +import aws_cryptography_internal_dynamodb.internaldafny.generated.ComAmazonawsDynamodbTypes as ComAmazonawsDynamodbTypes +import aws_cryptography_internal_kms.internaldafny.generated.ComAmazonawsKmsTypes as ComAmazonawsKmsTypes +import aws_cryptographic_material_providers.internaldafny.generated.AwsCryptographyKeyStoreTypes as AwsCryptographyKeyStoreTypes +import aws_cryptographic_material_providers.internaldafny.generated.AwsCryptographyMaterialProvidersTypes as AwsCryptographyMaterialProvidersTypes +import smithy_dafny_standard_library.internaldafny.generated.Base64 as Base64 +import aws_cryptographic_material_providers.internaldafny.generated.AlgorithmSuites as AlgorithmSuites +import aws_cryptographic_material_providers.internaldafny.generated.Materials as Materials +import aws_cryptographic_material_providers.internaldafny.generated.Keyring as Keyring +import smithy_dafny_standard_library.internaldafny.generated.Relations as Relations +import smithy_dafny_standard_library.internaldafny.generated.Seq_MergeSort as Seq_MergeSort +import smithy_dafny_standard_library.internaldafny.generated.Math as Math +import smithy_dafny_standard_library.internaldafny.generated.Seq as Seq +import aws_cryptographic_material_providers.internaldafny.generated.MultiKeyring as MultiKeyring +import aws_cryptographic_material_providers.internaldafny.generated.AwsArnParsing as AwsArnParsing +import aws_cryptographic_material_providers.internaldafny.generated.AwsKmsMrkAreUnique as AwsKmsMrkAreUnique +import smithy_dafny_standard_library.internaldafny.generated.Actions as Actions +import aws_cryptographic_material_providers.internaldafny.generated.AwsKmsMrkMatchForDecrypt as AwsKmsMrkMatchForDecrypt +import aws_cryptographic_material_providers.internaldafny.generated.AwsKmsUtils as AwsKmsUtils +import aws_cryptographic_material_providers.internaldafny.generated.Constants as Constants +import smithy_dafny_standard_library.internaldafny.generated.UUID as UUID +import aws_cryptographic_material_providers.internaldafny.generated.MaterialWrapping as MaterialWrapping +import smithy_dafny_standard_library.internaldafny.generated.SortedSets as SortedSets +import aws_cryptographic_material_providers.internaldafny.generated.CanonicalEncryptionContext as CanonicalEncryptionContext +import aws_cryptographic_material_providers.internaldafny.generated.IntermediateKeyWrapping as IntermediateKeyWrapping +import aws_cryptographic_material_providers.internaldafny.generated.EdkWrapping as EdkWrapping +import aws_cryptographic_material_providers.internaldafny.generated.ErrorMessages as ErrorMessages +import aws_cryptographic_material_providers.internaldafny.generated.AwsKmsKeyring as AwsKmsKeyring +import aws_cryptographic_material_providers.internaldafny.generated.StrictMultiKeyring as StrictMultiKeyring +import aws_cryptographic_material_providers.internaldafny.generated.AwsKmsDiscoveryKeyring as AwsKmsDiscoveryKeyring +import aws_cryptography_internal_kms.internaldafny.generated.Com_Amazonaws_Kms as Com_Amazonaws_Kms +import aws_cryptography_internal_dynamodb.internaldafny.generated.Com_Amazonaws_Dynamodb as Com_Amazonaws_Dynamodb +import aws_cryptographic_material_providers.internaldafny.generated.DiscoveryMultiKeyring as DiscoveryMultiKeyring +import aws_cryptographic_material_providers.internaldafny.generated.AwsKmsMrkDiscoveryKeyring as AwsKmsMrkDiscoveryKeyring +import aws_cryptographic_material_providers.internaldafny.generated.MrkAwareDiscoveryMultiKeyring as MrkAwareDiscoveryMultiKeyring +import aws_cryptographic_material_providers.internaldafny.generated.AwsKmsMrkKeyring as AwsKmsMrkKeyring +import aws_cryptographic_material_providers.internaldafny.generated.MrkAwareStrictMultiKeyring as MrkAwareStrictMultiKeyring +import smithy_dafny_standard_library.internaldafny.generated.DafnyLibraries as DafnyLibraries +import smithy_dafny_standard_library.internaldafny.generated.Time as Time +import aws_cryptographic_material_providers.internaldafny.generated.LocalCMC as LocalCMC +import aws_cryptographic_material_providers.internaldafny.generated.SynchronizedLocalCMC as SynchronizedLocalCMC +import aws_cryptographic_material_providers.internaldafny.generated.StormTracker as StormTracker +import aws_cryptographic_material_providers.internaldafny.generated.StormTrackingCMC as StormTrackingCMC +import aws_cryptographic_material_providers.internaldafny.generated.CacheConstants as CacheConstants +import aws_cryptographic_material_providers.internaldafny.generated.AwsKmsHierarchicalKeyring as AwsKmsHierarchicalKeyring +import aws_cryptographic_material_providers.internaldafny.generated.AwsKmsRsaKeyring as AwsKmsRsaKeyring +import aws_cryptographic_material_providers.internaldafny.generated.EcdhEdkWrapping as EcdhEdkWrapping +import aws_cryptographic_material_providers.internaldafny.generated.RawECDHKeyring as RawECDHKeyring +import aws_cryptographic_material_providers.internaldafny.generated.AwsKmsEcdhKeyring as AwsKmsEcdhKeyring +import aws_cryptographic_material_providers.internaldafny.generated.RawAESKeyring as RawAESKeyring +import aws_cryptographic_material_providers.internaldafny.generated.RawRSAKeyring as RawRSAKeyring +import aws_cryptographic_material_providers.internaldafny.generated.CMM as CMM +import aws_cryptographic_material_providers.internaldafny.generated.Defaults as Defaults +import aws_cryptographic_material_providers.internaldafny.generated.Commitment as Commitment +import aws_cryptographic_material_providers.internaldafny.generated.DefaultCMM as DefaultCMM +import aws_cryptographic_material_providers.internaldafny.generated.DefaultClientSupplier as DefaultClientSupplier +import aws_cryptographic_material_providers.internaldafny.generated.Utils as Utils +import aws_cryptographic_material_providers.internaldafny.generated.RequiredEncryptionContextCMM as RequiredEncryptionContextCMM +import aws_cryptographic_material_providers.internaldafny.generated.AwsCryptographyMaterialProvidersOperations as AwsCryptographyMaterialProvidersOperations +import aws_cryptographic_material_providers.internaldafny.generated.MaterialProviders as MaterialProviders +import aws_cryptographic_material_providers.internaldafny.generated.KeyStoreErrorMessages as KeyStoreErrorMessages +import aws_cryptographic_material_providers.internaldafny.generated.KmsArn as KmsArn +import aws_cryptographic_material_providers.internaldafny.generated.Structure as Structure +import aws_cryptographic_material_providers.internaldafny.generated.KMSKeystoreOperations as KMSKeystoreOperations +import aws_cryptographic_material_providers.internaldafny.generated.DDBKeystoreOperations as DDBKeystoreOperations +import aws_cryptographic_material_providers.internaldafny.generated.CreateKeys as CreateKeys +import aws_cryptographic_material_providers.internaldafny.generated.CreateKeyStoreTable as CreateKeyStoreTable +import aws_cryptographic_material_providers.internaldafny.generated.GetKeys as GetKeys +import aws_cryptographic_material_providers.internaldafny.generated.AwsCryptographyKeyStoreOperations as AwsCryptographyKeyStoreOperations +import aws_cryptographic_material_providers.internaldafny.generated.KeyStore as KeyStore +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AwsCryptographyMaterialProvidersTestVectorKeysTypes as AwsCryptographyMaterialProvidersTestVectorKeysTypes +import smithy_dafny_standard_library.internaldafny.generated.JSON_Utils_Views_Core as JSON_Utils_Views_Core +import smithy_dafny_standard_library.internaldafny.generated.JSON_Utils_Views_Writers as JSON_Utils_Views_Writers +import smithy_dafny_standard_library.internaldafny.generated.JSON_Utils_Lexers_Core as JSON_Utils_Lexers_Core +import smithy_dafny_standard_library.internaldafny.generated.JSON_Utils_Lexers_Strings as JSON_Utils_Lexers_Strings +import smithy_dafny_standard_library.internaldafny.generated.JSON_Utils_Cursors as JSON_Utils_Cursors +import smithy_dafny_standard_library.internaldafny.generated.JSON_Utils_Parsers as JSON_Utils_Parsers +import smithy_dafny_standard_library.internaldafny.generated.GeneralInternals as GeneralInternals +import smithy_dafny_standard_library.internaldafny.generated.MulInternalsNonlinear as MulInternalsNonlinear +import smithy_dafny_standard_library.internaldafny.generated.MulInternals as MulInternals +import smithy_dafny_standard_library.internaldafny.generated.Mul as Mul +import smithy_dafny_standard_library.internaldafny.generated.ModInternalsNonlinear as ModInternalsNonlinear +import smithy_dafny_standard_library.internaldafny.generated.DivInternalsNonlinear as DivInternalsNonlinear +import smithy_dafny_standard_library.internaldafny.generated.ModInternals as ModInternals +import smithy_dafny_standard_library.internaldafny.generated.DivInternals as DivInternals +import smithy_dafny_standard_library.internaldafny.generated.DivMod as DivMod +import smithy_dafny_standard_library.internaldafny.generated.Power as Power +import smithy_dafny_standard_library.internaldafny.generated.Logarithm as Logarithm +import smithy_dafny_standard_library.internaldafny.generated.JSON_Utils_Str_CharStrConversion as JSON_Utils_Str_CharStrConversion +import smithy_dafny_standard_library.internaldafny.generated.JSON_Utils_Str_CharStrEscaping as JSON_Utils_Str_CharStrEscaping +import smithy_dafny_standard_library.internaldafny.generated.JSON_Utils_Str as JSON_Utils_Str +import smithy_dafny_standard_library.internaldafny.generated.JSON_Utils_Seq as JSON_Utils_Seq +import smithy_dafny_standard_library.internaldafny.generated.JSON_Utils_Vectors as JSON_Utils_Vectors +import smithy_dafny_standard_library.internaldafny.generated.JSON_Errors as JSON_Errors +import smithy_dafny_standard_library.internaldafny.generated.JSON_Values as JSON_Values +import smithy_dafny_standard_library.internaldafny.generated.Unicode as Unicode +import smithy_dafny_standard_library.internaldafny.generated.Functions as Functions +import smithy_dafny_standard_library.internaldafny.generated.Utf8EncodingForm as Utf8EncodingForm +import smithy_dafny_standard_library.internaldafny.generated.Utf16EncodingForm as Utf16EncodingForm +import smithy_dafny_standard_library.internaldafny.generated.UnicodeStrings as UnicodeStrings +import smithy_dafny_standard_library.internaldafny.generated.JSON_Spec as JSON_Spec +import smithy_dafny_standard_library.internaldafny.generated.JSON_Grammar as JSON_Grammar +import smithy_dafny_standard_library.internaldafny.generated.JSON_Serializer_ByteStrConversion as JSON_Serializer_ByteStrConversion +import smithy_dafny_standard_library.internaldafny.generated.JSON_Serializer as JSON_Serializer +import smithy_dafny_standard_library.internaldafny.generated.JSON_Deserializer_Uint16StrConversion as JSON_Deserializer_Uint16StrConversion +import smithy_dafny_standard_library.internaldafny.generated.JSON_Deserializer_ByteStrConversion as JSON_Deserializer_ByteStrConversion +import smithy_dafny_standard_library.internaldafny.generated.JSON_Deserializer as JSON_Deserializer +import smithy_dafny_standard_library.internaldafny.generated.JSON_ConcreteSyntax_Spec as JSON_ConcreteSyntax_Spec +import smithy_dafny_standard_library.internaldafny.generated.JSON_ConcreteSyntax_SpecProperties as JSON_ConcreteSyntax_SpecProperties +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_Serializer as JSON_ZeroCopy_Serializer +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_Deserializer_Core as JSON_ZeroCopy_Deserializer_Core +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_Deserializer_Strings as JSON_ZeroCopy_Deserializer_Strings +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_Deserializer_Numbers as JSON_ZeroCopy_Deserializer_Numbers +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_Deserializer_ObjectParams as JSON_ZeroCopy_Deserializer_ObjectParams +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_Deserializer_Objects as JSON_ZeroCopy_Deserializer_Objects +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_Deserializer_ArrayParams as JSON_ZeroCopy_Deserializer_ArrayParams +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_Deserializer_Arrays as JSON_ZeroCopy_Deserializer_Arrays +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_Deserializer_Constants as JSON_ZeroCopy_Deserializer_Constants +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_Deserializer_Values as JSON_ZeroCopy_Deserializer_Values +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_Deserializer_API as JSON_ZeroCopy_Deserializer_API +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_Deserializer as JSON_ZeroCopy_Deserializer +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_API as JSON_ZeroCopy_API +import smithy_dafny_standard_library.internaldafny.generated.JSON_API as JSON_API +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.JSONHelpers as JSONHelpers +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.KeyDescription as KeyDescription +import smithy_dafny_standard_library.internaldafny.generated.HexStrings as HexStrings +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.KeyMaterial as KeyMaterial +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.CreateStaticKeyrings as CreateStaticKeyrings +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.CreateStaticKeyStores as CreateStaticKeyStores +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.KeyringFromKeyDescription as KeyringFromKeyDescription +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.CmmFromKeyDescription as CmmFromKeyDescription +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.WrappedMaterialProviders as WrappedMaterialProviders +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.KeysVectorOperations as KeysVectorOperations +import smithy_dafny_standard_library.internaldafny.generated.FileIO as FileIO +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.KeyVectors as KeyVectors +import aws_encryption_sdk.internaldafny.generated.AwsCryptographyEncryptionSdkTypes as AwsCryptographyEncryptionSdkTypes +import smithy_dafny_standard_library.internaldafny.generated.Streams as Streams +import aws_encryption_sdk.internaldafny.generated.SerializableTypes as SerializableTypes +import aws_encryption_sdk.internaldafny.generated.SerializeFunctions as SerializeFunctions +import aws_encryption_sdk.internaldafny.generated.EncryptionContext as EncryptionContext +import aws_encryption_sdk.internaldafny.generated.HeaderTypes as HeaderTypes +import aws_encryption_sdk.internaldafny.generated.SharedHeaderFunctions as SharedHeaderFunctions +import aws_encryption_sdk.internaldafny.generated.EncryptedDataKeys as EncryptedDataKeys +import aws_encryption_sdk.internaldafny.generated.V1HeaderBody as V1HeaderBody +import aws_encryption_sdk.internaldafny.generated.V2HeaderBody as V2HeaderBody +import aws_encryption_sdk.internaldafny.generated.HeaderAuth as HeaderAuth +import aws_encryption_sdk.internaldafny.generated.Header as Header +import aws_encryption_sdk.internaldafny.generated.Frames as Frames +import aws_encryption_sdk.internaldafny.generated.MessageBody as MessageBody +import aws_encryption_sdk.internaldafny.generated.KeyDerivation as KeyDerivation +import aws_encryption_sdk.internaldafny.generated.EncryptDecryptHelpers as EncryptDecryptHelpers +import aws_encryption_sdk.internaldafny.generated.AwsEncryptionSdkOperations as AwsEncryptionSdkOperations +import aws_encryption_sdk.internaldafny.generated.EncryptionSdk as EncryptionSdk +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.MplManifestOptions as MplManifestOptions +import smithy_dafny_standard_library.internaldafny.generated.GetOpt as GetOpt +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllAlgorithmSuites as AllAlgorithmSuites +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.TestVectors as TestVectors +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllHierarchy as AllHierarchy +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllKms as AllKms +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllKmsMrkAware as AllKmsMrkAware +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllKmsMrkAwareDiscovery as AllKmsMrkAwareDiscovery +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllKmsRsa as AllKmsRsa +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllKmsEcdh as AllKmsEcdh +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllRawAES as AllRawAES +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllRawRSA as AllRawRSA +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllRawECDH as AllRawECDH +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllDefaultCmm as AllDefaultCmm +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllRequiredEncryptionContextCmm as AllRequiredEncryptionContextCmm +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllMulti as AllMulti +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.WriteJsonManifests as WriteJsonManifests +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.CompleteVectors as CompleteVectors +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.ParseJsonManifests as ParseJsonManifests +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.TestManifests as TestManifests +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.WrappedMaterialProvidersMain as WrappedMaterialProvidersMain +import aws_cryptography_primitives.internaldafny.generated.AesKdfCtr as AesKdfCtr +import smithy_dafny_standard_library.internaldafny.generated.StandardLibraryInterop as StandardLibraryInterop +import smithy_dafny_standard_library.internaldafny.generated.Sorting as Sorting +import smithy_dafny_standard_library.internaldafny.generated.FloatCompare as FloatCompare +import smithy_dafny_standard_library.internaldafny.generated.ConcurrentCall as ConcurrentCall +import smithy_dafny_standard_library.internaldafny.generated.Base64Lemmas as Base64Lemmas +import aws_encryption_sdk_test_vectors.internaldafny.generated.WrappedESDK as WrappedESDK +import aws_encryption_sdk_test_vectors.internaldafny.generated.EsdkManifestOptions as EsdkManifestOptions +import aws_encryption_sdk_test_vectors.internaldafny.generated.EsdkTestVectors as EsdkTestVectors +import aws_encryption_sdk_test_vectors.internaldafny.generated.AllEsdkV4NoReqEc as AllEsdkV4NoReqEc +import aws_encryption_sdk_test_vectors.internaldafny.generated.AllEsdkV4WithReqEc as AllEsdkV4WithReqEc +import aws_encryption_sdk_test_vectors.internaldafny.generated.WriteEsdkJsonManifests as WriteEsdkJsonManifests +import aws_encryption_sdk_test_vectors.internaldafny.generated.WriteVectors as WriteVectors + +# Module: ParseEsdkJsonManifest + +class default__: + def __init__(self): + pass + + @staticmethod + def BuildDecryptTestVector(op, version, keys, obj): + hresult_: Wrappers.Result = Wrappers.Result.default(_dafny.Seq)() + d_0_i_: int + d_0_i_ = len(obj) + d_1_vectors_: _dafny.Seq + d_1_vectors_ = _dafny.Seq([]) + while (d_0_i_) != (0): + d_0_i_ = (d_0_i_) - (1) + d_2_test_: Wrappers.Result + d_2_test_ = default__.ToDecryptTestVectors(op, version, keys, ((obj)[d_0_i_])[0], ((obj)[d_0_i_])[1]) + if ((d_2_test_).is_Failure) and (((d_2_test_).error) != (default__.negativeTestVectorFound)): + hresult_ = Wrappers.Result_Failure(default__.buildTestVectorError) + return hresult_ + if (d_2_test_).is_Success: + d_1_vectors_ = (_dafny.Seq([(d_2_test_).value])) + (d_1_vectors_) + if ((d_2_test_).is_Failure) and (((d_2_test_).error) == (default__.negativeTestVectorFound)): + d_1_vectors_ = d_1_vectors_ + hresult_ = Wrappers.Result_Success(d_1_vectors_) + return hresult_ + return hresult_ + + @staticmethod + def ToDecryptTestVectors(op, version, keys, name, json): + d_0_valueOrError0_ = Wrappers.default__.Need((json).is_Object, _dafny.Seq("Vector is not an object")) + if (d_0_valueOrError0_).IsFailure(): + return (d_0_valueOrError0_).PropagateFailure() + elif True: + d_1_obj_ = (json).obj + source0_ = version + if True: + if (source0_) == (3): + d_2_valueOrError1_ = Wrappers.default__.Need((op).is_Decrypt, _dafny.Seq("Err parsing manifest expected Decrypt")) + if (d_2_valueOrError1_).IsFailure(): + return (d_2_valueOrError1_).PropagateFailure() + elif True: + return default__.V3ToDecryptTestVector(op, keys, name, d_1_obj_, version) + if True: + if (source0_) == (2): + d_3_valueOrError2_ = Wrappers.default__.Need((op).is_Decrypt, _dafny.Seq("Err parsing manifest expected Decrypt")) + if (d_3_valueOrError2_).IsFailure(): + return (d_3_valueOrError2_).PropagateFailure() + elif True: + return default__.V2ToDecryptTestVector(op, keys, name, d_1_obj_, version) + if True: + if (source0_) == (1): + d_4_valueOrError3_ = Wrappers.default__.Need((op).is_Decrypt, _dafny.Seq("Err parsing manifest expected Decrypt")) + if (d_4_valueOrError3_).IsFailure(): + return (d_4_valueOrError3_).PropagateFailure() + elif True: + return default__.V1ToDecryptTestVector(op, keys, name, d_1_obj_, version) + if True: + return Wrappers.Result_Failure(_dafny.Seq("Version not supported\n")) + + @staticmethod + def BuildEncryptTestVector(op, version, keys, obj): + hresult_: Wrappers.Result = Wrappers.Result.default(_dafny.Seq)() + d_0_i_: int + d_0_i_ = len(obj) + d_1_vectors_: _dafny.Seq + d_1_vectors_ = _dafny.Seq([]) + while (d_0_i_) != (0): + d_0_i_ = (d_0_i_) - (1) + d_2_test_: Wrappers.Result + d_2_test_ = default__.ToEncryptTestVector(op, version, keys, ((obj)[d_0_i_])[0], ((obj)[d_0_i_])[1]) + if (d_2_test_).is_Failure: + hresult_ = Wrappers.Result_Failure((d_2_test_).error) + return hresult_ + d_1_vectors_ = (_dafny.Seq([(d_2_test_).value])) + (d_1_vectors_) + hresult_ = Wrappers.Result_Success(d_1_vectors_) + return hresult_ + return hresult_ + + @staticmethod + def ToEncryptTestVector(op, version, keys, name, json): + d_0_valueOrError0_ = Wrappers.default__.Need((json).is_Object, _dafny.Seq("EncryptTestVector not an object")) + if (d_0_valueOrError0_).IsFailure(): + return (d_0_valueOrError0_).PropagateFailure() + elif True: + d_1_obj_ = (json).obj + source0_ = version + if True: + if (source0_) == (5): + return default__.V5ToEncryptTestVector(op, keys, name, d_1_obj_, version) + if True: + return Wrappers.Result_Failure(_dafny.Seq("Version not supported")) + + @staticmethod + def V5ToEncryptTestVector(op, keys, name, obj, version): + d_0_scenarioString_ = _dafny.Seq("encryption-scenario") + d_1_valueOrError0_ = JSONHelpers.default__.GetObject(d_0_scenarioString_, obj) + if (d_1_valueOrError0_).IsFailure(): + return (d_1_valueOrError0_).PropagateFailure() + elif True: + d_2_scenario_ = (d_1_valueOrError0_).Extract() + d_3_typeString_ = _dafny.Seq("type") + d_4_valueOrError1_ = JSONHelpers.default__.GetString(d_3_typeString_, d_2_scenario_) + if (d_4_valueOrError1_).IsFailure(): + return (d_4_valueOrError1_).PropagateFailure() + elif True: + d_5_typ_ = (d_4_valueOrError1_).Extract() + d_6_valueOrError2_ = JSONHelpers.default__.GetString(default__.plaintextJsonKey, d_2_scenario_) + if (d_6_valueOrError2_).IsFailure(): + return (d_6_valueOrError2_).PropagateFailure() + elif True: + d_7_plaintextLoc_ = (d_6_valueOrError2_).Extract() + d_8_valueOrError3_ = ParseJsonManifests.default__.GetAlgorithmSuiteInfo(d_2_scenario_) + if (d_8_valueOrError3_).IsFailure(): + return (d_8_valueOrError3_).PropagateFailure() + elif True: + d_9_algorithmSuite_ = (d_8_valueOrError3_).Extract() + d_10_valueOrError4_ = Wrappers.default__.Need(((d_9_algorithmSuite_).id).is_ESDK, _dafny.Seq("Unsupported algorithmSuiteId")) + if (d_10_valueOrError4_).IsFailure(): + return (d_10_valueOrError4_).PropagateFailure() + elif True: + d_11_valueOrError5_ = JSONHelpers.default__.GetOptionalPositiveLong(default__.frameSizeJsonKey, d_2_scenario_) + if (d_11_valueOrError5_).IsFailure(): + return (d_11_valueOrError5_).PropagateFailure() + elif True: + d_12_frameLength_ = (d_11_valueOrError5_).Extract() + d_13_valueOrError6_ = JSONHelpers.default__.SmallObjectToStringStringMap(default__.encryptionContextJsonKey, d_2_scenario_) + if (d_13_valueOrError6_).IsFailure(): + return (d_13_valueOrError6_).PropagateFailure() + elif True: + d_14_encryptionContextStrings_ = (d_13_valueOrError6_).Extract() + d_15_valueOrError7_ = JSONHelpers.default__.utf8EncodeMap(d_14_encryptionContextStrings_) + if (d_15_valueOrError7_).IsFailure(): + return (d_15_valueOrError7_).PropagateFailure() + elif True: + d_16_encryptionContext_ = (d_15_valueOrError7_).Extract() + d_17_valueOrError8_ = JSONHelpers.default__.SmallObjectToStringStringMap(default__.reproducedEncryptionContextJsonKey, d_2_scenario_) + if (d_17_valueOrError8_).IsFailure(): + return (d_17_valueOrError8_).PropagateFailure() + elif True: + d_18_reproducedEncryptionContextString_ = (d_17_valueOrError8_).Extract() + d_19_valueOrError9_ = JSONHelpers.default__.utf8EncodeMap(d_18_reproducedEncryptionContextString_) + if (d_19_valueOrError9_).IsFailure(): + return (d_19_valueOrError9_).PropagateFailure() + elif True: + d_20_reproducedEncryptionContext_ = (d_19_valueOrError9_).Extract() + d_21_valueOrError10_ = JSONHelpers.default__.GetString(_dafny.Seq("description"), d_2_scenario_) + if (d_21_valueOrError10_).IsFailure(): + return (d_21_valueOrError10_).PropagateFailure() + elif True: + d_22_description_ = (d_21_valueOrError10_).Extract() + source0_ = d_5_typ_ + if True: + if (source0_) == (_dafny.Seq("positive-esdk")): + d_23_valueOrError11_ = ParseJsonManifests.default__.GetKeyDescription(keys, default__.encryptKeyDescription, d_2_scenario_) + if (d_23_valueOrError11_).IsFailure(): + return (d_23_valueOrError11_).PropagateFailure() + elif True: + d_24_encryptKeyDescription_ = (d_23_valueOrError11_).Extract() + d_25_valueOrError12_ = ParseJsonManifests.default__.GetKeyDescription(keys, default__.decryptKeyDescription, d_2_scenario_) + if (d_25_valueOrError12_).IsFailure(): + return (d_25_valueOrError12_).PropagateFailure() + elif True: + d_26_decryptKeyDescription_ = (d_25_valueOrError12_).Extract() + return Wrappers.Result_Success(EsdkTestVectors.EsdkEncryptTestVector_PositiveEncryptTestVector(Wrappers.Option_Some(name), version, (op).manifestPath, (op).decryptManifestOutput, d_7_plaintextLoc_, d_24_encryptKeyDescription_, d_26_decryptKeyDescription_, Wrappers.Option_Some(d_16_encryptionContext_), Wrappers.Option_Some(d_20_reproducedEncryptionContext_), AwsCryptographyMaterialProvidersTypes.ESDKCommitmentPolicy_FORBID__ENCRYPT__ALLOW__DECRYPT(), d_12_frameLength_, Wrappers.Option_Some(d_9_algorithmSuite_), d_22_description_, Wrappers.Option_Some(1))) + if True: + return Wrappers.Result_Failure((_dafny.Seq("Unsupported ESDK TestVector type: ")) + (d_5_typ_)) + + @staticmethod + def V1ToDecryptTestVector(op, keys, name, obj, version): + d_0_valueOrError0_ = JSONHelpers.default__.GetString(_dafny.Seq("plaintext"), obj) + if (d_0_valueOrError0_).IsFailure(): + return (d_0_valueOrError0_).PropagateFailure() + elif True: + d_1_plaintextLoc_ = (d_0_valueOrError0_).Extract() + d_2_valueOrError1_ = JSONHelpers.default__.GetString(_dafny.Seq("ciphertext"), obj) + if (d_2_valueOrError1_).IsFailure(): + return (d_2_valueOrError1_).PropagateFailure() + elif True: + d_3_ciphertextLoc_ = (d_2_valueOrError1_).Extract() + d_4_valueOrError2_ = Wrappers.default__.Need(((_dafny.Seq("file://")) < (d_3_ciphertextLoc_)) and ((_dafny.Seq("file://")) < (d_1_plaintextLoc_)), _dafny.Seq("Invalid file prefix in test vector")) + if (d_4_valueOrError2_).IsFailure(): + return (d_4_valueOrError2_).PropagateFailure() + elif True: + d_5_valueOrError3_ = JSONHelpers.default__.GetArray(_dafny.Seq("master-keys"), obj) + if (d_5_valueOrError3_).IsFailure(): + return (d_5_valueOrError3_).PropagateFailure() + elif True: + d_6_masterKeys_ = (d_5_valueOrError3_).Extract() + d_7_valueOrError4_ = default__.GetKeyDescriptions(d_6_masterKeys_, keys) + if (d_7_valueOrError4_).IsFailure(): + return (d_7_valueOrError4_).PropagateFailure() + elif True: + d_8_keyDescriptions_ = (d_7_valueOrError4_).Extract() + d_9_valueOrError5_ = default__.ToMultiKeyDescription(d_8_keyDescriptions_) + if (d_9_valueOrError5_).IsFailure(): + return (d_9_valueOrError5_).PropagateFailure() + elif True: + d_10_keyDescription_ = (d_9_valueOrError5_).Extract() + return Wrappers.Result_Success(EsdkTestVectors.EsdkDecryptTestVector_PositiveV1OrV2DecryptTestVector(name, version, (op).manifestPath, _dafny.Seq((d_3_ciphertextLoc_)[len(default__.FILE__PREPEND)::]), _dafny.Seq((d_1_plaintextLoc_)[len(default__.FILE__PREPEND)::]), Wrappers.Option_None(), Wrappers.Option_None(), d_10_keyDescription_, AwsCryptographyMaterialProvidersTypes.ESDKCommitmentPolicy_FORBID__ENCRYPT__ALLOW__DECRYPT(), Wrappers.Option_None(), Wrappers.Option_None(), name, EsdkTestVectors.DecryptionMethod_OneShot())) + + @staticmethod + def V2ToDecryptTestVector(op, keys, name, obj, version): + d_0_valueOrError0_ = JSONHelpers.default__.GetObject(_dafny.Seq("result"), obj) + if (d_0_valueOrError0_).IsFailure(): + return (d_0_valueOrError0_).PropagateFailure() + elif True: + d_1_resultLoc_ = (d_0_valueOrError0_).Extract() + d_2_errorLoc_q_ = JSONHelpers.default__.GetObject(_dafny.Seq("error"), d_1_resultLoc_) + if (d_2_errorLoc_q_).is_Success: + return Wrappers.Result_Failure(default__.negativeTestVectorFound) + elif True: + d_3_valueOrError1_ = JSONHelpers.default__.GetObject(_dafny.Seq("output"), d_1_resultLoc_) + if (d_3_valueOrError1_).IsFailure(): + return (d_3_valueOrError1_).PropagateFailure() + elif True: + d_4_outputLoc_ = (d_3_valueOrError1_).Extract() + d_5_valueOrError2_ = JSONHelpers.default__.GetString(_dafny.Seq("plaintext"), d_4_outputLoc_) + if (d_5_valueOrError2_).IsFailure(): + return (d_5_valueOrError2_).PropagateFailure() + elif True: + d_6_plaintextLoc_ = (d_5_valueOrError2_).Extract() + d_7_valueOrError3_ = JSONHelpers.default__.GetString(_dafny.Seq("ciphertext"), obj) + if (d_7_valueOrError3_).IsFailure(): + return (d_7_valueOrError3_).PropagateFailure() + elif True: + d_8_ciphertextLoc_ = (d_7_valueOrError3_).Extract() + d_9_valueOrError4_ = Wrappers.default__.Need(((_dafny.Seq("file://")) < (d_8_ciphertextLoc_)) and ((_dafny.Seq("file://")) < (d_6_plaintextLoc_)), _dafny.Seq("Invalid file prefix in test vector")) + if (d_9_valueOrError4_).IsFailure(): + return (d_9_valueOrError4_).PropagateFailure() + elif True: + d_10_valueOrError5_ = JSONHelpers.default__.GetArray(_dafny.Seq("master-keys"), obj) + if (d_10_valueOrError5_).IsFailure(): + return (d_10_valueOrError5_).PropagateFailure() + elif True: + d_11_masterKeys_ = (d_10_valueOrError5_).Extract() + d_12_valueOrError6_ = default__.GetKeyDescriptions(d_11_masterKeys_, keys) + if (d_12_valueOrError6_).IsFailure(): + return (d_12_valueOrError6_).PropagateFailure() + elif True: + d_13_keyDescriptions_ = (d_12_valueOrError6_).Extract() + d_14_valueOrError7_ = default__.ToMultiKeyDescription(d_13_keyDescriptions_) + if (d_14_valueOrError7_).IsFailure(): + return (d_14_valueOrError7_).PropagateFailure() + elif True: + d_15_keyDescription_ = (d_14_valueOrError7_).Extract() + return Wrappers.Result_Success(EsdkTestVectors.EsdkDecryptTestVector_PositiveV1OrV2DecryptTestVector(name, version, (op).manifestPath, _dafny.Seq((d_8_ciphertextLoc_)[len(default__.FILE__PREPEND)::]), _dafny.Seq((d_6_plaintextLoc_)[len(default__.FILE__PREPEND)::]), Wrappers.Option_None(), Wrappers.Option_None(), d_15_keyDescription_, AwsCryptographyMaterialProvidersTypes.ESDKCommitmentPolicy_FORBID__ENCRYPT__ALLOW__DECRYPT(), Wrappers.Option_None(), Wrappers.Option_None(), name, EsdkTestVectors.DecryptionMethod_OneShot())) + + @staticmethod + def V3ToDecryptTestVector(op, keys, name, obj, version): + d_0_scenarioString_ = _dafny.Seq("decryption-scenario") + d_1_valueOrError0_ = JSONHelpers.default__.GetObject(d_0_scenarioString_, obj) + if (d_1_valueOrError0_).IsFailure(): + return (d_1_valueOrError0_).PropagateFailure() + elif True: + d_2_scenario_ = (d_1_valueOrError0_).Extract() + d_3_typeString_ = _dafny.Seq("type") + d_4_valueOrError1_ = JSONHelpers.default__.GetString(d_3_typeString_, d_2_scenario_) + if (d_4_valueOrError1_).IsFailure(): + return (d_4_valueOrError1_).PropagateFailure() + elif True: + d_5_typ_ = (d_4_valueOrError1_).Extract() + d_6_valueOrError2_ = JSONHelpers.default__.GetString(default__.ciphertextJsonKey, d_2_scenario_) + if (d_6_valueOrError2_).IsFailure(): + return (d_6_valueOrError2_).PropagateFailure() + elif True: + d_7_ciphertextLoc_ = (d_6_valueOrError2_).Extract() + d_8_valueOrError3_ = ParseJsonManifests.default__.GetAlgorithmSuiteInfo(d_2_scenario_) + if (d_8_valueOrError3_).IsFailure(): + return (d_8_valueOrError3_).PropagateFailure() + elif True: + d_9_algorithmSuite_ = (d_8_valueOrError3_).Extract() + d_10_valueOrError4_ = Wrappers.default__.Need(((d_9_algorithmSuite_).id).is_ESDK, _dafny.Seq("Unsupported algorithmSuiteId")) + if (d_10_valueOrError4_).IsFailure(): + return (d_10_valueOrError4_).PropagateFailure() + elif True: + d_11_valueOrError5_ = JSONHelpers.default__.GetOptionalPositiveLong(default__.frameSizeJsonKey, d_2_scenario_) + if (d_11_valueOrError5_).IsFailure(): + return (d_11_valueOrError5_).PropagateFailure() + elif True: + d_12_frameLength_ = (d_11_valueOrError5_).Extract() + d_13_valueOrError6_ = JSONHelpers.default__.SmallObjectToStringStringMap(default__.reproducedEncryptionContextJsonKey, d_2_scenario_) + if (d_13_valueOrError6_).IsFailure(): + return (d_13_valueOrError6_).PropagateFailure() + elif True: + d_14_reproducedEncryptionContextStrings_ = (d_13_valueOrError6_).Extract() + d_15_valueOrError7_ = JSONHelpers.default__.utf8EncodeMap(d_14_reproducedEncryptionContextStrings_) + if (d_15_valueOrError7_).IsFailure(): + return (d_15_valueOrError7_).PropagateFailure() + elif True: + d_16_reproducedEncryptionContext_ = (d_15_valueOrError7_).Extract() + d_17_valueOrError8_ = JSONHelpers.default__.GetString(_dafny.Seq("description"), d_2_scenario_) + if (d_17_valueOrError8_).IsFailure(): + return (d_17_valueOrError8_).PropagateFailure() + elif True: + d_18_description_ = (d_17_valueOrError8_).Extract() + d_19_valueOrError9_ = JSONHelpers.default__.GetString(_dafny.Seq("result"), d_2_scenario_) + if (d_19_valueOrError9_).IsFailure(): + return (d_19_valueOrError9_).PropagateFailure() + elif True: + d_20_result_ = (d_19_valueOrError9_).Extract() + d_21_valueOrError10_ = Wrappers.default__.Need(((_dafny.Seq("file://")) < (d_7_ciphertextLoc_)) and ((_dafny.Seq("file://")) < (d_20_result_)), _dafny.Seq("Invalid file prefix in test vector")) + if (d_21_valueOrError10_).IsFailure(): + return (d_21_valueOrError10_).PropagateFailure() + elif True: + source0_ = d_5_typ_ + if True: + if (source0_) == (_dafny.Seq("positive-esdk")): + d_22_valueOrError11_ = ParseJsonManifests.default__.GetKeyDescription(keys, default__.decryptKeyDescription, d_2_scenario_) + if (d_22_valueOrError11_).IsFailure(): + return (d_22_valueOrError11_).PropagateFailure() + elif True: + d_23_decryptKeyDescription_ = (d_22_valueOrError11_).Extract() + return Wrappers.Result_Success(EsdkTestVectors.EsdkDecryptTestVector_PositiveDecryptTestVector(name, version, (op).manifestPath, _dafny.Seq((d_7_ciphertextLoc_)[len(default__.FILE__PREPEND)::]), _dafny.Seq((d_20_result_)[len(default__.FILE__PREPEND)::]), Wrappers.Option_Some(d_16_reproducedEncryptionContext_), d_23_decryptKeyDescription_, AwsCryptographyMaterialProvidersTypes.ESDKCommitmentPolicy_FORBID__ENCRYPT__ALLOW__DECRYPT(), d_12_frameLength_, Wrappers.Option_Some(d_9_algorithmSuite_), d_18_description_, EsdkTestVectors.DecryptionMethod_OneShot())) + if True: + return Wrappers.Result_Failure((_dafny.Seq("Unsupported ESDK TestVector type: ")) + (d_5_typ_)) + + @staticmethod + def GetKeyDescriptions(keyArray, keys): + if (len(keyArray)) == (0): + return Wrappers.Result_Success(_dafny.Seq([])) + elif True: + d_0_currKey_ = (keyArray)[0] + d_1_valueOrError0_ = Wrappers.default__.Need((d_0_currKey_).is_Object, _dafny.Seq("Not an object")) + if (d_1_valueOrError0_).IsFailure(): + return (d_1_valueOrError0_).PropagateFailure() + elif True: + def lambda0_(d_3_e_): + return (d_3_e_).ToString() + + d_2_valueOrError1_ = (JSON_API.default__.Serialize(d_0_currKey_)).MapFailure(lambda0_) + if (d_2_valueOrError1_).IsFailure(): + return (d_2_valueOrError1_).PropagateFailure() + elif True: + d_4_encryptStr_ = (d_2_valueOrError1_).Extract() + d_5_valueOrError2_ = ((keys).GetKeyDescription(AwsCryptographyMaterialProvidersTestVectorKeysTypes.GetKeyDescriptionInput_GetKeyDescriptionInput(d_4_encryptStr_))).MapFailure(ParseJsonManifests.default__.ErrorToString) + if (d_5_valueOrError2_).IsFailure(): + return (d_5_valueOrError2_).PropagateFailure() + elif True: + d_6_encryptDecryptKeyDescription_ = (d_5_valueOrError2_).Extract() + d_7_valueOrError3_ = default__.GetKeyDescriptions(_dafny.Seq((keyArray)[1::]), keys) + if (d_7_valueOrError3_).IsFailure(): + return (d_7_valueOrError3_).PropagateFailure() + elif True: + d_8_tail_ = (d_7_valueOrError3_).Extract() + return Wrappers.Result_Success((_dafny.Seq([(d_6_encryptDecryptKeyDescription_).keyDescription])) + (d_8_tail_)) + + @staticmethod + def ToMultiKeyDescription(keyDescriptions): + if (len(keyDescriptions)) == (1): + return Wrappers.Result_Success((keyDescriptions)[0]) + elif True: + d_0_valueOrError0_ = Wrappers.default__.Need((len(keyDescriptions)) > (1), _dafny.Seq("Received invalid key description length")) + if (d_0_valueOrError0_).IsFailure(): + return (d_0_valueOrError0_).PropagateFailure() + elif True: + return Wrappers.Result_Success(AwsCryptographyMaterialProvidersTestVectorKeysTypes.KeyDescription_Multi(AwsCryptographyMaterialProvidersTestVectorKeysTypes.MultiKeyring_MultiKeyring(Wrappers.Option_Some((keyDescriptions)[0]), _dafny.Seq((keyDescriptions)[1::])))) + + @staticmethod + def GetPath(key, obj): + d_0_valueOrError0_ = JSONHelpers.default__.GetString(key, obj) + if (d_0_valueOrError0_).IsFailure(): + return (d_0_valueOrError0_).PropagateFailure() + elif True: + d_1_path_ = (d_0_valueOrError0_).Extract() + d_2_valueOrError1_ = Wrappers.default__.Need((default__.FILE__PREPEND) < (d_1_path_), _dafny.Seq("Received Invalid location for plaintext or ciphertext.")) + if (d_2_valueOrError1_).IsFailure(): + return (d_2_valueOrError1_).PropagateFailure() + elif True: + return Wrappers.Result_Success(_dafny.Seq((d_1_path_)[len(default__.FILE__PREPEND)::])) + + @staticmethod + def Result_q(key): + return ((key) == (_dafny.Seq("output"))) or ((key) == (_dafny.Seq("error"))) + + @_dafny.classproperty + def ciphertextJsonKey(instance): + return _dafny.Seq("ciphertext") + @_dafny.classproperty + def frameSizeJsonKey(instance): + return _dafny.Seq("frame-size") + @_dafny.classproperty + def reproducedEncryptionContextJsonKey(instance): + return _dafny.Seq("reproduced-encryption-context") + @_dafny.classproperty + def decryptKeyDescription(instance): + return _dafny.Seq("decryptKeyDescription") + @_dafny.classproperty + def FILE__PREPEND(instance): + return _dafny.Seq("file://") + @_dafny.classproperty + def negativeTestVectorFound(instance): + return _dafny.Seq("Negative test vector found; not supported yet.") + @_dafny.classproperty + def buildTestVectorError(instance): + return _dafny.Seq("Error other than negative test vector found thrown") + @_dafny.classproperty + def plaintextJsonKey(instance): + return _dafny.Seq("plaintext") + @_dafny.classproperty + def encryptionContextJsonKey(instance): + return _dafny.Seq("encryption-context") + @_dafny.classproperty + def encryptKeyDescription(instance): + return _dafny.Seq("encryptKeyDescription") + @_dafny.classproperty + def masterKeysJsonKey(instance): + return _dafny.Seq("master-keys") + @_dafny.classproperty + def decryptionMethodJsonKey(instance): + return _dafny.Seq("decryption-method") diff --git a/TestVectors/runtimes/python/src/aws_encryption_sdk_test_vectors/internaldafny/generated/WrappedESDK.py b/TestVectors/runtimes/python/src/aws_encryption_sdk_test_vectors/internaldafny/generated/WrappedESDK.py new file mode 100644 index 000000000..996054c41 --- /dev/null +++ b/TestVectors/runtimes/python/src/aws_encryption_sdk_test_vectors/internaldafny/generated/WrappedESDK.py @@ -0,0 +1,229 @@ +import sys +from typing import Callable, Any, TypeVar, NamedTuple +from math import floor +from itertools import count + +import aws_encryption_sdk_test_vectors.internaldafny.generated.module_ as module_ +import _dafny as _dafny +import System_ as System_ +import smithy_dafny_standard_library.internaldafny.generated.Wrappers as Wrappers +import smithy_dafny_standard_library.internaldafny.generated.BoundedInts as BoundedInts +import smithy_dafny_standard_library.internaldafny.generated.StandardLibrary_UInt as StandardLibrary_UInt +import smithy_dafny_standard_library.internaldafny.generated.StandardLibrary_Sequence as StandardLibrary_Sequence +import smithy_dafny_standard_library.internaldafny.generated.StandardLibrary_String as StandardLibrary_String +import smithy_dafny_standard_library.internaldafny.generated.StandardLibrary as StandardLibrary +import smithy_dafny_standard_library.internaldafny.generated.UTF8 as UTF8 +import aws_cryptography_primitives.internaldafny.generated.AwsCryptographyPrimitivesTypes as AwsCryptographyPrimitivesTypes +import aws_cryptography_primitives.internaldafny.generated.ExternRandom as ExternRandom +import aws_cryptography_primitives.internaldafny.generated.Random as Random +import aws_cryptography_primitives.internaldafny.generated.AESEncryption as AESEncryption +import aws_cryptography_primitives.internaldafny.generated.ExternDigest as ExternDigest +import aws_cryptography_primitives.internaldafny.generated.Digest as Digest +import aws_cryptography_primitives.internaldafny.generated.HMAC as HMAC +import aws_cryptography_primitives.internaldafny.generated.WrappedHMAC as WrappedHMAC +import aws_cryptography_primitives.internaldafny.generated.HKDF as HKDF +import aws_cryptography_primitives.internaldafny.generated.WrappedHKDF as WrappedHKDF +import aws_cryptography_primitives.internaldafny.generated.Signature as Signature +import aws_cryptography_primitives.internaldafny.generated.KdfCtr as KdfCtr +import aws_cryptography_primitives.internaldafny.generated.RSAEncryption as RSAEncryption +import aws_cryptography_primitives.internaldafny.generated.ECDH as ECDH +import aws_cryptography_primitives.internaldafny.generated.AwsCryptographyPrimitivesOperations as AwsCryptographyPrimitivesOperations +import aws_cryptography_primitives.internaldafny.generated.AtomicPrimitives as AtomicPrimitives +import aws_cryptography_internal_dynamodb.internaldafny.generated.ComAmazonawsDynamodbTypes as ComAmazonawsDynamodbTypes +import aws_cryptography_internal_kms.internaldafny.generated.ComAmazonawsKmsTypes as ComAmazonawsKmsTypes +import aws_cryptographic_material_providers.internaldafny.generated.AwsCryptographyKeyStoreTypes as AwsCryptographyKeyStoreTypes +import aws_cryptographic_material_providers.internaldafny.generated.AwsCryptographyMaterialProvidersTypes as AwsCryptographyMaterialProvidersTypes +import smithy_dafny_standard_library.internaldafny.generated.Base64 as Base64 +import aws_cryptographic_material_providers.internaldafny.generated.AlgorithmSuites as AlgorithmSuites +import aws_cryptographic_material_providers.internaldafny.generated.Materials as Materials +import aws_cryptographic_material_providers.internaldafny.generated.Keyring as Keyring +import smithy_dafny_standard_library.internaldafny.generated.Relations as Relations +import smithy_dafny_standard_library.internaldafny.generated.Seq_MergeSort as Seq_MergeSort +import smithy_dafny_standard_library.internaldafny.generated.Math as Math +import smithy_dafny_standard_library.internaldafny.generated.Seq as Seq +import aws_cryptographic_material_providers.internaldafny.generated.MultiKeyring as MultiKeyring +import aws_cryptographic_material_providers.internaldafny.generated.AwsArnParsing as AwsArnParsing +import aws_cryptographic_material_providers.internaldafny.generated.AwsKmsMrkAreUnique as AwsKmsMrkAreUnique +import smithy_dafny_standard_library.internaldafny.generated.Actions as Actions +import aws_cryptographic_material_providers.internaldafny.generated.AwsKmsMrkMatchForDecrypt as AwsKmsMrkMatchForDecrypt +import aws_cryptographic_material_providers.internaldafny.generated.AwsKmsUtils as AwsKmsUtils +import aws_cryptographic_material_providers.internaldafny.generated.Constants as Constants +import smithy_dafny_standard_library.internaldafny.generated.UUID as UUID +import aws_cryptographic_material_providers.internaldafny.generated.MaterialWrapping as MaterialWrapping +import smithy_dafny_standard_library.internaldafny.generated.SortedSets as SortedSets +import aws_cryptographic_material_providers.internaldafny.generated.CanonicalEncryptionContext as CanonicalEncryptionContext +import aws_cryptographic_material_providers.internaldafny.generated.IntermediateKeyWrapping as IntermediateKeyWrapping +import aws_cryptographic_material_providers.internaldafny.generated.EdkWrapping as EdkWrapping +import aws_cryptographic_material_providers.internaldafny.generated.ErrorMessages as ErrorMessages +import aws_cryptographic_material_providers.internaldafny.generated.AwsKmsKeyring as AwsKmsKeyring +import aws_cryptographic_material_providers.internaldafny.generated.StrictMultiKeyring as StrictMultiKeyring +import aws_cryptographic_material_providers.internaldafny.generated.AwsKmsDiscoveryKeyring as AwsKmsDiscoveryKeyring +import aws_cryptography_internal_kms.internaldafny.generated.Com_Amazonaws_Kms as Com_Amazonaws_Kms +import aws_cryptography_internal_dynamodb.internaldafny.generated.Com_Amazonaws_Dynamodb as Com_Amazonaws_Dynamodb +import aws_cryptographic_material_providers.internaldafny.generated.DiscoveryMultiKeyring as DiscoveryMultiKeyring +import aws_cryptographic_material_providers.internaldafny.generated.AwsKmsMrkDiscoveryKeyring as AwsKmsMrkDiscoveryKeyring +import aws_cryptographic_material_providers.internaldafny.generated.MrkAwareDiscoveryMultiKeyring as MrkAwareDiscoveryMultiKeyring +import aws_cryptographic_material_providers.internaldafny.generated.AwsKmsMrkKeyring as AwsKmsMrkKeyring +import aws_cryptographic_material_providers.internaldafny.generated.MrkAwareStrictMultiKeyring as MrkAwareStrictMultiKeyring +import smithy_dafny_standard_library.internaldafny.generated.DafnyLibraries as DafnyLibraries +import smithy_dafny_standard_library.internaldafny.generated.Time as Time +import aws_cryptographic_material_providers.internaldafny.generated.LocalCMC as LocalCMC +import aws_cryptographic_material_providers.internaldafny.generated.SynchronizedLocalCMC as SynchronizedLocalCMC +import aws_cryptographic_material_providers.internaldafny.generated.StormTracker as StormTracker +import aws_cryptographic_material_providers.internaldafny.generated.StormTrackingCMC as StormTrackingCMC +import aws_cryptographic_material_providers.internaldafny.generated.CacheConstants as CacheConstants +import aws_cryptographic_material_providers.internaldafny.generated.AwsKmsHierarchicalKeyring as AwsKmsHierarchicalKeyring +import aws_cryptographic_material_providers.internaldafny.generated.AwsKmsRsaKeyring as AwsKmsRsaKeyring +import aws_cryptographic_material_providers.internaldafny.generated.EcdhEdkWrapping as EcdhEdkWrapping +import aws_cryptographic_material_providers.internaldafny.generated.RawECDHKeyring as RawECDHKeyring +import aws_cryptographic_material_providers.internaldafny.generated.AwsKmsEcdhKeyring as AwsKmsEcdhKeyring +import aws_cryptographic_material_providers.internaldafny.generated.RawAESKeyring as RawAESKeyring +import aws_cryptographic_material_providers.internaldafny.generated.RawRSAKeyring as RawRSAKeyring +import aws_cryptographic_material_providers.internaldafny.generated.CMM as CMM +import aws_cryptographic_material_providers.internaldafny.generated.Defaults as Defaults +import aws_cryptographic_material_providers.internaldafny.generated.Commitment as Commitment +import aws_cryptographic_material_providers.internaldafny.generated.DefaultCMM as DefaultCMM +import aws_cryptographic_material_providers.internaldafny.generated.DefaultClientSupplier as DefaultClientSupplier +import aws_cryptographic_material_providers.internaldafny.generated.Utils as Utils +import aws_cryptographic_material_providers.internaldafny.generated.RequiredEncryptionContextCMM as RequiredEncryptionContextCMM +import aws_cryptographic_material_providers.internaldafny.generated.AwsCryptographyMaterialProvidersOperations as AwsCryptographyMaterialProvidersOperations +import aws_cryptographic_material_providers.internaldafny.generated.MaterialProviders as MaterialProviders +import aws_cryptographic_material_providers.internaldafny.generated.KeyStoreErrorMessages as KeyStoreErrorMessages +import aws_cryptographic_material_providers.internaldafny.generated.KmsArn as KmsArn +import aws_cryptographic_material_providers.internaldafny.generated.Structure as Structure +import aws_cryptographic_material_providers.internaldafny.generated.KMSKeystoreOperations as KMSKeystoreOperations +import aws_cryptographic_material_providers.internaldafny.generated.DDBKeystoreOperations as DDBKeystoreOperations +import aws_cryptographic_material_providers.internaldafny.generated.CreateKeys as CreateKeys +import aws_cryptographic_material_providers.internaldafny.generated.CreateKeyStoreTable as CreateKeyStoreTable +import aws_cryptographic_material_providers.internaldafny.generated.GetKeys as GetKeys +import aws_cryptographic_material_providers.internaldafny.generated.AwsCryptographyKeyStoreOperations as AwsCryptographyKeyStoreOperations +import aws_cryptographic_material_providers.internaldafny.generated.KeyStore as KeyStore +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AwsCryptographyMaterialProvidersTestVectorKeysTypes as AwsCryptographyMaterialProvidersTestVectorKeysTypes +import smithy_dafny_standard_library.internaldafny.generated.JSON_Utils_Views_Core as JSON_Utils_Views_Core +import smithy_dafny_standard_library.internaldafny.generated.JSON_Utils_Views_Writers as JSON_Utils_Views_Writers +import smithy_dafny_standard_library.internaldafny.generated.JSON_Utils_Lexers_Core as JSON_Utils_Lexers_Core +import smithy_dafny_standard_library.internaldafny.generated.JSON_Utils_Lexers_Strings as JSON_Utils_Lexers_Strings +import smithy_dafny_standard_library.internaldafny.generated.JSON_Utils_Cursors as JSON_Utils_Cursors +import smithy_dafny_standard_library.internaldafny.generated.JSON_Utils_Parsers as JSON_Utils_Parsers +import smithy_dafny_standard_library.internaldafny.generated.GeneralInternals as GeneralInternals +import smithy_dafny_standard_library.internaldafny.generated.MulInternalsNonlinear as MulInternalsNonlinear +import smithy_dafny_standard_library.internaldafny.generated.MulInternals as MulInternals +import smithy_dafny_standard_library.internaldafny.generated.Mul as Mul +import smithy_dafny_standard_library.internaldafny.generated.ModInternalsNonlinear as ModInternalsNonlinear +import smithy_dafny_standard_library.internaldafny.generated.DivInternalsNonlinear as DivInternalsNonlinear +import smithy_dafny_standard_library.internaldafny.generated.ModInternals as ModInternals +import smithy_dafny_standard_library.internaldafny.generated.DivInternals as DivInternals +import smithy_dafny_standard_library.internaldafny.generated.DivMod as DivMod +import smithy_dafny_standard_library.internaldafny.generated.Power as Power +import smithy_dafny_standard_library.internaldafny.generated.Logarithm as Logarithm +import smithy_dafny_standard_library.internaldafny.generated.JSON_Utils_Str_CharStrConversion as JSON_Utils_Str_CharStrConversion +import smithy_dafny_standard_library.internaldafny.generated.JSON_Utils_Str_CharStrEscaping as JSON_Utils_Str_CharStrEscaping +import smithy_dafny_standard_library.internaldafny.generated.JSON_Utils_Str as JSON_Utils_Str +import smithy_dafny_standard_library.internaldafny.generated.JSON_Utils_Seq as JSON_Utils_Seq +import smithy_dafny_standard_library.internaldafny.generated.JSON_Utils_Vectors as JSON_Utils_Vectors +import smithy_dafny_standard_library.internaldafny.generated.JSON_Errors as JSON_Errors +import smithy_dafny_standard_library.internaldafny.generated.JSON_Values as JSON_Values +import smithy_dafny_standard_library.internaldafny.generated.Unicode as Unicode +import smithy_dafny_standard_library.internaldafny.generated.Functions as Functions +import smithy_dafny_standard_library.internaldafny.generated.Utf8EncodingForm as Utf8EncodingForm +import smithy_dafny_standard_library.internaldafny.generated.Utf16EncodingForm as Utf16EncodingForm +import smithy_dafny_standard_library.internaldafny.generated.UnicodeStrings as UnicodeStrings +import smithy_dafny_standard_library.internaldafny.generated.JSON_Spec as JSON_Spec +import smithy_dafny_standard_library.internaldafny.generated.JSON_Grammar as JSON_Grammar +import smithy_dafny_standard_library.internaldafny.generated.JSON_Serializer_ByteStrConversion as JSON_Serializer_ByteStrConversion +import smithy_dafny_standard_library.internaldafny.generated.JSON_Serializer as JSON_Serializer +import smithy_dafny_standard_library.internaldafny.generated.JSON_Deserializer_Uint16StrConversion as JSON_Deserializer_Uint16StrConversion +import smithy_dafny_standard_library.internaldafny.generated.JSON_Deserializer_ByteStrConversion as JSON_Deserializer_ByteStrConversion +import smithy_dafny_standard_library.internaldafny.generated.JSON_Deserializer as JSON_Deserializer +import smithy_dafny_standard_library.internaldafny.generated.JSON_ConcreteSyntax_Spec as JSON_ConcreteSyntax_Spec +import smithy_dafny_standard_library.internaldafny.generated.JSON_ConcreteSyntax_SpecProperties as JSON_ConcreteSyntax_SpecProperties +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_Serializer as JSON_ZeroCopy_Serializer +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_Deserializer_Core as JSON_ZeroCopy_Deserializer_Core +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_Deserializer_Strings as JSON_ZeroCopy_Deserializer_Strings +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_Deserializer_Numbers as JSON_ZeroCopy_Deserializer_Numbers +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_Deserializer_ObjectParams as JSON_ZeroCopy_Deserializer_ObjectParams +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_Deserializer_Objects as JSON_ZeroCopy_Deserializer_Objects +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_Deserializer_ArrayParams as JSON_ZeroCopy_Deserializer_ArrayParams +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_Deserializer_Arrays as JSON_ZeroCopy_Deserializer_Arrays +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_Deserializer_Constants as JSON_ZeroCopy_Deserializer_Constants +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_Deserializer_Values as JSON_ZeroCopy_Deserializer_Values +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_Deserializer_API as JSON_ZeroCopy_Deserializer_API +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_Deserializer as JSON_ZeroCopy_Deserializer +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_API as JSON_ZeroCopy_API +import smithy_dafny_standard_library.internaldafny.generated.JSON_API as JSON_API +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.JSONHelpers as JSONHelpers +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.KeyDescription as KeyDescription +import smithy_dafny_standard_library.internaldafny.generated.HexStrings as HexStrings +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.KeyMaterial as KeyMaterial +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.CreateStaticKeyrings as CreateStaticKeyrings +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.CreateStaticKeyStores as CreateStaticKeyStores +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.KeyringFromKeyDescription as KeyringFromKeyDescription +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.CmmFromKeyDescription as CmmFromKeyDescription +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.WrappedMaterialProviders as WrappedMaterialProviders +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.KeysVectorOperations as KeysVectorOperations +import smithy_dafny_standard_library.internaldafny.generated.FileIO as FileIO +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.KeyVectors as KeyVectors +import aws_encryption_sdk.internaldafny.generated.AwsCryptographyEncryptionSdkTypes as AwsCryptographyEncryptionSdkTypes +import smithy_dafny_standard_library.internaldafny.generated.Streams as Streams +import aws_encryption_sdk.internaldafny.generated.SerializableTypes as SerializableTypes +import aws_encryption_sdk.internaldafny.generated.SerializeFunctions as SerializeFunctions +import aws_encryption_sdk.internaldafny.generated.EncryptionContext as EncryptionContext +import aws_encryption_sdk.internaldafny.generated.HeaderTypes as HeaderTypes +import aws_encryption_sdk.internaldafny.generated.SharedHeaderFunctions as SharedHeaderFunctions +import aws_encryption_sdk.internaldafny.generated.EncryptedDataKeys as EncryptedDataKeys +import aws_encryption_sdk.internaldafny.generated.V1HeaderBody as V1HeaderBody +import aws_encryption_sdk.internaldafny.generated.V2HeaderBody as V2HeaderBody +import aws_encryption_sdk.internaldafny.generated.HeaderAuth as HeaderAuth +import aws_encryption_sdk.internaldafny.generated.Header as Header +import aws_encryption_sdk.internaldafny.generated.Frames as Frames +import aws_encryption_sdk.internaldafny.generated.MessageBody as MessageBody +import aws_encryption_sdk.internaldafny.generated.KeyDerivation as KeyDerivation +import aws_encryption_sdk.internaldafny.generated.EncryptDecryptHelpers as EncryptDecryptHelpers +import aws_encryption_sdk.internaldafny.generated.AwsEncryptionSdkOperations as AwsEncryptionSdkOperations +import aws_encryption_sdk.internaldafny.generated.EncryptionSdk as EncryptionSdk +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.MplManifestOptions as MplManifestOptions +import smithy_dafny_standard_library.internaldafny.generated.GetOpt as GetOpt +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllAlgorithmSuites as AllAlgorithmSuites +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.TestVectors as TestVectors +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllHierarchy as AllHierarchy +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllKms as AllKms +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllKmsMrkAware as AllKmsMrkAware +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllKmsMrkAwareDiscovery as AllKmsMrkAwareDiscovery +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllKmsRsa as AllKmsRsa +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllKmsEcdh as AllKmsEcdh +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllRawAES as AllRawAES +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllRawRSA as AllRawRSA +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllRawECDH as AllRawECDH +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllDefaultCmm as AllDefaultCmm +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllRequiredEncryptionContextCmm as AllRequiredEncryptionContextCmm +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllMulti as AllMulti +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.WriteJsonManifests as WriteJsonManifests +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.CompleteVectors as CompleteVectors +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.ParseJsonManifests as ParseJsonManifests +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.TestManifests as TestManifests +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.WrappedMaterialProvidersMain as WrappedMaterialProvidersMain +import aws_cryptography_primitives.internaldafny.generated.AesKdfCtr as AesKdfCtr +import smithy_dafny_standard_library.internaldafny.generated.StandardLibraryInterop as StandardLibraryInterop +import smithy_dafny_standard_library.internaldafny.generated.Sorting as Sorting +import smithy_dafny_standard_library.internaldafny.generated.FloatCompare as FloatCompare +import smithy_dafny_standard_library.internaldafny.generated.ConcurrentCall as ConcurrentCall +import smithy_dafny_standard_library.internaldafny.generated.Base64Lemmas as Base64Lemmas + +# Module: WrappedESDK + +class default__: + def __init__(self): + pass + + @staticmethod + def WrappedDefaultAwsEncryptionSdkConfig(): + return AwsCryptographyEncryptionSdkTypes.AwsEncryptionSdkConfig_AwsEncryptionSdkConfig(Wrappers.Option_Some(AwsCryptographyMaterialProvidersTypes.ESDKCommitmentPolicy_REQUIRE__ENCRYPT__REQUIRE__DECRYPT()), Wrappers.Option_None(), Wrappers.Option_None()) + + @staticmethod + def WrappedAwsEncryptionSdkConfigWithSuppliedCommitment(commitmentPolicy): + return AwsCryptographyEncryptionSdkTypes.AwsEncryptionSdkConfig_AwsEncryptionSdkConfig(Wrappers.Option_Some(commitmentPolicy), Wrappers.Option_None(), Wrappers.Option_None()) + + @staticmethod + def WrappedAwsEncryptionSdkConfig(commitmentPolicy, maxEncryptedDataKeys, netV4__0__0__RetryPolicy): + return AwsCryptographyEncryptionSdkTypes.AwsEncryptionSdkConfig_AwsEncryptionSdkConfig(Wrappers.Option_Some(commitmentPolicy), Wrappers.Option_Some(maxEncryptedDataKeys), Wrappers.Option_Some(netV4__0__0__RetryPolicy)) + diff --git a/TestVectors/runtimes/python/src/aws_encryption_sdk_test_vectors/internaldafny/generated/WrappedESDKMain.py b/TestVectors/runtimes/python/src/aws_encryption_sdk_test_vectors/internaldafny/generated/WrappedESDKMain.py new file mode 100644 index 000000000..155d4caef --- /dev/null +++ b/TestVectors/runtimes/python/src/aws_encryption_sdk_test_vectors/internaldafny/generated/WrappedESDKMain.py @@ -0,0 +1,346 @@ +import sys +from typing import Callable, Any, TypeVar, NamedTuple +from math import floor +from itertools import count + +import aws_encryption_sdk_test_vectors.internaldafny.generated.module_ as module_ +import _dafny as _dafny +import System_ as System_ +import smithy_dafny_standard_library.internaldafny.generated.Wrappers as Wrappers +import smithy_dafny_standard_library.internaldafny.generated.BoundedInts as BoundedInts +import smithy_dafny_standard_library.internaldafny.generated.StandardLibrary_UInt as StandardLibrary_UInt +import smithy_dafny_standard_library.internaldafny.generated.StandardLibrary_Sequence as StandardLibrary_Sequence +import smithy_dafny_standard_library.internaldafny.generated.StandardLibrary_String as StandardLibrary_String +import smithy_dafny_standard_library.internaldafny.generated.StandardLibrary as StandardLibrary +import smithy_dafny_standard_library.internaldafny.generated.UTF8 as UTF8 +import aws_cryptography_primitives.internaldafny.generated.AwsCryptographyPrimitivesTypes as AwsCryptographyPrimitivesTypes +import aws_cryptography_primitives.internaldafny.generated.ExternRandom as ExternRandom +import aws_cryptography_primitives.internaldafny.generated.Random as Random +import aws_cryptography_primitives.internaldafny.generated.AESEncryption as AESEncryption +import aws_cryptography_primitives.internaldafny.generated.ExternDigest as ExternDigest +import aws_cryptography_primitives.internaldafny.generated.Digest as Digest +import aws_cryptography_primitives.internaldafny.generated.HMAC as HMAC +import aws_cryptography_primitives.internaldafny.generated.WrappedHMAC as WrappedHMAC +import aws_cryptography_primitives.internaldafny.generated.HKDF as HKDF +import aws_cryptography_primitives.internaldafny.generated.WrappedHKDF as WrappedHKDF +import aws_cryptography_primitives.internaldafny.generated.Signature as Signature +import aws_cryptography_primitives.internaldafny.generated.KdfCtr as KdfCtr +import aws_cryptography_primitives.internaldafny.generated.RSAEncryption as RSAEncryption +import aws_cryptography_primitives.internaldafny.generated.ECDH as ECDH +import aws_cryptography_primitives.internaldafny.generated.AwsCryptographyPrimitivesOperations as AwsCryptographyPrimitivesOperations +import aws_cryptography_primitives.internaldafny.generated.AtomicPrimitives as AtomicPrimitives +import aws_cryptography_internal_dynamodb.internaldafny.generated.ComAmazonawsDynamodbTypes as ComAmazonawsDynamodbTypes +import aws_cryptography_internal_kms.internaldafny.generated.ComAmazonawsKmsTypes as ComAmazonawsKmsTypes +import aws_cryptographic_material_providers.internaldafny.generated.AwsCryptographyKeyStoreTypes as AwsCryptographyKeyStoreTypes +import aws_cryptographic_material_providers.internaldafny.generated.AwsCryptographyMaterialProvidersTypes as AwsCryptographyMaterialProvidersTypes +import smithy_dafny_standard_library.internaldafny.generated.Base64 as Base64 +import aws_cryptographic_material_providers.internaldafny.generated.AlgorithmSuites as AlgorithmSuites +import aws_cryptographic_material_providers.internaldafny.generated.Materials as Materials +import aws_cryptographic_material_providers.internaldafny.generated.Keyring as Keyring +import smithy_dafny_standard_library.internaldafny.generated.Relations as Relations +import smithy_dafny_standard_library.internaldafny.generated.Seq_MergeSort as Seq_MergeSort +import smithy_dafny_standard_library.internaldafny.generated.Math as Math +import smithy_dafny_standard_library.internaldafny.generated.Seq as Seq +import aws_cryptographic_material_providers.internaldafny.generated.MultiKeyring as MultiKeyring +import aws_cryptographic_material_providers.internaldafny.generated.AwsArnParsing as AwsArnParsing +import aws_cryptographic_material_providers.internaldafny.generated.AwsKmsMrkAreUnique as AwsKmsMrkAreUnique +import smithy_dafny_standard_library.internaldafny.generated.Actions as Actions +import aws_cryptographic_material_providers.internaldafny.generated.AwsKmsMrkMatchForDecrypt as AwsKmsMrkMatchForDecrypt +import aws_cryptographic_material_providers.internaldafny.generated.AwsKmsUtils as AwsKmsUtils +import aws_cryptographic_material_providers.internaldafny.generated.Constants as Constants +import smithy_dafny_standard_library.internaldafny.generated.UUID as UUID +import aws_cryptographic_material_providers.internaldafny.generated.MaterialWrapping as MaterialWrapping +import smithy_dafny_standard_library.internaldafny.generated.SortedSets as SortedSets +import aws_cryptographic_material_providers.internaldafny.generated.CanonicalEncryptionContext as CanonicalEncryptionContext +import aws_cryptographic_material_providers.internaldafny.generated.IntermediateKeyWrapping as IntermediateKeyWrapping +import aws_cryptographic_material_providers.internaldafny.generated.EdkWrapping as EdkWrapping +import aws_cryptographic_material_providers.internaldafny.generated.ErrorMessages as ErrorMessages +import aws_cryptographic_material_providers.internaldafny.generated.AwsKmsKeyring as AwsKmsKeyring +import aws_cryptographic_material_providers.internaldafny.generated.StrictMultiKeyring as StrictMultiKeyring +import aws_cryptographic_material_providers.internaldafny.generated.AwsKmsDiscoveryKeyring as AwsKmsDiscoveryKeyring +import aws_cryptography_internal_kms.internaldafny.generated.Com_Amazonaws_Kms as Com_Amazonaws_Kms +import aws_cryptography_internal_dynamodb.internaldafny.generated.Com_Amazonaws_Dynamodb as Com_Amazonaws_Dynamodb +import aws_cryptographic_material_providers.internaldafny.generated.DiscoveryMultiKeyring as DiscoveryMultiKeyring +import aws_cryptographic_material_providers.internaldafny.generated.AwsKmsMrkDiscoveryKeyring as AwsKmsMrkDiscoveryKeyring +import aws_cryptographic_material_providers.internaldafny.generated.MrkAwareDiscoveryMultiKeyring as MrkAwareDiscoveryMultiKeyring +import aws_cryptographic_material_providers.internaldafny.generated.AwsKmsMrkKeyring as AwsKmsMrkKeyring +import aws_cryptographic_material_providers.internaldafny.generated.MrkAwareStrictMultiKeyring as MrkAwareStrictMultiKeyring +import smithy_dafny_standard_library.internaldafny.generated.DafnyLibraries as DafnyLibraries +import smithy_dafny_standard_library.internaldafny.generated.Time as Time +import aws_cryptographic_material_providers.internaldafny.generated.LocalCMC as LocalCMC +import aws_cryptographic_material_providers.internaldafny.generated.SynchronizedLocalCMC as SynchronizedLocalCMC +import aws_cryptographic_material_providers.internaldafny.generated.StormTracker as StormTracker +import aws_cryptographic_material_providers.internaldafny.generated.StormTrackingCMC as StormTrackingCMC +import aws_cryptographic_material_providers.internaldafny.generated.CacheConstants as CacheConstants +import aws_cryptographic_material_providers.internaldafny.generated.AwsKmsHierarchicalKeyring as AwsKmsHierarchicalKeyring +import aws_cryptographic_material_providers.internaldafny.generated.AwsKmsRsaKeyring as AwsKmsRsaKeyring +import aws_cryptographic_material_providers.internaldafny.generated.EcdhEdkWrapping as EcdhEdkWrapping +import aws_cryptographic_material_providers.internaldafny.generated.RawECDHKeyring as RawECDHKeyring +import aws_cryptographic_material_providers.internaldafny.generated.AwsKmsEcdhKeyring as AwsKmsEcdhKeyring +import aws_cryptographic_material_providers.internaldafny.generated.RawAESKeyring as RawAESKeyring +import aws_cryptographic_material_providers.internaldafny.generated.RawRSAKeyring as RawRSAKeyring +import aws_cryptographic_material_providers.internaldafny.generated.CMM as CMM +import aws_cryptographic_material_providers.internaldafny.generated.Defaults as Defaults +import aws_cryptographic_material_providers.internaldafny.generated.Commitment as Commitment +import aws_cryptographic_material_providers.internaldafny.generated.DefaultCMM as DefaultCMM +import aws_cryptographic_material_providers.internaldafny.generated.DefaultClientSupplier as DefaultClientSupplier +import aws_cryptographic_material_providers.internaldafny.generated.Utils as Utils +import aws_cryptographic_material_providers.internaldafny.generated.RequiredEncryptionContextCMM as RequiredEncryptionContextCMM +import aws_cryptographic_material_providers.internaldafny.generated.AwsCryptographyMaterialProvidersOperations as AwsCryptographyMaterialProvidersOperations +import aws_cryptographic_material_providers.internaldafny.generated.MaterialProviders as MaterialProviders +import aws_cryptographic_material_providers.internaldafny.generated.KeyStoreErrorMessages as KeyStoreErrorMessages +import aws_cryptographic_material_providers.internaldafny.generated.KmsArn as KmsArn +import aws_cryptographic_material_providers.internaldafny.generated.Structure as Structure +import aws_cryptographic_material_providers.internaldafny.generated.KMSKeystoreOperations as KMSKeystoreOperations +import aws_cryptographic_material_providers.internaldafny.generated.DDBKeystoreOperations as DDBKeystoreOperations +import aws_cryptographic_material_providers.internaldafny.generated.CreateKeys as CreateKeys +import aws_cryptographic_material_providers.internaldafny.generated.CreateKeyStoreTable as CreateKeyStoreTable +import aws_cryptographic_material_providers.internaldafny.generated.GetKeys as GetKeys +import aws_cryptographic_material_providers.internaldafny.generated.AwsCryptographyKeyStoreOperations as AwsCryptographyKeyStoreOperations +import aws_cryptographic_material_providers.internaldafny.generated.KeyStore as KeyStore +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AwsCryptographyMaterialProvidersTestVectorKeysTypes as AwsCryptographyMaterialProvidersTestVectorKeysTypes +import smithy_dafny_standard_library.internaldafny.generated.JSON_Utils_Views_Core as JSON_Utils_Views_Core +import smithy_dafny_standard_library.internaldafny.generated.JSON_Utils_Views_Writers as JSON_Utils_Views_Writers +import smithy_dafny_standard_library.internaldafny.generated.JSON_Utils_Lexers_Core as JSON_Utils_Lexers_Core +import smithy_dafny_standard_library.internaldafny.generated.JSON_Utils_Lexers_Strings as JSON_Utils_Lexers_Strings +import smithy_dafny_standard_library.internaldafny.generated.JSON_Utils_Cursors as JSON_Utils_Cursors +import smithy_dafny_standard_library.internaldafny.generated.JSON_Utils_Parsers as JSON_Utils_Parsers +import smithy_dafny_standard_library.internaldafny.generated.GeneralInternals as GeneralInternals +import smithy_dafny_standard_library.internaldafny.generated.MulInternalsNonlinear as MulInternalsNonlinear +import smithy_dafny_standard_library.internaldafny.generated.MulInternals as MulInternals +import smithy_dafny_standard_library.internaldafny.generated.Mul as Mul +import smithy_dafny_standard_library.internaldafny.generated.ModInternalsNonlinear as ModInternalsNonlinear +import smithy_dafny_standard_library.internaldafny.generated.DivInternalsNonlinear as DivInternalsNonlinear +import smithy_dafny_standard_library.internaldafny.generated.ModInternals as ModInternals +import smithy_dafny_standard_library.internaldafny.generated.DivInternals as DivInternals +import smithy_dafny_standard_library.internaldafny.generated.DivMod as DivMod +import smithy_dafny_standard_library.internaldafny.generated.Power as Power +import smithy_dafny_standard_library.internaldafny.generated.Logarithm as Logarithm +import smithy_dafny_standard_library.internaldafny.generated.JSON_Utils_Str_CharStrConversion as JSON_Utils_Str_CharStrConversion +import smithy_dafny_standard_library.internaldafny.generated.JSON_Utils_Str_CharStrEscaping as JSON_Utils_Str_CharStrEscaping +import smithy_dafny_standard_library.internaldafny.generated.JSON_Utils_Str as JSON_Utils_Str +import smithy_dafny_standard_library.internaldafny.generated.JSON_Utils_Seq as JSON_Utils_Seq +import smithy_dafny_standard_library.internaldafny.generated.JSON_Utils_Vectors as JSON_Utils_Vectors +import smithy_dafny_standard_library.internaldafny.generated.JSON_Errors as JSON_Errors +import smithy_dafny_standard_library.internaldafny.generated.JSON_Values as JSON_Values +import smithy_dafny_standard_library.internaldafny.generated.Unicode as Unicode +import smithy_dafny_standard_library.internaldafny.generated.Functions as Functions +import smithy_dafny_standard_library.internaldafny.generated.Utf8EncodingForm as Utf8EncodingForm +import smithy_dafny_standard_library.internaldafny.generated.Utf16EncodingForm as Utf16EncodingForm +import smithy_dafny_standard_library.internaldafny.generated.UnicodeStrings as UnicodeStrings +import smithy_dafny_standard_library.internaldafny.generated.JSON_Spec as JSON_Spec +import smithy_dafny_standard_library.internaldafny.generated.JSON_Grammar as JSON_Grammar +import smithy_dafny_standard_library.internaldafny.generated.JSON_Serializer_ByteStrConversion as JSON_Serializer_ByteStrConversion +import smithy_dafny_standard_library.internaldafny.generated.JSON_Serializer as JSON_Serializer +import smithy_dafny_standard_library.internaldafny.generated.JSON_Deserializer_Uint16StrConversion as JSON_Deserializer_Uint16StrConversion +import smithy_dafny_standard_library.internaldafny.generated.JSON_Deserializer_ByteStrConversion as JSON_Deserializer_ByteStrConversion +import smithy_dafny_standard_library.internaldafny.generated.JSON_Deserializer as JSON_Deserializer +import smithy_dafny_standard_library.internaldafny.generated.JSON_ConcreteSyntax_Spec as JSON_ConcreteSyntax_Spec +import smithy_dafny_standard_library.internaldafny.generated.JSON_ConcreteSyntax_SpecProperties as JSON_ConcreteSyntax_SpecProperties +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_Serializer as JSON_ZeroCopy_Serializer +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_Deserializer_Core as JSON_ZeroCopy_Deserializer_Core +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_Deserializer_Strings as JSON_ZeroCopy_Deserializer_Strings +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_Deserializer_Numbers as JSON_ZeroCopy_Deserializer_Numbers +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_Deserializer_ObjectParams as JSON_ZeroCopy_Deserializer_ObjectParams +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_Deserializer_Objects as JSON_ZeroCopy_Deserializer_Objects +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_Deserializer_ArrayParams as JSON_ZeroCopy_Deserializer_ArrayParams +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_Deserializer_Arrays as JSON_ZeroCopy_Deserializer_Arrays +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_Deserializer_Constants as JSON_ZeroCopy_Deserializer_Constants +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_Deserializer_Values as JSON_ZeroCopy_Deserializer_Values +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_Deserializer_API as JSON_ZeroCopy_Deserializer_API +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_Deserializer as JSON_ZeroCopy_Deserializer +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_API as JSON_ZeroCopy_API +import smithy_dafny_standard_library.internaldafny.generated.JSON_API as JSON_API +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.JSONHelpers as JSONHelpers +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.KeyDescription as KeyDescription +import smithy_dafny_standard_library.internaldafny.generated.HexStrings as HexStrings +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.KeyMaterial as KeyMaterial +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.CreateStaticKeyrings as CreateStaticKeyrings +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.CreateStaticKeyStores as CreateStaticKeyStores +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.KeyringFromKeyDescription as KeyringFromKeyDescription +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.CmmFromKeyDescription as CmmFromKeyDescription +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.WrappedMaterialProviders as WrappedMaterialProviders +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.KeysVectorOperations as KeysVectorOperations +import smithy_dafny_standard_library.internaldafny.generated.FileIO as FileIO +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.KeyVectors as KeyVectors +import aws_encryption_sdk.internaldafny.generated.AwsCryptographyEncryptionSdkTypes as AwsCryptographyEncryptionSdkTypes +import smithy_dafny_standard_library.internaldafny.generated.Streams as Streams +import aws_encryption_sdk.internaldafny.generated.SerializableTypes as SerializableTypes +import aws_encryption_sdk.internaldafny.generated.SerializeFunctions as SerializeFunctions +import aws_encryption_sdk.internaldafny.generated.EncryptionContext as EncryptionContext +import aws_encryption_sdk.internaldafny.generated.HeaderTypes as HeaderTypes +import aws_encryption_sdk.internaldafny.generated.SharedHeaderFunctions as SharedHeaderFunctions +import aws_encryption_sdk.internaldafny.generated.EncryptedDataKeys as EncryptedDataKeys +import aws_encryption_sdk.internaldafny.generated.V1HeaderBody as V1HeaderBody +import aws_encryption_sdk.internaldafny.generated.V2HeaderBody as V2HeaderBody +import aws_encryption_sdk.internaldafny.generated.HeaderAuth as HeaderAuth +import aws_encryption_sdk.internaldafny.generated.Header as Header +import aws_encryption_sdk.internaldafny.generated.Frames as Frames +import aws_encryption_sdk.internaldafny.generated.MessageBody as MessageBody +import aws_encryption_sdk.internaldafny.generated.KeyDerivation as KeyDerivation +import aws_encryption_sdk.internaldafny.generated.EncryptDecryptHelpers as EncryptDecryptHelpers +import aws_encryption_sdk.internaldafny.generated.AwsEncryptionSdkOperations as AwsEncryptionSdkOperations +import aws_encryption_sdk.internaldafny.generated.EncryptionSdk as EncryptionSdk +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.MplManifestOptions as MplManifestOptions +import smithy_dafny_standard_library.internaldafny.generated.GetOpt as GetOpt +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllAlgorithmSuites as AllAlgorithmSuites +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.TestVectors as TestVectors +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllHierarchy as AllHierarchy +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllKms as AllKms +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllKmsMrkAware as AllKmsMrkAware +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllKmsMrkAwareDiscovery as AllKmsMrkAwareDiscovery +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllKmsRsa as AllKmsRsa +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllKmsEcdh as AllKmsEcdh +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllRawAES as AllRawAES +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllRawRSA as AllRawRSA +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllRawECDH as AllRawECDH +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllDefaultCmm as AllDefaultCmm +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllRequiredEncryptionContextCmm as AllRequiredEncryptionContextCmm +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllMulti as AllMulti +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.WriteJsonManifests as WriteJsonManifests +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.CompleteVectors as CompleteVectors +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.ParseJsonManifests as ParseJsonManifests +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.TestManifests as TestManifests +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.WrappedMaterialProvidersMain as WrappedMaterialProvidersMain +import aws_cryptography_primitives.internaldafny.generated.AesKdfCtr as AesKdfCtr +import smithy_dafny_standard_library.internaldafny.generated.StandardLibraryInterop as StandardLibraryInterop +import smithy_dafny_standard_library.internaldafny.generated.Sorting as Sorting +import smithy_dafny_standard_library.internaldafny.generated.FloatCompare as FloatCompare +import smithy_dafny_standard_library.internaldafny.generated.ConcurrentCall as ConcurrentCall +import smithy_dafny_standard_library.internaldafny.generated.Base64Lemmas as Base64Lemmas +import aws_encryption_sdk_test_vectors.internaldafny.generated.WrappedESDK as WrappedESDK +import aws_encryption_sdk_test_vectors.internaldafny.generated.EsdkManifestOptions as EsdkManifestOptions +import aws_encryption_sdk_test_vectors.internaldafny.generated.EsdkTestVectors as EsdkTestVectors +import aws_encryption_sdk_test_vectors.internaldafny.generated.AllEsdkV4NoReqEc as AllEsdkV4NoReqEc +import aws_encryption_sdk_test_vectors.internaldafny.generated.AllEsdkV4WithReqEc as AllEsdkV4WithReqEc +import aws_encryption_sdk_test_vectors.internaldafny.generated.WriteEsdkJsonManifests as WriteEsdkJsonManifests +import aws_encryption_sdk_test_vectors.internaldafny.generated.WriteVectors as WriteVectors +import aws_encryption_sdk_test_vectors.internaldafny.generated.ParseEsdkJsonManifest as ParseEsdkJsonManifest +import aws_encryption_sdk_test_vectors.internaldafny.generated.EsdkTestManifests as EsdkTestManifests + +# Module: WrappedESDKMain + +class default__: + def __init__(self): + pass + + @staticmethod + def Main2(args): + d_0_vectorOptions_: GetOpt.Options + d_0_vectorOptions_ = GetOpt.Options_Options(_dafny.Seq("test-vectors"), _dafny.Seq("?"), _dafny.Seq([GetOpt.Param_Command(GetOpt.Options_Options(_dafny.Seq("decrypt"), _dafny.Seq("decrypt command for test-vectors"), _dafny.Seq([GetOpt.Param_Opt(_dafny.Seq("manifest-path"), _dafny.Seq("relative path to the location of the manifest"), _dafny.Seq("arg"), GetOpt.default__.NullChar, GetOpt.Unused_Required(), False, GetOpt.Visibility_Normal(), _dafny.Seq([]), _dafny.Seq([]), GetOpt.Tri_No()), GetOpt.Param_Opt(_dafny.Seq("manifest-name"), _dafny.Seq("name of file that contains the decrypt vectors file"), _dafny.Seq("arg"), GetOpt.default__.NullChar, GetOpt.Unused_Required(), False, GetOpt.Visibility_Normal(), _dafny.Seq([]), _dafny.Seq([]), GetOpt.Tri_No()), GetOpt.Param_Opt(_dafny.Seq("test-name"), _dafny.Seq("id of the test to run"), _dafny.Seq("arg"), GetOpt.default__.NullChar, GetOpt.Unused_UnusedOk(), False, GetOpt.Visibility_Normal(), _dafny.Seq([]), _dafny.Seq([]), GetOpt.Tri_No())]))), GetOpt.Param_Command(GetOpt.Options_Options(_dafny.Seq("encrypt"), _dafny.Seq("encrypt command for test-vectors"), _dafny.Seq([GetOpt.Param_Opt(_dafny.Seq("manifest-path"), _dafny.Seq("relative path to the location of the manifest"), _dafny.Seq("arg"), GetOpt.default__.NullChar, GetOpt.Unused_Required(), False, GetOpt.Visibility_Normal(), _dafny.Seq([]), _dafny.Seq([]), GetOpt.Tri_No()), GetOpt.Param_Opt(_dafny.Seq("decrypt-manifest-path"), _dafny.Seq("relative path to the location where the decrypted manifest will be written to."), _dafny.Seq("arg"), GetOpt.default__.NullChar, GetOpt.Unused_Required(), False, GetOpt.Visibility_Normal(), _dafny.Seq([]), _dafny.Seq([]), GetOpt.Tri_No()), GetOpt.Param_Opt(_dafny.Seq("test-name"), _dafny.Seq("id of the test to run"), _dafny.Seq("arg"), GetOpt.default__.NullChar, GetOpt.Unused_UnusedOk(), False, GetOpt.Visibility_Normal(), _dafny.Seq([]), _dafny.Seq([]), GetOpt.Tri_No())]))), GetOpt.Param_Command(GetOpt.Options_Options(_dafny.Seq("encrypt-manifest"), _dafny.Seq("encryp manifest command for test-vectors"), _dafny.Seq([GetOpt.Param_Opt(_dafny.Seq("encrypt-manifest-output"), _dafny.Seq("relative path of where to store the encrypt-manifest produced"), _dafny.Seq("arg"), GetOpt.default__.NullChar, GetOpt.Unused_Required(), False, GetOpt.Visibility_Normal(), _dafny.Seq([]), _dafny.Seq([]), GetOpt.Tri_No())])))])) + if not((0) < (len(args))): + raise _dafny.HaltException("dafny/TestVectors/src/Index.dfy(40,4): " + _dafny.string_of(_dafny.Seq("expectation violation"))) + d_1_parsedOptions_q_: Wrappers.Result + d_1_parsedOptions_q_ = GetOpt.default__.GetOptions(d_0_vectorOptions_, args) + if (d_1_parsedOptions_q_).is_Success: + d_2_h_: Wrappers.Option + d_2_h_ = GetOpt.default__.NeedsHelp(d_0_vectorOptions_, (d_1_parsedOptions_q_).value, _dafny.Seq("")) + if (d_2_h_).is_Some: + _dafny.print(_dafny.string_of((d_2_h_).value)) + return + d_3_op_q_: Wrappers.Result + d_3_op_q_ = default__.ParseCommandLineOptions((d_1_parsedOptions_q_).value) + if (d_3_op_q_).is_Success: + d_4_op_: EsdkManifestOptions.ManifestOptions + d_4_op_ = (d_3_op_q_).value + source0_ = d_4_op_ + with _dafny.label("match0"): + if True: + if source0_.is_Decrypt: + d_5_result_: Wrappers.Result + out0_: Wrappers.Result + out0_ = EsdkTestManifests.default__.StartDecryptVectors(d_4_op_) + d_5_result_ = out0_ + if (d_5_result_).is_Failure: + _dafny.print(_dafny.string_of((d_5_result_).error)) + if not((d_5_result_).is_Success): + raise _dafny.HaltException("dafny/TestVectors/src/Index.dfy(59,10): " + _dafny.string_of(_dafny.Seq("expectation violation"))) + raise _dafny.Break("match0") + if True: + if source0_.is_Encrypt: + d_6_result_: Wrappers.Result + out1_: Wrappers.Result + out1_ = EsdkTestManifests.default__.StartEncryptVectors(d_4_op_) + d_6_result_ = out1_ + if (d_6_result_).is_Failure: + _dafny.print(_dafny.string_of((d_6_result_).error)) + if not((d_6_result_).is_Success): + raise _dafny.HaltException("dafny/TestVectors/src/Index.dfy(65,10): " + _dafny.string_of(_dafny.Seq("expectation violation"))) + raise _dafny.Break("match0") + if True: + d_7_result_: Wrappers.Result + out2_: Wrappers.Result + out2_ = WriteVectors.default__.WriteTestVectors(d_4_op_) + d_7_result_ = out2_ + if (d_7_result_).is_Failure: + _dafny.print(_dafny.string_of((d_7_result_).error)) + if not((d_7_result_).is_Success): + raise _dafny.HaltException("dafny/TestVectors/src/Index.dfy(71,10): " + _dafny.string_of(_dafny.Seq("expectation violation"))) + pass + elif True: + _dafny.print(_dafny.string_of(((d_3_op_q_).error) + (_dafny.Seq("\n")))) + _dafny.print(_dafny.string_of(_dafny.Seq("help\n"))) + elif True: + _dafny.print(_dafny.string_of(((d_1_parsedOptions_q_).error) + (_dafny.Seq("\n")))) + + @staticmethod + def ParseCommandLineOptions(parsedOptions): + d_0_valueOrError0_ = Wrappers.default__.Need(((parsedOptions).subcommand).is_Some, _dafny.Seq("Must supply subcommand\n")) + if (d_0_valueOrError0_).IsFailure(): + return (d_0_valueOrError0_).PropagateFailure() + elif True: + source0_ = (((parsedOptions).subcommand).value).command + if True: + if (source0_) == (_dafny.Seq("decrypt")): + return default__.ParseDecryptCmd((((parsedOptions).subcommand).value).params) + if True: + if (source0_) == (_dafny.Seq("encrypt")): + return default__.ParseEncryptCmd((((parsedOptions).subcommand).value).params) + if True: + if (source0_) == (_dafny.Seq("encrypt-manifest")): + return default__.ParseEncryptManifestCmd((((parsedOptions).subcommand).value).params) + if True: + return Wrappers.Result_Failure(_dafny.Seq("Received unknown subcommand")) + + @staticmethod + def ParseDecryptCmd(params): + d_0_manifestPath_q_ = GetOpt.default__.OptValue(params, _dafny.Seq("manifest-path")) + d_1_testName_q_ = GetOpt.default__.OptValue(params, _dafny.Seq("test-name")) + d_2_manifestFileName_q_ = GetOpt.default__.OptValue(params, _dafny.Seq("manifest-name")) + d_3_manifestPath_ = ((d_0_manifestPath_q_).value if (d_0_manifestPath_q_).is_Some else _dafny.Seq(".")) + d_4_valueOrError0_ = Wrappers.default__.Need((0) < (len(d_3_manifestPath_)), _dafny.Seq("Invalid manifest path length\n")) + if (d_4_valueOrError0_).IsFailure(): + return (d_4_valueOrError0_).PropagateFailure() + elif True: + d_5_valueOrError1_ = Wrappers.default__.Need((d_2_manifestFileName_q_).is_Some, _dafny.Seq("Must supply manifest file name")) + if (d_5_valueOrError1_).IsFailure(): + return (d_5_valueOrError1_).PropagateFailure() + elif True: + d_6_manifestFileName_ = (d_2_manifestFileName_q_).value + return Wrappers.Result_Success(EsdkManifestOptions.ManifestOptions_Decrypt((d_3_manifestPath_ if (Seq.default__.Last(d_3_manifestPath_)) == ('/') else (d_3_manifestPath_) + (_dafny.Seq("/"))), d_6_manifestFileName_, (d_1_testName_q_ if (d_1_testName_q_).is_Some else Wrappers.Option_None()))) + + @staticmethod + def ParseEncryptCmd(params): + d_0_manifestPath_q_ = GetOpt.default__.OptValue(params, _dafny.Seq("manifest-path")) + d_1_manifestName_q_ = GetOpt.default__.OptValue(params, _dafny.Seq("manifest")) + d_2_decryptManifestPath_q_ = GetOpt.default__.OptValue(params, _dafny.Seq("decrypt-manifest-path")) + d_3_testName_q_ = GetOpt.default__.OptValue(params, _dafny.Seq("test-name")) + d_4_manifestPath_ = ((d_0_manifestPath_q_).value if (d_0_manifestPath_q_).is_Some else _dafny.Seq(".")) + d_5_manifestName_ = ((d_1_manifestName_q_).value if (d_1_manifestName_q_).is_Some else _dafny.Seq("encrypt-manifest.json")) + d_6_decryptManifestPath_ = ((d_2_decryptManifestPath_q_).value if (d_2_decryptManifestPath_q_).is_Some else _dafny.Seq(".")) + d_7_valueOrError0_ = Wrappers.default__.Need(((0) < (len(d_4_manifestPath_))) and ((0) < (len(d_6_decryptManifestPath_))), _dafny.Seq("Invalid manifest or decrypt manifest path length\n")) + if (d_7_valueOrError0_).IsFailure(): + return (d_7_valueOrError0_).PropagateFailure() + elif True: + return Wrappers.Result_Success(EsdkManifestOptions.ManifestOptions_Encrypt((d_4_manifestPath_ if (Seq.default__.Last(d_4_manifestPath_)) == ('/') else (d_4_manifestPath_) + (_dafny.Seq("/"))), d_5_manifestName_, (d_6_decryptManifestPath_ if (Seq.default__.Last(d_6_decryptManifestPath_)) == ('/') else (d_6_decryptManifestPath_) + (_dafny.Seq("/"))), (d_3_testName_q_ if (d_3_testName_q_).is_Some else Wrappers.Option_None()))) + + @staticmethod + def ParseEncryptManifestCmd(params): + d_0_encryptManifestOutput_q_ = GetOpt.default__.OptValue(params, _dafny.Seq("encrypt-manifest-output")) + d_1_encryptManifestOutput_ = ((d_0_encryptManifestOutput_q_).value if (d_0_encryptManifestOutput_q_).is_Some else _dafny.Seq(".")) + d_2_valueOrError0_ = Wrappers.default__.Need((0) < (len(d_1_encryptManifestOutput_)), _dafny.Seq("Invalid encrypt manifest output length")) + if (d_2_valueOrError0_).IsFailure(): + return (d_2_valueOrError0_).PropagateFailure() + elif True: + return Wrappers.Result_Success(EsdkManifestOptions.ManifestOptions_EncryptManifest((d_1_encryptManifestOutput_ if (Seq.default__.Last(d_1_encryptManifestOutput_)) == ('/') else (d_1_encryptManifestOutput_) + (_dafny.Seq("/"))), 5)) + diff --git a/TestVectors/runtimes/python/src/aws_encryption_sdk_test_vectors/internaldafny/generated/WriteEsdkJsonManifests.py b/TestVectors/runtimes/python/src/aws_encryption_sdk_test_vectors/internaldafny/generated/WriteEsdkJsonManifests.py new file mode 100644 index 000000000..2588607e0 --- /dev/null +++ b/TestVectors/runtimes/python/src/aws_encryption_sdk_test_vectors/internaldafny/generated/WriteEsdkJsonManifests.py @@ -0,0 +1,369 @@ +import sys +from typing import Callable, Any, TypeVar, NamedTuple +from math import floor +from itertools import count + +import aws_encryption_sdk_test_vectors.internaldafny.generated.module_ as module_ +import _dafny as _dafny +import System_ as System_ +import smithy_dafny_standard_library.internaldafny.generated.Wrappers as Wrappers +import smithy_dafny_standard_library.internaldafny.generated.BoundedInts as BoundedInts +import smithy_dafny_standard_library.internaldafny.generated.StandardLibrary_UInt as StandardLibrary_UInt +import smithy_dafny_standard_library.internaldafny.generated.StandardLibrary_Sequence as StandardLibrary_Sequence +import smithy_dafny_standard_library.internaldafny.generated.StandardLibrary_String as StandardLibrary_String +import smithy_dafny_standard_library.internaldafny.generated.StandardLibrary as StandardLibrary +import smithy_dafny_standard_library.internaldafny.generated.UTF8 as UTF8 +import aws_cryptography_primitives.internaldafny.generated.AwsCryptographyPrimitivesTypes as AwsCryptographyPrimitivesTypes +import aws_cryptography_primitives.internaldafny.generated.ExternRandom as ExternRandom +import aws_cryptography_primitives.internaldafny.generated.Random as Random +import aws_cryptography_primitives.internaldafny.generated.AESEncryption as AESEncryption +import aws_cryptography_primitives.internaldafny.generated.ExternDigest as ExternDigest +import aws_cryptography_primitives.internaldafny.generated.Digest as Digest +import aws_cryptography_primitives.internaldafny.generated.HMAC as HMAC +import aws_cryptography_primitives.internaldafny.generated.WrappedHMAC as WrappedHMAC +import aws_cryptography_primitives.internaldafny.generated.HKDF as HKDF +import aws_cryptography_primitives.internaldafny.generated.WrappedHKDF as WrappedHKDF +import aws_cryptography_primitives.internaldafny.generated.Signature as Signature +import aws_cryptography_primitives.internaldafny.generated.KdfCtr as KdfCtr +import aws_cryptography_primitives.internaldafny.generated.RSAEncryption as RSAEncryption +import aws_cryptography_primitives.internaldafny.generated.ECDH as ECDH +import aws_cryptography_primitives.internaldafny.generated.AwsCryptographyPrimitivesOperations as AwsCryptographyPrimitivesOperations +import aws_cryptography_primitives.internaldafny.generated.AtomicPrimitives as AtomicPrimitives +import aws_cryptography_internal_dynamodb.internaldafny.generated.ComAmazonawsDynamodbTypes as ComAmazonawsDynamodbTypes +import aws_cryptography_internal_kms.internaldafny.generated.ComAmazonawsKmsTypes as ComAmazonawsKmsTypes +import aws_cryptographic_material_providers.internaldafny.generated.AwsCryptographyKeyStoreTypes as AwsCryptographyKeyStoreTypes +import aws_cryptographic_material_providers.internaldafny.generated.AwsCryptographyMaterialProvidersTypes as AwsCryptographyMaterialProvidersTypes +import smithy_dafny_standard_library.internaldafny.generated.Base64 as Base64 +import aws_cryptographic_material_providers.internaldafny.generated.AlgorithmSuites as AlgorithmSuites +import aws_cryptographic_material_providers.internaldafny.generated.Materials as Materials +import aws_cryptographic_material_providers.internaldafny.generated.Keyring as Keyring +import smithy_dafny_standard_library.internaldafny.generated.Relations as Relations +import smithy_dafny_standard_library.internaldafny.generated.Seq_MergeSort as Seq_MergeSort +import smithy_dafny_standard_library.internaldafny.generated.Math as Math +import smithy_dafny_standard_library.internaldafny.generated.Seq as Seq +import aws_cryptographic_material_providers.internaldafny.generated.MultiKeyring as MultiKeyring +import aws_cryptographic_material_providers.internaldafny.generated.AwsArnParsing as AwsArnParsing +import aws_cryptographic_material_providers.internaldafny.generated.AwsKmsMrkAreUnique as AwsKmsMrkAreUnique +import smithy_dafny_standard_library.internaldafny.generated.Actions as Actions +import aws_cryptographic_material_providers.internaldafny.generated.AwsKmsMrkMatchForDecrypt as AwsKmsMrkMatchForDecrypt +import aws_cryptographic_material_providers.internaldafny.generated.AwsKmsUtils as AwsKmsUtils +import aws_cryptographic_material_providers.internaldafny.generated.Constants as Constants +import smithy_dafny_standard_library.internaldafny.generated.UUID as UUID +import aws_cryptographic_material_providers.internaldafny.generated.MaterialWrapping as MaterialWrapping +import smithy_dafny_standard_library.internaldafny.generated.SortedSets as SortedSets +import aws_cryptographic_material_providers.internaldafny.generated.CanonicalEncryptionContext as CanonicalEncryptionContext +import aws_cryptographic_material_providers.internaldafny.generated.IntermediateKeyWrapping as IntermediateKeyWrapping +import aws_cryptographic_material_providers.internaldafny.generated.EdkWrapping as EdkWrapping +import aws_cryptographic_material_providers.internaldafny.generated.ErrorMessages as ErrorMessages +import aws_cryptographic_material_providers.internaldafny.generated.AwsKmsKeyring as AwsKmsKeyring +import aws_cryptographic_material_providers.internaldafny.generated.StrictMultiKeyring as StrictMultiKeyring +import aws_cryptographic_material_providers.internaldafny.generated.AwsKmsDiscoveryKeyring as AwsKmsDiscoveryKeyring +import aws_cryptography_internal_kms.internaldafny.generated.Com_Amazonaws_Kms as Com_Amazonaws_Kms +import aws_cryptography_internal_dynamodb.internaldafny.generated.Com_Amazonaws_Dynamodb as Com_Amazonaws_Dynamodb +import aws_cryptographic_material_providers.internaldafny.generated.DiscoveryMultiKeyring as DiscoveryMultiKeyring +import aws_cryptographic_material_providers.internaldafny.generated.AwsKmsMrkDiscoveryKeyring as AwsKmsMrkDiscoveryKeyring +import aws_cryptographic_material_providers.internaldafny.generated.MrkAwareDiscoveryMultiKeyring as MrkAwareDiscoveryMultiKeyring +import aws_cryptographic_material_providers.internaldafny.generated.AwsKmsMrkKeyring as AwsKmsMrkKeyring +import aws_cryptographic_material_providers.internaldafny.generated.MrkAwareStrictMultiKeyring as MrkAwareStrictMultiKeyring +import smithy_dafny_standard_library.internaldafny.generated.DafnyLibraries as DafnyLibraries +import smithy_dafny_standard_library.internaldafny.generated.Time as Time +import aws_cryptographic_material_providers.internaldafny.generated.LocalCMC as LocalCMC +import aws_cryptographic_material_providers.internaldafny.generated.SynchronizedLocalCMC as SynchronizedLocalCMC +import aws_cryptographic_material_providers.internaldafny.generated.StormTracker as StormTracker +import aws_cryptographic_material_providers.internaldafny.generated.StormTrackingCMC as StormTrackingCMC +import aws_cryptographic_material_providers.internaldafny.generated.CacheConstants as CacheConstants +import aws_cryptographic_material_providers.internaldafny.generated.AwsKmsHierarchicalKeyring as AwsKmsHierarchicalKeyring +import aws_cryptographic_material_providers.internaldafny.generated.AwsKmsRsaKeyring as AwsKmsRsaKeyring +import aws_cryptographic_material_providers.internaldafny.generated.EcdhEdkWrapping as EcdhEdkWrapping +import aws_cryptographic_material_providers.internaldafny.generated.RawECDHKeyring as RawECDHKeyring +import aws_cryptographic_material_providers.internaldafny.generated.AwsKmsEcdhKeyring as AwsKmsEcdhKeyring +import aws_cryptographic_material_providers.internaldafny.generated.RawAESKeyring as RawAESKeyring +import aws_cryptographic_material_providers.internaldafny.generated.RawRSAKeyring as RawRSAKeyring +import aws_cryptographic_material_providers.internaldafny.generated.CMM as CMM +import aws_cryptographic_material_providers.internaldafny.generated.Defaults as Defaults +import aws_cryptographic_material_providers.internaldafny.generated.Commitment as Commitment +import aws_cryptographic_material_providers.internaldafny.generated.DefaultCMM as DefaultCMM +import aws_cryptographic_material_providers.internaldafny.generated.DefaultClientSupplier as DefaultClientSupplier +import aws_cryptographic_material_providers.internaldafny.generated.Utils as Utils +import aws_cryptographic_material_providers.internaldafny.generated.RequiredEncryptionContextCMM as RequiredEncryptionContextCMM +import aws_cryptographic_material_providers.internaldafny.generated.AwsCryptographyMaterialProvidersOperations as AwsCryptographyMaterialProvidersOperations +import aws_cryptographic_material_providers.internaldafny.generated.MaterialProviders as MaterialProviders +import aws_cryptographic_material_providers.internaldafny.generated.KeyStoreErrorMessages as KeyStoreErrorMessages +import aws_cryptographic_material_providers.internaldafny.generated.KmsArn as KmsArn +import aws_cryptographic_material_providers.internaldafny.generated.Structure as Structure +import aws_cryptographic_material_providers.internaldafny.generated.KMSKeystoreOperations as KMSKeystoreOperations +import aws_cryptographic_material_providers.internaldafny.generated.DDBKeystoreOperations as DDBKeystoreOperations +import aws_cryptographic_material_providers.internaldafny.generated.CreateKeys as CreateKeys +import aws_cryptographic_material_providers.internaldafny.generated.CreateKeyStoreTable as CreateKeyStoreTable +import aws_cryptographic_material_providers.internaldafny.generated.GetKeys as GetKeys +import aws_cryptographic_material_providers.internaldafny.generated.AwsCryptographyKeyStoreOperations as AwsCryptographyKeyStoreOperations +import aws_cryptographic_material_providers.internaldafny.generated.KeyStore as KeyStore +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AwsCryptographyMaterialProvidersTestVectorKeysTypes as AwsCryptographyMaterialProvidersTestVectorKeysTypes +import smithy_dafny_standard_library.internaldafny.generated.JSON_Utils_Views_Core as JSON_Utils_Views_Core +import smithy_dafny_standard_library.internaldafny.generated.JSON_Utils_Views_Writers as JSON_Utils_Views_Writers +import smithy_dafny_standard_library.internaldafny.generated.JSON_Utils_Lexers_Core as JSON_Utils_Lexers_Core +import smithy_dafny_standard_library.internaldafny.generated.JSON_Utils_Lexers_Strings as JSON_Utils_Lexers_Strings +import smithy_dafny_standard_library.internaldafny.generated.JSON_Utils_Cursors as JSON_Utils_Cursors +import smithy_dafny_standard_library.internaldafny.generated.JSON_Utils_Parsers as JSON_Utils_Parsers +import smithy_dafny_standard_library.internaldafny.generated.GeneralInternals as GeneralInternals +import smithy_dafny_standard_library.internaldafny.generated.MulInternalsNonlinear as MulInternalsNonlinear +import smithy_dafny_standard_library.internaldafny.generated.MulInternals as MulInternals +import smithy_dafny_standard_library.internaldafny.generated.Mul as Mul +import smithy_dafny_standard_library.internaldafny.generated.ModInternalsNonlinear as ModInternalsNonlinear +import smithy_dafny_standard_library.internaldafny.generated.DivInternalsNonlinear as DivInternalsNonlinear +import smithy_dafny_standard_library.internaldafny.generated.ModInternals as ModInternals +import smithy_dafny_standard_library.internaldafny.generated.DivInternals as DivInternals +import smithy_dafny_standard_library.internaldafny.generated.DivMod as DivMod +import smithy_dafny_standard_library.internaldafny.generated.Power as Power +import smithy_dafny_standard_library.internaldafny.generated.Logarithm as Logarithm +import smithy_dafny_standard_library.internaldafny.generated.JSON_Utils_Str_CharStrConversion as JSON_Utils_Str_CharStrConversion +import smithy_dafny_standard_library.internaldafny.generated.JSON_Utils_Str_CharStrEscaping as JSON_Utils_Str_CharStrEscaping +import smithy_dafny_standard_library.internaldafny.generated.JSON_Utils_Str as JSON_Utils_Str +import smithy_dafny_standard_library.internaldafny.generated.JSON_Utils_Seq as JSON_Utils_Seq +import smithy_dafny_standard_library.internaldafny.generated.JSON_Utils_Vectors as JSON_Utils_Vectors +import smithy_dafny_standard_library.internaldafny.generated.JSON_Errors as JSON_Errors +import smithy_dafny_standard_library.internaldafny.generated.JSON_Values as JSON_Values +import smithy_dafny_standard_library.internaldafny.generated.Unicode as Unicode +import smithy_dafny_standard_library.internaldafny.generated.Functions as Functions +import smithy_dafny_standard_library.internaldafny.generated.Utf8EncodingForm as Utf8EncodingForm +import smithy_dafny_standard_library.internaldafny.generated.Utf16EncodingForm as Utf16EncodingForm +import smithy_dafny_standard_library.internaldafny.generated.UnicodeStrings as UnicodeStrings +import smithy_dafny_standard_library.internaldafny.generated.JSON_Spec as JSON_Spec +import smithy_dafny_standard_library.internaldafny.generated.JSON_Grammar as JSON_Grammar +import smithy_dafny_standard_library.internaldafny.generated.JSON_Serializer_ByteStrConversion as JSON_Serializer_ByteStrConversion +import smithy_dafny_standard_library.internaldafny.generated.JSON_Serializer as JSON_Serializer +import smithy_dafny_standard_library.internaldafny.generated.JSON_Deserializer_Uint16StrConversion as JSON_Deserializer_Uint16StrConversion +import smithy_dafny_standard_library.internaldafny.generated.JSON_Deserializer_ByteStrConversion as JSON_Deserializer_ByteStrConversion +import smithy_dafny_standard_library.internaldafny.generated.JSON_Deserializer as JSON_Deserializer +import smithy_dafny_standard_library.internaldafny.generated.JSON_ConcreteSyntax_Spec as JSON_ConcreteSyntax_Spec +import smithy_dafny_standard_library.internaldafny.generated.JSON_ConcreteSyntax_SpecProperties as JSON_ConcreteSyntax_SpecProperties +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_Serializer as JSON_ZeroCopy_Serializer +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_Deserializer_Core as JSON_ZeroCopy_Deserializer_Core +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_Deserializer_Strings as JSON_ZeroCopy_Deserializer_Strings +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_Deserializer_Numbers as JSON_ZeroCopy_Deserializer_Numbers +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_Deserializer_ObjectParams as JSON_ZeroCopy_Deserializer_ObjectParams +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_Deserializer_Objects as JSON_ZeroCopy_Deserializer_Objects +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_Deserializer_ArrayParams as JSON_ZeroCopy_Deserializer_ArrayParams +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_Deserializer_Arrays as JSON_ZeroCopy_Deserializer_Arrays +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_Deserializer_Constants as JSON_ZeroCopy_Deserializer_Constants +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_Deserializer_Values as JSON_ZeroCopy_Deserializer_Values +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_Deserializer_API as JSON_ZeroCopy_Deserializer_API +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_Deserializer as JSON_ZeroCopy_Deserializer +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_API as JSON_ZeroCopy_API +import smithy_dafny_standard_library.internaldafny.generated.JSON_API as JSON_API +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.JSONHelpers as JSONHelpers +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.KeyDescription as KeyDescription +import smithy_dafny_standard_library.internaldafny.generated.HexStrings as HexStrings +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.KeyMaterial as KeyMaterial +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.CreateStaticKeyrings as CreateStaticKeyrings +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.CreateStaticKeyStores as CreateStaticKeyStores +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.KeyringFromKeyDescription as KeyringFromKeyDescription +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.CmmFromKeyDescription as CmmFromKeyDescription +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.WrappedMaterialProviders as WrappedMaterialProviders +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.KeysVectorOperations as KeysVectorOperations +import smithy_dafny_standard_library.internaldafny.generated.FileIO as FileIO +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.KeyVectors as KeyVectors +import aws_encryption_sdk.internaldafny.generated.AwsCryptographyEncryptionSdkTypes as AwsCryptographyEncryptionSdkTypes +import smithy_dafny_standard_library.internaldafny.generated.Streams as Streams +import aws_encryption_sdk.internaldafny.generated.SerializableTypes as SerializableTypes +import aws_encryption_sdk.internaldafny.generated.SerializeFunctions as SerializeFunctions +import aws_encryption_sdk.internaldafny.generated.EncryptionContext as EncryptionContext +import aws_encryption_sdk.internaldafny.generated.HeaderTypes as HeaderTypes +import aws_encryption_sdk.internaldafny.generated.SharedHeaderFunctions as SharedHeaderFunctions +import aws_encryption_sdk.internaldafny.generated.EncryptedDataKeys as EncryptedDataKeys +import aws_encryption_sdk.internaldafny.generated.V1HeaderBody as V1HeaderBody +import aws_encryption_sdk.internaldafny.generated.V2HeaderBody as V2HeaderBody +import aws_encryption_sdk.internaldafny.generated.HeaderAuth as HeaderAuth +import aws_encryption_sdk.internaldafny.generated.Header as Header +import aws_encryption_sdk.internaldafny.generated.Frames as Frames +import aws_encryption_sdk.internaldafny.generated.MessageBody as MessageBody +import aws_encryption_sdk.internaldafny.generated.KeyDerivation as KeyDerivation +import aws_encryption_sdk.internaldafny.generated.EncryptDecryptHelpers as EncryptDecryptHelpers +import aws_encryption_sdk.internaldafny.generated.AwsEncryptionSdkOperations as AwsEncryptionSdkOperations +import aws_encryption_sdk.internaldafny.generated.EncryptionSdk as EncryptionSdk +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.MplManifestOptions as MplManifestOptions +import smithy_dafny_standard_library.internaldafny.generated.GetOpt as GetOpt +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllAlgorithmSuites as AllAlgorithmSuites +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.TestVectors as TestVectors +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllHierarchy as AllHierarchy +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllKms as AllKms +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllKmsMrkAware as AllKmsMrkAware +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllKmsMrkAwareDiscovery as AllKmsMrkAwareDiscovery +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllKmsRsa as AllKmsRsa +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllKmsEcdh as AllKmsEcdh +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllRawAES as AllRawAES +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllRawRSA as AllRawRSA +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllRawECDH as AllRawECDH +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllDefaultCmm as AllDefaultCmm +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllRequiredEncryptionContextCmm as AllRequiredEncryptionContextCmm +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllMulti as AllMulti +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.WriteJsonManifests as WriteJsonManifests +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.CompleteVectors as CompleteVectors +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.ParseJsonManifests as ParseJsonManifests +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.TestManifests as TestManifests +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.WrappedMaterialProvidersMain as WrappedMaterialProvidersMain +import aws_cryptography_primitives.internaldafny.generated.AesKdfCtr as AesKdfCtr +import smithy_dafny_standard_library.internaldafny.generated.StandardLibraryInterop as StandardLibraryInterop +import smithy_dafny_standard_library.internaldafny.generated.Sorting as Sorting +import smithy_dafny_standard_library.internaldafny.generated.FloatCompare as FloatCompare +import smithy_dafny_standard_library.internaldafny.generated.ConcurrentCall as ConcurrentCall +import smithy_dafny_standard_library.internaldafny.generated.Base64Lemmas as Base64Lemmas +import aws_encryption_sdk_test_vectors.internaldafny.generated.WrappedESDK as WrappedESDK +import aws_encryption_sdk_test_vectors.internaldafny.generated.EsdkManifestOptions as EsdkManifestOptions +import aws_encryption_sdk_test_vectors.internaldafny.generated.EsdkTestVectors as EsdkTestVectors +import aws_encryption_sdk_test_vectors.internaldafny.generated.AllEsdkV4NoReqEc as AllEsdkV4NoReqEc +import aws_encryption_sdk_test_vectors.internaldafny.generated.AllEsdkV4WithReqEc as AllEsdkV4WithReqEc + +# Module: WriteEsdkJsonManifests + +class default__: + def __init__(self): + pass + + @staticmethod + def EncryptionContextKeysToJson(keys): + if (keys).is_Some: + def lambda0_(d_1_bytes_): + def iife0_(_pat_let0_0): + def iife1_(d_2_valueOrError1_): + def iife2_(_pat_let1_0): + def iife3_(d_3_key_): + return Wrappers.Result_Success(JSON_Values.JSON_String(d_3_key_)) + return iife3_(_pat_let1_0) + return ((d_2_valueOrError1_).PropagateFailure() if (d_2_valueOrError1_).IsFailure() else iife2_((d_2_valueOrError1_).Extract())) + return iife1_(_pat_let0_0) + return iife0_(UTF8.default__.Decode(d_1_bytes_)) + + d_0_valueOrError0_ = Seq.default__.MapWithResult(lambda0_, (keys).value) + if (d_0_valueOrError0_).IsFailure(): + return (d_0_valueOrError0_).PropagateFailure() + elif True: + d_4_tmp_ = (d_0_valueOrError0_).Extract() + return Wrappers.Result_Success(_dafny.Seq([(_dafny.Seq("requiredEncryptionContextKeys"), JSON_Values.JSON_Array(d_4_tmp_))])) + elif True: + return Wrappers.Result_Success(_dafny.Seq([])) + + @staticmethod + def EncryptionContextToJson(key, m): + def lambda0_(d_1_a_, d_2_b_): + return (d_1_a_) < (d_2_b_) + + d_0_keys_ = SortedSets.default__.SetToOrderedSequence2((m).keys, lambda0_) + def lambda1_(d_4_m_): + def lambda2_(d_5_k_): + def iife0_(_pat_let2_0): + def iife1_(d_6_valueOrError1_): + def iife2_(_pat_let3_0): + def iife3_(d_7_key_): + def iife4_(_pat_let4_0): + def iife5_(d_8_valueOrError2_): + def iife6_(_pat_let5_0): + def iife7_(d_9_value_): + return Wrappers.Result_Success((d_7_key_, JSON_Values.JSON_String(d_9_value_))) + return iife7_(_pat_let5_0) + return ((d_8_valueOrError2_).PropagateFailure() if (d_8_valueOrError2_).IsFailure() else iife6_((d_8_valueOrError2_).Extract())) + return iife5_(_pat_let4_0) + return iife4_(UTF8.default__.Decode((d_4_m_)[d_5_k_])) + return iife3_(_pat_let3_0) + return ((d_6_valueOrError1_).PropagateFailure() if (d_6_valueOrError1_).IsFailure() else iife2_((d_6_valueOrError1_).Extract())) + return iife1_(_pat_let2_0) + return iife0_(UTF8.default__.Decode(d_5_k_)) + + return lambda2_ + + d_3_valueOrError0_ = Seq.default__.MapWithResult(lambda1_(m), d_0_keys_) + if (d_3_valueOrError0_).IsFailure(): + return (d_3_valueOrError0_).PropagateFailure() + elif True: + d_10_pairsBytes_ = (d_3_valueOrError0_).Extract() + return Wrappers.Result_Success(_dafny.Seq([(key, JSON_Values.JSON_Object(d_10_pairsBytes_))])) + + @staticmethod + def printJson(j): + hresult_: tuple = () + _dafny.print(_dafny.string_of(j)) + _dafny.print(_dafny.string_of(_dafny.Seq("\n"))) + _dafny.print(_dafny.string_of(_dafny.Seq("\n"))) + hresult_ = () + return hresult_ + return hresult_ + + @staticmethod + def EncryptTestVectorToJson(test): + d_0_valueOrError0_ = Wrappers.default__.Need((((test).algorithmSuiteId).is_Some) and (((test).frameLength).is_Some), _dafny.Seq("test is missing algorithmSuite ID, or frameLength")) + if (d_0_valueOrError0_).IsFailure(): + return (d_0_valueOrError0_).PropagateFailure() + elif True: + d_1_id_ = AllAlgorithmSuites.default__.ToHex(((test).algorithmSuiteId).value) + d_2_valueOrError1_ = (default__.EncryptionContextToJson(_dafny.Seq("encryption-context"), ((test).encryptionContext).value) if ((test).encryptionContext).is_Some else default__.EncryptionContextToJson(_dafny.Seq("encryption-context"), _dafny.Map({}))) + if (d_2_valueOrError1_).IsFailure(): + return (d_2_valueOrError1_).PropagateFailure() + elif True: + d_3_encryptionContext_ = (d_2_valueOrError1_).Extract() + d_4_valueOrError2_ = Wrappers.default__.Need((len(d_3_encryptionContext_)) == (1), _dafny.Seq("Error parsing encryption context")) + if (d_4_valueOrError2_).IsFailure(): + return (d_4_valueOrError2_).PropagateFailure() + elif True: + d_5_valueOrError3_ = (default__.EncryptionContextToJson(_dafny.Seq("reproduced-encryption-context"), ((test).reproducedEncryptionContext).value) if ((test).reproducedEncryptionContext).is_Some else default__.EncryptionContextToJson(_dafny.Seq("reproduced-encryption-context"), _dafny.Map({}))) + if (d_5_valueOrError3_).IsFailure(): + return (d_5_valueOrError3_).PropagateFailure() + elif True: + d_6_reproducedEncryptionContext_ = (d_5_valueOrError3_).Extract() + d_7_optionalValues_ = (d_3_encryptionContext_) + (d_6_reproducedEncryptionContext_) + source0_ = test + if True: + if source0_.is_PositiveEncryptTestVector: + d_8_valueOrError4_ = KeyDescription.default__.ToJson((test).encryptDescriptions, 3) + if (d_8_valueOrError4_).IsFailure(): + return (d_8_valueOrError4_).PropagateFailure() + elif True: + d_9_encrypt_ = (d_8_valueOrError4_).Extract() + d_10_valueOrError5_ = KeyDescription.default__.ToJson((test).decryptDescriptions, 3) + if (d_10_valueOrError5_).IsFailure(): + return (d_10_valueOrError5_).PropagateFailure() + elif True: + d_11_decrypt_ = (d_10_valueOrError5_).Extract() + d_12_scenario_ = JSON_Values.JSON_Object((_dafny.Seq([(_dafny.Seq("type"), JSON_Values.JSON_String(_dafny.Seq("positive-esdk"))), (_dafny.Seq("plaintext"), JSON_Values.JSON_String(_dafny.Seq("small"))), (_dafny.Seq("description"), JSON_Values.JSON_String((test).description)), (_dafny.Seq("algorithmSuiteId"), JSON_Values.JSON_String(d_1_id_)), (_dafny.Seq("frame-size"), JSON_Values.JSON_Number(JSON_Values.default__.Int(((test).frameLength).value))), (_dafny.Seq("encryptKeyDescription"), d_9_encrypt_), (_dafny.Seq("decryptKeyDescription"), d_11_decrypt_)])) + (d_7_optionalValues_)) + return Wrappers.Result_Success(JSON_Values.JSON_Object(_dafny.Seq([(_dafny.Seq("encryption-scenario"), d_12_scenario_)]))) + if True: + return Wrappers.Result_Failure(_dafny.Seq("Only Positive Tests supported :(")) + + @staticmethod + def OptionalBytes(key, secret): + if (secret).is_Some: + d_0_base64_ = Base64.default__.Encode((secret).value) + return _dafny.Seq([(key, JSON_Values.JSON_String(d_0_base64_))]) + elif True: + return _dafny.Seq([]) + + @staticmethod + def DecryptTestVectorToJson(test): + d_0_valueOrError0_ = Wrappers.default__.Need((((test).algorithmSuiteId).is_Some) and (((test).frameLength).is_Some), _dafny.Seq("test is missing algorithmSuite ID, or frameLength")) + if (d_0_valueOrError0_).IsFailure(): + return (d_0_valueOrError0_).PropagateFailure() + elif True: + d_1_id_ = AllAlgorithmSuites.default__.ToHex(((test).algorithmSuiteId).value) + d_2_description_ = (((test).description) + (_dafny.Seq(" "))) + (d_1_id_) + d_3_valueOrError1_ = (default__.EncryptionContextToJson(_dafny.Seq("reproduced-encryption-context"), ((test).reproducedEncryptionContext).value) if ((test).reproducedEncryptionContext).is_Some else default__.EncryptionContextToJson(_dafny.Seq("reproduced-encryption-context"), _dafny.Map({}))) + if (d_3_valueOrError1_).IsFailure(): + return (d_3_valueOrError1_).PropagateFailure() + elif True: + d_4_reproducedEncryptionContext_ = (d_3_valueOrError1_).Extract() + d_5_valueOrError2_ = Wrappers.default__.Need((len(d_4_reproducedEncryptionContext_)) == (1), _dafny.Seq("Error parsing encryption context")) + if (d_5_valueOrError2_).IsFailure(): + return (d_5_valueOrError2_).PropagateFailure() + elif True: + d_6_optionalValues_ = d_4_reproducedEncryptionContext_ + source0_ = test + if True: + if source0_.is_PositiveDecryptTestVector: + d_7_valueOrError3_ = KeyDescription.default__.ToJson((test).decryptDescriptions, 3) + if (d_7_valueOrError3_).IsFailure(): + return (d_7_valueOrError3_).PropagateFailure() + elif True: + d_8_decrypt_ = (d_7_valueOrError3_).Extract() + d_9_scenario_ = JSON_Values.JSON_Object((_dafny.Seq([(_dafny.Seq("type"), JSON_Values.JSON_String(_dafny.Seq("positive-esdk"))), (_dafny.Seq("ciphertext"), JSON_Values.JSON_String((_dafny.Seq("file://ciphertexts/")) + ((test).id))), (_dafny.Seq("result"), JSON_Values.JSON_String((_dafny.Seq("file://")) + ((test).plaintextPath))), (_dafny.Seq("algorithmSuiteId"), JSON_Values.JSON_String(d_1_id_)), (_dafny.Seq("frame-size"), JSON_Values.JSON_Number(JSON_Values.default__.Int(((test).frameLength).value))), (_dafny.Seq("description"), JSON_Values.JSON_String((test).description)), (_dafny.Seq("decryptKeyDescription"), d_8_decrypt_)])) + (d_6_optionalValues_)) + return Wrappers.Result_Success(JSON_Values.JSON_Object(_dafny.Seq([(_dafny.Seq("decryption-scenario"), d_9_scenario_)]))) + if True: + return Wrappers.Result_Failure(_dafny.Seq("Only Positive Tests supported :(")) + diff --git a/TestVectors/runtimes/python/src/aws_encryption_sdk_test_vectors/internaldafny/generated/WriteVectors.py b/TestVectors/runtimes/python/src/aws_encryption_sdk_test_vectors/internaldafny/generated/WriteVectors.py new file mode 100644 index 000000000..ec61a5ff9 --- /dev/null +++ b/TestVectors/runtimes/python/src/aws_encryption_sdk_test_vectors/internaldafny/generated/WriteVectors.py @@ -0,0 +1,369 @@ +import sys +from typing import Callable, Any, TypeVar, NamedTuple +from math import floor +from itertools import count + +import aws_encryption_sdk_test_vectors.internaldafny.generated.module_ as module_ +import _dafny as _dafny +import System_ as System_ +import smithy_dafny_standard_library.internaldafny.generated.Wrappers as Wrappers +import smithy_dafny_standard_library.internaldafny.generated.BoundedInts as BoundedInts +import smithy_dafny_standard_library.internaldafny.generated.StandardLibrary_UInt as StandardLibrary_UInt +import smithy_dafny_standard_library.internaldafny.generated.StandardLibrary_Sequence as StandardLibrary_Sequence +import smithy_dafny_standard_library.internaldafny.generated.StandardLibrary_String as StandardLibrary_String +import smithy_dafny_standard_library.internaldafny.generated.StandardLibrary as StandardLibrary +import smithy_dafny_standard_library.internaldafny.generated.UTF8 as UTF8 +import aws_cryptography_primitives.internaldafny.generated.AwsCryptographyPrimitivesTypes as AwsCryptographyPrimitivesTypes +import aws_cryptography_primitives.internaldafny.generated.ExternRandom as ExternRandom +import aws_cryptography_primitives.internaldafny.generated.Random as Random +import aws_cryptography_primitives.internaldafny.generated.AESEncryption as AESEncryption +import aws_cryptography_primitives.internaldafny.generated.ExternDigest as ExternDigest +import aws_cryptography_primitives.internaldafny.generated.Digest as Digest +import aws_cryptography_primitives.internaldafny.generated.HMAC as HMAC +import aws_cryptography_primitives.internaldafny.generated.WrappedHMAC as WrappedHMAC +import aws_cryptography_primitives.internaldafny.generated.HKDF as HKDF +import aws_cryptography_primitives.internaldafny.generated.WrappedHKDF as WrappedHKDF +import aws_cryptography_primitives.internaldafny.generated.Signature as Signature +import aws_cryptography_primitives.internaldafny.generated.KdfCtr as KdfCtr +import aws_cryptography_primitives.internaldafny.generated.RSAEncryption as RSAEncryption +import aws_cryptography_primitives.internaldafny.generated.ECDH as ECDH +import aws_cryptography_primitives.internaldafny.generated.AwsCryptographyPrimitivesOperations as AwsCryptographyPrimitivesOperations +import aws_cryptography_primitives.internaldafny.generated.AtomicPrimitives as AtomicPrimitives +import aws_cryptography_internal_dynamodb.internaldafny.generated.ComAmazonawsDynamodbTypes as ComAmazonawsDynamodbTypes +import aws_cryptography_internal_kms.internaldafny.generated.ComAmazonawsKmsTypes as ComAmazonawsKmsTypes +import aws_cryptographic_material_providers.internaldafny.generated.AwsCryptographyKeyStoreTypes as AwsCryptographyKeyStoreTypes +import aws_cryptographic_material_providers.internaldafny.generated.AwsCryptographyMaterialProvidersTypes as AwsCryptographyMaterialProvidersTypes +import smithy_dafny_standard_library.internaldafny.generated.Base64 as Base64 +import aws_cryptographic_material_providers.internaldafny.generated.AlgorithmSuites as AlgorithmSuites +import aws_cryptographic_material_providers.internaldafny.generated.Materials as Materials +import aws_cryptographic_material_providers.internaldafny.generated.Keyring as Keyring +import smithy_dafny_standard_library.internaldafny.generated.Relations as Relations +import smithy_dafny_standard_library.internaldafny.generated.Seq_MergeSort as Seq_MergeSort +import smithy_dafny_standard_library.internaldafny.generated.Math as Math +import smithy_dafny_standard_library.internaldafny.generated.Seq as Seq +import aws_cryptographic_material_providers.internaldafny.generated.MultiKeyring as MultiKeyring +import aws_cryptographic_material_providers.internaldafny.generated.AwsArnParsing as AwsArnParsing +import aws_cryptographic_material_providers.internaldafny.generated.AwsKmsMrkAreUnique as AwsKmsMrkAreUnique +import smithy_dafny_standard_library.internaldafny.generated.Actions as Actions +import aws_cryptographic_material_providers.internaldafny.generated.AwsKmsMrkMatchForDecrypt as AwsKmsMrkMatchForDecrypt +import aws_cryptographic_material_providers.internaldafny.generated.AwsKmsUtils as AwsKmsUtils +import aws_cryptographic_material_providers.internaldafny.generated.Constants as Constants +import smithy_dafny_standard_library.internaldafny.generated.UUID as UUID +import aws_cryptographic_material_providers.internaldafny.generated.MaterialWrapping as MaterialWrapping +import smithy_dafny_standard_library.internaldafny.generated.SortedSets as SortedSets +import aws_cryptographic_material_providers.internaldafny.generated.CanonicalEncryptionContext as CanonicalEncryptionContext +import aws_cryptographic_material_providers.internaldafny.generated.IntermediateKeyWrapping as IntermediateKeyWrapping +import aws_cryptographic_material_providers.internaldafny.generated.EdkWrapping as EdkWrapping +import aws_cryptographic_material_providers.internaldafny.generated.ErrorMessages as ErrorMessages +import aws_cryptographic_material_providers.internaldafny.generated.AwsKmsKeyring as AwsKmsKeyring +import aws_cryptographic_material_providers.internaldafny.generated.StrictMultiKeyring as StrictMultiKeyring +import aws_cryptographic_material_providers.internaldafny.generated.AwsKmsDiscoveryKeyring as AwsKmsDiscoveryKeyring +import aws_cryptography_internal_kms.internaldafny.generated.Com_Amazonaws_Kms as Com_Amazonaws_Kms +import aws_cryptography_internal_dynamodb.internaldafny.generated.Com_Amazonaws_Dynamodb as Com_Amazonaws_Dynamodb +import aws_cryptographic_material_providers.internaldafny.generated.DiscoveryMultiKeyring as DiscoveryMultiKeyring +import aws_cryptographic_material_providers.internaldafny.generated.AwsKmsMrkDiscoveryKeyring as AwsKmsMrkDiscoveryKeyring +import aws_cryptographic_material_providers.internaldafny.generated.MrkAwareDiscoveryMultiKeyring as MrkAwareDiscoveryMultiKeyring +import aws_cryptographic_material_providers.internaldafny.generated.AwsKmsMrkKeyring as AwsKmsMrkKeyring +import aws_cryptographic_material_providers.internaldafny.generated.MrkAwareStrictMultiKeyring as MrkAwareStrictMultiKeyring +import smithy_dafny_standard_library.internaldafny.generated.DafnyLibraries as DafnyLibraries +import smithy_dafny_standard_library.internaldafny.generated.Time as Time +import aws_cryptographic_material_providers.internaldafny.generated.LocalCMC as LocalCMC +import aws_cryptographic_material_providers.internaldafny.generated.SynchronizedLocalCMC as SynchronizedLocalCMC +import aws_cryptographic_material_providers.internaldafny.generated.StormTracker as StormTracker +import aws_cryptographic_material_providers.internaldafny.generated.StormTrackingCMC as StormTrackingCMC +import aws_cryptographic_material_providers.internaldafny.generated.CacheConstants as CacheConstants +import aws_cryptographic_material_providers.internaldafny.generated.AwsKmsHierarchicalKeyring as AwsKmsHierarchicalKeyring +import aws_cryptographic_material_providers.internaldafny.generated.AwsKmsRsaKeyring as AwsKmsRsaKeyring +import aws_cryptographic_material_providers.internaldafny.generated.EcdhEdkWrapping as EcdhEdkWrapping +import aws_cryptographic_material_providers.internaldafny.generated.RawECDHKeyring as RawECDHKeyring +import aws_cryptographic_material_providers.internaldafny.generated.AwsKmsEcdhKeyring as AwsKmsEcdhKeyring +import aws_cryptographic_material_providers.internaldafny.generated.RawAESKeyring as RawAESKeyring +import aws_cryptographic_material_providers.internaldafny.generated.RawRSAKeyring as RawRSAKeyring +import aws_cryptographic_material_providers.internaldafny.generated.CMM as CMM +import aws_cryptographic_material_providers.internaldafny.generated.Defaults as Defaults +import aws_cryptographic_material_providers.internaldafny.generated.Commitment as Commitment +import aws_cryptographic_material_providers.internaldafny.generated.DefaultCMM as DefaultCMM +import aws_cryptographic_material_providers.internaldafny.generated.DefaultClientSupplier as DefaultClientSupplier +import aws_cryptographic_material_providers.internaldafny.generated.Utils as Utils +import aws_cryptographic_material_providers.internaldafny.generated.RequiredEncryptionContextCMM as RequiredEncryptionContextCMM +import aws_cryptographic_material_providers.internaldafny.generated.AwsCryptographyMaterialProvidersOperations as AwsCryptographyMaterialProvidersOperations +import aws_cryptographic_material_providers.internaldafny.generated.MaterialProviders as MaterialProviders +import aws_cryptographic_material_providers.internaldafny.generated.KeyStoreErrorMessages as KeyStoreErrorMessages +import aws_cryptographic_material_providers.internaldafny.generated.KmsArn as KmsArn +import aws_cryptographic_material_providers.internaldafny.generated.Structure as Structure +import aws_cryptographic_material_providers.internaldafny.generated.KMSKeystoreOperations as KMSKeystoreOperations +import aws_cryptographic_material_providers.internaldafny.generated.DDBKeystoreOperations as DDBKeystoreOperations +import aws_cryptographic_material_providers.internaldafny.generated.CreateKeys as CreateKeys +import aws_cryptographic_material_providers.internaldafny.generated.CreateKeyStoreTable as CreateKeyStoreTable +import aws_cryptographic_material_providers.internaldafny.generated.GetKeys as GetKeys +import aws_cryptographic_material_providers.internaldafny.generated.AwsCryptographyKeyStoreOperations as AwsCryptographyKeyStoreOperations +import aws_cryptographic_material_providers.internaldafny.generated.KeyStore as KeyStore +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AwsCryptographyMaterialProvidersTestVectorKeysTypes as AwsCryptographyMaterialProvidersTestVectorKeysTypes +import smithy_dafny_standard_library.internaldafny.generated.JSON_Utils_Views_Core as JSON_Utils_Views_Core +import smithy_dafny_standard_library.internaldafny.generated.JSON_Utils_Views_Writers as JSON_Utils_Views_Writers +import smithy_dafny_standard_library.internaldafny.generated.JSON_Utils_Lexers_Core as JSON_Utils_Lexers_Core +import smithy_dafny_standard_library.internaldafny.generated.JSON_Utils_Lexers_Strings as JSON_Utils_Lexers_Strings +import smithy_dafny_standard_library.internaldafny.generated.JSON_Utils_Cursors as JSON_Utils_Cursors +import smithy_dafny_standard_library.internaldafny.generated.JSON_Utils_Parsers as JSON_Utils_Parsers +import smithy_dafny_standard_library.internaldafny.generated.GeneralInternals as GeneralInternals +import smithy_dafny_standard_library.internaldafny.generated.MulInternalsNonlinear as MulInternalsNonlinear +import smithy_dafny_standard_library.internaldafny.generated.MulInternals as MulInternals +import smithy_dafny_standard_library.internaldafny.generated.Mul as Mul +import smithy_dafny_standard_library.internaldafny.generated.ModInternalsNonlinear as ModInternalsNonlinear +import smithy_dafny_standard_library.internaldafny.generated.DivInternalsNonlinear as DivInternalsNonlinear +import smithy_dafny_standard_library.internaldafny.generated.ModInternals as ModInternals +import smithy_dafny_standard_library.internaldafny.generated.DivInternals as DivInternals +import smithy_dafny_standard_library.internaldafny.generated.DivMod as DivMod +import smithy_dafny_standard_library.internaldafny.generated.Power as Power +import smithy_dafny_standard_library.internaldafny.generated.Logarithm as Logarithm +import smithy_dafny_standard_library.internaldafny.generated.JSON_Utils_Str_CharStrConversion as JSON_Utils_Str_CharStrConversion +import smithy_dafny_standard_library.internaldafny.generated.JSON_Utils_Str_CharStrEscaping as JSON_Utils_Str_CharStrEscaping +import smithy_dafny_standard_library.internaldafny.generated.JSON_Utils_Str as JSON_Utils_Str +import smithy_dafny_standard_library.internaldafny.generated.JSON_Utils_Seq as JSON_Utils_Seq +import smithy_dafny_standard_library.internaldafny.generated.JSON_Utils_Vectors as JSON_Utils_Vectors +import smithy_dafny_standard_library.internaldafny.generated.JSON_Errors as JSON_Errors +import smithy_dafny_standard_library.internaldafny.generated.JSON_Values as JSON_Values +import smithy_dafny_standard_library.internaldafny.generated.Unicode as Unicode +import smithy_dafny_standard_library.internaldafny.generated.Functions as Functions +import smithy_dafny_standard_library.internaldafny.generated.Utf8EncodingForm as Utf8EncodingForm +import smithy_dafny_standard_library.internaldafny.generated.Utf16EncodingForm as Utf16EncodingForm +import smithy_dafny_standard_library.internaldafny.generated.UnicodeStrings as UnicodeStrings +import smithy_dafny_standard_library.internaldafny.generated.JSON_Spec as JSON_Spec +import smithy_dafny_standard_library.internaldafny.generated.JSON_Grammar as JSON_Grammar +import smithy_dafny_standard_library.internaldafny.generated.JSON_Serializer_ByteStrConversion as JSON_Serializer_ByteStrConversion +import smithy_dafny_standard_library.internaldafny.generated.JSON_Serializer as JSON_Serializer +import smithy_dafny_standard_library.internaldafny.generated.JSON_Deserializer_Uint16StrConversion as JSON_Deserializer_Uint16StrConversion +import smithy_dafny_standard_library.internaldafny.generated.JSON_Deserializer_ByteStrConversion as JSON_Deserializer_ByteStrConversion +import smithy_dafny_standard_library.internaldafny.generated.JSON_Deserializer as JSON_Deserializer +import smithy_dafny_standard_library.internaldafny.generated.JSON_ConcreteSyntax_Spec as JSON_ConcreteSyntax_Spec +import smithy_dafny_standard_library.internaldafny.generated.JSON_ConcreteSyntax_SpecProperties as JSON_ConcreteSyntax_SpecProperties +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_Serializer as JSON_ZeroCopy_Serializer +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_Deserializer_Core as JSON_ZeroCopy_Deserializer_Core +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_Deserializer_Strings as JSON_ZeroCopy_Deserializer_Strings +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_Deserializer_Numbers as JSON_ZeroCopy_Deserializer_Numbers +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_Deserializer_ObjectParams as JSON_ZeroCopy_Deserializer_ObjectParams +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_Deserializer_Objects as JSON_ZeroCopy_Deserializer_Objects +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_Deserializer_ArrayParams as JSON_ZeroCopy_Deserializer_ArrayParams +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_Deserializer_Arrays as JSON_ZeroCopy_Deserializer_Arrays +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_Deserializer_Constants as JSON_ZeroCopy_Deserializer_Constants +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_Deserializer_Values as JSON_ZeroCopy_Deserializer_Values +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_Deserializer_API as JSON_ZeroCopy_Deserializer_API +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_Deserializer as JSON_ZeroCopy_Deserializer +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_API as JSON_ZeroCopy_API +import smithy_dafny_standard_library.internaldafny.generated.JSON_API as JSON_API +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.JSONHelpers as JSONHelpers +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.KeyDescription as KeyDescription +import smithy_dafny_standard_library.internaldafny.generated.HexStrings as HexStrings +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.KeyMaterial as KeyMaterial +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.CreateStaticKeyrings as CreateStaticKeyrings +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.CreateStaticKeyStores as CreateStaticKeyStores +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.KeyringFromKeyDescription as KeyringFromKeyDescription +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.CmmFromKeyDescription as CmmFromKeyDescription +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.WrappedMaterialProviders as WrappedMaterialProviders +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.KeysVectorOperations as KeysVectorOperations +import smithy_dafny_standard_library.internaldafny.generated.FileIO as FileIO +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.KeyVectors as KeyVectors +import aws_encryption_sdk.internaldafny.generated.AwsCryptographyEncryptionSdkTypes as AwsCryptographyEncryptionSdkTypes +import smithy_dafny_standard_library.internaldafny.generated.Streams as Streams +import aws_encryption_sdk.internaldafny.generated.SerializableTypes as SerializableTypes +import aws_encryption_sdk.internaldafny.generated.SerializeFunctions as SerializeFunctions +import aws_encryption_sdk.internaldafny.generated.EncryptionContext as EncryptionContext +import aws_encryption_sdk.internaldafny.generated.HeaderTypes as HeaderTypes +import aws_encryption_sdk.internaldafny.generated.SharedHeaderFunctions as SharedHeaderFunctions +import aws_encryption_sdk.internaldafny.generated.EncryptedDataKeys as EncryptedDataKeys +import aws_encryption_sdk.internaldafny.generated.V1HeaderBody as V1HeaderBody +import aws_encryption_sdk.internaldafny.generated.V2HeaderBody as V2HeaderBody +import aws_encryption_sdk.internaldafny.generated.HeaderAuth as HeaderAuth +import aws_encryption_sdk.internaldafny.generated.Header as Header +import aws_encryption_sdk.internaldafny.generated.Frames as Frames +import aws_encryption_sdk.internaldafny.generated.MessageBody as MessageBody +import aws_encryption_sdk.internaldafny.generated.KeyDerivation as KeyDerivation +import aws_encryption_sdk.internaldafny.generated.EncryptDecryptHelpers as EncryptDecryptHelpers +import aws_encryption_sdk.internaldafny.generated.AwsEncryptionSdkOperations as AwsEncryptionSdkOperations +import aws_encryption_sdk.internaldafny.generated.EncryptionSdk as EncryptionSdk +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.MplManifestOptions as MplManifestOptions +import smithy_dafny_standard_library.internaldafny.generated.GetOpt as GetOpt +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllAlgorithmSuites as AllAlgorithmSuites +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.TestVectors as TestVectors +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllHierarchy as AllHierarchy +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllKms as AllKms +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllKmsMrkAware as AllKmsMrkAware +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllKmsMrkAwareDiscovery as AllKmsMrkAwareDiscovery +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllKmsRsa as AllKmsRsa +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllKmsEcdh as AllKmsEcdh +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllRawAES as AllRawAES +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllRawRSA as AllRawRSA +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllRawECDH as AllRawECDH +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllDefaultCmm as AllDefaultCmm +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllRequiredEncryptionContextCmm as AllRequiredEncryptionContextCmm +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllMulti as AllMulti +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.WriteJsonManifests as WriteJsonManifests +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.CompleteVectors as CompleteVectors +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.ParseJsonManifests as ParseJsonManifests +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.TestManifests as TestManifests +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.WrappedMaterialProvidersMain as WrappedMaterialProvidersMain +import aws_cryptography_primitives.internaldafny.generated.AesKdfCtr as AesKdfCtr +import smithy_dafny_standard_library.internaldafny.generated.StandardLibraryInterop as StandardLibraryInterop +import smithy_dafny_standard_library.internaldafny.generated.Sorting as Sorting +import smithy_dafny_standard_library.internaldafny.generated.FloatCompare as FloatCompare +import smithy_dafny_standard_library.internaldafny.generated.ConcurrentCall as ConcurrentCall +import smithy_dafny_standard_library.internaldafny.generated.Base64Lemmas as Base64Lemmas +import aws_encryption_sdk_test_vectors.internaldafny.generated.WrappedESDK as WrappedESDK +import aws_encryption_sdk_test_vectors.internaldafny.generated.EsdkManifestOptions as EsdkManifestOptions +import aws_encryption_sdk_test_vectors.internaldafny.generated.EsdkTestVectors as EsdkTestVectors +import aws_encryption_sdk_test_vectors.internaldafny.generated.AllEsdkV4NoReqEc as AllEsdkV4NoReqEc +import aws_encryption_sdk_test_vectors.internaldafny.generated.AllEsdkV4WithReqEc as AllEsdkV4WithReqEc +import aws_encryption_sdk_test_vectors.internaldafny.generated.WriteEsdkJsonManifests as WriteEsdkJsonManifests + +# Module: WriteVectors + +class default__: + def __init__(self): + pass + + @staticmethod + def GetCommitmentPolicyString(algorithmSuite): + source0_ = (algorithmSuite).id + if True: + if source0_.is_ESDK: + if ((algorithmSuite).commitment).is_None: + return _dafny.Seq("FORBID_ENCRYPT_ALLOW_DECRYPT") + elif True: + return _dafny.Seq("REQUIRE_ENCRYPT_REQUIRE_DECRYPT") + if True: + return _dafny.Seq("NOT SUPPORTED FOR UNSTRUCTURED ENCRYPTION") + + @staticmethod + def GetCommitmentPolicyType(commitmentPolicy): + if (commitmentPolicy) == (_dafny.Seq("FORBID_ENCRYPT_ALLOW_DECRYPT")): + return AwsCryptographyMaterialProvidersTypes.CommitmentPolicy_ESDK(AwsCryptographyMaterialProvidersTypes.ESDKCommitmentPolicy_FORBID__ENCRYPT__ALLOW__DECRYPT()) + elif True: + return AwsCryptographyMaterialProvidersTypes.CommitmentPolicy_ESDK(AwsCryptographyMaterialProvidersTypes.ESDKCommitmentPolicy_REQUIRE__ENCRYPT__REQUIRE__DECRYPT()) + + @staticmethod + def WriteTestVectors(op): + output: Wrappers.Result = Wrappers.Result.default(_dafny.defaults.tuple())() + d_0_version_: int + d_0_version_ = (op).version + d_1_valueOrError0_: Wrappers.Result = Wrappers.Result.default(_dafny.Set)() + d_1_valueOrError0_ = default__.getVersionTests(d_0_version_) + if (d_1_valueOrError0_).IsFailure(): + output = (d_1_valueOrError0_).PropagateFailure() + return output + d_2_allTests_: _dafny.Set + d_2_allTests_ = (d_1_valueOrError0_).Extract() + d_3_tests_: _dafny.Seq + out0_: _dafny.Seq + out0_ = SortedSets.default__.SetToSequence(d_2_allTests_) + d_3_tests_ = out0_ + d_4_sortedTests_: _dafny.Seq + d_4_sortedTests_ = Seq_MergeSort.default__.MergeSortBy(d_3_tests_, default__.DescriptionLessThan) + d_5_testsJSON_: _dafny.Seq + d_5_testsJSON_ = _dafny.Seq([]) + hi0_ = len(d_4_sortedTests_) + for d_6_i_ in range(0, hi0_): + d_7_valueOrError1_: Wrappers.Outcome = Wrappers.Outcome.default()() + d_7_valueOrError1_ = Wrappers.default__.Need((True) and ((((d_4_sortedTests_)[d_6_i_]).algorithmSuiteId).is_Some), _dafny.Seq("No algorithm suite defined in test")) + if (d_7_valueOrError1_).IsFailure(): + output = (d_7_valueOrError1_).PropagateFailure() + return output + d_8_id_: _dafny.Seq + d_8_id_ = AllAlgorithmSuites.default__.ToHex((((d_4_sortedTests_)[d_6_i_]).algorithmSuiteId).value) + d_9_valueOrError2_: Wrappers.Result = Wrappers.Result.default(_dafny.Seq)() + out1_: Wrappers.Result + out1_ = UUID.default__.GenerateUUID() + d_9_valueOrError2_ = out1_ + if not(not((d_9_valueOrError2_).IsFailure())): + raise _dafny.HaltException("dafny/TestVectors/src/WriteVectors.dfy(82,18): " + _dafny.string_of(d_9_valueOrError2_)) + d_10_uuid_: _dafny.Seq + d_10_uuid_ = (d_9_valueOrError2_).Extract() + d_11_valueOrError3_: Wrappers.Result = Wrappers.Result.default(JSON_Values.JSON.default())() + d_11_valueOrError3_ = WriteEsdkJsonManifests.default__.EncryptTestVectorToJson((d_4_sortedTests_)[d_6_i_]) + if (d_11_valueOrError3_).IsFailure(): + output = (d_11_valueOrError3_).PropagateFailure() + return output + d_12_test_: JSON_Values.JSON + d_12_test_ = (d_11_valueOrError3_).Extract() + d_5_testsJSON_ = (d_5_testsJSON_) + (_dafny.Seq([(d_10_uuid_, d_12_test_)])) + d_13_manifestJson_: JSON_Values.JSON + d_13_manifestJson_ = JSON_Values.JSON_Object(_dafny.Seq([(_dafny.Seq("type"), JSON_Values.JSON_String(_dafny.Seq("awses-encrypt"))), (_dafny.Seq("version"), JSON_Values.JSON_Number(JSON_Values.default__.Int(5)))])) + d_14_plaintexts_: JSON_Values.JSON + d_14_plaintexts_ = JSON_Values.JSON_Object(_dafny.Seq([(_dafny.Seq("small"), JSON_Values.JSON_Number(JSON_Values.default__.Int(10240)))])) + d_15_esdkEncryptManifests_: JSON_Values.JSON + d_15_esdkEncryptManifests_ = JSON_Values.JSON_Object(_dafny.Seq([(_dafny.Seq("manifest"), d_13_manifestJson_), (_dafny.Seq("keys"), JSON_Values.JSON_String(_dafny.Seq("file://keys.json"))), (_dafny.Seq("plaintexts"), d_14_plaintexts_), (_dafny.Seq("tests"), JSON_Values.JSON_Object(d_5_testsJSON_))])) + d_16_valueOrError4_: Wrappers.Result = Wrappers.Result.default(_dafny.Seq)() + d_16_valueOrError4_ = JSON_API.default__.Serialize(d_15_esdkEncryptManifests_) + if not(not((d_16_valueOrError4_).IsFailure())): + raise _dafny.HaltException("dafny/TestVectors/src/WriteVectors.dfy(102,36): " + _dafny.string_of(d_16_valueOrError4_)) + d_17_esdkEncryptManifestBytes_: _dafny.Seq + d_17_esdkEncryptManifestBytes_ = (d_16_valueOrError4_).Extract() + d_18_esdkEncryptManifestBv_: _dafny.Seq + d_18_esdkEncryptManifestBv_ = JSONHelpers.default__.BytesBv(d_17_esdkEncryptManifestBytes_) + d_19_valueOrError5_: Wrappers.Result = Wrappers.Result.default(_dafny.defaults.tuple())() + out2_: Wrappers.Result + out2_ = FileIO.default__.WriteBytesToFile(((op).encryptManifestOutput) + (_dafny.Seq("encrypt-manifest.json")), d_18_esdkEncryptManifestBv_) + d_19_valueOrError5_ = out2_ + if not(not((d_19_valueOrError5_).IsFailure())): + raise _dafny.HaltException("dafny/TestVectors/src/WriteVectors.dfy(105,13): " + _dafny.string_of(d_19_valueOrError5_)) + d_20___v2_: tuple + d_20___v2_ = (d_19_valueOrError5_).Extract() + output = Wrappers.Result_Success(()) + return output + + @staticmethod + def WriteDecryptManifest(op, keys, tests): + output: Wrappers.Result = Wrappers.Result.default(_dafny.defaults.tuple())() + d_0_testsJSON_: _dafny.Seq + d_0_testsJSON_ = _dafny.Seq([]) + hi0_ = len(tests) + for d_1_i_ in range(0, hi0_): + d_2_name_: _dafny.Seq + d_2_name_ = ((tests)[d_1_i_]).id + d_3_valueOrError0_: Wrappers.Result = Wrappers.Result.default(JSON_Values.JSON.default())() + d_3_valueOrError0_ = WriteEsdkJsonManifests.default__.DecryptTestVectorToJson((tests)[d_1_i_]) + if (d_3_valueOrError0_).IsFailure(): + output = (d_3_valueOrError0_).PropagateFailure() + return output + d_4_test_: JSON_Values.JSON + d_4_test_ = (d_3_valueOrError0_).Extract() + d_0_testsJSON_ = (d_0_testsJSON_) + (_dafny.Seq([(d_2_name_, d_4_test_)])) + d_5_manifestJson_: JSON_Values.JSON + d_5_manifestJson_ = JSON_Values.JSON_Object(_dafny.Seq([(_dafny.Seq("type"), JSON_Values.JSON_String(_dafny.Seq("awses-decrypt"))), (_dafny.Seq("version"), JSON_Values.JSON_Number(JSON_Values.default__.Int(3)))])) + d_6_esdkDecryptManifest_: JSON_Values.JSON + d_6_esdkDecryptManifest_ = JSON_Values.JSON_Object(_dafny.Seq([(_dafny.Seq("manifest"), d_5_manifestJson_), (_dafny.Seq("client"), JSON_Values.JSON_String(_dafny.Seq("aws-encryption-sdk-dafny"))), (_dafny.Seq("keys"), JSON_Values.JSON_String(_dafny.Seq("file://keys.json"))), (_dafny.Seq("tests"), JSON_Values.JSON_Object(d_0_testsJSON_))])) + d_7_valueOrError1_: Wrappers.Result = Wrappers.Result.default(_dafny.Seq)() + d_7_valueOrError1_ = JSON_API.default__.Serialize(d_6_esdkDecryptManifest_) + if not(not((d_7_valueOrError1_).IsFailure())): + raise _dafny.HaltException("dafny/TestVectors/src/WriteVectors.dfy(146,36): " + _dafny.string_of(d_7_valueOrError1_)) + d_8_esdkDecryptManifestBytes_: _dafny.Seq + d_8_esdkDecryptManifestBytes_ = (d_7_valueOrError1_).Extract() + d_9_esdkDecryptManifestBv_: _dafny.Seq + d_9_esdkDecryptManifestBv_ = JSONHelpers.default__.BytesBv(d_8_esdkDecryptManifestBytes_) + d_10_valueOrError2_: Wrappers.Result = Wrappers.Result.default(_dafny.defaults.tuple())() + out0_: Wrappers.Result + out0_ = FileIO.default__.WriteBytesToFile(((op).decryptManifestOutput) + (_dafny.Seq("decrypt-manifest.json")), d_9_esdkDecryptManifestBv_) + d_10_valueOrError2_ = out0_ + if not(not((d_10_valueOrError2_).IsFailure())): + raise _dafny.HaltException("dafny/TestVectors/src/WriteVectors.dfy(149,13): " + _dafny.string_of(d_10_valueOrError2_)) + d_11___v3_: tuple + d_11___v3_ = (d_10_valueOrError2_).Extract() + output = Wrappers.Result_Success(()) + return output + + @staticmethod + def getVersionTests(version): + source0_ = version + if True: + if (source0_) == (5): + return Wrappers.Result_Success((AllEsdkV4NoReqEc.default__.Tests) | (AllEsdkV4WithReqEc.default__.Tests)) + if True: + return Wrappers.Result_Failure(_dafny.Seq("Only version 4 of generate manifest is supported\n")) + + @staticmethod + def DescriptionLessThan(x, y): + return default__.Below((x).description, (y).description) + + @staticmethod + def Below(x, y): + return not ((len(x)) != (0)) or ((((len(y)) != (0)) and (((x)[0]) <= ((y)[0]))) and (not (((x)[0]) == ((y)[0])) or (default__.Below(_dafny.Seq((x)[1::]), _dafny.Seq((y)[1::]))))) + diff --git a/TestVectors/runtimes/python/src/aws_encryption_sdk_test_vectors/internaldafny/generated/__main__.py b/TestVectors/runtimes/python/src/aws_encryption_sdk_test_vectors/internaldafny/generated/__main__.py new file mode 100644 index 000000000..7303208b4 --- /dev/null +++ b/TestVectors/runtimes/python/src/aws_encryption_sdk_test_vectors/internaldafny/generated/__main__.py @@ -0,0 +1,15 @@ +# Dafny program the_program compiled into Python +import sys +from typing import Callable, Any, TypeVar, NamedTuple +from math import floor +from itertools import count + +import aws_encryption_sdk_test_vectors.internaldafny.generated.module_ as module_ +import _dafny as _dafny + +try: + dafnyArgs = [_dafny.Seq(a) for a in sys.argv] + module_.default__.Test____Main____(dafnyArgs) +except _dafny.HaltException as e: + _dafny.print("[Program halted] " + e.message + "\n") + sys.exit(1) diff --git a/TestVectors/runtimes/python/src/aws_encryption_sdk_test_vectors/internaldafny/generated/__pycache__/AllEsdkV4NoReqEc.cpython-311.pyc b/TestVectors/runtimes/python/src/aws_encryption_sdk_test_vectors/internaldafny/generated/__pycache__/AllEsdkV4NoReqEc.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..5b4e335ddca6e1b955c13b4a668b446c82e97199 GIT binary patch literal 41096 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 H?zQ+Qx_DfS literal 0 HcmV?d00001 diff --git a/TestVectors/runtimes/python/src/aws_encryption_sdk_test_vectors/internaldafny/generated/__pycache__/AllEsdkV4NoReqEc.cpython-312.pyc b/TestVectors/runtimes/python/src/aws_encryption_sdk_test_vectors/internaldafny/generated/__pycache__/AllEsdkV4NoReqEc.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..bafd1fb715b38c8bdac3ee685b52571dcf950dd8 GIT binary patch literal 34692 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 literal 0 HcmV?d00001 diff --git a/TestVectors/runtimes/python/src/aws_encryption_sdk_test_vectors/internaldafny/generated/__pycache__/AllEsdkV4WithReqEc.cpython-311.pyc b/TestVectors/runtimes/python/src/aws_encryption_sdk_test_vectors/internaldafny/generated/__pycache__/AllEsdkV4WithReqEc.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..df57a2c5649299425f6bb650c23f85869174db33 GIT binary patch literal 37299 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 U#vUw~i*`403vL%3p^FlDwdmD7ar*~0jz2?P1( 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 U5jL;f(uH{eTa7`~7CqGRU)?^}EC2ui literal 0 HcmV?d00001 diff --git a/TestVectors/runtimes/python/src/aws_encryption_sdk_test_vectors/internaldafny/generated/__pycache__/EsdkManifestOptions.cpython-312.pyc b/TestVectors/runtimes/python/src/aws_encryption_sdk_test_vectors/internaldafny/generated/__pycache__/EsdkManifestOptions.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..737420939e243b79fbc70a622690ab13a0eb1633 GIT binary patch literal 35046 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 literal 0 HcmV?d00001 diff --git a/TestVectors/runtimes/python/src/aws_encryption_sdk_test_vectors/internaldafny/generated/__pycache__/EsdkTestManifests.cpython-311.pyc b/TestVectors/runtimes/python/src/aws_encryption_sdk_test_vectors/internaldafny/generated/__pycache__/EsdkTestManifests.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..119fa671fa38b3a8bdc3529bc541434ade1d0411 GIT binary patch literal 70239 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 Ws0;4D2j{HiBB9Cx_kbXoi2gsG9y6=} literal 0 HcmV?d00001 diff --git a/TestVectors/runtimes/python/src/aws_encryption_sdk_test_vectors/internaldafny/generated/__pycache__/EsdkTestVectors.cpython-311.pyc b/TestVectors/runtimes/python/src/aws_encryption_sdk_test_vectors/internaldafny/generated/__pycache__/EsdkTestVectors.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..c8fc306d60b1fe6d78561c19c34383aa85f8907e GIT binary patch literal 105553 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

YYvS>y?{T2 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 Y&o7(RtLD~Au-%`9=I(bG<}cBq{xX!4 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 literal 0 HcmV?d00001 diff --git a/TestVectors/runtimes/python/src/aws_encryption_sdk_test_vectors/internaldafny/generated/__pycache__/ParseEsdkJsonManifest.cpython-312.pyc b/TestVectors/runtimes/python/src/aws_encryption_sdk_test_vectors/internaldafny/generated/__pycache__/ParseEsdkJsonManifest.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..624ebe96713c4aeaf4926b3a319f57b0113cfb8d GIT binary patch literal 59215 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 UCvJb=K9OdreV4$ic&6+B0k>7d@c;k- literal 0 HcmV?d00001 diff --git a/TestVectors/runtimes/python/src/aws_encryption_sdk_test_vectors/internaldafny/generated/__pycache__/WrappedESDK.cpython-311.pyc b/TestVectors/runtimes/python/src/aws_encryption_sdk_test_vectors/internaldafny/generated/__pycache__/WrappedESDK.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..aa32519bf2d576e697fda9261e1d2a38834fce55 GIT binary patch literal 35584 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 LOTiJpPx^lWD^Qu0 literal 0 HcmV?d00001 diff --git a/TestVectors/runtimes/python/src/aws_encryption_sdk_test_vectors/internaldafny/generated/__pycache__/WriteEsdkJsonManifests.cpython-311.pyc b/TestVectors/runtimes/python/src/aws_encryption_sdk_test_vectors/internaldafny/generated/__pycache__/WriteEsdkJsonManifests.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..457b24e313983afcb4dffada2e8b046aea2b1241 GIT binary patch literal 53261 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 literal 0 HcmV?d00001 diff --git a/TestVectors/runtimes/python/src/aws_encryption_sdk_test_vectors/internaldafny/generated/__pycache__/WriteEsdkJsonManifests.cpython-312.pyc b/TestVectors/runtimes/python/src/aws_encryption_sdk_test_vectors/internaldafny/generated/__pycache__/WriteEsdkJsonManifests.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a48b7ba2d2e8dad8f98c18489c25b72225d5c12c GIT binary patch literal 45429 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 literal 0 HcmV?d00001 diff --git a/TestVectors/runtimes/python/src/aws_encryption_sdk_test_vectors/internaldafny/generated/__pycache__/WriteVectors.cpython-311.pyc b/TestVectors/runtimes/python/src/aws_encryption_sdk_test_vectors/internaldafny/generated/__pycache__/WriteVectors.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..59d2abe68a8e59b575e0e8edcca92b2489412ad9 GIT binary patch literal 48774 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�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 literal 0 HcmV?d00001 diff --git a/TestVectors/runtimes/python/src/aws_encryption_sdk_test_vectors/internaldafny/generated/__pycache__/WriteVectors.cpython-312.pyc b/TestVectors/runtimes/python/src/aws_encryption_sdk_test_vectors/internaldafny/generated/__pycache__/WriteVectors.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b6bf50e62a35933a3f672a919af2eadb176e6b37 GIT binary patch literal 41100 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 BC~^P* literal 0 HcmV?d00001 diff --git a/TestVectors/runtimes/python/src/aws_encryption_sdk_test_vectors/internaldafny/generated/__pycache__/module_.cpython-311.pyc b/TestVectors/runtimes/python/src/aws_encryption_sdk_test_vectors/internaldafny/generated/__pycache__/module_.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..166cc9872cb720d885e00c3b219cb774d3046dd2 GIT binary patch literal 35924 zcmcJY3xFI&na6t{*;n?FU9x%c3PcD2lMsOb;W^nyHrXec-Go#K!(^tjJ7gZ4?%5<8 z2muKKA_5{JA|fInA|fK9=Xsvzd7h`7Jtv-Rd7gUed7kGP4n0pjPrrI}ZC7p2c5nCG zQt7Gw{cFB@bai#TdU&R#rAdRo;fdYjx9rrkACVL1uac>5Afdss_r>8h-T$Y*u7 zDp!rFb2X?YSBq+M3($fp!fUd1xq4Jj{k7SKTqA0v{;F(KZegmrO3O9VV+(5GycM-l zyKShAelC*2wWD?(u0!G{p_4dYEb&g%$@vnAFGWi^UncS8XgTLABz`hFne$U5ekwYZ z^V1}LIy#;6l@dP#ox%B;5?_T@asDQWpM}oi{A`J@MyokLN8)SH8qUv^_<86&&fhHY zwP-Ep>m^rFiEls~IDd=8FF+S?exbxKLKktqQQ{Y)i#fkU;+LXJIo~Al%g|+< zUoP=0&=s6tDeKHN=V^)SNauW?#K+M%=MxgopbY0XN_;=s&v{nj zIh5l(FYy8@a6T#V1Ly$fhQv)|a$c196q@4vpu`WML!2L$_%xd4{D{PFLN{@Kv&4_0 zqnzI&@nh&1=eJ7yHgp^3Zh#utp-4cHYJ;eEYB>pgZnDh5a{1NmB=kJsF zqv%o2-!JjU&|{o`K;n<1$2tF?#GgPpUV zmh+EF{5kX-=O2^!^XPfbKQ8eX&hy{L>PD1--)g zXC(ev^jXgTOyZwIpX2<`CH{HzdCvbr;$J{t;QTKo{zddf&i_i{UqWBv{I4bcW%Omv z|3>0pL0{qgZzcX!^i|IPPU2rfU*r7i5`PuF%K6_*{2S;SoLdqvp%Ul+An|XaZ*u;c z#J`2U#rZ!<{M+c;oZAxr4*Cw~SmNJB-{t(DB>p}0J${ zAE6&{{$q*%1pS2bf0g)8(N8)5H;MlY{fzT}m-x@o&pH1OiT?uqg7g2B_%G2fIX@xs z*U{^o|ChwyKyPsVD~bOa{hIUtmiTYbZ#e%SiT@V;mh<09{P*bhod2)H|A79$`Tt4$ zkLZt#-w!=>w{m|~uIm0OR3+4EMXdp~MyR!lx&YJ#LakHOdQj_y+MuY7pf(D%Nl_Pq zx=^UiirNBdi%?q?wGGrZp)OL?c2L`e+M%c?fqIfq7b|KfsGUMxqNqzjT`JUNin<)s zgk}KF4UEZdIqRx2=z=wT?OhYp}t8`&jR%Sd4XA5`dak0L2kLo3eY2vj1$C`Z*D30HP}d9fd_~;=>IR{{MNuyR^#Y+@ zsHhi#dXZ2!D(c0cUM$p06!lV2FBR%0MZFBv%Y=HlqFw>&6+*pIQLh5^DxqGjs4-Au zLfx#WU7&UewOdhpKDQO7_X6Y35{-3jVWplAelsC$HZ zy`m;SO$hY{MNNX56zX0@O@W#cYFbfsP<5g1Q`B)#$Avnfs2NZ*LcLK@_k+4$s98nL zftnL)UQr967KA#fs0TnjAXGz9O;Amt78P|0)G47JRMbPD9un$dMV$t9TBt`9^(Ihn z66(#0dKA>7LcK*%kAZqjsJANWZJ^#J)VC_??V#Q+)Z>bJ2dH-l^=*oJC#ZJ{^)5xd z8`Qgn`gTRV2h@9n`VK|C7u0)&`c6f?57hgFdcUGR0O|umeV3v>2g0qPS%{g9$Q z3F?zV{jj1w1?p2meOghU0reT7ene591@&2>epFGP1NAwfeoRrH2laWOeq2#s0QCi- zenL@S1ocIseo|3i0`(=Keo9ea2K8m3ep*pq0rizCtyd%`WxrM>BE|?p{lfos?$}+HB_V5rmK%@PlNKD_zqf-u7Nbv;>NVT zFFBPhCKAv-&-@X84g7nf4i03}90FGjJqrh1YwFp3(70*Z%HKV-e$3PjbA5Iyl}n`y z`Sphi#{S7{GNrFi9x~VJ`IIp|SYEtGK0MN`I2M=Vv>S)!?Rpwwz21 zqLImuCkp#;O!64e3EZ4coS!hKQYqau6DG;p%9TbdeBebS z@&x=1CNp{Rd1S>*NvqnA;TvW@9B$Q4)M?93xvSZ3JNblG)p&LF_d1rn)^WDA`r^-@ z{o1B&uWtPMCTqvdrT(L@^&c&5y5+S^x0F`jQtCMNTE{V~`PhjX@)h<)V-eUJT2n`^ zbsiE7sclLmcpZS0ClUvyl3Au0Z6wLfW-(dJq#$n-g|x8@kkL#I#1PGtLDrDy;RoO` zyWnuE`0qq@)q)m?+Bwu|bsZB z=^Lb87`5cEfE>uphHG=l;)FpeC~nNabto1JS<@hO5?|$WZ>*EcPc@U$6L{uN2Hj8>Lfv+@knc~DWt3wGW!F)Ptq!Zc9UL$EtmyK_yk(``_h5i=i}NfDupA`Dz%pL!Nrx&E1KeFx(4OgdnHq~w1}YR2 zy`}MzS@AI5Q;}G3n_?bs3TJn0wD%HROOM-0y{3Ubs9f^z*746v!sN1VFxG`@>5;aA^Q|qc9ZFLJ3*9H-Qq$kv3#lQ; zNU0$PL~6*%6=BLIo*B<4i_i z2D=KmST1>_kOv#xJTPkkmzS5em5*?Lu6&d0HrSstSu~41=`JOPOez8W8r{ewv(UH~ z4rbEOJt&*0n0&?h_31c_7jzckDRZiOD;e=1Px6S9VwQrlloXT+c6qo5G;v!@0lksTJ2^LTxO2SnBeBLAZ^+s|Hnz1J zdjI4&7%8t%a`dS}`*ft9Et*BH4p$4vy{@O@I^?&>x0B z)Pw;KsUvz?m|W~hqxCzj4h} zGCSm?zEwFNigdAA;gAG7_SjWS4+T76901wD|()pG~Fsx`gmX zEQ&$WOq!%LTvxlZ-xEiRs=Ir$S5)3OTI14X=xk&TGYu~PNTf?C4AHtXO7|C?Y!+Eo zRtdR5!ewtjKMYZ@>?|q6ha;C6kA)0O^W!F7K06{u>Wds#*OXzx9y;9Nio{{jt&>@M za!uUU9o8Ez?OW(py)2z`gsCPIFPcR{)>@d`5LSl@`D`Yy!}iHeZ@f8N>fOdLStSuM z;*iTXU<22XL)csw$hIgtZD+c3?TJIi(VaQy6^AztTe7YML&>_&LRxeu4>wC^A=hNV z1|$r_78d$>S-3hhQaA+t`vvSH|q62;z*WOfQ>NSQr;5^@C=)^t;aw2tc?PsqEacPh`ns|ZZ?IjJO2h1uT{Sxevjc^^PiC3M?XyvoQ3*WyQU<*I0IMCvyg~{neTvR7M`tnl7BIHxplj3_Lf&i@} zAeGL`6n;zx8Ia z`qp7w$3NATy(n#kGn3K;>2>^cw~H>`sv|F<2VK&cSrw0`_p=2Yb;ZgfNXTgtXp!_J z?8B^gJeQN|6fogV-=C}uvV^wJM)ZZWc^cGbrdm22i!L^wG|m(ibV%qf>Gs)Z<2*9m zrzhdfBbMET?i0EfCTK=sqEt__Z_nhlGwz8)WLHmjCyQh=7VNO)*>$0d=aJnV8(1ng z7t+(XSvs4SnYT!0+-DcfBQ?xOYzkg{foCYW5Y)e6-X?Gz`#PS_S9{418^F8w{Bu6F zhVMG3rMS?2Lf>Z$SZm;VcEfP{Abl$dx5%gSseZgl@V7{u{!^znrfcB=Qy4pBaw9PL z56zdWHD57@HlIR}?87F0(Z)h_Sl#j*x>+Bb%nl~=nSHRDK1_Rou#oA&LOzUOrvq5U zb^Nnpsg7l{>f3o89;{+r&Y8^yFlp~TQQtNReH|e6&Tds`exx&X*Hx4_$g2o-V4Zwc zY#71pIs3_Rt8$(ojh6HldXB$|G~X>DG~G@-V!u9KDn~dYsN1_EmK<#I#f>a3;;mTM zikT$)W^t3tU&+)%T4CQTO+EKk*gEW$b*vL_CCdhE(Kp&j**JdnHNz-Z*4adw%fXwM z*{thS-Gmt>mh!tjA>PwT*2-=cg#hXXwoiG~0&C*%O#cHzRMSjIBUnDzcIZuvP|+im%|VC{x~9kaC?EI(&! zdo4d_Ygx=WM@92({GKuDASLuwwAK|oUIv_p9>b|h^6^B(nfXBwk6up_Ny3Bb8Nqh4z%{*!_O3 zrTI8po3#8~ur|Txrl5IGTbhrv{Vo<<&0ysmqz(5;45Zf9ZnXSdu=X&>{WWB1KF;>L zpm4=)?K;cP1q&189^7teKCY5|fIaj+jdl!nO@rip)Y5!hu;)&YxPpWUa^3Tm=Hr6& zTgWx-r`ICdF-UzTaUG#?MLXKse#_5QZmefonvb(J-STt6!Xz!t#|6uKkg;BnK4g$` z4iY9vdV+)r(&rB{j`Q!Ule)T@*41c7TRUp`xnTW-Abp7-^)Sd>N{}!?`uzUoZ2MJs zxFc9Uv*gv)1jslm!;)8b3n1fcj8^g*rU7J}jqyufQzZZyCv~Hn){XA!*I^Xz_{oUA zyq|@1hiBvWlGjucK*mX212nDy8kgfIah3OzSd{Q!r;pm{qjnrWu~Xhp?8xDRT?;bL zR`Qx^1IReZmoo=KVsZR)&x){+?(nRgpF1vFJ7#IeO7sXGw*$y{rP5PLJ0tXZjnM1m z_(}Pc_mh%Q!dIxANxp_?dWL9v96w1y5+3Y0_XtrPKe1EZ&q7M!!Ok|Co^3Qe zj-S{m?r_2p+cs$T*t=DS1uR0%SZ`Tx71hnfY) z_scu!+myVfGyyVhYvYzSUZO|vxE(;o**sgxYqkv_<7~dJdPC9kOxfQ;KT3ct7xS=ynJ zMvjUD$T*wB_p9?k?2xrTzqXEyQ%YXLMu3b5>5m0zGf5lej2cM0;rPk3sl1Iv89poQG%spol~Cz?}EJx_o2=-RH@*-f^4 zZvN=0`h2T@_3Y~Es_On`Lqi>cU;o(d(HnOn^keFAf0e><;+91S9Y=8#FH0g!|I3qQ zsd8MNs=yVgN?e(mhv$`1UXiRyRpV;ru1waXYH=-dmnG{`^JC>@C{@pn4Y)z@M%>8k zHsL1rzd#AsjGINc7KNXNPZNBh!dr2x;ENQ#7%vuliNcrSrGhV0`04m`!Ivxi419** zXDa+Ge3sxV6n-{7Tkvxfz7nq#{7ni!7oRKmc?w^JR|$T;!dK(fg1=ee7vKv7e~ZG` z;5CA;Rror*PVfsAz8izD?oXxLfcZ zh4p;U+c(A5r)y9u<5{;R&1&e4oO{@wnhgg{N>z z@U+4+I3xIk!uR9-f?Eo=u`PI3;gfh$@B<1zhz|;WNZ~o06a28kkKiMM-=OfL_^9AF zD*PBeCiqPXzZu^w_$>;*72hiOZ3@2~-!Ayu6n+Q3L-0Eleiyz=@V6`cZhW`k?@;(X z_#VOEsqlO8y@KDT@cZ%og1<}Q58wv`f49OP#19Jo9)%yr#|3|{!XLs93I0BXKa3w1 z{QU}l1V1A92NeD&epK)eD*Q40nBX5$_~ZC-!9T3v$;|0@2f;D4*|ui>u={&x!h zI{v!gf3NUw;BN^24+{S#{-)sHQuw#=w*~)4g?|TsNAQ;v{xW`9@PAUcgB`*DS>fNs z-xWNs@K^9Ff`3op-^bqh5sD?T=4%;_%HA;1piNk{}TUF@c&Zyukfz~e_i3f#=jQ) zHwr(2PYC|s3jZzst>C{?_#5~Q!T(3$zsJ89{0|EMBmSe{|Eusn;Xeufe+vII{xj$I z!3f=}+*g(=yRQtFNwr*4D?qJ~YNe*m19hHMt2DJ5)M}~LXlgB}wNkCq)cK&!mukJH zHh|h7)kaNi0<}r13pBME)Mlx+XzFR8o+j0Wn%W9#t5g?h>S9nAOLd8+E(LX|RF`S$ z>7br2)#aLc2B>F9^-N7Y3)Hiux!U zzNW4Qb+uIAtf?1(dVy5mqN!^@T_e@Cnz|0ubyB@hQ`dvKUaD`^)Qdp9NU9fW>IP6Z zNOhy8UIOYRQoU4DF9Y>5sczEL%R#+ds#j?0W>7av^-4{>3e>BldbOs8Kn+Q?O;f|5 zhNarBsU4tpNVQW_w}84us$H7871XU#-KMGCpms~OM^k%2?UiburuKu{FVz7}-45z@ zsqWC!2&fUM4r=NUs6$d6*3_M#?v&~^nz{?rT~fuGx*OEpQoUAF_kg-bs@G|16x66x zuh&!qR70wJH8lomOsa8BH9<9{I-;qgppHs)Oj8q}CZxJgQ^!FamugZ|Q=q1#n%2|| zs2QnFXzG4Y_e<5%R2x)Vs##5)1a(rX2Q>8{s0XEbNKQPXS zO7%ufJqGGAsotciH-mb!RBzGLTS2{5s<&zC?V#Q+)wgNt9iZMJ)jKuyE>Q21>f1H- zZcy)*>N_;`9#HR*>N_>{UQq9q>V2AeKdARh^ynePR4krJuREBr#wU_S%v@(2wAYyFn3bEz zCNk+Yc6@wI+!#sc)(x6=cG!$%GjN^-$xozAd)-7XI|irQR*aq)ojNfJCq}byO7ws@ zCy~yYR@z8%Yolh`w2Z77Uzf_nCzED$?L>~$M5Bpx0&;Y?MP_cT%YFnYx97p(CiK0U z`V-(lO2%sdu#Ddc4p<#1J6d)_nSEte7S2AmjOnT37cckd?)ri&!oNqY@?iJu3TV>o z=l&lCpXvbNz1fXWMZ*N%QEAe zR@kPw!q}TRV6Lr$3a*N>q9P4lMl#!RC}y%6A+>haN~A}lnGsSEG54=7C(Y?h$Qrc= z3=3Kt6mm35>f_N1qxNJhX4-btrWs$c!fJ#+vVcY&grQsW#?xW78 z8(&^^qtkNirTSy9SD*#Utp#AAZ*>)|-!vo<(pMLaih75%Mx*;DjU-pBCYs24J8NVU zG04qWCT=YOWYyCHHN>)E(N!XL_#rs#GvII=`b~M+yaq^TRm-o-E9YHZexgD;`I+>j z^FIewMk?%_O{%iF2`EX6wi=68zD1jtMJt+Ari|>ERZX3>2`JNSCX=)++Q!ILCu!+x zm6pC%w)C|k$D~0CKx$7PmVwWdbG%X&^J4zA@Y0}J-P5$f-4R&5iD%o)dZP%>h&x}ILf%Z0G zC7|IY4w&|gZ7g)q4%2&uIAuVdL2rRJIrAj?)qdjaI7IIxJK!qFq)5Hu+vLZduv8`f zLw;<8IwBqNu1OkHZ-893Cq|*ac5^9wzH%wftrGv2`pIQiZzxPE*^%{vb8RiWABr;r z^SvH_sp)R-gw)Vupwv(UGBwn**-zO-5~FD&3wLxGU8s5$USp(^9WV2pDyx+a*S7|% zLwJ-=xP@Kc>-FjV#N28Uu9A?IhKEC&)@Ot2?GKb@umv4ZuQeXB%%OAwM%bjK2;1zh zU_&u}Q>b9IFZUZLdJU4@P5Xggalja==o70_$lj7Ln!Z=J`j4?*U3O@xhf zCY^{G$*D0Clx5aDlqJh%(ex3*+#-c%T+@Q-zyy>PT7SALEYknQ^aT&#YuP0b{ z(qUN{s~4t~40tdh4XQVoX?~5keIV_rpm%Y-!Fs9)JbcHpO0U{dghc{f1U$j*2|ET; zcvj9$`Jx&47A>+IOn%Y_TNs<2WcU}AW6da(5NU?7pN6*2Z2MHkvL0*hXqGHeW072+ zHkjK*AxlfCo7UoZSj*MiqTCZOMG)cij0e}k}yK`Pm?BTz;6WZ-5J?hTU~ z>C!L3xi!{EE*%@Q;3jq0j7yUXi_&1@PWnif8nleqxM`7k#TTprPML!704`7N)TsGO(OGmQU~0mOjnSckdmV|+qL>t{!1(pK!#3QQ#1-oy!Ja}pV(~HW zK%hwn!RiBU1ax-DO?{*0?+aAfyl`lOUHi?`QLy0$q!*@bUGoj9H?V1#f%BU7c=g%g zxpfrb-d<8c55YRHcD|SlYemwfk5A^9u1pHn4pJs8?9{=?!F2~SD$+)?Tjy~@RVgbM zb4#gfD4Br7MkXgFz+sWr;%bRE(1l#`1YaxFvI za&)Q-8`F9Ux($YJb)tpJR~s(UGJHxWb^CkR*%s;Vi?W+UbU0zcy)6t^8fh(#eQuDL zW^5-cP|(dHOJ-DjZjkWU>oE^O6g)eNX5jsS%S^;VA57DuHd#77B3J4P99MYKvSCLY zY4Jqjvf$R~tUaw0uXUGo`b+y3w(%~><{V+F$tDY?5udFV<~F3&zDzoqNSm+)vb8vF z^Ot(BF+x{KWQ@e;@(tJ^74+aY*BQDkicQOKI3Rl94Hn?aqPEbJqd=A_4<5T z^d^tgD?XoVvS0%eMqmpI`@h^@8yd(Qgz^16{^xU9vnMlZumxRGJLMeqmmW{g0sT@m zJZ4z%4-*?OiEP8R2(sd&AqGnsbB7%>=)OpDX7PBX?sF@uI*Dp}6i^8~CAdObnx4I9Zxm?7o%gvaL!EUf9qGI5hsyAGdMOXp--tmW2D zIep&0hO#4l6j(jyoDPzt3`IO(rs7 z#z^gy(`RqZ3~YfNqali7gAmEVdPG%VkZqV>|ogL40nP)eMs+9qbN} zr*;ztWw3>cvDVQF}=XEm8G-;lWf;^SLtuJQ5 ziwv;Zku?rQSp(-!CB>9$0+eDAdoYg$`w_Erk?9H>n zl%W9ml=hT1$(}0DVws#JK#=k+Zr1GudHK#Bru4D*O{VtJXR6s^cf;%{d71a`-3RYO zu~&6$vTByHR|1y46u9}>OTi6uZOKa^WLZW|6vBD46oNNgkh@UvHpZ;mgx`f`4T4Kv z0?@07U0iRPCI3^QN}qc%G@LE>B1n*@iy4Y_V5@k#m{}hvb(xc8GnX_8axav52tl^^ zy--0uU*BS>r6y~nOW&X5dj^zR>@t(=?J)MF;Cl2`bKfz*%qiS#Vpf8`wb-cneeMSA zG7q_Tk2;ULWaR>>bSHMne6Q!)Qq4W{xqo2A`!lHD~|5Kc7DZ(bLTBHIS zrHWPLuG7k-!0BxaOJ|l!m*-TfNX)I_qWJn!<(cicG~;d?l8d5b$&5og0CQlIm0or$EmwVzape|=>yNMGU3q|`xrT{qk9V#>Gb=qu%?x}-C;DjtcC^93Az z#i~dUpVK7JBbf&5!>o24SJ38kiV1he{&Z!KC$xDwVlSl4(V#gs)zacx^su?4ajK|b zK*DxOH%~_!=aA_x(||XRcy{M|J!~(`sb&-=O3gSwdn&K3k)qf~cFlOZk)@llV27>9 zt_NK*hwKio=c#PV#B-!x@y*H1TNN{2--bD)h8qb@!iz6(52Y2s-0SCTf>iO-$y`qD zq#r4OckjjjTw0CTbTS=rr_0FaFi6$Z5B5}u0t;I20 z3qQpah7Q`o2u%J%_vPu$m(8Nhr4SVRu!&#xu@D{6w>OAgJrXJD?`(|0{g|o!gVXv%fojOZdHeidr(N4?8b?dJg z2B}$h6KN_1Z(b&o9y_E= zq-}O4?cPz~UQ&eVueA8i3v5}2k9K8E_gSP#2PMlH+s~urtOzSvtE9J>sX}Z}z421@ zr!zh7(yvaD<+G~nVMpoHPvtu_rY$~~Q5%v@pBvV+PwTL)H<^iPU-WUg-={`+v6b$! zsHShVQisol+spfW5NQnP3jdN z+byk*j!$hPr)WnVk@jx+1sCRFZ?gEY*a4Fa?$zNAT2Ctm*ePx`UX`f_Sb?Fkpnz}aqT z-|@JedOfr5`q3qUsyvsI0Rbz8?ukH?BhtI>b{#)euud<~sjW}qe zfUtvb0S!B7xPT%KiWJap2kmy#%+qkagRU>2y$;%2KuHHB3#i{g{RPD1y3Rq@xpsI? z#~d`~=Hdni-B3UW9CV<7ct~!?Yc1=bYyrg_6e}RhL6&OWPhu8@I+o4mxPiEfa5!xV5x{(!9*6wQgpi8!XUxDLKr@VIboU8dqDC z?I62=Ob40n(QuIAhU6`Z*BU>UA35hoUi-W)(Hf^Qwy_x7AjYE(I$A)yZ26JL#alQ( z^4jOEg~uMt)4JP}r!^AE(^j-Ak9JYZ?d89N_Sp`Wqj?miq=%6n)+W1{y9-oqVSgU& zr(rr7r>&Zj0y>sQ$Glv353uk9%%*!T4b#VXALDLHDBs5THibjp^EB_1c{J&!XM3Jr zcZoc`t}}U*fmWTT*Cr=N^7M+PXL-{zMcf$S+Ginq^YpqK&7)DccJlN(?a$Ne=$brj zy*N*=MDFg%qaJ9_iH7p)hbJDQ6&Rx-3Dn0ea9cxt)ZOHz51qTzS2@H=D;a{Ij2xZ4fs);si> ztW+s?OMtc(xBYN8Kk{@MdD_Bbtc~&X@VeNYr#%(7!_!7XzEM+K2474?^vFJz`WM~q BE-wH8 literal 0 HcmV?d00001 diff --git a/TestVectors/runtimes/python/src/aws_encryption_sdk_test_vectors/internaldafny/generated/dafny_src-py.dtr b/TestVectors/runtimes/python/src/aws_encryption_sdk_test_vectors/internaldafny/generated/dafny_src-py.dtr new file mode 100644 index 000000000..2e95eed63 --- /dev/null +++ b/TestVectors/runtimes/python/src/aws_encryption_sdk_test_vectors/internaldafny/generated/dafny_src-py.dtr @@ -0,0 +1,35 @@ +file_format_version = "1.0" +dafny_version = "4.9.0.0" +[options_by_module.WrappedAbstractAwsCryptographyEncryptionSdkService] +legacy-module-names = false +python-module-name = "aws_encryption_sdk_test_vectors.internaldafny.generated" +[options_by_module.WrappedESDK] +legacy-module-names = false +python-module-name = "aws_encryption_sdk_test_vectors.internaldafny.generated" +[options_by_module.EsdkManifestOptions] +legacy-module-names = false +python-module-name = "aws_encryption_sdk_test_vectors.internaldafny.generated" +[options_by_module.EsdkTestVectors] +legacy-module-names = false +python-module-name = "aws_encryption_sdk_test_vectors.internaldafny.generated" +[options_by_module.AllEsdkV4NoReqEc] +legacy-module-names = false +python-module-name = "aws_encryption_sdk_test_vectors.internaldafny.generated" +[options_by_module.AllEsdkV4WithReqEc] +legacy-module-names = false +python-module-name = "aws_encryption_sdk_test_vectors.internaldafny.generated" +[options_by_module.WriteEsdkJsonManifests] +legacy-module-names = false +python-module-name = "aws_encryption_sdk_test_vectors.internaldafny.generated" +[options_by_module.WriteVectors] +legacy-module-names = false +python-module-name = "aws_encryption_sdk_test_vectors.internaldafny.generated" +[options_by_module.ParseEsdkJsonManifest] +legacy-module-names = false +python-module-name = "aws_encryption_sdk_test_vectors.internaldafny.generated" +[options_by_module.EsdkTestManifests] +legacy-module-names = false +python-module-name = "aws_encryption_sdk_test_vectors.internaldafny.generated" +[options_by_module.WrappedESDKMain] +legacy-module-names = false +python-module-name = "aws_encryption_sdk_test_vectors.internaldafny.generated" diff --git a/TestVectors/runtimes/python/src/aws_encryption_sdk_test_vectors/internaldafny/generated/module_.py b/TestVectors/runtimes/python/src/aws_encryption_sdk_test_vectors/internaldafny/generated/module_.py new file mode 100644 index 000000000..0fbd0d7f7 --- /dev/null +++ b/TestVectors/runtimes/python/src/aws_encryption_sdk_test_vectors/internaldafny/generated/module_.py @@ -0,0 +1,234 @@ +import sys +from typing import Callable, Any, TypeVar, NamedTuple +from math import floor +from itertools import count + +import aws_encryption_sdk_test_vectors.internaldafny.generated.module_ as module_ +import _dafny as _dafny +import System_ as System_ +import smithy_dafny_standard_library.internaldafny.generated.Wrappers as Wrappers +import smithy_dafny_standard_library.internaldafny.generated.BoundedInts as BoundedInts +import smithy_dafny_standard_library.internaldafny.generated.StandardLibrary_UInt as StandardLibrary_UInt +import smithy_dafny_standard_library.internaldafny.generated.StandardLibrary_Sequence as StandardLibrary_Sequence +import smithy_dafny_standard_library.internaldafny.generated.StandardLibrary_String as StandardLibrary_String +import smithy_dafny_standard_library.internaldafny.generated.StandardLibrary as StandardLibrary +import smithy_dafny_standard_library.internaldafny.generated.UTF8 as UTF8 +import aws_cryptography_primitives.internaldafny.generated.AwsCryptographyPrimitivesTypes as AwsCryptographyPrimitivesTypes +import aws_cryptography_primitives.internaldafny.generated.ExternRandom as ExternRandom +import aws_cryptography_primitives.internaldafny.generated.Random as Random +import aws_cryptography_primitives.internaldafny.generated.AESEncryption as AESEncryption +import aws_cryptography_primitives.internaldafny.generated.ExternDigest as ExternDigest +import aws_cryptography_primitives.internaldafny.generated.Digest as Digest +import aws_cryptography_primitives.internaldafny.generated.HMAC as HMAC +import aws_cryptography_primitives.internaldafny.generated.WrappedHMAC as WrappedHMAC +import aws_cryptography_primitives.internaldafny.generated.HKDF as HKDF +import aws_cryptography_primitives.internaldafny.generated.WrappedHKDF as WrappedHKDF +import aws_cryptography_primitives.internaldafny.generated.Signature as Signature +import aws_cryptography_primitives.internaldafny.generated.KdfCtr as KdfCtr +import aws_cryptography_primitives.internaldafny.generated.RSAEncryption as RSAEncryption +import aws_cryptography_primitives.internaldafny.generated.ECDH as ECDH +import aws_cryptography_primitives.internaldafny.generated.AwsCryptographyPrimitivesOperations as AwsCryptographyPrimitivesOperations +import aws_cryptography_primitives.internaldafny.generated.AtomicPrimitives as AtomicPrimitives +import aws_cryptography_internal_dynamodb.internaldafny.generated.ComAmazonawsDynamodbTypes as ComAmazonawsDynamodbTypes +import aws_cryptography_internal_kms.internaldafny.generated.ComAmazonawsKmsTypes as ComAmazonawsKmsTypes +import aws_cryptographic_material_providers.internaldafny.generated.AwsCryptographyKeyStoreTypes as AwsCryptographyKeyStoreTypes +import aws_cryptographic_material_providers.internaldafny.generated.AwsCryptographyMaterialProvidersTypes as AwsCryptographyMaterialProvidersTypes +import smithy_dafny_standard_library.internaldafny.generated.Base64 as Base64 +import aws_cryptographic_material_providers.internaldafny.generated.AlgorithmSuites as AlgorithmSuites +import aws_cryptographic_material_providers.internaldafny.generated.Materials as Materials +import aws_cryptographic_material_providers.internaldafny.generated.Keyring as Keyring +import smithy_dafny_standard_library.internaldafny.generated.Relations as Relations +import smithy_dafny_standard_library.internaldafny.generated.Seq_MergeSort as Seq_MergeSort +import smithy_dafny_standard_library.internaldafny.generated.Math as Math +import smithy_dafny_standard_library.internaldafny.generated.Seq as Seq +import aws_cryptographic_material_providers.internaldafny.generated.MultiKeyring as MultiKeyring +import aws_cryptographic_material_providers.internaldafny.generated.AwsArnParsing as AwsArnParsing +import aws_cryptographic_material_providers.internaldafny.generated.AwsKmsMrkAreUnique as AwsKmsMrkAreUnique +import smithy_dafny_standard_library.internaldafny.generated.Actions as Actions +import aws_cryptographic_material_providers.internaldafny.generated.AwsKmsMrkMatchForDecrypt as AwsKmsMrkMatchForDecrypt +import aws_cryptographic_material_providers.internaldafny.generated.AwsKmsUtils as AwsKmsUtils +import aws_cryptographic_material_providers.internaldafny.generated.Constants as Constants +import smithy_dafny_standard_library.internaldafny.generated.UUID as UUID +import aws_cryptographic_material_providers.internaldafny.generated.MaterialWrapping as MaterialWrapping +import smithy_dafny_standard_library.internaldafny.generated.SortedSets as SortedSets +import aws_cryptographic_material_providers.internaldafny.generated.CanonicalEncryptionContext as CanonicalEncryptionContext +import aws_cryptographic_material_providers.internaldafny.generated.IntermediateKeyWrapping as IntermediateKeyWrapping +import aws_cryptographic_material_providers.internaldafny.generated.EdkWrapping as EdkWrapping +import aws_cryptographic_material_providers.internaldafny.generated.ErrorMessages as ErrorMessages +import aws_cryptographic_material_providers.internaldafny.generated.AwsKmsKeyring as AwsKmsKeyring +import aws_cryptographic_material_providers.internaldafny.generated.StrictMultiKeyring as StrictMultiKeyring +import aws_cryptographic_material_providers.internaldafny.generated.AwsKmsDiscoveryKeyring as AwsKmsDiscoveryKeyring +import aws_cryptography_internal_kms.internaldafny.generated.Com_Amazonaws_Kms as Com_Amazonaws_Kms +import aws_cryptography_internal_dynamodb.internaldafny.generated.Com_Amazonaws_Dynamodb as Com_Amazonaws_Dynamodb +import aws_cryptographic_material_providers.internaldafny.generated.DiscoveryMultiKeyring as DiscoveryMultiKeyring +import aws_cryptographic_material_providers.internaldafny.generated.AwsKmsMrkDiscoveryKeyring as AwsKmsMrkDiscoveryKeyring +import aws_cryptographic_material_providers.internaldafny.generated.MrkAwareDiscoveryMultiKeyring as MrkAwareDiscoveryMultiKeyring +import aws_cryptographic_material_providers.internaldafny.generated.AwsKmsMrkKeyring as AwsKmsMrkKeyring +import aws_cryptographic_material_providers.internaldafny.generated.MrkAwareStrictMultiKeyring as MrkAwareStrictMultiKeyring +import smithy_dafny_standard_library.internaldafny.generated.DafnyLibraries as DafnyLibraries +import smithy_dafny_standard_library.internaldafny.generated.Time as Time +import aws_cryptographic_material_providers.internaldafny.generated.LocalCMC as LocalCMC +import aws_cryptographic_material_providers.internaldafny.generated.SynchronizedLocalCMC as SynchronizedLocalCMC +import aws_cryptographic_material_providers.internaldafny.generated.StormTracker as StormTracker +import aws_cryptographic_material_providers.internaldafny.generated.StormTrackingCMC as StormTrackingCMC +import aws_cryptographic_material_providers.internaldafny.generated.CacheConstants as CacheConstants +import aws_cryptographic_material_providers.internaldafny.generated.AwsKmsHierarchicalKeyring as AwsKmsHierarchicalKeyring +import aws_cryptographic_material_providers.internaldafny.generated.AwsKmsRsaKeyring as AwsKmsRsaKeyring +import aws_cryptographic_material_providers.internaldafny.generated.EcdhEdkWrapping as EcdhEdkWrapping +import aws_cryptographic_material_providers.internaldafny.generated.RawECDHKeyring as RawECDHKeyring +import aws_cryptographic_material_providers.internaldafny.generated.AwsKmsEcdhKeyring as AwsKmsEcdhKeyring +import aws_cryptographic_material_providers.internaldafny.generated.RawAESKeyring as RawAESKeyring +import aws_cryptographic_material_providers.internaldafny.generated.RawRSAKeyring as RawRSAKeyring +import aws_cryptographic_material_providers.internaldafny.generated.CMM as CMM +import aws_cryptographic_material_providers.internaldafny.generated.Defaults as Defaults +import aws_cryptographic_material_providers.internaldafny.generated.Commitment as Commitment +import aws_cryptographic_material_providers.internaldafny.generated.DefaultCMM as DefaultCMM +import aws_cryptographic_material_providers.internaldafny.generated.DefaultClientSupplier as DefaultClientSupplier +import aws_cryptographic_material_providers.internaldafny.generated.Utils as Utils +import aws_cryptographic_material_providers.internaldafny.generated.RequiredEncryptionContextCMM as RequiredEncryptionContextCMM +import aws_cryptographic_material_providers.internaldafny.generated.AwsCryptographyMaterialProvidersOperations as AwsCryptographyMaterialProvidersOperations +import aws_cryptographic_material_providers.internaldafny.generated.MaterialProviders as MaterialProviders +import aws_cryptographic_material_providers.internaldafny.generated.KeyStoreErrorMessages as KeyStoreErrorMessages +import aws_cryptographic_material_providers.internaldafny.generated.KmsArn as KmsArn +import aws_cryptographic_material_providers.internaldafny.generated.Structure as Structure +import aws_cryptographic_material_providers.internaldafny.generated.KMSKeystoreOperations as KMSKeystoreOperations +import aws_cryptographic_material_providers.internaldafny.generated.DDBKeystoreOperations as DDBKeystoreOperations +import aws_cryptographic_material_providers.internaldafny.generated.CreateKeys as CreateKeys +import aws_cryptographic_material_providers.internaldafny.generated.CreateKeyStoreTable as CreateKeyStoreTable +import aws_cryptographic_material_providers.internaldafny.generated.GetKeys as GetKeys +import aws_cryptographic_material_providers.internaldafny.generated.AwsCryptographyKeyStoreOperations as AwsCryptographyKeyStoreOperations +import aws_cryptographic_material_providers.internaldafny.generated.KeyStore as KeyStore +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AwsCryptographyMaterialProvidersTestVectorKeysTypes as AwsCryptographyMaterialProvidersTestVectorKeysTypes +import smithy_dafny_standard_library.internaldafny.generated.JSON_Utils_Views_Core as JSON_Utils_Views_Core +import smithy_dafny_standard_library.internaldafny.generated.JSON_Utils_Views_Writers as JSON_Utils_Views_Writers +import smithy_dafny_standard_library.internaldafny.generated.JSON_Utils_Lexers_Core as JSON_Utils_Lexers_Core +import smithy_dafny_standard_library.internaldafny.generated.JSON_Utils_Lexers_Strings as JSON_Utils_Lexers_Strings +import smithy_dafny_standard_library.internaldafny.generated.JSON_Utils_Cursors as JSON_Utils_Cursors +import smithy_dafny_standard_library.internaldafny.generated.JSON_Utils_Parsers as JSON_Utils_Parsers +import smithy_dafny_standard_library.internaldafny.generated.GeneralInternals as GeneralInternals +import smithy_dafny_standard_library.internaldafny.generated.MulInternalsNonlinear as MulInternalsNonlinear +import smithy_dafny_standard_library.internaldafny.generated.MulInternals as MulInternals +import smithy_dafny_standard_library.internaldafny.generated.Mul as Mul +import smithy_dafny_standard_library.internaldafny.generated.ModInternalsNonlinear as ModInternalsNonlinear +import smithy_dafny_standard_library.internaldafny.generated.DivInternalsNonlinear as DivInternalsNonlinear +import smithy_dafny_standard_library.internaldafny.generated.ModInternals as ModInternals +import smithy_dafny_standard_library.internaldafny.generated.DivInternals as DivInternals +import smithy_dafny_standard_library.internaldafny.generated.DivMod as DivMod +import smithy_dafny_standard_library.internaldafny.generated.Power as Power +import smithy_dafny_standard_library.internaldafny.generated.Logarithm as Logarithm +import smithy_dafny_standard_library.internaldafny.generated.JSON_Utils_Str_CharStrConversion as JSON_Utils_Str_CharStrConversion +import smithy_dafny_standard_library.internaldafny.generated.JSON_Utils_Str_CharStrEscaping as JSON_Utils_Str_CharStrEscaping +import smithy_dafny_standard_library.internaldafny.generated.JSON_Utils_Str as JSON_Utils_Str +import smithy_dafny_standard_library.internaldafny.generated.JSON_Utils_Seq as JSON_Utils_Seq +import smithy_dafny_standard_library.internaldafny.generated.JSON_Utils_Vectors as JSON_Utils_Vectors +import smithy_dafny_standard_library.internaldafny.generated.JSON_Errors as JSON_Errors +import smithy_dafny_standard_library.internaldafny.generated.JSON_Values as JSON_Values +import smithy_dafny_standard_library.internaldafny.generated.Unicode as Unicode +import smithy_dafny_standard_library.internaldafny.generated.Functions as Functions +import smithy_dafny_standard_library.internaldafny.generated.Utf8EncodingForm as Utf8EncodingForm +import smithy_dafny_standard_library.internaldafny.generated.Utf16EncodingForm as Utf16EncodingForm +import smithy_dafny_standard_library.internaldafny.generated.UnicodeStrings as UnicodeStrings +import smithy_dafny_standard_library.internaldafny.generated.JSON_Spec as JSON_Spec +import smithy_dafny_standard_library.internaldafny.generated.JSON_Grammar as JSON_Grammar +import smithy_dafny_standard_library.internaldafny.generated.JSON_Serializer_ByteStrConversion as JSON_Serializer_ByteStrConversion +import smithy_dafny_standard_library.internaldafny.generated.JSON_Serializer as JSON_Serializer +import smithy_dafny_standard_library.internaldafny.generated.JSON_Deserializer_Uint16StrConversion as JSON_Deserializer_Uint16StrConversion +import smithy_dafny_standard_library.internaldafny.generated.JSON_Deserializer_ByteStrConversion as JSON_Deserializer_ByteStrConversion +import smithy_dafny_standard_library.internaldafny.generated.JSON_Deserializer as JSON_Deserializer +import smithy_dafny_standard_library.internaldafny.generated.JSON_ConcreteSyntax_Spec as JSON_ConcreteSyntax_Spec +import smithy_dafny_standard_library.internaldafny.generated.JSON_ConcreteSyntax_SpecProperties as JSON_ConcreteSyntax_SpecProperties +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_Serializer as JSON_ZeroCopy_Serializer +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_Deserializer_Core as JSON_ZeroCopy_Deserializer_Core +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_Deserializer_Strings as JSON_ZeroCopy_Deserializer_Strings +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_Deserializer_Numbers as JSON_ZeroCopy_Deserializer_Numbers +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_Deserializer_ObjectParams as JSON_ZeroCopy_Deserializer_ObjectParams +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_Deserializer_Objects as JSON_ZeroCopy_Deserializer_Objects +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_Deserializer_ArrayParams as JSON_ZeroCopy_Deserializer_ArrayParams +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_Deserializer_Arrays as JSON_ZeroCopy_Deserializer_Arrays +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_Deserializer_Constants as JSON_ZeroCopy_Deserializer_Constants +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_Deserializer_Values as JSON_ZeroCopy_Deserializer_Values +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_Deserializer_API as JSON_ZeroCopy_Deserializer_API +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_Deserializer as JSON_ZeroCopy_Deserializer +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_API as JSON_ZeroCopy_API +import smithy_dafny_standard_library.internaldafny.generated.JSON_API as JSON_API +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.JSONHelpers as JSONHelpers +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.KeyDescription as KeyDescription +import smithy_dafny_standard_library.internaldafny.generated.HexStrings as HexStrings +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.KeyMaterial as KeyMaterial +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.CreateStaticKeyrings as CreateStaticKeyrings +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.CreateStaticKeyStores as CreateStaticKeyStores +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.KeyringFromKeyDescription as KeyringFromKeyDescription +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.CmmFromKeyDescription as CmmFromKeyDescription +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.WrappedMaterialProviders as WrappedMaterialProviders +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.KeysVectorOperations as KeysVectorOperations +import smithy_dafny_standard_library.internaldafny.generated.FileIO as FileIO +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.KeyVectors as KeyVectors +import aws_encryption_sdk.internaldafny.generated.AwsCryptographyEncryptionSdkTypes as AwsCryptographyEncryptionSdkTypes +import smithy_dafny_standard_library.internaldafny.generated.Streams as Streams +import aws_encryption_sdk.internaldafny.generated.SerializableTypes as SerializableTypes +import aws_encryption_sdk.internaldafny.generated.SerializeFunctions as SerializeFunctions +import aws_encryption_sdk.internaldafny.generated.EncryptionContext as EncryptionContext +import aws_encryption_sdk.internaldafny.generated.HeaderTypes as HeaderTypes +import aws_encryption_sdk.internaldafny.generated.SharedHeaderFunctions as SharedHeaderFunctions +import aws_encryption_sdk.internaldafny.generated.EncryptedDataKeys as EncryptedDataKeys +import aws_encryption_sdk.internaldafny.generated.V1HeaderBody as V1HeaderBody +import aws_encryption_sdk.internaldafny.generated.V2HeaderBody as V2HeaderBody +import aws_encryption_sdk.internaldafny.generated.HeaderAuth as HeaderAuth +import aws_encryption_sdk.internaldafny.generated.Header as Header +import aws_encryption_sdk.internaldafny.generated.Frames as Frames +import aws_encryption_sdk.internaldafny.generated.MessageBody as MessageBody +import aws_encryption_sdk.internaldafny.generated.KeyDerivation as KeyDerivation +import aws_encryption_sdk.internaldafny.generated.EncryptDecryptHelpers as EncryptDecryptHelpers +import aws_encryption_sdk.internaldafny.generated.AwsEncryptionSdkOperations as AwsEncryptionSdkOperations +import aws_encryption_sdk.internaldafny.generated.EncryptionSdk as EncryptionSdk +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.MplManifestOptions as MplManifestOptions +import smithy_dafny_standard_library.internaldafny.generated.GetOpt as GetOpt +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllAlgorithmSuites as AllAlgorithmSuites +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.TestVectors as TestVectors +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllHierarchy as AllHierarchy +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllKms as AllKms +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllKmsMrkAware as AllKmsMrkAware +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllKmsMrkAwareDiscovery as AllKmsMrkAwareDiscovery +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllKmsRsa as AllKmsRsa +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllKmsEcdh as AllKmsEcdh +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllRawAES as AllRawAES +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllRawRSA as AllRawRSA +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllRawECDH as AllRawECDH +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllDefaultCmm as AllDefaultCmm +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllRequiredEncryptionContextCmm as AllRequiredEncryptionContextCmm +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllMulti as AllMulti +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.WriteJsonManifests as WriteJsonManifests +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.CompleteVectors as CompleteVectors +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.ParseJsonManifests as ParseJsonManifests +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.TestManifests as TestManifests +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.WrappedMaterialProvidersMain as WrappedMaterialProvidersMain +import aws_cryptography_primitives.internaldafny.generated.AesKdfCtr as AesKdfCtr +import smithy_dafny_standard_library.internaldafny.generated.StandardLibraryInterop as StandardLibraryInterop +import smithy_dafny_standard_library.internaldafny.generated.Sorting as Sorting +import smithy_dafny_standard_library.internaldafny.generated.FloatCompare as FloatCompare +import smithy_dafny_standard_library.internaldafny.generated.ConcurrentCall as ConcurrentCall +import smithy_dafny_standard_library.internaldafny.generated.Base64Lemmas as Base64Lemmas +import aws_encryption_sdk_test_vectors.internaldafny.generated.WrappedESDK as WrappedESDK +import aws_encryption_sdk_test_vectors.internaldafny.generated.EsdkManifestOptions as EsdkManifestOptions +import aws_encryption_sdk_test_vectors.internaldafny.generated.EsdkTestVectors as EsdkTestVectors +import aws_encryption_sdk_test_vectors.internaldafny.generated.AllEsdkV4NoReqEc as AllEsdkV4NoReqEc +import aws_encryption_sdk_test_vectors.internaldafny.generated.AllEsdkV4WithReqEc as AllEsdkV4WithReqEc +import aws_encryption_sdk_test_vectors.internaldafny.generated.WriteEsdkJsonManifests as WriteEsdkJsonManifests +import aws_encryption_sdk_test_vectors.internaldafny.generated.WriteVectors as WriteVectors +import aws_encryption_sdk_test_vectors.internaldafny.generated.ParseEsdkJsonManifest as ParseEsdkJsonManifest +import aws_encryption_sdk_test_vectors.internaldafny.generated.EsdkTestManifests as EsdkTestManifests +import aws_encryption_sdk_test_vectors.internaldafny.generated.WrappedESDKMain as WrappedESDKMain + +# Module: module_ + +class default__: + def __init__(self): + pass + + @staticmethod + def Test____Main____(noArgsParameter__): + d_0_success_: bool + d_0_success_ = True + if not(d_0_success_): + raise _dafny.HaltException("(1,0): " + _dafny.string_of(_dafny.Seq("Test failures occurred: see above.\n"))) + diff --git a/TestVectors/runtimes/python/src/aws_encryption_sdk_test_vectors/smithygenerated/aws_cryptography_encryptionsdk/__init__.py b/TestVectors/runtimes/python/src/aws_encryption_sdk_test_vectors/smithygenerated/aws_cryptography_encryptionsdk/__init__.py new file mode 100644 index 000000000..09be6133b --- /dev/null +++ b/TestVectors/runtimes/python/src/aws_encryption_sdk_test_vectors/smithygenerated/aws_cryptography_encryptionsdk/__init__.py @@ -0,0 +1,3 @@ +# Copyright Amazon.com Inc. or its affiliates. All Rights Reserved. +# SPDX-License-Identifier: Apache-2.0 +# Do not modify this file. This file is machine generated, and any changes to it will be overwritten. diff --git a/TestVectors/runtimes/python/src/aws_encryption_sdk_test_vectors/smithygenerated/aws_cryptography_encryptionsdk/__pycache__/__init__.cpython-311.pyc b/TestVectors/runtimes/python/src/aws_encryption_sdk_test_vectors/smithygenerated/aws_cryptography_encryptionsdk/__pycache__/__init__.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ad9cf8ce43308aa3a72a7d552badb67297ba6bdf GIT binary patch literal 282 zcmYk%K}th05CG7`qKHs>4ux+nARfVu+Kr14lJWo0|C2B?-;$H`2*rhW@eW>~&|O!~ zFD*KY$xJejB-{D?MoHY|xAt4spQ$;AJ{9{bDK;voXLYNeJ{4X_zn=~dU*?qn$@HTi ze8|bHGp`F_9~Nt@jVZFV_oW`LABG&p9v<;hUO)Yh7Ls-|t@Tcw I6V7Ds7xAT6$p8QV literal 0 HcmV?d00001 diff --git a/TestVectors/runtimes/python/src/aws_encryption_sdk_test_vectors/smithygenerated/aws_cryptography_encryptionsdk/__pycache__/__init__.cpython-312.pyc b/TestVectors/runtimes/python/src/aws_encryption_sdk_test_vectors/smithygenerated/aws_cryptography_encryptionsdk/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..239a759b69941689af6346dc21f2a66fdd49b0ce GIT binary patch literal 270 zcmZ9`L23gr3;@7&(?AL2AuVkDfs!ZW)b`SYF}AX6vTGYj+u)bv4LRf`x#SOdLCGzr zYD1u<0%6H$kdE{Dtde+1pUp|$^Vs~4%cK14s!~0x)xN?9=`Q2U^`PGgkaRb=-uV>u zHsL0B)`7NLsv$ZonL~;-`AzNZIu`u~#2?@|iNhgs=z(-D+zKajBQ(Fz2sA9jeBBN8 zf!oqR1hfqPHh)`_8nn4Bf3R3>Oo)MvS>$qkdhL@RI#}XVu2+&Y7T*)46i%f20b|}( Ay#N3J literal 0 HcmV?d00001 diff --git a/TestVectors/runtimes/python/src/aws_encryption_sdk_test_vectors/smithygenerated/aws_cryptography_encryptionsdk/__pycache__/shim.cpython-311.pyc b/TestVectors/runtimes/python/src/aws_encryption_sdk_test_vectors/smithygenerated/aws_cryptography_encryptionsdk/__pycache__/shim.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..7290c627e128f016c4a33663aed7beb093b84ec7 GIT binary patch literal 3959 zcmeGeO>YxN^zDb8#IYUc6GEU(LPG1L*od~Gty-i2f%4G=FtlYWb>;4E5+}QBGrJ}j zg%(vDIP^}B94e}af5E9oQyJA7iBqLYy_p77#HsUkXBRsmq@_r`bUc3Z-kW)EX5PM! z`7x1*0c#V*FXq3A1N@3a&>|dJ`;8$tK?hwh!4eeFk`&pBC{e3TX%~<$njK2a8$0PNTy{vc*M|1 zrQ{yBOJ!GWCg>2SX3K8VoKMlgX}d|TnV>_Q;&Lt24BN8jaM3gk%`Ft|*|}*#io~Iv zv!(pSvf)uQo-@d$g2t(xs$&)0g^Ft6Qq?W0dVbF4WLluolwHyI?Yu$c#M&N)+yny@ zK?gb@95a$hveLl!z`f7}X=p9#PspojYdCu^29OVf*XcDYEFN@iX& zviW6aui@L08Dy`cFYWd2mpx}V?x)O5%sg3Aw%vkdIN4IgU0~u4(NIu*Ca5w&)ny{; zB`)JzZQigAl6MW=Tkn0c;ylTh(4OJ0Og8JVt7l3T+ODbvyWpzomF~bInSeFIZsQ~v zxCZt99XI6fVmH`tjWM9bTv5jG%vBQ5Tpi%z65bXW&u@#Ni5Elvyd?*-&Etx2n@QaX zC9jGruo%QG+`|1fv=wokjO2DbTeR37;9H)pBUpLM%OL?3j4M*>KCM&^c7q#6D!>?! z$*Xe9NmxGen>!R>04s8oc|FR*-cRsLGe@o`yLhRf0gSQbc%X-Ow(&qfEKUF)2J zzJ`l7_X^tO#~KSdUy@F~SU}~`?xhni1ZW%gGur+c^ScrY1DZT*IAzmSb7f64949zd z7~Ax%zqbp|MIF(y zu%7Ldine1=!En&ghOv9zX|T!V&~=r|=jjzahDT55kSb*7fe z{|V4NBmUvRdaD1SBz7ks0RxQ)Bt{!C*fa5i^2_*vpT`eW-}~g=_)KklrWzl8&^uJ? zop_KMZBaDqDVi1QeG{mt2Nm@^l;l39l7R-uiR6>VF-Q$IKww8{hQ7x8lgEA%?oFPk zO`f>dd$QJhvKn9CpRm@DP@ExaSX{oH`sfhAU5FieSGpS;KD1A|J0T#xFT&veS%8_y zYpwD6pJf4psfXbEfNV!F$iS8{-24jQF|7Nq1hNyA>_ULfuw|UKydcOh%8ekvuq2}l zY=|u`(G**p^A3uq16P3oA747hxTZYC_=nW<&xFh0|G?dJK0WxSlebgoh|9D)^;b|1l~5x1D1gJtCR zH1qweNieH%0j|y$z+%b;IG?B4{r}*+{BwBjN6$P*a9ttF;F8VjP-cA@`uN|g^q!Lr zX=B$V_!uBq=RMD)uRuF9fMGhX;_AFE1@B%Obt|QUJx@CEJ00Y+zI_}wZ|ixYt7hRV zk|&i--6^cZi57>W9ihj0k^U+S;RoQe6hxz(vmehtGPRXs({0DunihvY>{V_*X5Yq- z7RK?@_78o}J4lYQ34AX)gh5ur1fda&2x0?X4#YwDpbGE%y$+vOgIgsNJ%7^p%^Z$v>j%NCz`aj!$J8uU7RS>38PqGJN4v**LQJW!LzYI3F~pRUOZ O4<%goXp_a>H~9;96)eU8 literal 0 HcmV?d00001 diff --git a/TestVectors/runtimes/python/src/aws_encryption_sdk_test_vectors/smithygenerated/aws_cryptography_encryptionsdk/__pycache__/shim.cpython-312.pyc b/TestVectors/runtimes/python/src/aws_encryption_sdk_test_vectors/smithygenerated/aws_cryptography_encryptionsdk/__pycache__/shim.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..02debfe14ef8b58e1e1a974e5ab88e19b14add55 GIT binary patch literal 3701 zcmeGeO>YxNbY^$$B#!MkpAZ5xgwWyuwv<+)st^){&{EQbVEVyUVzu4fBzAV!W_C?5 z3N5N~=%u$x^x9K}_yN7sOQl}0(#p|5)k9CcrI;!ey>#B}tnC;m{oqomb9i4f@9n&| z?_<7ABw~oIiQ@Z?R)?YNUr6HZc1Iz4KSlTuUSe6Kjy$FXAfI|J%~*c)_)3<)D=2ZuY=okEU;&aktK z?~HJ`Tit_^gkDExWDS{7D^@rhI?%+0Op^|&!m*HQ;==JJ9a6XDfKo>*Qo7@3VA2X5 zK4lrCQu5EZrLwQJGIT_6b7j9}FW~6#wA-TB%Fq$P3B7IHEc;~NRMECA!_ODpxrJ#$ zio~Pcb0z(9+2S0H=PYt1ZwPL;<~ezPsiIkMRP&3PsV}&KO=Bvba4SaWBw$G}^>Ier zL>5x9iB!qNmb@UD(wd?wro4vKh^a6btwhpM+Buy&bvCz@cW6Y*J0;r)jf4gvc=bMR za22m24di@P&@DWh#w5wOv_uupvKKhxfr-)4N4K(XdlvDscG++Yv*>15ie$ND>xPxp zSG*%u5Jwh_Bc8c@g!`7gV0r#KEJQ3cSyFcWykmLUQpI0l>K-vbQEMt{Oi}Zhigrcl z1QA=bT#M+wW%BdOQzRGm79&N8$xUC4(cd=**)8p;$ww4egmXj=vNY};DJx7jyfU6)o- zfmeUPhp>&k~pPT&>1g09LJ(F!KuX*x;!9#0_J)0Q-JFC2P$ z*3h1y4p~74n)J}0D`=t<@K(c1gm#ELq@C}wyezRYp~>@>SGIjES2hgG^TKO2>Yg6{ zYhMw4s%!eHVU?iQG%TOi^LCk71ajt9g!D2*BYEh5bWpS!!_Hf-uMvy&B+sWq?P9M~ zbUlk=%Y)%E3X8z+ryat_YpF&72?;c#`d19xK$}vcYX(1zqTcKAJ5z|rb~qjz6@YyH6N-T2u3{*hY$ zM74k7eroK==H|G$IcZ~H0?hT*Wo00_iIhb0w}&y58h(H|GQ?*viFX7G+6yTQmF0FW@xtk!LB3^EFOFll&kk}*a-R$)S;rNV^d z70^2fAkDyRx&!8!t2>sa(U_(=MYC)J9oMwWW!)A#-J;fE>XUxZehC0Pv~D3X05tqe z0@H*8aLe1pz#7_&;>gJ7%XP%igJ?1`gX^OJ12xb{@1rx1_u5R}^)2G+Ht(RB#+=Ta zSn;OdH73TiXdSG1<;>*^m6GKV7_YSV6uf|h+d(^pQA+z-?vhRb@R;D~MW2Ip768lk zo`>sV#DvdV8ucrsyt_!c;XfT0yFq+BUw2KNn3|pcfas+1)O2bL)x@@hqg{=R bool: + return not self.__eq__(__o) + @property + def is_Decrypt(self) -> bool: + return isinstance(self, ManifestOptions_Decrypt) + @property + def is_Encrypt(self) -> bool: + return isinstance(self, ManifestOptions_Encrypt) + @property + def is_DecryptSingle(self) -> bool: + return isinstance(self, ManifestOptions_DecryptSingle) + @property + def is_EncryptManifest(self) -> bool: + return isinstance(self, ManifestOptions_EncryptManifest) + +class ManifestOptions_Decrypt(ManifestOptions, NamedTuple('Decrypt', [('manifestPath', Any), ('manifestFileName', Any), ('testName', Any)])): + def __dafnystr__(self) -> str: + return f'EsdkManifestOptions.ManifestOptions.Decrypt({_dafny.string_of(self.manifestPath)}, {_dafny.string_of(self.manifestFileName)}, {_dafny.string_of(self.testName)})' + def __eq__(self, __o: object) -> bool: + return isinstance(__o, ManifestOptions_Decrypt) and self.manifestPath == __o.manifestPath and self.manifestFileName == __o.manifestFileName and self.testName == __o.testName + def __hash__(self) -> int: + return super().__hash__() + +class ManifestOptions_Encrypt(ManifestOptions, NamedTuple('Encrypt', [('manifestPath', Any), ('manifest', Any), ('decryptManifestOutput', Any), ('testName', Any)])): + def __dafnystr__(self) -> str: + return f'EsdkManifestOptions.ManifestOptions.Encrypt({_dafny.string_of(self.manifestPath)}, {_dafny.string_of(self.manifest)}, {_dafny.string_of(self.decryptManifestOutput)}, {_dafny.string_of(self.testName)})' + def __eq__(self, __o: object) -> bool: + return isinstance(__o, ManifestOptions_Encrypt) and self.manifestPath == __o.manifestPath and self.manifest == __o.manifest and self.decryptManifestOutput == __o.decryptManifestOutput and self.testName == __o.testName + def __hash__(self) -> int: + return super().__hash__() + +class ManifestOptions_DecryptSingle(ManifestOptions, NamedTuple('DecryptSingle', [('keysPath', Any), ('keyDescription', Any), ('base64Bytes', Any)])): + def __dafnystr__(self) -> str: + return f'EsdkManifestOptions.ManifestOptions.DecryptSingle({_dafny.string_of(self.keysPath)}, {_dafny.string_of(self.keyDescription)}, {_dafny.string_of(self.base64Bytes)})' + def __eq__(self, __o: object) -> bool: + return isinstance(__o, ManifestOptions_DecryptSingle) and self.keysPath == __o.keysPath and self.keyDescription == __o.keyDescription and self.base64Bytes == __o.base64Bytes + def __hash__(self) -> int: + return super().__hash__() + +class ManifestOptions_EncryptManifest(ManifestOptions, NamedTuple('EncryptManifest', [('encryptManifestOutput', Any), ('version', Any)])): + def __dafnystr__(self) -> str: + return f'EsdkManifestOptions.ManifestOptions.EncryptManifest({_dafny.string_of(self.encryptManifestOutput)}, {_dafny.string_of(self.version)})' + def __eq__(self, __o: object) -> bool: + return isinstance(__o, ManifestOptions_EncryptManifest) and self.encryptManifestOutput == __o.encryptManifestOutput and self.version == __o.version + def __hash__(self) -> int: + return super().__hash__() + diff --git a/TestVectors/runtimes/python/src/internaldafny/generated/EsdkTestManifests.py b/TestVectors/runtimes/python/src/internaldafny/generated/EsdkTestManifests.py new file mode 100644 index 000000000..46dbf686f --- /dev/null +++ b/TestVectors/runtimes/python/src/internaldafny/generated/EsdkTestManifests.py @@ -0,0 +1,633 @@ +import sys +from typing import Callable, Any, TypeVar, NamedTuple +from math import floor +from itertools import count + +import .internaldafny.generated.module_ as module_ +import _dafny as _dafny +import System_ as System_ +import Wrappers as Wrappers +import BoundedInts as BoundedInts +import StandardLibrary_UInt as StandardLibrary_UInt +import StandardLibrary_Sequence as StandardLibrary_Sequence +import StandardLibrary_String as StandardLibrary_String +import StandardLibrary as StandardLibrary +import UTF8 as UTF8 +import AwsCryptographyPrimitivesTypes as AwsCryptographyPrimitivesTypes +import ExternRandom as ExternRandom +import Random as Random +import AESEncryption as AESEncryption +import ExternDigest as ExternDigest +import Digest as Digest +import HMAC as HMAC +import WrappedHMAC as WrappedHMAC +import HKDF as HKDF +import WrappedHKDF as WrappedHKDF +import Signature as Signature +import KdfCtr as KdfCtr +import RSAEncryption as RSAEncryption +import ECDH as ECDH +import AwsCryptographyPrimitivesOperations as AwsCryptographyPrimitivesOperations +import AtomicPrimitives as AtomicPrimitives +import ComAmazonawsDynamodbTypes as ComAmazonawsDynamodbTypes +import ComAmazonawsKmsTypes as ComAmazonawsKmsTypes +import AwsCryptographyKeyStoreTypes as AwsCryptographyKeyStoreTypes +import AwsCryptographyMaterialProvidersTypes as AwsCryptographyMaterialProvidersTypes +import Base64 as Base64 +import AlgorithmSuites as AlgorithmSuites +import Materials as Materials +import Keyring as Keyring +import Relations as Relations +import Seq_MergeSort as Seq_MergeSort +import Math as Math +import Seq as Seq +import MultiKeyring as MultiKeyring +import AwsArnParsing as AwsArnParsing +import AwsKmsMrkAreUnique as AwsKmsMrkAreUnique +import Actions as Actions +import AwsKmsMrkMatchForDecrypt as AwsKmsMrkMatchForDecrypt +import AwsKmsUtils as AwsKmsUtils +import Constants as Constants +import UUID as UUID +import MaterialWrapping as MaterialWrapping +import SortedSets as SortedSets +import CanonicalEncryptionContext as CanonicalEncryptionContext +import IntermediateKeyWrapping as IntermediateKeyWrapping +import EdkWrapping as EdkWrapping +import ErrorMessages as ErrorMessages +import AwsKmsKeyring as AwsKmsKeyring +import StrictMultiKeyring as StrictMultiKeyring +import AwsKmsDiscoveryKeyring as AwsKmsDiscoveryKeyring +import Com_Amazonaws_Kms as Com_Amazonaws_Kms +import Com_Amazonaws_Dynamodb as Com_Amazonaws_Dynamodb +import DiscoveryMultiKeyring as DiscoveryMultiKeyring +import AwsKmsMrkDiscoveryKeyring as AwsKmsMrkDiscoveryKeyring +import MrkAwareDiscoveryMultiKeyring as MrkAwareDiscoveryMultiKeyring +import AwsKmsMrkKeyring as AwsKmsMrkKeyring +import MrkAwareStrictMultiKeyring as MrkAwareStrictMultiKeyring +import DafnyLibraries as DafnyLibraries +import Time as Time +import LocalCMC as LocalCMC +import SynchronizedLocalCMC as SynchronizedLocalCMC +import StormTracker as StormTracker +import StormTrackingCMC as StormTrackingCMC +import CacheConstants as CacheConstants +import AwsKmsHierarchicalKeyring as AwsKmsHierarchicalKeyring +import AwsKmsRsaKeyring as AwsKmsRsaKeyring +import EcdhEdkWrapping as EcdhEdkWrapping +import RawECDHKeyring as RawECDHKeyring +import AwsKmsEcdhKeyring as AwsKmsEcdhKeyring +import RawAESKeyring as RawAESKeyring +import RawRSAKeyring as RawRSAKeyring +import CMM as CMM +import Defaults as Defaults +import Commitment as Commitment +import DefaultCMM as DefaultCMM +import DefaultClientSupplier as DefaultClientSupplier +import Utils as Utils +import RequiredEncryptionContextCMM as RequiredEncryptionContextCMM +import AwsCryptographyMaterialProvidersOperations as AwsCryptographyMaterialProvidersOperations +import MaterialProviders as MaterialProviders +import KeyStoreErrorMessages as KeyStoreErrorMessages +import KmsArn as KmsArn +import Structure as Structure +import KMSKeystoreOperations as KMSKeystoreOperations +import DDBKeystoreOperations as DDBKeystoreOperations +import CreateKeys as CreateKeys +import CreateKeyStoreTable as CreateKeyStoreTable +import GetKeys as GetKeys +import AwsCryptographyKeyStoreOperations as AwsCryptographyKeyStoreOperations +import KeyStore as KeyStore +import AwsCryptographyMaterialProvidersTestVectorKeysTypes as AwsCryptographyMaterialProvidersTestVectorKeysTypes +import JSON_Utils_Views_Core as JSON_Utils_Views_Core +import JSON_Utils_Views_Writers as JSON_Utils_Views_Writers +import JSON_Utils_Lexers_Core as JSON_Utils_Lexers_Core +import JSON_Utils_Lexers_Strings as JSON_Utils_Lexers_Strings +import JSON_Utils_Cursors as JSON_Utils_Cursors +import JSON_Utils_Parsers as JSON_Utils_Parsers +import GeneralInternals as GeneralInternals +import MulInternalsNonlinear as MulInternalsNonlinear +import MulInternals as MulInternals +import Mul as Mul +import ModInternalsNonlinear as ModInternalsNonlinear +import DivInternalsNonlinear as DivInternalsNonlinear +import ModInternals as ModInternals +import DivInternals as DivInternals +import DivMod as DivMod +import Power as Power +import Logarithm as Logarithm +import JSON_Utils_Str_CharStrConversion as JSON_Utils_Str_CharStrConversion +import JSON_Utils_Str_CharStrEscaping as JSON_Utils_Str_CharStrEscaping +import JSON_Utils_Str as JSON_Utils_Str +import JSON_Utils_Seq as JSON_Utils_Seq +import JSON_Utils_Vectors as JSON_Utils_Vectors +import JSON_Errors as JSON_Errors +import JSON_Values as JSON_Values +import Unicode as Unicode +import Functions as Functions +import Utf8EncodingForm as Utf8EncodingForm +import Utf16EncodingForm as Utf16EncodingForm +import UnicodeStrings as UnicodeStrings +import JSON_Spec as JSON_Spec +import JSON_Grammar as JSON_Grammar +import JSON_Serializer_ByteStrConversion as JSON_Serializer_ByteStrConversion +import JSON_Serializer as JSON_Serializer +import JSON_Deserializer_Uint16StrConversion as JSON_Deserializer_Uint16StrConversion +import JSON_Deserializer_ByteStrConversion as JSON_Deserializer_ByteStrConversion +import JSON_Deserializer as JSON_Deserializer +import JSON_ConcreteSyntax_Spec as JSON_ConcreteSyntax_Spec +import JSON_ConcreteSyntax_SpecProperties as JSON_ConcreteSyntax_SpecProperties +import JSON_ZeroCopy_Serializer as JSON_ZeroCopy_Serializer +import JSON_ZeroCopy_Deserializer_Core as JSON_ZeroCopy_Deserializer_Core +import JSON_ZeroCopy_Deserializer_Strings as JSON_ZeroCopy_Deserializer_Strings +import JSON_ZeroCopy_Deserializer_Numbers as JSON_ZeroCopy_Deserializer_Numbers +import JSON_ZeroCopy_Deserializer_ObjectParams as JSON_ZeroCopy_Deserializer_ObjectParams +import JSON_ZeroCopy_Deserializer_Objects as JSON_ZeroCopy_Deserializer_Objects +import JSON_ZeroCopy_Deserializer_ArrayParams as JSON_ZeroCopy_Deserializer_ArrayParams +import JSON_ZeroCopy_Deserializer_Arrays as JSON_ZeroCopy_Deserializer_Arrays +import JSON_ZeroCopy_Deserializer_Constants as JSON_ZeroCopy_Deserializer_Constants +import JSON_ZeroCopy_Deserializer_Values as JSON_ZeroCopy_Deserializer_Values +import JSON_ZeroCopy_Deserializer_API as JSON_ZeroCopy_Deserializer_API +import JSON_ZeroCopy_Deserializer as JSON_ZeroCopy_Deserializer +import JSON_ZeroCopy_API as JSON_ZeroCopy_API +import JSON_API as JSON_API +import JSONHelpers as JSONHelpers +import KeyDescription as KeyDescription +import HexStrings as HexStrings +import KeyMaterial as KeyMaterial +import CreateStaticKeyrings as CreateStaticKeyrings +import CreateStaticKeyStores as CreateStaticKeyStores +import KeyringFromKeyDescription as KeyringFromKeyDescription +import CmmFromKeyDescription as CmmFromKeyDescription +import WrappedMaterialProviders as WrappedMaterialProviders +import KeysVectorOperations as KeysVectorOperations +import FileIO as FileIO +import KeyVectors as KeyVectors +import AwsCryptographyEncryptionSdkTypes as AwsCryptographyEncryptionSdkTypes +import Streams as Streams +import SerializableTypes as SerializableTypes +import SerializeFunctions as SerializeFunctions +import EncryptionContext as EncryptionContext +import HeaderTypes as HeaderTypes +import SharedHeaderFunctions as SharedHeaderFunctions +import EncryptedDataKeys as EncryptedDataKeys +import V1HeaderBody as V1HeaderBody +import V2HeaderBody as V2HeaderBody +import HeaderAuth as HeaderAuth +import Header as Header +import Frames as Frames +import MessageBody as MessageBody +import KeyDerivation as KeyDerivation +import EncryptDecryptHelpers as EncryptDecryptHelpers +import AwsEncryptionSdkOperations as AwsEncryptionSdkOperations +import EncryptionSdk as EncryptionSdk +import MplManifestOptions as MplManifestOptions +import GetOpt as GetOpt +import AllAlgorithmSuites as AllAlgorithmSuites +import TestVectors as TestVectors +import AllHierarchy as AllHierarchy +import AllKms as AllKms +import AllKmsMrkAware as AllKmsMrkAware +import AllKmsMrkAwareDiscovery as AllKmsMrkAwareDiscovery +import AllKmsRsa as AllKmsRsa +import AllKmsEcdh as AllKmsEcdh +import AllRawAES as AllRawAES +import AllRawRSA as AllRawRSA +import AllRawECDH as AllRawECDH +import AllDefaultCmm as AllDefaultCmm +import AllRequiredEncryptionContextCmm as AllRequiredEncryptionContextCmm +import AllMulti as AllMulti +import WriteJsonManifests as WriteJsonManifests +import CompleteVectors as CompleteVectors +import ParseJsonManifests as ParseJsonManifests +import TestManifests as TestManifests +import WrappedMaterialProvidersMain as WrappedMaterialProvidersMain +import AesKdfCtr as AesKdfCtr +import StandardLibraryInterop as StandardLibraryInterop +import Sorting as Sorting +import FloatCompare as FloatCompare +import ConcurrentCall as ConcurrentCall +import Base64Lemmas as Base64Lemmas +import .internaldafny.generated.WrappedESDK as WrappedESDK +import .internaldafny.generated.EsdkManifestOptions as EsdkManifestOptions +import .internaldafny.generated.EsdkTestVectors as EsdkTestVectors +import .internaldafny.generated.AllEsdkV4NoReqEc as AllEsdkV4NoReqEc +import .internaldafny.generated.AllEsdkV4WithReqEc as AllEsdkV4WithReqEc +import .internaldafny.generated.WriteEsdkJsonManifests as WriteEsdkJsonManifests +import .internaldafny.generated.WriteVectors as WriteVectors +import .internaldafny.generated.ParseEsdkJsonManifest as ParseEsdkJsonManifest + +# Module: EsdkTestManifests + +class default__: + def __init__(self): + pass + + @staticmethod + def StartDecryptVectors(op): + output: Wrappers.Result = Wrappers.Result.default(_dafny.Seq)() + d_0_valueOrError0_: Wrappers.Result = None + out0_: Wrappers.Result + out0_ = default__.GetManifest((op).manifestPath, (op).manifestFileName) + d_0_valueOrError0_ = out0_ + if not(not((d_0_valueOrError0_).IsFailure())): + raise _dafny.HaltException("dafny/TestVectors/src/EsdkTestManifests.dfy(40,27): " + _dafny.string_of(d_0_valueOrError0_)) + d_1_decryptManifest_: ManifestData + d_1_decryptManifest_ = (d_0_valueOrError0_).Extract() + d_2_valueOrError1_: Wrappers.Outcome = Wrappers.Outcome.default()() + d_2_valueOrError1_ = Wrappers.default__.Need((d_1_decryptManifest_).is_DecryptManifest, _dafny.Seq("Not a decrypt manifest")) + if (d_2_valueOrError1_).IsFailure(): + output = (d_2_valueOrError1_).PropagateFailure() + return output + d_3_valueOrError2_: Wrappers.Result = Wrappers.Result.default(_dafny.Seq)() + d_3_valueOrError2_ = ParseEsdkJsonManifest.default__.BuildDecryptTestVector(op, (d_1_decryptManifest_).version, (d_1_decryptManifest_).keys, (d_1_decryptManifest_).jsonTests) + if (d_3_valueOrError2_).IsFailure(): + output = (d_3_valueOrError2_).PropagateFailure() + return output + d_4_decryptVectors_: _dafny.Seq + d_4_decryptVectors_ = (d_3_valueOrError2_).Extract() + out1_: Wrappers.Result + out1_ = default__.TestDecrypts((d_1_decryptManifest_).keys, d_4_decryptVectors_) + output = out1_ + return output + + @staticmethod + def TestDecryptVector_q(v): + return (True) and (((v).decryptionMethod).is_OneShot) + + @staticmethod + def TestDecrypts(keys, vectors): + manifest: Wrappers.Result = Wrappers.Result.default(_dafny.Seq)() + _dafny.print(_dafny.string_of(_dafny.Seq("\n=================== Starting "))) + _dafny.print(_dafny.string_of(len(vectors))) + _dafny.print(_dafny.string_of(_dafny.Seq(" Decrypt Tests =================== \n\n"))) + d_0_hasFailure_: bool + d_0_hasFailure_ = False + d_1_skipped_: int + d_1_skipped_ = 0 + hi0_ = len(vectors) + for d_2_i_ in range(0, hi0_): + d_3_vector_: EsdkTestVectors.EsdkDecryptTestVector + d_3_vector_ = (vectors)[d_2_i_] + if default__.TestDecryptVector_q(d_3_vector_): + d_4_pass_: bool + out0_: bool + out0_ = EsdkTestVectors.default__.TestDecrypt(keys, d_3_vector_) + d_4_pass_ = out0_ + if not(d_4_pass_): + d_0_hasFailure_ = True + elif True: + d_1_skipped_ = (d_1_skipped_) + (1) + _dafny.print(_dafny.string_of(_dafny.Seq("\nSKIP===> "))) + _dafny.print(_dafny.string_of((d_3_vector_).id)) + _dafny.print(_dafny.string_of(_dafny.Seq("\n"))) + _dafny.print(_dafny.string_of(_dafny.Seq("\n=================== Completed "))) + _dafny.print(_dafny.string_of(len(vectors))) + _dafny.print(_dafny.string_of(_dafny.Seq(" Decrypt Tests =================== \n\n"))) + if (0) < (d_1_skipped_): + _dafny.print(_dafny.string_of(_dafny.Seq("Skipped: "))) + _dafny.print(_dafny.string_of(d_1_skipped_)) + _dafny.print(_dafny.string_of(_dafny.Seq("\n"))) + if not(not(d_0_hasFailure_)): + raise _dafny.HaltException("dafny/TestVectors/src/EsdkTestManifests.dfy(92,4): " + _dafny.string_of(_dafny.Seq("expectation violation"))) + manifest = Wrappers.Result_Success(_dafny.Seq([])) + return manifest + + @staticmethod + def StartEncryptVectors(op): + output: Wrappers.Result = Wrappers.Result.default(_dafny.defaults.tuple())() + d_0_valueOrError0_: Wrappers.Result = None + out0_: Wrappers.Result + out0_ = default__.GetManifest((op).manifestPath, (op).manifest) + d_0_valueOrError0_ = out0_ + if (d_0_valueOrError0_).IsFailure(): + output = (d_0_valueOrError0_).PropagateFailure() + return output + d_1_encryptManifest_: ManifestData + d_1_encryptManifest_ = (d_0_valueOrError0_).Extract() + d_2_valueOrError1_: Wrappers.Outcome = Wrappers.Outcome.default()() + d_2_valueOrError1_ = Wrappers.default__.Need((d_1_encryptManifest_).is_EncryptManifest, _dafny.Seq("Not a encrypt manifest")) + if (d_2_valueOrError1_).IsFailure(): + output = (d_2_valueOrError1_).PropagateFailure() + return output + d_3_valueOrError2_: Wrappers.Result = Wrappers.Result.default(_dafny.Seq)() + d_3_valueOrError2_ = ParseEsdkJsonManifest.default__.BuildEncryptTestVector(op, (d_1_encryptManifest_).version, (d_1_encryptManifest_).keys, (d_1_encryptManifest_).jsonTests) + if (d_3_valueOrError2_).IsFailure(): + output = (d_3_valueOrError2_).PropagateFailure() + return output + d_4_encryptVectors_: _dafny.Seq + d_4_encryptVectors_ = (d_3_valueOrError2_).Extract() + d_5_valueOrError3_: Wrappers.Result = None + out1_: Wrappers.Result + out1_ = AtomicPrimitives.default__.AtomicPrimitives(AtomicPrimitives.default__.DefaultCryptoConfig()) + d_5_valueOrError3_ = out1_ + if not(not((d_5_valueOrError3_).IsFailure())): + raise _dafny.HaltException("dafny/TestVectors/src/EsdkTestManifests.dfy(114,13): " + _dafny.string_of(d_5_valueOrError3_)) + d_6_p_: AtomicPrimitives.AtomicPrimitivesClient + d_6_p_ = (d_5_valueOrError3_).Extract() + d_7_plaintext_: _dafny.Map + d_7_plaintext_ = _dafny.Map({}) + hi0_ = len((d_1_encryptManifest_).plaintext) + for d_8_i_ in range(0, hi0_): + let_tmp_rhs0_ = ((d_1_encryptManifest_).plaintext)[d_8_i_] + d_9_name_ = let_tmp_rhs0_[0] + d_10_length_ = let_tmp_rhs0_[1] + d_11_valueOrError4_: Wrappers.Result = Wrappers.Result.default(_dafny.Seq)() + out2_: Wrappers.Result + out2_ = (d_6_p_).GenerateRandomBytes(AwsCryptographyPrimitivesTypes.GenerateRandomBytesInput_GenerateRandomBytesInput(d_10_length_)) + d_11_valueOrError4_ = out2_ + if not(not((d_11_valueOrError4_).IsFailure())): + raise _dafny.HaltException("dafny/TestVectors/src/EsdkTestManifests.dfy(119,18): " + _dafny.string_of(d_11_valueOrError4_)) + d_12_data_: _dafny.Seq + d_12_data_ = (d_11_valueOrError4_).Extract() + _dafny.print(_dafny.string_of((((op).decryptManifestOutput) + (EsdkTestVectors.default__.plaintextPathRoot)) + (d_9_name_))) + _dafny.print(_dafny.string_of(_dafny.Seq("\n\n"))) + d_13_valueOrError5_: Wrappers.Result = Wrappers.Result.default(_dafny.defaults.tuple())() + out3_: Wrappers.Result + out3_ = EsdkTestVectors.default__.WriteVectorsFile((((op).decryptManifestOutput) + (EsdkTestVectors.default__.plaintextPathRoot)) + (d_9_name_), d_12_data_) + d_13_valueOrError5_ = out3_ + if (d_13_valueOrError5_).IsFailure(): + output = (d_13_valueOrError5_).PropagateFailure() + return output + d_14___v0_: tuple + d_14___v0_ = (d_13_valueOrError5_).Extract() + d_7_plaintext_ = (d_7_plaintext_) | (_dafny.Map({d_9_name_: d_12_data_})) + d_15_encryptTests_q_: Wrappers.Result + out4_: Wrappers.Result + out4_ = default__.ToEncryptTests((d_1_encryptManifest_).keys, d_4_encryptVectors_) + d_15_encryptTests_q_ = out4_ + d_16_valueOrError6_: Wrappers.Result = Wrappers.Result.default(_dafny.Seq)() + def lambda0_(d_17_e_): + def iife0_(_pat_let6_0): + def iife1_(d_18___v1_): + return _dafny.Seq("Cmm failure") + return iife1_(_pat_let6_0) + return iife0_(EsdkTestVectors.default__.MplVectorPrintErr(d_17_e_)) + + d_16_valueOrError6_ = (d_15_encryptTests_q_).MapFailure(lambda0_) + if (d_16_valueOrError6_).IsFailure(): + output = (d_16_valueOrError6_).PropagateFailure() + return output + d_19_encryptTests_: _dafny.Seq + d_19_encryptTests_ = (d_16_valueOrError6_).Extract() + d_20_valueOrError7_: Wrappers.Result = Wrappers.Result.default(_dafny.Seq)() + out5_: Wrappers.Result + out5_ = default__.TestEncrypts(d_7_plaintext_, (d_1_encryptManifest_).keys, d_19_encryptTests_) + d_20_valueOrError7_ = out5_ + if (d_20_valueOrError7_).IsFailure(): + output = (d_20_valueOrError7_).PropagateFailure() + return output + d_21_decryptVectors_: _dafny.Seq + d_21_decryptVectors_ = (d_20_valueOrError7_).Extract() + d_22_valueOrError8_: Wrappers.Result = Wrappers.Result.default(_dafny.defaults.tuple())() + out6_: Wrappers.Result + out6_ = WriteVectors.default__.WriteDecryptManifest(op, (d_1_encryptManifest_).keys, d_21_decryptVectors_) + d_22_valueOrError8_ = out6_ + if (d_22_valueOrError8_).IsFailure(): + output = (d_22_valueOrError8_).PropagateFailure() + return output + d_23___v2_: tuple + d_23___v2_ = (d_22_valueOrError8_).Extract() + output = Wrappers.Result_Success(()) + return output + + @staticmethod + def TestEncryptVector_q(vector): + return (True) and (not (((vector).frameLength).is_Some) or (AwsCryptographyEncryptionSdkTypes.default__.IsValid__FrameLength(((vector).frameLength).value))) + + @staticmethod + def ToEncryptTests(keys, vectors): + output: Wrappers.Result = Wrappers.Result.default(_dafny.Seq)() + d_0_encryptTests_: _dafny.Seq + d_0_encryptTests_ = _dafny.Seq([]) + hi0_ = len(vectors) + for d_1_i_ in range(0, hi0_): + d_2_valueOrError0_: Wrappers.Result = None + out0_: Wrappers.Result + out0_ = EsdkTestVectors.default__.EncryptVectorToEncryptTest(keys, (vectors)[d_1_i_]) + d_2_valueOrError0_ = out0_ + if (d_2_valueOrError0_).IsFailure(): + output = (d_2_valueOrError0_).PropagateFailure() + return output + d_3_test_: EsdkTestVectors.EncryptTest + d_3_test_ = (d_2_valueOrError0_).Extract() + d_0_encryptTests_ = (d_0_encryptTests_) + (_dafny.Seq([d_3_test_])) + output = Wrappers.Result_Success(d_0_encryptTests_) + return output + return output + + @staticmethod + def TestEncrypts(plaintexts, keys, tests): + manifest: Wrappers.Result = Wrappers.Result.default(_dafny.Seq)() + _dafny.print(_dafny.string_of(_dafny.Seq("\n=================== Starting "))) + _dafny.print(_dafny.string_of(len(tests))) + _dafny.print(_dafny.string_of(_dafny.Seq(" Encrypt Tests =================== \n\n"))) + d_0_hasFailure_: bool + d_0_hasFailure_ = False + d_1_decryptVectors_: _dafny.Seq + d_1_decryptVectors_ = _dafny.Seq([]) + d_2_skipped_: _dafny.Seq + d_2_skipped_ = _dafny.Seq([]) + hi0_ = len(tests) + for d_3_i_ in range(0, hi0_): + d_4_test_: EsdkTestVectors.EncryptTest + d_4_test_ = (tests)[d_3_i_] + d_5_valueOrError0_: Wrappers.Outcome = Wrappers.Outcome.default()() + d_5_valueOrError0_ = Wrappers.default__.Need((((d_4_test_).vector).id).is_Some, _dafny.Seq("Vector is missing uuid")) + if (d_5_valueOrError0_).IsFailure(): + manifest = (d_5_valueOrError0_).PropagateFailure() + return manifest + if default__.TestEncryptVector_q((d_4_test_).vector): + d_6_valueOrError1_: Wrappers.Outcome = Wrappers.Outcome.default()() + d_6_valueOrError1_ = Wrappers.default__.Need(((((d_4_test_).vector).algorithmSuiteId).is_Some) and ((((((d_4_test_).vector).algorithmSuiteId).value).id).is_ESDK), _dafny.Seq("Vector is using an algorithm suite other than ESDK")) + if (d_6_valueOrError1_).IsFailure(): + manifest = (d_6_valueOrError1_).PropagateFailure() + return manifest + d_7_valueOrError2_: Wrappers.Result = Wrappers.Result.default(EsdkTestVectors.EncryptTestOutput.default())() + out0_: Wrappers.Result + out0_ = EsdkTestVectors.default__.TestEncrypt(plaintexts, keys, d_4_test_) + d_7_valueOrError2_ = out0_ + if (d_7_valueOrError2_).IsFailure(): + manifest = (d_7_valueOrError2_).PropagateFailure() + return manifest + d_8_pass_: EsdkTestVectors.EncryptTestOutput + d_8_pass_ = (d_7_valueOrError2_).Extract() + if not((d_8_pass_).output): + d_0_hasFailure_ = True + elif ((d_8_pass_).vector).is_Some: + d_1_decryptVectors_ = (d_1_decryptVectors_) + (_dafny.Seq([((d_8_pass_).vector).value])) + elif True: + d_2_skipped_ = (d_2_skipped_) + (_dafny.Seq([((((d_4_test_).vector).id).value) + (_dafny.Seq("\n"))])) + _dafny.print(_dafny.string_of(_dafny.Seq("\nSKIP===> "))) + _dafny.print(_dafny.string_of((((d_4_test_).vector).id).value)) + _dafny.print(_dafny.string_of(_dafny.Seq("\n"))) + _dafny.print(_dafny.string_of(_dafny.Seq("\n=================== Completed "))) + _dafny.print(_dafny.string_of(len(tests))) + _dafny.print(_dafny.string_of(_dafny.Seq(" Encrypt Tests =================== \n\n"))) + if not(not(d_0_hasFailure_)): + raise _dafny.HaltException("dafny/TestVectors/src/EsdkTestManifests.dfy(215,4): " + _dafny.string_of(_dafny.Seq("expectation violation"))) + manifest = Wrappers.Result_Success(d_1_decryptVectors_) + return manifest + + @staticmethod + def GetManifest(manifestPath, manifestFileName): + manifestData: Wrappers.Result = None + d_0_valueOrError0_: Wrappers.Result = Wrappers.Result.default(_dafny.Seq)() + out0_: Wrappers.Result + out0_ = FileIO.default__.ReadBytesFromFile((manifestPath) + (manifestFileName)) + d_0_valueOrError0_ = out0_ + if (d_0_valueOrError0_).IsFailure(): + manifestData = (d_0_valueOrError0_).PropagateFailure() + return manifestData + d_1_decryptManifestBv_: _dafny.Seq + d_1_decryptManifestBv_ = (d_0_valueOrError0_).Extract() + d_2_decryptManifestBytes_: _dafny.Seq + d_2_decryptManifestBytes_ = JSONHelpers.default__.BvToBytes(d_1_decryptManifestBv_) + d_3_valueOrError1_: Wrappers.Result = Wrappers.Result.default(JSON_Values.JSON.default())() + def lambda0_(d_4_e_): + return (d_4_e_).ToString() + + d_3_valueOrError1_ = (JSON_API.default__.Deserialize(d_2_decryptManifestBytes_)).MapFailure(lambda0_) + if (d_3_valueOrError1_).IsFailure(): + manifestData = (d_3_valueOrError1_).PropagateFailure() + return manifestData + d_5_manifestJson_: JSON_Values.JSON + d_5_manifestJson_ = (d_3_valueOrError1_).Extract() + d_6_valueOrError2_: Wrappers.Outcome = Wrappers.Outcome.default()() + d_6_valueOrError2_ = Wrappers.default__.Need((d_5_manifestJson_).is_Object, _dafny.Seq("Not a JSON object")) + if (d_6_valueOrError2_).IsFailure(): + manifestData = (d_6_valueOrError2_).PropagateFailure() + return manifestData + d_7_valueOrError3_: Wrappers.Result = Wrappers.Result.default(_dafny.Seq)() + d_7_valueOrError3_ = JSONHelpers.default__.GetObject(_dafny.Seq("manifest"), (d_5_manifestJson_).obj) + if (d_7_valueOrError3_).IsFailure(): + manifestData = (d_7_valueOrError3_).PropagateFailure() + return manifestData + d_8_manifest_: _dafny.Seq + d_8_manifest_ = (d_7_valueOrError3_).Extract() + d_9_valueOrError4_: Wrappers.Result = Wrappers.Result.default(System_.nat.default)() + d_9_valueOrError4_ = JSONHelpers.default__.GetNat(_dafny.Seq("version"), d_8_manifest_) + if (d_9_valueOrError4_).IsFailure(): + manifestData = (d_9_valueOrError4_).PropagateFailure() + return manifestData + d_10_version_: int + d_10_version_ = (d_9_valueOrError4_).Extract() + d_11_valueOrError5_: Wrappers.Result = Wrappers.Result.default(_dafny.Seq)() + d_11_valueOrError5_ = JSONHelpers.default__.GetString(_dafny.Seq("type"), d_8_manifest_) + if (d_11_valueOrError5_).IsFailure(): + manifestData = (d_11_valueOrError5_).PropagateFailure() + return manifestData + d_12_typ_: _dafny.Seq + d_12_typ_ = (d_11_valueOrError5_).Extract() + d_13_valueOrError6_: Wrappers.Result = Wrappers.Result.default(_dafny.Seq)() + d_13_valueOrError6_ = JSONHelpers.default__.GetString(_dafny.Seq("keys"), (d_5_manifestJson_).obj) + if (d_13_valueOrError6_).IsFailure(): + manifestData = (d_13_valueOrError6_).PropagateFailure() + return manifestData + d_14_keyManifestUri_: _dafny.Seq + d_14_keyManifestUri_ = (d_13_valueOrError6_).Extract() + d_15_valueOrError7_: Wrappers.Outcome = Wrappers.Outcome.default()() + d_15_valueOrError7_ = Wrappers.default__.Need((_dafny.Seq("file://")) < (d_14_keyManifestUri_), _dafny.Seq("Unexpected URI prefix")) + if (d_15_valueOrError7_).IsFailure(): + manifestData = (d_15_valueOrError7_).PropagateFailure() + return manifestData + d_16_keyManifestPath_: _dafny.Seq + d_16_keyManifestPath_ = (manifestPath) + (_dafny.Seq((d_14_keyManifestUri_)[7::])) + d_17_valueOrError8_: Wrappers.Result = None + out1_: Wrappers.Result + out1_ = KeyVectors.default__.KeyVectors(AwsCryptographyMaterialProvidersTestVectorKeysTypes.KeyVectorsConfig_KeyVectorsConfig(d_16_keyManifestPath_)) + d_17_valueOrError8_ = out1_ + if not(not((d_17_valueOrError8_).IsFailure())): + raise _dafny.HaltException("dafny/TestVectors/src/EsdkTestManifests.dfy(263,16): " + _dafny.string_of(d_17_valueOrError8_)) + d_18_keys_: KeyVectors.KeyVectorsClient + d_18_keys_ = (d_17_valueOrError8_).Extract() + d_19_valueOrError9_: Wrappers.Result = Wrappers.Result.default(_dafny.Seq)() + d_19_valueOrError9_ = JSONHelpers.default__.GetObject(_dafny.Seq("tests"), (d_5_manifestJson_).obj) + if (d_19_valueOrError9_).IsFailure(): + manifestData = (d_19_valueOrError9_).PropagateFailure() + return manifestData + d_20_jsonTests_: _dafny.Seq + d_20_jsonTests_ = (d_19_valueOrError9_).Extract() + source0_ = d_12_typ_ + with _dafny.label("match0"): + if True: + if (source0_) == (_dafny.Seq("awses-decrypt")): + d_21_valueOrError10_: Wrappers.Outcome = Wrappers.Outcome.default()() + d_21_valueOrError10_ = Wrappers.default__.Need(EsdkTestVectors.default__.SupportedDecryptVersion_q(d_10_version_), _dafny.Seq("Unsupported manifest version")) + if (d_21_valueOrError10_).IsFailure(): + manifestData = (d_21_valueOrError10_).PropagateFailure() + return manifestData + d_22_valueOrError11_: Wrappers.Result = Wrappers.Result.default(JSON_Values.JSON.default())() + d_22_valueOrError11_ = JSONHelpers.default__.Get(_dafny.Seq("client"), (d_5_manifestJson_).obj) + if (d_22_valueOrError11_).IsFailure(): + manifestData = (d_22_valueOrError11_).PropagateFailure() + return manifestData + d_23_client_: JSON_Values.JSON + d_23_client_ = (d_22_valueOrError11_).Extract() + manifestData = Wrappers.Result_Success(ManifestData_DecryptManifest(d_10_version_, d_18_keys_, d_23_client_, d_20_jsonTests_)) + raise _dafny.Break("match0") + if True: + if (source0_) == (_dafny.Seq("awses-encrypt")): + d_24_valueOrError12_: Wrappers.Outcome = Wrappers.Outcome.default()() + d_24_valueOrError12_ = Wrappers.default__.Need(EsdkTestVectors.default__.SupportedEncryptVersion_q(d_10_version_), _dafny.Seq("Unsupported manifest version")) + if (d_24_valueOrError12_).IsFailure(): + manifestData = (d_24_valueOrError12_).PropagateFailure() + return manifestData + d_25_valueOrError13_: Wrappers.Result = Wrappers.Result.default(_dafny.Seq)() + d_25_valueOrError13_ = JSONHelpers.default__.GetObject(_dafny.Seq("plaintexts"), (d_5_manifestJson_).obj) + if (d_25_valueOrError13_).IsFailure(): + manifestData = (d_25_valueOrError13_).PropagateFailure() + return manifestData + d_26_plaintextsJson_: _dafny.Seq + d_26_plaintextsJson_ = (d_25_valueOrError13_).Extract() + d_27_valueOrError15_: Wrappers.Result = Wrappers.Result.default(_dafny.Seq)() + def lambda1_(d_28_obj_): + def iife0_(_pat_let7_0): + def iife1_(d_29_valueOrError14_): + return ((d_29_valueOrError14_).PropagateFailure() if (d_29_valueOrError14_).IsFailure() else Wrappers.Result_Success(((d_28_obj_)[0], (((d_28_obj_)[1]).num).n))) + return iife1_(_pat_let7_0) + return iife0_(Wrappers.default__.Need((((d_28_obj_)[1]).is_Number) and (((0) < ((((d_28_obj_)[1]).num).n)) and (((((d_28_obj_)[1]).num).n) <= (BoundedInts.default__.INT32__MAX))), _dafny.Seq("Size is not a natural number."))) + + d_27_valueOrError15_ = Seq.default__.MapWithResult(lambda1_, d_26_plaintextsJson_) + if (d_27_valueOrError15_).IsFailure(): + manifestData = (d_27_valueOrError15_).PropagateFailure() + return manifestData + d_30_plaintextsLength_: _dafny.Seq + d_30_plaintextsLength_ = (d_27_valueOrError15_).Extract() + manifestData = Wrappers.Result_Success(ManifestData_EncryptManifest(d_10_version_, d_18_keys_, d_30_plaintextsLength_, d_20_jsonTests_)) + raise _dafny.Break("match0") + if True: + manifestData = Wrappers.Result_Failure((_dafny.Seq("Unsupported manifest type:")) + (d_12_typ_)) + pass + return manifestData + + +class ManifestData: + @classmethod + def default(cls, ): + return lambda: ManifestData_DecryptManifest(int(0), None, JSON_Values.JSON.default()(), _dafny.Seq({})) + def __ne__(self, __o: object) -> bool: + return not self.__eq__(__o) + @property + def is_DecryptManifest(self) -> bool: + return isinstance(self, ManifestData_DecryptManifest) + @property + def is_EncryptManifest(self) -> bool: + return isinstance(self, ManifestData_EncryptManifest) + +class ManifestData_DecryptManifest(ManifestData, NamedTuple('DecryptManifest', [('version', Any), ('keys', Any), ('client', Any), ('jsonTests', Any)])): + def __dafnystr__(self) -> str: + return f'EsdkTestManifests.ManifestData.DecryptManifest({_dafny.string_of(self.version)}, {_dafny.string_of(self.keys)}, {_dafny.string_of(self.client)}, {_dafny.string_of(self.jsonTests)})' + def __eq__(self, __o: object) -> bool: + return isinstance(__o, ManifestData_DecryptManifest) and self.version == __o.version and self.keys == __o.keys and self.client == __o.client and self.jsonTests == __o.jsonTests + def __hash__(self) -> int: + return super().__hash__() + +class ManifestData_EncryptManifest(ManifestData, NamedTuple('EncryptManifest', [('version', Any), ('keys', Any), ('plaintext', Any), ('jsonTests', Any)])): + def __dafnystr__(self) -> str: + return f'EsdkTestManifests.ManifestData.EncryptManifest({_dafny.string_of(self.version)}, {_dafny.string_of(self.keys)}, {_dafny.string_of(self.plaintext)}, {_dafny.string_of(self.jsonTests)})' + def __eq__(self, __o: object) -> bool: + return isinstance(__o, ManifestData_EncryptManifest) and self.version == __o.version and self.keys == __o.keys and self.plaintext == __o.plaintext and self.jsonTests == __o.jsonTests + def __hash__(self) -> int: + return super().__hash__() + diff --git a/TestVectors/runtimes/python/src/internaldafny/generated/EsdkTestVectors.py b/TestVectors/runtimes/python/src/internaldafny/generated/EsdkTestVectors.py new file mode 100644 index 000000000..4c25e1195 --- /dev/null +++ b/TestVectors/runtimes/python/src/internaldafny/generated/EsdkTestVectors.py @@ -0,0 +1,780 @@ +import sys +from typing import Callable, Any, TypeVar, NamedTuple +from math import floor +from itertools import count + +import .internaldafny.generated.module_ as module_ +import _dafny as _dafny +import System_ as System_ +import Wrappers as Wrappers +import BoundedInts as BoundedInts +import StandardLibrary_UInt as StandardLibrary_UInt +import StandardLibrary_Sequence as StandardLibrary_Sequence +import StandardLibrary_String as StandardLibrary_String +import StandardLibrary as StandardLibrary +import UTF8 as UTF8 +import AwsCryptographyPrimitivesTypes as AwsCryptographyPrimitivesTypes +import ExternRandom as ExternRandom +import Random as Random +import AESEncryption as AESEncryption +import ExternDigest as ExternDigest +import Digest as Digest +import HMAC as HMAC +import WrappedHMAC as WrappedHMAC +import HKDF as HKDF +import WrappedHKDF as WrappedHKDF +import Signature as Signature +import KdfCtr as KdfCtr +import RSAEncryption as RSAEncryption +import ECDH as ECDH +import AwsCryptographyPrimitivesOperations as AwsCryptographyPrimitivesOperations +import AtomicPrimitives as AtomicPrimitives +import ComAmazonawsDynamodbTypes as ComAmazonawsDynamodbTypes +import ComAmazonawsKmsTypes as ComAmazonawsKmsTypes +import AwsCryptographyKeyStoreTypes as AwsCryptographyKeyStoreTypes +import AwsCryptographyMaterialProvidersTypes as AwsCryptographyMaterialProvidersTypes +import Base64 as Base64 +import AlgorithmSuites as AlgorithmSuites +import Materials as Materials +import Keyring as Keyring +import Relations as Relations +import Seq_MergeSort as Seq_MergeSort +import Math as Math +import Seq as Seq +import MultiKeyring as MultiKeyring +import AwsArnParsing as AwsArnParsing +import AwsKmsMrkAreUnique as AwsKmsMrkAreUnique +import Actions as Actions +import AwsKmsMrkMatchForDecrypt as AwsKmsMrkMatchForDecrypt +import AwsKmsUtils as AwsKmsUtils +import Constants as Constants +import UUID as UUID +import MaterialWrapping as MaterialWrapping +import SortedSets as SortedSets +import CanonicalEncryptionContext as CanonicalEncryptionContext +import IntermediateKeyWrapping as IntermediateKeyWrapping +import EdkWrapping as EdkWrapping +import ErrorMessages as ErrorMessages +import AwsKmsKeyring as AwsKmsKeyring +import StrictMultiKeyring as StrictMultiKeyring +import AwsKmsDiscoveryKeyring as AwsKmsDiscoveryKeyring +import Com_Amazonaws_Kms as Com_Amazonaws_Kms +import Com_Amazonaws_Dynamodb as Com_Amazonaws_Dynamodb +import DiscoveryMultiKeyring as DiscoveryMultiKeyring +import AwsKmsMrkDiscoveryKeyring as AwsKmsMrkDiscoveryKeyring +import MrkAwareDiscoveryMultiKeyring as MrkAwareDiscoveryMultiKeyring +import AwsKmsMrkKeyring as AwsKmsMrkKeyring +import MrkAwareStrictMultiKeyring as MrkAwareStrictMultiKeyring +import DafnyLibraries as DafnyLibraries +import Time as Time +import LocalCMC as LocalCMC +import SynchronizedLocalCMC as SynchronizedLocalCMC +import StormTracker as StormTracker +import StormTrackingCMC as StormTrackingCMC +import CacheConstants as CacheConstants +import AwsKmsHierarchicalKeyring as AwsKmsHierarchicalKeyring +import AwsKmsRsaKeyring as AwsKmsRsaKeyring +import EcdhEdkWrapping as EcdhEdkWrapping +import RawECDHKeyring as RawECDHKeyring +import AwsKmsEcdhKeyring as AwsKmsEcdhKeyring +import RawAESKeyring as RawAESKeyring +import RawRSAKeyring as RawRSAKeyring +import CMM as CMM +import Defaults as Defaults +import Commitment as Commitment +import DefaultCMM as DefaultCMM +import DefaultClientSupplier as DefaultClientSupplier +import Utils as Utils +import RequiredEncryptionContextCMM as RequiredEncryptionContextCMM +import AwsCryptographyMaterialProvidersOperations as AwsCryptographyMaterialProvidersOperations +import MaterialProviders as MaterialProviders +import KeyStoreErrorMessages as KeyStoreErrorMessages +import KmsArn as KmsArn +import Structure as Structure +import KMSKeystoreOperations as KMSKeystoreOperations +import DDBKeystoreOperations as DDBKeystoreOperations +import CreateKeys as CreateKeys +import CreateKeyStoreTable as CreateKeyStoreTable +import GetKeys as GetKeys +import AwsCryptographyKeyStoreOperations as AwsCryptographyKeyStoreOperations +import KeyStore as KeyStore +import AwsCryptographyMaterialProvidersTestVectorKeysTypes as AwsCryptographyMaterialProvidersTestVectorKeysTypes +import JSON_Utils_Views_Core as JSON_Utils_Views_Core +import JSON_Utils_Views_Writers as JSON_Utils_Views_Writers +import JSON_Utils_Lexers_Core as JSON_Utils_Lexers_Core +import JSON_Utils_Lexers_Strings as JSON_Utils_Lexers_Strings +import JSON_Utils_Cursors as JSON_Utils_Cursors +import JSON_Utils_Parsers as JSON_Utils_Parsers +import GeneralInternals as GeneralInternals +import MulInternalsNonlinear as MulInternalsNonlinear +import MulInternals as MulInternals +import Mul as Mul +import ModInternalsNonlinear as ModInternalsNonlinear +import DivInternalsNonlinear as DivInternalsNonlinear +import ModInternals as ModInternals +import DivInternals as DivInternals +import DivMod as DivMod +import Power as Power +import Logarithm as Logarithm +import JSON_Utils_Str_CharStrConversion as JSON_Utils_Str_CharStrConversion +import JSON_Utils_Str_CharStrEscaping as JSON_Utils_Str_CharStrEscaping +import JSON_Utils_Str as JSON_Utils_Str +import JSON_Utils_Seq as JSON_Utils_Seq +import JSON_Utils_Vectors as JSON_Utils_Vectors +import JSON_Errors as JSON_Errors +import JSON_Values as JSON_Values +import Unicode as Unicode +import Functions as Functions +import Utf8EncodingForm as Utf8EncodingForm +import Utf16EncodingForm as Utf16EncodingForm +import UnicodeStrings as UnicodeStrings +import JSON_Spec as JSON_Spec +import JSON_Grammar as JSON_Grammar +import JSON_Serializer_ByteStrConversion as JSON_Serializer_ByteStrConversion +import JSON_Serializer as JSON_Serializer +import JSON_Deserializer_Uint16StrConversion as JSON_Deserializer_Uint16StrConversion +import JSON_Deserializer_ByteStrConversion as JSON_Deserializer_ByteStrConversion +import JSON_Deserializer as JSON_Deserializer +import JSON_ConcreteSyntax_Spec as JSON_ConcreteSyntax_Spec +import JSON_ConcreteSyntax_SpecProperties as JSON_ConcreteSyntax_SpecProperties +import JSON_ZeroCopy_Serializer as JSON_ZeroCopy_Serializer +import JSON_ZeroCopy_Deserializer_Core as JSON_ZeroCopy_Deserializer_Core +import JSON_ZeroCopy_Deserializer_Strings as JSON_ZeroCopy_Deserializer_Strings +import JSON_ZeroCopy_Deserializer_Numbers as JSON_ZeroCopy_Deserializer_Numbers +import JSON_ZeroCopy_Deserializer_ObjectParams as JSON_ZeroCopy_Deserializer_ObjectParams +import JSON_ZeroCopy_Deserializer_Objects as JSON_ZeroCopy_Deserializer_Objects +import JSON_ZeroCopy_Deserializer_ArrayParams as JSON_ZeroCopy_Deserializer_ArrayParams +import JSON_ZeroCopy_Deserializer_Arrays as JSON_ZeroCopy_Deserializer_Arrays +import JSON_ZeroCopy_Deserializer_Constants as JSON_ZeroCopy_Deserializer_Constants +import JSON_ZeroCopy_Deserializer_Values as JSON_ZeroCopy_Deserializer_Values +import JSON_ZeroCopy_Deserializer_API as JSON_ZeroCopy_Deserializer_API +import JSON_ZeroCopy_Deserializer as JSON_ZeroCopy_Deserializer +import JSON_ZeroCopy_API as JSON_ZeroCopy_API +import JSON_API as JSON_API +import JSONHelpers as JSONHelpers +import KeyDescription as KeyDescription +import HexStrings as HexStrings +import KeyMaterial as KeyMaterial +import CreateStaticKeyrings as CreateStaticKeyrings +import CreateStaticKeyStores as CreateStaticKeyStores +import KeyringFromKeyDescription as KeyringFromKeyDescription +import CmmFromKeyDescription as CmmFromKeyDescription +import WrappedMaterialProviders as WrappedMaterialProviders +import KeysVectorOperations as KeysVectorOperations +import FileIO as FileIO +import KeyVectors as KeyVectors +import AwsCryptographyEncryptionSdkTypes as AwsCryptographyEncryptionSdkTypes +import Streams as Streams +import SerializableTypes as SerializableTypes +import SerializeFunctions as SerializeFunctions +import EncryptionContext as EncryptionContext +import HeaderTypes as HeaderTypes +import SharedHeaderFunctions as SharedHeaderFunctions +import EncryptedDataKeys as EncryptedDataKeys +import V1HeaderBody as V1HeaderBody +import V2HeaderBody as V2HeaderBody +import HeaderAuth as HeaderAuth +import Header as Header +import Frames as Frames +import MessageBody as MessageBody +import KeyDerivation as KeyDerivation +import EncryptDecryptHelpers as EncryptDecryptHelpers +import AwsEncryptionSdkOperations as AwsEncryptionSdkOperations +import EncryptionSdk as EncryptionSdk +import MplManifestOptions as MplManifestOptions +import GetOpt as GetOpt +import AllAlgorithmSuites as AllAlgorithmSuites +import TestVectors as TestVectors +import AllHierarchy as AllHierarchy +import AllKms as AllKms +import AllKmsMrkAware as AllKmsMrkAware +import AllKmsMrkAwareDiscovery as AllKmsMrkAwareDiscovery +import AllKmsRsa as AllKmsRsa +import AllKmsEcdh as AllKmsEcdh +import AllRawAES as AllRawAES +import AllRawRSA as AllRawRSA +import AllRawECDH as AllRawECDH +import AllDefaultCmm as AllDefaultCmm +import AllRequiredEncryptionContextCmm as AllRequiredEncryptionContextCmm +import AllMulti as AllMulti +import WriteJsonManifests as WriteJsonManifests +import CompleteVectors as CompleteVectors +import ParseJsonManifests as ParseJsonManifests +import TestManifests as TestManifests +import WrappedMaterialProvidersMain as WrappedMaterialProvidersMain +import AesKdfCtr as AesKdfCtr +import StandardLibraryInterop as StandardLibraryInterop +import Sorting as Sorting +import FloatCompare as FloatCompare +import ConcurrentCall as ConcurrentCall +import Base64Lemmas as Base64Lemmas +import .internaldafny.generated.WrappedESDK as WrappedESDK +import .internaldafny.generated.EsdkManifestOptions as EsdkManifestOptions + +# Module: EsdkTestVectors + +class default__: + def __init__(self): + pass + + @staticmethod + def SupportedGenerateManifestVersion_q(v): + return (False) or ((v) == (4)) + + @staticmethod + def SupportedEncryptVersion_q(v): + return (((v) == (1)) or ((v) == (4))) or ((v) == (5)) + + @staticmethod + def SupportedDecryptVersion_q(v): + return (((v) == (1)) or ((v) == (2))) or ((v) == (3)) + + @staticmethod + def TestDecrypt(keys, vector): + output: bool = False + if ((vector).algorithmSuiteId).is_Some: + d_0_id_: _dafny.Seq + d_0_id_ = AllAlgorithmSuites.default__.ToHex(((vector).algorithmSuiteId).value) + _dafny.print(_dafny.string_of(_dafny.Seq("\nTEST-DECRYPT===> "))) + _dafny.print(_dafny.string_of((vector).id)) + _dafny.print(_dafny.string_of(_dafny.Seq("\n"))) + _dafny.print(_dafny.string_of(d_0_id_)) + _dafny.print(_dafny.string_of(_dafny.Seq(" "))) + _dafny.print(_dafny.string_of((vector).description)) + _dafny.print(_dafny.string_of(_dafny.Seq("\n"))) + elif True: + _dafny.print(_dafny.string_of(_dafny.Seq("\nTEST-DECRYPT===> "))) + _dafny.print(_dafny.string_of((vector).id)) + _dafny.print(_dafny.string_of(_dafny.Seq("\n"))) + _dafny.print(_dafny.string_of((vector).description)) + _dafny.print(_dafny.string_of(_dafny.Seq("\n"))) + d_1_test_q_: Wrappers.Result + out0_: Wrappers.Result + out0_ = default__.DecryptVectorToDecryptTest(keys, vector) + d_1_test_q_ = out0_ + if (d_1_test_q_).is_Failure: + _dafny.print(_dafny.string_of((d_1_test_q_).error)) + _dafny.print(_dafny.string_of(_dafny.Seq("\n"))) + _dafny.print(_dafny.string_of(_dafny.Seq("\nFAILED! <-----------\n"))) + output = False + return output + d_2_test_: DecryptTest + d_2_test_ = (d_1_test_q_).value + d_3_valueOrError0_: Wrappers.Result = Wrappers.Result.default(_dafny.Seq)() + out1_: Wrappers.Result + out1_ = default__.ReadVectorsFile((((d_2_test_).vector).manifestPath) + (((d_2_test_).vector).ciphertextPath)) + d_3_valueOrError0_ = out1_ + if not(not((d_3_valueOrError0_).IsFailure())): + raise _dafny.HaltException("dafny/TestVectors/src/EsdkTestVectors.dfy(202,22): " + _dafny.string_of(d_3_valueOrError0_)) + d_4_ciphertext_: _dafny.Seq + d_4_ciphertext_ = (d_3_valueOrError0_).Extract() + d_5_plaintext_: _dafny.Seq = _dafny.Seq({}) + if (((d_2_test_).vector).is_PositiveDecryptTestVector) or (((d_2_test_).vector).is_PositiveV1OrV2DecryptTestVector): + d_6_valueOrError1_: Wrappers.Result = Wrappers.Result.default(_dafny.Seq)() + out2_: Wrappers.Result + out2_ = default__.ReadVectorsFile((((d_2_test_).vector).manifestPath) + (((d_2_test_).vector).plaintextPath)) + d_6_valueOrError1_ = out2_ + if not(not((d_6_valueOrError1_).IsFailure())): + raise _dafny.HaltException("dafny/TestVectors/src/EsdkTestVectors.dfy(205,19): " + _dafny.string_of(d_6_valueOrError1_)) + d_5_plaintext_ = (d_6_valueOrError1_).Extract() + d_7_input_: AwsCryptographyEncryptionSdkTypes.DecryptInput + d_7_input_ = AwsCryptographyEncryptionSdkTypes.DecryptInput_DecryptInput(d_4_ciphertext_, Wrappers.Option_Some((d_2_test_).cmm), Wrappers.Option_None(), ((d_2_test_).vector).reproducedEncryptionContext) + d_8_result_: Wrappers.Result + out3_: Wrappers.Result + out3_ = ((d_2_test_).client).Decrypt(d_7_input_) + d_8_result_ = out3_ + source0_ = (d_2_test_).vector + with _dafny.label("match0"): + if True: + if source0_.is_PositiveDecryptTestVector: + output = ((d_8_result_).is_Success) and ((((d_8_result_).value).plaintext) == (d_5_plaintext_)) + raise _dafny.Break("match0") + if True: + if source0_.is_NegativeDecryptTestVector: + output = (True) and ((d_8_result_).is_Failure) + raise _dafny.Break("match0") + if True: + output = ((d_8_result_).is_Success) and ((((d_8_result_).value).plaintext) == (d_5_plaintext_)) + pass + if not(output): + if ((((d_2_test_).vector).is_PositiveDecryptTestVector) or (((d_2_test_).vector).is_PositiveV1OrV2DecryptTestVector)) and ((d_8_result_).is_Failure): + _dafny.print(_dafny.string_of((d_8_result_).error)) + _dafny.print(_dafny.string_of(_dafny.Seq("\n"))) + if (((d_8_result_).error).is_AwsCryptographyMaterialProviders) and ((((d_8_result_).error).AwsCryptographyMaterialProviders).is_CollectionOfErrors): + _dafny.print(_dafny.string_of(_dafny.Seq("list:"))) + _dafny.print(_dafny.string_of((((d_8_result_).error).AwsCryptographyMaterialProviders).list)) + _dafny.print(_dafny.string_of(_dafny.Seq("\n"))) + _dafny.print(_dafny.string_of(_dafny.Seq("\nFAILED! <-----------\n"))) + return output + + @staticmethod + def DecryptVectorToDecryptTest(keys, vector): + output: Wrappers.Result = None + d_0_valueOrError0_: Wrappers.Outcome = Wrappers.Outcome.default()() + d_0_valueOrError0_ = Wrappers.default__.Need(not((vector).is_NegativeDecryptTestVector), AwsCryptographyMaterialProvidersTestVectorKeysTypes.Error_KeyVectorException(_dafny.Seq("Negative Test Vectors not supported at this time"))) + if (d_0_valueOrError0_).IsFailure(): + output = (d_0_valueOrError0_).PropagateFailure() + return output + d_1_valueOrError1_: Wrappers.Result = None + out0_: Wrappers.Result + out0_ = (keys).CreateWrappedTestVectorCmm(AwsCryptographyMaterialProvidersTestVectorKeysTypes.TestVectorCmmInput_TestVectorCmmInput((vector).decryptDescriptions, AwsCryptographyMaterialProvidersTestVectorKeysTypes.CmmOperation_DECRYPT())) + d_1_valueOrError1_ = out0_ + if (d_1_valueOrError1_).IsFailure(): + output = (d_1_valueOrError1_).PropagateFailure() + return output + d_2_cmm_: AwsCryptographyMaterialProvidersTypes.ICryptographicMaterialsManager + d_2_cmm_ = (d_1_valueOrError1_).Extract() + d_3_commitmentPolicy_: AwsCryptographyMaterialProvidersTypes.CommitmentPolicy + if ((vector).algorithmSuiteId).is_Some: + d_3_commitmentPolicy_ = AllAlgorithmSuites.default__.GetCompatibleCommitmentPolicy(((vector).algorithmSuiteId).value) + elif True: + d_3_commitmentPolicy_ = AwsCryptographyMaterialProvidersTypes.CommitmentPolicy_ESDK(AwsCryptographyMaterialProvidersTypes.ESDKCommitmentPolicy_FORBID__ENCRYPT__ALLOW__DECRYPT()) + d_4_valueOrError2_: Wrappers.Outcome = Wrappers.Outcome.default()() + d_4_valueOrError2_ = Wrappers.default__.Need((d_3_commitmentPolicy_).is_ESDK, AwsCryptographyMaterialProvidersTestVectorKeysTypes.Error_KeyVectorException(_dafny.Seq("Compatible commitment policy is not for ESDK"))) + if (d_4_valueOrError2_).IsFailure(): + output = (d_4_valueOrError2_).PropagateFailure() + return output + d_5_config_: AwsCryptographyEncryptionSdkTypes.AwsEncryptionSdkConfig + d_5_config_ = WrappedESDK.default__.WrappedAwsEncryptionSdkConfigWithSuppliedCommitment((d_3_commitmentPolicy_).ESDK) + d_6_valueOrError3_: Wrappers.Result = None + out1_: Wrappers.Result + out1_ = WrappedESDK.default__.WrappedESDK(d_5_config_) + d_6_valueOrError3_ = out1_ + if not(not((d_6_valueOrError3_).IsFailure())): + raise _dafny.HaltException("dafny/TestVectors/src/EsdkTestVectors.dfy(281,18): " + _dafny.string_of(d_6_valueOrError3_)) + d_7_client_: AwsCryptographyEncryptionSdkTypes.IAwsEncryptionSdkClient + d_7_client_ = (d_6_valueOrError3_).Extract() + d_8_test_: DecryptTest + d_8_test_ = DecryptTest_DecryptTest(d_2_cmm_, d_7_client_, vector) + output = Wrappers.Result_Success(d_8_test_) + return output + + @staticmethod + def TestEncrypt(plaintexts, keys, test): + output: Wrappers.Result = Wrappers.Result.default(EncryptTestOutput.default())() + d_0_id_: _dafny.Seq + d_0_id_ = AllAlgorithmSuites.default__.ToHex((((test).vector).algorithmSuiteId).value) + _dafny.print(_dafny.string_of(_dafny.Seq("\nTEST-ENCRYPT===> "))) + _dafny.print(_dafny.string_of((((test).vector).id).value)) + _dafny.print(_dafny.string_of(_dafny.Seq("\n"))) + _dafny.print(_dafny.string_of(d_0_id_)) + _dafny.print(_dafny.string_of(_dafny.Seq(" "))) + _dafny.print(_dafny.string_of(((test).vector).description)) + _dafny.print(_dafny.string_of(_dafny.Seq("\n"))) + d_1_vector_: EsdkEncryptTestVector + d_1_vector_ = (test).vector + if not((((test).vector).plaintextPath) in (plaintexts)): + raise _dafny.HaltException("dafny/TestVectors/src/EsdkTestVectors.dfy(324,4): " + _dafny.string_of(_dafny.Seq("expectation violation"))) + d_2_plaintext_: _dafny.Seq + d_2_plaintext_ = (plaintexts)[((test).vector).plaintextPath] + d_3_frameLength_: Wrappers.Option + d_3_frameLength_ = (d_1_vector_).frameLength + d_4_input_: AwsCryptographyEncryptionSdkTypes.EncryptInput + d_4_input_ = AwsCryptographyEncryptionSdkTypes.EncryptInput_EncryptInput(d_2_plaintext_, ((test).vector).encryptionContext, Wrappers.Option_Some((test).cmm), Wrappers.Option_None(), Wrappers.Option_Some((((((test).vector).algorithmSuiteId).value).id).ESDK), d_3_frameLength_) + d_5_result_: Wrappers.Result + out0_: Wrappers.Result + out0_ = ((test).client).Encrypt(d_4_input_) + d_5_result_ = out0_ + if ((d_5_result_).is_Success) and ((((test).vector).is_PositiveEncryptTestVector) or (((test).vector).is_PositiveEncryptNegativeDecryptTestVector)): + d_6_valueOrError0_: Wrappers.Result = Wrappers.Result.default(EsdkDecryptTestVector.default())() + out1_: Wrappers.Result + out1_ = default__.EncryptTestToDecryptVector(test, (d_5_result_).value) + d_6_valueOrError0_ = out1_ + if (d_6_valueOrError0_).IsFailure(): + output = (d_6_valueOrError0_).PropagateFailure() + return output + d_7_decryptVector_: EsdkDecryptTestVector + d_7_decryptVector_ = (d_6_valueOrError0_).Extract() + output = Wrappers.Result_Success(EncryptTestOutput_EncryptTestOutput(True, Wrappers.Option_Some(d_7_decryptVector_))) + elif ((d_5_result_).is_Failure) and (((test).vector).is_NegativeEncryptTestVector): + output = Wrappers.Result_Success(EncryptTestOutput_EncryptTestOutput(True, Wrappers.Option_None())) + elif True: + output = Wrappers.Result_Success(EncryptTestOutput_EncryptTestOutput(False, Wrappers.Option_None())) + if (not(((test).vector).is_NegativeEncryptTestVector)) and ((d_5_result_).is_Failure): + _dafny.print(_dafny.string_of((d_5_result_).error)) + _dafny.print(_dafny.string_of(_dafny.Seq("\nFAILED! <-----------\n"))) + return output + + @staticmethod + def EncryptVectorToEncryptTest(keys, vector): + output: Wrappers.Result = None + d_0_valueOrError0_: Wrappers.Result = None + out0_: Wrappers.Result + out0_ = (keys).CreateWrappedTestVectorCmm(AwsCryptographyMaterialProvidersTestVectorKeysTypes.TestVectorCmmInput_TestVectorCmmInput(((vector).encryptDescriptions if (vector).is_PositiveEncryptTestVector else ((vector).encryptDescriptions if (vector).is_PositiveEncryptNegativeDecryptTestVector else (vector).encryptDescriptions)), AwsCryptographyMaterialProvidersTestVectorKeysTypes.CmmOperation_ENCRYPT())) + d_0_valueOrError0_ = out0_ + if (d_0_valueOrError0_).IsFailure(): + output = (d_0_valueOrError0_).PropagateFailure() + return output + d_1_cmm_: AwsCryptographyMaterialProvidersTypes.ICryptographicMaterialsManager + d_1_cmm_ = (d_0_valueOrError0_).Extract() + d_2_valueOrError1_: Wrappers.Outcome = Wrappers.Outcome.default()() + d_2_valueOrError1_ = Wrappers.default__.Need(((vector).algorithmSuiteId).is_Some, AwsCryptographyMaterialProvidersTestVectorKeysTypes.Error_KeyVectorException(_dafny.Seq("Missing AlgorithmSuiteId in test vector"))) + if (d_2_valueOrError1_).IsFailure(): + output = (d_2_valueOrError1_).PropagateFailure() + return output + d_3_commitmentPolicy_: AwsCryptographyMaterialProvidersTypes.CommitmentPolicy + d_3_commitmentPolicy_ = AllAlgorithmSuites.default__.GetCompatibleCommitmentPolicy(((vector).algorithmSuiteId).value) + d_4_valueOrError2_: Wrappers.Outcome = Wrappers.Outcome.default()() + d_4_valueOrError2_ = Wrappers.default__.Need((d_3_commitmentPolicy_).is_ESDK, AwsCryptographyMaterialProvidersTestVectorKeysTypes.Error_KeyVectorException(_dafny.Seq("Compatible commitment policy is not for ESDK"))) + if (d_4_valueOrError2_).IsFailure(): + output = (d_4_valueOrError2_).PropagateFailure() + return output + d_5_config_: AwsCryptographyEncryptionSdkTypes.AwsEncryptionSdkConfig + d_5_config_ = WrappedESDK.default__.WrappedAwsEncryptionSdkConfigWithSuppliedCommitment((d_3_commitmentPolicy_).ESDK) + d_6_valueOrError3_: Wrappers.Result = None + out1_: Wrappers.Result + out1_ = WrappedESDK.default__.WrappedESDK(d_5_config_) + d_6_valueOrError3_ = out1_ + if not(not((d_6_valueOrError3_).IsFailure())): + raise _dafny.HaltException("dafny/TestVectors/src/EsdkTestVectors.dfy(397,18): " + _dafny.string_of(d_6_valueOrError3_)) + d_7_client_: AwsCryptographyEncryptionSdkTypes.IAwsEncryptionSdkClient + d_7_client_ = (d_6_valueOrError3_).Extract() + d_8_test_: EncryptTest + d_8_test_ = EncryptTest_EncryptTest(d_1_cmm_, d_7_client_, vector) + output = Wrappers.Result_Success(d_8_test_) + return output + + @staticmethod + def EncryptTestToDecryptVector(test, result): + output: Wrappers.Result = Wrappers.Result.default(EsdkDecryptTestVector.default())() + source0_ = (test).vector + with _dafny.label("match0"): + if True: + if source0_.is_PositiveEncryptTestVector: + output = Wrappers.Result_Success(EsdkDecryptTestVector_PositiveDecryptTestVector((((test).vector).id).value, 3, ((test).vector).decryptManifestPath, default__.ciphertextPathPathRoot, (default__.plaintextPathRoot) + (((test).vector).plaintextPath), ((test).vector).reproducedEncryptionContext, ((test).vector).decryptDescriptions, ((test).vector).commitmentPolicy, ((test).vector).frameLength, ((test).vector).algorithmSuiteId, ((test).vector).description, DecryptionMethod_OneShot())) + raise _dafny.Break("match0") + if True: + output = Wrappers.Result_Failure(_dafny.Seq("Only postive tests supported")) + pass + d_0_decryptManifestCiphertext_: _dafny.Seq + d_0_decryptManifestCiphertext_ = ((((test).vector).decryptManifestPath) + (default__.ciphertextPathPathRoot)) + ((((test).vector).id).value) + d_1_valueOrError0_: Wrappers.Result = Wrappers.Result.default(_dafny.defaults.tuple())() + out0_: Wrappers.Result + out0_ = default__.WriteVectorsFile(d_0_decryptManifestCiphertext_, (result).ciphertext) + d_1_valueOrError0_ = out0_ + if not(not((d_1_valueOrError0_).IsFailure())): + raise _dafny.HaltException("dafny/TestVectors/src/EsdkTestVectors.dfy(439,13): " + _dafny.string_of(d_1_valueOrError0_)) + d_2___v52_: tuple + d_2___v52_ = (d_1_valueOrError0_).Extract() + return output + + @staticmethod + def MplPrintErr(e): + hresult_: tuple = () + _dafny.print(_dafny.string_of(e)) + _dafny.print(_dafny.string_of(_dafny.Seq("\n"))) + _dafny.print(_dafny.string_of(_dafny.Seq("\n"))) + hresult_ = () + return hresult_ + return hresult_ + + @staticmethod + def MplVectorPrintErr(e): + hresult_: tuple = () + _dafny.print(_dafny.string_of(e)) + _dafny.print(_dafny.string_of(_dafny.Seq("\n"))) + _dafny.print(_dafny.string_of(_dafny.Seq("\n"))) + hresult_ = () + return hresult_ + return hresult_ + + @staticmethod + def KeyDescriptionToCmm(keys, keyDescriptions): + output: Wrappers.Result = None + d_0_keyringList_: _dafny.Seq + d_0_keyringList_ = _dafny.Seq([]) + hi0_ = len(keyDescriptions) + for d_1_i_ in range(0, hi0_): + d_2_keyDescription_: AwsCryptographyMaterialProvidersTestVectorKeysTypes.KeyDescription + d_2_keyDescription_ = (keyDescriptions)[d_1_i_] + d_3_valueOrError0_: Wrappers.Result = None + out0_: Wrappers.Result + out0_ = (keys).CreateWrappedTestVectorKeyring(AwsCryptographyMaterialProvidersTestVectorKeysTypes.TestVectorKeyringInput_TestVectorKeyringInput(d_2_keyDescription_)) + d_3_valueOrError0_ = out0_ + if (d_3_valueOrError0_).IsFailure(): + output = (d_3_valueOrError0_).PropagateFailure() + return output + d_4_keyring_: AwsCryptographyMaterialProvidersTypes.IKeyring + d_4_keyring_ = (d_3_valueOrError0_).Extract() + d_0_keyringList_ = (d_0_keyringList_) + (_dafny.Seq([d_4_keyring_])) + d_5_valueOrError1_: Wrappers.Outcome = Wrappers.Outcome.default()() + d_5_valueOrError1_ = Wrappers.default__.Need((len(d_0_keyringList_)) == (1), AwsCryptographyMaterialProvidersTestVectorKeysTypes.Error_KeyVectorException(_dafny.Seq("Failed to create any keyrings"))) + if (d_5_valueOrError1_).IsFailure(): + output = (d_5_valueOrError1_).PropagateFailure() + return output + d_6_valueOrError2_: Wrappers.Result = None + out1_: Wrappers.Result + out1_ = WrappedMaterialProviders.default__.WrappedMaterialProviders(WrappedMaterialProviders.default__.WrappedDefaultMaterialProvidersConfig()) + d_6_valueOrError2_ = out1_ + if not(not((d_6_valueOrError2_).IsFailure())): + raise _dafny.HaltException("dafny/TestVectors/src/EsdkTestVectors.dfy(482,15): " + _dafny.string_of(d_6_valueOrError2_)) + d_7_mpl_: AwsCryptographyMaterialProvidersTypes.IAwsCryptographicMaterialProvidersClient + d_7_mpl_ = (d_6_valueOrError2_).Extract() + d_8_generatorKeyring_: AwsCryptographyMaterialProvidersTypes.IKeyring + d_8_generatorKeyring_ = (d_0_keyringList_)[0] + d_9_maybeMultiKeyring_: Wrappers.Result + out2_: Wrappers.Result + out2_ = (d_7_mpl_).CreateMultiKeyring(AwsCryptographyMaterialProvidersTypes.CreateMultiKeyringInput_CreateMultiKeyringInput(Wrappers.Option_Some(d_8_generatorKeyring_), _dafny.Seq((d_0_keyringList_)[1::]))) + d_9_maybeMultiKeyring_ = out2_ + d_10_valueOrError3_: Wrappers.Result = None + def lambda0_(d_11_e_): + return AwsCryptographyMaterialProvidersTestVectorKeysTypes.Error_AwsCryptographyMaterialProviders(d_11_e_) + + d_10_valueOrError3_ = (d_9_maybeMultiKeyring_).MapFailure(lambda0_) + if (d_10_valueOrError3_).IsFailure(): + output = (d_10_valueOrError3_).PropagateFailure() + return output + d_12_keyring_: AwsCryptographyMaterialProvidersTypes.IKeyring + d_12_keyring_ = (d_10_valueOrError3_).Extract() + d_13_maybeCmm_: Wrappers.Result + out3_: Wrappers.Result + out3_ = (d_7_mpl_).CreateDefaultCryptographicMaterialsManager(AwsCryptographyMaterialProvidersTypes.CreateDefaultCryptographicMaterialsManagerInput_CreateDefaultCryptographicMaterialsManagerInput((d_9_maybeMultiKeyring_).value)) + d_13_maybeCmm_ = out3_ + def lambda1_(d_14_e_): + return AwsCryptographyMaterialProvidersTestVectorKeysTypes.Error_AwsCryptographyMaterialProviders(d_14_e_) + + output = (d_13_maybeCmm_).MapFailure(lambda1_) + return output + + @staticmethod + def ReadVectorsFile(location): + output: Wrappers.Result = Wrappers.Result.default(_dafny.Seq)() + d_0_valueOrError0_: Wrappers.Result = Wrappers.Result.default(_dafny.Seq)() + out0_: Wrappers.Result + out0_ = FileIO.default__.ReadBytesFromFile(location) + d_0_valueOrError0_ = out0_ + if (d_0_valueOrError0_).IsFailure(): + output = (d_0_valueOrError0_).PropagateFailure() + return output + d_1_fileBv_: _dafny.Seq + d_1_fileBv_ = (d_0_valueOrError0_).Extract() + output = Wrappers.Result_Success(JSONHelpers.default__.BvToBytes(d_1_fileBv_)) + return output + + @staticmethod + def WriteVectorsFile(location, bytes): + output: Wrappers.Result = Wrappers.Result.default(_dafny.defaults.tuple())() + d_0_bv_: _dafny.Seq + d_0_bv_ = JSONHelpers.default__.BytesBv(bytes) + out0_: Wrappers.Result + out0_ = FileIO.default__.WriteBytesToFile(location, d_0_bv_) + output = out0_ + return output + + @_dafny.classproperty + def ciphertextPathPathRoot(instance): + return _dafny.Seq("ciphertexts/") + @_dafny.classproperty + def plaintextPathRoot(instance): + return _dafny.Seq("plaintexts/") + +class EncryptTest: + @classmethod + def default(cls, ): + return lambda: EncryptTest_EncryptTest(None, None, EsdkEncryptTestVector.default()()) + def __ne__(self, __o: object) -> bool: + return not self.__eq__(__o) + @property + def is_EncryptTest(self) -> bool: + return isinstance(self, EncryptTest_EncryptTest) + +class EncryptTest_EncryptTest(EncryptTest, NamedTuple('EncryptTest', [('cmm', Any), ('client', Any), ('vector', Any)])): + def __dafnystr__(self) -> str: + return f'EsdkTestVectors.EncryptTest.EncryptTest({_dafny.string_of(self.cmm)}, {_dafny.string_of(self.client)}, {_dafny.string_of(self.vector)})' + def __eq__(self, __o: object) -> bool: + return isinstance(__o, EncryptTest_EncryptTest) and self.cmm == __o.cmm and self.client == __o.client and self.vector == __o.vector + def __hash__(self) -> int: + return super().__hash__() + + +class DecryptTest: + @classmethod + def default(cls, ): + return lambda: DecryptTest_DecryptTest(None, None, EsdkDecryptTestVector.default()()) + def __ne__(self, __o: object) -> bool: + return not self.__eq__(__o) + @property + def is_DecryptTest(self) -> bool: + return isinstance(self, DecryptTest_DecryptTest) + +class DecryptTest_DecryptTest(DecryptTest, NamedTuple('DecryptTest', [('cmm', Any), ('client', Any), ('vector', Any)])): + def __dafnystr__(self) -> str: + return f'EsdkTestVectors.DecryptTest.DecryptTest({_dafny.string_of(self.cmm)}, {_dafny.string_of(self.client)}, {_dafny.string_of(self.vector)})' + def __eq__(self, __o: object) -> bool: + return isinstance(__o, DecryptTest_DecryptTest) and self.cmm == __o.cmm and self.client == __o.client and self.vector == __o.vector + def __hash__(self) -> int: + return super().__hash__() + + +class SupportedGenerateManifestVersion: + def __init__(self): + pass + + @staticmethod + def default(): + return 4 + def _Is(source__): + d_0_v_: int = source__ + if System_.nat._Is(d_0_v_): + return default__.SupportedGenerateManifestVersion_q(d_0_v_) + return False + +class SupportedEncryptVersion: + def __init__(self): + pass + + @staticmethod + def default(): + return 1 + def _Is(source__): + d_1_v_: int = source__ + if System_.nat._Is(d_1_v_): + return default__.SupportedEncryptVersion_q(d_1_v_) + return False + +class EsdkEncryptTestVector: + @classmethod + def default(cls, ): + return lambda: EsdkEncryptTestVector_PositiveEncryptTestVector(Wrappers.Option.default()(), SupportedEncryptVersion.default(), _dafny.Seq(""), _dafny.Seq(""), _dafny.Seq(""), AwsCryptographyMaterialProvidersTestVectorKeysTypes.KeyDescription.default()(), AwsCryptographyMaterialProvidersTestVectorKeysTypes.KeyDescription.default()(), Wrappers.Option.default()(), Wrappers.Option.default()(), AwsCryptographyMaterialProvidersTypes.ESDKCommitmentPolicy.default()(), Wrappers.Option.default()(), Wrappers.Option.default()(), _dafny.Seq(""), Wrappers.Option.default()()) + def __ne__(self, __o: object) -> bool: + return not self.__eq__(__o) + @property + def is_PositiveEncryptTestVector(self) -> bool: + return isinstance(self, EsdkEncryptTestVector_PositiveEncryptTestVector) + @property + def is_PositiveEncryptNegativeDecryptTestVector(self) -> bool: + return isinstance(self, EsdkEncryptTestVector_PositiveEncryptNegativeDecryptTestVector) + @property + def is_NegativeEncryptTestVector(self) -> bool: + return isinstance(self, EsdkEncryptTestVector_NegativeEncryptTestVector) + +class EsdkEncryptTestVector_PositiveEncryptTestVector(EsdkEncryptTestVector, NamedTuple('PositiveEncryptTestVector', [('id', Any), ('version', Any), ('manifestPath', Any), ('decryptManifestPath', Any), ('plaintextPath', Any), ('encryptDescriptions', Any), ('decryptDescriptions', Any), ('encryptionContext', Any), ('reproducedEncryptionContext', Any), ('commitmentPolicy', Any), ('frameLength', Any), ('algorithmSuiteId', Any), ('description', Any), ('maxEncryptedDataKeys', Any)])): + def __dafnystr__(self) -> str: + return f'EsdkTestVectors.EsdkEncryptTestVector.PositiveEncryptTestVector({_dafny.string_of(self.id)}, {_dafny.string_of(self.version)}, {_dafny.string_of(self.manifestPath)}, {_dafny.string_of(self.decryptManifestPath)}, {_dafny.string_of(self.plaintextPath)}, {_dafny.string_of(self.encryptDescriptions)}, {_dafny.string_of(self.decryptDescriptions)}, {_dafny.string_of(self.encryptionContext)}, {_dafny.string_of(self.reproducedEncryptionContext)}, {_dafny.string_of(self.commitmentPolicy)}, {_dafny.string_of(self.frameLength)}, {_dafny.string_of(self.algorithmSuiteId)}, {_dafny.string_of(self.description)}, {_dafny.string_of(self.maxEncryptedDataKeys)})' + def __eq__(self, __o: object) -> bool: + return isinstance(__o, EsdkEncryptTestVector_PositiveEncryptTestVector) and self.id == __o.id and self.version == __o.version and self.manifestPath == __o.manifestPath and self.decryptManifestPath == __o.decryptManifestPath and self.plaintextPath == __o.plaintextPath and self.encryptDescriptions == __o.encryptDescriptions and self.decryptDescriptions == __o.decryptDescriptions and self.encryptionContext == __o.encryptionContext and self.reproducedEncryptionContext == __o.reproducedEncryptionContext and self.commitmentPolicy == __o.commitmentPolicy and self.frameLength == __o.frameLength and self.algorithmSuiteId == __o.algorithmSuiteId and self.description == __o.description and self.maxEncryptedDataKeys == __o.maxEncryptedDataKeys + def __hash__(self) -> int: + return super().__hash__() + +class EsdkEncryptTestVector_PositiveEncryptNegativeDecryptTestVector(EsdkEncryptTestVector, NamedTuple('PositiveEncryptNegativeDecryptTestVector', [('id', Any), ('version', Any), ('manifestPath', Any), ('decryptManifestPath', Any), ('plaintextPath', Any), ('encryptDescriptions', Any), ('decryptDescriptions', Any), ('encryptionContext', Any), ('reproducedEncryptionContext', Any), ('commitmentPolicy', Any), ('frameLength', Any), ('algorithmSuiteId', Any), ('decryptErrorDescription', Any), ('description', Any), ('maxEncryptedDataKeys', Any)])): + def __dafnystr__(self) -> str: + return f'EsdkTestVectors.EsdkEncryptTestVector.PositiveEncryptNegativeDecryptTestVector({_dafny.string_of(self.id)}, {_dafny.string_of(self.version)}, {_dafny.string_of(self.manifestPath)}, {_dafny.string_of(self.decryptManifestPath)}, {_dafny.string_of(self.plaintextPath)}, {_dafny.string_of(self.encryptDescriptions)}, {_dafny.string_of(self.decryptDescriptions)}, {_dafny.string_of(self.encryptionContext)}, {_dafny.string_of(self.reproducedEncryptionContext)}, {_dafny.string_of(self.commitmentPolicy)}, {_dafny.string_of(self.frameLength)}, {_dafny.string_of(self.algorithmSuiteId)}, {_dafny.string_of(self.decryptErrorDescription)}, {_dafny.string_of(self.description)}, {_dafny.string_of(self.maxEncryptedDataKeys)})' + def __eq__(self, __o: object) -> bool: + return isinstance(__o, EsdkEncryptTestVector_PositiveEncryptNegativeDecryptTestVector) and self.id == __o.id and self.version == __o.version and self.manifestPath == __o.manifestPath and self.decryptManifestPath == __o.decryptManifestPath and self.plaintextPath == __o.plaintextPath and self.encryptDescriptions == __o.encryptDescriptions and self.decryptDescriptions == __o.decryptDescriptions and self.encryptionContext == __o.encryptionContext and self.reproducedEncryptionContext == __o.reproducedEncryptionContext and self.commitmentPolicy == __o.commitmentPolicy and self.frameLength == __o.frameLength and self.algorithmSuiteId == __o.algorithmSuiteId and self.decryptErrorDescription == __o.decryptErrorDescription and self.description == __o.description and self.maxEncryptedDataKeys == __o.maxEncryptedDataKeys + def __hash__(self) -> int: + return super().__hash__() + +class EsdkEncryptTestVector_NegativeEncryptTestVector(EsdkEncryptTestVector, NamedTuple('NegativeEncryptTestVector', [('id', Any), ('version', Any), ('manifestPath', Any), ('plaintextPath', Any), ('encryptDescriptions', Any), ('encryptionContext', Any), ('reproducedEncryptionContext', Any), ('commitmentPolicy', Any), ('frameLength', Any), ('algorithmSuiteId', Any), ('errorDescription', Any), ('description', Any), ('maxEncryptedDataKeys', Any)])): + def __dafnystr__(self) -> str: + return f'EsdkTestVectors.EsdkEncryptTestVector.NegativeEncryptTestVector({_dafny.string_of(self.id)}, {_dafny.string_of(self.version)}, {_dafny.string_of(self.manifestPath)}, {_dafny.string_of(self.plaintextPath)}, {_dafny.string_of(self.encryptDescriptions)}, {_dafny.string_of(self.encryptionContext)}, {_dafny.string_of(self.reproducedEncryptionContext)}, {_dafny.string_of(self.commitmentPolicy)}, {_dafny.string_of(self.frameLength)}, {_dafny.string_of(self.algorithmSuiteId)}, {_dafny.string_of(self.errorDescription)}, {_dafny.string_of(self.description)}, {_dafny.string_of(self.maxEncryptedDataKeys)})' + def __eq__(self, __o: object) -> bool: + return isinstance(__o, EsdkEncryptTestVector_NegativeEncryptTestVector) and self.id == __o.id and self.version == __o.version and self.manifestPath == __o.manifestPath and self.plaintextPath == __o.plaintextPath and self.encryptDescriptions == __o.encryptDescriptions and self.encryptionContext == __o.encryptionContext and self.reproducedEncryptionContext == __o.reproducedEncryptionContext and self.commitmentPolicy == __o.commitmentPolicy and self.frameLength == __o.frameLength and self.algorithmSuiteId == __o.algorithmSuiteId and self.errorDescription == __o.errorDescription and self.description == __o.description and self.maxEncryptedDataKeys == __o.maxEncryptedDataKeys + def __hash__(self) -> int: + return super().__hash__() + + +class SupportedDecryptVersion: + def __init__(self): + pass + + @staticmethod + def default(): + return 1 + def _Is(source__): + d_2_v_: int = source__ + if System_.nat._Is(d_2_v_): + return default__.SupportedDecryptVersion_q(d_2_v_) + return False + +class EsdkDecryptTestVector: + @classmethod + def default(cls, ): + return lambda: EsdkDecryptTestVector_PositiveDecryptTestVector(_dafny.Seq(""), SupportedDecryptVersion.default(), _dafny.Seq(""), _dafny.Seq(""), _dafny.Seq(""), Wrappers.Option.default()(), AwsCryptographyMaterialProvidersTestVectorKeysTypes.KeyDescription.default()(), AwsCryptographyMaterialProvidersTypes.ESDKCommitmentPolicy.default()(), Wrappers.Option.default()(), Wrappers.Option.default()(), _dafny.Seq(""), DecryptionMethod.default()()) + def __ne__(self, __o: object) -> bool: + return not self.__eq__(__o) + @property + def is_PositiveDecryptTestVector(self) -> bool: + return isinstance(self, EsdkDecryptTestVector_PositiveDecryptTestVector) + @property + def is_NegativeDecryptTestVector(self) -> bool: + return isinstance(self, EsdkDecryptTestVector_NegativeDecryptTestVector) + @property + def is_PositiveV1OrV2DecryptTestVector(self) -> bool: + return isinstance(self, EsdkDecryptTestVector_PositiveV1OrV2DecryptTestVector) + +class EsdkDecryptTestVector_PositiveDecryptTestVector(EsdkDecryptTestVector, NamedTuple('PositiveDecryptTestVector', [('id', Any), ('version', Any), ('manifestPath', Any), ('ciphertextPath', Any), ('plaintextPath', Any), ('reproducedEncryptionContext', Any), ('decryptDescriptions', Any), ('commitmentPolicy', Any), ('frameLength', Any), ('algorithmSuiteId', Any), ('description', Any), ('decryptionMethod', Any)])): + def __dafnystr__(self) -> str: + return f'EsdkTestVectors.EsdkDecryptTestVector.PositiveDecryptTestVector({_dafny.string_of(self.id)}, {_dafny.string_of(self.version)}, {_dafny.string_of(self.manifestPath)}, {_dafny.string_of(self.ciphertextPath)}, {_dafny.string_of(self.plaintextPath)}, {_dafny.string_of(self.reproducedEncryptionContext)}, {_dafny.string_of(self.decryptDescriptions)}, {_dafny.string_of(self.commitmentPolicy)}, {_dafny.string_of(self.frameLength)}, {_dafny.string_of(self.algorithmSuiteId)}, {_dafny.string_of(self.description)}, {_dafny.string_of(self.decryptionMethod)})' + def __eq__(self, __o: object) -> bool: + return isinstance(__o, EsdkDecryptTestVector_PositiveDecryptTestVector) and self.id == __o.id and self.version == __o.version and self.manifestPath == __o.manifestPath and self.ciphertextPath == __o.ciphertextPath and self.plaintextPath == __o.plaintextPath and self.reproducedEncryptionContext == __o.reproducedEncryptionContext and self.decryptDescriptions == __o.decryptDescriptions and self.commitmentPolicy == __o.commitmentPolicy and self.frameLength == __o.frameLength and self.algorithmSuiteId == __o.algorithmSuiteId and self.description == __o.description and self.decryptionMethod == __o.decryptionMethod + def __hash__(self) -> int: + return super().__hash__() + +class EsdkDecryptTestVector_NegativeDecryptTestVector(EsdkDecryptTestVector, NamedTuple('NegativeDecryptTestVector', [('id', Any), ('version', Any), ('manifestPath', Any), ('ciphertextPath', Any), ('errorDescription', Any), ('reproducedEncryptionContext', Any), ('decryptDescriptions', Any), ('commitmentPolicy', Any), ('frameLength', Any), ('algorithmSuiteId', Any), ('description', Any), ('decryptionMethod', Any)])): + def __dafnystr__(self) -> str: + return f'EsdkTestVectors.EsdkDecryptTestVector.NegativeDecryptTestVector({_dafny.string_of(self.id)}, {_dafny.string_of(self.version)}, {_dafny.string_of(self.manifestPath)}, {_dafny.string_of(self.ciphertextPath)}, {_dafny.string_of(self.errorDescription)}, {_dafny.string_of(self.reproducedEncryptionContext)}, {_dafny.string_of(self.decryptDescriptions)}, {_dafny.string_of(self.commitmentPolicy)}, {_dafny.string_of(self.frameLength)}, {_dafny.string_of(self.algorithmSuiteId)}, {_dafny.string_of(self.description)}, {_dafny.string_of(self.decryptionMethod)})' + def __eq__(self, __o: object) -> bool: + return isinstance(__o, EsdkDecryptTestVector_NegativeDecryptTestVector) and self.id == __o.id and self.version == __o.version and self.manifestPath == __o.manifestPath and self.ciphertextPath == __o.ciphertextPath and self.errorDescription == __o.errorDescription and self.reproducedEncryptionContext == __o.reproducedEncryptionContext and self.decryptDescriptions == __o.decryptDescriptions and self.commitmentPolicy == __o.commitmentPolicy and self.frameLength == __o.frameLength and self.algorithmSuiteId == __o.algorithmSuiteId and self.description == __o.description and self.decryptionMethod == __o.decryptionMethod + def __hash__(self) -> int: + return super().__hash__() + +class EsdkDecryptTestVector_PositiveV1OrV2DecryptTestVector(EsdkDecryptTestVector, NamedTuple('PositiveV1OrV2DecryptTestVector', [('id', Any), ('version', Any), ('manifestPath', Any), ('ciphertextPath', Any), ('plaintextPath', Any), ('reproducedEncryptionContext', Any), ('requiredEncryptionContextKeys', Any), ('decryptDescriptions', Any), ('commitmentPolicy', Any), ('frameLength', Any), ('algorithmSuiteId', Any), ('description', Any), ('decryptionMethod', Any)])): + def __dafnystr__(self) -> str: + return f'EsdkTestVectors.EsdkDecryptTestVector.PositiveV1OrV2DecryptTestVector({_dafny.string_of(self.id)}, {_dafny.string_of(self.version)}, {_dafny.string_of(self.manifestPath)}, {_dafny.string_of(self.ciphertextPath)}, {_dafny.string_of(self.plaintextPath)}, {_dafny.string_of(self.reproducedEncryptionContext)}, {_dafny.string_of(self.requiredEncryptionContextKeys)}, {_dafny.string_of(self.decryptDescriptions)}, {_dafny.string_of(self.commitmentPolicy)}, {_dafny.string_of(self.frameLength)}, {_dafny.string_of(self.algorithmSuiteId)}, {_dafny.string_of(self.description)}, {_dafny.string_of(self.decryptionMethod)})' + def __eq__(self, __o: object) -> bool: + return isinstance(__o, EsdkDecryptTestVector_PositiveV1OrV2DecryptTestVector) and self.id == __o.id and self.version == __o.version and self.manifestPath == __o.manifestPath and self.ciphertextPath == __o.ciphertextPath and self.plaintextPath == __o.plaintextPath and self.reproducedEncryptionContext == __o.reproducedEncryptionContext and self.requiredEncryptionContextKeys == __o.requiredEncryptionContextKeys and self.decryptDescriptions == __o.decryptDescriptions and self.commitmentPolicy == __o.commitmentPolicy and self.frameLength == __o.frameLength and self.algorithmSuiteId == __o.algorithmSuiteId and self.description == __o.description and self.decryptionMethod == __o.decryptionMethod + def __hash__(self) -> int: + return super().__hash__() + + +class DecryptionMethod: + @_dafny.classproperty + def AllSingletonConstructors(cls): + return [DecryptionMethod_StreamingUnsignedOnly(), DecryptionMethod_OneShot()] + @classmethod + def default(cls, ): + return lambda: DecryptionMethod_StreamingUnsignedOnly() + def __ne__(self, __o: object) -> bool: + return not self.__eq__(__o) + @property + def is_StreamingUnsignedOnly(self) -> bool: + return isinstance(self, DecryptionMethod_StreamingUnsignedOnly) + @property + def is_OneShot(self) -> bool: + return isinstance(self, DecryptionMethod_OneShot) + +class DecryptionMethod_StreamingUnsignedOnly(DecryptionMethod, NamedTuple('StreamingUnsignedOnly', [])): + def __dafnystr__(self) -> str: + return f'EsdkTestVectors.DecryptionMethod.StreamingUnsignedOnly' + def __eq__(self, __o: object) -> bool: + return isinstance(__o, DecryptionMethod_StreamingUnsignedOnly) + def __hash__(self) -> int: + return super().__hash__() + +class DecryptionMethod_OneShot(DecryptionMethod, NamedTuple('OneShot', [])): + def __dafnystr__(self) -> str: + return f'EsdkTestVectors.DecryptionMethod.OneShot' + def __eq__(self, __o: object) -> bool: + return isinstance(__o, DecryptionMethod_OneShot) + def __hash__(self) -> int: + return super().__hash__() + + +class EncryptTestOutput: + @classmethod + def default(cls, ): + return lambda: EncryptTestOutput_EncryptTestOutput(False, Wrappers.Option.default()()) + def __ne__(self, __o: object) -> bool: + return not self.__eq__(__o) + @property + def is_EncryptTestOutput(self) -> bool: + return isinstance(self, EncryptTestOutput_EncryptTestOutput) + +class EncryptTestOutput_EncryptTestOutput(EncryptTestOutput, NamedTuple('EncryptTestOutput', [('output', Any), ('vector', Any)])): + def __dafnystr__(self) -> str: + return f'EsdkTestVectors.EncryptTestOutput.EncryptTestOutput({_dafny.string_of(self.output)}, {_dafny.string_of(self.vector)})' + def __eq__(self, __o: object) -> bool: + return isinstance(__o, EncryptTestOutput_EncryptTestOutput) and self.output == __o.output and self.vector == __o.vector + def __hash__(self) -> int: + return super().__hash__() + diff --git a/TestVectors/runtimes/python/src/internaldafny/generated/ParseEsdkJsonManifest.py b/TestVectors/runtimes/python/src/internaldafny/generated/ParseEsdkJsonManifest.py new file mode 100644 index 000000000..364875e05 --- /dev/null +++ b/TestVectors/runtimes/python/src/internaldafny/generated/ParseEsdkJsonManifest.py @@ -0,0 +1,629 @@ +import sys +from typing import Callable, Any, TypeVar, NamedTuple +from math import floor +from itertools import count + +import .internaldafny.generated.module_ as module_ +import _dafny as _dafny +import System_ as System_ +import Wrappers as Wrappers +import BoundedInts as BoundedInts +import StandardLibrary_UInt as StandardLibrary_UInt +import StandardLibrary_Sequence as StandardLibrary_Sequence +import StandardLibrary_String as StandardLibrary_String +import StandardLibrary as StandardLibrary +import UTF8 as UTF8 +import AwsCryptographyPrimitivesTypes as AwsCryptographyPrimitivesTypes +import ExternRandom as ExternRandom +import Random as Random +import AESEncryption as AESEncryption +import ExternDigest as ExternDigest +import Digest as Digest +import HMAC as HMAC +import WrappedHMAC as WrappedHMAC +import HKDF as HKDF +import WrappedHKDF as WrappedHKDF +import Signature as Signature +import KdfCtr as KdfCtr +import RSAEncryption as RSAEncryption +import ECDH as ECDH +import AwsCryptographyPrimitivesOperations as AwsCryptographyPrimitivesOperations +import AtomicPrimitives as AtomicPrimitives +import ComAmazonawsDynamodbTypes as ComAmazonawsDynamodbTypes +import ComAmazonawsKmsTypes as ComAmazonawsKmsTypes +import AwsCryptographyKeyStoreTypes as AwsCryptographyKeyStoreTypes +import AwsCryptographyMaterialProvidersTypes as AwsCryptographyMaterialProvidersTypes +import Base64 as Base64 +import AlgorithmSuites as AlgorithmSuites +import Materials as Materials +import Keyring as Keyring +import Relations as Relations +import Seq_MergeSort as Seq_MergeSort +import Math as Math +import Seq as Seq +import MultiKeyring as MultiKeyring +import AwsArnParsing as AwsArnParsing +import AwsKmsMrkAreUnique as AwsKmsMrkAreUnique +import Actions as Actions +import AwsKmsMrkMatchForDecrypt as AwsKmsMrkMatchForDecrypt +import AwsKmsUtils as AwsKmsUtils +import Constants as Constants +import UUID as UUID +import MaterialWrapping as MaterialWrapping +import SortedSets as SortedSets +import CanonicalEncryptionContext as CanonicalEncryptionContext +import IntermediateKeyWrapping as IntermediateKeyWrapping +import EdkWrapping as EdkWrapping +import ErrorMessages as ErrorMessages +import AwsKmsKeyring as AwsKmsKeyring +import StrictMultiKeyring as StrictMultiKeyring +import AwsKmsDiscoveryKeyring as AwsKmsDiscoveryKeyring +import Com_Amazonaws_Kms as Com_Amazonaws_Kms +import Com_Amazonaws_Dynamodb as Com_Amazonaws_Dynamodb +import DiscoveryMultiKeyring as DiscoveryMultiKeyring +import AwsKmsMrkDiscoveryKeyring as AwsKmsMrkDiscoveryKeyring +import MrkAwareDiscoveryMultiKeyring as MrkAwareDiscoveryMultiKeyring +import AwsKmsMrkKeyring as AwsKmsMrkKeyring +import MrkAwareStrictMultiKeyring as MrkAwareStrictMultiKeyring +import DafnyLibraries as DafnyLibraries +import Time as Time +import LocalCMC as LocalCMC +import SynchronizedLocalCMC as SynchronizedLocalCMC +import StormTracker as StormTracker +import StormTrackingCMC as StormTrackingCMC +import CacheConstants as CacheConstants +import AwsKmsHierarchicalKeyring as AwsKmsHierarchicalKeyring +import AwsKmsRsaKeyring as AwsKmsRsaKeyring +import EcdhEdkWrapping as EcdhEdkWrapping +import RawECDHKeyring as RawECDHKeyring +import AwsKmsEcdhKeyring as AwsKmsEcdhKeyring +import RawAESKeyring as RawAESKeyring +import RawRSAKeyring as RawRSAKeyring +import CMM as CMM +import Defaults as Defaults +import Commitment as Commitment +import DefaultCMM as DefaultCMM +import DefaultClientSupplier as DefaultClientSupplier +import Utils as Utils +import RequiredEncryptionContextCMM as RequiredEncryptionContextCMM +import AwsCryptographyMaterialProvidersOperations as AwsCryptographyMaterialProvidersOperations +import MaterialProviders as MaterialProviders +import KeyStoreErrorMessages as KeyStoreErrorMessages +import KmsArn as KmsArn +import Structure as Structure +import KMSKeystoreOperations as KMSKeystoreOperations +import DDBKeystoreOperations as DDBKeystoreOperations +import CreateKeys as CreateKeys +import CreateKeyStoreTable as CreateKeyStoreTable +import GetKeys as GetKeys +import AwsCryptographyKeyStoreOperations as AwsCryptographyKeyStoreOperations +import KeyStore as KeyStore +import AwsCryptographyMaterialProvidersTestVectorKeysTypes as AwsCryptographyMaterialProvidersTestVectorKeysTypes +import JSON_Utils_Views_Core as JSON_Utils_Views_Core +import JSON_Utils_Views_Writers as JSON_Utils_Views_Writers +import JSON_Utils_Lexers_Core as JSON_Utils_Lexers_Core +import JSON_Utils_Lexers_Strings as JSON_Utils_Lexers_Strings +import JSON_Utils_Cursors as JSON_Utils_Cursors +import JSON_Utils_Parsers as JSON_Utils_Parsers +import GeneralInternals as GeneralInternals +import MulInternalsNonlinear as MulInternalsNonlinear +import MulInternals as MulInternals +import Mul as Mul +import ModInternalsNonlinear as ModInternalsNonlinear +import DivInternalsNonlinear as DivInternalsNonlinear +import ModInternals as ModInternals +import DivInternals as DivInternals +import DivMod as DivMod +import Power as Power +import Logarithm as Logarithm +import JSON_Utils_Str_CharStrConversion as JSON_Utils_Str_CharStrConversion +import JSON_Utils_Str_CharStrEscaping as JSON_Utils_Str_CharStrEscaping +import JSON_Utils_Str as JSON_Utils_Str +import JSON_Utils_Seq as JSON_Utils_Seq +import JSON_Utils_Vectors as JSON_Utils_Vectors +import JSON_Errors as JSON_Errors +import JSON_Values as JSON_Values +import Unicode as Unicode +import Functions as Functions +import Utf8EncodingForm as Utf8EncodingForm +import Utf16EncodingForm as Utf16EncodingForm +import UnicodeStrings as UnicodeStrings +import JSON_Spec as JSON_Spec +import JSON_Grammar as JSON_Grammar +import JSON_Serializer_ByteStrConversion as JSON_Serializer_ByteStrConversion +import JSON_Serializer as JSON_Serializer +import JSON_Deserializer_Uint16StrConversion as JSON_Deserializer_Uint16StrConversion +import JSON_Deserializer_ByteStrConversion as JSON_Deserializer_ByteStrConversion +import JSON_Deserializer as JSON_Deserializer +import JSON_ConcreteSyntax_Spec as JSON_ConcreteSyntax_Spec +import JSON_ConcreteSyntax_SpecProperties as JSON_ConcreteSyntax_SpecProperties +import JSON_ZeroCopy_Serializer as JSON_ZeroCopy_Serializer +import JSON_ZeroCopy_Deserializer_Core as JSON_ZeroCopy_Deserializer_Core +import JSON_ZeroCopy_Deserializer_Strings as JSON_ZeroCopy_Deserializer_Strings +import JSON_ZeroCopy_Deserializer_Numbers as JSON_ZeroCopy_Deserializer_Numbers +import JSON_ZeroCopy_Deserializer_ObjectParams as JSON_ZeroCopy_Deserializer_ObjectParams +import JSON_ZeroCopy_Deserializer_Objects as JSON_ZeroCopy_Deserializer_Objects +import JSON_ZeroCopy_Deserializer_ArrayParams as JSON_ZeroCopy_Deserializer_ArrayParams +import JSON_ZeroCopy_Deserializer_Arrays as JSON_ZeroCopy_Deserializer_Arrays +import JSON_ZeroCopy_Deserializer_Constants as JSON_ZeroCopy_Deserializer_Constants +import JSON_ZeroCopy_Deserializer_Values as JSON_ZeroCopy_Deserializer_Values +import JSON_ZeroCopy_Deserializer_API as JSON_ZeroCopy_Deserializer_API +import JSON_ZeroCopy_Deserializer as JSON_ZeroCopy_Deserializer +import JSON_ZeroCopy_API as JSON_ZeroCopy_API +import JSON_API as JSON_API +import JSONHelpers as JSONHelpers +import KeyDescription as KeyDescription +import HexStrings as HexStrings +import KeyMaterial as KeyMaterial +import CreateStaticKeyrings as CreateStaticKeyrings +import CreateStaticKeyStores as CreateStaticKeyStores +import KeyringFromKeyDescription as KeyringFromKeyDescription +import CmmFromKeyDescription as CmmFromKeyDescription +import WrappedMaterialProviders as WrappedMaterialProviders +import KeysVectorOperations as KeysVectorOperations +import FileIO as FileIO +import KeyVectors as KeyVectors +import AwsCryptographyEncryptionSdkTypes as AwsCryptographyEncryptionSdkTypes +import Streams as Streams +import SerializableTypes as SerializableTypes +import SerializeFunctions as SerializeFunctions +import EncryptionContext as EncryptionContext +import HeaderTypes as HeaderTypes +import SharedHeaderFunctions as SharedHeaderFunctions +import EncryptedDataKeys as EncryptedDataKeys +import V1HeaderBody as V1HeaderBody +import V2HeaderBody as V2HeaderBody +import HeaderAuth as HeaderAuth +import Header as Header +import Frames as Frames +import MessageBody as MessageBody +import KeyDerivation as KeyDerivation +import EncryptDecryptHelpers as EncryptDecryptHelpers +import AwsEncryptionSdkOperations as AwsEncryptionSdkOperations +import EncryptionSdk as EncryptionSdk +import MplManifestOptions as MplManifestOptions +import GetOpt as GetOpt +import AllAlgorithmSuites as AllAlgorithmSuites +import TestVectors as TestVectors +import AllHierarchy as AllHierarchy +import AllKms as AllKms +import AllKmsMrkAware as AllKmsMrkAware +import AllKmsMrkAwareDiscovery as AllKmsMrkAwareDiscovery +import AllKmsRsa as AllKmsRsa +import AllKmsEcdh as AllKmsEcdh +import AllRawAES as AllRawAES +import AllRawRSA as AllRawRSA +import AllRawECDH as AllRawECDH +import AllDefaultCmm as AllDefaultCmm +import AllRequiredEncryptionContextCmm as AllRequiredEncryptionContextCmm +import AllMulti as AllMulti +import WriteJsonManifests as WriteJsonManifests +import CompleteVectors as CompleteVectors +import ParseJsonManifests as ParseJsonManifests +import TestManifests as TestManifests +import WrappedMaterialProvidersMain as WrappedMaterialProvidersMain +import AesKdfCtr as AesKdfCtr +import StandardLibraryInterop as StandardLibraryInterop +import Sorting as Sorting +import FloatCompare as FloatCompare +import ConcurrentCall as ConcurrentCall +import Base64Lemmas as Base64Lemmas +import .internaldafny.generated.WrappedESDK as WrappedESDK +import .internaldafny.generated.EsdkManifestOptions as EsdkManifestOptions +import .internaldafny.generated.EsdkTestVectors as EsdkTestVectors +import .internaldafny.generated.AllEsdkV4NoReqEc as AllEsdkV4NoReqEc +import .internaldafny.generated.AllEsdkV4WithReqEc as AllEsdkV4WithReqEc +import .internaldafny.generated.WriteEsdkJsonManifests as WriteEsdkJsonManifests +import .internaldafny.generated.WriteVectors as WriteVectors + +# Module: ParseEsdkJsonManifest + +class default__: + def __init__(self): + pass + + @staticmethod + def BuildDecryptTestVector(op, version, keys, obj): + hresult_: Wrappers.Result = Wrappers.Result.default(_dafny.Seq)() + d_0_i_: int + d_0_i_ = len(obj) + d_1_vectors_: _dafny.Seq + d_1_vectors_ = _dafny.Seq([]) + while (d_0_i_) != (0): + d_0_i_ = (d_0_i_) - (1) + d_2_test_: Wrappers.Result + d_2_test_ = default__.ToDecryptTestVectors(op, version, keys, ((obj)[d_0_i_])[0], ((obj)[d_0_i_])[1]) + if ((d_2_test_).is_Failure) and (((d_2_test_).error) != (default__.negativeTestVectorFound)): + hresult_ = Wrappers.Result_Failure(default__.buildTestVectorError) + return hresult_ + if (d_2_test_).is_Success: + d_1_vectors_ = (_dafny.Seq([(d_2_test_).value])) + (d_1_vectors_) + if ((d_2_test_).is_Failure) and (((d_2_test_).error) == (default__.negativeTestVectorFound)): + d_1_vectors_ = d_1_vectors_ + hresult_ = Wrappers.Result_Success(d_1_vectors_) + return hresult_ + return hresult_ + + @staticmethod + def ToDecryptTestVectors(op, version, keys, name, json): + d_0_valueOrError0_ = Wrappers.default__.Need((json).is_Object, _dafny.Seq("Vector is not an object")) + if (d_0_valueOrError0_).IsFailure(): + return (d_0_valueOrError0_).PropagateFailure() + elif True: + d_1_obj_ = (json).obj + source0_ = version + if True: + if (source0_) == (3): + d_2_valueOrError1_ = Wrappers.default__.Need((op).is_Decrypt, _dafny.Seq("Err parsing manifest expected Decrypt")) + if (d_2_valueOrError1_).IsFailure(): + return (d_2_valueOrError1_).PropagateFailure() + elif True: + return default__.V3ToDecryptTestVector(op, keys, name, d_1_obj_, version) + if True: + if (source0_) == (2): + d_3_valueOrError2_ = Wrappers.default__.Need((op).is_Decrypt, _dafny.Seq("Err parsing manifest expected Decrypt")) + if (d_3_valueOrError2_).IsFailure(): + return (d_3_valueOrError2_).PropagateFailure() + elif True: + return default__.V2ToDecryptTestVector(op, keys, name, d_1_obj_, version) + if True: + if (source0_) == (1): + d_4_valueOrError3_ = Wrappers.default__.Need((op).is_Decrypt, _dafny.Seq("Err parsing manifest expected Decrypt")) + if (d_4_valueOrError3_).IsFailure(): + return (d_4_valueOrError3_).PropagateFailure() + elif True: + return default__.V1ToDecryptTestVector(op, keys, name, d_1_obj_, version) + if True: + return Wrappers.Result_Failure(_dafny.Seq("Version not supported\n")) + + @staticmethod + def BuildEncryptTestVector(op, version, keys, obj): + hresult_: Wrappers.Result = Wrappers.Result.default(_dafny.Seq)() + d_0_i_: int + d_0_i_ = len(obj) + d_1_vectors_: _dafny.Seq + d_1_vectors_ = _dafny.Seq([]) + while (d_0_i_) != (0): + d_0_i_ = (d_0_i_) - (1) + d_2_test_: Wrappers.Result + d_2_test_ = default__.ToEncryptTestVector(op, version, keys, ((obj)[d_0_i_])[0], ((obj)[d_0_i_])[1]) + if (d_2_test_).is_Failure: + hresult_ = Wrappers.Result_Failure((d_2_test_).error) + return hresult_ + d_1_vectors_ = (_dafny.Seq([(d_2_test_).value])) + (d_1_vectors_) + hresult_ = Wrappers.Result_Success(d_1_vectors_) + return hresult_ + return hresult_ + + @staticmethod + def ToEncryptTestVector(op, version, keys, name, json): + d_0_valueOrError0_ = Wrappers.default__.Need((json).is_Object, _dafny.Seq("EncryptTestVector not an object")) + if (d_0_valueOrError0_).IsFailure(): + return (d_0_valueOrError0_).PropagateFailure() + elif True: + d_1_obj_ = (json).obj + source0_ = version + if True: + if (source0_) == (5): + return default__.V5ToEncryptTestVector(op, keys, name, d_1_obj_, version) + if True: + return Wrappers.Result_Failure(_dafny.Seq("Version not supported")) + + @staticmethod + def V5ToEncryptTestVector(op, keys, name, obj, version): + d_0_scenarioString_ = _dafny.Seq("encryption-scenario") + d_1_valueOrError0_ = JSONHelpers.default__.GetObject(d_0_scenarioString_, obj) + if (d_1_valueOrError0_).IsFailure(): + return (d_1_valueOrError0_).PropagateFailure() + elif True: + d_2_scenario_ = (d_1_valueOrError0_).Extract() + d_3_typeString_ = _dafny.Seq("type") + d_4_valueOrError1_ = JSONHelpers.default__.GetString(d_3_typeString_, d_2_scenario_) + if (d_4_valueOrError1_).IsFailure(): + return (d_4_valueOrError1_).PropagateFailure() + elif True: + d_5_typ_ = (d_4_valueOrError1_).Extract() + d_6_valueOrError2_ = JSONHelpers.default__.GetString(default__.plaintextJsonKey, d_2_scenario_) + if (d_6_valueOrError2_).IsFailure(): + return (d_6_valueOrError2_).PropagateFailure() + elif True: + d_7_plaintextLoc_ = (d_6_valueOrError2_).Extract() + d_8_valueOrError3_ = ParseJsonManifests.default__.GetAlgorithmSuiteInfo(d_2_scenario_) + if (d_8_valueOrError3_).IsFailure(): + return (d_8_valueOrError3_).PropagateFailure() + elif True: + d_9_algorithmSuite_ = (d_8_valueOrError3_).Extract() + d_10_valueOrError4_ = Wrappers.default__.Need(((d_9_algorithmSuite_).id).is_ESDK, _dafny.Seq("Unsupported algorithmSuiteId")) + if (d_10_valueOrError4_).IsFailure(): + return (d_10_valueOrError4_).PropagateFailure() + elif True: + d_11_valueOrError5_ = JSONHelpers.default__.GetOptionalPositiveLong(default__.frameSizeJsonKey, d_2_scenario_) + if (d_11_valueOrError5_).IsFailure(): + return (d_11_valueOrError5_).PropagateFailure() + elif True: + d_12_frameLength_ = (d_11_valueOrError5_).Extract() + d_13_valueOrError6_ = JSONHelpers.default__.SmallObjectToStringStringMap(default__.encryptionContextJsonKey, d_2_scenario_) + if (d_13_valueOrError6_).IsFailure(): + return (d_13_valueOrError6_).PropagateFailure() + elif True: + d_14_encryptionContextStrings_ = (d_13_valueOrError6_).Extract() + d_15_valueOrError7_ = JSONHelpers.default__.utf8EncodeMap(d_14_encryptionContextStrings_) + if (d_15_valueOrError7_).IsFailure(): + return (d_15_valueOrError7_).PropagateFailure() + elif True: + d_16_encryptionContext_ = (d_15_valueOrError7_).Extract() + d_17_valueOrError8_ = JSONHelpers.default__.SmallObjectToStringStringMap(default__.reproducedEncryptionContextJsonKey, d_2_scenario_) + if (d_17_valueOrError8_).IsFailure(): + return (d_17_valueOrError8_).PropagateFailure() + elif True: + d_18_reproducedEncryptionContextString_ = (d_17_valueOrError8_).Extract() + d_19_valueOrError9_ = JSONHelpers.default__.utf8EncodeMap(d_18_reproducedEncryptionContextString_) + if (d_19_valueOrError9_).IsFailure(): + return (d_19_valueOrError9_).PropagateFailure() + elif True: + d_20_reproducedEncryptionContext_ = (d_19_valueOrError9_).Extract() + d_21_valueOrError10_ = JSONHelpers.default__.GetString(_dafny.Seq("description"), d_2_scenario_) + if (d_21_valueOrError10_).IsFailure(): + return (d_21_valueOrError10_).PropagateFailure() + elif True: + d_22_description_ = (d_21_valueOrError10_).Extract() + source0_ = d_5_typ_ + if True: + if (source0_) == (_dafny.Seq("positive-esdk")): + d_23_valueOrError11_ = ParseJsonManifests.default__.GetKeyDescription(keys, default__.encryptKeyDescription, d_2_scenario_) + if (d_23_valueOrError11_).IsFailure(): + return (d_23_valueOrError11_).PropagateFailure() + elif True: + d_24_encryptKeyDescription_ = (d_23_valueOrError11_).Extract() + d_25_valueOrError12_ = ParseJsonManifests.default__.GetKeyDescription(keys, default__.decryptKeyDescription, d_2_scenario_) + if (d_25_valueOrError12_).IsFailure(): + return (d_25_valueOrError12_).PropagateFailure() + elif True: + d_26_decryptKeyDescription_ = (d_25_valueOrError12_).Extract() + return Wrappers.Result_Success(EsdkTestVectors.EsdkEncryptTestVector_PositiveEncryptTestVector(Wrappers.Option_Some(name), version, (op).manifestPath, (op).decryptManifestOutput, d_7_plaintextLoc_, d_24_encryptKeyDescription_, d_26_decryptKeyDescription_, Wrappers.Option_Some(d_16_encryptionContext_), Wrappers.Option_Some(d_20_reproducedEncryptionContext_), AwsCryptographyMaterialProvidersTypes.ESDKCommitmentPolicy_FORBID__ENCRYPT__ALLOW__DECRYPT(), d_12_frameLength_, Wrappers.Option_Some(d_9_algorithmSuite_), d_22_description_, Wrappers.Option_Some(1))) + if True: + return Wrappers.Result_Failure((_dafny.Seq("Unsupported ESDK TestVector type: ")) + (d_5_typ_)) + + @staticmethod + def V1ToDecryptTestVector(op, keys, name, obj, version): + d_0_valueOrError0_ = JSONHelpers.default__.GetString(_dafny.Seq("plaintext"), obj) + if (d_0_valueOrError0_).IsFailure(): + return (d_0_valueOrError0_).PropagateFailure() + elif True: + d_1_plaintextLoc_ = (d_0_valueOrError0_).Extract() + d_2_valueOrError1_ = JSONHelpers.default__.GetString(_dafny.Seq("ciphertext"), obj) + if (d_2_valueOrError1_).IsFailure(): + return (d_2_valueOrError1_).PropagateFailure() + elif True: + d_3_ciphertextLoc_ = (d_2_valueOrError1_).Extract() + d_4_valueOrError2_ = Wrappers.default__.Need(((_dafny.Seq("file://")) < (d_3_ciphertextLoc_)) and ((_dafny.Seq("file://")) < (d_1_plaintextLoc_)), _dafny.Seq("Invalid file prefix in test vector")) + if (d_4_valueOrError2_).IsFailure(): + return (d_4_valueOrError2_).PropagateFailure() + elif True: + d_5_valueOrError3_ = JSONHelpers.default__.GetArray(_dafny.Seq("master-keys"), obj) + if (d_5_valueOrError3_).IsFailure(): + return (d_5_valueOrError3_).PropagateFailure() + elif True: + d_6_masterKeys_ = (d_5_valueOrError3_).Extract() + d_7_valueOrError4_ = default__.GetKeyDescriptions(d_6_masterKeys_, keys) + if (d_7_valueOrError4_).IsFailure(): + return (d_7_valueOrError4_).PropagateFailure() + elif True: + d_8_keyDescriptions_ = (d_7_valueOrError4_).Extract() + d_9_valueOrError5_ = default__.ToMultiKeyDescription(d_8_keyDescriptions_) + if (d_9_valueOrError5_).IsFailure(): + return (d_9_valueOrError5_).PropagateFailure() + elif True: + d_10_keyDescription_ = (d_9_valueOrError5_).Extract() + return Wrappers.Result_Success(EsdkTestVectors.EsdkDecryptTestVector_PositiveV1OrV2DecryptTestVector(name, version, (op).manifestPath, _dafny.Seq((d_3_ciphertextLoc_)[len(default__.FILE__PREPEND)::]), _dafny.Seq((d_1_plaintextLoc_)[len(default__.FILE__PREPEND)::]), Wrappers.Option_None(), Wrappers.Option_None(), d_10_keyDescription_, AwsCryptographyMaterialProvidersTypes.ESDKCommitmentPolicy_FORBID__ENCRYPT__ALLOW__DECRYPT(), Wrappers.Option_None(), Wrappers.Option_None(), name, EsdkTestVectors.DecryptionMethod_OneShot())) + + @staticmethod + def V2ToDecryptTestVector(op, keys, name, obj, version): + d_0_valueOrError0_ = JSONHelpers.default__.GetObject(_dafny.Seq("result"), obj) + if (d_0_valueOrError0_).IsFailure(): + return (d_0_valueOrError0_).PropagateFailure() + elif True: + d_1_resultLoc_ = (d_0_valueOrError0_).Extract() + d_2_errorLoc_q_ = JSONHelpers.default__.GetObject(_dafny.Seq("error"), d_1_resultLoc_) + if (d_2_errorLoc_q_).is_Success: + return Wrappers.Result_Failure(default__.negativeTestVectorFound) + elif True: + d_3_valueOrError1_ = JSONHelpers.default__.GetObject(_dafny.Seq("output"), d_1_resultLoc_) + if (d_3_valueOrError1_).IsFailure(): + return (d_3_valueOrError1_).PropagateFailure() + elif True: + d_4_outputLoc_ = (d_3_valueOrError1_).Extract() + d_5_valueOrError2_ = JSONHelpers.default__.GetString(_dafny.Seq("plaintext"), d_4_outputLoc_) + if (d_5_valueOrError2_).IsFailure(): + return (d_5_valueOrError2_).PropagateFailure() + elif True: + d_6_plaintextLoc_ = (d_5_valueOrError2_).Extract() + d_7_valueOrError3_ = JSONHelpers.default__.GetString(_dafny.Seq("ciphertext"), obj) + if (d_7_valueOrError3_).IsFailure(): + return (d_7_valueOrError3_).PropagateFailure() + elif True: + d_8_ciphertextLoc_ = (d_7_valueOrError3_).Extract() + d_9_valueOrError4_ = Wrappers.default__.Need(((_dafny.Seq("file://")) < (d_8_ciphertextLoc_)) and ((_dafny.Seq("file://")) < (d_6_plaintextLoc_)), _dafny.Seq("Invalid file prefix in test vector")) + if (d_9_valueOrError4_).IsFailure(): + return (d_9_valueOrError4_).PropagateFailure() + elif True: + d_10_valueOrError5_ = JSONHelpers.default__.GetArray(_dafny.Seq("master-keys"), obj) + if (d_10_valueOrError5_).IsFailure(): + return (d_10_valueOrError5_).PropagateFailure() + elif True: + d_11_masterKeys_ = (d_10_valueOrError5_).Extract() + d_12_valueOrError6_ = default__.GetKeyDescriptions(d_11_masterKeys_, keys) + if (d_12_valueOrError6_).IsFailure(): + return (d_12_valueOrError6_).PropagateFailure() + elif True: + d_13_keyDescriptions_ = (d_12_valueOrError6_).Extract() + d_14_valueOrError7_ = default__.ToMultiKeyDescription(d_13_keyDescriptions_) + if (d_14_valueOrError7_).IsFailure(): + return (d_14_valueOrError7_).PropagateFailure() + elif True: + d_15_keyDescription_ = (d_14_valueOrError7_).Extract() + return Wrappers.Result_Success(EsdkTestVectors.EsdkDecryptTestVector_PositiveV1OrV2DecryptTestVector(name, version, (op).manifestPath, _dafny.Seq((d_8_ciphertextLoc_)[len(default__.FILE__PREPEND)::]), _dafny.Seq((d_6_plaintextLoc_)[len(default__.FILE__PREPEND)::]), Wrappers.Option_None(), Wrappers.Option_None(), d_15_keyDescription_, AwsCryptographyMaterialProvidersTypes.ESDKCommitmentPolicy_FORBID__ENCRYPT__ALLOW__DECRYPT(), Wrappers.Option_None(), Wrappers.Option_None(), name, EsdkTestVectors.DecryptionMethod_OneShot())) + + @staticmethod + def V3ToDecryptTestVector(op, keys, name, obj, version): + d_0_scenarioString_ = _dafny.Seq("decryption-scenario") + d_1_valueOrError0_ = JSONHelpers.default__.GetObject(d_0_scenarioString_, obj) + if (d_1_valueOrError0_).IsFailure(): + return (d_1_valueOrError0_).PropagateFailure() + elif True: + d_2_scenario_ = (d_1_valueOrError0_).Extract() + d_3_typeString_ = _dafny.Seq("type") + d_4_valueOrError1_ = JSONHelpers.default__.GetString(d_3_typeString_, d_2_scenario_) + if (d_4_valueOrError1_).IsFailure(): + return (d_4_valueOrError1_).PropagateFailure() + elif True: + d_5_typ_ = (d_4_valueOrError1_).Extract() + d_6_valueOrError2_ = JSONHelpers.default__.GetString(default__.ciphertextJsonKey, d_2_scenario_) + if (d_6_valueOrError2_).IsFailure(): + return (d_6_valueOrError2_).PropagateFailure() + elif True: + d_7_ciphertextLoc_ = (d_6_valueOrError2_).Extract() + d_8_valueOrError3_ = ParseJsonManifests.default__.GetAlgorithmSuiteInfo(d_2_scenario_) + if (d_8_valueOrError3_).IsFailure(): + return (d_8_valueOrError3_).PropagateFailure() + elif True: + d_9_algorithmSuite_ = (d_8_valueOrError3_).Extract() + d_10_valueOrError4_ = Wrappers.default__.Need(((d_9_algorithmSuite_).id).is_ESDK, _dafny.Seq("Unsupported algorithmSuiteId")) + if (d_10_valueOrError4_).IsFailure(): + return (d_10_valueOrError4_).PropagateFailure() + elif True: + d_11_valueOrError5_ = JSONHelpers.default__.GetOptionalPositiveLong(default__.frameSizeJsonKey, d_2_scenario_) + if (d_11_valueOrError5_).IsFailure(): + return (d_11_valueOrError5_).PropagateFailure() + elif True: + d_12_frameLength_ = (d_11_valueOrError5_).Extract() + d_13_valueOrError6_ = JSONHelpers.default__.SmallObjectToStringStringMap(default__.reproducedEncryptionContextJsonKey, d_2_scenario_) + if (d_13_valueOrError6_).IsFailure(): + return (d_13_valueOrError6_).PropagateFailure() + elif True: + d_14_reproducedEncryptionContextStrings_ = (d_13_valueOrError6_).Extract() + d_15_valueOrError7_ = JSONHelpers.default__.utf8EncodeMap(d_14_reproducedEncryptionContextStrings_) + if (d_15_valueOrError7_).IsFailure(): + return (d_15_valueOrError7_).PropagateFailure() + elif True: + d_16_reproducedEncryptionContext_ = (d_15_valueOrError7_).Extract() + d_17_valueOrError8_ = JSONHelpers.default__.GetString(_dafny.Seq("description"), d_2_scenario_) + if (d_17_valueOrError8_).IsFailure(): + return (d_17_valueOrError8_).PropagateFailure() + elif True: + d_18_description_ = (d_17_valueOrError8_).Extract() + d_19_valueOrError9_ = JSONHelpers.default__.GetString(_dafny.Seq("result"), d_2_scenario_) + if (d_19_valueOrError9_).IsFailure(): + return (d_19_valueOrError9_).PropagateFailure() + elif True: + d_20_result_ = (d_19_valueOrError9_).Extract() + d_21_valueOrError10_ = Wrappers.default__.Need(((_dafny.Seq("file://")) < (d_7_ciphertextLoc_)) and ((_dafny.Seq("file://")) < (d_20_result_)), _dafny.Seq("Invalid file prefix in test vector")) + if (d_21_valueOrError10_).IsFailure(): + return (d_21_valueOrError10_).PropagateFailure() + elif True: + source0_ = d_5_typ_ + if True: + if (source0_) == (_dafny.Seq("positive-esdk")): + d_22_valueOrError11_ = ParseJsonManifests.default__.GetKeyDescription(keys, default__.decryptKeyDescription, d_2_scenario_) + if (d_22_valueOrError11_).IsFailure(): + return (d_22_valueOrError11_).PropagateFailure() + elif True: + d_23_decryptKeyDescription_ = (d_22_valueOrError11_).Extract() + return Wrappers.Result_Success(EsdkTestVectors.EsdkDecryptTestVector_PositiveDecryptTestVector(name, version, (op).manifestPath, _dafny.Seq((d_7_ciphertextLoc_)[len(default__.FILE__PREPEND)::]), _dafny.Seq((d_20_result_)[len(default__.FILE__PREPEND)::]), Wrappers.Option_Some(d_16_reproducedEncryptionContext_), d_23_decryptKeyDescription_, AwsCryptographyMaterialProvidersTypes.ESDKCommitmentPolicy_FORBID__ENCRYPT__ALLOW__DECRYPT(), d_12_frameLength_, Wrappers.Option_Some(d_9_algorithmSuite_), d_18_description_, EsdkTestVectors.DecryptionMethod_OneShot())) + if True: + return Wrappers.Result_Failure((_dafny.Seq("Unsupported ESDK TestVector type: ")) + (d_5_typ_)) + + @staticmethod + def GetKeyDescriptions(keyArray, keys): + if (len(keyArray)) == (0): + return Wrappers.Result_Success(_dafny.Seq([])) + elif True: + d_0_currKey_ = (keyArray)[0] + d_1_valueOrError0_ = Wrappers.default__.Need((d_0_currKey_).is_Object, _dafny.Seq("Not an object")) + if (d_1_valueOrError0_).IsFailure(): + return (d_1_valueOrError0_).PropagateFailure() + elif True: + def lambda0_(d_3_e_): + return (d_3_e_).ToString() + + d_2_valueOrError1_ = (JSON_API.default__.Serialize(d_0_currKey_)).MapFailure(lambda0_) + if (d_2_valueOrError1_).IsFailure(): + return (d_2_valueOrError1_).PropagateFailure() + elif True: + d_4_encryptStr_ = (d_2_valueOrError1_).Extract() + d_5_valueOrError2_ = ((keys).GetKeyDescription(AwsCryptographyMaterialProvidersTestVectorKeysTypes.GetKeyDescriptionInput_GetKeyDescriptionInput(d_4_encryptStr_))).MapFailure(ParseJsonManifests.default__.ErrorToString) + if (d_5_valueOrError2_).IsFailure(): + return (d_5_valueOrError2_).PropagateFailure() + elif True: + d_6_encryptDecryptKeyDescription_ = (d_5_valueOrError2_).Extract() + d_7_valueOrError3_ = default__.GetKeyDescriptions(_dafny.Seq((keyArray)[1::]), keys) + if (d_7_valueOrError3_).IsFailure(): + return (d_7_valueOrError3_).PropagateFailure() + elif True: + d_8_tail_ = (d_7_valueOrError3_).Extract() + return Wrappers.Result_Success((_dafny.Seq([(d_6_encryptDecryptKeyDescription_).keyDescription])) + (d_8_tail_)) + + @staticmethod + def ToMultiKeyDescription(keyDescriptions): + if (len(keyDescriptions)) == (1): + return Wrappers.Result_Success((keyDescriptions)[0]) + elif True: + d_0_valueOrError0_ = Wrappers.default__.Need((len(keyDescriptions)) > (1), _dafny.Seq("Received invalid key description length")) + if (d_0_valueOrError0_).IsFailure(): + return (d_0_valueOrError0_).PropagateFailure() + elif True: + return Wrappers.Result_Success(AwsCryptographyMaterialProvidersTestVectorKeysTypes.KeyDescription_Multi(AwsCryptographyMaterialProvidersTestVectorKeysTypes.MultiKeyring_MultiKeyring(Wrappers.Option_Some((keyDescriptions)[0]), _dafny.Seq((keyDescriptions)[1::])))) + + @staticmethod + def GetPath(key, obj): + d_0_valueOrError0_ = JSONHelpers.default__.GetString(key, obj) + if (d_0_valueOrError0_).IsFailure(): + return (d_0_valueOrError0_).PropagateFailure() + elif True: + d_1_path_ = (d_0_valueOrError0_).Extract() + d_2_valueOrError1_ = Wrappers.default__.Need((default__.FILE__PREPEND) < (d_1_path_), _dafny.Seq("Received Invalid location for plaintext or ciphertext.")) + if (d_2_valueOrError1_).IsFailure(): + return (d_2_valueOrError1_).PropagateFailure() + elif True: + return Wrappers.Result_Success(_dafny.Seq((d_1_path_)[len(default__.FILE__PREPEND)::])) + + @staticmethod + def Result_q(key): + return ((key) == (_dafny.Seq("output"))) or ((key) == (_dafny.Seq("error"))) + + @_dafny.classproperty + def ciphertextJsonKey(instance): + return _dafny.Seq("ciphertext") + @_dafny.classproperty + def frameSizeJsonKey(instance): + return _dafny.Seq("frame-size") + @_dafny.classproperty + def reproducedEncryptionContextJsonKey(instance): + return _dafny.Seq("reproduced-encryption-context") + @_dafny.classproperty + def decryptKeyDescription(instance): + return _dafny.Seq("decryptKeyDescription") + @_dafny.classproperty + def FILE__PREPEND(instance): + return _dafny.Seq("file://") + @_dafny.classproperty + def negativeTestVectorFound(instance): + return _dafny.Seq("Negative test vector found; not supported yet.") + @_dafny.classproperty + def buildTestVectorError(instance): + return _dafny.Seq("Error other than negative test vector found thrown") + @_dafny.classproperty + def plaintextJsonKey(instance): + return _dafny.Seq("plaintext") + @_dafny.classproperty + def encryptionContextJsonKey(instance): + return _dafny.Seq("encryption-context") + @_dafny.classproperty + def encryptKeyDescription(instance): + return _dafny.Seq("encryptKeyDescription") + @_dafny.classproperty + def masterKeysJsonKey(instance): + return _dafny.Seq("master-keys") + @_dafny.classproperty + def decryptionMethodJsonKey(instance): + return _dafny.Seq("decryption-method") diff --git a/TestVectors/runtimes/python/src/internaldafny/generated/WrappedESDK.py b/TestVectors/runtimes/python/src/internaldafny/generated/WrappedESDK.py new file mode 100644 index 000000000..cb1a2e45b --- /dev/null +++ b/TestVectors/runtimes/python/src/internaldafny/generated/WrappedESDK.py @@ -0,0 +1,229 @@ +import sys +from typing import Callable, Any, TypeVar, NamedTuple +from math import floor +from itertools import count + +import .internaldafny.generated.module_ as module_ +import _dafny as _dafny +import System_ as System_ +import Wrappers as Wrappers +import BoundedInts as BoundedInts +import StandardLibrary_UInt as StandardLibrary_UInt +import StandardLibrary_Sequence as StandardLibrary_Sequence +import StandardLibrary_String as StandardLibrary_String +import StandardLibrary as StandardLibrary +import UTF8 as UTF8 +import AwsCryptographyPrimitivesTypes as AwsCryptographyPrimitivesTypes +import ExternRandom as ExternRandom +import Random as Random +import AESEncryption as AESEncryption +import ExternDigest as ExternDigest +import Digest as Digest +import HMAC as HMAC +import WrappedHMAC as WrappedHMAC +import HKDF as HKDF +import WrappedHKDF as WrappedHKDF +import Signature as Signature +import KdfCtr as KdfCtr +import RSAEncryption as RSAEncryption +import ECDH as ECDH +import AwsCryptographyPrimitivesOperations as AwsCryptographyPrimitivesOperations +import AtomicPrimitives as AtomicPrimitives +import ComAmazonawsDynamodbTypes as ComAmazonawsDynamodbTypes +import ComAmazonawsKmsTypes as ComAmazonawsKmsTypes +import AwsCryptographyKeyStoreTypes as AwsCryptographyKeyStoreTypes +import AwsCryptographyMaterialProvidersTypes as AwsCryptographyMaterialProvidersTypes +import Base64 as Base64 +import AlgorithmSuites as AlgorithmSuites +import Materials as Materials +import Keyring as Keyring +import Relations as Relations +import Seq_MergeSort as Seq_MergeSort +import Math as Math +import Seq as Seq +import MultiKeyring as MultiKeyring +import AwsArnParsing as AwsArnParsing +import AwsKmsMrkAreUnique as AwsKmsMrkAreUnique +import Actions as Actions +import AwsKmsMrkMatchForDecrypt as AwsKmsMrkMatchForDecrypt +import AwsKmsUtils as AwsKmsUtils +import Constants as Constants +import UUID as UUID +import MaterialWrapping as MaterialWrapping +import SortedSets as SortedSets +import CanonicalEncryptionContext as CanonicalEncryptionContext +import IntermediateKeyWrapping as IntermediateKeyWrapping +import EdkWrapping as EdkWrapping +import ErrorMessages as ErrorMessages +import AwsKmsKeyring as AwsKmsKeyring +import StrictMultiKeyring as StrictMultiKeyring +import AwsKmsDiscoveryKeyring as AwsKmsDiscoveryKeyring +import Com_Amazonaws_Kms as Com_Amazonaws_Kms +import Com_Amazonaws_Dynamodb as Com_Amazonaws_Dynamodb +import DiscoveryMultiKeyring as DiscoveryMultiKeyring +import AwsKmsMrkDiscoveryKeyring as AwsKmsMrkDiscoveryKeyring +import MrkAwareDiscoveryMultiKeyring as MrkAwareDiscoveryMultiKeyring +import AwsKmsMrkKeyring as AwsKmsMrkKeyring +import MrkAwareStrictMultiKeyring as MrkAwareStrictMultiKeyring +import DafnyLibraries as DafnyLibraries +import Time as Time +import LocalCMC as LocalCMC +import SynchronizedLocalCMC as SynchronizedLocalCMC +import StormTracker as StormTracker +import StormTrackingCMC as StormTrackingCMC +import CacheConstants as CacheConstants +import AwsKmsHierarchicalKeyring as AwsKmsHierarchicalKeyring +import AwsKmsRsaKeyring as AwsKmsRsaKeyring +import EcdhEdkWrapping as EcdhEdkWrapping +import RawECDHKeyring as RawECDHKeyring +import AwsKmsEcdhKeyring as AwsKmsEcdhKeyring +import RawAESKeyring as RawAESKeyring +import RawRSAKeyring as RawRSAKeyring +import CMM as CMM +import Defaults as Defaults +import Commitment as Commitment +import DefaultCMM as DefaultCMM +import DefaultClientSupplier as DefaultClientSupplier +import Utils as Utils +import RequiredEncryptionContextCMM as RequiredEncryptionContextCMM +import AwsCryptographyMaterialProvidersOperations as AwsCryptographyMaterialProvidersOperations +import MaterialProviders as MaterialProviders +import KeyStoreErrorMessages as KeyStoreErrorMessages +import KmsArn as KmsArn +import Structure as Structure +import KMSKeystoreOperations as KMSKeystoreOperations +import DDBKeystoreOperations as DDBKeystoreOperations +import CreateKeys as CreateKeys +import CreateKeyStoreTable as CreateKeyStoreTable +import GetKeys as GetKeys +import AwsCryptographyKeyStoreOperations as AwsCryptographyKeyStoreOperations +import KeyStore as KeyStore +import AwsCryptographyMaterialProvidersTestVectorKeysTypes as AwsCryptographyMaterialProvidersTestVectorKeysTypes +import JSON_Utils_Views_Core as JSON_Utils_Views_Core +import JSON_Utils_Views_Writers as JSON_Utils_Views_Writers +import JSON_Utils_Lexers_Core as JSON_Utils_Lexers_Core +import JSON_Utils_Lexers_Strings as JSON_Utils_Lexers_Strings +import JSON_Utils_Cursors as JSON_Utils_Cursors +import JSON_Utils_Parsers as JSON_Utils_Parsers +import GeneralInternals as GeneralInternals +import MulInternalsNonlinear as MulInternalsNonlinear +import MulInternals as MulInternals +import Mul as Mul +import ModInternalsNonlinear as ModInternalsNonlinear +import DivInternalsNonlinear as DivInternalsNonlinear +import ModInternals as ModInternals +import DivInternals as DivInternals +import DivMod as DivMod +import Power as Power +import Logarithm as Logarithm +import JSON_Utils_Str_CharStrConversion as JSON_Utils_Str_CharStrConversion +import JSON_Utils_Str_CharStrEscaping as JSON_Utils_Str_CharStrEscaping +import JSON_Utils_Str as JSON_Utils_Str +import JSON_Utils_Seq as JSON_Utils_Seq +import JSON_Utils_Vectors as JSON_Utils_Vectors +import JSON_Errors as JSON_Errors +import JSON_Values as JSON_Values +import Unicode as Unicode +import Functions as Functions +import Utf8EncodingForm as Utf8EncodingForm +import Utf16EncodingForm as Utf16EncodingForm +import UnicodeStrings as UnicodeStrings +import JSON_Spec as JSON_Spec +import JSON_Grammar as JSON_Grammar +import JSON_Serializer_ByteStrConversion as JSON_Serializer_ByteStrConversion +import JSON_Serializer as JSON_Serializer +import JSON_Deserializer_Uint16StrConversion as JSON_Deserializer_Uint16StrConversion +import JSON_Deserializer_ByteStrConversion as JSON_Deserializer_ByteStrConversion +import JSON_Deserializer as JSON_Deserializer +import JSON_ConcreteSyntax_Spec as JSON_ConcreteSyntax_Spec +import JSON_ConcreteSyntax_SpecProperties as JSON_ConcreteSyntax_SpecProperties +import JSON_ZeroCopy_Serializer as JSON_ZeroCopy_Serializer +import JSON_ZeroCopy_Deserializer_Core as JSON_ZeroCopy_Deserializer_Core +import JSON_ZeroCopy_Deserializer_Strings as JSON_ZeroCopy_Deserializer_Strings +import JSON_ZeroCopy_Deserializer_Numbers as JSON_ZeroCopy_Deserializer_Numbers +import JSON_ZeroCopy_Deserializer_ObjectParams as JSON_ZeroCopy_Deserializer_ObjectParams +import JSON_ZeroCopy_Deserializer_Objects as JSON_ZeroCopy_Deserializer_Objects +import JSON_ZeroCopy_Deserializer_ArrayParams as JSON_ZeroCopy_Deserializer_ArrayParams +import JSON_ZeroCopy_Deserializer_Arrays as JSON_ZeroCopy_Deserializer_Arrays +import JSON_ZeroCopy_Deserializer_Constants as JSON_ZeroCopy_Deserializer_Constants +import JSON_ZeroCopy_Deserializer_Values as JSON_ZeroCopy_Deserializer_Values +import JSON_ZeroCopy_Deserializer_API as JSON_ZeroCopy_Deserializer_API +import JSON_ZeroCopy_Deserializer as JSON_ZeroCopy_Deserializer +import JSON_ZeroCopy_API as JSON_ZeroCopy_API +import JSON_API as JSON_API +import JSONHelpers as JSONHelpers +import KeyDescription as KeyDescription +import HexStrings as HexStrings +import KeyMaterial as KeyMaterial +import CreateStaticKeyrings as CreateStaticKeyrings +import CreateStaticKeyStores as CreateStaticKeyStores +import KeyringFromKeyDescription as KeyringFromKeyDescription +import CmmFromKeyDescription as CmmFromKeyDescription +import WrappedMaterialProviders as WrappedMaterialProviders +import KeysVectorOperations as KeysVectorOperations +import FileIO as FileIO +import KeyVectors as KeyVectors +import AwsCryptographyEncryptionSdkTypes as AwsCryptographyEncryptionSdkTypes +import Streams as Streams +import SerializableTypes as SerializableTypes +import SerializeFunctions as SerializeFunctions +import EncryptionContext as EncryptionContext +import HeaderTypes as HeaderTypes +import SharedHeaderFunctions as SharedHeaderFunctions +import EncryptedDataKeys as EncryptedDataKeys +import V1HeaderBody as V1HeaderBody +import V2HeaderBody as V2HeaderBody +import HeaderAuth as HeaderAuth +import Header as Header +import Frames as Frames +import MessageBody as MessageBody +import KeyDerivation as KeyDerivation +import EncryptDecryptHelpers as EncryptDecryptHelpers +import AwsEncryptionSdkOperations as AwsEncryptionSdkOperations +import EncryptionSdk as EncryptionSdk +import MplManifestOptions as MplManifestOptions +import GetOpt as GetOpt +import AllAlgorithmSuites as AllAlgorithmSuites +import TestVectors as TestVectors +import AllHierarchy as AllHierarchy +import AllKms as AllKms +import AllKmsMrkAware as AllKmsMrkAware +import AllKmsMrkAwareDiscovery as AllKmsMrkAwareDiscovery +import AllKmsRsa as AllKmsRsa +import AllKmsEcdh as AllKmsEcdh +import AllRawAES as AllRawAES +import AllRawRSA as AllRawRSA +import AllRawECDH as AllRawECDH +import AllDefaultCmm as AllDefaultCmm +import AllRequiredEncryptionContextCmm as AllRequiredEncryptionContextCmm +import AllMulti as AllMulti +import WriteJsonManifests as WriteJsonManifests +import CompleteVectors as CompleteVectors +import ParseJsonManifests as ParseJsonManifests +import TestManifests as TestManifests +import WrappedMaterialProvidersMain as WrappedMaterialProvidersMain +import AesKdfCtr as AesKdfCtr +import StandardLibraryInterop as StandardLibraryInterop +import Sorting as Sorting +import FloatCompare as FloatCompare +import ConcurrentCall as ConcurrentCall +import Base64Lemmas as Base64Lemmas + +# Module: WrappedESDK + +class default__: + def __init__(self): + pass + + @staticmethod + def WrappedDefaultAwsEncryptionSdkConfig(): + return AwsCryptographyEncryptionSdkTypes.AwsEncryptionSdkConfig_AwsEncryptionSdkConfig(Wrappers.Option_Some(AwsCryptographyMaterialProvidersTypes.ESDKCommitmentPolicy_REQUIRE__ENCRYPT__REQUIRE__DECRYPT()), Wrappers.Option_None(), Wrappers.Option_None()) + + @staticmethod + def WrappedAwsEncryptionSdkConfigWithSuppliedCommitment(commitmentPolicy): + return AwsCryptographyEncryptionSdkTypes.AwsEncryptionSdkConfig_AwsEncryptionSdkConfig(Wrappers.Option_Some(commitmentPolicy), Wrappers.Option_None(), Wrappers.Option_None()) + + @staticmethod + def WrappedAwsEncryptionSdkConfig(commitmentPolicy, maxEncryptedDataKeys, netV4__0__0__RetryPolicy): + return AwsCryptographyEncryptionSdkTypes.AwsEncryptionSdkConfig_AwsEncryptionSdkConfig(Wrappers.Option_Some(commitmentPolicy), Wrappers.Option_Some(maxEncryptedDataKeys), Wrappers.Option_Some(netV4__0__0__RetryPolicy)) + diff --git a/TestVectors/runtimes/python/src/internaldafny/generated/WrappedESDKMain.py b/TestVectors/runtimes/python/src/internaldafny/generated/WrappedESDKMain.py new file mode 100644 index 000000000..98095ea8b --- /dev/null +++ b/TestVectors/runtimes/python/src/internaldafny/generated/WrappedESDKMain.py @@ -0,0 +1,346 @@ +import sys +from typing import Callable, Any, TypeVar, NamedTuple +from math import floor +from itertools import count + +import .internaldafny.generated.module_ as module_ +import _dafny as _dafny +import System_ as System_ +import Wrappers as Wrappers +import BoundedInts as BoundedInts +import StandardLibrary_UInt as StandardLibrary_UInt +import StandardLibrary_Sequence as StandardLibrary_Sequence +import StandardLibrary_String as StandardLibrary_String +import StandardLibrary as StandardLibrary +import UTF8 as UTF8 +import AwsCryptographyPrimitivesTypes as AwsCryptographyPrimitivesTypes +import ExternRandom as ExternRandom +import Random as Random +import AESEncryption as AESEncryption +import ExternDigest as ExternDigest +import Digest as Digest +import HMAC as HMAC +import WrappedHMAC as WrappedHMAC +import HKDF as HKDF +import WrappedHKDF as WrappedHKDF +import Signature as Signature +import KdfCtr as KdfCtr +import RSAEncryption as RSAEncryption +import ECDH as ECDH +import AwsCryptographyPrimitivesOperations as AwsCryptographyPrimitivesOperations +import AtomicPrimitives as AtomicPrimitives +import ComAmazonawsDynamodbTypes as ComAmazonawsDynamodbTypes +import ComAmazonawsKmsTypes as ComAmazonawsKmsTypes +import AwsCryptographyKeyStoreTypes as AwsCryptographyKeyStoreTypes +import AwsCryptographyMaterialProvidersTypes as AwsCryptographyMaterialProvidersTypes +import Base64 as Base64 +import AlgorithmSuites as AlgorithmSuites +import Materials as Materials +import Keyring as Keyring +import Relations as Relations +import Seq_MergeSort as Seq_MergeSort +import Math as Math +import Seq as Seq +import MultiKeyring as MultiKeyring +import AwsArnParsing as AwsArnParsing +import AwsKmsMrkAreUnique as AwsKmsMrkAreUnique +import Actions as Actions +import AwsKmsMrkMatchForDecrypt as AwsKmsMrkMatchForDecrypt +import AwsKmsUtils as AwsKmsUtils +import Constants as Constants +import UUID as UUID +import MaterialWrapping as MaterialWrapping +import SortedSets as SortedSets +import CanonicalEncryptionContext as CanonicalEncryptionContext +import IntermediateKeyWrapping as IntermediateKeyWrapping +import EdkWrapping as EdkWrapping +import ErrorMessages as ErrorMessages +import AwsKmsKeyring as AwsKmsKeyring +import StrictMultiKeyring as StrictMultiKeyring +import AwsKmsDiscoveryKeyring as AwsKmsDiscoveryKeyring +import Com_Amazonaws_Kms as Com_Amazonaws_Kms +import Com_Amazonaws_Dynamodb as Com_Amazonaws_Dynamodb +import DiscoveryMultiKeyring as DiscoveryMultiKeyring +import AwsKmsMrkDiscoveryKeyring as AwsKmsMrkDiscoveryKeyring +import MrkAwareDiscoveryMultiKeyring as MrkAwareDiscoveryMultiKeyring +import AwsKmsMrkKeyring as AwsKmsMrkKeyring +import MrkAwareStrictMultiKeyring as MrkAwareStrictMultiKeyring +import DafnyLibraries as DafnyLibraries +import Time as Time +import LocalCMC as LocalCMC +import SynchronizedLocalCMC as SynchronizedLocalCMC +import StormTracker as StormTracker +import StormTrackingCMC as StormTrackingCMC +import CacheConstants as CacheConstants +import AwsKmsHierarchicalKeyring as AwsKmsHierarchicalKeyring +import AwsKmsRsaKeyring as AwsKmsRsaKeyring +import EcdhEdkWrapping as EcdhEdkWrapping +import RawECDHKeyring as RawECDHKeyring +import AwsKmsEcdhKeyring as AwsKmsEcdhKeyring +import RawAESKeyring as RawAESKeyring +import RawRSAKeyring as RawRSAKeyring +import CMM as CMM +import Defaults as Defaults +import Commitment as Commitment +import DefaultCMM as DefaultCMM +import DefaultClientSupplier as DefaultClientSupplier +import Utils as Utils +import RequiredEncryptionContextCMM as RequiredEncryptionContextCMM +import AwsCryptographyMaterialProvidersOperations as AwsCryptographyMaterialProvidersOperations +import MaterialProviders as MaterialProviders +import KeyStoreErrorMessages as KeyStoreErrorMessages +import KmsArn as KmsArn +import Structure as Structure +import KMSKeystoreOperations as KMSKeystoreOperations +import DDBKeystoreOperations as DDBKeystoreOperations +import CreateKeys as CreateKeys +import CreateKeyStoreTable as CreateKeyStoreTable +import GetKeys as GetKeys +import AwsCryptographyKeyStoreOperations as AwsCryptographyKeyStoreOperations +import KeyStore as KeyStore +import AwsCryptographyMaterialProvidersTestVectorKeysTypes as AwsCryptographyMaterialProvidersTestVectorKeysTypes +import JSON_Utils_Views_Core as JSON_Utils_Views_Core +import JSON_Utils_Views_Writers as JSON_Utils_Views_Writers +import JSON_Utils_Lexers_Core as JSON_Utils_Lexers_Core +import JSON_Utils_Lexers_Strings as JSON_Utils_Lexers_Strings +import JSON_Utils_Cursors as JSON_Utils_Cursors +import JSON_Utils_Parsers as JSON_Utils_Parsers +import GeneralInternals as GeneralInternals +import MulInternalsNonlinear as MulInternalsNonlinear +import MulInternals as MulInternals +import Mul as Mul +import ModInternalsNonlinear as ModInternalsNonlinear +import DivInternalsNonlinear as DivInternalsNonlinear +import ModInternals as ModInternals +import DivInternals as DivInternals +import DivMod as DivMod +import Power as Power +import Logarithm as Logarithm +import JSON_Utils_Str_CharStrConversion as JSON_Utils_Str_CharStrConversion +import JSON_Utils_Str_CharStrEscaping as JSON_Utils_Str_CharStrEscaping +import JSON_Utils_Str as JSON_Utils_Str +import JSON_Utils_Seq as JSON_Utils_Seq +import JSON_Utils_Vectors as JSON_Utils_Vectors +import JSON_Errors as JSON_Errors +import JSON_Values as JSON_Values +import Unicode as Unicode +import Functions as Functions +import Utf8EncodingForm as Utf8EncodingForm +import Utf16EncodingForm as Utf16EncodingForm +import UnicodeStrings as UnicodeStrings +import JSON_Spec as JSON_Spec +import JSON_Grammar as JSON_Grammar +import JSON_Serializer_ByteStrConversion as JSON_Serializer_ByteStrConversion +import JSON_Serializer as JSON_Serializer +import JSON_Deserializer_Uint16StrConversion as JSON_Deserializer_Uint16StrConversion +import JSON_Deserializer_ByteStrConversion as JSON_Deserializer_ByteStrConversion +import JSON_Deserializer as JSON_Deserializer +import JSON_ConcreteSyntax_Spec as JSON_ConcreteSyntax_Spec +import JSON_ConcreteSyntax_SpecProperties as JSON_ConcreteSyntax_SpecProperties +import JSON_ZeroCopy_Serializer as JSON_ZeroCopy_Serializer +import JSON_ZeroCopy_Deserializer_Core as JSON_ZeroCopy_Deserializer_Core +import JSON_ZeroCopy_Deserializer_Strings as JSON_ZeroCopy_Deserializer_Strings +import JSON_ZeroCopy_Deserializer_Numbers as JSON_ZeroCopy_Deserializer_Numbers +import JSON_ZeroCopy_Deserializer_ObjectParams as JSON_ZeroCopy_Deserializer_ObjectParams +import JSON_ZeroCopy_Deserializer_Objects as JSON_ZeroCopy_Deserializer_Objects +import JSON_ZeroCopy_Deserializer_ArrayParams as JSON_ZeroCopy_Deserializer_ArrayParams +import JSON_ZeroCopy_Deserializer_Arrays as JSON_ZeroCopy_Deserializer_Arrays +import JSON_ZeroCopy_Deserializer_Constants as JSON_ZeroCopy_Deserializer_Constants +import JSON_ZeroCopy_Deserializer_Values as JSON_ZeroCopy_Deserializer_Values +import JSON_ZeroCopy_Deserializer_API as JSON_ZeroCopy_Deserializer_API +import JSON_ZeroCopy_Deserializer as JSON_ZeroCopy_Deserializer +import JSON_ZeroCopy_API as JSON_ZeroCopy_API +import JSON_API as JSON_API +import JSONHelpers as JSONHelpers +import KeyDescription as KeyDescription +import HexStrings as HexStrings +import KeyMaterial as KeyMaterial +import CreateStaticKeyrings as CreateStaticKeyrings +import CreateStaticKeyStores as CreateStaticKeyStores +import KeyringFromKeyDescription as KeyringFromKeyDescription +import CmmFromKeyDescription as CmmFromKeyDescription +import WrappedMaterialProviders as WrappedMaterialProviders +import KeysVectorOperations as KeysVectorOperations +import FileIO as FileIO +import KeyVectors as KeyVectors +import AwsCryptographyEncryptionSdkTypes as AwsCryptographyEncryptionSdkTypes +import Streams as Streams +import SerializableTypes as SerializableTypes +import SerializeFunctions as SerializeFunctions +import EncryptionContext as EncryptionContext +import HeaderTypes as HeaderTypes +import SharedHeaderFunctions as SharedHeaderFunctions +import EncryptedDataKeys as EncryptedDataKeys +import V1HeaderBody as V1HeaderBody +import V2HeaderBody as V2HeaderBody +import HeaderAuth as HeaderAuth +import Header as Header +import Frames as Frames +import MessageBody as MessageBody +import KeyDerivation as KeyDerivation +import EncryptDecryptHelpers as EncryptDecryptHelpers +import AwsEncryptionSdkOperations as AwsEncryptionSdkOperations +import EncryptionSdk as EncryptionSdk +import MplManifestOptions as MplManifestOptions +import GetOpt as GetOpt +import AllAlgorithmSuites as AllAlgorithmSuites +import TestVectors as TestVectors +import AllHierarchy as AllHierarchy +import AllKms as AllKms +import AllKmsMrkAware as AllKmsMrkAware +import AllKmsMrkAwareDiscovery as AllKmsMrkAwareDiscovery +import AllKmsRsa as AllKmsRsa +import AllKmsEcdh as AllKmsEcdh +import AllRawAES as AllRawAES +import AllRawRSA as AllRawRSA +import AllRawECDH as AllRawECDH +import AllDefaultCmm as AllDefaultCmm +import AllRequiredEncryptionContextCmm as AllRequiredEncryptionContextCmm +import AllMulti as AllMulti +import WriteJsonManifests as WriteJsonManifests +import CompleteVectors as CompleteVectors +import ParseJsonManifests as ParseJsonManifests +import TestManifests as TestManifests +import WrappedMaterialProvidersMain as WrappedMaterialProvidersMain +import AesKdfCtr as AesKdfCtr +import StandardLibraryInterop as StandardLibraryInterop +import Sorting as Sorting +import FloatCompare as FloatCompare +import ConcurrentCall as ConcurrentCall +import Base64Lemmas as Base64Lemmas +import .internaldafny.generated.WrappedESDK as WrappedESDK +import .internaldafny.generated.EsdkManifestOptions as EsdkManifestOptions +import .internaldafny.generated.EsdkTestVectors as EsdkTestVectors +import .internaldafny.generated.AllEsdkV4NoReqEc as AllEsdkV4NoReqEc +import .internaldafny.generated.AllEsdkV4WithReqEc as AllEsdkV4WithReqEc +import .internaldafny.generated.WriteEsdkJsonManifests as WriteEsdkJsonManifests +import .internaldafny.generated.WriteVectors as WriteVectors +import .internaldafny.generated.ParseEsdkJsonManifest as ParseEsdkJsonManifest +import .internaldafny.generated.EsdkTestManifests as EsdkTestManifests + +# Module: WrappedESDKMain + +class default__: + def __init__(self): + pass + + @staticmethod + def Main2(args): + d_0_vectorOptions_: GetOpt.Options + d_0_vectorOptions_ = GetOpt.Options_Options(_dafny.Seq("test-vectors"), _dafny.Seq("?"), _dafny.Seq([GetOpt.Param_Command(GetOpt.Options_Options(_dafny.Seq("decrypt"), _dafny.Seq("decrypt command for test-vectors"), _dafny.Seq([GetOpt.Param_Opt(_dafny.Seq("manifest-path"), _dafny.Seq("relative path to the location of the manifest"), _dafny.Seq("arg"), GetOpt.default__.NullChar, GetOpt.Unused_Required(), False, GetOpt.Visibility_Normal(), _dafny.Seq([]), _dafny.Seq([]), GetOpt.Tri_No()), GetOpt.Param_Opt(_dafny.Seq("manifest-name"), _dafny.Seq("name of file that contains the decrypt vectors file"), _dafny.Seq("arg"), GetOpt.default__.NullChar, GetOpt.Unused_Required(), False, GetOpt.Visibility_Normal(), _dafny.Seq([]), _dafny.Seq([]), GetOpt.Tri_No()), GetOpt.Param_Opt(_dafny.Seq("test-name"), _dafny.Seq("id of the test to run"), _dafny.Seq("arg"), GetOpt.default__.NullChar, GetOpt.Unused_UnusedOk(), False, GetOpt.Visibility_Normal(), _dafny.Seq([]), _dafny.Seq([]), GetOpt.Tri_No())]))), GetOpt.Param_Command(GetOpt.Options_Options(_dafny.Seq("encrypt"), _dafny.Seq("encrypt command for test-vectors"), _dafny.Seq([GetOpt.Param_Opt(_dafny.Seq("manifest-path"), _dafny.Seq("relative path to the location of the manifest"), _dafny.Seq("arg"), GetOpt.default__.NullChar, GetOpt.Unused_Required(), False, GetOpt.Visibility_Normal(), _dafny.Seq([]), _dafny.Seq([]), GetOpt.Tri_No()), GetOpt.Param_Opt(_dafny.Seq("decrypt-manifest-path"), _dafny.Seq("relative path to the location where the decrypted manifest will be written to."), _dafny.Seq("arg"), GetOpt.default__.NullChar, GetOpt.Unused_Required(), False, GetOpt.Visibility_Normal(), _dafny.Seq([]), _dafny.Seq([]), GetOpt.Tri_No()), GetOpt.Param_Opt(_dafny.Seq("test-name"), _dafny.Seq("id of the test to run"), _dafny.Seq("arg"), GetOpt.default__.NullChar, GetOpt.Unused_UnusedOk(), False, GetOpt.Visibility_Normal(), _dafny.Seq([]), _dafny.Seq([]), GetOpt.Tri_No())]))), GetOpt.Param_Command(GetOpt.Options_Options(_dafny.Seq("encrypt-manifest"), _dafny.Seq("encryp manifest command for test-vectors"), _dafny.Seq([GetOpt.Param_Opt(_dafny.Seq("encrypt-manifest-output"), _dafny.Seq("relative path of where to store the encrypt-manifest produced"), _dafny.Seq("arg"), GetOpt.default__.NullChar, GetOpt.Unused_Required(), False, GetOpt.Visibility_Normal(), _dafny.Seq([]), _dafny.Seq([]), GetOpt.Tri_No())])))])) + if not((0) < (len(args))): + raise _dafny.HaltException("dafny/TestVectors/src/Index.dfy(40,4): " + _dafny.string_of(_dafny.Seq("expectation violation"))) + d_1_parsedOptions_q_: Wrappers.Result + d_1_parsedOptions_q_ = GetOpt.default__.GetOptions(d_0_vectorOptions_, args) + if (d_1_parsedOptions_q_).is_Success: + d_2_h_: Wrappers.Option + d_2_h_ = GetOpt.default__.NeedsHelp(d_0_vectorOptions_, (d_1_parsedOptions_q_).value, _dafny.Seq("")) + if (d_2_h_).is_Some: + _dafny.print(_dafny.string_of((d_2_h_).value)) + return + d_3_op_q_: Wrappers.Result + d_3_op_q_ = default__.ParseCommandLineOptions((d_1_parsedOptions_q_).value) + if (d_3_op_q_).is_Success: + d_4_op_: EsdkManifestOptions.ManifestOptions + d_4_op_ = (d_3_op_q_).value + source0_ = d_4_op_ + with _dafny.label("match0"): + if True: + if source0_.is_Decrypt: + d_5_result_: Wrappers.Result + out0_: Wrappers.Result + out0_ = EsdkTestManifests.default__.StartDecryptVectors(d_4_op_) + d_5_result_ = out0_ + if (d_5_result_).is_Failure: + _dafny.print(_dafny.string_of((d_5_result_).error)) + if not((d_5_result_).is_Success): + raise _dafny.HaltException("dafny/TestVectors/src/Index.dfy(59,10): " + _dafny.string_of(_dafny.Seq("expectation violation"))) + raise _dafny.Break("match0") + if True: + if source0_.is_Encrypt: + d_6_result_: Wrappers.Result + out1_: Wrappers.Result + out1_ = EsdkTestManifests.default__.StartEncryptVectors(d_4_op_) + d_6_result_ = out1_ + if (d_6_result_).is_Failure: + _dafny.print(_dafny.string_of((d_6_result_).error)) + if not((d_6_result_).is_Success): + raise _dafny.HaltException("dafny/TestVectors/src/Index.dfy(65,10): " + _dafny.string_of(_dafny.Seq("expectation violation"))) + raise _dafny.Break("match0") + if True: + d_7_result_: Wrappers.Result + out2_: Wrappers.Result + out2_ = WriteVectors.default__.WriteTestVectors(d_4_op_) + d_7_result_ = out2_ + if (d_7_result_).is_Failure: + _dafny.print(_dafny.string_of((d_7_result_).error)) + if not((d_7_result_).is_Success): + raise _dafny.HaltException("dafny/TestVectors/src/Index.dfy(71,10): " + _dafny.string_of(_dafny.Seq("expectation violation"))) + pass + elif True: + _dafny.print(_dafny.string_of(((d_3_op_q_).error) + (_dafny.Seq("\n")))) + _dafny.print(_dafny.string_of(_dafny.Seq("help\n"))) + elif True: + _dafny.print(_dafny.string_of(((d_1_parsedOptions_q_).error) + (_dafny.Seq("\n")))) + + @staticmethod + def ParseCommandLineOptions(parsedOptions): + d_0_valueOrError0_ = Wrappers.default__.Need(((parsedOptions).subcommand).is_Some, _dafny.Seq("Must supply subcommand\n")) + if (d_0_valueOrError0_).IsFailure(): + return (d_0_valueOrError0_).PropagateFailure() + elif True: + source0_ = (((parsedOptions).subcommand).value).command + if True: + if (source0_) == (_dafny.Seq("decrypt")): + return default__.ParseDecryptCmd((((parsedOptions).subcommand).value).params) + if True: + if (source0_) == (_dafny.Seq("encrypt")): + return default__.ParseEncryptCmd((((parsedOptions).subcommand).value).params) + if True: + if (source0_) == (_dafny.Seq("encrypt-manifest")): + return default__.ParseEncryptManifestCmd((((parsedOptions).subcommand).value).params) + if True: + return Wrappers.Result_Failure(_dafny.Seq("Received unknown subcommand")) + + @staticmethod + def ParseDecryptCmd(params): + d_0_manifestPath_q_ = GetOpt.default__.OptValue(params, _dafny.Seq("manifest-path")) + d_1_testName_q_ = GetOpt.default__.OptValue(params, _dafny.Seq("test-name")) + d_2_manifestFileName_q_ = GetOpt.default__.OptValue(params, _dafny.Seq("manifest-name")) + d_3_manifestPath_ = ((d_0_manifestPath_q_).value if (d_0_manifestPath_q_).is_Some else _dafny.Seq(".")) + d_4_valueOrError0_ = Wrappers.default__.Need((0) < (len(d_3_manifestPath_)), _dafny.Seq("Invalid manifest path length\n")) + if (d_4_valueOrError0_).IsFailure(): + return (d_4_valueOrError0_).PropagateFailure() + elif True: + d_5_valueOrError1_ = Wrappers.default__.Need((d_2_manifestFileName_q_).is_Some, _dafny.Seq("Must supply manifest file name")) + if (d_5_valueOrError1_).IsFailure(): + return (d_5_valueOrError1_).PropagateFailure() + elif True: + d_6_manifestFileName_ = (d_2_manifestFileName_q_).value + return Wrappers.Result_Success(EsdkManifestOptions.ManifestOptions_Decrypt((d_3_manifestPath_ if (Seq.default__.Last(d_3_manifestPath_)) == ('/') else (d_3_manifestPath_) + (_dafny.Seq("/"))), d_6_manifestFileName_, (d_1_testName_q_ if (d_1_testName_q_).is_Some else Wrappers.Option_None()))) + + @staticmethod + def ParseEncryptCmd(params): + d_0_manifestPath_q_ = GetOpt.default__.OptValue(params, _dafny.Seq("manifest-path")) + d_1_manifestName_q_ = GetOpt.default__.OptValue(params, _dafny.Seq("manifest")) + d_2_decryptManifestPath_q_ = GetOpt.default__.OptValue(params, _dafny.Seq("decrypt-manifest-path")) + d_3_testName_q_ = GetOpt.default__.OptValue(params, _dafny.Seq("test-name")) + d_4_manifestPath_ = ((d_0_manifestPath_q_).value if (d_0_manifestPath_q_).is_Some else _dafny.Seq(".")) + d_5_manifestName_ = ((d_1_manifestName_q_).value if (d_1_manifestName_q_).is_Some else _dafny.Seq("encrypt-manifest.json")) + d_6_decryptManifestPath_ = ((d_2_decryptManifestPath_q_).value if (d_2_decryptManifestPath_q_).is_Some else _dafny.Seq(".")) + d_7_valueOrError0_ = Wrappers.default__.Need(((0) < (len(d_4_manifestPath_))) and ((0) < (len(d_6_decryptManifestPath_))), _dafny.Seq("Invalid manifest or decrypt manifest path length\n")) + if (d_7_valueOrError0_).IsFailure(): + return (d_7_valueOrError0_).PropagateFailure() + elif True: + return Wrappers.Result_Success(EsdkManifestOptions.ManifestOptions_Encrypt((d_4_manifestPath_ if (Seq.default__.Last(d_4_manifestPath_)) == ('/') else (d_4_manifestPath_) + (_dafny.Seq("/"))), d_5_manifestName_, (d_6_decryptManifestPath_ if (Seq.default__.Last(d_6_decryptManifestPath_)) == ('/') else (d_6_decryptManifestPath_) + (_dafny.Seq("/"))), (d_3_testName_q_ if (d_3_testName_q_).is_Some else Wrappers.Option_None()))) + + @staticmethod + def ParseEncryptManifestCmd(params): + d_0_encryptManifestOutput_q_ = GetOpt.default__.OptValue(params, _dafny.Seq("encrypt-manifest-output")) + d_1_encryptManifestOutput_ = ((d_0_encryptManifestOutput_q_).value if (d_0_encryptManifestOutput_q_).is_Some else _dafny.Seq(".")) + d_2_valueOrError0_ = Wrappers.default__.Need((0) < (len(d_1_encryptManifestOutput_)), _dafny.Seq("Invalid encrypt manifest output length")) + if (d_2_valueOrError0_).IsFailure(): + return (d_2_valueOrError0_).PropagateFailure() + elif True: + return Wrappers.Result_Success(EsdkManifestOptions.ManifestOptions_EncryptManifest((d_1_encryptManifestOutput_ if (Seq.default__.Last(d_1_encryptManifestOutput_)) == ('/') else (d_1_encryptManifestOutput_) + (_dafny.Seq("/"))), 5)) + diff --git a/TestVectors/runtimes/python/src/internaldafny/generated/WriteEsdkJsonManifests.py b/TestVectors/runtimes/python/src/internaldafny/generated/WriteEsdkJsonManifests.py new file mode 100644 index 000000000..6a65a3f66 --- /dev/null +++ b/TestVectors/runtimes/python/src/internaldafny/generated/WriteEsdkJsonManifests.py @@ -0,0 +1,369 @@ +import sys +from typing import Callable, Any, TypeVar, NamedTuple +from math import floor +from itertools import count + +import .internaldafny.generated.module_ as module_ +import _dafny as _dafny +import System_ as System_ +import Wrappers as Wrappers +import BoundedInts as BoundedInts +import StandardLibrary_UInt as StandardLibrary_UInt +import StandardLibrary_Sequence as StandardLibrary_Sequence +import StandardLibrary_String as StandardLibrary_String +import StandardLibrary as StandardLibrary +import UTF8 as UTF8 +import AwsCryptographyPrimitivesTypes as AwsCryptographyPrimitivesTypes +import ExternRandom as ExternRandom +import Random as Random +import AESEncryption as AESEncryption +import ExternDigest as ExternDigest +import Digest as Digest +import HMAC as HMAC +import WrappedHMAC as WrappedHMAC +import HKDF as HKDF +import WrappedHKDF as WrappedHKDF +import Signature as Signature +import KdfCtr as KdfCtr +import RSAEncryption as RSAEncryption +import ECDH as ECDH +import AwsCryptographyPrimitivesOperations as AwsCryptographyPrimitivesOperations +import AtomicPrimitives as AtomicPrimitives +import ComAmazonawsDynamodbTypes as ComAmazonawsDynamodbTypes +import ComAmazonawsKmsTypes as ComAmazonawsKmsTypes +import AwsCryptographyKeyStoreTypes as AwsCryptographyKeyStoreTypes +import AwsCryptographyMaterialProvidersTypes as AwsCryptographyMaterialProvidersTypes +import Base64 as Base64 +import AlgorithmSuites as AlgorithmSuites +import Materials as Materials +import Keyring as Keyring +import Relations as Relations +import Seq_MergeSort as Seq_MergeSort +import Math as Math +import Seq as Seq +import MultiKeyring as MultiKeyring +import AwsArnParsing as AwsArnParsing +import AwsKmsMrkAreUnique as AwsKmsMrkAreUnique +import Actions as Actions +import AwsKmsMrkMatchForDecrypt as AwsKmsMrkMatchForDecrypt +import AwsKmsUtils as AwsKmsUtils +import Constants as Constants +import UUID as UUID +import MaterialWrapping as MaterialWrapping +import SortedSets as SortedSets +import CanonicalEncryptionContext as CanonicalEncryptionContext +import IntermediateKeyWrapping as IntermediateKeyWrapping +import EdkWrapping as EdkWrapping +import ErrorMessages as ErrorMessages +import AwsKmsKeyring as AwsKmsKeyring +import StrictMultiKeyring as StrictMultiKeyring +import AwsKmsDiscoveryKeyring as AwsKmsDiscoveryKeyring +import Com_Amazonaws_Kms as Com_Amazonaws_Kms +import Com_Amazonaws_Dynamodb as Com_Amazonaws_Dynamodb +import DiscoveryMultiKeyring as DiscoveryMultiKeyring +import AwsKmsMrkDiscoveryKeyring as AwsKmsMrkDiscoveryKeyring +import MrkAwareDiscoveryMultiKeyring as MrkAwareDiscoveryMultiKeyring +import AwsKmsMrkKeyring as AwsKmsMrkKeyring +import MrkAwareStrictMultiKeyring as MrkAwareStrictMultiKeyring +import DafnyLibraries as DafnyLibraries +import Time as Time +import LocalCMC as LocalCMC +import SynchronizedLocalCMC as SynchronizedLocalCMC +import StormTracker as StormTracker +import StormTrackingCMC as StormTrackingCMC +import CacheConstants as CacheConstants +import AwsKmsHierarchicalKeyring as AwsKmsHierarchicalKeyring +import AwsKmsRsaKeyring as AwsKmsRsaKeyring +import EcdhEdkWrapping as EcdhEdkWrapping +import RawECDHKeyring as RawECDHKeyring +import AwsKmsEcdhKeyring as AwsKmsEcdhKeyring +import RawAESKeyring as RawAESKeyring +import RawRSAKeyring as RawRSAKeyring +import CMM as CMM +import Defaults as Defaults +import Commitment as Commitment +import DefaultCMM as DefaultCMM +import DefaultClientSupplier as DefaultClientSupplier +import Utils as Utils +import RequiredEncryptionContextCMM as RequiredEncryptionContextCMM +import AwsCryptographyMaterialProvidersOperations as AwsCryptographyMaterialProvidersOperations +import MaterialProviders as MaterialProviders +import KeyStoreErrorMessages as KeyStoreErrorMessages +import KmsArn as KmsArn +import Structure as Structure +import KMSKeystoreOperations as KMSKeystoreOperations +import DDBKeystoreOperations as DDBKeystoreOperations +import CreateKeys as CreateKeys +import CreateKeyStoreTable as CreateKeyStoreTable +import GetKeys as GetKeys +import AwsCryptographyKeyStoreOperations as AwsCryptographyKeyStoreOperations +import KeyStore as KeyStore +import AwsCryptographyMaterialProvidersTestVectorKeysTypes as AwsCryptographyMaterialProvidersTestVectorKeysTypes +import JSON_Utils_Views_Core as JSON_Utils_Views_Core +import JSON_Utils_Views_Writers as JSON_Utils_Views_Writers +import JSON_Utils_Lexers_Core as JSON_Utils_Lexers_Core +import JSON_Utils_Lexers_Strings as JSON_Utils_Lexers_Strings +import JSON_Utils_Cursors as JSON_Utils_Cursors +import JSON_Utils_Parsers as JSON_Utils_Parsers +import GeneralInternals as GeneralInternals +import MulInternalsNonlinear as MulInternalsNonlinear +import MulInternals as MulInternals +import Mul as Mul +import ModInternalsNonlinear as ModInternalsNonlinear +import DivInternalsNonlinear as DivInternalsNonlinear +import ModInternals as ModInternals +import DivInternals as DivInternals +import DivMod as DivMod +import Power as Power +import Logarithm as Logarithm +import JSON_Utils_Str_CharStrConversion as JSON_Utils_Str_CharStrConversion +import JSON_Utils_Str_CharStrEscaping as JSON_Utils_Str_CharStrEscaping +import JSON_Utils_Str as JSON_Utils_Str +import JSON_Utils_Seq as JSON_Utils_Seq +import JSON_Utils_Vectors as JSON_Utils_Vectors +import JSON_Errors as JSON_Errors +import JSON_Values as JSON_Values +import Unicode as Unicode +import Functions as Functions +import Utf8EncodingForm as Utf8EncodingForm +import Utf16EncodingForm as Utf16EncodingForm +import UnicodeStrings as UnicodeStrings +import JSON_Spec as JSON_Spec +import JSON_Grammar as JSON_Grammar +import JSON_Serializer_ByteStrConversion as JSON_Serializer_ByteStrConversion +import JSON_Serializer as JSON_Serializer +import JSON_Deserializer_Uint16StrConversion as JSON_Deserializer_Uint16StrConversion +import JSON_Deserializer_ByteStrConversion as JSON_Deserializer_ByteStrConversion +import JSON_Deserializer as JSON_Deserializer +import JSON_ConcreteSyntax_Spec as JSON_ConcreteSyntax_Spec +import JSON_ConcreteSyntax_SpecProperties as JSON_ConcreteSyntax_SpecProperties +import JSON_ZeroCopy_Serializer as JSON_ZeroCopy_Serializer +import JSON_ZeroCopy_Deserializer_Core as JSON_ZeroCopy_Deserializer_Core +import JSON_ZeroCopy_Deserializer_Strings as JSON_ZeroCopy_Deserializer_Strings +import JSON_ZeroCopy_Deserializer_Numbers as JSON_ZeroCopy_Deserializer_Numbers +import JSON_ZeroCopy_Deserializer_ObjectParams as JSON_ZeroCopy_Deserializer_ObjectParams +import JSON_ZeroCopy_Deserializer_Objects as JSON_ZeroCopy_Deserializer_Objects +import JSON_ZeroCopy_Deserializer_ArrayParams as JSON_ZeroCopy_Deserializer_ArrayParams +import JSON_ZeroCopy_Deserializer_Arrays as JSON_ZeroCopy_Deserializer_Arrays +import JSON_ZeroCopy_Deserializer_Constants as JSON_ZeroCopy_Deserializer_Constants +import JSON_ZeroCopy_Deserializer_Values as JSON_ZeroCopy_Deserializer_Values +import JSON_ZeroCopy_Deserializer_API as JSON_ZeroCopy_Deserializer_API +import JSON_ZeroCopy_Deserializer as JSON_ZeroCopy_Deserializer +import JSON_ZeroCopy_API as JSON_ZeroCopy_API +import JSON_API as JSON_API +import JSONHelpers as JSONHelpers +import KeyDescription as KeyDescription +import HexStrings as HexStrings +import KeyMaterial as KeyMaterial +import CreateStaticKeyrings as CreateStaticKeyrings +import CreateStaticKeyStores as CreateStaticKeyStores +import KeyringFromKeyDescription as KeyringFromKeyDescription +import CmmFromKeyDescription as CmmFromKeyDescription +import WrappedMaterialProviders as WrappedMaterialProviders +import KeysVectorOperations as KeysVectorOperations +import FileIO as FileIO +import KeyVectors as KeyVectors +import AwsCryptographyEncryptionSdkTypes as AwsCryptographyEncryptionSdkTypes +import Streams as Streams +import SerializableTypes as SerializableTypes +import SerializeFunctions as SerializeFunctions +import EncryptionContext as EncryptionContext +import HeaderTypes as HeaderTypes +import SharedHeaderFunctions as SharedHeaderFunctions +import EncryptedDataKeys as EncryptedDataKeys +import V1HeaderBody as V1HeaderBody +import V2HeaderBody as V2HeaderBody +import HeaderAuth as HeaderAuth +import Header as Header +import Frames as Frames +import MessageBody as MessageBody +import KeyDerivation as KeyDerivation +import EncryptDecryptHelpers as EncryptDecryptHelpers +import AwsEncryptionSdkOperations as AwsEncryptionSdkOperations +import EncryptionSdk as EncryptionSdk +import MplManifestOptions as MplManifestOptions +import GetOpt as GetOpt +import AllAlgorithmSuites as AllAlgorithmSuites +import TestVectors as TestVectors +import AllHierarchy as AllHierarchy +import AllKms as AllKms +import AllKmsMrkAware as AllKmsMrkAware +import AllKmsMrkAwareDiscovery as AllKmsMrkAwareDiscovery +import AllKmsRsa as AllKmsRsa +import AllKmsEcdh as AllKmsEcdh +import AllRawAES as AllRawAES +import AllRawRSA as AllRawRSA +import AllRawECDH as AllRawECDH +import AllDefaultCmm as AllDefaultCmm +import AllRequiredEncryptionContextCmm as AllRequiredEncryptionContextCmm +import AllMulti as AllMulti +import WriteJsonManifests as WriteJsonManifests +import CompleteVectors as CompleteVectors +import ParseJsonManifests as ParseJsonManifests +import TestManifests as TestManifests +import WrappedMaterialProvidersMain as WrappedMaterialProvidersMain +import AesKdfCtr as AesKdfCtr +import StandardLibraryInterop as StandardLibraryInterop +import Sorting as Sorting +import FloatCompare as FloatCompare +import ConcurrentCall as ConcurrentCall +import Base64Lemmas as Base64Lemmas +import .internaldafny.generated.WrappedESDK as WrappedESDK +import .internaldafny.generated.EsdkManifestOptions as EsdkManifestOptions +import .internaldafny.generated.EsdkTestVectors as EsdkTestVectors +import .internaldafny.generated.AllEsdkV4NoReqEc as AllEsdkV4NoReqEc +import .internaldafny.generated.AllEsdkV4WithReqEc as AllEsdkV4WithReqEc + +# Module: WriteEsdkJsonManifests + +class default__: + def __init__(self): + pass + + @staticmethod + def EncryptionContextKeysToJson(keys): + if (keys).is_Some: + def lambda0_(d_1_bytes_): + def iife0_(_pat_let0_0): + def iife1_(d_2_valueOrError1_): + def iife2_(_pat_let1_0): + def iife3_(d_3_key_): + return Wrappers.Result_Success(JSON_Values.JSON_String(d_3_key_)) + return iife3_(_pat_let1_0) + return ((d_2_valueOrError1_).PropagateFailure() if (d_2_valueOrError1_).IsFailure() else iife2_((d_2_valueOrError1_).Extract())) + return iife1_(_pat_let0_0) + return iife0_(UTF8.default__.Decode(d_1_bytes_)) + + d_0_valueOrError0_ = Seq.default__.MapWithResult(lambda0_, (keys).value) + if (d_0_valueOrError0_).IsFailure(): + return (d_0_valueOrError0_).PropagateFailure() + elif True: + d_4_tmp_ = (d_0_valueOrError0_).Extract() + return Wrappers.Result_Success(_dafny.Seq([(_dafny.Seq("requiredEncryptionContextKeys"), JSON_Values.JSON_Array(d_4_tmp_))])) + elif True: + return Wrappers.Result_Success(_dafny.Seq([])) + + @staticmethod + def EncryptionContextToJson(key, m): + def lambda0_(d_1_a_, d_2_b_): + return (d_1_a_) < (d_2_b_) + + d_0_keys_ = SortedSets.default__.SetToOrderedSequence2((m).keys, lambda0_) + def lambda1_(d_4_m_): + def lambda2_(d_5_k_): + def iife0_(_pat_let2_0): + def iife1_(d_6_valueOrError1_): + def iife2_(_pat_let3_0): + def iife3_(d_7_key_): + def iife4_(_pat_let4_0): + def iife5_(d_8_valueOrError2_): + def iife6_(_pat_let5_0): + def iife7_(d_9_value_): + return Wrappers.Result_Success((d_7_key_, JSON_Values.JSON_String(d_9_value_))) + return iife7_(_pat_let5_0) + return ((d_8_valueOrError2_).PropagateFailure() if (d_8_valueOrError2_).IsFailure() else iife6_((d_8_valueOrError2_).Extract())) + return iife5_(_pat_let4_0) + return iife4_(UTF8.default__.Decode((d_4_m_)[d_5_k_])) + return iife3_(_pat_let3_0) + return ((d_6_valueOrError1_).PropagateFailure() if (d_6_valueOrError1_).IsFailure() else iife2_((d_6_valueOrError1_).Extract())) + return iife1_(_pat_let2_0) + return iife0_(UTF8.default__.Decode(d_5_k_)) + + return lambda2_ + + d_3_valueOrError0_ = Seq.default__.MapWithResult(lambda1_(m), d_0_keys_) + if (d_3_valueOrError0_).IsFailure(): + return (d_3_valueOrError0_).PropagateFailure() + elif True: + d_10_pairsBytes_ = (d_3_valueOrError0_).Extract() + return Wrappers.Result_Success(_dafny.Seq([(key, JSON_Values.JSON_Object(d_10_pairsBytes_))])) + + @staticmethod + def printJson(j): + hresult_: tuple = () + _dafny.print(_dafny.string_of(j)) + _dafny.print(_dafny.string_of(_dafny.Seq("\n"))) + _dafny.print(_dafny.string_of(_dafny.Seq("\n"))) + hresult_ = () + return hresult_ + return hresult_ + + @staticmethod + def EncryptTestVectorToJson(test): + d_0_valueOrError0_ = Wrappers.default__.Need((((test).algorithmSuiteId).is_Some) and (((test).frameLength).is_Some), _dafny.Seq("test is missing algorithmSuite ID, or frameLength")) + if (d_0_valueOrError0_).IsFailure(): + return (d_0_valueOrError0_).PropagateFailure() + elif True: + d_1_id_ = AllAlgorithmSuites.default__.ToHex(((test).algorithmSuiteId).value) + d_2_valueOrError1_ = (default__.EncryptionContextToJson(_dafny.Seq("encryption-context"), ((test).encryptionContext).value) if ((test).encryptionContext).is_Some else default__.EncryptionContextToJson(_dafny.Seq("encryption-context"), _dafny.Map({}))) + if (d_2_valueOrError1_).IsFailure(): + return (d_2_valueOrError1_).PropagateFailure() + elif True: + d_3_encryptionContext_ = (d_2_valueOrError1_).Extract() + d_4_valueOrError2_ = Wrappers.default__.Need((len(d_3_encryptionContext_)) == (1), _dafny.Seq("Error parsing encryption context")) + if (d_4_valueOrError2_).IsFailure(): + return (d_4_valueOrError2_).PropagateFailure() + elif True: + d_5_valueOrError3_ = (default__.EncryptionContextToJson(_dafny.Seq("reproduced-encryption-context"), ((test).reproducedEncryptionContext).value) if ((test).reproducedEncryptionContext).is_Some else default__.EncryptionContextToJson(_dafny.Seq("reproduced-encryption-context"), _dafny.Map({}))) + if (d_5_valueOrError3_).IsFailure(): + return (d_5_valueOrError3_).PropagateFailure() + elif True: + d_6_reproducedEncryptionContext_ = (d_5_valueOrError3_).Extract() + d_7_optionalValues_ = (d_3_encryptionContext_) + (d_6_reproducedEncryptionContext_) + source0_ = test + if True: + if source0_.is_PositiveEncryptTestVector: + d_8_valueOrError4_ = KeyDescription.default__.ToJson((test).encryptDescriptions, 3) + if (d_8_valueOrError4_).IsFailure(): + return (d_8_valueOrError4_).PropagateFailure() + elif True: + d_9_encrypt_ = (d_8_valueOrError4_).Extract() + d_10_valueOrError5_ = KeyDescription.default__.ToJson((test).decryptDescriptions, 3) + if (d_10_valueOrError5_).IsFailure(): + return (d_10_valueOrError5_).PropagateFailure() + elif True: + d_11_decrypt_ = (d_10_valueOrError5_).Extract() + d_12_scenario_ = JSON_Values.JSON_Object((_dafny.Seq([(_dafny.Seq("type"), JSON_Values.JSON_String(_dafny.Seq("positive-esdk"))), (_dafny.Seq("plaintext"), JSON_Values.JSON_String(_dafny.Seq("small"))), (_dafny.Seq("description"), JSON_Values.JSON_String((test).description)), (_dafny.Seq("algorithmSuiteId"), JSON_Values.JSON_String(d_1_id_)), (_dafny.Seq("frame-size"), JSON_Values.JSON_Number(JSON_Values.default__.Int(((test).frameLength).value))), (_dafny.Seq("encryptKeyDescription"), d_9_encrypt_), (_dafny.Seq("decryptKeyDescription"), d_11_decrypt_)])) + (d_7_optionalValues_)) + return Wrappers.Result_Success(JSON_Values.JSON_Object(_dafny.Seq([(_dafny.Seq("encryption-scenario"), d_12_scenario_)]))) + if True: + return Wrappers.Result_Failure(_dafny.Seq("Only Positive Tests supported :(")) + + @staticmethod + def OptionalBytes(key, secret): + if (secret).is_Some: + d_0_base64_ = Base64.default__.Encode((secret).value) + return _dafny.Seq([(key, JSON_Values.JSON_String(d_0_base64_))]) + elif True: + return _dafny.Seq([]) + + @staticmethod + def DecryptTestVectorToJson(test): + d_0_valueOrError0_ = Wrappers.default__.Need((((test).algorithmSuiteId).is_Some) and (((test).frameLength).is_Some), _dafny.Seq("test is missing algorithmSuite ID, or frameLength")) + if (d_0_valueOrError0_).IsFailure(): + return (d_0_valueOrError0_).PropagateFailure() + elif True: + d_1_id_ = AllAlgorithmSuites.default__.ToHex(((test).algorithmSuiteId).value) + d_2_description_ = (((test).description) + (_dafny.Seq(" "))) + (d_1_id_) + d_3_valueOrError1_ = (default__.EncryptionContextToJson(_dafny.Seq("reproduced-encryption-context"), ((test).reproducedEncryptionContext).value) if ((test).reproducedEncryptionContext).is_Some else default__.EncryptionContextToJson(_dafny.Seq("reproduced-encryption-context"), _dafny.Map({}))) + if (d_3_valueOrError1_).IsFailure(): + return (d_3_valueOrError1_).PropagateFailure() + elif True: + d_4_reproducedEncryptionContext_ = (d_3_valueOrError1_).Extract() + d_5_valueOrError2_ = Wrappers.default__.Need((len(d_4_reproducedEncryptionContext_)) == (1), _dafny.Seq("Error parsing encryption context")) + if (d_5_valueOrError2_).IsFailure(): + return (d_5_valueOrError2_).PropagateFailure() + elif True: + d_6_optionalValues_ = d_4_reproducedEncryptionContext_ + source0_ = test + if True: + if source0_.is_PositiveDecryptTestVector: + d_7_valueOrError3_ = KeyDescription.default__.ToJson((test).decryptDescriptions, 3) + if (d_7_valueOrError3_).IsFailure(): + return (d_7_valueOrError3_).PropagateFailure() + elif True: + d_8_decrypt_ = (d_7_valueOrError3_).Extract() + d_9_scenario_ = JSON_Values.JSON_Object((_dafny.Seq([(_dafny.Seq("type"), JSON_Values.JSON_String(_dafny.Seq("positive-esdk"))), (_dafny.Seq("ciphertext"), JSON_Values.JSON_String((_dafny.Seq("file://ciphertexts/")) + ((test).id))), (_dafny.Seq("result"), JSON_Values.JSON_String((_dafny.Seq("file://")) + ((test).plaintextPath))), (_dafny.Seq("algorithmSuiteId"), JSON_Values.JSON_String(d_1_id_)), (_dafny.Seq("frame-size"), JSON_Values.JSON_Number(JSON_Values.default__.Int(((test).frameLength).value))), (_dafny.Seq("description"), JSON_Values.JSON_String((test).description)), (_dafny.Seq("decryptKeyDescription"), d_8_decrypt_)])) + (d_6_optionalValues_)) + return Wrappers.Result_Success(JSON_Values.JSON_Object(_dafny.Seq([(_dafny.Seq("decryption-scenario"), d_9_scenario_)]))) + if True: + return Wrappers.Result_Failure(_dafny.Seq("Only Positive Tests supported :(")) + diff --git a/TestVectors/runtimes/python/src/internaldafny/generated/WriteVectors.py b/TestVectors/runtimes/python/src/internaldafny/generated/WriteVectors.py new file mode 100644 index 000000000..28b22dbb9 --- /dev/null +++ b/TestVectors/runtimes/python/src/internaldafny/generated/WriteVectors.py @@ -0,0 +1,369 @@ +import sys +from typing import Callable, Any, TypeVar, NamedTuple +from math import floor +from itertools import count + +import .internaldafny.generated.module_ as module_ +import _dafny as _dafny +import System_ as System_ +import Wrappers as Wrappers +import BoundedInts as BoundedInts +import StandardLibrary_UInt as StandardLibrary_UInt +import StandardLibrary_Sequence as StandardLibrary_Sequence +import StandardLibrary_String as StandardLibrary_String +import StandardLibrary as StandardLibrary +import UTF8 as UTF8 +import AwsCryptographyPrimitivesTypes as AwsCryptographyPrimitivesTypes +import ExternRandom as ExternRandom +import Random as Random +import AESEncryption as AESEncryption +import ExternDigest as ExternDigest +import Digest as Digest +import HMAC as HMAC +import WrappedHMAC as WrappedHMAC +import HKDF as HKDF +import WrappedHKDF as WrappedHKDF +import Signature as Signature +import KdfCtr as KdfCtr +import RSAEncryption as RSAEncryption +import ECDH as ECDH +import AwsCryptographyPrimitivesOperations as AwsCryptographyPrimitivesOperations +import AtomicPrimitives as AtomicPrimitives +import ComAmazonawsDynamodbTypes as ComAmazonawsDynamodbTypes +import ComAmazonawsKmsTypes as ComAmazonawsKmsTypes +import AwsCryptographyKeyStoreTypes as AwsCryptographyKeyStoreTypes +import AwsCryptographyMaterialProvidersTypes as AwsCryptographyMaterialProvidersTypes +import Base64 as Base64 +import AlgorithmSuites as AlgorithmSuites +import Materials as Materials +import Keyring as Keyring +import Relations as Relations +import Seq_MergeSort as Seq_MergeSort +import Math as Math +import Seq as Seq +import MultiKeyring as MultiKeyring +import AwsArnParsing as AwsArnParsing +import AwsKmsMrkAreUnique as AwsKmsMrkAreUnique +import Actions as Actions +import AwsKmsMrkMatchForDecrypt as AwsKmsMrkMatchForDecrypt +import AwsKmsUtils as AwsKmsUtils +import Constants as Constants +import UUID as UUID +import MaterialWrapping as MaterialWrapping +import SortedSets as SortedSets +import CanonicalEncryptionContext as CanonicalEncryptionContext +import IntermediateKeyWrapping as IntermediateKeyWrapping +import EdkWrapping as EdkWrapping +import ErrorMessages as ErrorMessages +import AwsKmsKeyring as AwsKmsKeyring +import StrictMultiKeyring as StrictMultiKeyring +import AwsKmsDiscoveryKeyring as AwsKmsDiscoveryKeyring +import Com_Amazonaws_Kms as Com_Amazonaws_Kms +import Com_Amazonaws_Dynamodb as Com_Amazonaws_Dynamodb +import DiscoveryMultiKeyring as DiscoveryMultiKeyring +import AwsKmsMrkDiscoveryKeyring as AwsKmsMrkDiscoveryKeyring +import MrkAwareDiscoveryMultiKeyring as MrkAwareDiscoveryMultiKeyring +import AwsKmsMrkKeyring as AwsKmsMrkKeyring +import MrkAwareStrictMultiKeyring as MrkAwareStrictMultiKeyring +import DafnyLibraries as DafnyLibraries +import Time as Time +import LocalCMC as LocalCMC +import SynchronizedLocalCMC as SynchronizedLocalCMC +import StormTracker as StormTracker +import StormTrackingCMC as StormTrackingCMC +import CacheConstants as CacheConstants +import AwsKmsHierarchicalKeyring as AwsKmsHierarchicalKeyring +import AwsKmsRsaKeyring as AwsKmsRsaKeyring +import EcdhEdkWrapping as EcdhEdkWrapping +import RawECDHKeyring as RawECDHKeyring +import AwsKmsEcdhKeyring as AwsKmsEcdhKeyring +import RawAESKeyring as RawAESKeyring +import RawRSAKeyring as RawRSAKeyring +import CMM as CMM +import Defaults as Defaults +import Commitment as Commitment +import DefaultCMM as DefaultCMM +import DefaultClientSupplier as DefaultClientSupplier +import Utils as Utils +import RequiredEncryptionContextCMM as RequiredEncryptionContextCMM +import AwsCryptographyMaterialProvidersOperations as AwsCryptographyMaterialProvidersOperations +import MaterialProviders as MaterialProviders +import KeyStoreErrorMessages as KeyStoreErrorMessages +import KmsArn as KmsArn +import Structure as Structure +import KMSKeystoreOperations as KMSKeystoreOperations +import DDBKeystoreOperations as DDBKeystoreOperations +import CreateKeys as CreateKeys +import CreateKeyStoreTable as CreateKeyStoreTable +import GetKeys as GetKeys +import AwsCryptographyKeyStoreOperations as AwsCryptographyKeyStoreOperations +import KeyStore as KeyStore +import AwsCryptographyMaterialProvidersTestVectorKeysTypes as AwsCryptographyMaterialProvidersTestVectorKeysTypes +import JSON_Utils_Views_Core as JSON_Utils_Views_Core +import JSON_Utils_Views_Writers as JSON_Utils_Views_Writers +import JSON_Utils_Lexers_Core as JSON_Utils_Lexers_Core +import JSON_Utils_Lexers_Strings as JSON_Utils_Lexers_Strings +import JSON_Utils_Cursors as JSON_Utils_Cursors +import JSON_Utils_Parsers as JSON_Utils_Parsers +import GeneralInternals as GeneralInternals +import MulInternalsNonlinear as MulInternalsNonlinear +import MulInternals as MulInternals +import Mul as Mul +import ModInternalsNonlinear as ModInternalsNonlinear +import DivInternalsNonlinear as DivInternalsNonlinear +import ModInternals as ModInternals +import DivInternals as DivInternals +import DivMod as DivMod +import Power as Power +import Logarithm as Logarithm +import JSON_Utils_Str_CharStrConversion as JSON_Utils_Str_CharStrConversion +import JSON_Utils_Str_CharStrEscaping as JSON_Utils_Str_CharStrEscaping +import JSON_Utils_Str as JSON_Utils_Str +import JSON_Utils_Seq as JSON_Utils_Seq +import JSON_Utils_Vectors as JSON_Utils_Vectors +import JSON_Errors as JSON_Errors +import JSON_Values as JSON_Values +import Unicode as Unicode +import Functions as Functions +import Utf8EncodingForm as Utf8EncodingForm +import Utf16EncodingForm as Utf16EncodingForm +import UnicodeStrings as UnicodeStrings +import JSON_Spec as JSON_Spec +import JSON_Grammar as JSON_Grammar +import JSON_Serializer_ByteStrConversion as JSON_Serializer_ByteStrConversion +import JSON_Serializer as JSON_Serializer +import JSON_Deserializer_Uint16StrConversion as JSON_Deserializer_Uint16StrConversion +import JSON_Deserializer_ByteStrConversion as JSON_Deserializer_ByteStrConversion +import JSON_Deserializer as JSON_Deserializer +import JSON_ConcreteSyntax_Spec as JSON_ConcreteSyntax_Spec +import JSON_ConcreteSyntax_SpecProperties as JSON_ConcreteSyntax_SpecProperties +import JSON_ZeroCopy_Serializer as JSON_ZeroCopy_Serializer +import JSON_ZeroCopy_Deserializer_Core as JSON_ZeroCopy_Deserializer_Core +import JSON_ZeroCopy_Deserializer_Strings as JSON_ZeroCopy_Deserializer_Strings +import JSON_ZeroCopy_Deserializer_Numbers as JSON_ZeroCopy_Deserializer_Numbers +import JSON_ZeroCopy_Deserializer_ObjectParams as JSON_ZeroCopy_Deserializer_ObjectParams +import JSON_ZeroCopy_Deserializer_Objects as JSON_ZeroCopy_Deserializer_Objects +import JSON_ZeroCopy_Deserializer_ArrayParams as JSON_ZeroCopy_Deserializer_ArrayParams +import JSON_ZeroCopy_Deserializer_Arrays as JSON_ZeroCopy_Deserializer_Arrays +import JSON_ZeroCopy_Deserializer_Constants as JSON_ZeroCopy_Deserializer_Constants +import JSON_ZeroCopy_Deserializer_Values as JSON_ZeroCopy_Deserializer_Values +import JSON_ZeroCopy_Deserializer_API as JSON_ZeroCopy_Deserializer_API +import JSON_ZeroCopy_Deserializer as JSON_ZeroCopy_Deserializer +import JSON_ZeroCopy_API as JSON_ZeroCopy_API +import JSON_API as JSON_API +import JSONHelpers as JSONHelpers +import KeyDescription as KeyDescription +import HexStrings as HexStrings +import KeyMaterial as KeyMaterial +import CreateStaticKeyrings as CreateStaticKeyrings +import CreateStaticKeyStores as CreateStaticKeyStores +import KeyringFromKeyDescription as KeyringFromKeyDescription +import CmmFromKeyDescription as CmmFromKeyDescription +import WrappedMaterialProviders as WrappedMaterialProviders +import KeysVectorOperations as KeysVectorOperations +import FileIO as FileIO +import KeyVectors as KeyVectors +import AwsCryptographyEncryptionSdkTypes as AwsCryptographyEncryptionSdkTypes +import Streams as Streams +import SerializableTypes as SerializableTypes +import SerializeFunctions as SerializeFunctions +import EncryptionContext as EncryptionContext +import HeaderTypes as HeaderTypes +import SharedHeaderFunctions as SharedHeaderFunctions +import EncryptedDataKeys as EncryptedDataKeys +import V1HeaderBody as V1HeaderBody +import V2HeaderBody as V2HeaderBody +import HeaderAuth as HeaderAuth +import Header as Header +import Frames as Frames +import MessageBody as MessageBody +import KeyDerivation as KeyDerivation +import EncryptDecryptHelpers as EncryptDecryptHelpers +import AwsEncryptionSdkOperations as AwsEncryptionSdkOperations +import EncryptionSdk as EncryptionSdk +import MplManifestOptions as MplManifestOptions +import GetOpt as GetOpt +import AllAlgorithmSuites as AllAlgorithmSuites +import TestVectors as TestVectors +import AllHierarchy as AllHierarchy +import AllKms as AllKms +import AllKmsMrkAware as AllKmsMrkAware +import AllKmsMrkAwareDiscovery as AllKmsMrkAwareDiscovery +import AllKmsRsa as AllKmsRsa +import AllKmsEcdh as AllKmsEcdh +import AllRawAES as AllRawAES +import AllRawRSA as AllRawRSA +import AllRawECDH as AllRawECDH +import AllDefaultCmm as AllDefaultCmm +import AllRequiredEncryptionContextCmm as AllRequiredEncryptionContextCmm +import AllMulti as AllMulti +import WriteJsonManifests as WriteJsonManifests +import CompleteVectors as CompleteVectors +import ParseJsonManifests as ParseJsonManifests +import TestManifests as TestManifests +import WrappedMaterialProvidersMain as WrappedMaterialProvidersMain +import AesKdfCtr as AesKdfCtr +import StandardLibraryInterop as StandardLibraryInterop +import Sorting as Sorting +import FloatCompare as FloatCompare +import ConcurrentCall as ConcurrentCall +import Base64Lemmas as Base64Lemmas +import .internaldafny.generated.WrappedESDK as WrappedESDK +import .internaldafny.generated.EsdkManifestOptions as EsdkManifestOptions +import .internaldafny.generated.EsdkTestVectors as EsdkTestVectors +import .internaldafny.generated.AllEsdkV4NoReqEc as AllEsdkV4NoReqEc +import .internaldafny.generated.AllEsdkV4WithReqEc as AllEsdkV4WithReqEc +import .internaldafny.generated.WriteEsdkJsonManifests as WriteEsdkJsonManifests + +# Module: WriteVectors + +class default__: + def __init__(self): + pass + + @staticmethod + def GetCommitmentPolicyString(algorithmSuite): + source0_ = (algorithmSuite).id + if True: + if source0_.is_ESDK: + if ((algorithmSuite).commitment).is_None: + return _dafny.Seq("FORBID_ENCRYPT_ALLOW_DECRYPT") + elif True: + return _dafny.Seq("REQUIRE_ENCRYPT_REQUIRE_DECRYPT") + if True: + return _dafny.Seq("NOT SUPPORTED FOR UNSTRUCTURED ENCRYPTION") + + @staticmethod + def GetCommitmentPolicyType(commitmentPolicy): + if (commitmentPolicy) == (_dafny.Seq("FORBID_ENCRYPT_ALLOW_DECRYPT")): + return AwsCryptographyMaterialProvidersTypes.CommitmentPolicy_ESDK(AwsCryptographyMaterialProvidersTypes.ESDKCommitmentPolicy_FORBID__ENCRYPT__ALLOW__DECRYPT()) + elif True: + return AwsCryptographyMaterialProvidersTypes.CommitmentPolicy_ESDK(AwsCryptographyMaterialProvidersTypes.ESDKCommitmentPolicy_REQUIRE__ENCRYPT__REQUIRE__DECRYPT()) + + @staticmethod + def WriteTestVectors(op): + output: Wrappers.Result = Wrappers.Result.default(_dafny.defaults.tuple())() + d_0_version_: int + d_0_version_ = (op).version + d_1_valueOrError0_: Wrappers.Result = Wrappers.Result.default(_dafny.Set)() + d_1_valueOrError0_ = default__.getVersionTests(d_0_version_) + if (d_1_valueOrError0_).IsFailure(): + output = (d_1_valueOrError0_).PropagateFailure() + return output + d_2_allTests_: _dafny.Set + d_2_allTests_ = (d_1_valueOrError0_).Extract() + d_3_tests_: _dafny.Seq + out0_: _dafny.Seq + out0_ = SortedSets.default__.SetToSequence(d_2_allTests_) + d_3_tests_ = out0_ + d_4_sortedTests_: _dafny.Seq + d_4_sortedTests_ = Seq_MergeSort.default__.MergeSortBy(d_3_tests_, default__.DescriptionLessThan) + d_5_testsJSON_: _dafny.Seq + d_5_testsJSON_ = _dafny.Seq([]) + hi0_ = len(d_4_sortedTests_) + for d_6_i_ in range(0, hi0_): + d_7_valueOrError1_: Wrappers.Outcome = Wrappers.Outcome.default()() + d_7_valueOrError1_ = Wrappers.default__.Need((True) and ((((d_4_sortedTests_)[d_6_i_]).algorithmSuiteId).is_Some), _dafny.Seq("No algorithm suite defined in test")) + if (d_7_valueOrError1_).IsFailure(): + output = (d_7_valueOrError1_).PropagateFailure() + return output + d_8_id_: _dafny.Seq + d_8_id_ = AllAlgorithmSuites.default__.ToHex((((d_4_sortedTests_)[d_6_i_]).algorithmSuiteId).value) + d_9_valueOrError2_: Wrappers.Result = Wrappers.Result.default(_dafny.Seq)() + out1_: Wrappers.Result + out1_ = UUID.default__.GenerateUUID() + d_9_valueOrError2_ = out1_ + if not(not((d_9_valueOrError2_).IsFailure())): + raise _dafny.HaltException("dafny/TestVectors/src/WriteVectors.dfy(82,18): " + _dafny.string_of(d_9_valueOrError2_)) + d_10_uuid_: _dafny.Seq + d_10_uuid_ = (d_9_valueOrError2_).Extract() + d_11_valueOrError3_: Wrappers.Result = Wrappers.Result.default(JSON_Values.JSON.default())() + d_11_valueOrError3_ = WriteEsdkJsonManifests.default__.EncryptTestVectorToJson((d_4_sortedTests_)[d_6_i_]) + if (d_11_valueOrError3_).IsFailure(): + output = (d_11_valueOrError3_).PropagateFailure() + return output + d_12_test_: JSON_Values.JSON + d_12_test_ = (d_11_valueOrError3_).Extract() + d_5_testsJSON_ = (d_5_testsJSON_) + (_dafny.Seq([(d_10_uuid_, d_12_test_)])) + d_13_manifestJson_: JSON_Values.JSON + d_13_manifestJson_ = JSON_Values.JSON_Object(_dafny.Seq([(_dafny.Seq("type"), JSON_Values.JSON_String(_dafny.Seq("awses-encrypt"))), (_dafny.Seq("version"), JSON_Values.JSON_Number(JSON_Values.default__.Int(5)))])) + d_14_plaintexts_: JSON_Values.JSON + d_14_plaintexts_ = JSON_Values.JSON_Object(_dafny.Seq([(_dafny.Seq("small"), JSON_Values.JSON_Number(JSON_Values.default__.Int(10240)))])) + d_15_esdkEncryptManifests_: JSON_Values.JSON + d_15_esdkEncryptManifests_ = JSON_Values.JSON_Object(_dafny.Seq([(_dafny.Seq("manifest"), d_13_manifestJson_), (_dafny.Seq("keys"), JSON_Values.JSON_String(_dafny.Seq("file://keys.json"))), (_dafny.Seq("plaintexts"), d_14_plaintexts_), (_dafny.Seq("tests"), JSON_Values.JSON_Object(d_5_testsJSON_))])) + d_16_valueOrError4_: Wrappers.Result = Wrappers.Result.default(_dafny.Seq)() + d_16_valueOrError4_ = JSON_API.default__.Serialize(d_15_esdkEncryptManifests_) + if not(not((d_16_valueOrError4_).IsFailure())): + raise _dafny.HaltException("dafny/TestVectors/src/WriteVectors.dfy(102,36): " + _dafny.string_of(d_16_valueOrError4_)) + d_17_esdkEncryptManifestBytes_: _dafny.Seq + d_17_esdkEncryptManifestBytes_ = (d_16_valueOrError4_).Extract() + d_18_esdkEncryptManifestBv_: _dafny.Seq + d_18_esdkEncryptManifestBv_ = JSONHelpers.default__.BytesBv(d_17_esdkEncryptManifestBytes_) + d_19_valueOrError5_: Wrappers.Result = Wrappers.Result.default(_dafny.defaults.tuple())() + out2_: Wrappers.Result + out2_ = FileIO.default__.WriteBytesToFile(((op).encryptManifestOutput) + (_dafny.Seq("encrypt-manifest.json")), d_18_esdkEncryptManifestBv_) + d_19_valueOrError5_ = out2_ + if not(not((d_19_valueOrError5_).IsFailure())): + raise _dafny.HaltException("dafny/TestVectors/src/WriteVectors.dfy(105,13): " + _dafny.string_of(d_19_valueOrError5_)) + d_20___v2_: tuple + d_20___v2_ = (d_19_valueOrError5_).Extract() + output = Wrappers.Result_Success(()) + return output + + @staticmethod + def WriteDecryptManifest(op, keys, tests): + output: Wrappers.Result = Wrappers.Result.default(_dafny.defaults.tuple())() + d_0_testsJSON_: _dafny.Seq + d_0_testsJSON_ = _dafny.Seq([]) + hi0_ = len(tests) + for d_1_i_ in range(0, hi0_): + d_2_name_: _dafny.Seq + d_2_name_ = ((tests)[d_1_i_]).id + d_3_valueOrError0_: Wrappers.Result = Wrappers.Result.default(JSON_Values.JSON.default())() + d_3_valueOrError0_ = WriteEsdkJsonManifests.default__.DecryptTestVectorToJson((tests)[d_1_i_]) + if (d_3_valueOrError0_).IsFailure(): + output = (d_3_valueOrError0_).PropagateFailure() + return output + d_4_test_: JSON_Values.JSON + d_4_test_ = (d_3_valueOrError0_).Extract() + d_0_testsJSON_ = (d_0_testsJSON_) + (_dafny.Seq([(d_2_name_, d_4_test_)])) + d_5_manifestJson_: JSON_Values.JSON + d_5_manifestJson_ = JSON_Values.JSON_Object(_dafny.Seq([(_dafny.Seq("type"), JSON_Values.JSON_String(_dafny.Seq("awses-decrypt"))), (_dafny.Seq("version"), JSON_Values.JSON_Number(JSON_Values.default__.Int(3)))])) + d_6_esdkDecryptManifest_: JSON_Values.JSON + d_6_esdkDecryptManifest_ = JSON_Values.JSON_Object(_dafny.Seq([(_dafny.Seq("manifest"), d_5_manifestJson_), (_dafny.Seq("client"), JSON_Values.JSON_String(_dafny.Seq("aws-encryption-sdk-dafny"))), (_dafny.Seq("keys"), JSON_Values.JSON_String(_dafny.Seq("file://keys.json"))), (_dafny.Seq("tests"), JSON_Values.JSON_Object(d_0_testsJSON_))])) + d_7_valueOrError1_: Wrappers.Result = Wrappers.Result.default(_dafny.Seq)() + d_7_valueOrError1_ = JSON_API.default__.Serialize(d_6_esdkDecryptManifest_) + if not(not((d_7_valueOrError1_).IsFailure())): + raise _dafny.HaltException("dafny/TestVectors/src/WriteVectors.dfy(146,36): " + _dafny.string_of(d_7_valueOrError1_)) + d_8_esdkDecryptManifestBytes_: _dafny.Seq + d_8_esdkDecryptManifestBytes_ = (d_7_valueOrError1_).Extract() + d_9_esdkDecryptManifestBv_: _dafny.Seq + d_9_esdkDecryptManifestBv_ = JSONHelpers.default__.BytesBv(d_8_esdkDecryptManifestBytes_) + d_10_valueOrError2_: Wrappers.Result = Wrappers.Result.default(_dafny.defaults.tuple())() + out0_: Wrappers.Result + out0_ = FileIO.default__.WriteBytesToFile(((op).decryptManifestOutput) + (_dafny.Seq("decrypt-manifest.json")), d_9_esdkDecryptManifestBv_) + d_10_valueOrError2_ = out0_ + if not(not((d_10_valueOrError2_).IsFailure())): + raise _dafny.HaltException("dafny/TestVectors/src/WriteVectors.dfy(149,13): " + _dafny.string_of(d_10_valueOrError2_)) + d_11___v3_: tuple + d_11___v3_ = (d_10_valueOrError2_).Extract() + output = Wrappers.Result_Success(()) + return output + + @staticmethod + def getVersionTests(version): + source0_ = version + if True: + if (source0_) == (5): + return Wrappers.Result_Success((AllEsdkV4NoReqEc.default__.Tests) | (AllEsdkV4WithReqEc.default__.Tests)) + if True: + return Wrappers.Result_Failure(_dafny.Seq("Only version 4 of generate manifest is supported\n")) + + @staticmethod + def DescriptionLessThan(x, y): + return default__.Below((x).description, (y).description) + + @staticmethod + def Below(x, y): + return not ((len(x)) != (0)) or ((((len(y)) != (0)) and (((x)[0]) <= ((y)[0]))) and (not (((x)[0]) == ((y)[0])) or (default__.Below(_dafny.Seq((x)[1::]), _dafny.Seq((y)[1::]))))) + diff --git a/TestVectors/runtimes/python/src/internaldafny/generated/__main__.py b/TestVectors/runtimes/python/src/internaldafny/generated/__main__.py new file mode 100644 index 000000000..ac52f84fa --- /dev/null +++ b/TestVectors/runtimes/python/src/internaldafny/generated/__main__.py @@ -0,0 +1,15 @@ +# Dafny program the_program compiled into Python +import sys +from typing import Callable, Any, TypeVar, NamedTuple +from math import floor +from itertools import count + +import .internaldafny.generated.module_ as module_ +import _dafny as _dafny + +try: + dafnyArgs = [_dafny.Seq(a) for a in sys.argv] + module_.default__.Test____Main____(dafnyArgs) +except _dafny.HaltException as e: + _dafny.print("[Program halted] " + e.message + "\n") + sys.exit(1) diff --git a/TestVectors/runtimes/python/src/internaldafny/generated/dafny_src-py.dtr b/TestVectors/runtimes/python/src/internaldafny/generated/dafny_src-py.dtr new file mode 100644 index 000000000..55675106c --- /dev/null +++ b/TestVectors/runtimes/python/src/internaldafny/generated/dafny_src-py.dtr @@ -0,0 +1,35 @@ +file_format_version = "1.0" +dafny_version = "4.9.0.0" +[options_by_module.WrappedAbstractAwsCryptographyEncryptionSdkService] +legacy-module-names = false +python-module-name = ".internaldafny.generated" +[options_by_module.WrappedESDK] +legacy-module-names = false +python-module-name = ".internaldafny.generated" +[options_by_module.EsdkManifestOptions] +legacy-module-names = false +python-module-name = ".internaldafny.generated" +[options_by_module.EsdkTestVectors] +legacy-module-names = false +python-module-name = ".internaldafny.generated" +[options_by_module.AllEsdkV4NoReqEc] +legacy-module-names = false +python-module-name = ".internaldafny.generated" +[options_by_module.AllEsdkV4WithReqEc] +legacy-module-names = false +python-module-name = ".internaldafny.generated" +[options_by_module.WriteEsdkJsonManifests] +legacy-module-names = false +python-module-name = ".internaldafny.generated" +[options_by_module.WriteVectors] +legacy-module-names = false +python-module-name = ".internaldafny.generated" +[options_by_module.ParseEsdkJsonManifest] +legacy-module-names = false +python-module-name = ".internaldafny.generated" +[options_by_module.EsdkTestManifests] +legacy-module-names = false +python-module-name = ".internaldafny.generated" +[options_by_module.WrappedESDKMain] +legacy-module-names = false +python-module-name = ".internaldafny.generated" diff --git a/TestVectors/runtimes/python/src/internaldafny/generated/module_.py b/TestVectors/runtimes/python/src/internaldafny/generated/module_.py new file mode 100644 index 000000000..05f8d1a12 --- /dev/null +++ b/TestVectors/runtimes/python/src/internaldafny/generated/module_.py @@ -0,0 +1,234 @@ +import sys +from typing import Callable, Any, TypeVar, NamedTuple +from math import floor +from itertools import count + +import .internaldafny.generated.module_ as module_ +import _dafny as _dafny +import System_ as System_ +import Wrappers as Wrappers +import BoundedInts as BoundedInts +import StandardLibrary_UInt as StandardLibrary_UInt +import StandardLibrary_Sequence as StandardLibrary_Sequence +import StandardLibrary_String as StandardLibrary_String +import StandardLibrary as StandardLibrary +import UTF8 as UTF8 +import AwsCryptographyPrimitivesTypes as AwsCryptographyPrimitivesTypes +import ExternRandom as ExternRandom +import Random as Random +import AESEncryption as AESEncryption +import ExternDigest as ExternDigest +import Digest as Digest +import HMAC as HMAC +import WrappedHMAC as WrappedHMAC +import HKDF as HKDF +import WrappedHKDF as WrappedHKDF +import Signature as Signature +import KdfCtr as KdfCtr +import RSAEncryption as RSAEncryption +import ECDH as ECDH +import AwsCryptographyPrimitivesOperations as AwsCryptographyPrimitivesOperations +import AtomicPrimitives as AtomicPrimitives +import ComAmazonawsDynamodbTypes as ComAmazonawsDynamodbTypes +import ComAmazonawsKmsTypes as ComAmazonawsKmsTypes +import AwsCryptographyKeyStoreTypes as AwsCryptographyKeyStoreTypes +import AwsCryptographyMaterialProvidersTypes as AwsCryptographyMaterialProvidersTypes +import Base64 as Base64 +import AlgorithmSuites as AlgorithmSuites +import Materials as Materials +import Keyring as Keyring +import Relations as Relations +import Seq_MergeSort as Seq_MergeSort +import Math as Math +import Seq as Seq +import MultiKeyring as MultiKeyring +import AwsArnParsing as AwsArnParsing +import AwsKmsMrkAreUnique as AwsKmsMrkAreUnique +import Actions as Actions +import AwsKmsMrkMatchForDecrypt as AwsKmsMrkMatchForDecrypt +import AwsKmsUtils as AwsKmsUtils +import Constants as Constants +import UUID as UUID +import MaterialWrapping as MaterialWrapping +import SortedSets as SortedSets +import CanonicalEncryptionContext as CanonicalEncryptionContext +import IntermediateKeyWrapping as IntermediateKeyWrapping +import EdkWrapping as EdkWrapping +import ErrorMessages as ErrorMessages +import AwsKmsKeyring as AwsKmsKeyring +import StrictMultiKeyring as StrictMultiKeyring +import AwsKmsDiscoveryKeyring as AwsKmsDiscoveryKeyring +import Com_Amazonaws_Kms as Com_Amazonaws_Kms +import Com_Amazonaws_Dynamodb as Com_Amazonaws_Dynamodb +import DiscoveryMultiKeyring as DiscoveryMultiKeyring +import AwsKmsMrkDiscoveryKeyring as AwsKmsMrkDiscoveryKeyring +import MrkAwareDiscoveryMultiKeyring as MrkAwareDiscoveryMultiKeyring +import AwsKmsMrkKeyring as AwsKmsMrkKeyring +import MrkAwareStrictMultiKeyring as MrkAwareStrictMultiKeyring +import DafnyLibraries as DafnyLibraries +import Time as Time +import LocalCMC as LocalCMC +import SynchronizedLocalCMC as SynchronizedLocalCMC +import StormTracker as StormTracker +import StormTrackingCMC as StormTrackingCMC +import CacheConstants as CacheConstants +import AwsKmsHierarchicalKeyring as AwsKmsHierarchicalKeyring +import AwsKmsRsaKeyring as AwsKmsRsaKeyring +import EcdhEdkWrapping as EcdhEdkWrapping +import RawECDHKeyring as RawECDHKeyring +import AwsKmsEcdhKeyring as AwsKmsEcdhKeyring +import RawAESKeyring as RawAESKeyring +import RawRSAKeyring as RawRSAKeyring +import CMM as CMM +import Defaults as Defaults +import Commitment as Commitment +import DefaultCMM as DefaultCMM +import DefaultClientSupplier as DefaultClientSupplier +import Utils as Utils +import RequiredEncryptionContextCMM as RequiredEncryptionContextCMM +import AwsCryptographyMaterialProvidersOperations as AwsCryptographyMaterialProvidersOperations +import MaterialProviders as MaterialProviders +import KeyStoreErrorMessages as KeyStoreErrorMessages +import KmsArn as KmsArn +import Structure as Structure +import KMSKeystoreOperations as KMSKeystoreOperations +import DDBKeystoreOperations as DDBKeystoreOperations +import CreateKeys as CreateKeys +import CreateKeyStoreTable as CreateKeyStoreTable +import GetKeys as GetKeys +import AwsCryptographyKeyStoreOperations as AwsCryptographyKeyStoreOperations +import KeyStore as KeyStore +import AwsCryptographyMaterialProvidersTestVectorKeysTypes as AwsCryptographyMaterialProvidersTestVectorKeysTypes +import JSON_Utils_Views_Core as JSON_Utils_Views_Core +import JSON_Utils_Views_Writers as JSON_Utils_Views_Writers +import JSON_Utils_Lexers_Core as JSON_Utils_Lexers_Core +import JSON_Utils_Lexers_Strings as JSON_Utils_Lexers_Strings +import JSON_Utils_Cursors as JSON_Utils_Cursors +import JSON_Utils_Parsers as JSON_Utils_Parsers +import GeneralInternals as GeneralInternals +import MulInternalsNonlinear as MulInternalsNonlinear +import MulInternals as MulInternals +import Mul as Mul +import ModInternalsNonlinear as ModInternalsNonlinear +import DivInternalsNonlinear as DivInternalsNonlinear +import ModInternals as ModInternals +import DivInternals as DivInternals +import DivMod as DivMod +import Power as Power +import Logarithm as Logarithm +import JSON_Utils_Str_CharStrConversion as JSON_Utils_Str_CharStrConversion +import JSON_Utils_Str_CharStrEscaping as JSON_Utils_Str_CharStrEscaping +import JSON_Utils_Str as JSON_Utils_Str +import JSON_Utils_Seq as JSON_Utils_Seq +import JSON_Utils_Vectors as JSON_Utils_Vectors +import JSON_Errors as JSON_Errors +import JSON_Values as JSON_Values +import Unicode as Unicode +import Functions as Functions +import Utf8EncodingForm as Utf8EncodingForm +import Utf16EncodingForm as Utf16EncodingForm +import UnicodeStrings as UnicodeStrings +import JSON_Spec as JSON_Spec +import JSON_Grammar as JSON_Grammar +import JSON_Serializer_ByteStrConversion as JSON_Serializer_ByteStrConversion +import JSON_Serializer as JSON_Serializer +import JSON_Deserializer_Uint16StrConversion as JSON_Deserializer_Uint16StrConversion +import JSON_Deserializer_ByteStrConversion as JSON_Deserializer_ByteStrConversion +import JSON_Deserializer as JSON_Deserializer +import JSON_ConcreteSyntax_Spec as JSON_ConcreteSyntax_Spec +import JSON_ConcreteSyntax_SpecProperties as JSON_ConcreteSyntax_SpecProperties +import JSON_ZeroCopy_Serializer as JSON_ZeroCopy_Serializer +import JSON_ZeroCopy_Deserializer_Core as JSON_ZeroCopy_Deserializer_Core +import JSON_ZeroCopy_Deserializer_Strings as JSON_ZeroCopy_Deserializer_Strings +import JSON_ZeroCopy_Deserializer_Numbers as JSON_ZeroCopy_Deserializer_Numbers +import JSON_ZeroCopy_Deserializer_ObjectParams as JSON_ZeroCopy_Deserializer_ObjectParams +import JSON_ZeroCopy_Deserializer_Objects as JSON_ZeroCopy_Deserializer_Objects +import JSON_ZeroCopy_Deserializer_ArrayParams as JSON_ZeroCopy_Deserializer_ArrayParams +import JSON_ZeroCopy_Deserializer_Arrays as JSON_ZeroCopy_Deserializer_Arrays +import JSON_ZeroCopy_Deserializer_Constants as JSON_ZeroCopy_Deserializer_Constants +import JSON_ZeroCopy_Deserializer_Values as JSON_ZeroCopy_Deserializer_Values +import JSON_ZeroCopy_Deserializer_API as JSON_ZeroCopy_Deserializer_API +import JSON_ZeroCopy_Deserializer as JSON_ZeroCopy_Deserializer +import JSON_ZeroCopy_API as JSON_ZeroCopy_API +import JSON_API as JSON_API +import JSONHelpers as JSONHelpers +import KeyDescription as KeyDescription +import HexStrings as HexStrings +import KeyMaterial as KeyMaterial +import CreateStaticKeyrings as CreateStaticKeyrings +import CreateStaticKeyStores as CreateStaticKeyStores +import KeyringFromKeyDescription as KeyringFromKeyDescription +import CmmFromKeyDescription as CmmFromKeyDescription +import WrappedMaterialProviders as WrappedMaterialProviders +import KeysVectorOperations as KeysVectorOperations +import FileIO as FileIO +import KeyVectors as KeyVectors +import AwsCryptographyEncryptionSdkTypes as AwsCryptographyEncryptionSdkTypes +import Streams as Streams +import SerializableTypes as SerializableTypes +import SerializeFunctions as SerializeFunctions +import EncryptionContext as EncryptionContext +import HeaderTypes as HeaderTypes +import SharedHeaderFunctions as SharedHeaderFunctions +import EncryptedDataKeys as EncryptedDataKeys +import V1HeaderBody as V1HeaderBody +import V2HeaderBody as V2HeaderBody +import HeaderAuth as HeaderAuth +import Header as Header +import Frames as Frames +import MessageBody as MessageBody +import KeyDerivation as KeyDerivation +import EncryptDecryptHelpers as EncryptDecryptHelpers +import AwsEncryptionSdkOperations as AwsEncryptionSdkOperations +import EncryptionSdk as EncryptionSdk +import MplManifestOptions as MplManifestOptions +import GetOpt as GetOpt +import AllAlgorithmSuites as AllAlgorithmSuites +import TestVectors as TestVectors +import AllHierarchy as AllHierarchy +import AllKms as AllKms +import AllKmsMrkAware as AllKmsMrkAware +import AllKmsMrkAwareDiscovery as AllKmsMrkAwareDiscovery +import AllKmsRsa as AllKmsRsa +import AllKmsEcdh as AllKmsEcdh +import AllRawAES as AllRawAES +import AllRawRSA as AllRawRSA +import AllRawECDH as AllRawECDH +import AllDefaultCmm as AllDefaultCmm +import AllRequiredEncryptionContextCmm as AllRequiredEncryptionContextCmm +import AllMulti as AllMulti +import WriteJsonManifests as WriteJsonManifests +import CompleteVectors as CompleteVectors +import ParseJsonManifests as ParseJsonManifests +import TestManifests as TestManifests +import WrappedMaterialProvidersMain as WrappedMaterialProvidersMain +import AesKdfCtr as AesKdfCtr +import StandardLibraryInterop as StandardLibraryInterop +import Sorting as Sorting +import FloatCompare as FloatCompare +import ConcurrentCall as ConcurrentCall +import Base64Lemmas as Base64Lemmas +import .internaldafny.generated.WrappedESDK as WrappedESDK +import .internaldafny.generated.EsdkManifestOptions as EsdkManifestOptions +import .internaldafny.generated.EsdkTestVectors as EsdkTestVectors +import .internaldafny.generated.AllEsdkV4NoReqEc as AllEsdkV4NoReqEc +import .internaldafny.generated.AllEsdkV4WithReqEc as AllEsdkV4WithReqEc +import .internaldafny.generated.WriteEsdkJsonManifests as WriteEsdkJsonManifests +import .internaldafny.generated.WriteVectors as WriteVectors +import .internaldafny.generated.ParseEsdkJsonManifest as ParseEsdkJsonManifest +import .internaldafny.generated.EsdkTestManifests as EsdkTestManifests +import .internaldafny.generated.WrappedESDKMain as WrappedESDKMain + +# Module: module_ + +class default__: + def __init__(self): + pass + + @staticmethod + def Test____Main____(noArgsParameter__): + d_0_success_: bool + d_0_success_ = True + if not(d_0_success_): + raise _dafny.HaltException("(1,0): " + _dafny.string_of(_dafny.Seq("Test failures occurred: see above.\n"))) + diff --git a/TestVectors/runtimes/python/test/internaldafny/__init__.py b/TestVectors/runtimes/python/test/internaldafny/__init__.py new file mode 100644 index 000000000..f94fd12a2 --- /dev/null +++ b/TestVectors/runtimes/python/test/internaldafny/__init__.py @@ -0,0 +1,2 @@ +# Copyright Amazon.com Inc. or its affiliates. All Rights Reserved. +# SPDX-License-Identifier: Apache-2.0 diff --git a/TestVectors/runtimes/python/test/internaldafny/__pycache__/__init__.cpython-311.pyc b/TestVectors/runtimes/python/test/internaldafny/__pycache__/__init__.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..870d04f7cbf64b83a606ad1bea9f19257adb48ce GIT binary patch literal 218 zcmXv|OA5j;5KSzK2*q=_sJVc61UG&*E<#C0jZKr1q?DY*BZzn`FHq>NE2n7R;?0|R z^O$+2>4G5MaK7HLeuicQ{flmf;z1x!MF(f@f6>H;f1Lm@)yJ$@OoYb7fTEd|kzU bzA3G&HEi7!uMhwEB~qJEN?S6LOK|oDkk35& literal 0 HcmV?d00001 diff --git a/TestVectors/runtimes/python/test/internaldafny/__pycache__/__init__.cpython-312.pyc b/TestVectors/runtimes/python/test/internaldafny/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..9400f60078d734d05555fd90a8dd23c3d609a5d6 GIT binary patch literal 206 zcmZ8aOA5j;6ilpw2tA04nhS_WaHVcsgpfQnnjc9@$w@qecodJ}38cHOe8rsuk2mw) z4D+h%1wlOFc)sF(kK!Nw6fbvD$dYa!Bu-HEqi3*epCBe?T4|;7j&(lXf)Ns!=u!ht z#uBpju1V_FC~;Ua#dCM?U&KnM2AnQcl*Oo+jF z_X6=^Pb%@k!IOVQoAf~TMB<5C6K-7e%`QbsI5@lWX5M@IzJL2|WJE)-e)2b~y9tDT zE2h8Fr_EGwLlZkQAsoJLE73YVfsE3WQE&|tayU34QAB??yiz2=8D@S0h56wE5dV#-&9OR zTc~kKOxyMvlGG&$Ji;B{69I8NTDO@bg1xPC!6;d7#$L*+%w@t1Kot4YmKnri7lU2= ztfIvsNrT%qr07y&!j4m9B&ad6r2H9FrMg5M7Sue5${@A7TBF9TT5LLC!QFrf*R&%e zBeIY6o~ZcXC29qCWA~??DU@Rco@iFIBQ>u16RaQofwh^{*@p7Bsp)4$9w|VSaF~fz zma^zCz$r??J{|`GxKx-#4t|GVItb>HoEHkZdpOJ)hGTNqFiMFqf96}{K`RtWrHVpM z8u|;#gw*Z23@xt3`90r%Xpr0eCV9(@6t_A)9+>Z0xj++k9O zUe~}}HAEliQ6!3cY&2rLK%+wKU+aZJ^;MPAbs$^lAa%Qa*?SCHR2mDjhCw~cFv8q& zo!fvm84f@4o5mS8X`F)1lu(??z9Lvd@PLK+Gf|lB%QP^KvN1)Nlua3?);#X24ys{7 zoV4_99)x29br~?#Fy)&;EzGFDz@;G)8OSgyXAcSWhl(K}C%FePwjYWcz^cZ}UqE_E zjBziQ!Kofnq<}Eqg8DCgw5{klEMD80`!u)v`pe?y#qWHUfQTl*8;sr#Mc zY_~YuMq`I4xt;qs`hK)sxY>HzDU>^?(nXavsvMlxJnIyuJ7}hhX4+`x5Ea{lZ!d-M MogQR$kwmrq1$oSP>;M1& literal 0 HcmV?d00001 diff --git a/TestVectors/runtimes/python/test/internaldafny/__pycache__/test_dafny_wrapper.cpython-312-pytest-7.4.4.pyc b/TestVectors/runtimes/python/test/internaldafny/__pycache__/test_dafny_wrapper.cpython-312-pytest-7.4.4.pyc new file mode 100644 index 0000000000000000000000000000000000000000..15c03764e3dde217362d03528469e36a9ef3f668 GIT binary patch literal 1214 zcmb7Dy=xRf6rZ{8+a%_K5x}Kz{bPnvydo%Oi`@P@%_UqV~hG2Z*FPFA5 z2>nn_I`St*?--0tL{S4#OfxoaWa2gJ)15E9?Fnym1(&RQHO-~TE!mLif-6itKY`P%{m<%Lo3eO>asGPbs*W!|xw(WH# z=|~cIggd?`0^)eIV>3wvd)48BQL-2&S!zqnWx@<#E6%4aGN{E)7dw5et|cW&m)kZ# zbSW|6OCT~5v=~`X`3$O{E)a(WEf1swz$ON$N zso-vs{vk1yQsNCO*is_yP!Es?zL|GZiDA)G5tH@HX26gh%w|Njv47Fgu^F=w| z3|dh^$=#(95(PjQBi}}1OxYta9hdGUBEB!KfU7u`O_+XVF~+}31)Td+K^U*2x7y+4 z`OTSkGg~h{%)g)i^l*P_dgtuUwcV*Z`;&Kf(ZnIjZj{za8{=!^yOpaSAMaIa2dMsS Wc=yR(W%>Z!`iUlcIgD?_IQ{|2UsvY< literal 0 HcmV?d00001 diff --git a/TestVectors/runtimes/python/test/internaldafny/extern/TestWrappedESDKMain_extern.py b/TestVectors/runtimes/python/test/internaldafny/extern/TestWrappedESDKMain_extern.py new file mode 100644 index 000000000..574e31c52 --- /dev/null +++ b/TestVectors/runtimes/python/test/internaldafny/extern/TestWrappedESDKMain_extern.py @@ -0,0 +1,10 @@ +import TestWrappedESDKMain +import _dafny +import os + +class default__(TestWrappedESDKMain.default__): + @staticmethod + def GetTestVectorExecutionDirectory(): + return _dafny.Seq(os.getcwd() + "/../../") + +TestWrappedESDKMain.default__ = default__ \ No newline at end of file diff --git a/TestVectors/runtimes/python/test/internaldafny/extern/__init__.py b/TestVectors/runtimes/python/test/internaldafny/extern/__init__.py new file mode 100644 index 000000000..0e8ddce01 --- /dev/null +++ b/TestVectors/runtimes/python/test/internaldafny/extern/__init__.py @@ -0,0 +1,3 @@ +from . import ( + TestWrappedESDKMain_extern, +) \ No newline at end of file diff --git a/TestVectors/runtimes/python/test/internaldafny/extern/__pycache__/TestWrappedESDKMain_extern.cpython-311.pyc b/TestVectors/runtimes/python/test/internaldafny/extern/__pycache__/TestWrappedESDKMain_extern.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..49d1ed40b90fd98f3b1fb7cc41ad9500604136c6 GIT binary patch literal 943 zcmah{J8u&~5T3oWjcsftV9`X15Rb-0_6gG>szfOeE-(-2Kw2HQn{dhb&e_|OV^=OL zD*6a1v6c4lY3`DS+aQ?Zx_9ABMR`@eAiri|rC zFO=C+R8D{aBQBWpotPxHHB-}I7ns%urgJ#Zm*4?v!^ARmj$WGBj5MH}`k{jB_7b9Y zZDGvrqH+Qp6pyKKosm8a@NBpU05DTb!z_A~V|>pFT}kPsR4I&9gp2YeNsw@m=yKU4 zI{zphtrZa?U9<;?874R+*6Q6WMzyL|ITd9nv-Z4Bq&N6cr1?RV+2_)3voA1Hych3` z=KΞf8k8X1-^%eR0@wEt?xwJE(Ba7M+%Ke6JF)!%CdXc*XTCHf4t{KRrRI(JoDo#^H+m#e%x$J`DT>$W3e zqE5G*+-CJZp&9He*hJBT?`t>ScR$`fEq~ZL-TIt6+qi$WRvWL?M%kLUiV^j4I?7V& zSxru9l&7@mv(Qy~fzqSUau=RLAT8QADIr|1-`Z3QAM28VmJsK?OxGnUnOj zsYcQdrhwvHhs^c<>(xPgI?tq%;G31yMf`PDLUkpwO2kx`=`XSm=aoMaB@9vDA$Wsg zsuMycurXS$2^4$roItJ@&uL00SlPc~w0>v2UO88upDTABZrvL}X$+gAc*TYP27~kD Ap8x;= literal 0 HcmV?d00001 diff --git a/TestVectors/runtimes/python/test/internaldafny/extern/__pycache__/TestWrappedESDKMain_extern.cpython-312.pyc b/TestVectors/runtimes/python/test/internaldafny/extern/__pycache__/TestWrappedESDKMain_extern.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..90f591a54de416108ecf6af97d33d64cc198c980 GIT binary patch literal 861 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 literal 0 HcmV?d00001 diff --git a/TestVectors/runtimes/python/test/internaldafny/generated/__pycache__/TestWrappedESDKMain.cpython-312.pyc b/TestVectors/runtimes/python/test/internaldafny/generated/__pycache__/TestWrappedESDKMain.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..2956f35db8ddb8bc6c4a9582dc12bfaa483b3566 GIT binary patch literal 32003 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 PT<(Ieog#9iA20oH5zLO& literal 0 HcmV?d00001 diff --git a/TestVectors/runtimes/python/test/internaldafny/generated/__pycache__/__main__.cpython-311.pyc b/TestVectors/runtimes/python/test/internaldafny/generated/__pycache__/__main__.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..6d5985a46e466fb54816a48a85dabae8fe3ff5e9 GIT binary patch literal 1216 zcmah|&1>976rYhs`=QOctGcmigJEeyU`d?KLYw*!0#4eJk`G$!1|k#0L>jMmGy2F# z+qFUpTkxTWUIHoU(TC!;B!&J9$zPx?3l%yAa>~u%OYkXgw2>3%k~eSO{N9^+AM-}~ zvtHK`khihc{RboTTq*@=ufg6a*m;N?>HM3Slj<$su>K`c*eT8-aJ}OjX)|uX)Db(!`3iS5M>N`-?BbZZy zJa`3thFGoNC~U`(IBOb;w0&6EoDwtovxRmSfK!(8-Du#2`X3eNoXWfVHz1#BtQj)v z6bFA-*$20RDDo9ln0seIJVae|58a&m2}f_8=^x;G_;8)~m0#yq(BG(~WF^a?>rjHa z!tQ{ooIaCb8Y&R9+1wwte+Zcf+k9ZVw&Q#4p)YO+oZ75Shv6dgY!L@h&-WHX=k{VA zsJ+U<=sL3_AN&MV-E&#k4&rD7+#}d)_q>P+kMim9F7ue65p&v><UwE)^VBCW<=&rH$o$$MYy3GyBA@v&3RsY3aY$Ah(YeE7~^M1ALS!OUnKA26wM`vIYq~k!~6_= zoD`g*`J~`oqTxoGcm6N+aRu5vZgeJ%&gk2e)F$NU|K!Af(VdZ|9pAt^61cb j3AC$0Fj&KRXvNOScI*5p|7 z9Ry%YT=pgSAN-o_<`z$2gslKhMx2Vf46l637sbRXRZZ#f$wOM!=#h-c3Mt(=6@ z^+oStoj!H=R>Y)yza9b)>H%2jkOODLywgYX8v*OlDgq+fbTn$nq$1sX)IZBzMo{R3 zX}kwWpFNsuCvl&WSpf68Q+hzjjcGhxdqhmLjon+W-n8eg2#(2XX3~!5Fwp96&<2ioN z^)e|d$t3P$NGMq-@eO=rVt0}$0)|p9VXkdchpFPOn6{CnB;f}W2A<%A5N64HzI2;R z`=Np-&XNv?WCCZYn@ISPVd8L`NZi0FOIW|GpL4o8qmzuAvMnDHU(T?Uw~JITvk9*gmjgjtvt)04y^4D(&Z5(%?F^<2i=Q!f@D+{5ZP5kbaz z#?_7lA>0DtAE0XubZvsFO;Ec9PJRa`c90As8_lin)i>%|q~o=^(($-zxn`;6Y5Ymu zD>WbKn7_V(O4d@m922 aTF>EXt1NW;vEED4>gCSfZs}9E%<(_%zXPcN literal 0 HcmV?d00001 diff --git a/TestVectors/runtimes/python/test/internaldafny/generated/__pycache__/module_.cpython-311.pyc b/TestVectors/runtimes/python/test/internaldafny/generated/__pycache__/module_.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..2c8b6cd7ce40bb07628b158e606800191e7bf0f4 GIT binary patch literal 36936 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 asUcRKA>r51x<8fFdEl$3h+NGNp8h|*Lc=it literal 0 HcmV?d00001 diff --git a/TestVectors/runtimes/python/test/internaldafny/generated/dafny_test-py.dtr b/TestVectors/runtimes/python/test/internaldafny/generated/dafny_test-py.dtr new file mode 100644 index 000000000..ede2d6ffa --- /dev/null +++ b/TestVectors/runtimes/python/test/internaldafny/generated/dafny_test-py.dtr @@ -0,0 +1,4 @@ +file_format_version = "1.0" +dafny_version = "4.9.0.0" +[options_by_module.TestWrappedESDKMain] +legacy-module-names = false diff --git a/TestVectors/runtimes/python/test/internaldafny/generated/module_.py b/TestVectors/runtimes/python/test/internaldafny/generated/module_.py new file mode 100644 index 000000000..508814e7a --- /dev/null +++ b/TestVectors/runtimes/python/test/internaldafny/generated/module_.py @@ -0,0 +1,248 @@ +import sys +from typing import Callable, Any, TypeVar, NamedTuple +from math import floor +from itertools import count + +import module_ as module_ +import _dafny as _dafny +import System_ as System_ +import smithy_dafny_standard_library.internaldafny.generated.Wrappers as Wrappers +import smithy_dafny_standard_library.internaldafny.generated.BoundedInts as BoundedInts +import smithy_dafny_standard_library.internaldafny.generated.StandardLibrary_UInt as StandardLibrary_UInt +import smithy_dafny_standard_library.internaldafny.generated.StandardLibrary_Sequence as StandardLibrary_Sequence +import smithy_dafny_standard_library.internaldafny.generated.StandardLibrary_String as StandardLibrary_String +import smithy_dafny_standard_library.internaldafny.generated.StandardLibrary as StandardLibrary +import smithy_dafny_standard_library.internaldafny.generated.UTF8 as UTF8 +import aws_cryptography_internal_dynamodb.internaldafny.generated.ComAmazonawsDynamodbTypes as ComAmazonawsDynamodbTypes +import aws_cryptography_internal_kms.internaldafny.generated.ComAmazonawsKmsTypes as ComAmazonawsKmsTypes +import aws_cryptographic_material_providers.internaldafny.generated.AwsCryptographyKeyStoreTypes as AwsCryptographyKeyStoreTypes +import aws_cryptography_primitives.internaldafny.generated.AwsCryptographyPrimitivesTypes as AwsCryptographyPrimitivesTypes +import aws_cryptographic_material_providers.internaldafny.generated.AwsCryptographyMaterialProvidersTypes as AwsCryptographyMaterialProvidersTypes +import aws_encryption_sdk.internaldafny.generated.AwsCryptographyEncryptionSdkTypes as AwsCryptographyEncryptionSdkTypes +import aws_cryptography_primitives.internaldafny.generated.ExternRandom as ExternRandom +import aws_cryptography_primitives.internaldafny.generated.Random as Random +import aws_cryptography_primitives.internaldafny.generated.AESEncryption as AESEncryption +import aws_cryptography_primitives.internaldafny.generated.ExternDigest as ExternDigest +import aws_cryptography_primitives.internaldafny.generated.Digest as Digest +import aws_cryptography_primitives.internaldafny.generated.HMAC as HMAC +import aws_cryptography_primitives.internaldafny.generated.WrappedHMAC as WrappedHMAC +import aws_cryptography_primitives.internaldafny.generated.HKDF as HKDF +import aws_cryptography_primitives.internaldafny.generated.WrappedHKDF as WrappedHKDF +import aws_cryptography_primitives.internaldafny.generated.Signature as Signature +import aws_cryptography_primitives.internaldafny.generated.KdfCtr as KdfCtr +import aws_cryptography_primitives.internaldafny.generated.RSAEncryption as RSAEncryption +import aws_cryptography_primitives.internaldafny.generated.ECDH as ECDH +import aws_cryptography_primitives.internaldafny.generated.AwsCryptographyPrimitivesOperations as AwsCryptographyPrimitivesOperations +import aws_cryptography_primitives.internaldafny.generated.AtomicPrimitives as AtomicPrimitives +import smithy_dafny_standard_library.internaldafny.generated.Base64 as Base64 +import aws_cryptographic_material_providers.internaldafny.generated.AlgorithmSuites as AlgorithmSuites +import aws_cryptographic_material_providers.internaldafny.generated.Materials as Materials +import aws_cryptographic_material_providers.internaldafny.generated.Keyring as Keyring +import smithy_dafny_standard_library.internaldafny.generated.Relations as Relations +import smithy_dafny_standard_library.internaldafny.generated.Seq_MergeSort as Seq_MergeSort +import smithy_dafny_standard_library.internaldafny.generated.Math as Math +import smithy_dafny_standard_library.internaldafny.generated.Seq as Seq +import aws_cryptographic_material_providers.internaldafny.generated.MultiKeyring as MultiKeyring +import aws_cryptographic_material_providers.internaldafny.generated.AwsArnParsing as AwsArnParsing +import aws_cryptographic_material_providers.internaldafny.generated.AwsKmsMrkAreUnique as AwsKmsMrkAreUnique +import smithy_dafny_standard_library.internaldafny.generated.Actions as Actions +import aws_cryptographic_material_providers.internaldafny.generated.AwsKmsMrkMatchForDecrypt as AwsKmsMrkMatchForDecrypt +import aws_cryptographic_material_providers.internaldafny.generated.AwsKmsUtils as AwsKmsUtils +import aws_cryptographic_material_providers.internaldafny.generated.Constants as Constants +import smithy_dafny_standard_library.internaldafny.generated.UUID as UUID +import aws_cryptographic_material_providers.internaldafny.generated.MaterialWrapping as MaterialWrapping +import smithy_dafny_standard_library.internaldafny.generated.SortedSets as SortedSets +import aws_cryptographic_material_providers.internaldafny.generated.CanonicalEncryptionContext as CanonicalEncryptionContext +import aws_cryptographic_material_providers.internaldafny.generated.IntermediateKeyWrapping as IntermediateKeyWrapping +import aws_cryptographic_material_providers.internaldafny.generated.EdkWrapping as EdkWrapping +import aws_cryptographic_material_providers.internaldafny.generated.ErrorMessages as ErrorMessages +import aws_cryptographic_material_providers.internaldafny.generated.AwsKmsKeyring as AwsKmsKeyring +import aws_cryptographic_material_providers.internaldafny.generated.StrictMultiKeyring as StrictMultiKeyring +import aws_cryptographic_material_providers.internaldafny.generated.AwsKmsDiscoveryKeyring as AwsKmsDiscoveryKeyring +import aws_cryptography_internal_kms.internaldafny.generated.Com_Amazonaws_Kms as Com_Amazonaws_Kms +import aws_cryptography_internal_dynamodb.internaldafny.generated.Com_Amazonaws_Dynamodb as Com_Amazonaws_Dynamodb +import aws_cryptographic_material_providers.internaldafny.generated.DiscoveryMultiKeyring as DiscoveryMultiKeyring +import aws_cryptographic_material_providers.internaldafny.generated.AwsKmsMrkDiscoveryKeyring as AwsKmsMrkDiscoveryKeyring +import aws_cryptographic_material_providers.internaldafny.generated.MrkAwareDiscoveryMultiKeyring as MrkAwareDiscoveryMultiKeyring +import aws_cryptographic_material_providers.internaldafny.generated.AwsKmsMrkKeyring as AwsKmsMrkKeyring +import aws_cryptographic_material_providers.internaldafny.generated.MrkAwareStrictMultiKeyring as MrkAwareStrictMultiKeyring +import smithy_dafny_standard_library.internaldafny.generated.DafnyLibraries as DafnyLibraries +import smithy_dafny_standard_library.internaldafny.generated.Time as Time +import aws_cryptographic_material_providers.internaldafny.generated.LocalCMC as LocalCMC +import aws_cryptographic_material_providers.internaldafny.generated.SynchronizedLocalCMC as SynchronizedLocalCMC +import aws_cryptographic_material_providers.internaldafny.generated.StormTracker as StormTracker +import aws_cryptographic_material_providers.internaldafny.generated.StormTrackingCMC as StormTrackingCMC +import aws_cryptographic_material_providers.internaldafny.generated.CacheConstants as CacheConstants +import aws_cryptographic_material_providers.internaldafny.generated.AwsKmsHierarchicalKeyring as AwsKmsHierarchicalKeyring +import aws_cryptographic_material_providers.internaldafny.generated.AwsKmsRsaKeyring as AwsKmsRsaKeyring +import aws_cryptographic_material_providers.internaldafny.generated.EcdhEdkWrapping as EcdhEdkWrapping +import aws_cryptographic_material_providers.internaldafny.generated.RawECDHKeyring as RawECDHKeyring +import aws_cryptographic_material_providers.internaldafny.generated.AwsKmsEcdhKeyring as AwsKmsEcdhKeyring +import aws_cryptographic_material_providers.internaldafny.generated.RawAESKeyring as RawAESKeyring +import aws_cryptographic_material_providers.internaldafny.generated.RawRSAKeyring as RawRSAKeyring +import aws_cryptographic_material_providers.internaldafny.generated.CMM as CMM +import aws_cryptographic_material_providers.internaldafny.generated.Defaults as Defaults +import aws_cryptographic_material_providers.internaldafny.generated.Commitment as Commitment +import aws_cryptographic_material_providers.internaldafny.generated.DefaultCMM as DefaultCMM +import aws_cryptographic_material_providers.internaldafny.generated.DefaultClientSupplier as DefaultClientSupplier +import aws_cryptographic_material_providers.internaldafny.generated.Utils as Utils +import aws_cryptographic_material_providers.internaldafny.generated.RequiredEncryptionContextCMM as RequiredEncryptionContextCMM +import aws_cryptographic_material_providers.internaldafny.generated.AwsCryptographyMaterialProvidersOperations as AwsCryptographyMaterialProvidersOperations +import aws_cryptographic_material_providers.internaldafny.generated.MaterialProviders as MaterialProviders +import smithy_dafny_standard_library.internaldafny.generated.Streams as Streams +import aws_encryption_sdk.internaldafny.generated.SerializableTypes as SerializableTypes +import aws_encryption_sdk.internaldafny.generated.SerializeFunctions as SerializeFunctions +import aws_encryption_sdk.internaldafny.generated.EncryptionContext as EncryptionContext +import aws_encryption_sdk.internaldafny.generated.HeaderTypes as HeaderTypes +import aws_encryption_sdk.internaldafny.generated.SharedHeaderFunctions as SharedHeaderFunctions +import aws_encryption_sdk.internaldafny.generated.EncryptedDataKeys as EncryptedDataKeys +import aws_encryption_sdk.internaldafny.generated.V1HeaderBody as V1HeaderBody +import aws_encryption_sdk.internaldafny.generated.V2HeaderBody as V2HeaderBody +import aws_encryption_sdk.internaldafny.generated.HeaderAuth as HeaderAuth +import aws_encryption_sdk.internaldafny.generated.Header as Header +import aws_encryption_sdk.internaldafny.generated.Frames as Frames +import aws_encryption_sdk.internaldafny.generated.MessageBody as MessageBody +import aws_encryption_sdk.internaldafny.generated.KeyDerivation as KeyDerivation +import aws_encryption_sdk.internaldafny.generated.EncryptDecryptHelpers as EncryptDecryptHelpers +import aws_encryption_sdk.internaldafny.generated.AwsEncryptionSdkOperations as AwsEncryptionSdkOperations +import aws_encryption_sdk.internaldafny.generated.EncryptionSdk as EncryptionSdk +import aws_encryption_sdk_test_vectors.internaldafny.generated.WrappedESDK as WrappedESDK +import smithy_dafny_standard_library.internaldafny.generated.HexStrings as HexStrings +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllAlgorithmSuites as AllAlgorithmSuites +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.WrappedMaterialProviders as WrappedMaterialProviders +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AwsCryptographyMaterialProvidersTestVectorKeysTypes as AwsCryptographyMaterialProvidersTestVectorKeysTypes +import smithy_dafny_standard_library.internaldafny.generated.JSON_Utils_Views_Core as JSON_Utils_Views_Core +import smithy_dafny_standard_library.internaldafny.generated.JSON_Utils_Views_Writers as JSON_Utils_Views_Writers +import smithy_dafny_standard_library.internaldafny.generated.JSON_Utils_Lexers_Core as JSON_Utils_Lexers_Core +import smithy_dafny_standard_library.internaldafny.generated.JSON_Utils_Lexers_Strings as JSON_Utils_Lexers_Strings +import smithy_dafny_standard_library.internaldafny.generated.JSON_Utils_Cursors as JSON_Utils_Cursors +import smithy_dafny_standard_library.internaldafny.generated.JSON_Utils_Parsers as JSON_Utils_Parsers +import smithy_dafny_standard_library.internaldafny.generated.GeneralInternals as GeneralInternals +import smithy_dafny_standard_library.internaldafny.generated.MulInternalsNonlinear as MulInternalsNonlinear +import smithy_dafny_standard_library.internaldafny.generated.MulInternals as MulInternals +import smithy_dafny_standard_library.internaldafny.generated.Mul as Mul +import smithy_dafny_standard_library.internaldafny.generated.ModInternalsNonlinear as ModInternalsNonlinear +import smithy_dafny_standard_library.internaldafny.generated.DivInternalsNonlinear as DivInternalsNonlinear +import smithy_dafny_standard_library.internaldafny.generated.ModInternals as ModInternals +import smithy_dafny_standard_library.internaldafny.generated.DivInternals as DivInternals +import smithy_dafny_standard_library.internaldafny.generated.DivMod as DivMod +import smithy_dafny_standard_library.internaldafny.generated.Power as Power +import smithy_dafny_standard_library.internaldafny.generated.Logarithm as Logarithm +import smithy_dafny_standard_library.internaldafny.generated.JSON_Utils_Str_CharStrConversion as JSON_Utils_Str_CharStrConversion +import smithy_dafny_standard_library.internaldafny.generated.JSON_Utils_Str_CharStrEscaping as JSON_Utils_Str_CharStrEscaping +import smithy_dafny_standard_library.internaldafny.generated.JSON_Utils_Str as JSON_Utils_Str +import smithy_dafny_standard_library.internaldafny.generated.JSON_Utils_Seq as JSON_Utils_Seq +import smithy_dafny_standard_library.internaldafny.generated.JSON_Utils_Vectors as JSON_Utils_Vectors +import smithy_dafny_standard_library.internaldafny.generated.JSON_Errors as JSON_Errors +import smithy_dafny_standard_library.internaldafny.generated.JSON_Values as JSON_Values +import smithy_dafny_standard_library.internaldafny.generated.Unicode as Unicode +import smithy_dafny_standard_library.internaldafny.generated.Functions as Functions +import smithy_dafny_standard_library.internaldafny.generated.Utf8EncodingForm as Utf8EncodingForm +import smithy_dafny_standard_library.internaldafny.generated.Utf16EncodingForm as Utf16EncodingForm +import smithy_dafny_standard_library.internaldafny.generated.UnicodeStrings as UnicodeStrings +import smithy_dafny_standard_library.internaldafny.generated.JSON_Spec as JSON_Spec +import smithy_dafny_standard_library.internaldafny.generated.JSON_Grammar as JSON_Grammar +import smithy_dafny_standard_library.internaldafny.generated.JSON_Serializer_ByteStrConversion as JSON_Serializer_ByteStrConversion +import smithy_dafny_standard_library.internaldafny.generated.JSON_Serializer as JSON_Serializer +import smithy_dafny_standard_library.internaldafny.generated.JSON_Deserializer_Uint16StrConversion as JSON_Deserializer_Uint16StrConversion +import smithy_dafny_standard_library.internaldafny.generated.JSON_Deserializer_ByteStrConversion as JSON_Deserializer_ByteStrConversion +import smithy_dafny_standard_library.internaldafny.generated.JSON_Deserializer as JSON_Deserializer +import smithy_dafny_standard_library.internaldafny.generated.JSON_ConcreteSyntax_Spec as JSON_ConcreteSyntax_Spec +import smithy_dafny_standard_library.internaldafny.generated.JSON_ConcreteSyntax_SpecProperties as JSON_ConcreteSyntax_SpecProperties +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_Serializer as JSON_ZeroCopy_Serializer +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_Deserializer_Core as JSON_ZeroCopy_Deserializer_Core +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_Deserializer_Strings as JSON_ZeroCopy_Deserializer_Strings +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_Deserializer_Numbers as JSON_ZeroCopy_Deserializer_Numbers +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_Deserializer_ObjectParams as JSON_ZeroCopy_Deserializer_ObjectParams +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_Deserializer_Objects as JSON_ZeroCopy_Deserializer_Objects +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_Deserializer_ArrayParams as JSON_ZeroCopy_Deserializer_ArrayParams +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_Deserializer_Arrays as JSON_ZeroCopy_Deserializer_Arrays +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_Deserializer_Constants as JSON_ZeroCopy_Deserializer_Constants +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_Deserializer_Values as JSON_ZeroCopy_Deserializer_Values +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_Deserializer_API as JSON_ZeroCopy_Deserializer_API +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_Deserializer as JSON_ZeroCopy_Deserializer +import smithy_dafny_standard_library.internaldafny.generated.JSON_ZeroCopy_API as JSON_ZeroCopy_API +import smithy_dafny_standard_library.internaldafny.generated.JSON_API as JSON_API +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.JSONHelpers as JSONHelpers +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.KeyDescription as KeyDescription +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.KeyMaterial as KeyMaterial +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.CreateStaticKeyrings as CreateStaticKeyrings +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.CreateStaticKeyStores as CreateStaticKeyStores +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.KeyringFromKeyDescription as KeyringFromKeyDescription +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.CmmFromKeyDescription as CmmFromKeyDescription +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.KeysVectorOperations as KeysVectorOperations +import smithy_dafny_standard_library.internaldafny.generated.FileIO as FileIO +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.KeyVectors as KeyVectors +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.TestVectors as TestVectors +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllHierarchy as AllHierarchy +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllKms as AllKms +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllKmsMrkAware as AllKmsMrkAware +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllKmsMrkAwareDiscovery as AllKmsMrkAwareDiscovery +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllKmsRsa as AllKmsRsa +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllKmsEcdh as AllKmsEcdh +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllRawAES as AllRawAES +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllRawRSA as AllRawRSA +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllRawECDH as AllRawECDH +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllDefaultCmm as AllDefaultCmm +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllRequiredEncryptionContextCmm as AllRequiredEncryptionContextCmm +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.AllMulti as AllMulti +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.MplManifestOptions as MplManifestOptions +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.WriteJsonManifests as WriteJsonManifests +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.CompleteVectors as CompleteVectors +import aws_encryption_sdk_test_vectors.internaldafny.generated.EsdkManifestOptions as EsdkManifestOptions +import aws_encryption_sdk_test_vectors.internaldafny.generated.EsdkTestVectors as EsdkTestVectors +import aws_encryption_sdk_test_vectors.internaldafny.generated.AllEsdkV4NoReqEc as AllEsdkV4NoReqEc +import aws_encryption_sdk_test_vectors.internaldafny.generated.AllEsdkV4WithReqEc as AllEsdkV4WithReqEc +import aws_encryption_sdk_test_vectors.internaldafny.generated.WriteEsdkJsonManifests as WriteEsdkJsonManifests +import aws_encryption_sdk_test_vectors.internaldafny.generated.WriteVectors as WriteVectors +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.ParseJsonManifests as ParseJsonManifests +import aws_encryption_sdk_test_vectors.internaldafny.generated.ParseEsdkJsonManifest as ParseEsdkJsonManifest +import aws_encryption_sdk_test_vectors.internaldafny.generated.EsdkTestManifests as EsdkTestManifests +import smithy_dafny_standard_library.internaldafny.generated.GetOpt as GetOpt +import aws_encryption_sdk_test_vectors.internaldafny.generated.WrappedESDKMain as WrappedESDKMain +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.TestManifests as TestManifests +import aws_cryptography_materialproviders_test_vectors.internaldafny.generated.WrappedMaterialProvidersMain as WrappedMaterialProvidersMain +import aws_cryptography_primitives.internaldafny.generated.AesKdfCtr as AesKdfCtr +import aws_cryptographic_material_providers.internaldafny.generated.KeyStoreErrorMessages as KeyStoreErrorMessages +import aws_cryptographic_material_providers.internaldafny.generated.KmsArn as KmsArn +import aws_cryptographic_material_providers.internaldafny.generated.Structure as Structure +import aws_cryptographic_material_providers.internaldafny.generated.KMSKeystoreOperations as KMSKeystoreOperations +import aws_cryptographic_material_providers.internaldafny.generated.DDBKeystoreOperations as DDBKeystoreOperations +import aws_cryptographic_material_providers.internaldafny.generated.CreateKeys as CreateKeys +import aws_cryptographic_material_providers.internaldafny.generated.CreateKeyStoreTable as CreateKeyStoreTable +import aws_cryptographic_material_providers.internaldafny.generated.GetKeys as GetKeys +import aws_cryptographic_material_providers.internaldafny.generated.AwsCryptographyKeyStoreOperations as AwsCryptographyKeyStoreOperations +import aws_cryptographic_material_providers.internaldafny.generated.KeyStore as KeyStore +import smithy_dafny_standard_library.internaldafny.generated.StandardLibraryInterop as StandardLibraryInterop +import smithy_dafny_standard_library.internaldafny.generated.Sorting as Sorting +import smithy_dafny_standard_library.internaldafny.generated.FloatCompare as FloatCompare +import smithy_dafny_standard_library.internaldafny.generated.ConcurrentCall as ConcurrentCall +import smithy_dafny_standard_library.internaldafny.generated.Base64Lemmas as Base64Lemmas +import TestWrappedESDKMain as TestWrappedESDKMain + +# Module: module_ + +class default__: + def __init__(self): + pass + + @staticmethod + def Test____Main____(noArgsParameter__): + d_0_success_: bool + d_0_success_ = True + _dafny.print(_dafny.string_of(_dafny.Seq("TestWrappedESDKMain.RunManifestTests: "))) + try: + if True: + TestWrappedESDKMain.default__.RunManifestTests() + if True: + _dafny.print(_dafny.string_of(_dafny.Seq("PASSED\n"))) + except _dafny.HaltException as e: + d_1_haltMessage_ = e.message + if True: + _dafny.print(_dafny.string_of(_dafny.Seq("FAILED\n "))) + _dafny.print(_dafny.string_of(d_1_haltMessage_)) + _dafny.print(_dafny.string_of(_dafny.Seq("\n"))) + d_0_success_ = False + if not(d_0_success_): + raise _dafny.HaltException("(1,0): " + _dafny.string_of(_dafny.Seq("Test failures occurred: see above.\n"))) + diff --git a/TestVectors/runtimes/python/test/internaldafny/test_dafny_wrapper.py b/TestVectors/runtimes/python/test/internaldafny/test_dafny_wrapper.py new file mode 100644 index 000000000..2a70bb22c --- /dev/null +++ b/TestVectors/runtimes/python/test/internaldafny/test_dafny_wrapper.py @@ -0,0 +1,22 @@ +# Copyright Amazon.com Inc. or its affiliates. All Rights Reserved. +# SPDX-License-Identifier: Apache-2.0 + +""" +Wrapper file for executing Dafny tests from pytest. +This allows us to import modules required by Dafny-generated tests +before executing Dafny-generated tests. +pytest will find and execute the `test_dafny` method below, +which will execute the `internaldafny_test_executor.py` file in the `dafny` directory. +""" + +import sys + +internaldafny_dir = '/'.join(__file__.split("/")[:-1]) + +sys.path.append(internaldafny_dir + "/extern") +sys.path.append(internaldafny_dir + "/generated") + +from . import extern + +def test_dafny(): + from .generated import __main__ diff --git a/TestVectors/runtimes/python/tox.ini b/TestVectors/runtimes/python/tox.ini new file mode 100644 index 000000000..4406ea808 --- /dev/null +++ b/TestVectors/runtimes/python/tox.ini @@ -0,0 +1,26 @@ +[tox] +isolated_build = True +envlist = + py{311,312} + +[testenv] +skip_install = true +allowlist_externals = poetry +passenv = AWS_* +commands_pre = + poetry lock + poetry install +commands = + poetry run pytest -s -v test/ + +[testenv:cli] +skip_install = true +allowlist_externals = poetry +passenv = AWS_* +setenv = VIRTUALENV_DOWNLOAD=0 + PIP_DISABLE_PIP_VERSION_CHECK=1 +commands_pre = + poetry lock + poetry install --with test +commands = + poetry run python src/aws_cryptography_materialproviders_test_vectors/internaldafny/generated {posargs} \ No newline at end of file