diff --git a/releases/rust/db_esdk/Cargo.toml b/releases/rust/db_esdk/Cargo.toml index 2df70f170..08a483e39 100644 --- a/releases/rust/db_esdk/Cargo.toml +++ b/releases/rust/db_esdk/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "aws-db-esdk" -version = "1.0.0" +version = "1.1.0" edition = "2021" rust-version = "1.81.0" keywords = ["cryptography", "security", "dynamodb", "encryption", "client-side"] @@ -16,20 +16,20 @@ readme = "README.md" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] -aws-config = "1.5.15" -aws-lc-rs = "1.12.2" -aws-lc-sys = "0.25.0" -aws-sdk-dynamodb = "1.62.0" -aws-sdk-kms = "1.57.0" -aws-smithy-runtime-api = {version = "1.7.3", features = ["client"] } -aws-smithy-types = "1.2.12" -chrono = "0.4.39" +aws-config = "1.6.2" +aws-lc-rs = "1.13.1" +aws-lc-sys = "0.29.0" +aws-sdk-dynamodb = "1.73.0" +aws-sdk-kms = "1.67.0" +aws-smithy-runtime-api = {version = "1.8.0", features = ["client"] } +aws-smithy-types = "1.3.1" +chrono = "0.4.41" cpu-time = "1.0.0" -dafny-runtime = { version = "0.2.0", features = ["sync"] } +dafny-runtime = { version = "0.3.0", features = ["sync", "small-int"] } dashmap = "6.1.0" -pem = "3.0.4" -tokio = {version = "1.43.0", features = ["full"] } -uuid = { version = "1.12.1", features = ["v4"] } +pem = "3.0.5" +tokio = {version = "1.45.0", features = ["full"] } +uuid = { version = "1.16.0", features = ["v4"] } [[example]] name = "main" diff --git a/releases/rust/db_esdk/dafny_runtime_rust/Cargo.toml b/releases/rust/db_esdk/dafny_runtime_rust/Cargo.toml index 297d60046..7680fd5d6 100644 --- a/releases/rust/db_esdk/dafny_runtime_rust/Cargo.toml +++ b/releases/rust/db_esdk/dafny_runtime_rust/Cargo.toml @@ -1,7 +1,13 @@ [package] -name = "dafny_runtime" +name = "dafny-runtime" version = "0.3.0" edition = "2021" +keywords = ["dafny"] +license = "ISC AND (Apache-2.0 OR ISC)" +description = "dafny-runtime is the runtime support library for Rust code gerated from Dafny." +repository = "https://github.com/aws/aws-database-encryption-sdk-dynamodb/tree/main/releases/rust/db_esdk/dafny_runtime_rust" +authors = ["AWS-CryptoTools"] +readme = "README.md" [dependencies] once_cell = "1.21.3" diff --git a/releases/rust/db_esdk/src/aes_gcm.rs b/releases/rust/db_esdk/src/aes_gcm.rs index b5f12b997..0f5b0aba4 100644 --- a/releases/rust/db_esdk/src/aes_gcm.rs +++ b/releases/rust/db_esdk/src/aes_gcm.rs @@ -113,10 +113,10 @@ impl AES_GCM { msg: &::dafny_runtime::Sequence, aad: &::dafny_runtime::Sequence, ) -> Rc<_Wrappers_Compile::Result, Rc>> { - let iv: Vec = iv.iter().collect(); - let key: Vec = key.iter().collect(); - let msg: Vec = msg.iter().collect(); - let aad: Vec = aad.iter().collect(); + let iv = &iv.to_array(); + let key = &key.to_array(); + let msg = &msg.to_array(); + let aad = &aad.to_array(); if *self.keyLength() as usize != key.len() { let msg = format!( @@ -135,11 +135,11 @@ impl AES_GCM { return enc_result(&msg); } - match self.do_aes_encrypt(&iv, &key, &msg, &aad) { + match self.do_aes_encrypt(iv, key, msg, aad) { Ok(x) => Rc::new(_Wrappers_Compile::Result::Success { value: Rc::new(AESEncryptOutput::AESEncryptOutput { - cipherText: x.cipher_text.iter().cloned().collect(), - authTag: x.auth_tag.iter().cloned().collect(), + cipherText: dafny_runtime::Sequence::from_array_owned(x.cipher_text), + authTag: dafny_runtime::Sequence::from_array_owned(x.auth_tag), }), }), Err(e) => { @@ -158,11 +158,11 @@ impl AES_GCM { iv: &::dafny_runtime::Sequence, aad: &::dafny_runtime::Sequence, ) -> Rc<_Wrappers_Compile::Result<::dafny_runtime::Sequence, Rc>> { - let key: Vec = key.iter().collect(); - let cipher_text: Vec = cipher_text.iter().collect(); - let auth_tag: Vec = auth_tag.iter().collect(); - let iv: Vec = iv.iter().collect(); - let aad: Vec = aad.iter().collect(); + let key = &key.to_array(); + let cipher_text = &cipher_text.to_array(); + let auth_tag = &auth_tag.to_array(); + let iv = &iv.to_array(); + let aad = &aad.to_array(); if *self.keyLength() as usize != key.len() { let msg = format!( @@ -191,9 +191,9 @@ impl AES_GCM { return dec_result(&msg); } - match self.do_aes_decrypt(&key, &cipher_text, &auth_tag, &iv, &aad) { + match self.do_aes_decrypt(key, cipher_text, auth_tag, iv, aad) { Ok(x) => Rc::new(_Wrappers_Compile::Result::Success { - value: x.iter().cloned().collect(), + value: dafny_runtime::Sequence::from_array_owned(x), }), Err(e) => { let msg = format!("AES Decrypt : {}", e); @@ -208,23 +208,18 @@ mod tests { use super::*; #[test] fn test_generate() { - let iv: ::dafny_runtime::Sequence = [1u8, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12] - .iter() - .cloned() - .collect(); - let key: ::dafny_runtime::Sequence = [ + let iv: ::dafny_runtime::Sequence = dafny_runtime::Sequence::from_array_owned(vec![ + 1u8, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, + ]); + let key: ::dafny_runtime::Sequence = dafny_runtime::Sequence::from_array_owned(vec![ 2u8, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, - ] - .iter() - .cloned() - .collect(); - let msg: ::dafny_runtime::Sequence = [2u8, 4, 6, 8, 10, 12].iter().cloned().collect(); - let aad: ::dafny_runtime::Sequence = - [3u8, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17] - .iter() - .cloned() - .collect(); + ]); + let msg: ::dafny_runtime::Sequence = + dafny_runtime::Sequence::from_array_owned(vec![2u8, 4, 6, 8, 10, 12]); + let aad: ::dafny_runtime::Sequence = dafny_runtime::Sequence::from_array_owned(vec![ + 3u8, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, + ]); let alg = AES_GCM::AES_GCM { keyLength: 32, diff --git a/releases/rust/db_esdk/src/aes_kdf_ctr.rs b/releases/rust/db_esdk/src/aes_kdf_ctr.rs index 8d945da82..cb940bbbc 100644 --- a/releases/rust/db_esdk/src/aes_kdf_ctr.rs +++ b/releases/rust/db_esdk/src/aes_kdf_ctr.rs @@ -58,11 +58,11 @@ pub mod AesKdfCtr { Rc, >, > { - let nonce: Vec = nonce.iter().collect(); - let key: Vec = key.iter().collect(); - match ctr_stream(&nonce, &key, length) { + let nonce = &nonce.to_array(); + let key = &key.to_array(); + match ctr_stream(nonce, key, length) { Ok(x) => Rc::new(_Wrappers_Compile::Result::Success { - value: x.iter().cloned().collect(), + value: dafny_runtime::Sequence::from_array_owned(x), }), Err(e) => { let msg = format!("Aes Kdf Ctr : {}", e); diff --git a/releases/rust/db_esdk/src/dafny_libraries.rs b/releases/rust/db_esdk/src/dafny_libraries.rs index 7781dc322..75cefe7b8 100644 --- a/releases/rust/db_esdk/src/dafny_libraries.rs +++ b/releases/rust/db_esdk/src/dafny_libraries.rs @@ -180,6 +180,19 @@ pub mod DafnyLibraries { let file_name = dafny_runtime::dafny_runtime_conversions::unicode_chars_false::dafny_string_to_string(path); let path = Path::new(&file_name); + if let Some(parent) = path.parent() { + if let Err(why) = std::fs::create_dir_all(parent) { + let err_msg = format!( + "couldn't create directory {} from {}: {}", + path.display(), + curr_dir(), + why + ); + let err_msg = dafny_runtime::dafny_runtime_conversions::unicode_chars_false::string_to_dafny_string(&err_msg); + return (true, err_msg); + } + } + let maybe_file = std::fs::OpenOptions::new() .append(append) .write(true) diff --git a/releases/rust/db_esdk/src/deps/aws_cryptography_materialProviders/operation/create_default_cryptographic_materials_manager/_create_default_cryptographic_materials_manager_input.rs b/releases/rust/db_esdk/src/deps/aws_cryptography_materialProviders/operation/create_default_cryptographic_materials_manager/_create_default_cryptographic_materials_manager_input.rs index f0ed27cf7..5ec14556c 100644 --- a/releases/rust/db_esdk/src/deps/aws_cryptography_materialProviders/operation/create_default_cryptographic_materials_manager/_create_default_cryptographic_materials_manager_input.rs +++ b/releases/rust/db_esdk/src/deps/aws_cryptography_materialProviders/operation/create_default_cryptographic_materials_manager/_create_default_cryptographic_materials_manager_input.rs @@ -5,13 +5,13 @@ #[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::fmt::Debug)] /// Inputs for creating a Default Cryptographic Materials Manager. pub struct CreateDefaultCryptographicMaterialsManagerInput { - /// The Keyring that the created Default Cryprographic Materials Manager will use to wrap data keys. + /// The Keyring that the created Default Cryptographic Materials Manager will use to wrap data keys. pub keyring: ::std::option::Option< crate::deps::aws_cryptography_materialProviders::types::keyring::KeyringRef, >, } impl CreateDefaultCryptographicMaterialsManagerInput { - /// The Keyring that the created Default Cryprographic Materials Manager will use to wrap data keys. + /// The Keyring that the created Default Cryptographic Materials Manager will use to wrap data keys. pub fn keyring( &self, ) -> &::std::option::Option< @@ -38,7 +38,7 @@ pub struct CreateDefaultCryptographicMaterialsManagerInputBuilder { >, } impl CreateDefaultCryptographicMaterialsManagerInputBuilder { - /// The Keyring that the created Default Cryprographic Materials Manager will use to wrap data keys. + /// The Keyring that the created Default Cryptographic Materials Manager will use to wrap data keys. pub fn keyring( mut self, input: impl ::std::convert::Into< @@ -48,7 +48,7 @@ impl CreateDefaultCryptographicMaterialsManagerInputBuilder { self.keyring = ::std::option::Option::Some(input.into()); self } - /// The Keyring that the created Default Cryprographic Materials Manager will use to wrap data keys. + /// The Keyring that the created Default Cryptographic Materials Manager will use to wrap data keys. pub fn set_keyring( mut self, input: ::std::option::Option< @@ -58,7 +58,7 @@ impl CreateDefaultCryptographicMaterialsManagerInputBuilder { self.keyring = input; self } - /// The Keyring that the created Default Cryprographic Materials Manager will use to wrap data keys. + /// The Keyring that the created Default Cryptographic Materials Manager will use to wrap data keys. pub fn get_keyring( &self, ) -> &::std::option::Option< diff --git a/releases/rust/db_esdk/src/deps/aws_cryptography_materialProviders/operation/create_default_cryptographic_materials_manager/builders.rs b/releases/rust/db_esdk/src/deps/aws_cryptography_materialProviders/operation/create_default_cryptographic_materials_manager/builders.rs index 2259eeb2e..f862e2643 100644 --- a/releases/rust/db_esdk/src/deps/aws_cryptography_materialProviders/operation/create_default_cryptographic_materials_manager/builders.rs +++ b/releases/rust/db_esdk/src/deps/aws_cryptography_materialProviders/operation/create_default_cryptographic_materials_manager/builders.rs @@ -64,7 +64,7 @@ impl CreateDefaultCryptographicMaterialsManagerFluentBuilder { crate::deps::aws_cryptography_materialProviders::operation::create_default_cryptographic_materials_manager::CreateDefaultCryptographicMaterialsManager::send(&self.client, input).await } - /// The Keyring that the created Default Cryprographic Materials Manager will use to wrap data keys. + /// The Keyring that the created Default Cryptographic Materials Manager will use to wrap data keys. pub fn keyring( mut self, input: impl ::std::convert::Into< @@ -74,7 +74,7 @@ impl CreateDefaultCryptographicMaterialsManagerFluentBuilder { self.inner = self.inner.keyring(input.into()); self } - /// The Keyring that the created Default Cryprographic Materials Manager will use to wrap data keys. + /// The Keyring that the created Default Cryptographic Materials Manager will use to wrap data keys. pub fn set_keyring( mut self, input: ::std::option::Option< @@ -84,7 +84,7 @@ impl CreateDefaultCryptographicMaterialsManagerFluentBuilder { self.inner = self.inner.set_keyring(input); self } - /// The Keyring that the created Default Cryprographic Materials Manager will use to wrap data keys. + /// The Keyring that the created Default Cryptographic Materials Manager will use to wrap data keys. pub fn get_keyring( &self, ) -> &::std::option::Option< diff --git a/releases/rust/db_esdk/src/deps/aws_cryptography_materialProviders/operation/create_required_encryption_context_cmm/_create_required_encryption_context_cmm_input.rs b/releases/rust/db_esdk/src/deps/aws_cryptography_materialProviders/operation/create_required_encryption_context_cmm/_create_required_encryption_context_cmm_input.rs index 5528ebdf0..7a416cec6 100644 --- a/releases/rust/db_esdk/src/deps/aws_cryptography_materialProviders/operation/create_required_encryption_context_cmm/_create_required_encryption_context_cmm_input.rs +++ b/releases/rust/db_esdk/src/deps/aws_cryptography_materialProviders/operation/create_required_encryption_context_cmm/_create_required_encryption_context_cmm_input.rs @@ -5,15 +5,15 @@ #[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::fmt::Debug)] /// Inputs for creating an Required Encryption Context Cryptographic Materials Manager. pub struct CreateRequiredEncryptionContextCmmInput { - /// The Keyring that the created Cryprographic Materials Manager will use to wrap data keys. The created Required Encryption Context CMM will delegate to a Default Cryptographic Materials Manager created with this Keyring. Either a Keyring or an underlying Cryprographic Materials Manager must be specified as input. + /// The Keyring that the created Cryptographic Materials Manager will use to wrap data keys. The created Required Encryption Context CMM will delegate to a Default Cryptographic Materials Manager created with this Keyring. Either a Keyring or an underlying Cryptographic Materials Manager must be specified as input. pub keyring: ::std::option::Option, /// A list of Encryption Context keys which are required to be supplied during encryption and decryption, and correspond to Encryption Context key-value pairs which are not stored on the resulting message. pub required_encryption_context_keys: ::std::option::Option<::std::vec::Vec<::std::string::String>>, -/// The Cryprographic Materials Manager that the created Required Encryption Context Cryptographic Materials Manager will delegate to. Either a Keyring or underlying Cryprographic Materials Manager must be specified. +/// The Cryptographic Materials Manager that the created Required Encryption Context Cryptographic Materials Manager will delegate to. Either a Keyring or underlying Cryptographic Materials Manager must be specified. pub underlying_cmm: ::std::option::Option, } impl CreateRequiredEncryptionContextCmmInput { - /// The Keyring that the created Cryprographic Materials Manager will use to wrap data keys. The created Required Encryption Context CMM will delegate to a Default Cryptographic Materials Manager created with this Keyring. Either a Keyring or an underlying Cryprographic Materials Manager must be specified as input. + /// The Keyring that the created Cryptographic Materials Manager will use to wrap data keys. The created Required Encryption Context CMM will delegate to a Default Cryptographic Materials Manager created with this Keyring. Either a Keyring or an underlying Cryptographic Materials Manager must be specified as input. pub fn keyring( &self, ) -> &::std::option::Option< @@ -27,7 +27,7 @@ impl CreateRequiredEncryptionContextCmmInput { ) -> &::std::option::Option<::std::vec::Vec<::std::string::String>> { &self.required_encryption_context_keys } - /// The Cryprographic Materials Manager that the created Required Encryption Context Cryptographic Materials Manager will delegate to. Either a Keyring or underlying Cryprographic Materials Manager must be specified. + /// The Cryptographic Materials Manager that the created Required Encryption Context Cryptographic Materials Manager will delegate to. Either a Keyring or underlying Cryptographic Materials Manager must be specified. pub fn underlying_cmm(&self) -> &::std::option::Option{ &self.underlying_cmm } @@ -50,7 +50,7 @@ pub(crate) required_encryption_context_keys: ::std::option::Option<::std::vec::V pub(crate) underlying_cmm: ::std::option::Option, } impl CreateRequiredEncryptionContextCmmInputBuilder { - /// The Keyring that the created Cryprographic Materials Manager will use to wrap data keys. The created Required Encryption Context CMM will delegate to a Default Cryptographic Materials Manager created with this Keyring. Either a Keyring or an underlying Cryprographic Materials Manager must be specified as input. + /// The Keyring that the created Cryptographic Materials Manager will use to wrap data keys. The created Required Encryption Context CMM will delegate to a Default Cryptographic Materials Manager created with this Keyring. Either a Keyring or an underlying Cryptographic Materials Manager must be specified as input. pub fn keyring( mut self, input: impl ::std::convert::Into< @@ -60,7 +60,7 @@ impl CreateRequiredEncryptionContextCmmInputBuilder { self.keyring = ::std::option::Option::Some(input.into()); self } - /// The Keyring that the created Cryprographic Materials Manager will use to wrap data keys. The created Required Encryption Context CMM will delegate to a Default Cryptographic Materials Manager created with this Keyring. Either a Keyring or an underlying Cryprographic Materials Manager must be specified as input. + /// The Keyring that the created Cryptographic Materials Manager will use to wrap data keys. The created Required Encryption Context CMM will delegate to a Default Cryptographic Materials Manager created with this Keyring. Either a Keyring or an underlying Cryptographic Materials Manager must be specified as input. pub fn set_keyring( mut self, input: ::std::option::Option< @@ -70,7 +70,7 @@ impl CreateRequiredEncryptionContextCmmInputBuilder { self.keyring = input; self } - /// The Keyring that the created Cryprographic Materials Manager will use to wrap data keys. The created Required Encryption Context CMM will delegate to a Default Cryptographic Materials Manager created with this Keyring. Either a Keyring or an underlying Cryprographic Materials Manager must be specified as input. + /// The Keyring that the created Cryptographic Materials Manager will use to wrap data keys. The created Required Encryption Context CMM will delegate to a Default Cryptographic Materials Manager created with this Keyring. Either a Keyring or an underlying Cryptographic Materials Manager must be specified as input. pub fn get_keyring( &self, ) -> &::std::option::Option< @@ -100,7 +100,7 @@ impl CreateRequiredEncryptionContextCmmInputBuilder { ) -> &::std::option::Option<::std::vec::Vec<::std::string::String>> { &self.required_encryption_context_keys } - /// The Cryprographic Materials Manager that the created Required Encryption Context Cryptographic Materials Manager will delegate to. Either a Keyring or underlying Cryprographic Materials Manager must be specified. + /// The Cryptographic Materials Manager that the created Required Encryption Context Cryptographic Materials Manager will delegate to. Either a Keyring or underlying Cryptographic Materials Manager must be specified. pub fn underlying_cmm( mut self, input: impl ::std::convert::Into, @@ -108,7 +108,7 @@ impl CreateRequiredEncryptionContextCmmInputBuilder { self.underlying_cmm = ::std::option::Option::Some(input.into()); self } - /// The Cryprographic Materials Manager that the created Required Encryption Context Cryptographic Materials Manager will delegate to. Either a Keyring or underlying Cryprographic Materials Manager must be specified. + /// The Cryptographic Materials Manager that the created Required Encryption Context Cryptographic Materials Manager will delegate to. Either a Keyring or underlying Cryptographic Materials Manager must be specified. pub fn set_underlying_cmm( mut self, input: ::std::option::Option, @@ -116,7 +116,7 @@ impl CreateRequiredEncryptionContextCmmInputBuilder { self.underlying_cmm = input; self } - /// The Cryprographic Materials Manager that the created Required Encryption Context Cryptographic Materials Manager will delegate to. Either a Keyring or underlying Cryprographic Materials Manager must be specified. + /// The Cryptographic Materials Manager that the created Required Encryption Context Cryptographic Materials Manager will delegate to. Either a Keyring or underlying Cryptographic Materials Manager must be specified. pub fn get_underlying_cmm(&self) -> &::std::option::Option{ &self.underlying_cmm } diff --git a/releases/rust/db_esdk/src/deps/aws_cryptography_materialProviders/operation/create_required_encryption_context_cmm/builders.rs b/releases/rust/db_esdk/src/deps/aws_cryptography_materialProviders/operation/create_required_encryption_context_cmm/builders.rs index ac3eca555..e1500a543 100644 --- a/releases/rust/db_esdk/src/deps/aws_cryptography_materialProviders/operation/create_required_encryption_context_cmm/builders.rs +++ b/releases/rust/db_esdk/src/deps/aws_cryptography_materialProviders/operation/create_required_encryption_context_cmm/builders.rs @@ -64,7 +64,7 @@ impl CreateRequiredEncryptionContextCmmFluentBuilder { crate::deps::aws_cryptography_materialProviders::operation::create_required_encryption_context_cmm::CreateRequiredEncryptionContextCmm::send(&self.client, input).await } - /// The Keyring that the created Cryprographic Materials Manager will use to wrap data keys. The created Required Encryption Context CMM will delegate to a Default Cryptographic Materials Manager created with this Keyring. Either a Keyring or an underlying Cryprographic Materials Manager must be specified as input. + /// The Keyring that the created Cryptographic Materials Manager will use to wrap data keys. The created Required Encryption Context CMM will delegate to a Default Cryptographic Materials Manager created with this Keyring. Either a Keyring or an underlying Cryptographic Materials Manager must be specified as input. pub fn keyring( mut self, input: impl ::std::convert::Into< @@ -74,7 +74,7 @@ impl CreateRequiredEncryptionContextCmmFluentBuilder { self.inner = self.inner.keyring(input.into()); self } - /// The Keyring that the created Cryprographic Materials Manager will use to wrap data keys. The created Required Encryption Context CMM will delegate to a Default Cryptographic Materials Manager created with this Keyring. Either a Keyring or an underlying Cryprographic Materials Manager must be specified as input. + /// The Keyring that the created Cryptographic Materials Manager will use to wrap data keys. The created Required Encryption Context CMM will delegate to a Default Cryptographic Materials Manager created with this Keyring. Either a Keyring or an underlying Cryptographic Materials Manager must be specified as input. pub fn set_keyring( mut self, input: ::std::option::Option< @@ -84,7 +84,7 @@ impl CreateRequiredEncryptionContextCmmFluentBuilder { self.inner = self.inner.set_keyring(input); self } - /// The Keyring that the created Cryprographic Materials Manager will use to wrap data keys. The created Required Encryption Context CMM will delegate to a Default Cryptographic Materials Manager created with this Keyring. Either a Keyring or an underlying Cryprographic Materials Manager must be specified as input. + /// The Keyring that the created Cryptographic Materials Manager will use to wrap data keys. The created Required Encryption Context CMM will delegate to a Default Cryptographic Materials Manager created with this Keyring. Either a Keyring or an underlying Cryptographic Materials Manager must be specified as input. pub fn get_keyring( &self, ) -> &::std::option::Option< @@ -114,7 +114,7 @@ impl CreateRequiredEncryptionContextCmmFluentBuilder { ) -> &::std::option::Option<::std::vec::Vec<::std::string::String>> { self.inner.get_required_encryption_context_keys() } - /// The Cryprographic Materials Manager that the created Required Encryption Context Cryptographic Materials Manager will delegate to. Either a Keyring or underlying Cryprographic Materials Manager must be specified. + /// The Cryptographic Materials Manager that the created Required Encryption Context Cryptographic Materials Manager will delegate to. Either a Keyring or underlying Cryptographic Materials Manager must be specified. pub fn underlying_cmm( mut self, input: impl ::std::convert::Into, @@ -122,7 +122,7 @@ impl CreateRequiredEncryptionContextCmmFluentBuilder { self.inner = self.inner.underlying_cmm(input.into()); self } - /// The Cryprographic Materials Manager that the created Required Encryption Context Cryptographic Materials Manager will delegate to. Either a Keyring or underlying Cryprographic Materials Manager must be specified. + /// The Cryptographic Materials Manager that the created Required Encryption Context Cryptographic Materials Manager will delegate to. Either a Keyring or underlying Cryptographic Materials Manager must be specified. pub fn set_underlying_cmm( mut self, input: ::std::option::Option, @@ -130,7 +130,7 @@ impl CreateRequiredEncryptionContextCmmFluentBuilder { self.inner = self.inner.set_underlying_cmm(input); self } - /// The Cryprographic Materials Manager that the created Required Encryption Context Cryptographic Materials Manager will delegate to. Either a Keyring or underlying Cryprographic Materials Manager must be specified. + /// The Cryptographic Materials Manager that the created Required Encryption Context Cryptographic Materials Manager will delegate to. Either a Keyring or underlying Cryptographic Materials Manager must be specified. pub fn get_underlying_cmm(&self) -> &::std::option::Option{ self.inner.get_underlying_cmm() } diff --git a/releases/rust/db_esdk/src/deps/aws_cryptography_materialProviders/types/_create_default_cryptographic_materials_manager_input.rs b/releases/rust/db_esdk/src/deps/aws_cryptography_materialProviders/types/_create_default_cryptographic_materials_manager_input.rs index fa11f3fe8..5f89405bd 100644 --- a/releases/rust/db_esdk/src/deps/aws_cryptography_materialProviders/types/_create_default_cryptographic_materials_manager_input.rs +++ b/releases/rust/db_esdk/src/deps/aws_cryptography_materialProviders/types/_create_default_cryptographic_materials_manager_input.rs @@ -5,13 +5,13 @@ #[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::fmt::Debug)] /// Inputs for creating a Default Cryptographic Materials Manager. pub struct CreateDefaultCryptographicMaterialsManagerInput { - /// The Keyring that the created Default Cryprographic Materials Manager will use to wrap data keys. + /// The Keyring that the created Default Cryptographic Materials Manager will use to wrap data keys. pub keyring: ::std::option::Option< crate::deps::aws_cryptography_materialProviders::types::keyring::KeyringRef, >, } impl CreateDefaultCryptographicMaterialsManagerInput { - /// The Keyring that the created Default Cryprographic Materials Manager will use to wrap data keys. + /// The Keyring that the created Default Cryptographic Materials Manager will use to wrap data keys. pub fn keyring( &self, ) -> &::std::option::Option< @@ -38,7 +38,7 @@ pub struct CreateDefaultCryptographicMaterialsManagerInputBuilder { >, } impl CreateDefaultCryptographicMaterialsManagerInputBuilder { - /// The Keyring that the created Default Cryprographic Materials Manager will use to wrap data keys. + /// The Keyring that the created Default Cryptographic Materials Manager will use to wrap data keys. pub fn keyring( mut self, input: impl ::std::convert::Into< @@ -48,7 +48,7 @@ impl CreateDefaultCryptographicMaterialsManagerInputBuilder { self.keyring = ::std::option::Option::Some(input.into()); self } - /// The Keyring that the created Default Cryprographic Materials Manager will use to wrap data keys. + /// The Keyring that the created Default Cryptographic Materials Manager will use to wrap data keys. pub fn set_keyring( mut self, input: ::std::option::Option< @@ -58,7 +58,7 @@ impl CreateDefaultCryptographicMaterialsManagerInputBuilder { self.keyring = input; self } - /// The Keyring that the created Default Cryprographic Materials Manager will use to wrap data keys. + /// The Keyring that the created Default Cryptographic Materials Manager will use to wrap data keys. pub fn get_keyring( &self, ) -> &::std::option::Option< diff --git a/releases/rust/db_esdk/src/deps/aws_cryptography_materialProviders/types/_create_required_encryption_context_cmm_input.rs b/releases/rust/db_esdk/src/deps/aws_cryptography_materialProviders/types/_create_required_encryption_context_cmm_input.rs index d78d84673..0c001378b 100644 --- a/releases/rust/db_esdk/src/deps/aws_cryptography_materialProviders/types/_create_required_encryption_context_cmm_input.rs +++ b/releases/rust/db_esdk/src/deps/aws_cryptography_materialProviders/types/_create_required_encryption_context_cmm_input.rs @@ -5,15 +5,15 @@ #[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::fmt::Debug)] /// Inputs for creating an Required Encryption Context Cryptographic Materials Manager. pub struct CreateRequiredEncryptionContextCmmInput { - /// The Keyring that the created Cryprographic Materials Manager will use to wrap data keys. The created Required Encryption Context CMM will delegate to a Default Cryptographic Materials Manager created with this Keyring. Either a Keyring or an underlying Cryprographic Materials Manager must be specified as input. + /// The Keyring that the created Cryptographic Materials Manager will use to wrap data keys. The created Required Encryption Context CMM will delegate to a Default Cryptographic Materials Manager created with this Keyring. Either a Keyring or an underlying Cryptographic Materials Manager must be specified as input. pub keyring: ::std::option::Option, /// A list of Encryption Context keys which are required to be supplied during encryption and decryption, and correspond to Encryption Context key-value pairs which are not stored on the resulting message. pub required_encryption_context_keys: ::std::option::Option<::std::vec::Vec<::std::string::String>>, -/// The Cryprographic Materials Manager that the created Required Encryption Context Cryptographic Materials Manager will delegate to. Either a Keyring or underlying Cryprographic Materials Manager must be specified. +/// The Cryptographic Materials Manager that the created Required Encryption Context Cryptographic Materials Manager will delegate to. Either a Keyring or underlying Cryptographic Materials Manager must be specified. pub underlying_cmm: ::std::option::Option, } impl CreateRequiredEncryptionContextCmmInput { - /// The Keyring that the created Cryprographic Materials Manager will use to wrap data keys. The created Required Encryption Context CMM will delegate to a Default Cryptographic Materials Manager created with this Keyring. Either a Keyring or an underlying Cryprographic Materials Manager must be specified as input. + /// The Keyring that the created Cryptographic Materials Manager will use to wrap data keys. The created Required Encryption Context CMM will delegate to a Default Cryptographic Materials Manager created with this Keyring. Either a Keyring or an underlying Cryptographic Materials Manager must be specified as input. pub fn keyring( &self, ) -> &::std::option::Option< @@ -27,7 +27,7 @@ impl CreateRequiredEncryptionContextCmmInput { ) -> &::std::option::Option<::std::vec::Vec<::std::string::String>> { &self.required_encryption_context_keys } - /// The Cryprographic Materials Manager that the created Required Encryption Context Cryptographic Materials Manager will delegate to. Either a Keyring or underlying Cryprographic Materials Manager must be specified. + /// The Cryptographic Materials Manager that the created Required Encryption Context Cryptographic Materials Manager will delegate to. Either a Keyring or underlying Cryptographic Materials Manager must be specified. pub fn underlying_cmm(&self) -> &::std::option::Option{ &self.underlying_cmm } @@ -50,7 +50,7 @@ pub(crate) required_encryption_context_keys: ::std::option::Option<::std::vec::V pub(crate) underlying_cmm: ::std::option::Option, } impl CreateRequiredEncryptionContextCmmInputBuilder { - /// The Keyring that the created Cryprographic Materials Manager will use to wrap data keys. The created Required Encryption Context CMM will delegate to a Default Cryptographic Materials Manager created with this Keyring. Either a Keyring or an underlying Cryprographic Materials Manager must be specified as input. + /// The Keyring that the created Cryptographic Materials Manager will use to wrap data keys. The created Required Encryption Context CMM will delegate to a Default Cryptographic Materials Manager created with this Keyring. Either a Keyring or an underlying Cryptographic Materials Manager must be specified as input. pub fn keyring( mut self, input: impl ::std::convert::Into< @@ -60,7 +60,7 @@ impl CreateRequiredEncryptionContextCmmInputBuilder { self.keyring = ::std::option::Option::Some(input.into()); self } - /// The Keyring that the created Cryprographic Materials Manager will use to wrap data keys. The created Required Encryption Context CMM will delegate to a Default Cryptographic Materials Manager created with this Keyring. Either a Keyring or an underlying Cryprographic Materials Manager must be specified as input. + /// The Keyring that the created Cryptographic Materials Manager will use to wrap data keys. The created Required Encryption Context CMM will delegate to a Default Cryptographic Materials Manager created with this Keyring. Either a Keyring or an underlying Cryptographic Materials Manager must be specified as input. pub fn set_keyring( mut self, input: ::std::option::Option< @@ -70,7 +70,7 @@ impl CreateRequiredEncryptionContextCmmInputBuilder { self.keyring = input; self } - /// The Keyring that the created Cryprographic Materials Manager will use to wrap data keys. The created Required Encryption Context CMM will delegate to a Default Cryptographic Materials Manager created with this Keyring. Either a Keyring or an underlying Cryprographic Materials Manager must be specified as input. + /// The Keyring that the created Cryptographic Materials Manager will use to wrap data keys. The created Required Encryption Context CMM will delegate to a Default Cryptographic Materials Manager created with this Keyring. Either a Keyring or an underlying Cryptographic Materials Manager must be specified as input. pub fn get_keyring( &self, ) -> &::std::option::Option< @@ -100,7 +100,7 @@ impl CreateRequiredEncryptionContextCmmInputBuilder { ) -> &::std::option::Option<::std::vec::Vec<::std::string::String>> { &self.required_encryption_context_keys } - /// The Cryprographic Materials Manager that the created Required Encryption Context Cryptographic Materials Manager will delegate to. Either a Keyring or underlying Cryprographic Materials Manager must be specified. + /// The Cryptographic Materials Manager that the created Required Encryption Context Cryptographic Materials Manager will delegate to. Either a Keyring or underlying Cryptographic Materials Manager must be specified. pub fn underlying_cmm( mut self, input: impl ::std::convert::Into, @@ -108,7 +108,7 @@ impl CreateRequiredEncryptionContextCmmInputBuilder { self.underlying_cmm = ::std::option::Option::Some(input.into()); self } - /// The Cryprographic Materials Manager that the created Required Encryption Context Cryptographic Materials Manager will delegate to. Either a Keyring or underlying Cryprographic Materials Manager must be specified. + /// The Cryptographic Materials Manager that the created Required Encryption Context Cryptographic Materials Manager will delegate to. Either a Keyring or underlying Cryptographic Materials Manager must be specified. pub fn set_underlying_cmm( mut self, input: ::std::option::Option, @@ -116,7 +116,7 @@ impl CreateRequiredEncryptionContextCmmInputBuilder { self.underlying_cmm = input; self } - /// The Cryprographic Materials Manager that the created Required Encryption Context Cryptographic Materials Manager will delegate to. Either a Keyring or underlying Cryprographic Materials Manager must be specified. + /// The Cryptographic Materials Manager that the created Required Encryption Context Cryptographic Materials Manager will delegate to. Either a Keyring or underlying Cryptographic Materials Manager must be specified. pub fn get_underlying_cmm(&self) -> &::std::option::Option{ &self.underlying_cmm } diff --git a/releases/rust/db_esdk/src/deps/aws_cryptography_materialProviders/types/error.rs b/releases/rust/db_esdk/src/deps/aws_cryptography_materialProviders/types/error.rs index 6be7d1055..e1fae419f 100644 --- a/releases/rust/db_esdk/src/deps/aws_cryptography_materialProviders/types/error.rs +++ b/releases/rust/db_esdk/src/deps/aws_cryptography_materialProviders/types/error.rs @@ -13,12 +13,23 @@ pub enum Error { message: ::std::string::String, }, - #[allow(missing_docs)] + /// The requested element is not in the cache; AWS Crypto Tools intends to deprecate this for a non-error control scheme. EntryDoesNotExist { message: ::std::string::String, }, - #[allow(missing_docs)] + /// Thrown if a request is waiting for longer than `inflightTTL`. + /// The Storm Tracking Cache protects against unbounded parallelism. + /// The Storm Tracking Cache will only work `fanOut` number of concurrent requests. + /// As requests are completed, + /// queued requests are worked. + /// If a request is not worked in less than `inflightTTL`, + /// this exception is thrown. + /// + /// Note that this exception does NOT imply that the material requested + /// is invalid or unreachable; + /// it only implies that the cache had more requests to handle than it could + /// with the given `fanOut` and `inflightTTL` constraints. InFlightTtlExceeded { message: ::std::string::String, }, diff --git a/releases/rust/db_esdk/src/deps/com_amazonaws_dynamodb/client.rs b/releases/rust/db_esdk/src/deps/com_amazonaws_dynamodb/client.rs index 4c7527731..21eaf8fc6 100644 --- a/releases/rust/db_esdk/src/deps/com_amazonaws_dynamodb/client.rs +++ b/releases/rust/db_esdk/src/deps/com_amazonaws_dynamodb/client.rs @@ -212,6 +212,7 @@ impl crate::r#software::amazon::cryptography::services::dynamodb::internaldafny: .set_condition_expression(inner_input.r#condition_expression) .set_expression_attribute_names(inner_input.r#expression_attribute_names) .set_expression_attribute_values(inner_input.r#expression_attribute_values) +.set_return_values_on_condition_check_failure(inner_input.r#return_values_on_condition_check_failure) .send() .await }) @@ -565,6 +566,7 @@ impl crate::r#software::amazon::cryptography::services::dynamodb::internaldafny: .set_next_token(inner_input.r#next_token) .set_return_consumed_capacity(inner_input.r#return_consumed_capacity) .set_limit(inner_input.r#limit) +.set_return_values_on_condition_check_failure(inner_input.r#return_values_on_condition_check_failure) .send() .await }) @@ -859,6 +861,7 @@ impl crate::r#software::amazon::cryptography::services::dynamodb::internaldafny: .set_condition_expression(inner_input.r#condition_expression) .set_expression_attribute_names(inner_input.r#expression_attribute_names) .set_expression_attribute_values(inner_input.r#expression_attribute_values) +.set_return_values_on_condition_check_failure(inner_input.r#return_values_on_condition_check_failure) .send() .await }) @@ -1202,6 +1205,7 @@ impl crate::r#software::amazon::cryptography::services::dynamodb::internaldafny: .set_condition_expression(inner_input.r#condition_expression) .set_expression_attribute_names(inner_input.r#expression_attribute_names) .set_expression_attribute_values(inner_input.r#expression_attribute_values) +.set_return_values_on_condition_check_failure(inner_input.r#return_values_on_condition_check_failure) .send() .await }) diff --git a/releases/rust/db_esdk/src/deps/com_amazonaws_dynamodb/conversions/batch_statement_error.rs b/releases/rust/db_esdk/src/deps/com_amazonaws_dynamodb/conversions/batch_statement_error.rs index 5cfdcb5e5..22d9ca58f 100644 --- a/releases/rust/db_esdk/src/deps/com_amazonaws_dynamodb/conversions/batch_statement_error.rs +++ b/releases/rust/db_esdk/src/deps/com_amazonaws_dynamodb/conversions/batch_statement_error.rs @@ -13,6 +13,18 @@ pub fn to_dafny( }) , Message: crate::standard_library_conversions::ostring_to_dafny(&value.message), + Item: +::dafny_runtime::Rc::new(match &value.item { + Some(x) => crate::r#_Wrappers_Compile::Option::Some { value : + ::dafny_runtime::dafny_runtime_conversions::hashmap_to_dafny_map(x, + |k| dafny_runtime::dafny_runtime_conversions::unicode_chars_false::string_to_dafny_string(&k), + |v| crate::deps::com_amazonaws_dynamodb::conversions::attribute_value::to_dafny(v) +, + ) + }, + None => crate::r#_Wrappers_Compile::Option::None {} +}) +, } ) } @@ -31,5 +43,17 @@ pub fn from_dafny( } ) .set_message(crate::standard_library_conversions::ostring_from_dafny(dafny_value.Message().clone())) + .set_item(match (*dafny_value.Item()).as_ref() { + crate::r#_Wrappers_Compile::Option::Some { value } => + Some( + ::dafny_runtime::dafny_runtime_conversions::dafny_map_to_hashmap(value, + |k: &::dafny_runtime::dafny_runtime_conversions::DafnySequence<::dafny_runtime::dafny_runtime_conversions::DafnyCharUTF16>| dafny_runtime::dafny_runtime_conversions::unicode_chars_false::dafny_string_to_string(k), + |v: &::dafny_runtime::Rc| crate::deps::com_amazonaws_dynamodb::conversions::attribute_value::from_dafny(v.clone()) +, + ) + ), + _ => None +} +) .build() } diff --git a/releases/rust/db_esdk/src/deps/com_amazonaws_dynamodb/conversions/batch_statement_request.rs b/releases/rust/db_esdk/src/deps/com_amazonaws_dynamodb/conversions/batch_statement_request.rs index 45e33585e..64e9810e1 100644 --- a/releases/rust/db_esdk/src/deps/com_amazonaws_dynamodb/conversions/batch_statement_request.rs +++ b/releases/rust/db_esdk/src/deps/com_amazonaws_dynamodb/conversions/batch_statement_request.rs @@ -19,6 +19,11 @@ pub fn to_dafny( }) , ConsistentRead: crate::standard_library_conversions::obool_to_dafny(&value.consistent_read), + ReturnValuesOnConditionCheckFailure: ::dafny_runtime::Rc::new(match &value.return_values_on_condition_check_failure { + Some(x) => crate::_Wrappers_Compile::Option::Some { value: crate::deps::com_amazonaws_dynamodb::conversions::return_values_on_condition_check_failure::to_dafny(x.clone()) }, + None => crate::_Wrappers_Compile::Option::None { } +}) +, } ) } @@ -42,6 +47,13 @@ pub fn from_dafny( } ) .set_consistent_read(crate::standard_library_conversions::obool_from_dafny(dafny_value.ConsistentRead().clone())) + .set_return_values_on_condition_check_failure(match &**dafny_value.ReturnValuesOnConditionCheckFailure() { + crate::r#_Wrappers_Compile::Option::Some { value } => Some( + crate::deps::com_amazonaws_dynamodb::conversions::return_values_on_condition_check_failure::from_dafny(value) + ), + _ => None, +} +) .build() .unwrap() } diff --git a/releases/rust/db_esdk/src/deps/com_amazonaws_dynamodb/conversions/delete_item/_delete_item_request.rs b/releases/rust/db_esdk/src/deps/com_amazonaws_dynamodb/conversions/delete_item/_delete_item_request.rs index 464b1a0a3..2f4e7e2a1 100644 --- a/releases/rust/db_esdk/src/deps/com_amazonaws_dynamodb/conversions/delete_item/_delete_item_request.rs +++ b/releases/rust/db_esdk/src/deps/com_amazonaws_dynamodb/conversions/delete_item/_delete_item_request.rs @@ -70,6 +70,11 @@ pub fn to_dafny( }, None => crate::r#_Wrappers_Compile::Option::None {} }) +, + ReturnValuesOnConditionCheckFailure: ::dafny_runtime::Rc::new(match &value.return_values_on_condition_check_failure { + Some(x) => crate::_Wrappers_Compile::Option::Some { value: crate::deps::com_amazonaws_dynamodb::conversions::return_values_on_condition_check_failure::to_dafny(x.clone()) }, + None => crate::_Wrappers_Compile::Option::None { } +}) , }) } @@ -150,6 +155,13 @@ pub fn from_dafny( ), _ => None } +) + .set_return_values_on_condition_check_failure(match &**dafny_value.ReturnValuesOnConditionCheckFailure() { + crate::r#_Wrappers_Compile::Option::Some { value } => Some( + crate::deps::com_amazonaws_dynamodb::conversions::return_values_on_condition_check_failure::from_dafny(value) + ), + _ => None, +} ) .build() .unwrap() diff --git a/releases/rust/db_esdk/src/deps/com_amazonaws_dynamodb/conversions/execute_statement/_execute_statement_request.rs b/releases/rust/db_esdk/src/deps/com_amazonaws_dynamodb/conversions/execute_statement/_execute_statement_request.rs index d6fbaa8b8..b659022c2 100644 --- a/releases/rust/db_esdk/src/deps/com_amazonaws_dynamodb/conversions/execute_statement/_execute_statement_request.rs +++ b/releases/rust/db_esdk/src/deps/com_amazonaws_dynamodb/conversions/execute_statement/_execute_statement_request.rs @@ -27,6 +27,11 @@ pub fn to_dafny( }) , Limit: crate::standard_library_conversions::oint_to_dafny(value.limit), + ReturnValuesOnConditionCheckFailure: ::dafny_runtime::Rc::new(match &value.return_values_on_condition_check_failure { + Some(x) => crate::_Wrappers_Compile::Option::Some { value: crate::deps::com_amazonaws_dynamodb::conversions::return_values_on_condition_check_failure::to_dafny(x.clone()) }, + None => crate::_Wrappers_Compile::Option::None { } +}) +, }) } #[allow(dead_code)] @@ -58,6 +63,13 @@ pub fn from_dafny( } ) .set_limit(crate::standard_library_conversions::oint_from_dafny(dafny_value.Limit().clone())) + .set_return_values_on_condition_check_failure(match &**dafny_value.ReturnValuesOnConditionCheckFailure() { + crate::r#_Wrappers_Compile::Option::Some { value } => Some( + crate::deps::com_amazonaws_dynamodb::conversions::return_values_on_condition_check_failure::from_dafny(value) + ), + _ => None, +} +) .build() .unwrap() } diff --git a/releases/rust/db_esdk/src/deps/com_amazonaws_dynamodb/conversions/parameterized_statement.rs b/releases/rust/db_esdk/src/deps/com_amazonaws_dynamodb/conversions/parameterized_statement.rs index be3b426c9..46ad37eae 100644 --- a/releases/rust/db_esdk/src/deps/com_amazonaws_dynamodb/conversions/parameterized_statement.rs +++ b/releases/rust/db_esdk/src/deps/com_amazonaws_dynamodb/conversions/parameterized_statement.rs @@ -17,6 +17,11 @@ pub fn to_dafny( }, None => crate::r#_Wrappers_Compile::Option::None {} }) +, + ReturnValuesOnConditionCheckFailure: ::dafny_runtime::Rc::new(match &value.return_values_on_condition_check_failure { + Some(x) => crate::_Wrappers_Compile::Option::Some { value: crate::deps::com_amazonaws_dynamodb::conversions::return_values_on_condition_check_failure::to_dafny(x.clone()) }, + None => crate::_Wrappers_Compile::Option::None { } +}) , } ) @@ -39,6 +44,13 @@ pub fn from_dafny( ), _ => None } +) + .set_return_values_on_condition_check_failure(match &**dafny_value.ReturnValuesOnConditionCheckFailure() { + crate::r#_Wrappers_Compile::Option::Some { value } => Some( + crate::deps::com_amazonaws_dynamodb::conversions::return_values_on_condition_check_failure::from_dafny(value) + ), + _ => None, +} ) .build() .unwrap() diff --git a/releases/rust/db_esdk/src/deps/com_amazonaws_dynamodb/conversions/put_item/_put_item_request.rs b/releases/rust/db_esdk/src/deps/com_amazonaws_dynamodb/conversions/put_item/_put_item_request.rs index a8e69e620..b62f82434 100644 --- a/releases/rust/db_esdk/src/deps/com_amazonaws_dynamodb/conversions/put_item/_put_item_request.rs +++ b/releases/rust/db_esdk/src/deps/com_amazonaws_dynamodb/conversions/put_item/_put_item_request.rs @@ -70,6 +70,11 @@ pub fn to_dafny( }, None => crate::r#_Wrappers_Compile::Option::None {} }) +, + ReturnValuesOnConditionCheckFailure: ::dafny_runtime::Rc::new(match &value.return_values_on_condition_check_failure { + Some(x) => crate::_Wrappers_Compile::Option::Some { value: crate::deps::com_amazonaws_dynamodb::conversions::return_values_on_condition_check_failure::to_dafny(x.clone()) }, + None => crate::_Wrappers_Compile::Option::None { } +}) , }) } @@ -150,6 +155,13 @@ pub fn from_dafny( ), _ => None } +) + .set_return_values_on_condition_check_failure(match &**dafny_value.ReturnValuesOnConditionCheckFailure() { + crate::r#_Wrappers_Compile::Option::Some { value } => Some( + crate::deps::com_amazonaws_dynamodb::conversions::return_values_on_condition_check_failure::from_dafny(value) + ), + _ => None, +} ) .build() .unwrap() diff --git a/releases/rust/db_esdk/src/deps/com_amazonaws_dynamodb/conversions/update_item/_update_item_request.rs b/releases/rust/db_esdk/src/deps/com_amazonaws_dynamodb/conversions/update_item/_update_item_request.rs index 5596b3cb9..4f6d4c49d 100644 --- a/releases/rust/db_esdk/src/deps/com_amazonaws_dynamodb/conversions/update_item/_update_item_request.rs +++ b/releases/rust/db_esdk/src/deps/com_amazonaws_dynamodb/conversions/update_item/_update_item_request.rs @@ -83,6 +83,11 @@ pub fn to_dafny( }, None => crate::r#_Wrappers_Compile::Option::None {} }) +, + ReturnValuesOnConditionCheckFailure: ::dafny_runtime::Rc::new(match &value.return_values_on_condition_check_failure { + Some(x) => crate::_Wrappers_Compile::Option::Some { value: crate::deps::com_amazonaws_dynamodb::conversions::return_values_on_condition_check_failure::to_dafny(x.clone()) }, + None => crate::_Wrappers_Compile::Option::None { } +}) , }) } @@ -176,6 +181,13 @@ pub fn from_dafny( ), _ => None } +) + .set_return_values_on_condition_check_failure(match &**dafny_value.ReturnValuesOnConditionCheckFailure() { + crate::r#_Wrappers_Compile::Option::Some { value } => Some( + crate::deps::com_amazonaws_dynamodb::conversions::return_values_on_condition_check_failure::from_dafny(value) + ), + _ => None, +} ) .build() .unwrap() diff --git a/releases/rust/db_esdk/src/digest.rs b/releases/rust/db_esdk/src/digest.rs index 10dffd979..fda68da34 100644 --- a/releases/rust/db_esdk/src/digest.rs +++ b/releases/rust/db_esdk/src/digest.rs @@ -27,10 +27,10 @@ impl crate::ExternDigest::_default { DigestAlgorithm::SHA_384 {} => &digest::SHA384, DigestAlgorithm::SHA_256 {} => &digest::SHA256, }; - let message_vec: Vec = message.iter().collect(); - let result = digest::digest(algorithm, &message_vec); + let message_vec = &message.to_array(); + let result = digest::digest(algorithm, message_vec); ::dafny_runtime::Rc::new(_Wrappers_Compile::Result::Success { - value: result.as_ref().iter().cloned().collect(), + value: dafny_runtime::Sequence::from_array_owned(result.as_ref().to_vec()), }) } } diff --git a/releases/rust/db_esdk/src/ecdh.rs b/releases/rust/db_esdk/src/ecdh.rs index 5067dcf28..111542371 100644 --- a/releases/rust/db_esdk/src/ecdh.rs +++ b/releases/rust/db_esdk/src/ecdh.rs @@ -71,7 +71,7 @@ pub mod ECDH { use std::ptr::null_mut; const ELEM_MAX_BITS: usize = 521; - const ELEM_MAX_BYTES: usize = (ELEM_MAX_BITS + 7) / 8; + const ELEM_MAX_BYTES: usize = ELEM_MAX_BITS.div_ceil(8); const PUBLIC_KEY_MAX_LEN: usize = 1 + (2 * ELEM_MAX_BYTES); // This is the value checked in the Dafny test @@ -279,7 +279,7 @@ pub mod ECDH { ) -> Rc<_Wrappers_Compile::Result<::dafny_runtime::Sequence, Rc>> { let result = get_out_of_bounds(curve_algorithm); Rc::new(_Wrappers_Compile::Result::Success { - value: result.iter().cloned().collect(), + value: dafny_runtime::Sequence::from_array_owned(result), }) } @@ -306,17 +306,17 @@ pub mod ECDH { ) -> Rc<_Wrappers_Compile::Result<::dafny_runtime::Sequence, Rc>> { let result = get_infinity(curve_algorithm); Rc::new(_Wrappers_Compile::Result::Success { - value: result.iter().cloned().collect(), + value: dafny_runtime::Sequence::from_array_owned(result), }) } pub fn GetPublicKey( curve_algorithm: &Rc, private_key: &Rc, ) -> Rc<_Wrappers_Compile::Result<::dafny_runtime::Sequence, Rc>> { - let private_key: Vec = private_key.pem().iter().collect(); - match get_public_key(curve_algorithm, &private_key) { + let private_key = &private_key.pem().to_array(); + match get_public_key(curve_algorithm, private_key) { Ok(x) => Rc::new(_Wrappers_Compile::Result::Success { - value: x.iter().cloned().collect(), + value: dafny_runtime::Sequence::from_array_owned(x), }), Err(e) => { let msg = format!("ECDH Get Public Key : {}", e); @@ -359,8 +359,8 @@ pub mod ECDH { curve_algorithm: &Rc, public_key: &::dafny_runtime::Sequence, ) -> Rc<_Wrappers_Compile::Result>> { - let public_key: Vec = public_key.iter().collect(); - match valid_public_key(curve_algorithm, &public_key) { + let public_key = &public_key.to_array(); + match valid_public_key(curve_algorithm, public_key) { Ok(_) => Rc::new(_Wrappers_Compile::Result::Success { value: true }), Err(e) => Rc::new(_Wrappers_Compile::Result::Failure { error: super::error(&e), @@ -372,10 +372,10 @@ pub mod ECDH { public_key: &::dafny_runtime::Sequence, _curve_algorithm: &Rc, ) -> Rc<_Wrappers_Compile::Result<::dafny_runtime::Sequence, Rc>> { - let public_key: Vec = public_key.iter().collect(); - match X509_to_X962(&public_key, true, None) { + let public_key = &public_key.to_array(); + match X509_to_X962(public_key, true, None) { Ok(v) => Rc::new(_Wrappers_Compile::Result::Success { - value: v.iter().cloned().collect(), + value: dafny_runtime::Sequence::from_array_owned(v), }), Err(e) => { let msg = format!("ECDH Compress Public Key {}", e); @@ -390,10 +390,10 @@ pub mod ECDH { public_key: &::dafny_runtime::Sequence, curve_algorithm: &Rc, ) -> Rc<_Wrappers_Compile::Result<::dafny_runtime::Sequence, Rc>> { - let public_key: Vec = public_key.iter().collect(); - match X962_to_X509(&public_key, curve_algorithm) { + let public_key = &public_key.to_array(); + match X962_to_X509(public_key, curve_algorithm) { Ok(v) => Rc::new(_Wrappers_Compile::Result::Success { - value: v.iter().cloned().collect(), + value: dafny_runtime::Sequence::from_array_owned(v), }), Err(e) => { let msg = format!("ECDH Decompress Public Key {}", e); @@ -407,8 +407,8 @@ pub mod ECDH { pub fn ParsePublicKey( publicKey: &::dafny_runtime::Sequence, ) -> Rc<_Wrappers_Compile::Result<::dafny_runtime::Sequence, Rc>> { - let public_key: Vec = publicKey.iter().collect(); - match X509_to_X962(&public_key, false, None) { + let public_key = &publicKey.to_array(); + match X509_to_X962(public_key, false, None) { Ok(_) => Rc::new(_Wrappers_Compile::Result::Success { value: publicKey.clone(), }), @@ -451,11 +451,11 @@ pub mod ECDH { private_key: &Rc, public_key: &Rc, ) -> Rc<_Wrappers_Compile::Result<::dafny_runtime::Sequence, Rc>> { - let private_key: Vec = private_key.pem().iter().collect(); - let public_key: Vec = public_key.der().iter().collect(); - match agree(curve_algorithm, &private_key, &public_key) { + let private_key = &private_key.pem().to_array(); + let public_key = &public_key.der().to_array(); + match agree(curve_algorithm, private_key, public_key) { Ok(v) => Rc::new(_Wrappers_Compile::Result::Success { - value: v.iter().cloned().collect(), + value: dafny_runtime::Sequence::from_array_owned(v), }), Err(e) => { let msg = format!("ECDH Calculate Shared Secret : {}", e); @@ -500,8 +500,8 @@ pub mod ECDH { match ecdsa_key_gen(s) { Ok(x) => Rc::new(_Wrappers_Compile::Result::Success { value: Rc::new(crate::ECDH::EccKeyPair::EccKeyPair { - publicKey: x.0.iter().cloned().collect(), - privateKey: x.1.iter().cloned().collect(), + publicKey: dafny_runtime::Sequence::from_array_owned(x.0), + privateKey: dafny_runtime::Sequence::from_array_owned(x.1), }), }), Err(e) => { diff --git a/releases/rust/db_esdk/src/ecdsa.rs b/releases/rust/db_esdk/src/ecdsa.rs index b31307f09..f7b992333 100644 --- a/releases/rust/db_esdk/src/ecdsa.rs +++ b/releases/rust/db_esdk/src/ecdsa.rs @@ -61,7 +61,7 @@ pub mod Signature { } const ELEM_MAX_BITS: usize = 521; - const ELEM_MAX_BYTES: usize = (ELEM_MAX_BITS + 7) / 8; + const ELEM_MAX_BYTES: usize = ELEM_MAX_BITS.div_ceil(8); const PUBLIC_KEY_MAX_LEN: usize = 1 + (2 * ELEM_MAX_BYTES); pub(crate) fn sec1_compress( @@ -134,8 +134,8 @@ pub mod Signature { match ecdsa_key_gen(alg) { Ok(x) => Rc::new(_Wrappers_Compile::Result::Success { value: Rc::new(Signature::SignatureKeyPair::SignatureKeyPair { - verificationKey: x.0.iter().cloned().collect(), - signingKey: x.1.iter().cloned().collect(), + verificationKey: dafny_runtime::Sequence::from_array_owned(x.0), + signingKey: dafny_runtime::Sequence::from_array_owned(x.1), }), }), Err(e) => { @@ -182,11 +182,11 @@ pub mod Signature { key: &::dafny_runtime::Sequence, msg: &::dafny_runtime::Sequence, ) -> Rc<_Wrappers_Compile::Result<::dafny_runtime::Sequence, Rc>> { - let key: Vec = key.iter().collect(); - let msg: Vec = msg.iter().collect(); - match ecdsa_sign(alg, &key, &msg) { + let key = &key.to_array(); + let msg = &msg.to_array(); + match ecdsa_sign(alg, key, msg) { Ok(x) => Rc::new(_Wrappers_Compile::Result::Success { - value: x.iter().cloned().collect(), + value: dafny_runtime::Sequence::from_array_owned(x), }), Err(e) => { let msg = format!("ECDSA Sign : {}", e); @@ -214,10 +214,10 @@ pub mod Signature { msg: &::dafny_runtime::Sequence, sig: &::dafny_runtime::Sequence, ) -> Rc<_Wrappers_Compile::Result>> { - let key: Vec = key.iter().collect(); - let msg: Vec = msg.iter().collect(); - let sig: Vec = sig.iter().collect(); - match ecdsa_verify(alg, &key, &msg, &sig) { + let key = &key.to_array(); + let msg = &msg.to_array(); + let sig = &sig.to_array(); + match ecdsa_verify(alg, key, msg, sig) { Ok(x) => Rc::new(_Wrappers_Compile::Result::Success { value: x }), Err(e) => { let msg = format!("ECDSA Verify : {}", e); @@ -248,7 +248,7 @@ pub mod Signature { }; let message: ::dafny_runtime::Sequence = - [1u8, 2, 3, 4, 5].iter().cloned().collect(); + dafny_runtime::Sequence::from_array_owned(vec![1u8, 2, 3, 4, 5]); let sig = match &*Sign(&alg, &s_key, &message) { _Wrappers_Compile::Result::Success { value } => value.clone(), diff --git a/releases/rust/db_esdk/src/hmac.rs b/releases/rust/db_esdk/src/hmac.rs index 3e33c9afb..fdbe43ec0 100644 --- a/releases/rust/db_esdk/src/hmac.rs +++ b/releases/rust/db_esdk/src/hmac.rs @@ -32,12 +32,12 @@ impl crate::HMAC::_default { >, >, > { - let key_vec: Vec = input.key().iter().collect(); - let the_key = hmac::Key::new(convert_algorithm(input.digestAlgorithm()), &key_vec); - let message_vec: Vec = input.message().iter().collect(); - let result = hmac::sign(&the_key, &message_vec); + let key_vec = &input.key().to_array(); + let the_key = hmac::Key::new(convert_algorithm(input.digestAlgorithm()), key_vec); + let message_vec = &input.message().to_array(); + let result = hmac::sign(&the_key, message_vec); ::dafny_runtime::Rc::new(_Wrappers_Compile::Result::Success { - value: result.as_ref().iter().cloned().collect(), + value: dafny_runtime::Sequence::from_array_owned(result.as_ref().to_vec()), }) } } @@ -66,8 +66,8 @@ pub mod HMAC { impl HMac { pub fn Init(&self, salt: &::dafny_runtime::Sequence) { - let salt: Vec = salt.iter().collect(); - self.inner.lock().unwrap().key = Some(hmac::Key::new(self.algorithm, &salt)); + let salt = &salt.to_array(); + self.inner.lock().unwrap().key = Some(hmac::Key::new(self.algorithm, salt)); let context = Some(hmac::Context::with_key( self.inner.lock().unwrap().key.as_ref().unwrap(), )); @@ -102,25 +102,25 @@ pub mod HMAC { ::dafny_runtime::Rc::new(_Wrappers_Compile::Result::Success { value: inner }) } pub fn BlockUpdate(&self, block: &::dafny_runtime::Sequence) { - let part: Vec = block.iter().collect(); + let part = &block.to_array(); self.inner .lock() .unwrap() .context .as_mut() .unwrap() - .update(&part); + .update(part); } pub fn GetResult(&self) -> ::dafny_runtime::Sequence { let is_empty = self.inner.lock().unwrap().context.is_none(); if is_empty { - return [].iter().cloned().collect(); + return dafny_runtime::Sequence::from_array_owned(vec![]); } let tag = self.inner.lock().unwrap().context.take().unwrap().sign(); // other languages allow you to call BlockUpdate after GetResult // so we re-initialize to mimic that behavior self.re_init(); - tag.as_ref().iter().cloned().collect() + dafny_runtime::Sequence::from_array_owned(tag.as_ref().to_vec()) } } } diff --git a/releases/rust/db_esdk/src/implementation_from_dafny.rs b/releases/rust/db_esdk/src/implementation_from_dafny.rs index 7b1cfbce6..dc6ae5c56 100644 --- a/releases/rust/db_esdk/src/implementation_from_dafny.rs +++ b/releases/rust/db_esdk/src/implementation_from_dafny.rs @@ -32,6 +32,7 @@ pub mod AESEncryption { pub use ::dafny_runtime::Sequence; pub use ::std::sync::Arc; pub use crate::implementation_from_dafny::software::amazon::cryptography::primitives::internaldafny::types::AESEncryptOutput; + pub use ::dafny_runtime::truncate; pub use ::dafny_runtime::int; pub use crate::implementation_from_dafny::software::amazon::cryptography::primitives::internaldafny::types::AESEncryptInput; pub use crate::implementation_from_dafny::_Wrappers_Compile::Result; @@ -45,19 +46,20 @@ pub mod AESEncryption { pub struct _default {} impl _default { - /// ../submodules/MaterialProviders/AwsCryptographyPrimitives/src/AESEncryption.dfy(20,3) + /// ../submodules/MaterialProviders/AwsCryptographyPrimitives/src/AESEncryption.dfy(21,3) pub fn EncryptionOutputFromByteSeq(s: &Sequence, encAlg: &Arc) -> Arc { - let mut cipherText: Sequence = s.take(&(s.cardinality() - int!(encAlg.tagLength().clone()))); - let mut authTag: Sequence = s.drop(&(s.cardinality() - int!(encAlg.tagLength().clone()))); + let mut pivot_point: u64 = truncate!(s.cardinality(), u64) - encAlg.tagLength().clone() as u64; + let mut cipherText: Sequence = s.take(&int!((&pivot_point).clone())); + let mut authTag: Sequence = s.drop(&int!((&pivot_point).clone())); Arc::new(AESEncryptOutput::AESEncryptOutput { cipherText: cipherText.clone(), authTag: authTag.clone() }) } - /// ../submodules/MaterialProviders/AwsCryptographyPrimitives/src/AESEncryption.dfy(48,3) + /// ../submodules/MaterialProviders/AwsCryptographyPrimitives/src/AESEncryption.dfy(51,3) pub fn AESEncrypt(input: &Arc) -> Arc, Arc>> { let mut res = MaybePlacebo::, Arc>>>::new(); - let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(input.iv().cardinality() == int!(input.encAlg().ivLength().clone()) && input.key().cardinality() == int!(input.encAlg().keyLength().clone()), &Arc::new(Error::AwsCryptographicPrimitivesError { + let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(truncate!(input.iv().cardinality(), u64) == input.encAlg().ivLength().clone() as u64 && truncate!(input.key().cardinality(), u64) == input.encAlg().keyLength().clone() as u64, &Arc::new(Error::AwsCryptographicPrimitivesError { message: string_utf16_of("Request does not match algorithm.") })); if valueOrError0.IsFailure() { @@ -78,14 +80,14 @@ pub mod AESEncryption { return res.read(); }; let mut value: Arc = valueOrError1.Extract(); - let mut valueOrError2: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(value.cipherText().cardinality() == msg.cardinality(), &Arc::new(Error::AwsCryptographicPrimitivesError { + let mut valueOrError2: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(truncate!(value.cipherText().cardinality(), u64) == truncate!(msg.cardinality(), u64), &Arc::new(Error::AwsCryptographicPrimitivesError { message: string_utf16_of("AESEncrypt did not return cipherText of expected length") })); if valueOrError2.IsFailure() { res = MaybePlacebo::from(valueOrError2.PropagateFailure::>()); return res.read(); }; - let mut valueOrError3: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(value.authTag().cardinality() == int!(encAlg.tagLength().clone()), &Arc::new(Error::AwsCryptographicPrimitivesError { + let mut valueOrError3: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(truncate!(value.authTag().cardinality(), u64) == encAlg.tagLength().clone() as u64, &Arc::new(Error::AwsCryptographicPrimitivesError { message: string_utf16_of("AESEncryption did not return valid tag") })); if valueOrError3.IsFailure() { @@ -97,10 +99,10 @@ pub mod AESEncryption { })); return res.read(); } - /// ../submodules/MaterialProviders/AwsCryptographyPrimitives/src/AESEncryption.dfy(98,3) + /// ../submodules/MaterialProviders/AwsCryptographyPrimitives/src/AESEncryption.dfy(105,3) pub fn AESDecrypt(input: &Arc) -> Arc, Arc>> { let mut res = MaybePlacebo::, Arc>>>::new(); - let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(input.key().cardinality() == int!(input.encAlg().keyLength().clone()) && input.iv().cardinality() == int!(input.encAlg().ivLength().clone()) && input.authTag().cardinality() == int!(input.encAlg().tagLength().clone()), &Arc::new(Error::AwsCryptographicPrimitivesError { + let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(truncate!(input.key().cardinality(), u64) == input.encAlg().keyLength().clone() as u64 && truncate!(input.iv().cardinality(), u64) == input.encAlg().ivLength().clone() as u64 && truncate!(input.authTag().cardinality(), u64) == input.encAlg().tagLength().clone() as u64, &Arc::new(Error::AwsCryptographicPrimitivesError { message: string_utf16_of("Request does not match algorithm.") })); if valueOrError0.IsFailure() { @@ -122,7 +124,7 @@ pub mod AESEncryption { return res.read(); }; let mut value: Sequence = valueOrError1.Extract(); - let mut valueOrError2: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(cipherTxt.cardinality() == value.cardinality(), &Arc::new(Error::AwsCryptographicPrimitivesError { + let mut valueOrError2: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(truncate!(cipherTxt.cardinality(), u64) == truncate!(value.cardinality(), u64), &Arc::new(Error::AwsCryptographicPrimitivesError { message: string_utf16_of("AESDecrypt did not return plaintext of expected length") })); if valueOrError2.IsFailure() { @@ -134,25 +136,25 @@ pub mod AESEncryption { })); return res.read(); } - /// ../submodules/MaterialProviders/AwsCryptographyPrimitives/src/AESEncryption.dfy(130,3) + /// ../submodules/MaterialProviders/AwsCryptographyPrimitives/src/AESEncryption.dfy(142,3) pub fn CreateAESEncryptExternSuccess(output: &Arc) -> Arc, OpaqueError>> { Arc::new(Result::, OpaqueError>::Success { value: output.clone() }) } - /// ../submodules/MaterialProviders/AwsCryptographyPrimitives/src/AESEncryption.dfy(134,3) + /// ../submodules/MaterialProviders/AwsCryptographyPrimitives/src/AESEncryption.dfy(146,3) pub fn CreateAESEncryptExternFailure(error: &OpaqueError) -> Arc, OpaqueError>> { Arc::new(Result::, OpaqueError>::Failure { error: error.clone() }) } - /// ../submodules/MaterialProviders/AwsCryptographyPrimitives/src/AESEncryption.dfy(138,3) + /// ../submodules/MaterialProviders/AwsCryptographyPrimitives/src/AESEncryption.dfy(150,3) pub fn CreateAESDecryptExternSuccess(bytes: &Sequence) -> Arc, OpaqueError>> { Arc::new(Result::, OpaqueError>::Success { value: bytes.clone() }) } - /// ../submodules/MaterialProviders/AwsCryptographyPrimitives/src/AESEncryption.dfy(142,3) + /// ../submodules/MaterialProviders/AwsCryptographyPrimitives/src/AESEncryption.dfy(154,3) pub fn CreateAESDecryptExternFailure(error: &OpaqueError) -> Arc, OpaqueError>> { Arc::new(Result::, OpaqueError>::Failure { error: error.clone() @@ -167,10 +169,11 @@ pub mod _Actions_Compile { pub use ::dafny_runtime::Sequence; pub use ::dafny_runtime::MaybePlacebo; pub use ::dafny_runtime::seq; - pub use ::dafny_runtime::DafnyInt; + pub use ::dafny_runtime::truncate; pub use ::dafny_runtime::integer_range; - pub use ::dafny_runtime::int; + pub use ::std::convert::Into; pub use ::dafny_runtime::rd; + pub use ::dafny_runtime::int; pub use ::std::sync::Arc; pub use crate::implementation_from_dafny::_Wrappers_Compile::Result::Success; pub use ::std::marker::Sync; @@ -189,28 +192,28 @@ pub mod _Actions_Compile { pub struct _default {} impl _default { - /// ../submodules/MaterialProviders/StandardLibrary/src/Actions.dfy(104,3) + /// ../submodules/MaterialProviders/StandardLibrary/src/Actions.dfy(110,3) pub fn DeterministicMap<_A: DafnyType, _R: DafnyType>(action: &Object>, s: &Sequence<_A>) -> Sequence<_R> { let mut res = MaybePlacebo::>::new(); let mut rs: Sequence<_R> = seq![] as Sequence<_R>; - let mut _hi0: DafnyInt = s.cardinality(); - for i in integer_range(int!(0), _hi0.clone()) { + let mut _hi0: u64 = truncate!(s.cardinality(), u64); + for i in integer_range(0, _hi0).map(Into::::into) { let mut r: _R; - let mut _out0: _R = DeterministicAction::<_A, _R>::Invoke(rd!(action.clone()), &s.get(&i)); + let mut _out0: _R = DeterministicAction::<_A, _R>::Invoke(rd!(action.clone()), &s.get(&int!((&i).clone()))); r = _out0.clone(); rs = rs.concat(&seq![r.clone()]); } res = MaybePlacebo::from(rs.clone()); return res.read(); } - /// ../submodules/MaterialProviders/StandardLibrary/src/Actions.dfy(133,3) + /// ../submodules/MaterialProviders/StandardLibrary/src/Actions.dfy(140,3) pub fn DeterministicMapWithResult<_A: DafnyType, _R: DafnyType, _E: DafnyType>(action: &Object>, s: &Sequence<_A>) -> Arc, _E>> { let mut res = MaybePlacebo::, _E>>>::new(); let mut rs: Sequence<_R> = seq![] as Sequence<_R>; - let mut _hi0: DafnyInt = s.cardinality(); - for i in integer_range(int!(0), _hi0.clone()) { + let mut _hi0: u64 = truncate!(s.cardinality(), u64); + for i in integer_range(0, _hi0).map(Into::::into) { let mut valueOrError0: Arc>; - let mut _out0: Arc> = DeterministicAction::<_A, Arc>>::Invoke(rd!(action.clone()), &s.get(&i)); + let mut _out0: Arc> = DeterministicAction::<_A, Arc>>::Invoke(rd!(action.clone()), &s.get(&int!((&i).clone()))); valueOrError0 = _out0.clone(); if valueOrError0.IsFailure() { res = MaybePlacebo::from(valueOrError0.PropagateFailure::>()); @@ -224,28 +227,28 @@ pub mod _Actions_Compile { })); return res.read(); } - /// ../submodules/MaterialProviders/StandardLibrary/src/Actions.dfy(170,3) + /// ../submodules/MaterialProviders/StandardLibrary/src/Actions.dfy(178,3) pub fn DeterministicFlatMap<_A: DafnyType, _R: DafnyType>(action: &Object>>, s: &Sequence<_A>) -> Sequence<_R> { let mut res = MaybePlacebo::>::new(); let mut rs: Sequence<_R> = seq![] as Sequence<_R>; - let mut _hi0: DafnyInt = s.cardinality(); - for i in integer_range(int!(0), _hi0.clone()) { + let mut _hi0: u64 = truncate!(s.cardinality(), u64); + for i in integer_range(0, _hi0).map(Into::::into) { let mut r: Sequence<_R>; - let mut _out0: Sequence<_R> = DeterministicAction::<_A, Sequence<_R>>::Invoke(rd!(action.clone()), &s.get(&i)); + let mut _out0: Sequence<_R> = DeterministicAction::<_A, Sequence<_R>>::Invoke(rd!(action.clone()), &s.get(&int!((&i).clone()))); r = _out0.clone(); rs = rs.concat(&r); } res = MaybePlacebo::from(rs.clone()); return res.read(); } - /// ../submodules/MaterialProviders/StandardLibrary/src/Actions.dfy(206,3) + /// ../submodules/MaterialProviders/StandardLibrary/src/Actions.dfy(215,3) pub fn DeterministicFlatMapWithResult<_A: DafnyType, _R: DafnyType, _E: DafnyType>(action: &Object, _E>>, s: &Sequence<_A>) -> Arc, _E>> { let mut res = MaybePlacebo::, _E>>>::new(); let mut rs: Sequence<_R> = seq![] as Sequence<_R>; - let mut _hi0: DafnyInt = s.cardinality(); - for i in integer_range(int!(0), _hi0.clone()) { + let mut _hi0: u64 = truncate!(s.cardinality(), u64); + for i in integer_range(0, _hi0).map(Into::::into) { let mut valueOrError0: Arc, _E>>; - let mut _out0: Arc, _E>> = DeterministicAction::<_A, Arc, _E>>>::Invoke(rd!(action.clone()), &s.get(&i)); + let mut _out0: Arc, _E>> = DeterministicAction::<_A, Arc, _E>>>::Invoke(rd!(action.clone()), &s.get(&int!((&i).clone()))); valueOrError0 = _out0.clone(); if valueOrError0.IsFailure() { res = MaybePlacebo::from(valueOrError0.PropagateFailure::>()); @@ -260,30 +263,30 @@ pub mod _Actions_Compile { res = MaybePlacebo::from(_rhs0.clone()); return res.read(); } - /// ../submodules/MaterialProviders/StandardLibrary/src/Actions.dfy(246,3) + /// ../submodules/MaterialProviders/StandardLibrary/src/Actions.dfy(256,3) pub fn Filter<_A: DafnyType>(action: &Object>, s: &Sequence<_A>) -> Sequence<_A> { let mut res = MaybePlacebo::>::new(); let mut rs: Sequence<_A> = seq![] as Sequence<_A>; - let mut _hi0: DafnyInt = s.cardinality(); - for i in integer_range(int!(0), _hi0.clone()) { + let mut _hi0: u64 = truncate!(s.cardinality(), u64); + for i in integer_range(0, _hi0).map(Into::::into) { let mut r: bool; - let mut _out0: bool = DeterministicAction::<_A, bool>::Invoke(rd!(action.clone()), &s.get(&i)); + let mut _out0: bool = DeterministicAction::<_A, bool>::Invoke(rd!(action.clone()), &s.get(&int!((&i).clone()))); r = _out0; if r { - rs = rs.concat(&seq![s.get(&i)]); + rs = rs.concat(&seq![s.get(&int!((&i).clone()))]); } } res = MaybePlacebo::from(rs.clone()); return res.read(); } - /// ../submodules/MaterialProviders/StandardLibrary/src/Actions.dfy(279,3) + /// ../submodules/MaterialProviders/StandardLibrary/src/Actions.dfy(290,3) pub fn FilterWithResult<_A: DafnyType, _E: DafnyType>(action: &Object>, s: &Sequence<_A>) -> Arc, _E>> { let mut res = MaybePlacebo::, _E>>>::new(); let mut rs: Sequence<_A> = seq![] as Sequence<_A>; - let mut _hi0: DafnyInt = s.cardinality(); - for i in integer_range(int!(0), _hi0.clone()) { + let mut _hi0: u64 = truncate!(s.cardinality(), u64); + for i in integer_range(0, _hi0).map(Into::::into) { let mut valueOrError0: Arc>; - let mut _out0: Arc> = DeterministicAction::<_A, Arc>>::Invoke(rd!(action.clone()), &s.get(&i)); + let mut _out0: Arc> = DeterministicAction::<_A, Arc>>::Invoke(rd!(action.clone()), &s.get(&int!((&i).clone()))); valueOrError0 = _out0.clone(); if valueOrError0.IsFailure() { res = MaybePlacebo::from(valueOrError0.PropagateFailure::>()); @@ -291,7 +294,7 @@ pub mod _Actions_Compile { }; let mut r: bool = valueOrError0.Extract(); if r { - rs = rs.concat(&seq![s.get(&i)]); + rs = rs.concat(&seq![s.get(&int!((&i).clone()))]); } } res = MaybePlacebo::from(Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::, _E>::Success { @@ -299,14 +302,14 @@ pub mod _Actions_Compile { })); return res.read(); } - /// ../submodules/MaterialProviders/StandardLibrary/src/Actions.dfy(318,3) + /// ../submodules/MaterialProviders/StandardLibrary/src/Actions.dfy(330,3) pub fn ReduceToSuccess<_A: DafnyType, _B: DafnyType, _E: DafnyType>(action: &Object>, s: &Sequence<_A>) -> Arc>> { let mut res = MaybePlacebo::>>>::new(); let mut attemptedResults: Sequence>> = seq![] as Sequence>>; - let mut _hi0: DafnyInt = s.cardinality(); - for i in integer_range(int!(0), _hi0.clone()) { + let mut _hi0: u64 = truncate!(s.cardinality(), u64); + for i in integer_range(0, _hi0).map(Into::::into) { let mut attempt: Arc>; - let mut _out0: Arc> = Action::<_A, Arc>>::Invoke(rd!(action.clone()), &s.get(&i)); + let mut _out0: Arc> = Action::<_A, Arc>>::Invoke(rd!(action.clone()), &s.get(&int!((&i).clone()))); attempt = _out0.clone(); attemptedResults = attemptedResults.concat(&seq![attempt.clone()]); if matches!((&attempt).as_ref(), Success{ .. }) { @@ -322,13 +325,13 @@ pub mod _Actions_Compile { })); return res.read(); } - /// ../submodules/MaterialProviders/StandardLibrary/src/Actions.dfy(380,3) + /// ../submodules/MaterialProviders/StandardLibrary/src/Actions.dfy(394,3) pub fn pluckErrors<_B: DafnyType, _E: DafnyType>(r: &Arc>) -> _E { r.error().clone() } } - /// ../submodules/MaterialProviders/StandardLibrary/src/Actions.dfy(12,3) + /// ../submodules/MaterialProviders/StandardLibrary/src/Actions.dfy(14,3) #[derive(PartialEq, Clone)] pub enum ActionInvoke { ActionInvoke { @@ -407,32 +410,32 @@ pub mod _Actions_Compile { } } - /// ../submodules/MaterialProviders/StandardLibrary/src/Actions.dfy(17,3) + /// ../submodules/MaterialProviders/StandardLibrary/src/Actions.dfy(19,3) pub trait Action: Any + Sync + Send + UpcastObject where A: DafnyType, R: DafnyType { - /// ../submodules/MaterialProviders/StandardLibrary/src/Actions.dfy(22,5) + /// ../submodules/MaterialProviders/StandardLibrary/src/Actions.dfy(24,5) fn Invoke(&self, a: &A) -> R; } - /// ../submodules/MaterialProviders/StandardLibrary/src/Actions.dfy(56,3) + /// ../submodules/MaterialProviders/StandardLibrary/src/Actions.dfy(61,3) pub trait ActionWithResult: Any + Sync + Send + UpcastObject + Action>> + UpcastObject>>> where A: DafnyType, R: DafnyType, E: DafnyType {} - /// ../submodules/MaterialProviders/StandardLibrary/src/Actions.dfy(68,3) + /// ../submodules/MaterialProviders/StandardLibrary/src/Actions.dfy(74,3) pub trait DeterministicAction: Any + Sync + Send + UpcastObject where A: DafnyType, R: DafnyType { - /// ../submodules/MaterialProviders/StandardLibrary/src/Actions.dfy(73,5) + /// ../submodules/MaterialProviders/StandardLibrary/src/Actions.dfy(79,5) fn Invoke(&self, a: &A) -> R; } - /// ../submodules/MaterialProviders/StandardLibrary/src/Actions.dfy(89,3) + /// ../submodules/MaterialProviders/StandardLibrary/src/Actions.dfy(95,3) pub trait DeterministicActionWithResult: Any + Sync + Send + UpcastObject + DeterministicAction>> + UpcastObject>>> where A: DafnyType, @@ -6935,7 +6938,6 @@ pub mod software { pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::itemencryptor::internaldafny::types::Error; pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::itemencryptor::internaldafny::types::EncryptItemOutput; pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::itemencryptor::internaldafny::types::DecryptItemOutput; - pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::internaldafny::types::LegacyPolicy; pub use ::dafny_runtime::UpcastObject; pub use ::dafny_runtime::DynAny; pub use ::dafny_runtime::UpcastObjectFn; @@ -6988,10 +6990,6 @@ pub mod software { error: error.clone() }) } - /// dafny/DynamoDbItemEncryptor/src/InternalLegacyOverride.dfy(16,5) - pub fn policy(&self) -> Arc { - self.__i_policy.clone() - } } impl UpcastObject @@ -7012,7 +7010,9 @@ pub mod software { pub use ::dafny_runtime::DafnyCharUTF16; pub use ::dafny_runtime::Map; pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::structuredencryption::internaldafny::types::CryptoAction; + pub use ::dafny_runtime::_System::nat; pub use ::dafny_runtime::int; + pub use ::dafny_runtime::DafnyInt; pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::internaldafny::types::DynamoDbTableEncryptionConfig; pub use crate::implementation_from_dafny::_Wrappers_Compile::Option::Some; pub use crate::implementation_from_dafny::_Wrappers_Compile::Result; @@ -7021,7 +7021,6 @@ pub mod software { pub use crate::implementation_from_dafny::_DdbMiddlewareConfig_Compile::ValidTableConfig; pub use ::dafny_runtime::Set; pub use ::dafny_runtime::set; - pub use ::dafny_runtime::DafnyInt; pub use crate::implementation_from_dafny::_Wrappers_Compile::Outcome; pub use ::dafny_runtime::string_utf16_of; pub use crate::implementation_from_dafny::_Wrappers_Compile::Option; @@ -7109,24 +7108,28 @@ pub mod software { }) } /// dafny/DynamoDbEncryptionTransforms/src/Index.dfy(61,3) - pub fn AddSignedBeaconActions(names: &Sequence>, actions: &Map, Arc>) -> Map, Arc> { + pub fn AddSignedBeaconActions(names: &Sequence>, actions: &Map, Arc>, pos: &nat) -> Map, Arc> { let mut _r0 = names.clone(); let mut _r1 = actions.clone(); + let mut _r2 = pos.clone(); 'TAIL_CALL_START: loop { let names = _r0; let actions = _r1; - if names.cardinality() == int!(0) { + let pos = _r2; + if names.cardinality() == pos.clone() { return actions.clone(); } else { - let mut _in0: Sequence> = names.drop(&int!(1)); + let mut _in0: Sequence> = names.clone(); let mut _in1: Map, Arc> = actions.update_index(&names.get(&int!(0)), &Arc::new(CryptoAction::SIGN_ONLY {})); + let mut _in2: DafnyInt = pos.clone() + int!(1); _r0 = _in0.clone(); _r1 = _in1.clone(); + _r2 = _in2.clone(); continue 'TAIL_CALL_START; } } } - /// dafny/DynamoDbEncryptionTransforms/src/Index.dfy(70,3) + /// dafny/DynamoDbEncryptionTransforms/src/Index.dfy(76,3) pub fn IsConfigured(config: &Arc, name: &Sequence) -> bool { config.attributeActionsOnEncrypt().contains(name) || matches!(config.allowedUnsignedAttributes().as_ref(), Some{ .. }) && config.allowedUnsignedAttributes().value().contains(name) || matches!(config.allowedUnsignedAttributePrefix().as_ref(), Some{ .. }) && config.allowedUnsignedAttributePrefix().value().clone() <= name.clone() } @@ -7134,7 +7137,7 @@ pub mod software { /// = type=implication /// # When mapping [DynamoDB Table Names](#dynamodb-table-name) to [logical table name](#logical-table-name) /// # there MUST a one to one mapping between the two. - /// dafny/DynamoDbEncryptionTransforms/src/Index.dfy(105,3) + /// dafny/DynamoDbEncryptionTransforms/src/Index.dfy(111,3) pub fn DynamoDbEncryptionTransforms(config: &Arc) -> Arc, Arc>> { let mut res = MaybePlacebo::, Arc>>>::new(); let mut internalConfigs: Map, ValidTableConfig> = map![]; @@ -7205,7 +7208,7 @@ pub mod software { res = MaybePlacebo::from(valueOrError2.PropagateFailure::>()); return res.read(); }; - let mut newActions: Map, Arc> = crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::transforms::internaldafny::_default::AddSignedBeaconActions(&signedBeacons, inputConfig.attributeActionsOnEncrypt()); + let mut newActions: Map, Arc> = crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::transforms::internaldafny::_default::AddSignedBeaconActions(&signedBeacons, inputConfig.attributeActionsOnEncrypt(), &int!(0)); let mut encryptorConfig: Arc = Arc::new(DynamoDbItemEncryptorConfig::DynamoDbItemEncryptorConfig { logicalTableName: inputConfig.logicalTableName().clone(), partitionKeyName: inputConfig.partitionKeyName().clone(), @@ -7276,7 +7279,7 @@ pub mod software { } } - /// dafny/DynamoDbEncryptionTransforms/src/Index.dfy(290,3) + /// dafny/DynamoDbEncryptionTransforms/src/Index.dfy(296,3) pub struct DynamoDbEncryptionTransformsClient { pub __i_config: Arc } @@ -7286,7 +7289,7 @@ pub mod software { pub fn _allocate_object() -> Object { allocate_object::() } - /// dafny/DynamoDbEncryptionTransforms/src/Index.dfy(299,5) + /// dafny/DynamoDbEncryptionTransforms/src/Index.dfy(305,5) pub fn _ctor(this: &Object, config: &Arc) -> () { let mut _set___i_config: bool = false; update_field_uninit_object!(this.clone(), __i_config, _set___i_config, config.clone()); @@ -29272,13 +29275,13 @@ pub mod software { pub fn DefaultDynamoDBClientConfigType() -> Arc { Arc::new(crate::implementation_from_dafny::software::amazon::cryptography::services::dynamodb::internaldafny::DynamoDBClientConfigType::DynamoDBClientConfigType {}) } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2933,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2940,3) pub fn CreateSuccessOfClient(client: &Object) -> Arc, Arc>> { Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::, Arc>::Success { value: client.clone() }) } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2936,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2943,3) pub fn CreateFailureOfError(error: &Arc) -> Arc, Arc>> { Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::, Arc>::Failure { error: error.clone() @@ -29286,7 +29289,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2923,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2930,3) #[derive(PartialEq, Clone)] pub enum DynamoDBClientConfigType { DynamoDBClientConfigType {} @@ -29417,247 +29420,247 @@ pub mod software { pub fn IsValid_BatchGetRequestMap(x: &Map, Arc>) -> bool { !(x.cardinality() < int!(1)) && !(int!(100) < x.cardinality()) } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(218,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(220,3) pub fn IsValid_BatchWriteItemRequestMap(x: &Map, crate::implementation_from_dafny::software::amazon::cryptography::services::dynamodb::internaldafny::types::WriteRequests>) -> bool { !(x.cardinality() < int!(1)) && !(int!(25) < x.cardinality()) } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(222,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(224,3) pub fn IsValid_BilledSizeBytes(x: i64) -> bool { !(x < truncate!(int!(0), i64)) } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(242,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(244,3) pub fn IsValid_CancellationReasonList(x: &Sequence>) -> bool { !(x.cardinality() < int!(1)) && !(int!(100) < x.cardinality()) } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(251,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(253,3) pub fn IsValid_ClientRequestToken(x: &Sequence) -> bool { !(x.cardinality() < int!(1)) && !(int!(36) < x.cardinality()) } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(256,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(258,3) pub fn IsValid_CloudWatchLogGroupArn(x: &Sequence) -> bool { !(x.cardinality() < int!(1)) && !(int!(1024) < x.cardinality()) } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(303,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(305,3) pub fn IsValid_ConsumedCapacityUnits(x: &Sequence) -> bool { !(x.cardinality() < int!(8)) && !(int!(8) < x.cardinality()) } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(382,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(384,3) pub fn IsValid_CsvDelimiter(x: &Sequence) -> bool { !(x.cardinality() < int!(1)) && !(int!(1) < x.cardinality()) } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(386,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(388,3) pub fn IsValid_CsvHeader(x: &Sequence) -> bool { !(x.cardinality() < int!(1)) && !(int!(b"65536") < x.cardinality()) } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(390,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(392,3) pub fn IsValid_CsvHeaderList(x: &Sequence>) -> bool { !(x.cardinality() < int!(1)) && !(int!(255) < x.cardinality()) } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(562,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(565,3) pub fn IsValid_DoubleObject(x: &Sequence) -> bool { !(x.cardinality() < int!(8)) && !(int!(8) < x.cardinality()) } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1586,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1589,3) pub fn IsValid_ErrorCount(x: i64) -> bool { !(x < truncate!(int!(0), i64)) } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1623,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1627,3) pub fn IsValid_ExportArn(x: &Sequence) -> bool { !(x.cardinality() < int!(37)) && !(int!(1024) < x.cardinality()) } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1735,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1739,3) pub fn IsValid_GlobalSecondaryIndexAutoScalingUpdateList(x: &Sequence>) -> bool { !(x.cardinality() < int!(1)) } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1784,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1788,3) pub fn IsValid_GlobalTableGlobalSecondaryIndexSettingsUpdateList(x: &Sequence>) -> bool { !(x.cardinality() < int!(1)) && !(int!(20) < x.cardinality()) } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1794,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1798,3) pub fn IsValid_ImportArn(x: &Sequence) -> bool { !(x.cardinality() < int!(37)) && !(int!(1024) < x.cardinality()) } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1798,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1802,3) pub fn IsValid_ImportedItemCount(x: i64) -> bool { !(x < truncate!(int!(0), i64)) } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1802,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1806,3) pub fn IsValid_ImportNextToken(x: &Sequence) -> bool { !(x.cardinality() < int!(112)) && !(int!(1024) < x.cardinality()) } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1860,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1864,3) pub fn IsValid_IndexName(x: &Sequence) -> bool { !(x.cardinality() < int!(3)) && !(int!(255) < x.cardinality()) } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1889,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1893,3) pub fn IsValid_ItemCollectionSizeEstimateBound(x: &Sequence) -> bool { !(x.cardinality() < int!(8)) && !(int!(8) < x.cardinality()) } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1894,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1898,3) pub fn IsValid_ItemCount(x: i64) -> bool { !(x < truncate!(int!(0), i64)) } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1902,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1906,3) pub fn IsValid_ItemResponseList(x: &Sequence>) -> bool { !(x.cardinality() < int!(1)) && !(int!(100) < x.cardinality()) } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1909,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1913,3) pub fn IsValid_KeyList(x: &Sequence, Arc>>) -> bool { !(x.cardinality() < int!(1)) && !(int!(100) < x.cardinality()) } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1920,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1924,3) pub fn IsValid_KeySchema(x: &Sequence>) -> bool { !(x.cardinality() < int!(1)) && !(int!(2) < x.cardinality()) } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1924,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1928,3) pub fn IsValid_KeySchemaAttributeName(x: &Sequence) -> bool { !(x.cardinality() < int!(1)) && !(int!(255) < x.cardinality()) } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1973,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1977,3) pub fn IsValid_ListContributorInsightsLimit(x: i32) -> bool { !(truncate!(int!(100), i32) < x) } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1986,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1990,3) pub fn IsValid_ListExportsMaxLimit(x: i32) -> bool { !(x < truncate!(int!(1), i32)) && !(truncate!(int!(25), i32) < x) } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2008,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2012,3) pub fn IsValid_ListImportsMaxLimit(x: i32) -> bool { !(x < truncate!(int!(1), i32)) && !(truncate!(int!(25), i32) < x) } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2020,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2024,3) pub fn IsValid_ListTablesInputLimit(x: i32) -> bool { !(x < truncate!(int!(1), i32)) && !(truncate!(int!(100), i32) < x) } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2061,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2065,3) pub fn IsValid_NonKeyAttributeName(x: &Sequence) -> bool { !(x.cardinality() < int!(1)) && !(int!(255) < x.cardinality()) } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2065,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2069,3) pub fn IsValid_NonKeyAttributeNameList(x: &Sequence>) -> bool { !(x.cardinality() < int!(1)) && !(int!(20) < x.cardinality()) } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2069,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2073,3) pub fn IsValid_NonNegativeLongObject(x: i64) -> bool { !(x < truncate!(int!(0), i64)) } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2087,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2092,3) pub fn IsValid_ParameterizedStatements(x: &Sequence>) -> bool { !(x.cardinality() < int!(1)) && !(int!(100) < x.cardinality()) } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2091,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2096,3) pub fn IsValid_PartiQLBatchRequest(x: &Sequence>) -> bool { !(x.cardinality() < int!(1)) && !(int!(25) < x.cardinality()) } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2096,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2101,3) pub fn IsValid_PartiQLNextToken(x: &Sequence) -> bool { !(x.cardinality() < int!(1)) && !(int!(b"32768") < x.cardinality()) } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2100,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2105,3) pub fn IsValid_PartiQLStatement(x: &Sequence) -> bool { !(x.cardinality() < int!(1)) && !(int!(8192) < x.cardinality()) } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2115,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2120,3) pub fn IsValid_PolicyRevisionId(x: &Sequence) -> bool { !(x.cardinality() < int!(1)) && !(int!(255) < x.cardinality()) } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2119,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2124,3) pub fn IsValid_PositiveIntegerObject(x: i32) -> bool { !(x < truncate!(int!(1), i32)) } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2123,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2128,3) pub fn IsValid_PositiveLongObject(x: i64) -> bool { !(x < truncate!(int!(1), i64)) } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2127,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2132,3) pub fn IsValid_PreparedStatementParameters(x: &Sequence>) -> bool { !(x.cardinality() < int!(1)) } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2131,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2136,3) pub fn IsValid_ProcessedItemCount(x: i64) -> bool { !(x < truncate!(int!(0), i64)) } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2239,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2245,3) pub fn IsValid_ReplicaAutoScalingUpdateList(x: &Sequence>) -> bool { !(x.cardinality() < int!(1)) } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2279,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2285,3) pub fn IsValid_ReplicaGlobalSecondaryIndexList(x: &Sequence>) -> bool { !(x.cardinality() < int!(1)) } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2297,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2303,3) pub fn IsValid_ReplicaGlobalSecondaryIndexSettingsUpdateList(x: &Sequence>) -> bool { !(x.cardinality() < int!(1)) && !(int!(20) < x.cardinality()) } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2321,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2327,3) pub fn IsValid_ReplicaSettingsUpdateList(x: &Sequence>) -> bool { !(x.cardinality() < int!(1)) && !(int!(50) < x.cardinality()) } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2340,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2346,3) pub fn IsValid_ReplicationGroupUpdateList(x: &Sequence>) -> bool { !(x.cardinality() < int!(1)) } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2349,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2355,3) pub fn IsValid_ResourceArnString(x: &Sequence) -> bool { !(x.cardinality() < int!(1)) && !(int!(1283) < x.cardinality()) } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2406,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2412,3) pub fn IsValid_S3Bucket(x: &Sequence) -> bool { !(x.cardinality() < int!(0)) && !(int!(255) < x.cardinality()) } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2416,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2422,3) pub fn IsValid_S3Prefix(x: &Sequence) -> bool { !(x.cardinality() < int!(0)) && !(int!(1024) < x.cardinality()) } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2423,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2429,3) pub fn IsValid_S3SseKmsKeyId(x: &Sequence) -> bool { !(x.cardinality() < int!(1)) && !(int!(2048) < x.cardinality()) } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2456,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2462,3) pub fn IsValid_ScanSegment(x: i32) -> bool { !(x < truncate!(int!(0), i32)) && !(truncate!(int!(b"999999"), i32) < x) } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2460,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2466,3) pub fn IsValid_ScanTotalSegments(x: i32) -> bool { !(x < truncate!(int!(1), i32)) && !(truncate!(int!(b"1000000"), i32) < x) } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2510,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2516,3) pub fn IsValid_StreamArn(x: &Sequence) -> bool { !(x.cardinality() < int!(37)) && !(int!(1024) < x.cardinality()) } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2527,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2533,3) pub fn IsValid_TableArn(x: &Sequence) -> bool { !(x.cardinality() < int!(1)) && !(int!(1024) < x.cardinality()) } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2580,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2586,3) pub fn IsValid_TableName(x: &Sequence) -> bool { !(x.cardinality() < int!(3)) && !(int!(255) < x.cardinality()) } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2598,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2604,3) pub fn IsValid_TagKeyString(x: &Sequence) -> bool { !(x.cardinality() < int!(1)) && !(int!(128) < x.cardinality()) } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2607,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2613,3) pub fn IsValid_TagValueString(x: &Sequence) -> bool { !(x.cardinality() < int!(0)) && !(int!(256) < x.cardinality()) } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2611,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2617,3) pub fn IsValid_TimeToLiveAttributeName(x: &Sequence) -> bool { !(x.cardinality() < int!(1)) && !(int!(255) < x.cardinality()) } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2632,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2638,3) pub fn IsValid_TransactGetItemList(x: &Sequence>) -> bool { !(x.cardinality() < int!(1)) && !(int!(100) < x.cardinality()) } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2650,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2656,3) pub fn IsValid_TransactWriteItemList(x: &Sequence>) -> bool { !(x.cardinality() < int!(1)) && !(int!(100) < x.cardinality()) } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2796,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2803,3) pub fn IsValid_WriteRequests(x: &Sequence>) -> bool { !(x.cardinality() < int!(1)) && !(int!(25) < x.cardinality()) } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2913,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2920,3) pub fn IsDummySubsetType(x: &DafnyInt) -> bool { int!(0) < x.clone() } @@ -32034,7 +32037,8 @@ pub mod software { pub enum BatchStatementError { BatchStatementError { Code: Arc>>, - Message: Arc>> + Message: Arc>>, + Item: Arc, Arc>>> } } @@ -32042,13 +32046,19 @@ pub mod software { /// Returns a borrow of the field Code pub fn Code(&self) -> &Arc>> { match self { - BatchStatementError::BatchStatementError{Code, Message, } => Code, + BatchStatementError::BatchStatementError{Code, Message, Item, } => Code, } } /// Returns a borrow of the field Message pub fn Message(&self) -> &Arc>> { match self { - BatchStatementError::BatchStatementError{Code, Message, } => Message, + BatchStatementError::BatchStatementError{Code, Message, Item, } => Message, + } + } + /// Returns a borrow of the field Item + pub fn Item(&self) -> &Arc, Arc>>> { + match self { + BatchStatementError::BatchStatementError{Code, Message, Item, } => Item, } } } @@ -32064,11 +32074,13 @@ pub mod software { for BatchStatementError { fn fmt_print(&self, _formatter: &mut Formatter, _in_seq: bool) -> std::fmt::Result { match self { - BatchStatementError::BatchStatementError{Code, Message, } => { + BatchStatementError::BatchStatementError{Code, Message, Item, } => { write!(_formatter, "software.amazon.cryptography.services.dynamodb.internaldafny.types.BatchStatementError.BatchStatementError(")?; DafnyPrint::fmt_print(Code, _formatter, false)?; write!(_formatter, ", ")?; DafnyPrint::fmt_print(Message, _formatter, false)?; + write!(_formatter, ", ")?; + DafnyPrint::fmt_print(Item, _formatter, false)?; write!(_formatter, ")")?; Ok(()) }, @@ -32083,9 +32095,10 @@ pub mod software { for BatchStatementError { fn hash<_H: Hasher>(&self, _state: &mut _H) { match self { - BatchStatementError::BatchStatementError{Code, Message, } => { + BatchStatementError::BatchStatementError{Code, Message, Item, } => { Hash::hash(Code, _state); - Hash::hash(Message, _state) + Hash::hash(Message, _state); + Hash::hash(Item, _state) }, } } @@ -32096,7 +32109,8 @@ pub mod software { fn default() -> BatchStatementError { BatchStatementError::BatchStatementError { Code: Default::default(), - Message: Default::default() + Message: Default::default(), + Item: Default::default() } } } @@ -32108,7 +32122,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(185,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(186,3) #[derive(PartialEq, Clone)] pub enum BatchStatementErrorCodeEnum { ConditionalCheckFailed {}, @@ -32250,13 +32264,14 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(197,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(198,3) #[derive(PartialEq, Clone)] pub enum BatchStatementRequest { BatchStatementRequest { Statement: Sequence, Parameters: Arc>, - ConsistentRead: Arc> + ConsistentRead: Arc>, + ReturnValuesOnConditionCheckFailure: Arc>> } } @@ -32264,19 +32279,25 @@ pub mod software { /// Returns a borrow of the field Statement pub fn Statement(&self) -> &Sequence { match self { - BatchStatementRequest::BatchStatementRequest{Statement, Parameters, ConsistentRead, } => Statement, + BatchStatementRequest::BatchStatementRequest{Statement, Parameters, ConsistentRead, ReturnValuesOnConditionCheckFailure, } => Statement, } } /// Returns a borrow of the field Parameters pub fn Parameters(&self) -> &Arc> { match self { - BatchStatementRequest::BatchStatementRequest{Statement, Parameters, ConsistentRead, } => Parameters, + BatchStatementRequest::BatchStatementRequest{Statement, Parameters, ConsistentRead, ReturnValuesOnConditionCheckFailure, } => Parameters, } } /// Returns a borrow of the field ConsistentRead pub fn ConsistentRead(&self) -> &Arc> { match self { - BatchStatementRequest::BatchStatementRequest{Statement, Parameters, ConsistentRead, } => ConsistentRead, + BatchStatementRequest::BatchStatementRequest{Statement, Parameters, ConsistentRead, ReturnValuesOnConditionCheckFailure, } => ConsistentRead, + } + } + /// Returns a borrow of the field ReturnValuesOnConditionCheckFailure + pub fn ReturnValuesOnConditionCheckFailure(&self) -> &Arc>> { + match self { + BatchStatementRequest::BatchStatementRequest{Statement, Parameters, ConsistentRead, ReturnValuesOnConditionCheckFailure, } => ReturnValuesOnConditionCheckFailure, } } } @@ -32292,13 +32313,15 @@ pub mod software { for BatchStatementRequest { fn fmt_print(&self, _formatter: &mut Formatter, _in_seq: bool) -> std::fmt::Result { match self { - BatchStatementRequest::BatchStatementRequest{Statement, Parameters, ConsistentRead, } => { + BatchStatementRequest::BatchStatementRequest{Statement, Parameters, ConsistentRead, ReturnValuesOnConditionCheckFailure, } => { write!(_formatter, "software.amazon.cryptography.services.dynamodb.internaldafny.types.BatchStatementRequest.BatchStatementRequest(")?; DafnyPrint::fmt_print(Statement, _formatter, false)?; write!(_formatter, ", ")?; DafnyPrint::fmt_print(Parameters, _formatter, false)?; write!(_formatter, ", ")?; DafnyPrint::fmt_print(ConsistentRead, _formatter, false)?; + write!(_formatter, ", ")?; + DafnyPrint::fmt_print(ReturnValuesOnConditionCheckFailure, _formatter, false)?; write!(_formatter, ")")?; Ok(()) }, @@ -32313,10 +32336,11 @@ pub mod software { for BatchStatementRequest { fn hash<_H: Hasher>(&self, _state: &mut _H) { match self { - BatchStatementRequest::BatchStatementRequest{Statement, Parameters, ConsistentRead, } => { + BatchStatementRequest::BatchStatementRequest{Statement, Parameters, ConsistentRead, ReturnValuesOnConditionCheckFailure, } => { Hash::hash(Statement, _state); Hash::hash(Parameters, _state); - Hash::hash(ConsistentRead, _state) + Hash::hash(ConsistentRead, _state); + Hash::hash(ReturnValuesOnConditionCheckFailure, _state) }, } } @@ -32328,7 +32352,8 @@ pub mod software { BatchStatementRequest::BatchStatementRequest { Statement: Default::default(), Parameters: Default::default(), - ConsistentRead: Default::default() + ConsistentRead: Default::default(), + ReturnValuesOnConditionCheckFailure: Default::default() } } } @@ -32340,7 +32365,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(202,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(204,3) #[derive(PartialEq, Clone)] pub enum BatchStatementResponse { BatchStatementResponse { @@ -32430,7 +32455,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(207,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(209,3) #[derive(PartialEq, Clone)] pub enum BatchWriteItemInput { BatchWriteItemInput { @@ -32520,7 +32545,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(212,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(214,3) #[derive(PartialEq, Clone)] pub enum BatchWriteItemOutput { BatchWriteItemOutput { @@ -32610,13 +32635,13 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(217,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(219,3) pub type BatchWriteItemRequestMap = Map, crate::implementation_from_dafny::software::amazon::cryptography::services::dynamodb::internaldafny::types::WriteRequests>; - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(221,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(223,3) pub type BilledSizeBytes = i64; - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(225,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(227,3) #[derive(PartialEq, Clone)] pub enum BillingMode { PROVISIONED {}, @@ -32686,7 +32711,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(228,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(230,3) #[derive(PartialEq, Clone)] pub enum BillingModeSummary { BillingModeSummary { @@ -32765,7 +32790,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(236,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(238,3) #[derive(PartialEq, Clone)] pub enum CancellationReason { CancellationReason { @@ -32855,10 +32880,10 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(241,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(243,3) pub type CancellationReasonList = Sequence>; - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(245,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(247,3) #[derive(PartialEq, Clone)] pub enum Capacity { Capacity { @@ -32948,13 +32973,13 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(250,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(252,3) pub type ClientRequestToken = Sequence; - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(255,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(257,3) pub type CloudWatchLogGroupArn = Sequence; - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(260,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(262,3) #[derive(PartialEq, Clone)] pub enum ComparisonOperator { EQ {}, @@ -33112,7 +33137,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(274,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(276,3) #[derive(PartialEq, Clone)] pub enum Condition { Condition { @@ -33191,7 +33216,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(278,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(280,3) #[derive(PartialEq, Clone)] pub enum ConditionalOperator { AND {}, @@ -33261,7 +33286,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(281,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(283,3) #[derive(PartialEq, Clone)] pub enum ConditionCheck { ConditionCheck { @@ -33384,7 +33409,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(292,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(294,3) #[derive(PartialEq, Clone)] pub enum ConsumedCapacity { ConsumedCapacity { @@ -33518,10 +33543,10 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(302,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(304,3) pub type ConsumedCapacityUnits = Sequence; - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(306,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(308,3) #[derive(PartialEq, Clone)] pub enum ContinuousBackupsDescription { ContinuousBackupsDescription { @@ -33600,7 +33625,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(310,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(312,3) #[derive(PartialEq, Clone)] pub enum ContinuousBackupsStatus { ENABLED {}, @@ -33670,7 +33695,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(313,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(315,3) #[derive(PartialEq, Clone)] pub enum ContributorInsightsAction { ENABLE {}, @@ -33740,7 +33765,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(318,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(320,3) #[derive(PartialEq, Clone)] pub enum ContributorInsightsStatus { ENABLING {}, @@ -33834,7 +33859,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(325,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(327,3) #[derive(PartialEq, Clone)] pub enum ContributorInsightsSummary { ContributorInsightsSummary { @@ -33924,7 +33949,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(330,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(332,3) #[derive(PartialEq, Clone)] pub enum CreateBackupInput { CreateBackupInput { @@ -34003,7 +34028,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(334,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(336,3) #[derive(PartialEq, Clone)] pub enum CreateBackupOutput { CreateBackupOutput { @@ -34071,7 +34096,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(337,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(339,3) #[derive(PartialEq, Clone)] pub enum CreateGlobalSecondaryIndexAction { CreateGlobalSecondaryIndexAction { @@ -34183,7 +34208,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(344,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(346,3) #[derive(PartialEq, Clone)] pub enum CreateGlobalTableInput { CreateGlobalTableInput { @@ -34262,7 +34287,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(348,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(350,3) #[derive(PartialEq, Clone)] pub enum CreateGlobalTableOutput { CreateGlobalTableOutput { @@ -34330,7 +34355,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(351,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(353,3) #[derive(PartialEq, Clone)] pub enum CreateReplicaAction { CreateReplicaAction { @@ -34398,7 +34423,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(354,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(356,3) #[derive(PartialEq, Clone)] pub enum CreateReplicationGroupMemberAction { CreateReplicationGroupMemberAction { @@ -34521,7 +34546,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(362,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(364,3) #[derive(PartialEq, Clone)] pub enum CreateTableInput { CreateTableInput { @@ -34732,7 +34757,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(378,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(380,3) #[derive(PartialEq, Clone)] pub enum CreateTableOutput { CreateTableOutput { @@ -34800,16 +34825,16 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(381,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(383,3) pub type CsvDelimiter = Sequence; - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(385,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(387,3) pub type CsvHeader = Sequence; - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(389,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(391,3) pub type CsvHeaderList = Sequence>; - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(393,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(395,3) #[derive(PartialEq, Clone)] pub enum CsvOptions { CsvOptions { @@ -34888,7 +34913,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(397,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(399,3) #[derive(PartialEq, Clone)] pub enum Delete { Delete { @@ -35011,7 +35036,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(405,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(407,3) #[derive(PartialEq, Clone)] pub enum DeleteBackupInput { DeleteBackupInput { @@ -35079,7 +35104,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(408,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(410,3) #[derive(PartialEq, Clone)] pub enum DeleteBackupOutput { DeleteBackupOutput { @@ -35147,7 +35172,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(411,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(413,3) #[derive(PartialEq, Clone)] pub enum DeleteGlobalSecondaryIndexAction { DeleteGlobalSecondaryIndexAction { @@ -35215,7 +35240,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(414,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(416,3) #[derive(PartialEq, Clone)] pub enum DeleteItemInput { DeleteItemInput { @@ -35228,7 +35253,8 @@ pub mod software { ReturnItemCollectionMetrics: Arc>>, ConditionExpression: Arc>>, ExpressionAttributeNames: Arc, Sequence>>>, - ExpressionAttributeValues: Arc, Arc>>> + ExpressionAttributeValues: Arc, Arc>>>, + ReturnValuesOnConditionCheckFailure: Arc>> } } @@ -35236,61 +35262,67 @@ pub mod software { /// Returns a borrow of the field TableName pub fn TableName(&self) -> &Sequence { match self { - DeleteItemInput::DeleteItemInput{TableName, Key, Expected, ConditionalOperator, ReturnValues, ReturnConsumedCapacity, ReturnItemCollectionMetrics, ConditionExpression, ExpressionAttributeNames, ExpressionAttributeValues, } => TableName, + DeleteItemInput::DeleteItemInput{TableName, Key, Expected, ConditionalOperator, ReturnValues, ReturnConsumedCapacity, ReturnItemCollectionMetrics, ConditionExpression, ExpressionAttributeNames, ExpressionAttributeValues, ReturnValuesOnConditionCheckFailure, } => TableName, } } /// Returns a borrow of the field Key pub fn Key(&self) -> &Map, Arc> { match self { - DeleteItemInput::DeleteItemInput{TableName, Key, Expected, ConditionalOperator, ReturnValues, ReturnConsumedCapacity, ReturnItemCollectionMetrics, ConditionExpression, ExpressionAttributeNames, ExpressionAttributeValues, } => Key, + DeleteItemInput::DeleteItemInput{TableName, Key, Expected, ConditionalOperator, ReturnValues, ReturnConsumedCapacity, ReturnItemCollectionMetrics, ConditionExpression, ExpressionAttributeNames, ExpressionAttributeValues, ReturnValuesOnConditionCheckFailure, } => Key, } } /// Returns a borrow of the field Expected pub fn Expected(&self) -> &Arc, Arc>>> { match self { - DeleteItemInput::DeleteItemInput{TableName, Key, Expected, ConditionalOperator, ReturnValues, ReturnConsumedCapacity, ReturnItemCollectionMetrics, ConditionExpression, ExpressionAttributeNames, ExpressionAttributeValues, } => Expected, + DeleteItemInput::DeleteItemInput{TableName, Key, Expected, ConditionalOperator, ReturnValues, ReturnConsumedCapacity, ReturnItemCollectionMetrics, ConditionExpression, ExpressionAttributeNames, ExpressionAttributeValues, ReturnValuesOnConditionCheckFailure, } => Expected, } } /// Returns a borrow of the field ConditionalOperator pub fn ConditionalOperator(&self) -> &Arc>> { match self { - DeleteItemInput::DeleteItemInput{TableName, Key, Expected, ConditionalOperator, ReturnValues, ReturnConsumedCapacity, ReturnItemCollectionMetrics, ConditionExpression, ExpressionAttributeNames, ExpressionAttributeValues, } => ConditionalOperator, + DeleteItemInput::DeleteItemInput{TableName, Key, Expected, ConditionalOperator, ReturnValues, ReturnConsumedCapacity, ReturnItemCollectionMetrics, ConditionExpression, ExpressionAttributeNames, ExpressionAttributeValues, ReturnValuesOnConditionCheckFailure, } => ConditionalOperator, } } /// Returns a borrow of the field ReturnValues pub fn ReturnValues(&self) -> &Arc>> { match self { - DeleteItemInput::DeleteItemInput{TableName, Key, Expected, ConditionalOperator, ReturnValues, ReturnConsumedCapacity, ReturnItemCollectionMetrics, ConditionExpression, ExpressionAttributeNames, ExpressionAttributeValues, } => ReturnValues, + DeleteItemInput::DeleteItemInput{TableName, Key, Expected, ConditionalOperator, ReturnValues, ReturnConsumedCapacity, ReturnItemCollectionMetrics, ConditionExpression, ExpressionAttributeNames, ExpressionAttributeValues, ReturnValuesOnConditionCheckFailure, } => ReturnValues, } } /// Returns a borrow of the field ReturnConsumedCapacity pub fn ReturnConsumedCapacity(&self) -> &Arc>> { match self { - DeleteItemInput::DeleteItemInput{TableName, Key, Expected, ConditionalOperator, ReturnValues, ReturnConsumedCapacity, ReturnItemCollectionMetrics, ConditionExpression, ExpressionAttributeNames, ExpressionAttributeValues, } => ReturnConsumedCapacity, + DeleteItemInput::DeleteItemInput{TableName, Key, Expected, ConditionalOperator, ReturnValues, ReturnConsumedCapacity, ReturnItemCollectionMetrics, ConditionExpression, ExpressionAttributeNames, ExpressionAttributeValues, ReturnValuesOnConditionCheckFailure, } => ReturnConsumedCapacity, } } /// Returns a borrow of the field ReturnItemCollectionMetrics pub fn ReturnItemCollectionMetrics(&self) -> &Arc>> { match self { - DeleteItemInput::DeleteItemInput{TableName, Key, Expected, ConditionalOperator, ReturnValues, ReturnConsumedCapacity, ReturnItemCollectionMetrics, ConditionExpression, ExpressionAttributeNames, ExpressionAttributeValues, } => ReturnItemCollectionMetrics, + DeleteItemInput::DeleteItemInput{TableName, Key, Expected, ConditionalOperator, ReturnValues, ReturnConsumedCapacity, ReturnItemCollectionMetrics, ConditionExpression, ExpressionAttributeNames, ExpressionAttributeValues, ReturnValuesOnConditionCheckFailure, } => ReturnItemCollectionMetrics, } } /// Returns a borrow of the field ConditionExpression pub fn ConditionExpression(&self) -> &Arc>> { match self { - DeleteItemInput::DeleteItemInput{TableName, Key, Expected, ConditionalOperator, ReturnValues, ReturnConsumedCapacity, ReturnItemCollectionMetrics, ConditionExpression, ExpressionAttributeNames, ExpressionAttributeValues, } => ConditionExpression, + DeleteItemInput::DeleteItemInput{TableName, Key, Expected, ConditionalOperator, ReturnValues, ReturnConsumedCapacity, ReturnItemCollectionMetrics, ConditionExpression, ExpressionAttributeNames, ExpressionAttributeValues, ReturnValuesOnConditionCheckFailure, } => ConditionExpression, } } /// Returns a borrow of the field ExpressionAttributeNames pub fn ExpressionAttributeNames(&self) -> &Arc, Sequence>>> { match self { - DeleteItemInput::DeleteItemInput{TableName, Key, Expected, ConditionalOperator, ReturnValues, ReturnConsumedCapacity, ReturnItemCollectionMetrics, ConditionExpression, ExpressionAttributeNames, ExpressionAttributeValues, } => ExpressionAttributeNames, + DeleteItemInput::DeleteItemInput{TableName, Key, Expected, ConditionalOperator, ReturnValues, ReturnConsumedCapacity, ReturnItemCollectionMetrics, ConditionExpression, ExpressionAttributeNames, ExpressionAttributeValues, ReturnValuesOnConditionCheckFailure, } => ExpressionAttributeNames, } } /// Returns a borrow of the field ExpressionAttributeValues pub fn ExpressionAttributeValues(&self) -> &Arc, Arc>>> { match self { - DeleteItemInput::DeleteItemInput{TableName, Key, Expected, ConditionalOperator, ReturnValues, ReturnConsumedCapacity, ReturnItemCollectionMetrics, ConditionExpression, ExpressionAttributeNames, ExpressionAttributeValues, } => ExpressionAttributeValues, + DeleteItemInput::DeleteItemInput{TableName, Key, Expected, ConditionalOperator, ReturnValues, ReturnConsumedCapacity, ReturnItemCollectionMetrics, ConditionExpression, ExpressionAttributeNames, ExpressionAttributeValues, ReturnValuesOnConditionCheckFailure, } => ExpressionAttributeValues, + } + } + /// Returns a borrow of the field ReturnValuesOnConditionCheckFailure + pub fn ReturnValuesOnConditionCheckFailure(&self) -> &Arc>> { + match self { + DeleteItemInput::DeleteItemInput{TableName, Key, Expected, ConditionalOperator, ReturnValues, ReturnConsumedCapacity, ReturnItemCollectionMetrics, ConditionExpression, ExpressionAttributeNames, ExpressionAttributeValues, ReturnValuesOnConditionCheckFailure, } => ReturnValuesOnConditionCheckFailure, } } } @@ -35306,7 +35338,7 @@ pub mod software { for DeleteItemInput { fn fmt_print(&self, _formatter: &mut Formatter, _in_seq: bool) -> std::fmt::Result { match self { - DeleteItemInput::DeleteItemInput{TableName, Key, Expected, ConditionalOperator, ReturnValues, ReturnConsumedCapacity, ReturnItemCollectionMetrics, ConditionExpression, ExpressionAttributeNames, ExpressionAttributeValues, } => { + DeleteItemInput::DeleteItemInput{TableName, Key, Expected, ConditionalOperator, ReturnValues, ReturnConsumedCapacity, ReturnItemCollectionMetrics, ConditionExpression, ExpressionAttributeNames, ExpressionAttributeValues, ReturnValuesOnConditionCheckFailure, } => { write!(_formatter, "software.amazon.cryptography.services.dynamodb.internaldafny.types.DeleteItemInput.DeleteItemInput(")?; DafnyPrint::fmt_print(TableName, _formatter, false)?; write!(_formatter, ", ")?; @@ -35327,6 +35359,8 @@ pub mod software { DafnyPrint::fmt_print(ExpressionAttributeNames, _formatter, false)?; write!(_formatter, ", ")?; DafnyPrint::fmt_print(ExpressionAttributeValues, _formatter, false)?; + write!(_formatter, ", ")?; + DafnyPrint::fmt_print(ReturnValuesOnConditionCheckFailure, _formatter, false)?; write!(_formatter, ")")?; Ok(()) }, @@ -35341,7 +35375,7 @@ pub mod software { for DeleteItemInput { fn hash<_H: Hasher>(&self, _state: &mut _H) { match self { - DeleteItemInput::DeleteItemInput{TableName, Key, Expected, ConditionalOperator, ReturnValues, ReturnConsumedCapacity, ReturnItemCollectionMetrics, ConditionExpression, ExpressionAttributeNames, ExpressionAttributeValues, } => { + DeleteItemInput::DeleteItemInput{TableName, Key, Expected, ConditionalOperator, ReturnValues, ReturnConsumedCapacity, ReturnItemCollectionMetrics, ConditionExpression, ExpressionAttributeNames, ExpressionAttributeValues, ReturnValuesOnConditionCheckFailure, } => { Hash::hash(TableName, _state); Hash::hash(Key, _state); Hash::hash(Expected, _state); @@ -35351,7 +35385,8 @@ pub mod software { Hash::hash(ReturnItemCollectionMetrics, _state); Hash::hash(ConditionExpression, _state); Hash::hash(ExpressionAttributeNames, _state); - Hash::hash(ExpressionAttributeValues, _state) + Hash::hash(ExpressionAttributeValues, _state); + Hash::hash(ReturnValuesOnConditionCheckFailure, _state) }, } } @@ -35370,7 +35405,8 @@ pub mod software { ReturnItemCollectionMetrics: Default::default(), ConditionExpression: Default::default(), ExpressionAttributeNames: Default::default(), - ExpressionAttributeValues: Default::default() + ExpressionAttributeValues: Default::default(), + ReturnValuesOnConditionCheckFailure: Default::default() } } } @@ -35382,7 +35418,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(426,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(429,3) #[derive(PartialEq, Clone)] pub enum DeleteItemOutput { DeleteItemOutput { @@ -35472,7 +35508,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(431,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(434,3) #[derive(PartialEq, Clone)] pub enum DeleteReplicaAction { DeleteReplicaAction { @@ -35540,7 +35576,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(434,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(437,3) #[derive(PartialEq, Clone)] pub enum DeleteReplicationGroupMemberAction { DeleteReplicationGroupMemberAction { @@ -35608,7 +35644,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(437,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(440,3) #[derive(PartialEq, Clone)] pub enum DeleteRequest { DeleteRequest { @@ -35676,7 +35712,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(440,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(443,3) #[derive(PartialEq, Clone)] pub enum DeleteResourcePolicyInput { DeleteResourcePolicyInput { @@ -35755,7 +35791,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(444,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(447,3) #[derive(PartialEq, Clone)] pub enum DeleteResourcePolicyOutput { DeleteResourcePolicyOutput { @@ -35823,7 +35859,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(447,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(450,3) #[derive(PartialEq, Clone)] pub enum DeleteTableInput { DeleteTableInput { @@ -35891,7 +35927,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(450,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(453,3) #[derive(PartialEq, Clone)] pub enum DeleteTableOutput { DeleteTableOutput { @@ -35959,7 +35995,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(454,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(457,3) #[derive(PartialEq, Clone)] pub enum DescribeBackupInput { DescribeBackupInput { @@ -36027,7 +36063,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(457,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(460,3) #[derive(PartialEq, Clone)] pub enum DescribeBackupOutput { DescribeBackupOutput { @@ -36095,7 +36131,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(460,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(463,3) #[derive(PartialEq, Clone)] pub enum DescribeContinuousBackupsInput { DescribeContinuousBackupsInput { @@ -36163,7 +36199,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(463,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(466,3) #[derive(PartialEq, Clone)] pub enum DescribeContinuousBackupsOutput { DescribeContinuousBackupsOutput { @@ -36231,7 +36267,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(466,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(469,3) #[derive(PartialEq, Clone)] pub enum DescribeContributorInsightsInput { DescribeContributorInsightsInput { @@ -36310,7 +36346,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(470,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(473,3) #[derive(PartialEq, Clone)] pub enum DescribeContributorInsightsOutput { DescribeContributorInsightsOutput { @@ -36433,7 +36469,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(478,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(481,3) #[derive(PartialEq, Clone)] pub enum DescribeEndpointsRequest { DescribeEndpointsRequest {} @@ -36495,7 +36531,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(481,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(484,3) #[derive(PartialEq, Clone)] pub enum DescribeEndpointsResponse { DescribeEndpointsResponse { @@ -36563,7 +36599,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(484,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(487,3) #[derive(PartialEq, Clone)] pub enum DescribeExportInput { DescribeExportInput { @@ -36631,7 +36667,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(487,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(490,3) #[derive(PartialEq, Clone)] pub enum DescribeExportOutput { DescribeExportOutput { @@ -36699,7 +36735,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(490,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(493,3) #[derive(PartialEq, Clone)] pub enum DescribeGlobalTableInput { DescribeGlobalTableInput { @@ -36767,7 +36803,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(493,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(496,3) #[derive(PartialEq, Clone)] pub enum DescribeGlobalTableOutput { DescribeGlobalTableOutput { @@ -36835,7 +36871,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(496,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(499,3) #[derive(PartialEq, Clone)] pub enum DescribeGlobalTableSettingsInput { DescribeGlobalTableSettingsInput { @@ -36903,7 +36939,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(499,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(502,3) #[derive(PartialEq, Clone)] pub enum DescribeGlobalTableSettingsOutput { DescribeGlobalTableSettingsOutput { @@ -36982,7 +37018,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(503,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(506,3) #[derive(PartialEq, Clone)] pub enum DescribeImportInput { DescribeImportInput { @@ -37050,7 +37086,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(506,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(509,3) #[derive(PartialEq, Clone)] pub enum DescribeImportOutput { DescribeImportOutput { @@ -37118,7 +37154,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(509,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(512,3) #[derive(PartialEq, Clone)] pub enum DescribeKinesisStreamingDestinationInput { DescribeKinesisStreamingDestinationInput { @@ -37186,7 +37222,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(512,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(515,3) #[derive(PartialEq, Clone)] pub enum DescribeKinesisStreamingDestinationOutput { DescribeKinesisStreamingDestinationOutput { @@ -37265,7 +37301,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(516,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(519,3) #[derive(PartialEq, Clone)] pub enum DescribeLimitsInput { DescribeLimitsInput {} @@ -37327,7 +37363,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(519,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(522,3) #[derive(PartialEq, Clone)] pub enum DescribeLimitsOutput { DescribeLimitsOutput { @@ -37428,7 +37464,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(525,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(528,3) #[derive(PartialEq, Clone)] pub enum DescribeTableInput { DescribeTableInput { @@ -37496,7 +37532,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(528,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(531,3) #[derive(PartialEq, Clone)] pub enum DescribeTableOutput { DescribeTableOutput { @@ -37564,7 +37600,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(531,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(534,3) #[derive(PartialEq, Clone)] pub enum DescribeTableReplicaAutoScalingInput { DescribeTableReplicaAutoScalingInput { @@ -37632,7 +37668,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(534,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(537,3) #[derive(PartialEq, Clone)] pub enum DescribeTableReplicaAutoScalingOutput { DescribeTableReplicaAutoScalingOutput { @@ -37700,7 +37736,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(537,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(540,3) #[derive(PartialEq, Clone)] pub enum DescribeTimeToLiveInput { DescribeTimeToLiveInput { @@ -37768,7 +37804,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(540,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(543,3) #[derive(PartialEq, Clone)] pub enum DescribeTimeToLiveOutput { DescribeTimeToLiveOutput { @@ -37836,7 +37872,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(543,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(546,3) #[derive(PartialEq, Clone)] pub enum DestinationStatus { ENABLING {}, @@ -37938,7 +37974,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(550,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(553,3) #[derive(PartialEq, Clone)] pub enum DisableKinesisStreamingDestinationInput { DisableKinesisStreamingDestinationInput { @@ -38028,7 +38064,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(555,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(558,3) #[derive(PartialEq, Clone)] pub enum DisableKinesisStreamingDestinationOutput { DisableKinesisStreamingDestinationOutput { @@ -38129,10 +38165,10 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(561,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(564,3) pub type DoubleObject = Sequence; - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(565,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(568,3) pub struct IDynamoDBClientCallHistory {} impl IDynamoDBClientCallHistory { @@ -38147,125 +38183,125 @@ pub mod software { UpcastObjectFn!(DynAny); } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(683,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(686,3) pub trait IDynamoDBClient: Any + Sync + Send + UpcastObject { - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(712,5) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(715,5) fn BatchExecuteStatement(&self, input: &Arc) -> Arc, Arc>>; - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(727,5) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(730,5) fn BatchGetItem(&self, input: &Arc) -> Arc, Arc>>; - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(742,5) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(745,5) fn BatchWriteItem(&self, input: &Arc) -> Arc, Arc>>; - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(757,5) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(760,5) fn CreateBackup(&self, input: &Arc) -> Arc, Arc>>; - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(772,5) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(775,5) fn CreateGlobalTable(&self, input: &Arc) -> Arc, Arc>>; - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(787,5) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(790,5) fn CreateTable(&self, input: &Arc) -> Arc, Arc>>; - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(802,5) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(805,5) fn DeleteBackup(&self, input: &Arc) -> Arc, Arc>>; - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(817,5) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(820,5) fn DeleteItem(&self, input: &Arc) -> Arc, Arc>>; - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(832,5) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(835,5) fn DeleteResourcePolicy(&self, input: &Arc) -> Arc, Arc>>; - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(847,5) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(850,5) fn DeleteTable(&self, input: &Arc) -> Arc, Arc>>; - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(862,5) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(865,5) fn DescribeBackup(&self, input: &Arc) -> Arc, Arc>>; - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(877,5) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(880,5) fn DescribeContinuousBackups(&self, input: &Arc) -> Arc, Arc>>; - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(892,5) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(895,5) fn DescribeContributorInsights(&self, input: &Arc) -> Arc, Arc>>; - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(907,5) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(910,5) fn DescribeEndpoints(&self, input: &Arc) -> Arc, Arc>>; - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(922,5) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(925,5) fn DescribeExport(&self, input: &Arc) -> Arc, Arc>>; - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(937,5) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(940,5) fn DescribeGlobalTable(&self, input: &Arc) -> Arc, Arc>>; - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(952,5) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(955,5) fn DescribeGlobalTableSettings(&self, input: &Arc) -> Arc, Arc>>; - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(967,5) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(970,5) fn DescribeImport(&self, input: &Arc) -> Arc, Arc>>; - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(982,5) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(985,5) fn DescribeKinesisStreamingDestination(&self, input: &Arc) -> Arc, Arc>>; - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(997,5) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1000,5) fn DescribeLimits(&self, input: &Arc) -> Arc, Arc>>; - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1012,5) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1015,5) fn DescribeTable(&self, input: &Arc) -> Arc, Arc>>; - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1027,5) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1030,5) fn DescribeTableReplicaAutoScaling(&self, input: &Arc) -> Arc, Arc>>; - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1042,5) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1045,5) fn DescribeTimeToLive(&self, input: &Arc) -> Arc, Arc>>; - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1057,5) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1060,5) fn DisableKinesisStreamingDestination(&self, input: &Arc) -> Arc, Arc>>; - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1072,5) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1075,5) fn EnableKinesisStreamingDestination(&self, input: &Arc) -> Arc, Arc>>; - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1087,5) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1090,5) fn ExecuteStatement(&self, input: &Arc) -> Arc, Arc>>; - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1102,5) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1105,5) fn ExecuteTransaction(&self, input: &Arc) -> Arc, Arc>>; - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1117,5) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1120,5) fn ExportTableToPointInTime(&self, input: &Arc) -> Arc, Arc>>; - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1132,5) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1135,5) fn GetItem(&self, input: &Arc) -> Arc, Arc>>; - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1147,5) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1150,5) fn GetResourcePolicy(&self, input: &Arc) -> Arc, Arc>>; - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1162,5) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1165,5) fn ImportTable(&self, input: &Arc) -> Arc, Arc>>; - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1177,5) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1180,5) fn ListBackups(&self, input: &Arc) -> Arc, Arc>>; - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1192,5) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1195,5) fn ListContributorInsights(&self, input: &Arc) -> Arc, Arc>>; - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1207,5) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1210,5) fn ListExports(&self, input: &Arc) -> Arc, Arc>>; - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1222,5) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1225,5) fn ListGlobalTables(&self, input: &Arc) -> Arc, Arc>>; - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1237,5) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1240,5) fn ListImports(&self, input: &Arc) -> Arc, Arc>>; - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1252,5) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1255,5) fn ListTables(&self, input: &Arc) -> Arc, Arc>>; - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1267,5) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1270,5) fn ListTagsOfResource(&self, input: &Arc) -> Arc, Arc>>; - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1282,5) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1285,5) fn PutItem(&self, input: &Arc) -> Arc, Arc>>; - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1297,5) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1300,5) fn PutResourcePolicy(&self, input: &Arc) -> Arc, Arc>>; - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1312,5) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1315,5) fn Query(&self, input: &Arc) -> Arc, Arc>>; - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1327,5) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1330,5) fn RestoreTableFromBackup(&self, input: &Arc) -> Arc, Arc>>; - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1342,5) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1345,5) fn RestoreTableToPointInTime(&self, input: &Arc) -> Arc, Arc>>; - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1357,5) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1360,5) fn Scan(&self, input: &Arc) -> Arc, Arc>>; - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1372,5) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1375,5) fn TagResource(&self, input: &Arc) -> Arc>>; - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1387,5) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1390,5) fn TransactGetItems(&self, input: &Arc) -> Arc, Arc>>; - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1402,5) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1405,5) fn TransactWriteItems(&self, input: &Arc) -> Arc, Arc>>; - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1417,5) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1420,5) fn UntagResource(&self, input: &Arc) -> Arc>>; - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1432,5) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1435,5) fn UpdateContinuousBackups(&self, input: &Arc) -> Arc, Arc>>; - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1447,5) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1450,5) fn UpdateContributorInsights(&self, input: &Arc) -> Arc, Arc>>; - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1462,5) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1465,5) fn UpdateGlobalTable(&self, input: &Arc) -> Arc, Arc>>; - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1477,5) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1480,5) fn UpdateGlobalTableSettings(&self, input: &Arc) -> Arc, Arc>>; - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1492,5) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1495,5) fn UpdateItem(&self, input: &Arc) -> Arc, Arc>>; - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1507,5) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1510,5) fn UpdateKinesisStreamingDestination(&self, input: &Arc) -> Arc, Arc>>; - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1522,5) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1525,5) fn UpdateTable(&self, input: &Arc) -> Arc, Arc>>; - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1537,5) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1540,5) fn UpdateTableReplicaAutoScaling(&self, input: &Arc) -> Arc, Arc>>; - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1552,5) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1555,5) fn UpdateTimeToLive(&self, input: &Arc) -> Arc, Arc>>; } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1566,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1569,3) #[derive(PartialEq, Clone)] pub enum EnableKinesisStreamingConfiguration { EnableKinesisStreamingConfiguration { @@ -38333,7 +38369,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1569,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1572,3) #[derive(PartialEq, Clone)] pub enum EnableKinesisStreamingDestinationInput { EnableKinesisStreamingDestinationInput { @@ -38423,7 +38459,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1574,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1577,3) #[derive(PartialEq, Clone)] pub enum EnableKinesisStreamingDestinationOutput { EnableKinesisStreamingDestinationOutput { @@ -38524,7 +38560,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1580,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1583,3) #[derive(PartialEq, Clone)] pub enum Endpoint { Endpoint { @@ -38603,10 +38639,10 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1585,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1588,3) pub type ErrorCount = i64; - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1592,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1595,3) #[derive(PartialEq, Clone)] pub enum ExecuteStatementInput { ExecuteStatementInput { @@ -38615,7 +38651,8 @@ pub mod software { ConsistentRead: Arc>, NextToken: Arc>>, ReturnConsumedCapacity: Arc>>, - Limit: Arc> + Limit: Arc>, + ReturnValuesOnConditionCheckFailure: Arc>> } } @@ -38623,37 +38660,43 @@ pub mod software { /// Returns a borrow of the field Statement pub fn Statement(&self) -> &Sequence { match self { - ExecuteStatementInput::ExecuteStatementInput{Statement, Parameters, ConsistentRead, NextToken, ReturnConsumedCapacity, Limit, } => Statement, + ExecuteStatementInput::ExecuteStatementInput{Statement, Parameters, ConsistentRead, NextToken, ReturnConsumedCapacity, Limit, ReturnValuesOnConditionCheckFailure, } => Statement, } } /// Returns a borrow of the field Parameters pub fn Parameters(&self) -> &Arc> { match self { - ExecuteStatementInput::ExecuteStatementInput{Statement, Parameters, ConsistentRead, NextToken, ReturnConsumedCapacity, Limit, } => Parameters, + ExecuteStatementInput::ExecuteStatementInput{Statement, Parameters, ConsistentRead, NextToken, ReturnConsumedCapacity, Limit, ReturnValuesOnConditionCheckFailure, } => Parameters, } } /// Returns a borrow of the field ConsistentRead pub fn ConsistentRead(&self) -> &Arc> { match self { - ExecuteStatementInput::ExecuteStatementInput{Statement, Parameters, ConsistentRead, NextToken, ReturnConsumedCapacity, Limit, } => ConsistentRead, + ExecuteStatementInput::ExecuteStatementInput{Statement, Parameters, ConsistentRead, NextToken, ReturnConsumedCapacity, Limit, ReturnValuesOnConditionCheckFailure, } => ConsistentRead, } } /// Returns a borrow of the field NextToken pub fn NextToken(&self) -> &Arc>> { match self { - ExecuteStatementInput::ExecuteStatementInput{Statement, Parameters, ConsistentRead, NextToken, ReturnConsumedCapacity, Limit, } => NextToken, + ExecuteStatementInput::ExecuteStatementInput{Statement, Parameters, ConsistentRead, NextToken, ReturnConsumedCapacity, Limit, ReturnValuesOnConditionCheckFailure, } => NextToken, } } /// Returns a borrow of the field ReturnConsumedCapacity pub fn ReturnConsumedCapacity(&self) -> &Arc>> { match self { - ExecuteStatementInput::ExecuteStatementInput{Statement, Parameters, ConsistentRead, NextToken, ReturnConsumedCapacity, Limit, } => ReturnConsumedCapacity, + ExecuteStatementInput::ExecuteStatementInput{Statement, Parameters, ConsistentRead, NextToken, ReturnConsumedCapacity, Limit, ReturnValuesOnConditionCheckFailure, } => ReturnConsumedCapacity, } } /// Returns a borrow of the field Limit pub fn Limit(&self) -> &Arc> { match self { - ExecuteStatementInput::ExecuteStatementInput{Statement, Parameters, ConsistentRead, NextToken, ReturnConsumedCapacity, Limit, } => Limit, + ExecuteStatementInput::ExecuteStatementInput{Statement, Parameters, ConsistentRead, NextToken, ReturnConsumedCapacity, Limit, ReturnValuesOnConditionCheckFailure, } => Limit, + } + } + /// Returns a borrow of the field ReturnValuesOnConditionCheckFailure + pub fn ReturnValuesOnConditionCheckFailure(&self) -> &Arc>> { + match self { + ExecuteStatementInput::ExecuteStatementInput{Statement, Parameters, ConsistentRead, NextToken, ReturnConsumedCapacity, Limit, ReturnValuesOnConditionCheckFailure, } => ReturnValuesOnConditionCheckFailure, } } } @@ -38669,7 +38712,7 @@ pub mod software { for ExecuteStatementInput { fn fmt_print(&self, _formatter: &mut Formatter, _in_seq: bool) -> std::fmt::Result { match self { - ExecuteStatementInput::ExecuteStatementInput{Statement, Parameters, ConsistentRead, NextToken, ReturnConsumedCapacity, Limit, } => { + ExecuteStatementInput::ExecuteStatementInput{Statement, Parameters, ConsistentRead, NextToken, ReturnConsumedCapacity, Limit, ReturnValuesOnConditionCheckFailure, } => { write!(_formatter, "software.amazon.cryptography.services.dynamodb.internaldafny.types.ExecuteStatementInput.ExecuteStatementInput(")?; DafnyPrint::fmt_print(Statement, _formatter, false)?; write!(_formatter, ", ")?; @@ -38682,6 +38725,8 @@ pub mod software { DafnyPrint::fmt_print(ReturnConsumedCapacity, _formatter, false)?; write!(_formatter, ", ")?; DafnyPrint::fmt_print(Limit, _formatter, false)?; + write!(_formatter, ", ")?; + DafnyPrint::fmt_print(ReturnValuesOnConditionCheckFailure, _formatter, false)?; write!(_formatter, ")")?; Ok(()) }, @@ -38696,13 +38741,14 @@ pub mod software { for ExecuteStatementInput { fn hash<_H: Hasher>(&self, _state: &mut _H) { match self { - ExecuteStatementInput::ExecuteStatementInput{Statement, Parameters, ConsistentRead, NextToken, ReturnConsumedCapacity, Limit, } => { + ExecuteStatementInput::ExecuteStatementInput{Statement, Parameters, ConsistentRead, NextToken, ReturnConsumedCapacity, Limit, ReturnValuesOnConditionCheckFailure, } => { Hash::hash(Statement, _state); Hash::hash(Parameters, _state); Hash::hash(ConsistentRead, _state); Hash::hash(NextToken, _state); Hash::hash(ReturnConsumedCapacity, _state); - Hash::hash(Limit, _state) + Hash::hash(Limit, _state); + Hash::hash(ReturnValuesOnConditionCheckFailure, _state) }, } } @@ -38717,7 +38763,8 @@ pub mod software { ConsistentRead: Default::default(), NextToken: Default::default(), ReturnConsumedCapacity: Default::default(), - Limit: Default::default() + Limit: Default::default(), + ReturnValuesOnConditionCheckFailure: Default::default() } } } @@ -38729,7 +38776,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1600,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1604,3) #[derive(PartialEq, Clone)] pub enum ExecuteStatementOutput { ExecuteStatementOutput { @@ -38830,7 +38877,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1606,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1610,3) #[derive(PartialEq, Clone)] pub enum ExecuteTransactionInput { ExecuteTransactionInput { @@ -38920,7 +38967,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1611,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1615,3) #[derive(PartialEq, Clone)] pub enum ExecuteTransactionOutput { ExecuteTransactionOutput { @@ -38999,7 +39046,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1616,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1620,3) #[derive(PartialEq, Clone)] pub enum ExpectedAttributeValue { ExpectedAttributeValue { @@ -39100,10 +39147,10 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1622,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1626,3) pub type ExportArn = Sequence; - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1626,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1630,3) #[derive(PartialEq, Clone)] pub enum ExportDescription { ExportDescription { @@ -39391,7 +39438,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1649,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1653,3) #[derive(PartialEq, Clone)] pub enum ExportFormat { DYNAMODB_JSON {}, @@ -39461,7 +39508,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1654,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1658,3) #[derive(PartialEq, Clone)] pub enum ExportStatus { IN_PROGRESS {}, @@ -39539,7 +39586,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1659,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1663,3) #[derive(PartialEq, Clone)] pub enum ExportSummary { ExportSummary { @@ -39629,7 +39676,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1664,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1668,3) #[derive(PartialEq, Clone)] pub enum ExportTableToPointInTimeInput { ExportTableToPointInTimeInput { @@ -39807,7 +39854,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1677,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1681,3) #[derive(PartialEq, Clone)] pub enum ExportTableToPointInTimeOutput { ExportTableToPointInTimeOutput { @@ -39875,7 +39922,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1680,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1684,3) #[derive(PartialEq, Clone)] pub enum ExportType { FULL_EXPORT {}, @@ -39945,7 +39992,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1683,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1687,3) #[derive(PartialEq, Clone)] pub enum ExportViewType { NEW_IMAGE {}, @@ -40015,7 +40062,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1691,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1695,3) #[derive(PartialEq, Clone)] pub enum FailureException { FailureException { @@ -40094,7 +40141,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1697,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1701,3) #[derive(PartialEq, Clone)] pub enum Get { Get { @@ -40195,7 +40242,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1703,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1707,3) #[derive(PartialEq, Clone)] pub enum GetItemInput { GetItemInput { @@ -40329,7 +40376,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1712,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1716,3) #[derive(PartialEq, Clone)] pub enum GetItemOutput { GetItemOutput { @@ -40408,7 +40455,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1716,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1720,3) #[derive(PartialEq, Clone)] pub enum GetResourcePolicyInput { GetResourcePolicyInput { @@ -40476,7 +40523,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1719,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1723,3) #[derive(PartialEq, Clone)] pub enum GetResourcePolicyOutput { GetResourcePolicyOutput { @@ -40555,7 +40602,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1723,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1727,3) #[derive(PartialEq, Clone)] pub enum GlobalSecondaryIndex { GlobalSecondaryIndex { @@ -40667,7 +40714,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1730,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1734,3) #[derive(PartialEq, Clone)] pub enum GlobalSecondaryIndexAutoScalingUpdate { GlobalSecondaryIndexAutoScalingUpdate { @@ -40746,10 +40793,10 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1734,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1738,3) pub type GlobalSecondaryIndexAutoScalingUpdateList = Sequence>; - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1738,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1742,3) #[derive(PartialEq, Clone)] pub enum GlobalSecondaryIndexDescription { GlobalSecondaryIndexDescription { @@ -40916,7 +40963,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1752,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1756,3) #[derive(PartialEq, Clone)] pub enum GlobalSecondaryIndexInfo { GlobalSecondaryIndexInfo { @@ -41028,7 +41075,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1760,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1764,3) #[derive(PartialEq, Clone)] pub enum GlobalSecondaryIndexUpdate { GlobalSecondaryIndexUpdate { @@ -41118,7 +41165,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1766,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1770,3) #[derive(PartialEq, Clone)] pub enum GlobalTable { GlobalTable { @@ -41197,7 +41244,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1771,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1775,3) #[derive(PartialEq, Clone)] pub enum GlobalTableDescription { GlobalTableDescription { @@ -41309,7 +41356,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1778,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1782,3) #[derive(PartialEq, Clone)] pub enum GlobalTableGlobalSecondaryIndexSettingsUpdate { GlobalTableGlobalSecondaryIndexSettingsUpdate { @@ -41399,10 +41446,10 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1783,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1787,3) pub type GlobalTableGlobalSecondaryIndexSettingsUpdateList = Sequence>; - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1788,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1792,3) #[derive(PartialEq, Clone)] pub enum GlobalTableStatus { CREATING {}, @@ -41488,16 +41535,16 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1793,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1797,3) pub type ImportArn = Sequence; - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1797,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1801,3) pub type ImportedItemCount = i64; - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1801,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1805,3) pub type ImportNextToken = Sequence; - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1805,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1809,3) #[derive(PartialEq, Clone)] pub enum ImportStatus { IN_PROGRESS {}, @@ -41591,7 +41638,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1811,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1815,3) #[derive(PartialEq, Clone)] pub enum ImportSummary { ImportSummary { @@ -41736,7 +41783,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1822,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1826,3) #[derive(PartialEq, Clone)] pub enum ImportTableDescription { ImportTableDescription { @@ -42002,7 +42049,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1843,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1847,3) #[derive(PartialEq, Clone)] pub enum ImportTableInput { ImportTableInput { @@ -42125,7 +42172,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1851,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1855,3) #[derive(PartialEq, Clone)] pub enum ImportTableOutput { ImportTableOutput { @@ -42193,7 +42240,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1854,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1858,3) #[derive(PartialEq, Clone)] pub enum IncrementalExportSpecification { IncrementalExportSpecification { @@ -42283,10 +42330,10 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1859,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1863,3) pub type IndexName = Sequence; - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1863,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1867,3) #[derive(PartialEq, Clone)] pub enum IndexStatus { CREATING {}, @@ -42372,7 +42419,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1868,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1872,3) #[derive(PartialEq, Clone)] pub enum InputCompressionType { GZIP {}, @@ -42450,7 +42497,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1872,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1876,3) #[derive(PartialEq, Clone)] pub enum InputFormat { DYNAMODB_JSON {}, @@ -42528,7 +42575,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1876,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1880,3) #[derive(PartialEq, Clone)] pub enum InputFormatOptions { InputFormatOptions { @@ -42596,7 +42643,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1882,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1886,3) #[derive(PartialEq, Clone)] pub enum ItemCollectionMetrics { ItemCollectionMetrics { @@ -42675,13 +42722,13 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1888,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1892,3) pub type ItemCollectionSizeEstimateBound = Sequence; - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1893,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1897,3) pub type ItemCount = i64; - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1898,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1902,3) #[derive(PartialEq, Clone)] pub enum ItemResponse { ItemResponse { @@ -42749,13 +42796,13 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1901,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1905,3) pub type ItemResponseList = Sequence>; - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1908,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1912,3) pub type KeyList = Sequence, Arc>>; - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1912,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1916,3) #[derive(PartialEq, Clone)] pub enum KeysAndAttributes { KeysAndAttributes { @@ -42867,13 +42914,13 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1919,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1923,3) pub type KeySchema = Sequence>; - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1923,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1927,3) pub type KeySchemaAttributeName = Sequence; - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1927,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1931,3) #[derive(PartialEq, Clone)] pub enum KeySchemaElement { KeySchemaElement { @@ -42952,7 +42999,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1931,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1935,3) #[derive(PartialEq, Clone)] pub enum KeyType { HASH {}, @@ -43022,7 +43069,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1934,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1938,3) #[derive(PartialEq, Clone)] pub enum KinesisDataStreamDestination { KinesisDataStreamDestination { @@ -43123,7 +43170,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1941,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1945,3) #[derive(PartialEq, Clone)] pub enum KinesisStreamingDestinationInput { KinesisStreamingDestinationInput { @@ -43213,7 +43260,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1946,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1950,3) #[derive(PartialEq, Clone)] pub enum KinesisStreamingDestinationOutput { KinesisStreamingDestinationOutput { @@ -43314,7 +43361,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1955,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1959,3) #[derive(PartialEq, Clone)] pub enum ListBackupsInput { ListBackupsInput { @@ -43437,7 +43484,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1963,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1967,3) #[derive(PartialEq, Clone)] pub enum ListBackupsOutput { ListBackupsOutput { @@ -43516,7 +43563,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1967,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1971,3) #[derive(PartialEq, Clone)] pub enum ListContributorInsightsInput { ListContributorInsightsInput { @@ -43606,10 +43653,10 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1972,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1976,3) pub type ListContributorInsightsLimit = i32; - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1976,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1980,3) #[derive(PartialEq, Clone)] pub enum ListContributorInsightsOutput { ListContributorInsightsOutput { @@ -43688,7 +43735,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1980,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1984,3) #[derive(PartialEq, Clone)] pub enum ListExportsInput { ListExportsInput { @@ -43778,10 +43825,10 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1985,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1989,3) pub type ListExportsMaxLimit = i32; - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1989,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1993,3) #[derive(PartialEq, Clone)] pub enum ListExportsOutput { ListExportsOutput { @@ -43860,7 +43907,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1993,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1997,3) #[derive(PartialEq, Clone)] pub enum ListGlobalTablesInput { ListGlobalTablesInput { @@ -43950,7 +43997,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(1998,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2002,3) #[derive(PartialEq, Clone)] pub enum ListGlobalTablesOutput { ListGlobalTablesOutput { @@ -44029,7 +44076,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2002,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2006,3) #[derive(PartialEq, Clone)] pub enum ListImportsInput { ListImportsInput { @@ -44119,10 +44166,10 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2007,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2011,3) pub type ListImportsMaxLimit = i32; - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2011,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2015,3) #[derive(PartialEq, Clone)] pub enum ListImportsOutput { ListImportsOutput { @@ -44201,7 +44248,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2015,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2019,3) #[derive(PartialEq, Clone)] pub enum ListTablesInput { ListTablesInput { @@ -44280,10 +44327,10 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2019,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2023,3) pub type ListTablesInputLimit = i32; - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2023,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2027,3) #[derive(PartialEq, Clone)] pub enum ListTablesOutput { ListTablesOutput { @@ -44362,7 +44409,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2027,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2031,3) #[derive(PartialEq, Clone)] pub enum ListTagsOfResourceInput { ListTagsOfResourceInput { @@ -44441,7 +44488,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2031,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2035,3) #[derive(PartialEq, Clone)] pub enum ListTagsOfResourceOutput { ListTagsOfResourceOutput { @@ -44520,7 +44567,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2035,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2039,3) #[derive(PartialEq, Clone)] pub enum LocalSecondaryIndex { LocalSecondaryIndex { @@ -44610,7 +44657,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2040,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2044,3) #[derive(PartialEq, Clone)] pub enum LocalSecondaryIndexDescription { LocalSecondaryIndexDescription { @@ -44733,7 +44780,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2050,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2054,3) #[derive(PartialEq, Clone)] pub enum LocalSecondaryIndexInfo { LocalSecondaryIndexInfo { @@ -44823,16 +44870,16 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2060,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2064,3) pub type NonKeyAttributeName = Sequence; - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2064,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2068,3) pub type NonKeyAttributeNameList = Sequence>; - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2068,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2072,3) pub type NonNegativeLongObject = i64; - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2075,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2079,3) #[derive(PartialEq, Clone)] pub enum OnDemandThroughput { OnDemandThroughput { @@ -44911,7 +44958,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2079,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2083,3) #[derive(PartialEq, Clone)] pub enum OnDemandThroughputOverride { OnDemandThroughputOverride { @@ -44979,12 +45026,13 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2082,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2086,3) #[derive(PartialEq, Clone)] pub enum ParameterizedStatement { ParameterizedStatement { Statement: Sequence, - Parameters: Arc> + Parameters: Arc>, + ReturnValuesOnConditionCheckFailure: Arc>> } } @@ -44992,13 +45040,19 @@ pub mod software { /// Returns a borrow of the field Statement pub fn Statement(&self) -> &Sequence { match self { - ParameterizedStatement::ParameterizedStatement{Statement, Parameters, } => Statement, + ParameterizedStatement::ParameterizedStatement{Statement, Parameters, ReturnValuesOnConditionCheckFailure, } => Statement, } } /// Returns a borrow of the field Parameters pub fn Parameters(&self) -> &Arc> { match self { - ParameterizedStatement::ParameterizedStatement{Statement, Parameters, } => Parameters, + ParameterizedStatement::ParameterizedStatement{Statement, Parameters, ReturnValuesOnConditionCheckFailure, } => Parameters, + } + } + /// Returns a borrow of the field ReturnValuesOnConditionCheckFailure + pub fn ReturnValuesOnConditionCheckFailure(&self) -> &Arc>> { + match self { + ParameterizedStatement::ParameterizedStatement{Statement, Parameters, ReturnValuesOnConditionCheckFailure, } => ReturnValuesOnConditionCheckFailure, } } } @@ -45014,11 +45068,13 @@ pub mod software { for ParameterizedStatement { fn fmt_print(&self, _formatter: &mut Formatter, _in_seq: bool) -> std::fmt::Result { match self { - ParameterizedStatement::ParameterizedStatement{Statement, Parameters, } => { + ParameterizedStatement::ParameterizedStatement{Statement, Parameters, ReturnValuesOnConditionCheckFailure, } => { write!(_formatter, "software.amazon.cryptography.services.dynamodb.internaldafny.types.ParameterizedStatement.ParameterizedStatement(")?; DafnyPrint::fmt_print(Statement, _formatter, false)?; write!(_formatter, ", ")?; DafnyPrint::fmt_print(Parameters, _formatter, false)?; + write!(_formatter, ", ")?; + DafnyPrint::fmt_print(ReturnValuesOnConditionCheckFailure, _formatter, false)?; write!(_formatter, ")")?; Ok(()) }, @@ -45033,9 +45089,10 @@ pub mod software { for ParameterizedStatement { fn hash<_H: Hasher>(&self, _state: &mut _H) { match self { - ParameterizedStatement::ParameterizedStatement{Statement, Parameters, } => { + ParameterizedStatement::ParameterizedStatement{Statement, Parameters, ReturnValuesOnConditionCheckFailure, } => { Hash::hash(Statement, _state); - Hash::hash(Parameters, _state) + Hash::hash(Parameters, _state); + Hash::hash(ReturnValuesOnConditionCheckFailure, _state) }, } } @@ -45046,7 +45103,8 @@ pub mod software { fn default() -> ParameterizedStatement { ParameterizedStatement::ParameterizedStatement { Statement: Default::default(), - Parameters: Default::default() + Parameters: Default::default(), + ReturnValuesOnConditionCheckFailure: Default::default() } } } @@ -45058,19 +45116,19 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2086,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2091,3) pub type ParameterizedStatements = Sequence>; - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2090,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2095,3) pub type PartiQLBatchRequest = Sequence>; - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2095,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2100,3) pub type PartiQLNextToken = Sequence; - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2099,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2104,3) pub type PartiQLStatement = Sequence; - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2103,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2108,3) #[derive(PartialEq, Clone)] pub enum PointInTimeRecoveryDescription { PointInTimeRecoveryDescription { @@ -45160,7 +45218,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2108,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2113,3) #[derive(PartialEq, Clone)] pub enum PointInTimeRecoverySpecification { PointInTimeRecoverySpecification { @@ -45228,7 +45286,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2111,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2116,3) #[derive(PartialEq, Clone)] pub enum PointInTimeRecoveryStatus { ENABLED {}, @@ -45298,22 +45356,22 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2114,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2119,3) pub type PolicyRevisionId = Sequence; - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2118,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2123,3) pub type PositiveIntegerObject = i32; - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2122,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2127,3) pub type PositiveLongObject = i64; - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2126,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2131,3) pub type PreparedStatementParameters = Sequence>; - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2130,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2135,3) pub type ProcessedItemCount = i64; - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2134,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2139,3) #[derive(PartialEq, Clone)] pub enum Projection { Projection { @@ -45392,7 +45450,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2139,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2144,3) #[derive(PartialEq, Clone)] pub enum ProjectionType { ALL {}, @@ -45470,7 +45528,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2143,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2148,3) #[derive(PartialEq, Clone)] pub enum ProvisionedThroughput { ProvisionedThroughput { @@ -45549,7 +45607,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2147,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2152,3) #[derive(PartialEq, Clone)] pub enum ProvisionedThroughputDescription { ProvisionedThroughputDescription { @@ -45661,7 +45719,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2154,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2159,3) #[derive(PartialEq, Clone)] pub enum ProvisionedThroughputOverride { ProvisionedThroughputOverride { @@ -45729,7 +45787,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2157,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2162,3) #[derive(PartialEq, Clone)] pub enum Put { Put { @@ -45852,7 +45910,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2165,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2170,3) #[derive(PartialEq, Clone)] pub enum PutItemInput { PutItemInput { @@ -45865,7 +45923,8 @@ pub mod software { ConditionalOperator: Arc>>, ConditionExpression: Arc>>, ExpressionAttributeNames: Arc, Sequence>>>, - ExpressionAttributeValues: Arc, Arc>>> + ExpressionAttributeValues: Arc, Arc>>>, + ReturnValuesOnConditionCheckFailure: Arc>> } } @@ -45873,61 +45932,67 @@ pub mod software { /// Returns a borrow of the field TableName pub fn TableName(&self) -> &Sequence { match self { - PutItemInput::PutItemInput{TableName, Item, Expected, ReturnValues, ReturnConsumedCapacity, ReturnItemCollectionMetrics, ConditionalOperator, ConditionExpression, ExpressionAttributeNames, ExpressionAttributeValues, } => TableName, + PutItemInput::PutItemInput{TableName, Item, Expected, ReturnValues, ReturnConsumedCapacity, ReturnItemCollectionMetrics, ConditionalOperator, ConditionExpression, ExpressionAttributeNames, ExpressionAttributeValues, ReturnValuesOnConditionCheckFailure, } => TableName, } } /// Returns a borrow of the field Item pub fn Item(&self) -> &Map, Arc> { match self { - PutItemInput::PutItemInput{TableName, Item, Expected, ReturnValues, ReturnConsumedCapacity, ReturnItemCollectionMetrics, ConditionalOperator, ConditionExpression, ExpressionAttributeNames, ExpressionAttributeValues, } => Item, + PutItemInput::PutItemInput{TableName, Item, Expected, ReturnValues, ReturnConsumedCapacity, ReturnItemCollectionMetrics, ConditionalOperator, ConditionExpression, ExpressionAttributeNames, ExpressionAttributeValues, ReturnValuesOnConditionCheckFailure, } => Item, } } /// Returns a borrow of the field Expected pub fn Expected(&self) -> &Arc, Arc>>> { match self { - PutItemInput::PutItemInput{TableName, Item, Expected, ReturnValues, ReturnConsumedCapacity, ReturnItemCollectionMetrics, ConditionalOperator, ConditionExpression, ExpressionAttributeNames, ExpressionAttributeValues, } => Expected, + PutItemInput::PutItemInput{TableName, Item, Expected, ReturnValues, ReturnConsumedCapacity, ReturnItemCollectionMetrics, ConditionalOperator, ConditionExpression, ExpressionAttributeNames, ExpressionAttributeValues, ReturnValuesOnConditionCheckFailure, } => Expected, } } /// Returns a borrow of the field ReturnValues pub fn ReturnValues(&self) -> &Arc>> { match self { - PutItemInput::PutItemInput{TableName, Item, Expected, ReturnValues, ReturnConsumedCapacity, ReturnItemCollectionMetrics, ConditionalOperator, ConditionExpression, ExpressionAttributeNames, ExpressionAttributeValues, } => ReturnValues, + PutItemInput::PutItemInput{TableName, Item, Expected, ReturnValues, ReturnConsumedCapacity, ReturnItemCollectionMetrics, ConditionalOperator, ConditionExpression, ExpressionAttributeNames, ExpressionAttributeValues, ReturnValuesOnConditionCheckFailure, } => ReturnValues, } } /// Returns a borrow of the field ReturnConsumedCapacity pub fn ReturnConsumedCapacity(&self) -> &Arc>> { match self { - PutItemInput::PutItemInput{TableName, Item, Expected, ReturnValues, ReturnConsumedCapacity, ReturnItemCollectionMetrics, ConditionalOperator, ConditionExpression, ExpressionAttributeNames, ExpressionAttributeValues, } => ReturnConsumedCapacity, + PutItemInput::PutItemInput{TableName, Item, Expected, ReturnValues, ReturnConsumedCapacity, ReturnItemCollectionMetrics, ConditionalOperator, ConditionExpression, ExpressionAttributeNames, ExpressionAttributeValues, ReturnValuesOnConditionCheckFailure, } => ReturnConsumedCapacity, } } /// Returns a borrow of the field ReturnItemCollectionMetrics pub fn ReturnItemCollectionMetrics(&self) -> &Arc>> { match self { - PutItemInput::PutItemInput{TableName, Item, Expected, ReturnValues, ReturnConsumedCapacity, ReturnItemCollectionMetrics, ConditionalOperator, ConditionExpression, ExpressionAttributeNames, ExpressionAttributeValues, } => ReturnItemCollectionMetrics, + PutItemInput::PutItemInput{TableName, Item, Expected, ReturnValues, ReturnConsumedCapacity, ReturnItemCollectionMetrics, ConditionalOperator, ConditionExpression, ExpressionAttributeNames, ExpressionAttributeValues, ReturnValuesOnConditionCheckFailure, } => ReturnItemCollectionMetrics, } } /// Returns a borrow of the field ConditionalOperator pub fn ConditionalOperator(&self) -> &Arc>> { match self { - PutItemInput::PutItemInput{TableName, Item, Expected, ReturnValues, ReturnConsumedCapacity, ReturnItemCollectionMetrics, ConditionalOperator, ConditionExpression, ExpressionAttributeNames, ExpressionAttributeValues, } => ConditionalOperator, + PutItemInput::PutItemInput{TableName, Item, Expected, ReturnValues, ReturnConsumedCapacity, ReturnItemCollectionMetrics, ConditionalOperator, ConditionExpression, ExpressionAttributeNames, ExpressionAttributeValues, ReturnValuesOnConditionCheckFailure, } => ConditionalOperator, } } /// Returns a borrow of the field ConditionExpression pub fn ConditionExpression(&self) -> &Arc>> { match self { - PutItemInput::PutItemInput{TableName, Item, Expected, ReturnValues, ReturnConsumedCapacity, ReturnItemCollectionMetrics, ConditionalOperator, ConditionExpression, ExpressionAttributeNames, ExpressionAttributeValues, } => ConditionExpression, + PutItemInput::PutItemInput{TableName, Item, Expected, ReturnValues, ReturnConsumedCapacity, ReturnItemCollectionMetrics, ConditionalOperator, ConditionExpression, ExpressionAttributeNames, ExpressionAttributeValues, ReturnValuesOnConditionCheckFailure, } => ConditionExpression, } } /// Returns a borrow of the field ExpressionAttributeNames pub fn ExpressionAttributeNames(&self) -> &Arc, Sequence>>> { match self { - PutItemInput::PutItemInput{TableName, Item, Expected, ReturnValues, ReturnConsumedCapacity, ReturnItemCollectionMetrics, ConditionalOperator, ConditionExpression, ExpressionAttributeNames, ExpressionAttributeValues, } => ExpressionAttributeNames, + PutItemInput::PutItemInput{TableName, Item, Expected, ReturnValues, ReturnConsumedCapacity, ReturnItemCollectionMetrics, ConditionalOperator, ConditionExpression, ExpressionAttributeNames, ExpressionAttributeValues, ReturnValuesOnConditionCheckFailure, } => ExpressionAttributeNames, } } /// Returns a borrow of the field ExpressionAttributeValues pub fn ExpressionAttributeValues(&self) -> &Arc, Arc>>> { match self { - PutItemInput::PutItemInput{TableName, Item, Expected, ReturnValues, ReturnConsumedCapacity, ReturnItemCollectionMetrics, ConditionalOperator, ConditionExpression, ExpressionAttributeNames, ExpressionAttributeValues, } => ExpressionAttributeValues, + PutItemInput::PutItemInput{TableName, Item, Expected, ReturnValues, ReturnConsumedCapacity, ReturnItemCollectionMetrics, ConditionalOperator, ConditionExpression, ExpressionAttributeNames, ExpressionAttributeValues, ReturnValuesOnConditionCheckFailure, } => ExpressionAttributeValues, + } + } + /// Returns a borrow of the field ReturnValuesOnConditionCheckFailure + pub fn ReturnValuesOnConditionCheckFailure(&self) -> &Arc>> { + match self { + PutItemInput::PutItemInput{TableName, Item, Expected, ReturnValues, ReturnConsumedCapacity, ReturnItemCollectionMetrics, ConditionalOperator, ConditionExpression, ExpressionAttributeNames, ExpressionAttributeValues, ReturnValuesOnConditionCheckFailure, } => ReturnValuesOnConditionCheckFailure, } } } @@ -45943,7 +46008,7 @@ pub mod software { for PutItemInput { fn fmt_print(&self, _formatter: &mut Formatter, _in_seq: bool) -> std::fmt::Result { match self { - PutItemInput::PutItemInput{TableName, Item, Expected, ReturnValues, ReturnConsumedCapacity, ReturnItemCollectionMetrics, ConditionalOperator, ConditionExpression, ExpressionAttributeNames, ExpressionAttributeValues, } => { + PutItemInput::PutItemInput{TableName, Item, Expected, ReturnValues, ReturnConsumedCapacity, ReturnItemCollectionMetrics, ConditionalOperator, ConditionExpression, ExpressionAttributeNames, ExpressionAttributeValues, ReturnValuesOnConditionCheckFailure, } => { write!(_formatter, "software.amazon.cryptography.services.dynamodb.internaldafny.types.PutItemInput.PutItemInput(")?; DafnyPrint::fmt_print(TableName, _formatter, false)?; write!(_formatter, ", ")?; @@ -45964,6 +46029,8 @@ pub mod software { DafnyPrint::fmt_print(ExpressionAttributeNames, _formatter, false)?; write!(_formatter, ", ")?; DafnyPrint::fmt_print(ExpressionAttributeValues, _formatter, false)?; + write!(_formatter, ", ")?; + DafnyPrint::fmt_print(ReturnValuesOnConditionCheckFailure, _formatter, false)?; write!(_formatter, ")")?; Ok(()) }, @@ -45978,7 +46045,7 @@ pub mod software { for PutItemInput { fn hash<_H: Hasher>(&self, _state: &mut _H) { match self { - PutItemInput::PutItemInput{TableName, Item, Expected, ReturnValues, ReturnConsumedCapacity, ReturnItemCollectionMetrics, ConditionalOperator, ConditionExpression, ExpressionAttributeNames, ExpressionAttributeValues, } => { + PutItemInput::PutItemInput{TableName, Item, Expected, ReturnValues, ReturnConsumedCapacity, ReturnItemCollectionMetrics, ConditionalOperator, ConditionExpression, ExpressionAttributeNames, ExpressionAttributeValues, ReturnValuesOnConditionCheckFailure, } => { Hash::hash(TableName, _state); Hash::hash(Item, _state); Hash::hash(Expected, _state); @@ -45988,7 +46055,8 @@ pub mod software { Hash::hash(ConditionalOperator, _state); Hash::hash(ConditionExpression, _state); Hash::hash(ExpressionAttributeNames, _state); - Hash::hash(ExpressionAttributeValues, _state) + Hash::hash(ExpressionAttributeValues, _state); + Hash::hash(ReturnValuesOnConditionCheckFailure, _state) }, } } @@ -46007,7 +46075,8 @@ pub mod software { ConditionalOperator: Default::default(), ConditionExpression: Default::default(), ExpressionAttributeNames: Default::default(), - ExpressionAttributeValues: Default::default() + ExpressionAttributeValues: Default::default(), + ReturnValuesOnConditionCheckFailure: Default::default() } } } @@ -46019,7 +46088,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2178,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2184,3) #[derive(PartialEq, Clone)] pub enum PutItemOutput { PutItemOutput { @@ -46109,7 +46178,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2183,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2189,3) #[derive(PartialEq, Clone)] pub enum PutRequest { PutRequest { @@ -46177,7 +46246,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2186,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2192,3) #[derive(PartialEq, Clone)] pub enum PutResourcePolicyInput { PutResourcePolicyInput { @@ -46278,7 +46347,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2192,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2198,3) #[derive(PartialEq, Clone)] pub enum PutResourcePolicyOutput { PutResourcePolicyOutput { @@ -46346,7 +46415,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2195,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2201,3) #[derive(PartialEq, Clone)] pub enum QueryInput { QueryInput { @@ -46590,7 +46659,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2214,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2220,3) #[derive(PartialEq, Clone)] pub enum QueryOutput { QueryOutput { @@ -46702,7 +46771,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2222,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2228,3) #[derive(PartialEq, Clone)] pub enum Replica { Replica { @@ -46770,7 +46839,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2225,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2231,3) #[derive(PartialEq, Clone)] pub enum ReplicaAutoScalingDescription { ReplicaAutoScalingDescription { @@ -46882,7 +46951,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2233,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2239,3) #[derive(PartialEq, Clone)] pub enum ReplicaAutoScalingUpdate { ReplicaAutoScalingUpdate { @@ -46972,10 +47041,10 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2238,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2244,3) pub type ReplicaAutoScalingUpdateList = Sequence>; - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2242,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2248,3) #[derive(PartialEq, Clone)] pub enum ReplicaDescription { ReplicaDescription { @@ -47142,7 +47211,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2255,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2261,3) #[derive(PartialEq, Clone)] pub enum ReplicaGlobalSecondaryIndex { ReplicaGlobalSecondaryIndex { @@ -47232,7 +47301,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2260,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2266,3) #[derive(PartialEq, Clone)] pub enum ReplicaGlobalSecondaryIndexAutoScalingDescription { ReplicaGlobalSecondaryIndexAutoScalingDescription { @@ -47333,7 +47402,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2267,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2273,3) #[derive(PartialEq, Clone)] pub enum ReplicaGlobalSecondaryIndexAutoScalingUpdate { ReplicaGlobalSecondaryIndexAutoScalingUpdate { @@ -47412,7 +47481,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2272,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2278,3) #[derive(PartialEq, Clone)] pub enum ReplicaGlobalSecondaryIndexDescription { ReplicaGlobalSecondaryIndexDescription { @@ -47502,10 +47571,10 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2278,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2284,3) pub type ReplicaGlobalSecondaryIndexList = Sequence>; - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2282,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2288,3) #[derive(PartialEq, Clone)] pub enum ReplicaGlobalSecondaryIndexSettingsDescription { ReplicaGlobalSecondaryIndexSettingsDescription { @@ -47628,7 +47697,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2291,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2297,3) #[derive(PartialEq, Clone)] pub enum ReplicaGlobalSecondaryIndexSettingsUpdate { ReplicaGlobalSecondaryIndexSettingsUpdate { @@ -47718,10 +47787,10 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2296,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2302,3) pub type ReplicaGlobalSecondaryIndexSettingsUpdateList = Sequence>; - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2301,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2307,3) #[derive(PartialEq, Clone)] pub enum ReplicaSettingsDescription { ReplicaSettingsDescription { @@ -47877,7 +47946,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2313,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2319,3) #[derive(PartialEq, Clone)] pub enum ReplicaSettingsUpdate { ReplicaSettingsUpdate { @@ -47989,10 +48058,10 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2320,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2326,3) pub type ReplicaSettingsUpdateList = Sequence>; - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2324,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2330,3) #[derive(PartialEq, Clone)] pub enum ReplicaStatus { CREATING {}, @@ -48102,7 +48171,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2334,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2340,3) #[derive(PartialEq, Clone)] pub enum ReplicationGroupUpdate { ReplicationGroupUpdate { @@ -48192,10 +48261,10 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2339,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2345,3) pub type ReplicationGroupUpdateList = Sequence>; - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2343,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2349,3) #[derive(PartialEq, Clone)] pub enum ReplicaUpdate { ReplicaUpdate { @@ -48274,10 +48343,10 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2348,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2354,3) pub type ResourceArnString = Sequence; - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2354,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2360,3) #[derive(PartialEq, Clone)] pub enum RestoreSummary { RestoreSummary { @@ -48378,7 +48447,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2360,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2366,3) #[derive(PartialEq, Clone)] pub enum RestoreTableFromBackupInput { RestoreTableFromBackupInput { @@ -48523,7 +48592,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2370,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2376,3) #[derive(PartialEq, Clone)] pub enum RestoreTableFromBackupOutput { RestoreTableFromBackupOutput { @@ -48591,7 +48660,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2373,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2379,3) #[derive(PartialEq, Clone)] pub enum RestoreTableToPointInTimeInput { RestoreTableToPointInTimeInput { @@ -48769,7 +48838,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2386,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2392,3) #[derive(PartialEq, Clone)] pub enum RestoreTableToPointInTimeOutput { RestoreTableToPointInTimeOutput { @@ -48837,7 +48906,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2389,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2395,3) #[derive(PartialEq, Clone)] pub enum ReturnConsumedCapacity { INDEXES {}, @@ -48915,7 +48984,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2393,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2399,3) #[derive(PartialEq, Clone)] pub enum ReturnItemCollectionMetrics { SIZE {}, @@ -48985,7 +49054,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2396,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2402,3) #[derive(PartialEq, Clone)] pub enum ReturnValue { NONE {}, @@ -49079,7 +49148,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2402,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2408,3) #[derive(PartialEq, Clone)] pub enum ReturnValuesOnConditionCheckFailure { ALL_OLD {}, @@ -49149,10 +49218,10 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2405,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2411,3) pub type S3Bucket = Sequence; - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2410,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2416,3) #[derive(PartialEq, Clone)] pub enum S3BucketSource { S3BucketSource { @@ -49242,10 +49311,10 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2415,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2421,3) pub type S3Prefix = Sequence; - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2419,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2425,3) #[derive(PartialEq, Clone)] pub enum S3SseAlgorithm { AES256 {}, @@ -49315,10 +49384,10 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2422,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2428,3) pub type S3SseKmsKeyId = Sequence; - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2426,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2432,3) #[derive(PartialEq, Clone)] pub enum ScalarAttributeType { S {}, @@ -49396,7 +49465,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2430,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2436,3) #[derive(PartialEq, Clone)] pub enum ScanInput { ScanInput { @@ -49629,7 +49698,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2448,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2454,3) #[derive(PartialEq, Clone)] pub enum ScanOutput { ScanOutput { @@ -49741,13 +49810,13 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2455,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2461,3) pub type ScanSegment = i32; - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2459,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2465,3) pub type ScanTotalSegments = i32; - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2464,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2470,3) #[derive(PartialEq, Clone)] pub enum Select { ALL_ATTRIBUTES {}, @@ -49833,7 +49902,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2469,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2475,3) #[derive(PartialEq, Clone)] pub enum SourceTableDetails { SourceTableDetails { @@ -50000,7 +50069,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2481,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2487,3) #[derive(PartialEq, Clone)] pub enum SourceTableFeatureDetails { SourceTableFeatureDetails { @@ -50112,7 +50181,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2488,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2494,3) #[derive(PartialEq, Clone)] pub enum SSEDescription { SSEDescription { @@ -50213,7 +50282,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2495,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2501,3) #[derive(PartialEq, Clone)] pub enum SSESpecification { SSESpecification { @@ -50303,7 +50372,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2500,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2506,3) #[derive(PartialEq, Clone)] pub enum SSEStatus { ENABLING {}, @@ -50397,7 +50466,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2506,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2512,3) #[derive(PartialEq, Clone)] pub enum SSEType { AES256 {}, @@ -50467,10 +50536,10 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2509,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2515,3) pub type StreamArn = Sequence; - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2514,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2520,3) #[derive(PartialEq, Clone)] pub enum StreamSpecification { StreamSpecification { @@ -50549,7 +50618,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2518,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2524,3) #[derive(PartialEq, Clone)] pub enum StreamViewType { NEW_IMAGE {}, @@ -50635,10 +50704,10 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2526,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2532,3) pub type TableArn = Sequence; - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2530,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2536,3) #[derive(PartialEq, Clone)] pub enum TableAutoScalingDescription { TableAutoScalingDescription { @@ -50728,7 +50797,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2535,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2541,3) #[derive(PartialEq, Clone)] pub enum TableClass { STANDARD {}, @@ -50798,7 +50867,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2538,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2544,3) #[derive(PartialEq, Clone)] pub enum TableClassSummary { TableClassSummary { @@ -50877,7 +50946,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2542,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2548,3) #[derive(PartialEq, Clone)] pub enum TableCreationParameters { TableCreationParameters { @@ -51022,7 +51091,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2552,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2558,3) #[derive(PartialEq, Clone)] pub enum TableDescription { TableDescription { @@ -51343,10 +51412,10 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2579,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2585,3) pub type TableName = Sequence; - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2584,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2590,3) #[derive(PartialEq, Clone)] pub enum TableStatus { CREATING {}, @@ -51456,7 +51525,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2592,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2598,3) #[derive(PartialEq, Clone)] pub enum Tag { Tag { @@ -51535,10 +51604,10 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2597,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2603,3) pub type TagKeyString = Sequence; - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2602,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2608,3) #[derive(PartialEq, Clone)] pub enum TagResourceInput { TagResourceInput { @@ -51617,13 +51686,13 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2606,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2612,3) pub type TagValueString = Sequence; - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2610,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2616,3) pub type TimeToLiveAttributeName = Sequence; - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2614,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2620,3) #[derive(PartialEq, Clone)] pub enum TimeToLiveDescription { TimeToLiveDescription { @@ -51702,7 +51771,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2619,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2625,3) #[derive(PartialEq, Clone)] pub enum TimeToLiveSpecification { TimeToLiveSpecification { @@ -51781,7 +51850,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2623,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2629,3) #[derive(PartialEq, Clone)] pub enum TimeToLiveStatus { ENABLING {}, @@ -51867,7 +51936,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2628,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2634,3) #[derive(PartialEq, Clone)] pub enum TransactGetItem { TransactGetItem { @@ -51935,10 +52004,10 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2631,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2637,3) pub type TransactGetItemList = Sequence>; - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2635,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2641,3) #[derive(PartialEq, Clone)] pub enum TransactGetItemsInput { TransactGetItemsInput { @@ -52017,7 +52086,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2639,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2645,3) #[derive(PartialEq, Clone)] pub enum TransactGetItemsOutput { TransactGetItemsOutput { @@ -52096,7 +52165,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2643,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2649,3) #[derive(PartialEq, Clone)] pub enum TransactWriteItem { TransactWriteItem { @@ -52197,10 +52266,10 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2649,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2655,3) pub type TransactWriteItemList = Sequence>; - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2653,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2659,3) #[derive(PartialEq, Clone)] pub enum TransactWriteItemsInput { TransactWriteItemsInput { @@ -52301,7 +52370,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2659,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2665,3) #[derive(PartialEq, Clone)] pub enum TransactWriteItemsOutput { TransactWriteItemsOutput { @@ -52380,7 +52449,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2663,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2669,3) #[derive(PartialEq, Clone)] pub enum UntagResourceInput { UntagResourceInput { @@ -52459,7 +52528,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2667,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2673,3) #[derive(PartialEq, Clone)] pub enum Update { Update { @@ -52593,7 +52662,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2676,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2682,3) #[derive(PartialEq, Clone)] pub enum UpdateContinuousBackupsInput { UpdateContinuousBackupsInput { @@ -52672,7 +52741,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2680,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2686,3) #[derive(PartialEq, Clone)] pub enum UpdateContinuousBackupsOutput { UpdateContinuousBackupsOutput { @@ -52740,7 +52809,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2683,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2689,3) #[derive(PartialEq, Clone)] pub enum UpdateContributorInsightsInput { UpdateContributorInsightsInput { @@ -52830,7 +52899,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2688,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2694,3) #[derive(PartialEq, Clone)] pub enum UpdateContributorInsightsOutput { UpdateContributorInsightsOutput { @@ -52920,7 +52989,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2694,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2700,3) #[derive(PartialEq, Clone)] pub enum UpdateGlobalSecondaryIndexAction { UpdateGlobalSecondaryIndexAction { @@ -53010,7 +53079,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2699,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2705,3) #[derive(PartialEq, Clone)] pub enum UpdateGlobalTableInput { UpdateGlobalTableInput { @@ -53089,7 +53158,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2703,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2709,3) #[derive(PartialEq, Clone)] pub enum UpdateGlobalTableOutput { UpdateGlobalTableOutput { @@ -53157,7 +53226,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2706,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2712,3) #[derive(PartialEq, Clone)] pub enum UpdateGlobalTableSettingsInput { UpdateGlobalTableSettingsInput { @@ -53280,7 +53349,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2714,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2720,3) #[derive(PartialEq, Clone)] pub enum UpdateGlobalTableSettingsOutput { UpdateGlobalTableSettingsOutput { @@ -53359,7 +53428,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2718,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2724,3) #[derive(PartialEq, Clone)] pub enum UpdateItemInput { UpdateItemInput { @@ -53374,7 +53443,8 @@ pub mod software { UpdateExpression: Arc>>, ConditionExpression: Arc>>, ExpressionAttributeNames: Arc, Sequence>>>, - ExpressionAttributeValues: Arc, Arc>>> + ExpressionAttributeValues: Arc, Arc>>>, + ReturnValuesOnConditionCheckFailure: Arc>> } } @@ -53382,73 +53452,79 @@ pub mod software { /// Returns a borrow of the field TableName pub fn TableName(&self) -> &Sequence { match self { - UpdateItemInput::UpdateItemInput{TableName, Key, AttributeUpdates, Expected, ConditionalOperator, ReturnValues, ReturnConsumedCapacity, ReturnItemCollectionMetrics, UpdateExpression, ConditionExpression, ExpressionAttributeNames, ExpressionAttributeValues, } => TableName, + UpdateItemInput::UpdateItemInput{TableName, Key, AttributeUpdates, Expected, ConditionalOperator, ReturnValues, ReturnConsumedCapacity, ReturnItemCollectionMetrics, UpdateExpression, ConditionExpression, ExpressionAttributeNames, ExpressionAttributeValues, ReturnValuesOnConditionCheckFailure, } => TableName, } } /// Returns a borrow of the field Key pub fn Key(&self) -> &Map, Arc> { match self { - UpdateItemInput::UpdateItemInput{TableName, Key, AttributeUpdates, Expected, ConditionalOperator, ReturnValues, ReturnConsumedCapacity, ReturnItemCollectionMetrics, UpdateExpression, ConditionExpression, ExpressionAttributeNames, ExpressionAttributeValues, } => Key, + UpdateItemInput::UpdateItemInput{TableName, Key, AttributeUpdates, Expected, ConditionalOperator, ReturnValues, ReturnConsumedCapacity, ReturnItemCollectionMetrics, UpdateExpression, ConditionExpression, ExpressionAttributeNames, ExpressionAttributeValues, ReturnValuesOnConditionCheckFailure, } => Key, } } /// Returns a borrow of the field AttributeUpdates pub fn AttributeUpdates(&self) -> &Arc, Arc>>> { match self { - UpdateItemInput::UpdateItemInput{TableName, Key, AttributeUpdates, Expected, ConditionalOperator, ReturnValues, ReturnConsumedCapacity, ReturnItemCollectionMetrics, UpdateExpression, ConditionExpression, ExpressionAttributeNames, ExpressionAttributeValues, } => AttributeUpdates, + UpdateItemInput::UpdateItemInput{TableName, Key, AttributeUpdates, Expected, ConditionalOperator, ReturnValues, ReturnConsumedCapacity, ReturnItemCollectionMetrics, UpdateExpression, ConditionExpression, ExpressionAttributeNames, ExpressionAttributeValues, ReturnValuesOnConditionCheckFailure, } => AttributeUpdates, } } /// Returns a borrow of the field Expected pub fn Expected(&self) -> &Arc, Arc>>> { match self { - UpdateItemInput::UpdateItemInput{TableName, Key, AttributeUpdates, Expected, ConditionalOperator, ReturnValues, ReturnConsumedCapacity, ReturnItemCollectionMetrics, UpdateExpression, ConditionExpression, ExpressionAttributeNames, ExpressionAttributeValues, } => Expected, + UpdateItemInput::UpdateItemInput{TableName, Key, AttributeUpdates, Expected, ConditionalOperator, ReturnValues, ReturnConsumedCapacity, ReturnItemCollectionMetrics, UpdateExpression, ConditionExpression, ExpressionAttributeNames, ExpressionAttributeValues, ReturnValuesOnConditionCheckFailure, } => Expected, } } /// Returns a borrow of the field ConditionalOperator pub fn ConditionalOperator(&self) -> &Arc>> { match self { - UpdateItemInput::UpdateItemInput{TableName, Key, AttributeUpdates, Expected, ConditionalOperator, ReturnValues, ReturnConsumedCapacity, ReturnItemCollectionMetrics, UpdateExpression, ConditionExpression, ExpressionAttributeNames, ExpressionAttributeValues, } => ConditionalOperator, + UpdateItemInput::UpdateItemInput{TableName, Key, AttributeUpdates, Expected, ConditionalOperator, ReturnValues, ReturnConsumedCapacity, ReturnItemCollectionMetrics, UpdateExpression, ConditionExpression, ExpressionAttributeNames, ExpressionAttributeValues, ReturnValuesOnConditionCheckFailure, } => ConditionalOperator, } } /// Returns a borrow of the field ReturnValues pub fn ReturnValues(&self) -> &Arc>> { match self { - UpdateItemInput::UpdateItemInput{TableName, Key, AttributeUpdates, Expected, ConditionalOperator, ReturnValues, ReturnConsumedCapacity, ReturnItemCollectionMetrics, UpdateExpression, ConditionExpression, ExpressionAttributeNames, ExpressionAttributeValues, } => ReturnValues, + UpdateItemInput::UpdateItemInput{TableName, Key, AttributeUpdates, Expected, ConditionalOperator, ReturnValues, ReturnConsumedCapacity, ReturnItemCollectionMetrics, UpdateExpression, ConditionExpression, ExpressionAttributeNames, ExpressionAttributeValues, ReturnValuesOnConditionCheckFailure, } => ReturnValues, } } /// Returns a borrow of the field ReturnConsumedCapacity pub fn ReturnConsumedCapacity(&self) -> &Arc>> { match self { - UpdateItemInput::UpdateItemInput{TableName, Key, AttributeUpdates, Expected, ConditionalOperator, ReturnValues, ReturnConsumedCapacity, ReturnItemCollectionMetrics, UpdateExpression, ConditionExpression, ExpressionAttributeNames, ExpressionAttributeValues, } => ReturnConsumedCapacity, + UpdateItemInput::UpdateItemInput{TableName, Key, AttributeUpdates, Expected, ConditionalOperator, ReturnValues, ReturnConsumedCapacity, ReturnItemCollectionMetrics, UpdateExpression, ConditionExpression, ExpressionAttributeNames, ExpressionAttributeValues, ReturnValuesOnConditionCheckFailure, } => ReturnConsumedCapacity, } } /// Returns a borrow of the field ReturnItemCollectionMetrics pub fn ReturnItemCollectionMetrics(&self) -> &Arc>> { match self { - UpdateItemInput::UpdateItemInput{TableName, Key, AttributeUpdates, Expected, ConditionalOperator, ReturnValues, ReturnConsumedCapacity, ReturnItemCollectionMetrics, UpdateExpression, ConditionExpression, ExpressionAttributeNames, ExpressionAttributeValues, } => ReturnItemCollectionMetrics, + UpdateItemInput::UpdateItemInput{TableName, Key, AttributeUpdates, Expected, ConditionalOperator, ReturnValues, ReturnConsumedCapacity, ReturnItemCollectionMetrics, UpdateExpression, ConditionExpression, ExpressionAttributeNames, ExpressionAttributeValues, ReturnValuesOnConditionCheckFailure, } => ReturnItemCollectionMetrics, } } /// Returns a borrow of the field UpdateExpression pub fn UpdateExpression(&self) -> &Arc>> { match self { - UpdateItemInput::UpdateItemInput{TableName, Key, AttributeUpdates, Expected, ConditionalOperator, ReturnValues, ReturnConsumedCapacity, ReturnItemCollectionMetrics, UpdateExpression, ConditionExpression, ExpressionAttributeNames, ExpressionAttributeValues, } => UpdateExpression, + UpdateItemInput::UpdateItemInput{TableName, Key, AttributeUpdates, Expected, ConditionalOperator, ReturnValues, ReturnConsumedCapacity, ReturnItemCollectionMetrics, UpdateExpression, ConditionExpression, ExpressionAttributeNames, ExpressionAttributeValues, ReturnValuesOnConditionCheckFailure, } => UpdateExpression, } } /// Returns a borrow of the field ConditionExpression pub fn ConditionExpression(&self) -> &Arc>> { match self { - UpdateItemInput::UpdateItemInput{TableName, Key, AttributeUpdates, Expected, ConditionalOperator, ReturnValues, ReturnConsumedCapacity, ReturnItemCollectionMetrics, UpdateExpression, ConditionExpression, ExpressionAttributeNames, ExpressionAttributeValues, } => ConditionExpression, + UpdateItemInput::UpdateItemInput{TableName, Key, AttributeUpdates, Expected, ConditionalOperator, ReturnValues, ReturnConsumedCapacity, ReturnItemCollectionMetrics, UpdateExpression, ConditionExpression, ExpressionAttributeNames, ExpressionAttributeValues, ReturnValuesOnConditionCheckFailure, } => ConditionExpression, } } /// Returns a borrow of the field ExpressionAttributeNames pub fn ExpressionAttributeNames(&self) -> &Arc, Sequence>>> { match self { - UpdateItemInput::UpdateItemInput{TableName, Key, AttributeUpdates, Expected, ConditionalOperator, ReturnValues, ReturnConsumedCapacity, ReturnItemCollectionMetrics, UpdateExpression, ConditionExpression, ExpressionAttributeNames, ExpressionAttributeValues, } => ExpressionAttributeNames, + UpdateItemInput::UpdateItemInput{TableName, Key, AttributeUpdates, Expected, ConditionalOperator, ReturnValues, ReturnConsumedCapacity, ReturnItemCollectionMetrics, UpdateExpression, ConditionExpression, ExpressionAttributeNames, ExpressionAttributeValues, ReturnValuesOnConditionCheckFailure, } => ExpressionAttributeNames, } } /// Returns a borrow of the field ExpressionAttributeValues pub fn ExpressionAttributeValues(&self) -> &Arc, Arc>>> { match self { - UpdateItemInput::UpdateItemInput{TableName, Key, AttributeUpdates, Expected, ConditionalOperator, ReturnValues, ReturnConsumedCapacity, ReturnItemCollectionMetrics, UpdateExpression, ConditionExpression, ExpressionAttributeNames, ExpressionAttributeValues, } => ExpressionAttributeValues, + UpdateItemInput::UpdateItemInput{TableName, Key, AttributeUpdates, Expected, ConditionalOperator, ReturnValues, ReturnConsumedCapacity, ReturnItemCollectionMetrics, UpdateExpression, ConditionExpression, ExpressionAttributeNames, ExpressionAttributeValues, ReturnValuesOnConditionCheckFailure, } => ExpressionAttributeValues, + } + } + /// Returns a borrow of the field ReturnValuesOnConditionCheckFailure + pub fn ReturnValuesOnConditionCheckFailure(&self) -> &Arc>> { + match self { + UpdateItemInput::UpdateItemInput{TableName, Key, AttributeUpdates, Expected, ConditionalOperator, ReturnValues, ReturnConsumedCapacity, ReturnItemCollectionMetrics, UpdateExpression, ConditionExpression, ExpressionAttributeNames, ExpressionAttributeValues, ReturnValuesOnConditionCheckFailure, } => ReturnValuesOnConditionCheckFailure, } } } @@ -53464,7 +53540,7 @@ pub mod software { for UpdateItemInput { fn fmt_print(&self, _formatter: &mut Formatter, _in_seq: bool) -> std::fmt::Result { match self { - UpdateItemInput::UpdateItemInput{TableName, Key, AttributeUpdates, Expected, ConditionalOperator, ReturnValues, ReturnConsumedCapacity, ReturnItemCollectionMetrics, UpdateExpression, ConditionExpression, ExpressionAttributeNames, ExpressionAttributeValues, } => { + UpdateItemInput::UpdateItemInput{TableName, Key, AttributeUpdates, Expected, ConditionalOperator, ReturnValues, ReturnConsumedCapacity, ReturnItemCollectionMetrics, UpdateExpression, ConditionExpression, ExpressionAttributeNames, ExpressionAttributeValues, ReturnValuesOnConditionCheckFailure, } => { write!(_formatter, "software.amazon.cryptography.services.dynamodb.internaldafny.types.UpdateItemInput.UpdateItemInput(")?; DafnyPrint::fmt_print(TableName, _formatter, false)?; write!(_formatter, ", ")?; @@ -53489,6 +53565,8 @@ pub mod software { DafnyPrint::fmt_print(ExpressionAttributeNames, _formatter, false)?; write!(_formatter, ", ")?; DafnyPrint::fmt_print(ExpressionAttributeValues, _formatter, false)?; + write!(_formatter, ", ")?; + DafnyPrint::fmt_print(ReturnValuesOnConditionCheckFailure, _formatter, false)?; write!(_formatter, ")")?; Ok(()) }, @@ -53503,7 +53581,7 @@ pub mod software { for UpdateItemInput { fn hash<_H: Hasher>(&self, _state: &mut _H) { match self { - UpdateItemInput::UpdateItemInput{TableName, Key, AttributeUpdates, Expected, ConditionalOperator, ReturnValues, ReturnConsumedCapacity, ReturnItemCollectionMetrics, UpdateExpression, ConditionExpression, ExpressionAttributeNames, ExpressionAttributeValues, } => { + UpdateItemInput::UpdateItemInput{TableName, Key, AttributeUpdates, Expected, ConditionalOperator, ReturnValues, ReturnConsumedCapacity, ReturnItemCollectionMetrics, UpdateExpression, ConditionExpression, ExpressionAttributeNames, ExpressionAttributeValues, ReturnValuesOnConditionCheckFailure, } => { Hash::hash(TableName, _state); Hash::hash(Key, _state); Hash::hash(AttributeUpdates, _state); @@ -53515,7 +53593,8 @@ pub mod software { Hash::hash(UpdateExpression, _state); Hash::hash(ConditionExpression, _state); Hash::hash(ExpressionAttributeNames, _state); - Hash::hash(ExpressionAttributeValues, _state) + Hash::hash(ExpressionAttributeValues, _state); + Hash::hash(ReturnValuesOnConditionCheckFailure, _state) }, } } @@ -53536,7 +53615,8 @@ pub mod software { UpdateExpression: Default::default(), ConditionExpression: Default::default(), ExpressionAttributeNames: Default::default(), - ExpressionAttributeValues: Default::default() + ExpressionAttributeValues: Default::default(), + ReturnValuesOnConditionCheckFailure: Default::default() } } } @@ -53548,7 +53628,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2732,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2739,3) #[derive(PartialEq, Clone)] pub enum UpdateItemOutput { UpdateItemOutput { @@ -53638,7 +53718,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2737,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2744,3) #[derive(PartialEq, Clone)] pub enum UpdateKinesisStreamingConfiguration { UpdateKinesisStreamingConfiguration { @@ -53706,7 +53786,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2740,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2747,3) #[derive(PartialEq, Clone)] pub enum UpdateKinesisStreamingDestinationInput { UpdateKinesisStreamingDestinationInput { @@ -53796,7 +53876,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2745,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2752,3) #[derive(PartialEq, Clone)] pub enum UpdateKinesisStreamingDestinationOutput { UpdateKinesisStreamingDestinationOutput { @@ -53897,7 +53977,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2751,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2758,3) #[derive(PartialEq, Clone)] pub enum UpdateReplicationGroupMemberAction { UpdateReplicationGroupMemberAction { @@ -54020,7 +54100,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2759,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2766,3) #[derive(PartialEq, Clone)] pub enum UpdateTableInput { UpdateTableInput { @@ -54198,7 +54278,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2772,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2779,3) #[derive(PartialEq, Clone)] pub enum UpdateTableOutput { UpdateTableOutput { @@ -54266,7 +54346,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2775,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2782,3) #[derive(PartialEq, Clone)] pub enum UpdateTableReplicaAutoScalingInput { UpdateTableReplicaAutoScalingInput { @@ -54367,7 +54447,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2781,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2788,3) #[derive(PartialEq, Clone)] pub enum UpdateTableReplicaAutoScalingOutput { UpdateTableReplicaAutoScalingOutput { @@ -54435,7 +54515,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2784,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2791,3) #[derive(PartialEq, Clone)] pub enum UpdateTimeToLiveInput { UpdateTimeToLiveInput { @@ -54514,7 +54594,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2788,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2795,3) #[derive(PartialEq, Clone)] pub enum UpdateTimeToLiveOutput { UpdateTimeToLiveOutput { @@ -54582,7 +54662,7 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2791,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2798,3) #[derive(PartialEq, Clone)] pub enum WriteRequest { WriteRequest { @@ -54661,10 +54741,10 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2795,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2802,3) pub type WriteRequests = Sequence>; - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2799,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2806,3) #[derive(PartialEq, Clone)] pub enum Error { BackupInUseException { @@ -55386,10 +55466,10 @@ pub mod software { } } - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2909,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2916,3) pub type OpaqueError = Arc; - /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2912,3) + /// ../submodules/MaterialProviders/ComAmazonawsDynamodb/Model/ComAmazonawsDynamodbTypes.dfy(2919,3) pub type DummySubsetType = DafnyInt; /// An element of DummySubsetType @@ -69278,13 +69358,13 @@ pub mod _AwsArnParsing_Compile { pub use ::dafny_runtime::DafnyCharUTF16; pub use crate::implementation_from_dafny::_Wrappers_Compile::Outcome; pub use ::dafny_runtime::int; + pub use ::dafny_runtime::truncate; pub use crate::implementation_from_dafny::_Wrappers_Compile::Option; pub use crate::implementation_from_dafny::_Wrappers_Compile::Option::Some; pub use crate::implementation_from_dafny::_AwsArnParsing_Compile::AwsKmsIdentifier::AwsKmsArnIdentifier; pub use crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::Error; pub use ::std::marker::Sync; pub use ::std::marker::Send; - pub use ::dafny_runtime::DafnyInt; pub use ::std::fmt::Debug; pub use ::std::fmt::Formatter; pub use ::dafny_runtime::DafnyPrint; @@ -69299,37 +69379,37 @@ pub mod _AwsArnParsing_Compile { pub struct _default {} impl _default { - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/AwsArnParsing.dfy(80,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/AwsArnParsing.dfy(86,3) pub fn ValidAwsKmsResource(resource: &Arc) -> bool { resource.Valid() && (resource.resourceType().clone() == string_utf16_of("key") || resource.resourceType().clone() == string_utf16_of("alias")) } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/AwsArnParsing.dfy(89,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/AwsArnParsing.dfy(95,3) pub fn ValidAwsKmsArn(arn: &Arc) -> bool { arn.Valid() && arn.service().clone() == string_utf16_of("kms") && _default::ValidAwsKmsResource(arn.resource()) } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/AwsArnParsing.dfy(115,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/AwsArnParsing.dfy(121,3) pub fn ParseAwsKmsRawResources(identifier: &Sequence) -> Arc>> { let mut info: Sequence> = crate::implementation_from_dafny::_StandardLibrary_Compile::_default::Split::(identifier, &DafnyCharUTF16(47 as u16)); - let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(info.get(&int!(0)) != string_utf16_of("key"), &string_utf16_of("Malformed raw key id: ").concat(identifier)); + let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(info.get(&int!((&truncate!((&int!(0)).clone(), u32)).clone())) != string_utf16_of("key"), &string_utf16_of("Malformed raw key id: ").concat(identifier)); if valueOrError0.IsFailure() { valueOrError0.PropagateFailure::() } else { - if info.cardinality() == int!(1) { + if truncate!(info.cardinality(), u64) == 1 { _default::ParseAwsKmsResources(&string_utf16_of("key/").concat(identifier)) } else { _default::ParseAwsKmsResources(identifier) } } } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/AwsArnParsing.dfy(127,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/AwsArnParsing.dfy(134,3) pub fn ParseAwsKmsResources(identifier: &Sequence) -> Arc>> { let mut info: Sequence> = crate::implementation_from_dafny::_StandardLibrary_Compile::_default::Split::(identifier, &DafnyCharUTF16(47 as u16)); - let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(int!(1) < info.cardinality(), &string_utf16_of("Malformed resource: ").concat(identifier)); + let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(1 < truncate!(info.cardinality(), u64), &string_utf16_of("Malformed resource: ").concat(identifier)); if valueOrError0.IsFailure() { valueOrError0.PropagateFailure::>() } else { - let mut resourceType: Sequence = info.get(&int!(0)); - let mut value: Sequence = crate::implementation_from_dafny::_StandardLibrary_Compile::_default::Join::(&info.drop(&int!(1)), &string_utf16_of("/")); + let mut resourceType: Sequence = info.get(&int!((&truncate!((&int!(0)).clone(), u32)).clone())); + let mut value: Sequence = crate::implementation_from_dafny::_StandardLibrary_Compile::_default::Join::(&info.drop(&int!((&truncate!((&int!(1)).clone(), u32)).clone())), &string_utf16_of("/")); let mut resource: Arc = Arc::new(AwsResource::AwsResource { resourceType: resourceType.clone(), value: value.clone() @@ -69344,15 +69424,15 @@ pub mod _AwsArnParsing_Compile { } } } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/AwsArnParsing.dfy(143,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/AwsArnParsing.dfy(151,3) pub fn ValidAmazonDynamodbResource(resource: &Arc) -> bool { resource.Valid() && resource.resourceType().clone() == string_utf16_of("table") } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/AwsArnParsing.dfy(152,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/AwsArnParsing.dfy(160,3) pub fn ValidAmazonDynamodbArn(arn: &Arc) -> bool { arn.Valid() && arn.service().clone() == string_utf16_of("dynamodb") && _default::ValidAmazonDynamodbResource(arn.resource()) } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/AwsArnParsing.dfy(175,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/AwsArnParsing.dfy(183,3) pub fn ParseAmazonDynamodbResources(identifier: &Sequence) -> Arc>> { let mut info: Arc, Sequence)>> = crate::implementation_from_dafny::_StandardLibrary_Compile::_default::_SplitOnce_q::(identifier, &DafnyCharUTF16(47 as u16)); let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(matches!((&info).as_ref(), Some{ .. }), &string_utf16_of("Malformed resource: ").concat(identifier)); @@ -69380,24 +69460,24 @@ pub mod _AwsArnParsing_Compile { } } } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/AwsArnParsing.dfy(232,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/AwsArnParsing.dfy(240,3) pub fn ParseAwsKmsArn(identifier: &Sequence) -> Arc>> { let mut components: Sequence> = crate::implementation_from_dafny::_StandardLibrary_Compile::_default::Split::(identifier, &DafnyCharUTF16(58 as u16)); - let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(int!(6) == components.cardinality(), &string_utf16_of("Malformed arn: ").concat(identifier)); + let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(6 == truncate!(components.cardinality(), u64), &string_utf16_of("Malformed arn: ").concat(identifier)); if valueOrError0.IsFailure() { valueOrError0.PropagateFailure::>() } else { - let mut valueOrError1: Arc>> = _default::ParseAwsKmsResources(&components.get(&int!(5))); + let mut valueOrError1: Arc>> = _default::ParseAwsKmsResources(&components.get(&int!((&truncate!((&int!(5)).clone(), u32)).clone()))); if valueOrError1.IsFailure() { valueOrError1.PropagateFailure::>() } else { let mut resource: AwsKmsResource = valueOrError1.Extract(); let mut arn: Arc = Arc::new(AwsArn::AwsArn { - arnLiteral: components.get(&int!(0)), - partition: components.get(&int!(1)), - service: components.get(&int!(2)), - region: components.get(&int!(3)), - account: components.get(&int!(4)), + arnLiteral: components.get(&int!((&truncate!((&int!(0)).clone(), u32)).clone())), + partition: components.get(&int!((&truncate!((&int!(1)).clone(), u32)).clone())), + service: components.get(&int!((&truncate!((&int!(2)).clone(), u32)).clone())), + region: components.get(&int!((&truncate!((&int!(3)).clone(), u32)).clone())), + account: components.get(&int!((&truncate!((&int!(4)).clone(), u32)).clone())), resource: resource.clone() }); let mut valueOrError2: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(_default::ValidAwsKmsArn(&arn), &string_utf16_of("Malformed Arn:").concat(identifier)); @@ -69411,24 +69491,24 @@ pub mod _AwsArnParsing_Compile { } } } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/AwsArnParsing.dfy(261,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/AwsArnParsing.dfy(271,3) pub fn ParseAmazonDynamodbTableArn(identifier: &Sequence) -> Arc>> { let mut components: Sequence> = crate::implementation_from_dafny::_StandardLibrary_Compile::_default::Split::(identifier, &DafnyCharUTF16(58 as u16)); - let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(int!(6) == components.cardinality(), &string_utf16_of("Malformed arn: ").concat(identifier)); + let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(6 == truncate!(components.cardinality(), u64), &string_utf16_of("Malformed arn: ").concat(identifier)); if valueOrError0.IsFailure() { valueOrError0.PropagateFailure::>() } else { - let mut valueOrError1: Arc>> = _default::ParseAmazonDynamodbResources(&components.get(&int!(5))); + let mut valueOrError1: Arc>> = _default::ParseAmazonDynamodbResources(&components.get(&int!((&truncate!((&int!(5)).clone(), u32)).clone()))); if valueOrError1.IsFailure() { valueOrError1.PropagateFailure::>() } else { let mut resource: AmazonDynamodbResource = valueOrError1.Extract(); let mut arn: Arc = Arc::new(AwsArn::AwsArn { - arnLiteral: components.get(&int!(0)), - partition: components.get(&int!(1)), - service: components.get(&int!(2)), - region: components.get(&int!(3)), - account: components.get(&int!(4)), + arnLiteral: components.get(&int!((&truncate!((&int!(0)).clone(), u32)).clone())), + partition: components.get(&int!((&truncate!((&int!(1)).clone(), u32)).clone())), + service: components.get(&int!((&truncate!((&int!(2)).clone(), u32)).clone())), + region: components.get(&int!((&truncate!((&int!(3)).clone(), u32)).clone())), + account: components.get(&int!((&truncate!((&int!(4)).clone(), u32)).clone())), resource: resource.clone() }); let mut valueOrError2: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(_default::ValidAmazonDynamodbArn(&arn), &string_utf16_of("Malformed Arn:").concat(identifier)); @@ -69442,7 +69522,7 @@ pub mod _AwsArnParsing_Compile { } } } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/AwsArnParsing.dfy(328,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/AwsArnParsing.dfy(339,3) pub fn ParseAwsKmsIdentifier(identifier: &Sequence) -> Arc, Sequence>> { if string_utf16_of("arn:") <= identifier.clone() { let mut valueOrError0: Arc>> = _default::ParseAwsKmsArn(identifier); @@ -69470,7 +69550,7 @@ pub mod _AwsArnParsing_Compile { } } } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/AwsArnParsing.dfy(338,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/AwsArnParsing.dfy(349,3) pub fn ParseAmazonDynamodbTableName(identifier: &Sequence) -> Arc, Sequence>> { let mut valueOrError0: Arc>> = _default::ParseAmazonDynamodbTableArn(identifier); if valueOrError0.IsFailure() { @@ -69486,11 +69566,11 @@ pub mod _AwsArnParsing_Compile { }) } } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/AwsArnParsing.dfy(350,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/AwsArnParsing.dfy(361,3) pub fn IsMultiRegionAwsKmsArn(arn: &AwsKmsArn) -> bool { _default::IsMultiRegionAwsKmsResource(arn.resource()) } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/AwsArnParsing.dfy(381,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/AwsArnParsing.dfy(392,3) pub fn IsMultiRegionAwsKmsIdentifier(identifier: &Arc) -> bool { let mut _source0: Arc = identifier.clone(); if matches!((&_source0).as_ref(), AwsKmsArnIdentifier{ .. }) { @@ -69503,11 +69583,11 @@ pub mod _AwsArnParsing_Compile { _default::IsMultiRegionAwsKmsResource(&r) } } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/AwsArnParsing.dfy(437,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/AwsArnParsing.dfy(448,3) pub fn IsMultiRegionAwsKmsResource(resource: &AwsKmsResource) -> bool { resource.resourceType().clone() == string_utf16_of("key") && string_utf16_of("mrk-") <= resource.value().clone() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/AwsArnParsing.dfy(442,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/AwsArnParsing.dfy(453,3) pub fn GetRegion(identifier: &Arc) -> Arc>> { let mut _source0: Arc = identifier.clone(); if matches!((&_source0).as_ref(), AwsKmsArnIdentifier{ .. }) { @@ -69521,13 +69601,13 @@ pub mod _AwsArnParsing_Compile { Arc::new(Option::>::None {}) } } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/AwsArnParsing.dfy(452,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/AwsArnParsing.dfy(463,3) pub fn IsAwsKmsIdentifierString(s: &Sequence) -> Arc, Sequence>> { let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(crate::implementation_from_dafny::UTF8::_default::IsASCIIString(s), &string_utf16_of("Not a valid ASCII string.")); if valueOrError0.IsFailure() { valueOrError0.PropagateFailure::>() } else { - let mut valueOrError1: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(int!(0) < s.cardinality() && s.cardinality() <= _default::MAX_AWS_KMS_IDENTIFIER_LENGTH(), &string_utf16_of("Identifier exceeds maximum length.")); + let mut valueOrError1: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(0 < truncate!(s.cardinality(), u64) && truncate!(s.cardinality(), u64) <= _default::MAX_AWS_KMS_IDENTIFIER_LENGTH(), &string_utf16_of("Identifier exceeds maximum length.")); if valueOrError1.IsFailure() { valueOrError1.PropagateFailure::>() } else { @@ -69535,13 +69615,13 @@ pub mod _AwsArnParsing_Compile { } } } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/AwsArnParsing.dfy(465,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/AwsArnParsing.dfy(477,3) pub fn Error(s: &Sequence) -> Arc { Arc::new(Error::AwsCryptographicMaterialProvidersException { message: s.clone() }) } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/AwsArnParsing.dfy(469,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/AwsArnParsing.dfy(481,3) pub fn ValidateDdbTableArn(tableArn: &Sequence) -> Arc>> { let mut valueOrError0: Arc, Arc>> = _default::ParseAmazonDynamodbTableName(tableArn).MapFailure::>(&(Arc::new(move |x0: &Sequence| _default::Error(x0)) as Arc _ + Sync + Send>)); if valueOrError0.IsFailure() { @@ -69567,13 +69647,13 @@ pub mod _AwsArnParsing_Compile { } } } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/AwsArnParsing.dfy(16,3) - pub fn MAX_AWS_KMS_IDENTIFIER_LENGTH() -> DafnyInt { - int!(2048) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/AwsArnParsing.dfy(17,3) + pub fn MAX_AWS_KMS_IDENTIFIER_LENGTH() -> u64 { + 2048 } } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/AwsArnParsing.dfy(18,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/AwsArnParsing.dfy(19,3) #[derive(PartialEq, Clone)] pub enum AwsResource { AwsResource { @@ -69583,11 +69663,11 @@ pub mod _AwsArnParsing_Compile { } impl AwsResource { - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/AwsArnParsing.dfy(22,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/AwsArnParsing.dfy(23,5) pub fn Valid(self: &Arc) -> bool { - true && int!(0) < self.value().cardinality() + true && 0 < truncate!(self.value().cardinality(), u64) } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/AwsArnParsing.dfy(27,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/AwsArnParsing.dfy(29,5) pub fn ToString(self: &Arc) -> Sequence { self.resourceType().concat(&string_utf16_of("/")).concat(self.value()) } @@ -69660,7 +69740,7 @@ pub mod _AwsArnParsing_Compile { } } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/AwsArnParsing.dfy(36,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/AwsArnParsing.dfy(38,3) #[derive(PartialEq, Clone)] pub enum AwsArn { AwsArn { @@ -69674,15 +69754,15 @@ pub mod _AwsArnParsing_Compile { } impl AwsArn { - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/AwsArnParsing.dfy(44,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/AwsArnParsing.dfy(46,5) pub fn Valid(self: &Arc) -> bool { - self.arnLiteral().clone() == string_utf16_of("arn") && int!(0) < self.partition().cardinality() && int!(0) < self.service().cardinality() && int!(0) < self.region().cardinality() && int!(0) < self.account().cardinality() && self.resource().Valid() + self.arnLiteral().clone() == string_utf16_of("arn") && 0 < truncate!(self.partition().cardinality(), u64) && 0 < truncate!(self.service().cardinality(), u64) && 0 < truncate!(self.region().cardinality(), u64) && 0 < truncate!(self.account().cardinality(), u64) && self.resource().Valid() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/AwsArnParsing.dfy(54,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/AwsArnParsing.dfy(60,5) pub fn ToString(self: &Arc) -> Sequence { self.ToArnString(&Arc::new(Option::>::None {})) } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/AwsArnParsing.dfy(60,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/AwsArnParsing.dfy(66,5) pub fn ToArnString(self: &Arc, customRegion: &Arc>>) -> Sequence { let mut _this = self.clone(); let mut _r0 = customRegion.clone(); @@ -69813,13 +69893,13 @@ pub mod _AwsArnParsing_Compile { } } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/AwsArnParsing.dfy(96,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/AwsArnParsing.dfy(102,3) pub type AwsKmsArn = Arc; - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/AwsArnParsing.dfy(99,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/AwsArnParsing.dfy(105,3) pub type AwsKmsResource = Arc; - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/AwsArnParsing.dfy(102,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/AwsArnParsing.dfy(108,3) #[derive(PartialEq, Clone)] pub enum AwsKmsIdentifier { AwsKmsArnIdentifier { @@ -69831,7 +69911,7 @@ pub mod _AwsArnParsing_Compile { } impl AwsKmsIdentifier { - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/AwsArnParsing.dfy(106,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/AwsArnParsing.dfy(112,5) pub fn ToString(self: &Arc) -> Sequence { let mut _source0: Arc = self.clone(); if matches!((&_source0).as_ref(), AwsKmsArnIdentifier{ .. }) { @@ -69920,13 +70000,13 @@ pub mod _AwsArnParsing_Compile { } } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/AwsArnParsing.dfy(159,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/AwsArnParsing.dfy(167,3) pub type AmazonDynamodbTableArn = Arc; - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/AwsArnParsing.dfy(162,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/AwsArnParsing.dfy(170,3) pub type AmazonDynamodbResource = Arc; - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/AwsArnParsing.dfy(165,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/AwsArnParsing.dfy(173,3) #[derive(PartialEq, Clone)] pub enum AmazonDynamodbTableName { AmazonDynamodbTableArn { @@ -69935,7 +70015,7 @@ pub mod _AwsArnParsing_Compile { } impl AmazonDynamodbTableName { - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/AwsArnParsing.dfy(167,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/AwsArnParsing.dfy(175,5) pub fn GetTableName(self: &Arc) -> Sequence { let mut _source0: Arc = self.clone(); let mut ___mcc_h0: AmazonDynamodbTableArn = _source0.a().clone(); @@ -70001,7 +70081,7 @@ pub mod _AwsArnParsing_Compile { } } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/AwsArnParsing.dfy(461,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/AwsArnParsing.dfy(473,3) pub type AwsKmsIdentifierString = Sequence; } /// dafny/DynamoDbItemEncryptor/src/AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations.dfy(9,1) @@ -70018,14 +70098,15 @@ pub mod _AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations_Compile { pub use ::dafny_runtime::Map; pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::structuredencryption::internaldafny::types::StructuredDataTerminal; pub use ::dafny_runtime::int; + pub use ::dafny_runtime::truncate; pub use crate::implementation_from_dafny::_Wrappers_Compile::Outcome; pub use crate::implementation_from_dafny::_Wrappers_Compile::Option::None; pub use ::dafny_runtime::set; pub use ::dafny_runtime::map; pub use crate::implementation_from_dafny::_StructuredEncryptionHeader_Compile::Version; pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::structuredencryption::internaldafny::types::AuthenticateAction; - pub use crate::implementation_from_dafny::software::amazon::cryptography::services::dynamodb::internaldafny::types::AttributeValue; pub use ::dafny_runtime::MapBuilder; + pub use crate::implementation_from_dafny::software::amazon::cryptography::services::dynamodb::internaldafny::types::AttributeValue; pub use ::std::marker::Sync; pub use ::std::marker::Send; pub use ::dafny_runtime::Set; @@ -70047,7 +70128,6 @@ pub mod _AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations_Compile { pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::structuredencryption::internaldafny::types::EncryptStructureInput; pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::itemencryptor::internaldafny::types::DecryptItemInput; pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::itemencryptor::internaldafny::types::DecryptItemOutput; - pub use ::dafny_runtime::DafnyInt; pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::internaldafny::types::PlaintextOverride::FORBID_PLAINTEXT_WRITE_ALLOW_PLAINTEXT_READ; pub use crate::implementation_from_dafny::software::amazon::cryptography::services::dynamodb::internaldafny::types::AttributeValue::B; pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::structuredencryption::internaldafny::types::DecryptStructureOutput; @@ -70069,11 +70149,11 @@ pub mod _AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations_Compile { pub struct _default {} impl _default { - /// dafny/DynamoDbItemEncryptor/src/AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations.dfy(49,3) + /// dafny/DynamoDbItemEncryptor/src/AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations.dfy(50,3) pub fn AllowedUnsigned(unauthenticatedAttributes: &Arc>, unauthenticatedPrefix: &Arc>>, attr: &Sequence) -> bool { matches!(unauthenticatedAttributes.as_ref(), Some{ .. }) && unauthenticatedAttributes.value().contains(attr) || matches!(unauthenticatedPrefix.as_ref(), Some{ .. }) && unauthenticatedPrefix.value().clone() <= attr.clone() || crate::implementation_from_dafny::_DynamoDbItemEncryptorUtil_Compile::_default::ReservedPrefix() <= attr.clone() } - /// dafny/DynamoDbItemEncryptor/src/AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations.dfy(70,3) + /// dafny/DynamoDbItemEncryptor/src/AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations.dfy(71,3) pub fn ForwardCompatibleAttributeAction(attribute: &Sequence, action: &Arc, unauthenticatedAttributes: &Arc>, unauthenticatedPrefix: &Arc>>) -> bool { if action.clone() == Arc::new(CryptoAction::DO_NOTHING {}) { _default::AllowedUnsigned(unauthenticatedAttributes, unauthenticatedPrefix, attribute) @@ -70081,7 +70161,7 @@ pub mod _AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations_Compile { !_default::AllowedUnsigned(unauthenticatedAttributes, unauthenticatedPrefix, attribute) } } - /// dafny/DynamoDbItemEncryptor/src/AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations.dfy(83,3) + /// dafny/DynamoDbItemEncryptor/src/AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations.dfy(84,3) pub fn CryptoActionString(action: &Arc) -> Sequence { if action.clone() == Arc::new(CryptoAction::DO_NOTHING {}) { string_utf16_of("DO_NOTHING") @@ -70101,7 +70181,7 @@ pub mod _AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations_Compile { } } } - /// dafny/DynamoDbItemEncryptor/src/AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations.dfy(103,3) + /// dafny/DynamoDbItemEncryptor/src/AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations.dfy(104,3) pub fn ExplainNotForwardCompatible(attr: &Sequence, action: &Arc, unauthenticatedAttributes: &Arc>, unauthenticatedPrefix: &Arc>>) -> Sequence { string_utf16_of("Attribute ").concat(attr).concat(&string_utf16_of(" is configured as ")).concat(&_default::CryptoActionString(action)).concat(&string_utf16_of(" but ")).concat(&(if action.clone() == Arc::new(CryptoAction::DO_NOTHING {}) { string_utf16_of("it must also be in unauthenticatedAttributes or begin with the unauthenticatedPrefix.") @@ -70117,15 +70197,15 @@ pub mod _AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations_Compile { } })) } - /// dafny/DynamoDbItemEncryptor/src/AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations.dfy(125,3) + /// dafny/DynamoDbItemEncryptor/src/AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations.dfy(126,3) pub fn UnknownAttribute(config: &Arc, attr: &Sequence) -> bool { _default::InSignatureScope(config, attr) && !config.attributeActionsOnEncrypt().contains(attr) } - /// dafny/DynamoDbItemEncryptor/src/AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations.dfy(135,3) + /// dafny/DynamoDbItemEncryptor/src/AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations.dfy(136,3) pub fn InSignatureScope(config: &Arc, attr: &Sequence) -> bool { !_default::AllowedUnsigned(config.allowedUnsignedAttributes(), config.allowedUnsignedAttributePrefix(), attr) } - /// dafny/DynamoDbItemEncryptor/src/AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations.dfy(143,3) + /// dafny/DynamoDbItemEncryptor/src/AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations.dfy(144,3) pub fn EncodeName(k: &Sequence) -> Arc>> { _default::DDBEncode(&crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::ATTR_PREFIX().concat(k)) } @@ -70134,7 +70214,7 @@ pub mod _AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations_Compile { /// # If the [Configuration Version](./ddb-table-encryption-config.md#configuration-version) is 2, /// # then the base context MUST be the [version 2](#dynamodb-item-base-context-version-2) context; /// # otherwise, the base context MUST be the [version 1](#dynamodb-item-base-context-version-1) context. - /// dafny/DynamoDbItemEncryptor/src/AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations.dfy(149,3) + /// dafny/DynamoDbItemEncryptor/src/AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations.dfy(150,3) pub fn MakeEncryptionContextForEncrypt(config: &Arc, item: &Map, Arc>) -> Arc, Arc>> { if config.version().clone() == 2 { _default::MakeEncryptionContextV2(config, item) @@ -70142,12 +70222,12 @@ pub mod _AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations_Compile { _default::MakeEncryptionContextV1(config, item) } } - /// dafny/DynamoDbItemEncryptor/src/AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations.dfy(168,3) + /// dafny/DynamoDbItemEncryptor/src/AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations.dfy(169,3) pub fn MakeEncryptionContextForDecrypt(config: &Arc, header: &Sequence, item: &Map, Arc>) -> Arc, Arc>> { - if header.get(&int!(0)) == 2 { + if header.get(&int!((&truncate!((&int!(0)).clone(), u32)).clone())) == 2 { _default::MakeEncryptionContextV2(config, item) } else { - if header.get(&int!(0)) == 1 { + if header.get(&int!((&truncate!((&int!(0)).clone(), u32)).clone())) == 1 { _default::MakeEncryptionContextV1(config, item) } else { Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::, Arc>::Failure { @@ -70163,9 +70243,17 @@ pub mod _AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations_Compile { /// # [logical table name](./ddb-table-encryption-config.md#logical-table-name). /// # - the key "aws-crypto-partition-name" with a value equal to the name of the Partition Key on this item. /// # - the [value](#base-context-value-version-1) of the Partition Key. - /// dafny/DynamoDbItemEncryptor/src/AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations.dfy(198,3) + /// dafny/DynamoDbItemEncryptor/src/AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations.dfy(199,3) pub fn MakeEncryptionContextV1(config: &Arc, item: &Map, Arc>) -> Arc, Arc>> { - let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(item.contains(config.partitionKeyName()), &_default::DDBError(&string_utf16_of("Partition key ").concat(config.partitionKeyName()).concat(&string_utf16_of(" not found in Item to be encrypted or decrypted")))); + let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::FNeed::>(item.contains(config.partitionKeyName()), { + let config: Arc = config.clone(); + &({ + let mut config = config.clone(); + Arc::new(move || -> Arc{ + _default::DDBError(&string_utf16_of("Partition key ").concat(config.partitionKeyName()).concat(&string_utf16_of(" not found in Item to be encrypted or decrypted"))) + }) + }) + }); if valueOrError0.IsFailure() { valueOrError0.PropagateFailure::>() } else { @@ -70235,7 +70323,7 @@ pub mod _AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations_Compile { /// # - the key "aws-crypto-table-name" with a value equal to the DynamoDB Table Name of the DynamoDB Table /// # this item is stored in (or will be stored in). /// # - the key "aws-crypto-partition-name" with a value equal to the name of the Partition Key on this item. - /// dafny/DynamoDbItemEncryptor/src/AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations.dfy(302,3) + /// dafny/DynamoDbItemEncryptor/src/AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations.dfy(303,3) pub fn MakeEncryptionContextV2(config: &Arc, item: &Map, Arc>) -> Arc, Arc>> { let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(item.contains(config.partitionKeyName()), &_default::DDBError(&string_utf16_of("Partition key ").concat(config.partitionKeyName()).concat(&string_utf16_of(" not found in Item to be encrypted or decrypted")))); if valueOrError0.IsFailure() { @@ -70289,13 +70377,13 @@ pub mod _AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations_Compile { } } } - /// dafny/DynamoDbItemEncryptor/src/AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations.dfy(382,3) + /// dafny/DynamoDbItemEncryptor/src/AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations.dfy(383,3) pub fn DDBError(s: &Sequence) -> Arc { Arc::new(crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::itemencryptor::internaldafny::types::Error::DynamoDbItemEncryptorException { message: s.clone() }) } - /// dafny/DynamoDbItemEncryptor/src/AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations.dfy(387,3) + /// dafny/DynamoDbItemEncryptor/src/AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations.dfy(388,3) pub fn DDBEncode(s: &Sequence) -> Arc>> { crate::implementation_from_dafny::UTF8::_default::Encode(s).MapFailure::>(&({ Arc::new(move |e: &Sequence| -> Arc{ @@ -70303,7 +70391,7 @@ pub mod _AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations_Compile { }) })) } - /// dafny/DynamoDbItemEncryptor/src/AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations.dfy(392,3) + /// dafny/DynamoDbItemEncryptor/src/AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations.dfy(393,3) pub fn IsVersion2Schema(actions: &Map, Arc>) -> bool { actions.keys().iter().any(({ let mut actions = actions.clone(); @@ -70319,7 +70407,7 @@ pub mod _AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations_Compile { /// # [SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT](../structured-encryption/structures.md#contextandsign) /// # then the configuration version MUST be 2; otherwise, /// # the configuration version MUST be 1. - /// dafny/DynamoDbItemEncryptor/src/AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations.dfy(396,3) + /// dafny/DynamoDbItemEncryptor/src/AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations.dfy(397,3) pub fn VersionFromActions(actions: &Map, Arc>) -> Version { if _default::IsVersion2Schema(actions) { 2 @@ -70332,7 +70420,7 @@ pub mod _AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations_Compile { /// # if the [configuration version](#configuration-version) is 2, then /// # the key action MUST be [SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT](../structured-encryption/structures.md#contextandsign); /// # otherwise, the key action MUST be [SIGN_ONLY](../structured-encryption/structures.md#signonly). - /// dafny/DynamoDbItemEncryptor/src/AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations.dfy(411,3) + /// dafny/DynamoDbItemEncryptor/src/AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations.dfy(412,3) pub fn KeyActionFromVersion(version: Version) -> Arc { if version == 2 { Arc::new(CryptoAction::SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT {}) @@ -70340,7 +70428,7 @@ pub mod _AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations_Compile { Arc::new(CryptoAction::SIGN_ONLY {}) } } - /// dafny/DynamoDbItemEncryptor/src/AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations.dfy(425,3) + /// dafny/DynamoDbItemEncryptor/src/AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations.dfy(428,3) pub fn KeyActionStringFromVersion(version: Version) -> Sequence { if version == 2 { string_utf16_of("SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT") @@ -70348,7 +70436,7 @@ pub mod _AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations_Compile { string_utf16_of("SIGN_ONLY") } } - /// dafny/DynamoDbItemEncryptor/src/AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations.dfy(497,3) + /// dafny/DynamoDbItemEncryptor/src/AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations.dfy(500,3) pub fn GetCryptoSchemaActionInner(config: &Arc, attr: &Sequence) -> Arc, Sequence>> { if config.attributeActionsOnEncrypt().contains(attr) { Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::, Sequence>::Success { @@ -70366,11 +70454,11 @@ pub mod _AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations_Compile { } } } - /// dafny/DynamoDbItemEncryptor/src/AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations.dfy(512,3) + /// dafny/DynamoDbItemEncryptor/src/AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations.dfy(515,3) pub fn GetCryptoSchemaAction(config: &Arc, attr: &Sequence) -> Arc, Sequence>> { _default::GetCryptoSchemaActionInner(config, attr) } - /// dafny/DynamoDbItemEncryptor/src/AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations.dfy(522,3) + /// dafny/DynamoDbItemEncryptor/src/AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations.dfy(525,3) pub fn GetAuthenticateSchemaAction(config: &Arc, attr: &Sequence) -> Arc { if _default::InSignatureScope(config, attr) { Arc::new(AuthenticateAction::SIGN {}) @@ -70385,8 +70473,8 @@ pub mod _AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations_Compile { /// # for every attribute in the [input DynamoDB Item](#dynamodb-item) /// # (Attribute Actions MAY specify a Crypto Action for an attribute not /// # in the input DynamoDB Item). - /// dafny/DynamoDbItemEncryptor/src/AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations.dfy(547,3) - pub fn ConfigToCryptoSchema(config: &Arc, item: &Map, Arc>) -> Arc, Arc>, Arc>> { + /// dafny/DynamoDbItemEncryptor/src/AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations.dfy(550,3) + pub fn ConfigToCryptoSchema(config: &Arc, item: &Map, Arc>) -> Arc, Arc>, Arc>> { let mut schema: Map, Arc, Sequence>>> = (&({ let mut item = item.clone(); let mut config = config.clone(); @@ -70404,8 +70492,8 @@ pub mod _AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations_Compile { let mut actionMapRes: Arc, Arc>, Sequence>> = crate::implementation_from_dafny::_DynamoToStruct_Compile::_default::SimplifyMapValue::, Arc>(&schema); crate::implementation_from_dafny::_DynamoToStruct_Compile::_default::MapError::, Arc>>(&actionMapRes) } - /// dafny/DynamoDbItemEncryptor/src/AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations.dfy(591,3) - pub fn ConfigToAuthenticateSchema(config: &Arc, item: &Map, Arc>) -> Map, Arc> { + /// dafny/DynamoDbItemEncryptor/src/AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations.dfy(594,3) + pub fn ConfigToAuthenticateSchema(config: &Arc, item: &Map, Arc>) -> Map, Arc> { (&({ let mut item = item.clone(); let mut config = config.clone(); @@ -70426,11 +70514,11 @@ pub mod _AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations_Compile { }) }))() } - /// dafny/DynamoDbItemEncryptor/src/AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations.dfy(628,3) + /// dafny/DynamoDbItemEncryptor/src/AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations.dfy(631,3) pub fn IsPlaintextItem(ddbItem: &Map, Arc>) -> bool { !ddbItem.contains(&crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::HeaderField()) && !ddbItem.contains(&crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::FooterField()) } - /// dafny/DynamoDbItemEncryptor/src/AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations.dfy(633,3) + /// dafny/DynamoDbItemEncryptor/src/AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations.dfy(636,3) pub fn ConvertCryptoSchemaToAttributeActions(config: &ValidConfig, schema: &Map, Arc>) -> Arc, Arc>, Arc>> { let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(schema.keys().iter().all(({ let mut config = config.clone(); @@ -70474,16 +70562,16 @@ pub mod _AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations_Compile { } } } - /// dafny/DynamoDbItemEncryptor/src/AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations.dfy(649,3) + /// dafny/DynamoDbItemEncryptor/src/AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations.dfy(654,3) pub fn GetItemNames(item: &Map, Arc>) -> Sequence { let mut keys: Sequence> = crate::implementation_from_dafny::SortedSets::_default::SetToOrderedSequence2::(&item.keys(), &(Arc::new(move |x0: &DafnyCharUTF16,x1: &DafnyCharUTF16| crate::implementation_from_dafny::_DynamoDbItemEncryptorUtil_Compile::_default::CharLess(x0, x1)) as Arc _ + Sync + Send>)); - if keys.cardinality() == int!(0) { + if truncate!(keys.cardinality(), u64) == 0 { string_utf16_of("item is empty") } else { crate::implementation_from_dafny::_StandardLibrary_Compile::_default::Join::(&keys, &string_utf16_of(" ")) } } - /// dafny/DynamoDbItemEncryptor/src/AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations.dfy(659,3) + /// dafny/DynamoDbItemEncryptor/src/AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations.dfy(665,3) pub fn KeyMissingMsg(config: &Arc, item: &Map, Arc>, tag: &Sequence) -> Sequence { string_utf16_of("On ").concat(tag).concat(&string_utf16_of(" : ")).concat(&(if !item.contains(config.partitionKeyName()) { string_utf16_of("Partition key '").concat(config.partitionKeyName()).concat(&string_utf16_of("' does not exist in item. ")) @@ -70495,7 +70583,7 @@ pub mod _AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations_Compile { string_utf16_of("") })).concat(&string_utf16_of("Item contains these attributes : ")).concat(&_default::GetItemNames(item)).concat(&string_utf16_of(".")) } - /// dafny/DynamoDbItemEncryptor/src/AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations.dfy(682,3) + /// dafny/DynamoDbItemEncryptor/src/AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations.dfy(688,3) pub fn ContextAttrsExist(actions: &Map, Arc>, item: &Map, Arc>) -> bool { actions.keys().iter().all(({ let mut item = item.clone(); @@ -70506,7 +70594,7 @@ pub mod _AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations_Compile { }) }).as_ref()) } - /// dafny/DynamoDbItemEncryptor/src/AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations.dfy(686,3) + /// dafny/DynamoDbItemEncryptor/src/AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations.dfy(692,3) pub fn ContextMissingMsg(actions: &Map, Arc>, item: &Map, Arc>) -> Sequence { let mut s: Set> = (&({ let mut item = item.clone(); @@ -70523,11 +70611,11 @@ pub mod _AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations_Compile { }) }))(); let mut missing: Sequence> = crate::implementation_from_dafny::SortedSets::_default::SetToOrderedSequence2::(&s, &(Arc::new(move |x0: &DafnyCharUTF16,x1: &DafnyCharUTF16| crate::implementation_from_dafny::_DynamoDbItemEncryptorUtil_Compile::_default::CharLess(x0, x1)) as Arc _ + Sync + Send>)); - if missing.cardinality() == int!(0) { + if truncate!(missing.cardinality(), u64) == 0 { string_utf16_of("No missing SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT attributes.") } else { - if missing.cardinality() == int!(1) { - string_utf16_of("Attribute ").concat(&missing.get(&int!(0))).concat(&string_utf16_of(" was configured with SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT but was not present in item to be encrypted.")) + if truncate!(missing.cardinality(), u64) == 1 { + string_utf16_of("Attribute ").concat(&missing.get(&int!((&truncate!((&int!(0)).clone(), u32)).clone()))).concat(&string_utf16_of(" was configured with SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT but was not present in item to be encrypted.")) } else { string_utf16_of("These attributes were configured with SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT but were not present in item to be encrypted.").concat(&crate::implementation_from_dafny::_StandardLibrary_Compile::_default::Join::(&missing, &string_utf16_of(","))) } @@ -70538,7 +70626,7 @@ pub mod _AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations_Compile { /// # This item MUST include an Attribute with a name that matches the /// # [DynamoDB Partition Key Name](./ddb-table-encryption-config.md#dynamodb-partition-key-name) /// # configured on the [DynamoDB Item Encryptor](./ddb-item-encryptor.md). - /// dafny/DynamoDbItemEncryptor/src/AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations.dfy(702,3) + /// dafny/DynamoDbItemEncryptor/src/AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations.dfy(709,3) pub fn EncryptItem(config: &Arc, input: &Arc) -> Arc, Arc>> { let mut output = MaybePlacebo::, Arc>>>::new(); let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(input.plaintextItem().contains(config.partitionKeyName()) && (matches!(config.sortKeyName().as_ref(), None{ .. }) || input.plaintextItem().contains(config.sortKeyName().value())), &crate::implementation_from_dafny::_DynamoDbItemEncryptorUtil_Compile::_default::E(&_default::KeyMissingMsg(config, input.plaintextItem(), &string_utf16_of("Encrypt")))); @@ -70551,14 +70639,6 @@ pub mod _AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations_Compile { output = MaybePlacebo::from(valueOrError1.PropagateFailure::>()); return output.read(); }; - if crate::implementation_from_dafny::_DynamoDbItemEncryptorUtil_Compile::_default::MAX_ATTRIBUTE_COUNT() < input.plaintextItem().cardinality() { - let mut actCount: Sequence = crate::implementation_from_dafny::_StandardLibrary_Compile::_String_Compile::_default::Base10Int2String(&input.plaintextItem().cardinality()); - let mut maxCount: Sequence = crate::implementation_from_dafny::_StandardLibrary_Compile::_String_Compile::_default::Base10Int2String(&crate::implementation_from_dafny::_DynamoDbItemEncryptorUtil_Compile::_default::MAX_ATTRIBUTE_COUNT()); - output = MaybePlacebo::from(Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::, Arc>::Failure { - error: crate::implementation_from_dafny::_DynamoDbItemEncryptorUtil_Compile::_default::E(&string_utf16_of("Item to encrypt had ").concat(&actCount).concat(&string_utf16_of(" attributes, but maximum allowed is ")).concat(&maxCount)) - })); - return output.read(); - }; if matches!(config.internalLegacyOverride().as_ref(), Some{ .. }) && matches!((&rd!(config.internalLegacyOverride().value().clone()).policy().clone()).as_ref(), FORCE_LEGACY_ENCRYPT_ALLOW_LEGACY_DECRYPT{ .. }) { let mut valueOrError2: Arc, Arc>>; let mut _out0: Arc, Arc>> = rd!(config.internalLegacyOverride().value()).EncryptItem(input); @@ -70583,7 +70663,7 @@ pub mod _AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations_Compile { })); return output.read(); }; - let mut valueOrError3: Arc, Arc>, Arc>> = crate::implementation_from_dafny::_DynamoToStruct_Compile::_default::ItemToStructured(input.plaintextItem()).MapFailure::>(&({ + let mut valueOrError3: Arc, Arc>, Arc>> = crate::implementation_from_dafny::_DynamoToStruct_Compile::_default::ItemToStructured2(input.plaintextItem(), config.attributeActionsOnEncrypt()).MapFailure::>(&({ Arc::new(move |e: &Arc| -> Arc{ Arc::new(crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::itemencryptor::internaldafny::types::Error::AwsCryptographyDbEncryptionSdkDynamoDb { AwsCryptographyDbEncryptionSdkDynamoDb: e.clone() @@ -70601,7 +70681,7 @@ pub mod _AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations_Compile { return output.read(); }; let mut context: Map = valueOrError4.Extract(); - let mut valueOrError5: Arc, Arc>, Arc>> = _default::ConfigToCryptoSchema(config, input.plaintextItem()).MapFailure::>(&({ + let mut valueOrError5: Arc, Arc>, Arc>> = _default::ConfigToCryptoSchema(config, &plaintextStructure).MapFailure::>(&({ Arc::new(move |e: &Arc| -> Arc{ Arc::new(crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::itemencryptor::internaldafny::types::Error::AwsCryptographyDbEncryptionSdkDynamoDb { AwsCryptographyDbEncryptionSdkDynamoDb: e.clone() @@ -70674,7 +70754,7 @@ pub mod _AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations_Compile { output = MaybePlacebo::from(valueOrError8.PropagateFailure::>()); return output.read(); }; - let mut valueOrError9: Arc, Arc>, Arc>> = crate::implementation_from_dafny::_DynamoToStruct_Compile::_default::StructuredToItem(&encryptedData).MapFailure::>(&({ + let mut valueOrError9: Arc, Arc>, Arc>> = crate::implementation_from_dafny::_DynamoToStruct_Compile::_default::StructuredToItemEncrypt(&encryptedData, input.plaintextItem(), config.attributeActionsOnEncrypt()).MapFailure::>(&({ Arc::new(move |e: &Arc| -> Arc{ Arc::new(crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::itemencryptor::internaldafny::types::Error::AwsCryptographyDbEncryptionSdkDynamoDb { AwsCryptographyDbEncryptionSdkDynamoDb: e.clone() @@ -70726,30 +70806,9 @@ pub mod _AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations_Compile { /// # This item MUST include an Attribute with a name that matches the /// # [DynamoDB Partition Key Name](./ddb-table-encryption-config.md#dynamodb-partition-key-name) /// # configured on the [DynamoDB Item Encryptor](./ddb-item-encryptor.md). - /// dafny/DynamoDbItemEncryptor/src/AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations.dfy(921,3) + /// dafny/DynamoDbItemEncryptor/src/AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations.dfy(920,3) pub fn DecryptItem(config: &Arc, input: &Arc) -> Arc, Arc>> { let mut output = MaybePlacebo::, Arc>>>::new(); - let mut realCount: DafnyInt = (&({ - let mut input = input.clone(); - Arc::new(move || -> Set>{ - let mut _coll0: SetBuilder> = SetBuilder::>::new(); - for __compr_0 in input.encryptedItem().keys().iter().cloned() { - let mut k: Sequence = __compr_0.clone(); - if input.encryptedItem().contains(&k) && !(crate::implementation_from_dafny::_DynamoDbItemEncryptorUtil_Compile::_default::ReservedPrefix() <= k.clone()) { - _coll0.add(&k) - } - } - _coll0.build() - }) - }))().cardinality(); - if crate::implementation_from_dafny::_DynamoDbItemEncryptorUtil_Compile::_default::MAX_ATTRIBUTE_COUNT() < realCount.clone() { - let mut actCount: Sequence = crate::implementation_from_dafny::_StandardLibrary_Compile::_String_Compile::_default::Base10Int2String(&realCount); - let mut maxCount: Sequence = crate::implementation_from_dafny::_StandardLibrary_Compile::_String_Compile::_default::Base10Int2String(&crate::implementation_from_dafny::_DynamoDbItemEncryptorUtil_Compile::_default::MAX_ATTRIBUTE_COUNT()); - output = MaybePlacebo::from(Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::, Arc>::Failure { - error: crate::implementation_from_dafny::_DynamoDbItemEncryptorUtil_Compile::_default::E(&string_utf16_of("Item to decrypt had ").concat(&actCount).concat(&string_utf16_of(" attributes, but maximum allowed is ")).concat(&maxCount)) - })); - return output.read(); - }; let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(input.encryptedItem().contains(config.partitionKeyName()) && (matches!(config.sortKeyName().as_ref(), None{ .. }) || input.encryptedItem().contains(config.sortKeyName().value())), &Arc::new(crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::itemencryptor::internaldafny::types::Error::DynamoDbItemEncryptorException { message: _default::KeyMissingMsg(config, input.encryptedItem(), &string_utf16_of("Decrypt")) })); @@ -70788,7 +70847,7 @@ pub mod _AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations_Compile { output = MaybePlacebo::from(valueOrError2.PropagateFailure::>()); return output.read(); }; - let mut valueOrError3: Arc, Arc>, Arc>> = crate::implementation_from_dafny::_DynamoToStruct_Compile::_default::ItemToStructured(input.encryptedItem()).MapFailure::>(&({ + let mut valueOrError3: Arc, Arc>, Arc>> = crate::implementation_from_dafny::_DynamoToStruct_Compile::_default::ItemToStructured2(input.encryptedItem(), config.attributeActionsOnEncrypt()).MapFailure::>(&({ Arc::new(move |e: &Arc| -> Arc{ Arc::new(crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::itemencryptor::internaldafny::types::Error::AwsCryptographyDbEncryptionSdkDynamoDb { AwsCryptographyDbEncryptionSdkDynamoDb: e.clone() @@ -70811,7 +70870,7 @@ pub mod _AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations_Compile { output = MaybePlacebo::from(valueOrError5.PropagateFailure::>()); return output.read(); }; - let mut valueOrError6: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(int!(0) < header.B().cardinality(), &crate::implementation_from_dafny::_DynamoDbItemEncryptorUtil_Compile::_default::E(&string_utf16_of("Unexpected empty header field."))); + let mut valueOrError6: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(0 < truncate!(header.B().cardinality(), u64), &crate::implementation_from_dafny::_DynamoDbItemEncryptorUtil_Compile::_default::E(&string_utf16_of("Unexpected empty header field."))); if valueOrError6.IsFailure() { output = MaybePlacebo::from(valueOrError6.PropagateFailure::>()); return output.read(); @@ -70822,7 +70881,7 @@ pub mod _AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations_Compile { return output.read(); }; let mut context: Map = valueOrError7.Extract(); - let mut authenticateSchema: Map, Arc> = _default::ConfigToAuthenticateSchema(config, input.encryptedItem()); + let mut authenticateSchema: Map, Arc> = _default::ConfigToAuthenticateSchema(config, &encryptedStructure); let mut reqCMMR: Arc, Arc>>; let mut _out1: Arc, Arc>> = IAwsCryptographicMaterialProvidersClient::CreateRequiredEncryptionContextCMM(rd!(config.cmpClient().clone()), &Arc::new(CreateRequiredEncryptionContextCMMInput::CreateRequiredEncryptionContextCMMInput { underlyingCMM: Arc::new(Option::>::Some { @@ -70881,7 +70940,7 @@ pub mod _AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations_Compile { output = MaybePlacebo::from(valueOrError10.PropagateFailure::>()); return output.read(); }; - let mut valueOrError11: Arc, Arc>, Arc>> = crate::implementation_from_dafny::_DynamoToStruct_Compile::_default::StructuredToItem(&decryptedData).MapFailure::>(&({ + let mut valueOrError11: Arc, Arc>, Arc>> = crate::implementation_from_dafny::_DynamoToStruct_Compile::_default::StructuredToItemDecrypt(&decryptedData, input.encryptedItem(), decryptVal.cryptoSchema()).MapFailure::>(&({ Arc::new(move |e: &Arc| -> Arc{ Arc::new(crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::itemencryptor::internaldafny::types::Error::AwsCryptographyDbEncryptionSdkDynamoDb { AwsCryptographyDbEncryptionSdkDynamoDb: e.clone() @@ -70931,7 +70990,7 @@ pub mod _AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations_Compile { } } - /// dafny/DynamoDbItemEncryptor/src/AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations.dfy(29,3) + /// dafny/DynamoDbItemEncryptor/src/AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations.dfy(30,3) #[derive(PartialEq, Clone)] pub enum Config { Config { @@ -71131,7 +71190,7 @@ pub mod _AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations_Compile { } } - /// dafny/DynamoDbItemEncryptor/src/AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations.dfy(46,3) + /// dafny/DynamoDbItemEncryptor/src/AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptorOperations.dfy(47,3) pub type ValidConfig = Arc; } /// dafny/DynamoDbEncryption/src/AwsCryptographyDbEncryptionSdkDynamoDbOperations.dfy(6,1) @@ -71159,8 +71218,9 @@ pub mod _AwsCryptographyDbEncryptionSdkDynamoDbOperations_Compile { pub use crate::implementation_from_dafny::_StructuredEncryptionHeader_Compile::CMPEncryptedDataKeyList; pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::internaldafny::types::EncryptedDataKeyDescription; pub use ::dafny_runtime::seq; - pub use ::dafny_runtime::DafnyInt; + pub use ::dafny_runtime::truncate; pub use ::dafny_runtime::integer_range; + pub use ::std::convert::Into; pub use ::dafny_runtime::int; pub use crate::implementation_from_dafny::_Wrappers_Compile::Option; pub use crate::implementation_from_dafny::_AlgorithmSuites_Compile::AlgorithmSuite; @@ -71177,7 +71237,7 @@ pub mod _AwsCryptographyDbEncryptionSdkDynamoDbOperations_Compile { pub struct _default {} impl _default { - /// dafny/DynamoDbEncryption/src/AwsCryptographyDbEncryptionSdkDynamoDbOperations.dfy(32,3) + /// dafny/DynamoDbEncryption/src/AwsCryptographyDbEncryptionSdkDynamoDbOperations.dfy(33,3) pub fn CreateDynamoDbEncryptionBranchKeyIdSupplier(config: &Arc, input: &Arc) -> Arc, Arc>> { let mut output: Arc, Arc>>; let mut supplier: Object; @@ -71191,7 +71251,7 @@ pub mod _AwsCryptographyDbEncryptionSdkDynamoDbOperations_Compile { }); return output.clone(); } - /// dafny/DynamoDbEncryption/src/AwsCryptographyDbEncryptionSdkDynamoDbOperations.dfy(48,3) + /// dafny/DynamoDbEncryption/src/AwsCryptographyDbEncryptionSdkDynamoDbOperations.dfy(49,3) pub fn GetEncryptedDataKeyDescription(config: &Arc, input: &Arc) -> Arc, Arc>> { let mut output = MaybePlacebo::, Arc>>>::new(); let mut header: Sequence; @@ -71224,9 +71284,9 @@ pub mod _AwsCryptographyDbEncryptionSdkDynamoDbOperations_Compile { let mut deserializedHeader: Arc = valueOrError1.Extract(); let mut datakeys: CMPEncryptedDataKeyList = deserializedHeader.dataKeys().clone(); let mut list: Sequence> = seq![] as Sequence>; - let mut _hi0: DafnyInt = datakeys.cardinality(); - for i in integer_range(int!(0), _hi0.clone()) { - let mut valueOrError2: Arc, Arc>> = crate::implementation_from_dafny::UTF8::_default::Decode(datakeys.get(&i).keyProviderId()).MapFailure::>(&({ + let mut _hi0: u64 = truncate!(datakeys.cardinality(), u64); + for i in integer_range(0, _hi0).map(Into::::into) { + let mut valueOrError2: Arc, Arc>> = crate::implementation_from_dafny::UTF8::_default::Decode(datakeys.get(&int!((&i).clone())).keyProviderId()).MapFailure::>(&({ Arc::new(move |e: &Sequence| -> Arc{ crate::implementation_from_dafny::_DynamoDbEncryptionUtil_Compile::_default::E(e) }) @@ -71250,7 +71310,7 @@ pub mod _AwsCryptographyDbEncryptionSdkDynamoDbOperations_Compile { } else { algorithmSuite = crate::implementation_from_dafny::_AlgorithmSuites_Compile::_default::DBE_ALG_AES_256_GCM_HKDF_SHA512_COMMIT_KEY_ECDSA_P384_SYMSIG_HMAC_SHA384(); }; - let mut valueOrError4: Arc, Arc>> = crate::implementation_from_dafny::UTF8::_default::Decode(datakeys.get(&i).keyProviderInfo()).MapFailure::>(&({ + let mut valueOrError4: Arc, Arc>> = crate::implementation_from_dafny::UTF8::_default::Decode(datakeys.get(&int!((&i).clone())).keyProviderInfo()).MapFailure::>(&({ Arc::new(move |e: &Sequence| -> Arc{ crate::implementation_from_dafny::_DynamoDbEncryptionUtil_Compile::_default::E(e) }) @@ -71264,7 +71324,7 @@ pub mod _AwsCryptographyDbEncryptionSdkDynamoDbOperations_Compile { value: maybeKeyProviderIdInfo.clone() }); if extractedKeyProviderId.clone() == string_utf16_of("aws-kms-hierarchy") { - let mut valueOrError5: Arc, Arc>> = crate::implementation_from_dafny::_EdkWrapping_Compile::_default::GetProviderWrappedMaterial(datakeys.get(&i).ciphertext(), &algorithmSuite).MapFailure::>(&({ + let mut valueOrError5: Arc, Arc>> = crate::implementation_from_dafny::_EdkWrapping_Compile::_default::GetProviderWrappedMaterial(datakeys.get(&int!((&i).clone())).ciphertext(), &algorithmSuite).MapFailure::>(&({ Arc::new(move |e: &Arc| -> Arc{ Arc::new(crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::internaldafny::types::Error::AwsCryptographyMaterialProviders { AwsCryptographyMaterialProviders: e.clone() @@ -71276,19 +71336,19 @@ pub mod _AwsCryptographyDbEncryptionSdkDynamoDbOperations_Compile { return output.read(); }; let mut providerWrappedMaterial: Sequence = valueOrError5.Extract(); - let mut EDK_CIPHERTEXT_BRANCH_KEY_VERSION_INDEX: DafnyInt = _default::SALT_LENGTH() + _default::IV_LENGTH(); - let mut EDK_CIPHERTEXT_VERSION_INDEX: DafnyInt = EDK_CIPHERTEXT_BRANCH_KEY_VERSION_INDEX.clone() + _default::VERSION_LENGTH(); - let mut valueOrError6: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(EDK_CIPHERTEXT_BRANCH_KEY_VERSION_INDEX.clone() < EDK_CIPHERTEXT_VERSION_INDEX.clone(), &crate::implementation_from_dafny::_DynamoDbEncryptionUtil_Compile::_default::E(&string_utf16_of("Wrong branch key version index."))); + let mut EDK_CIPHERTEXT_BRANCH_KEY_VERSION_INDEX: u64 = _default::SALT_LENGTH() + _default::IV_LENGTH(); + let mut EDK_CIPHERTEXT_VERSION_INDEX: u64 = EDK_CIPHERTEXT_BRANCH_KEY_VERSION_INDEX + _default::VERSION_LENGTH(); + let mut valueOrError6: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(EDK_CIPHERTEXT_BRANCH_KEY_VERSION_INDEX < EDK_CIPHERTEXT_VERSION_INDEX, &crate::implementation_from_dafny::_DynamoDbEncryptionUtil_Compile::_default::E(&string_utf16_of("Wrong branch key version index."))); if valueOrError6.IsFailure() { output = MaybePlacebo::from(valueOrError6.PropagateFailure::>()); return output.read(); }; - let mut valueOrError7: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(providerWrappedMaterial.cardinality() >= EDK_CIPHERTEXT_VERSION_INDEX.clone(), &crate::implementation_from_dafny::_DynamoDbEncryptionUtil_Compile::_default::E(&string_utf16_of("Incorrect ciphertext structure length."))); + let mut valueOrError7: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(truncate!(providerWrappedMaterial.cardinality(), u64) >= EDK_CIPHERTEXT_VERSION_INDEX, &crate::implementation_from_dafny::_DynamoDbEncryptionUtil_Compile::_default::E(&string_utf16_of("Incorrect ciphertext structure length."))); if valueOrError7.IsFailure() { output = MaybePlacebo::from(valueOrError7.PropagateFailure::>()); return output.read(); }; - let mut branchKeyVersionUuid: Sequence = providerWrappedMaterial.slice(&EDK_CIPHERTEXT_BRANCH_KEY_VERSION_INDEX, &EDK_CIPHERTEXT_VERSION_INDEX); + let mut branchKeyVersionUuid: Sequence = providerWrappedMaterial.slice(&int!((&EDK_CIPHERTEXT_BRANCH_KEY_VERSION_INDEX).clone()), &int!((&EDK_CIPHERTEXT_VERSION_INDEX).clone())); let mut valueOrError8: Arc, Arc>> = crate::implementation_from_dafny::UUID::_default::FromByteArray(&branchKeyVersionUuid).MapFailure::>(&({ Arc::new(move |e: &Sequence| -> Arc{ crate::implementation_from_dafny::_DynamoDbEncryptionUtil_Compile::_default::E(e) @@ -71319,21 +71379,21 @@ pub mod _AwsCryptographyDbEncryptionSdkDynamoDbOperations_Compile { })); return output.read(); } - /// dafny/DynamoDbEncryption/src/AwsCryptographyDbEncryptionSdkDynamoDbOperations.dfy(14,3) - pub fn SALT_LENGTH() -> DafnyInt { - int!(16) - } /// dafny/DynamoDbEncryption/src/AwsCryptographyDbEncryptionSdkDynamoDbOperations.dfy(15,3) - pub fn IV_LENGTH() -> DafnyInt { - int!(12) + pub fn SALT_LENGTH() -> u64 { + 16 } /// dafny/DynamoDbEncryption/src/AwsCryptographyDbEncryptionSdkDynamoDbOperations.dfy(16,3) - pub fn VERSION_LENGTH() -> DafnyInt { - int!(16) + pub fn IV_LENGTH() -> u64 { + 12 + } + /// dafny/DynamoDbEncryption/src/AwsCryptographyDbEncryptionSdkDynamoDbOperations.dfy(17,3) + pub fn VERSION_LENGTH() -> u64 { + 16 } } - /// dafny/DynamoDbEncryption/src/AwsCryptographyDbEncryptionSdkDynamoDbOperations.dfy(24,3) + /// dafny/DynamoDbEncryption/src/AwsCryptographyDbEncryptionSdkDynamoDbOperations.dfy(25,3) #[derive(PartialEq, Clone)] pub enum Config { Config {} @@ -71663,13 +71723,18 @@ pub mod _AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations_Compile { pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::structuredencryption::internaldafny::types::AuthItem; pub use ::dafny_runtime::Sequence; pub use crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::CanonCryptoItem; + pub use ::dafny_runtime::seq; + pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::structuredencryption::internaldafny::types::CryptoItem; pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::structuredencryption::internaldafny::types::PathSegment; pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::structuredencryption::internaldafny::types::StructuredDataTerminal; pub use crate::implementation_from_dafny::_Wrappers_Compile::Option; pub use crate::implementation_from_dafny::_Wrappers_Compile::Option::None; - pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::structuredencryption::internaldafny::types::AuthenticateAction; - pub use ::dafny_runtime::_System::nat; pub use ::dafny_runtime::int; + pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::structuredencryption::internaldafny::types::AuthenticateAction; + pub use ::std::default::Default; + pub use ::dafny_runtime::integer_range_down; + pub use ::dafny_runtime::truncate; + pub use ::std::convert::Into; pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::structuredencryption::internaldafny::types::CryptoAction; pub use crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::DBEAlgorithmSuiteId; pub use crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::AlgorithmSuiteId; @@ -71679,20 +71744,16 @@ pub mod _AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations_Compile { pub use ::dafny_runtime::Map; pub use crate::implementation_from_dafny::UTF8::ValidUTF8Bytes; pub use crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::EncryptionMaterials; - pub use ::dafny_runtime::DafnyInt; pub use crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::GetEncryptionMaterialsOutput; pub use ::dafny_runtime::rd; pub use crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::GetEncryptionMaterialsInput; pub use ::dafny_runtime::map; - pub use ::dafny_runtime::truncate; pub use crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::AlgorithmSuiteInfo; pub use crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::Key; - pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::structuredencryption::internaldafny::types::CryptoItem; pub use ::dafny_runtime::integer_range; pub use ::dafny_runtime::DafnyCharUTF16; pub use ::std::marker::Sync; pub use ::std::marker::Send; - pub use ::dafny_runtime::seq; pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::structuredencryption::internaldafny::types::EncryptStructureInput; pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::structuredencryption::internaldafny::types::EncryptStructureOutput; pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::structuredencryption::internaldafny::types::EncryptPathStructureInput; @@ -71703,7 +71764,6 @@ pub mod _AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations_Compile { pub use ::dafny_runtime::upcast_object; pub use crate::implementation_from_dafny::software::amazon::cryptography::primitives::internaldafny::AtomicPrimitivesClient; pub use crate::implementation_from_dafny::software::amazon::cryptography::primitives::internaldafny::types::IAwsCryptographicPrimitivesClient; - pub use ::dafny_runtime::euclidian_division; pub use crate::implementation_from_dafny::_StructuredEncryptionFooter_Compile::Footer; pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::structuredencryption::internaldafny::types::ParsedHeader; pub use crate::implementation_from_dafny::_Wrappers_Compile::Result::Success; @@ -71724,13 +71784,12 @@ pub mod _AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations_Compile { pub use ::std::cmp::Eq; pub use ::std::hash::Hash; pub use ::std::hash::Hasher; - pub use ::std::default::Default; pub use ::std::convert::AsRef; pub struct _default {} impl _default { - /// dafny/StructuredEncryption/src/AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations.dfy(96,3) + /// dafny/StructuredEncryption/src/AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations.dfy(97,3) pub fn ResolveAuthActions(config: &Arc, input: &Arc) -> Arc, Arc>> { let mut output = MaybePlacebo::, Arc>>>::new(); let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::AuthListHasNoDuplicatesFromSet(input.authActions()), &crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::E(&string_utf16_of("Duplicate Paths"))); @@ -71779,64 +71838,55 @@ pub mod _AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations_Compile { let mut canonData: Sequence> = valueOrError5.Extract(); output = MaybePlacebo::from(Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::, Arc>::Success { value: Arc::new(ResolveAuthActionsOutput::ResolveAuthActionsOutput { - cryptoActions: crate::implementation_from_dafny::_Canonize_Compile::_default::UnCanon(&canonData) + cryptoActions: crate::implementation_from_dafny::_Canonize_Compile::_default::UnCanon(&canonData, 0, &(seq![] as Sequence>)) }) })); return output.read(); } - /// dafny/StructuredEncryption/src/AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations.dfy(114,3) + /// dafny/StructuredEncryption/src/AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations.dfy(115,3) pub fn GetBinary(data: &Sequence>, path: &Sequence>) -> Arc, Arc>> { - let mut data: Arc>> = _default::FindAuth(data, path); - if matches!((&data).as_ref(), None{ .. }) { + let mut pos: Arc> = _default::FindAuth(data, path, 0); + if matches!((&pos).as_ref(), None{ .. }) { Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::, Arc>::Failure { error: crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::E(&string_utf16_of("The field name ").concat(&crate::implementation_from_dafny::_StructuredEncryptionPaths_Compile::_default::PathToString(path)).concat(&string_utf16_of(" is required."))) }) } else { - if data.value().data().typeId().clone() != crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::BYTES_TYPE_ID() { + if data.get(&int!(pos.value().clone())).data().typeId().clone() != crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::BYTES_TYPE_ID() { Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::, Arc>::Failure { error: crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::E(&crate::implementation_from_dafny::_StructuredEncryptionPaths_Compile::_default::PathToString(path).concat(&string_utf16_of(" must be a binary Terminal."))) }) } else { - if data.value().action().clone() != Arc::new(AuthenticateAction::DO_NOT_SIGN {}) { + if data.get(&int!(pos.value().clone())).action().clone() != Arc::new(AuthenticateAction::DO_NOT_SIGN {}) { Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::, Arc>::Failure { error: crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::E(&crate::implementation_from_dafny::_StructuredEncryptionPaths_Compile::_default::PathToString(path).concat(&string_utf16_of(" must be DO_NOT_SIGN."))) }) } else { Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::, Arc>::Success { - value: data.value().data().clone() + value: data.get(&int!(pos.value().clone())).data().clone() }) } } } } - /// dafny/StructuredEncryption/src/AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations.dfy(130,3) - pub fn SumValueSize(fields: &Sequence>) -> nat { - let mut _accumulator: nat = int!(0); - let mut _r0 = fields.clone(); - 'TAIL_CALL_START: loop { - let fields = _r0; - if fields.cardinality() == int!(0) { - return int!(0) + _accumulator.clone(); - } else { - if fields.get(&int!(0)).action().clone() == Arc::new(CryptoAction::ENCRYPT_AND_SIGN {}) { - _accumulator = _accumulator.clone() + fields.get(&int!(0)).data().value().cardinality(); - let mut _in0: Sequence> = fields.drop(&int!(1)); - _r0 = _in0.clone(); - continue 'TAIL_CALL_START; - } else { - let mut _in1: Sequence> = fields.drop(&int!(1)); - _r0 = _in1.clone(); - continue 'TAIL_CALL_START; - } + /// dafny/StructuredEncryption/src/AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations.dfy(131,3) + pub fn SumValueSize(fields: &Sequence>) -> u64 { + let mut _hresult: u64 = ::default(); + let mut sum: u64 = 0; + let mut _lo0: u64 = 0; + for i in integer_range_down(truncate!(fields.cardinality(), u64), _lo0).map(Into::::into) { + if fields.get(&int!((&i).clone())).action().clone() == Arc::new(CryptoAction::ENCRYPT_AND_SIGN {}) { + sum = crate::implementation_from_dafny::_StandardLibrary_Compile::_MemoryMath_Compile::_default::Add(truncate!(fields.get(&int!((&i).clone())).data().value().cardinality(), u64), sum); } } + _hresult = sum; + return _hresult; } /// = specification/structured-encryption/encrypt-path-structure.md#retrieve-encryption-materials /// = type=implication /// # - Algorithm Suite: If provided, this is the [input algorithm suite](#algorithm-suite); /// # otherwise, this field MUST be the algorithm suite corresponding to the enum /// # [DBE.ALG_AES_256_GCM_HKDF_SHA512_COMMIT_KEY_ECDSA_P384_SYMSIG_HMAC_SHA384](../../submodules/MaterialProviders/aws-encryption-sdk-specification/framework/algorithm-suites.md#supported-algorithm-suites-enum). - /// dafny/StructuredEncryption/src/AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations.dfy(141,3) + /// dafny/StructuredEncryption/src/AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations.dfy(156,3) pub fn GetAlgorithmSuiteId(alg: &Arc>>) -> Arc { if matches!(alg.as_ref(), Some{ .. }) { Arc::new(AlgorithmSuiteId::DBE { @@ -71848,11 +71898,11 @@ pub mod _AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations_Compile { }) } } - /// dafny/StructuredEncryption/src/AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations.dfy(159,3) - pub fn GetStructuredEncryptionMaterials(cmm: &Object, encryptionContext: &Arc>>, algorithmSuiteId: &Arc>>, encryptedTerminalDataNum: &nat, totalEncryptedTerminalValuesSize: &nat) -> Arc, Arc>> { + /// dafny/StructuredEncryption/src/AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations.dfy(174,3) + pub fn GetStructuredEncryptionMaterials(cmm: &Object, encryptionContext: &Arc>>, algorithmSuiteId: &Arc>>, encryptedTerminalDataNum: u64, totalEncryptedTerminalValuesSize: u64) -> Arc, Arc>> { let mut ret = MaybePlacebo::, Arc>>>::new(); - let mut maxLength: DafnyInt = encryptedTerminalDataNum.clone() * int!(2) + totalEncryptedTerminalValuesSize.clone(); - let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(maxLength.clone() < crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default::INT64_MAX_LIMIT(), &crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::E(&string_utf16_of("Encrypted Size too long."))); + let mut maxLength: u64 = crate::implementation_from_dafny::_StandardLibrary_Compile::_MemoryMath_Compile::_default::Add3(encryptedTerminalDataNum, encryptedTerminalDataNum, totalEncryptedTerminalValuesSize); + let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(maxLength < truncate!(crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default::INT64_MAX_LIMIT(), u64), &crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::E(&string_utf16_of("Encrypted Size too long."))); if valueOrError0.IsFailure() { ret = MaybePlacebo::from(valueOrError0.PropagateFailure::>()); return ret.read(); @@ -71866,7 +71916,7 @@ pub mod _AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations_Compile { value: algId.clone() }), maxPlaintextLength: Arc::new(Option::::Some { - value: truncate!(maxLength.clone(), i64) + value: maxLength as i64 }), requiredEncryptionContextKeys: Arc::new(Option::>::None {}) })); @@ -71901,7 +71951,7 @@ pub mod _AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations_Compile { })); return ret.read(); } - /// dafny/StructuredEncryption/src/AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations.dfy(241,3) + /// dafny/StructuredEncryption/src/AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations.dfy(256,3) pub fn GetV2EncryptionContextCanon(schema: &Sequence>) -> Arc, Arc>> { let mut output: Arc, Arc>>; let mut canonAttrs: Sequence> = crate::implementation_from_dafny::_Seq_Compile::_default::Filter::>(&({ @@ -71922,7 +71972,7 @@ pub mod _AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations_Compile { output = _out0.clone(); return output.clone(); } - /// dafny/StructuredEncryption/src/AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations.dfy(249,3) + /// dafny/StructuredEncryption/src/AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations.dfy(264,3) pub fn GetV2EncryptionContext(schema: &Sequence>) -> Arc, Arc>> { let mut output: Arc, Arc>>; let mut contextAttrs: Sequence> = crate::implementation_from_dafny::_Seq_Compile::_default::Filter::>(&({ @@ -71934,85 +71984,58 @@ pub mod _AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations_Compile { output = _out0.clone(); return output.clone(); } - /// dafny/StructuredEncryption/src/AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations.dfy(261,3) - pub fn Find(haystack: &Sequence>, needle: &Sequence>) -> Arc, Arc>> { - let mut _r0 = haystack.clone(); - let mut _r1 = needle.clone(); - 'TAIL_CALL_START: loop { - let haystack = _r0; - let needle = _r1; - if haystack.cardinality() == int!(0) { - return Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::, Arc>::Failure { - error: crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::E(&string_utf16_of("Not Found")) - }); - } else { - if haystack.get(&int!(0)).key().clone() == needle.clone() { - return Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::, Arc>::Success { - value: haystack.get(&int!(0)) - }); - } else { - let mut _in0: Sequence> = haystack.drop(&int!(1)); - let mut _in1: Sequence> = needle.clone(); - _r0 = _in0.clone(); - _r1 = _in1.clone(); - continue 'TAIL_CALL_START; - } + /// dafny/StructuredEncryption/src/AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations.dfy(276,3) + pub fn Find(haystack: &Sequence>, needle: &Sequence>, start: u64) -> Arc>> { + let mut res = MaybePlacebo::>>>::new(); + let mut _hi0: u64 = truncate!(haystack.cardinality(), u64); + for i in integer_range(0, _hi0).map(Into::::into) { + if haystack.get(&int!((&i).clone())).key().clone() == needle.clone() { + res = MaybePlacebo::from(Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::>::Success { + value: i + })); + return res.read(); } } + res = MaybePlacebo::from(Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::>::Failure { + error: crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::E(&string_utf16_of("Not Found")) + })); + return res.read(); } - /// dafny/StructuredEncryption/src/AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations.dfy(271,3) - pub fn FindAuth(haystack: &Sequence>, needle: &Sequence>) -> Arc>> { - let mut _r0 = haystack.clone(); - let mut _r1 = needle.clone(); - 'TAIL_CALL_START: loop { - let haystack = _r0; - let needle = _r1; - if haystack.cardinality() == int!(0) { - return Arc::new(Option::>::None {}); - } else { - if haystack.get(&int!(0)).key().clone() == needle.clone() { - return Arc::new(Option::>::Some { - value: haystack.get(&int!(0)) - }); - } else { - let mut _in0: Sequence> = haystack.drop(&int!(1)); - let mut _in1: Sequence> = needle.clone(); - _r0 = _in0.clone(); - _r1 = _in1.clone(); - continue 'TAIL_CALL_START; - } + /// dafny/StructuredEncryption/src/AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations.dfy(308,3) + pub fn FindAuth(haystack: &Sequence>, needle: &Sequence>, start: u64) -> Arc> { + let mut res = MaybePlacebo::>>::new(); + let mut _hi0: u64 = truncate!(haystack.cardinality(), u64); + for i in integer_range(0, _hi0).map(Into::::into) { + if haystack.get(&int!((&i).clone())).key().clone() == needle.clone() { + res = MaybePlacebo::from(Arc::new(Option::::Some { + value: i + })); + return res.read(); } } + res = MaybePlacebo::from(Arc::new(Option::::None {})); + return res.read(); } - /// dafny/StructuredEncryption/src/AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations.dfy(282,3) - pub fn CountEncrypted(list: &Sequence>) -> nat { - let mut _accumulator: nat = int!(0); - let mut _r0 = list.clone(); - 'TAIL_CALL_START: loop { - let list = _r0; - if list.cardinality() == int!(0) { - return int!(0) + _accumulator.clone(); - } else { - if list.get(&int!(0)).action().clone() == Arc::new(CryptoAction::ENCRYPT_AND_SIGN {}) { - _accumulator = _accumulator.clone() + int!(1); - let mut _in0: Sequence> = list.drop(&int!(1)); - _r0 = _in0.clone(); - continue 'TAIL_CALL_START; - } else { - let mut _in1: Sequence> = list.drop(&int!(1)); - _r0 = _in1.clone(); - continue 'TAIL_CALL_START; - } + /// dafny/StructuredEncryption/src/AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations.dfy(339,3) + pub fn CountEncrypted(list: &Sequence>) -> u64 { + let mut _hresult: u64 = ::default(); + let mut result: u64 = 0; + let mut _lo0: u64 = 0; + for i in integer_range_down(truncate!(list.cardinality(), u64), _lo0).map(Into::::into) { + if list.get(&int!((&i).clone())).action().clone() == Arc::new(CryptoAction::ENCRYPT_AND_SIGN {}) { + result = crate::implementation_from_dafny::_StandardLibrary_Compile::_MemoryMath_Compile::_default::Add(result, 1); } } + _hresult = result; + return _hresult; } - /// dafny/StructuredEncryption/src/AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations.dfy(292,3) + /// dafny/StructuredEncryption/src/AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations.dfy(361,3) pub fn GetV2EncryptionContext2(fields: &Sequence>) -> Arc, Arc>> { let mut output = MaybePlacebo::, Arc>>>::new(); let mut fieldMap: Map>> = map![]; - let mut _hi0: DafnyInt = fields.cardinality(); - for i in integer_range(int!(0), _hi0.clone()) { - let mut keyVal: Sequence = crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::ATTR_PREFIX().concat(&crate::implementation_from_dafny::_StructuredEncryptionPaths_Compile::_default::PathToString(fields.get(&i).key())); + let mut _hi0: u64 = truncate!(fields.cardinality(), u64); + for i in integer_range(0, _hi0).map(Into::::into) { + let mut keyVal: Sequence = crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::ATTR_PREFIX().concat(&crate::implementation_from_dafny::_StructuredEncryptionPaths_Compile::_default::PathToString(fields.get(&int!((&i).clone())).key())); let mut valueOrError0: Arc>> = crate::implementation_from_dafny::UTF8::_default::Encode(&keyVal).MapFailure::>(&({ Arc::new(move |e: &Sequence| -> Arc{ crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::E(e) @@ -72029,22 +72052,22 @@ pub mod _AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations_Compile { })); return output.read(); }; - fieldMap = fieldMap.update_index(&utf8Value, fields.get(&i).key()); + fieldMap = fieldMap.update_index(&utf8Value, fields.get(&int!((&i).clone())).key()); } let mut keys: Sequence = crate::implementation_from_dafny::SortedSets::_default::SetToOrderedSequence2::(&fieldMap.keys(), &(Arc::new(move |x0: &u8,x1: &u8| crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::ByteLess(x0.clone(), x1.clone())) as Arc _ + Sync + Send>)); let mut newContext: Map = map![]; let mut legend: Sequence = string_utf16_of(""); - let mut _hi1: DafnyInt = keys.cardinality(); - for i in integer_range(int!(0), _hi1.clone()) { - let mut fieldUtf8: ValidUTF8Bytes = keys.get(&i); + let mut _hi1: u64 = truncate!(keys.cardinality(), u64); + for i in integer_range(0, _hi1).map(Into::::into) { + let mut fieldUtf8: ValidUTF8Bytes = keys.get(&int!((&i).clone())); let mut fieldStr: Sequence> = fieldMap.get(&fieldUtf8); - let mut valueOrError1: Arc, Arc>> = _default::Find(fields, &fieldMap.get(&fieldUtf8)); + let mut valueOrError1: Arc>> = _default::Find(fields, &fieldMap.get(&fieldUtf8), 0); if valueOrError1.IsFailure() { output = MaybePlacebo::from(valueOrError1.PropagateFailure::>()); return output.read(); }; - let mut item: Arc = valueOrError1.Extract(); - let mut attr: Arc = item.data().clone(); + let mut item: u64 = valueOrError1.Extract(); + let mut attr: Arc = fields.get(&int!((&item).clone())).data().clone(); let mut attrStr: ValidUTF8Bytes = seq![] as Sequence; let mut legendChar: DafnyCharUTF16; if attr.typeId().clone() == crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::NULL() { @@ -72076,12 +72099,12 @@ pub mod _AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations_Compile { } else { if attr.typeId().clone() == crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::BOOLEAN() { legendChar = crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::LEGEND_LITERAL(); - let mut valueOrError5: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(attr.value().cardinality() == int!(1), &crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::E(&string_utf16_of("Internal Error : boolean was not of length 1."))); + let mut valueOrError5: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(truncate!(attr.value().cardinality(), u64) == 1, &crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::E(&string_utf16_of("Internal Error : boolean was not of length 1."))); if valueOrError5.IsFailure() { output = MaybePlacebo::from(valueOrError5.PropagateFailure::>()); return output.read(); }; - if attr.value().get(&int!(0)) == 0 { + if attr.value().get(&int!((&truncate!((&int!(0)).clone(), u32)).clone())) == 0 { attrStr = crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::FALSE_UTF8(); } else { attrStr = crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::TRUE_UTF8(); @@ -72112,23 +72135,25 @@ pub mod _AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations_Compile { })); return output.read(); } - /// dafny/StructuredEncryption/src/AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations.dfy(383,3) - pub fn BuildCryptoMap2(keys: &Sequence>, plaintextStructure: &Map, Arc>, cryptoSchema: &Map, Arc>, acc: &Sequence>) -> Arc>, Arc>> { + /// dafny/StructuredEncryption/src/AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations.dfy(455,3) + pub fn BuildCryptoMap2(keys: &Sequence>, plaintextStructure: &Map, Arc>, cryptoSchema: &Map, Arc>, pos: u64, acc: &Sequence>) -> Arc>, Arc>> { let mut _r0 = keys.clone(); let mut _r1 = plaintextStructure.clone(); let mut _r2 = cryptoSchema.clone(); - let mut _r3 = acc.clone(); + let mut _r3 = pos; + let mut _r4 = acc.clone(); 'TAIL_CALL_START: loop { let keys = _r0; let plaintextStructure = _r1; let cryptoSchema = _r2; - let acc = _r3; - if keys.cardinality() == int!(0) { + let pos = _r3; + let acc = _r4; + if truncate!(keys.cardinality(), u64) == pos { return Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::>, Arc>::Success { value: acc.clone() }); } else { - let mut key: Sequence = keys.get(&int!(0)); + let mut key: Sequence = keys.get(&int!((&pos).clone())); let mut path: Sequence> = crate::implementation_from_dafny::_StructuredEncryptionPaths_Compile::_default::StringToUniPath(&key); let mut item: Arc = Arc::new(CryptoItem::CryptoItem { key: path.clone(), @@ -72136,40 +72161,44 @@ pub mod _AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations_Compile { action: cryptoSchema.get(&key) }); let mut newAcc: Sequence> = acc.concat(&seq![item.clone()]); - let mut _in0: Sequence> = keys.drop(&int!(1)); + let mut _in0: Sequence> = keys.clone(); let mut _in1: Map, Arc> = plaintextStructure.clone(); let mut _in2: Map, Arc> = cryptoSchema.clone(); - let mut _in3: Sequence> = newAcc.clone(); + let mut _in3: u64 = pos + 1; + let mut _in4: Sequence> = newAcc.clone(); _r0 = _in0.clone(); _r1 = _in1.clone(); _r2 = _in2.clone(); - _r3 = _in3.clone(); + _r3 = _in3; + _r4 = _in4.clone(); continue 'TAIL_CALL_START; } } } - /// dafny/StructuredEncryption/src/AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations.dfy(417,3) + /// dafny/StructuredEncryption/src/AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations.dfy(489,3) pub fn BuildCryptoMap(plaintextStructure: &Map, Arc>, cryptoSchema: &Map, Arc>) -> Arc>, Arc>> { let mut keys: Sequence> = crate::implementation_from_dafny::SortedSets::_default::SetToOrderedSequence2::(&plaintextStructure.keys(), &(Arc::new(move |x0: &DafnyCharUTF16,x1: &DafnyCharUTF16| crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::CharLess(x0, x1)) as Arc _ + Sync + Send>)); - _default::BuildCryptoMap2(&keys, plaintextStructure, cryptoSchema, &(seq![] as Sequence>)) + _default::BuildCryptoMap2(&keys, plaintextStructure, cryptoSchema, 0, &(seq![] as Sequence>)) } - /// dafny/StructuredEncryption/src/AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations.dfy(428,3) - pub fn BuildAuthMap2(keys: &Sequence>, plaintextStructure: &Map, Arc>, authSchema: &Map, Arc>, acc: &Sequence>) -> Arc>, Arc>> { + /// dafny/StructuredEncryption/src/AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations.dfy(500,3) + pub fn BuildAuthMap2(keys: &Sequence>, plaintextStructure: &Map, Arc>, authSchema: &Map, Arc>, pos: u64, acc: &Sequence>) -> Arc>, Arc>> { let mut _r0 = keys.clone(); let mut _r1 = plaintextStructure.clone(); let mut _r2 = authSchema.clone(); - let mut _r3 = acc.clone(); + let mut _r3 = pos; + let mut _r4 = acc.clone(); 'TAIL_CALL_START: loop { let keys = _r0; let plaintextStructure = _r1; let authSchema = _r2; - let acc = _r3; - if keys.cardinality() == int!(0) { + let pos = _r3; + let acc = _r4; + if truncate!(keys.cardinality(), u64) == pos { return Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::>, Arc>::Success { value: acc.clone() }); } else { - let mut key: Sequence = keys.get(&int!(0)); + let mut key: Sequence = keys.get(&int!((&pos).clone())); let mut path: Sequence> = crate::implementation_from_dafny::_StructuredEncryptionPaths_Compile::_default::StringToUniPath(&key); let mut item: Arc = Arc::new(AuthItem::AuthItem { key: path.clone(), @@ -72177,33 +72206,37 @@ pub mod _AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations_Compile { action: authSchema.get(&key) }); let mut newAcc: Sequence> = acc.concat(&seq![item.clone()]); - let mut _in0: Sequence> = keys.drop(&int!(1)); + let mut _in0: Sequence> = keys.clone(); let mut _in1: Map, Arc> = plaintextStructure.clone(); let mut _in2: Map, Arc> = authSchema.clone(); - let mut _in3: Sequence> = newAcc.clone(); + let mut _in3: u64 = pos + 1; + let mut _in4: Sequence> = newAcc.clone(); _r0 = _in0.clone(); _r1 = _in1.clone(); _r2 = _in2.clone(); - _r3 = _in3.clone(); + _r3 = _in3; + _r4 = _in4.clone(); continue 'TAIL_CALL_START; } } } - /// dafny/StructuredEncryption/src/AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations.dfy(461,3) + /// dafny/StructuredEncryption/src/AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations.dfy(534,3) pub fn BuildAuthMap(plaintextStructure: &Map, Arc>, authSchema: &Map, Arc>) -> Arc>, Arc>> { let mut keys: Sequence> = crate::implementation_from_dafny::SortedSets::_default::SetToOrderedSequence2::(&plaintextStructure.keys(), &(Arc::new(move |x0: &DafnyCharUTF16,x1: &DafnyCharUTF16| crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::CharLess(x0, x1)) as Arc _ + Sync + Send>)); - _default::BuildAuthMap2(&keys, plaintextStructure, authSchema, &(seq![] as Sequence>)) + _default::BuildAuthMap2(&keys, plaintextStructure, authSchema, 0, &(seq![] as Sequence>)) } - /// dafny/StructuredEncryption/src/AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations.dfy(472,3) - pub fn UnBuildCryptoMap(list: &Sequence>, dataSoFar: &Map, Arc>, actionsSoFar: &Map, Arc>) -> Arc, Arc>, Map, Arc>), Arc>> { + /// dafny/StructuredEncryption/src/AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations.dfy(545,3) + pub fn UnBuildCryptoMap(list: &Sequence>, pos: u64, dataSoFar: &Map, Arc>, actionsSoFar: &Map, Arc>) -> Arc, Arc>, Map, Arc>), Arc>> { let mut _r0 = list.clone(); - let mut _r1 = dataSoFar.clone(); - let mut _r2 = actionsSoFar.clone(); + let mut _r1 = pos; + let mut _r2 = dataSoFar.clone(); + let mut _r3 = actionsSoFar.clone(); 'TAIL_CALL_START: loop { let list = _r0; - let dataSoFar = _r1; - let actionsSoFar = _r2; - if list.cardinality() == int!(0) { + let pos = _r1; + let dataSoFar = _r2; + let actionsSoFar = _r3; + if truncate!(list.cardinality(), u64) == pos { return Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::<(Map, Arc>, Map, Arc>), Arc>::Success { value: ( dataSoFar.clone(), @@ -72211,7 +72244,7 @@ pub mod _AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations_Compile { ) }); } else { - let mut valueOrError0: Arc, Arc>> = crate::implementation_from_dafny::_StructuredEncryptionPaths_Compile::_default::UniPathToString(list.get(&int!(0)).key()); + let mut valueOrError0: Arc, Arc>> = crate::implementation_from_dafny::_StructuredEncryptionPaths_Compile::_default::UniPathToString(list.get(&int!((&pos).clone())).key()); if valueOrError0.IsFailure() { return valueOrError0.PropagateFailure::<(Map, Arc>, Map, Arc>)>(); } else { @@ -72220,21 +72253,25 @@ pub mod _AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations_Compile { if valueOrError1.IsFailure() { return valueOrError1.PropagateFailure::<(Map, Arc>, Map, Arc>)>(); } else { - if crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::IsAuthAttr(list.get(&int!(0)).action()) { - let mut _in0: Sequence> = list.drop(&int!(1)); - let mut _in1: Map, Arc> = dataSoFar.update_index(&key, list.get(&int!(0)).data()); - let mut _in2: Map, Arc> = actionsSoFar.update_index(&key, list.get(&int!(0)).action()); + if crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::IsAuthAttr(list.get(&int!((&pos).clone())).action()) { + let mut _in0: Sequence> = list.clone(); + let mut _in1: u64 = pos + 1; + let mut _in2: Map, Arc> = dataSoFar.update_index(&key, list.get(&int!((&pos).clone())).data()); + let mut _in3: Map, Arc> = actionsSoFar.update_index(&key, list.get(&int!((&pos).clone())).action()); _r0 = _in0.clone(); - _r1 = _in1.clone(); + _r1 = _in1; _r2 = _in2.clone(); + _r3 = _in3.clone(); continue 'TAIL_CALL_START; } else { - let mut _in3: Sequence> = list.drop(&int!(1)); - let mut _in4: Map, Arc> = dataSoFar.update_index(&key, list.get(&int!(0)).data()); - let mut _in5: Map, Arc> = actionsSoFar.clone(); - _r0 = _in3.clone(); - _r1 = _in4.clone(); - _r2 = _in5.clone(); + let mut _in4: Sequence> = list.clone(); + let mut _in5: u64 = pos + 1; + let mut _in6: Map, Arc> = dataSoFar.update_index(&key, list.get(&int!((&pos).clone())).data()); + let mut _in7: Map, Arc> = actionsSoFar.clone(); + _r0 = _in4.clone(); + _r1 = _in5; + _r2 = _in6.clone(); + _r3 = _in7.clone(); continue 'TAIL_CALL_START; } } @@ -72242,7 +72279,7 @@ pub mod _AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations_Compile { } } } - /// dafny/StructuredEncryption/src/AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations.dfy(512,3) + /// dafny/StructuredEncryption/src/AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations.dfy(590,3) pub fn EncryptStructure(config: &Arc, input: &Arc) -> Arc, Arc>> { let mut output = MaybePlacebo::, Arc>>>::new(); let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(input.plaintextStructure().keys() == input.cryptoSchema().keys(), &crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::E(&string_utf16_of("Crypto Keys don't match."))); @@ -72271,23 +72308,12 @@ pub mod _AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations_Compile { return output.read(); }; let mut pathOutput: Arc = valueOrError2.Extract(); - let mut valueOrError3: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(Itertools::unique(pathOutput.encryptedStructure().iter()).all(({ - let mut pathOutput = pathOutput.clone(); - Arc::new(move |__forall_var_0: Arc| -> bool{ - let mut k: Arc = __forall_var_0.clone(); - !pathOutput.encryptedStructure().contains(&k) || k.key().cardinality() == int!(1) - }) - }).as_ref()), &crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::E(&string_utf16_of("Internal Error"))); + let mut valueOrError3: Arc, Arc>, Map, Arc>), Arc>> = _default::UnBuildCryptoMap(pathOutput.encryptedStructure(), 0, &map![], &map![]); if valueOrError3.IsFailure() { output = MaybePlacebo::from(valueOrError3.PropagateFailure::>()); return output.read(); }; - let mut valueOrError4: Arc, Arc>, Map, Arc>), Arc>> = _default::UnBuildCryptoMap(pathOutput.encryptedStructure(), &map![], &map![]); - if valueOrError4.IsFailure() { - output = MaybePlacebo::from(valueOrError4.PropagateFailure::>()); - return output.read(); - }; - let mut parts: (Map, Arc>, Map, Arc>) = valueOrError4.Extract(); + let mut parts: (Map, Arc>, Map, Arc>) = valueOrError3.Extract(); let mut plainOutput: Arc = Arc::new(EncryptStructureOutput::EncryptStructureOutput { encryptedStructure: parts.0.clone(), cryptoSchema: parts.1.clone(), @@ -72298,7 +72324,7 @@ pub mod _AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations_Compile { })); return output.read(); } - /// dafny/StructuredEncryption/src/AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations.dfy(640,3) + /// dafny/StructuredEncryption/src/AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations.dfy(715,3) pub fn EncryptPathStructure(config: &Arc, input: &Arc) -> Arc, Arc>> { let mut output = MaybePlacebo::, Arc>>>::new(); let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(matches!(input.encryptionContext().as_ref(), None{ .. }) || !input.encryptionContext().value().keys().iter().any(({ @@ -72367,7 +72393,7 @@ pub mod _AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations_Compile { return output.read(); }; let mut newEncryptionContext: Map = valueOrError6.Extract(); - if newEncryptionContext.cardinality() != int!(0) { + if truncate!(newEncryptionContext.cardinality(), u64) != 0 { let mut valueOrError7: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(encryptionContext.keys().disjoint(&newEncryptionContext.keys()), &crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::E(&string_utf16_of("Internal Error - Structured Encryption encryption context overlaps with Item Encryptor encryption context."))); if valueOrError7.IsFailure() { output = MaybePlacebo::from(valueOrError7.PropagateFailure::>()); @@ -72402,7 +72428,7 @@ pub mod _AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations_Compile { let mut valueOrError9: Arc, Arc>>; let mut _out2: Arc, Arc>> = _default::GetStructuredEncryptionMaterials(&cmm, &Arc::new(Option::>::Some { value: encryptionContext.clone() - }), input.algorithmSuiteId(), &_default::CountEncrypted(&canonData), &_default::SumValueSize(&canonData)); + }), input.algorithmSuiteId(), _default::CountEncrypted(&canonData), _default::SumValueSize(&canonData)); valueOrError9 = _out2.clone(); if valueOrError9.IsFailure() { output = MaybePlacebo::from(valueOrError9.PropagateFailure::>()); @@ -72417,7 +72443,7 @@ pub mod _AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations_Compile { return output.read(); }; let mut randBytes: Arc, Arc>>; - let mut _out3: Arc, Arc>> = crate::implementation_from_dafny::_Random_Compile::_default::GenerateBytes(truncate!(crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::MSGID_LEN(), i32)); + let mut _out3: Arc, Arc>> = crate::implementation_from_dafny::_Random_Compile::_default::GenerateBytes(crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::MSGID_LEN64() as i32); randBytes = _out3.clone(); let mut valueOrError11: Arc, Arc>> = randBytes.MapFailure::>(&({ Arc::new(move |e: &Arc| -> Arc{ @@ -72452,7 +72478,7 @@ pub mod _AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations_Compile { }; let mut headerSerialized: Sequence = valueOrError14.Extract(); let mut headerAttribute: Arc = crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::ValueToData(&headerSerialized, &crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::BYTES_TYPE_ID()); - let mut valueOrError15: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(canonData.cardinality() < euclidian_division(crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default::UINT32_LIMIT(), int!(3)), &crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::E(&string_utf16_of("Too many encrypted fields"))); + let mut valueOrError15: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(truncate!(canonData.cardinality(), u64) < crate::implementation_from_dafny::_StructuredEncryptionCrypt_Compile::_default::ONE_THIRD_MAX_INT() as u64, &crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::E(&string_utf16_of("Too many encrypted fields"))); if valueOrError15.IsFailure() { output = MaybePlacebo::from(valueOrError15.PropagateFailure::>()); return output.read(); @@ -72499,7 +72525,7 @@ pub mod _AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations_Compile { })); return output.read(); } - /// dafny/StructuredEncryption/src/AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations.dfy(808,3) + /// dafny/StructuredEncryption/src/AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations.dfy(885,3) pub fn SafeDecode(data: &ValidUTF8Bytes) -> Sequence { let mut x: Arc, Sequence>> = crate::implementation_from_dafny::UTF8::_default::Decode(data); if matches!((&x).as_ref(), Success{ .. }) { @@ -72508,7 +72534,7 @@ pub mod _AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations_Compile { string_utf16_of("[corrupt value]") } } - /// dafny/StructuredEncryption/src/AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations.dfy(817,3) + /// dafny/StructuredEncryption/src/AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations.dfy(894,3) pub fn DescribeMismatch(inputFields: &Sequence>, inputContext: &Map, headContext: &Map) -> Sequence { let mut _accumulator: Sequence = seq![] as Sequence; let mut _r0 = inputFields.clone(); @@ -72518,17 +72544,17 @@ pub mod _AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations_Compile { let inputFields = _r0; let inputContext = _r1; let headContext = _r2; - if inputFields.cardinality() == int!(0) { + if truncate!(inputFields.cardinality(), u64) == 0 { return _accumulator.concat(&string_utf16_of("")); } else { - let mut key: Sequence = inputFields.get(&int!(0)); + let mut key: Sequence = inputFields.get(&int!((&truncate!((&int!(0)).clone(), u32)).clone())); if headContext.contains(&key) && headContext.get(&key) != inputContext.get(&key) { let mut keyStr: Sequence = _default::SafeDecode(&key); let mut headStr: Sequence = _default::SafeDecode(&headContext.get(&key)); let mut inputStr: Sequence = _default::SafeDecode(&inputContext.get(&key)); let mut msg: Sequence = string_utf16_of("input context for ").concat(&keyStr).concat(&string_utf16_of(" was ")).concat(&inputStr).concat(&string_utf16_of(" but stored context had ")).concat(&headStr).concat(&string_utf16_of("\n")); _accumulator = _accumulator.concat(&msg); - let mut _in0: Sequence> = inputFields.drop(&int!(1)); + let mut _in0: Sequence> = inputFields.drop(&int!((&truncate!((&int!(1)).clone(), u32)).clone())); let mut _in1: Map = inputContext.clone(); let mut _in2: Map = headContext.clone(); _r0 = _in0.clone(); @@ -72536,7 +72562,7 @@ pub mod _AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations_Compile { _r2 = _in2.clone(); continue 'TAIL_CALL_START; } else { - let mut _in3: Sequence> = inputFields.drop(&int!(1)); + let mut _in3: Sequence> = inputFields.drop(&int!((&truncate!((&int!(1)).clone(), u32)).clone())); let mut _in4: Map = inputContext.clone(); let mut _in5: Map = headContext.clone(); _r0 = _in3.clone(); @@ -72547,11 +72573,11 @@ pub mod _AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations_Compile { } } } - /// dafny/StructuredEncryption/src/AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations.dfy(835,3) + /// dafny/StructuredEncryption/src/AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations.dfy(913,3) pub fn DetectMismatch(inputContext: &Map, headContext: &Map) -> Arc>> { let mut inputFields: Sequence> = crate::implementation_from_dafny::SortedSets::_default::SetToOrderedSequence2::(&inputContext.keys(), &(Arc::new(move |x0: &u8,x1: &u8| crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::ByteLess(x0.clone(), x1.clone())) as Arc _ + Sync + Send>)); let mut str: Sequence = _default::DescribeMismatch(&inputFields, inputContext, headContext); - if str.cardinality() == int!(0) { + if truncate!(str.cardinality(), u64) == 0 { Arc::new(Outcome::>::Pass {}) } else { Arc::new(Outcome::>::Fail { @@ -72559,7 +72585,7 @@ pub mod _AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations_Compile { }) } } - /// dafny/StructuredEncryption/src/AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations.dfy(846,3) + /// dafny/StructuredEncryption/src/AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations.dfy(925,3) pub fn NewCmm(config: &Arc, cmm: &Object, context: &Map) -> Arc, Arc>> { let mut ret = MaybePlacebo::, Arc>>>::new(); let mut contextKeysX: Sequence> = crate::implementation_from_dafny::SortedSets::_default::SetToOrderedSequence2::(&context.keys(), &(Arc::new(move |x0: &u8,x1: &u8| crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::ByteLess(x0.clone(), x1.clone())) as Arc _ + Sync + Send>)); @@ -72590,7 +72616,7 @@ pub mod _AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations_Compile { })); return ret.read(); } - /// dafny/StructuredEncryption/src/AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations.dfy(881,3) + /// dafny/StructuredEncryption/src/AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations.dfy(960,3) pub fn DecryptStructure(config: &Arc, input: &Arc) -> Arc, Arc>> { let mut output = MaybePlacebo::, Arc>>>::new(); let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(input.encryptedStructure().keys() == input.authenticateSchema().keys(), &crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::E(&string_utf16_of("DecryptStructure requires encryptedStructure and authenticateSchema have the same keys."))); @@ -72618,7 +72644,7 @@ pub mod _AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations_Compile { return output.read(); }; let mut pathOutput: Arc = valueOrError2.Extract(); - let mut valueOrError3: Arc, Arc>, Map, Arc>), Arc>> = _default::UnBuildCryptoMap(pathOutput.plaintextStructure(), &map![], &map![]); + let mut valueOrError3: Arc, Arc>, Map, Arc>), Arc>> = _default::UnBuildCryptoMap(pathOutput.plaintextStructure(), 0, &map![], &map![]); if valueOrError3.IsFailure() { output = MaybePlacebo::from(valueOrError3.PropagateFailure::>()); return output.read(); @@ -72634,7 +72660,7 @@ pub mod _AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations_Compile { })); return output.read(); } - /// dafny/StructuredEncryption/src/AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations.dfy(985,3) + /// dafny/StructuredEncryption/src/AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations.dfy(1064,3) pub fn DecryptPathStructure(config: &Arc, input: &Arc) -> Arc, Arc>> { let mut output = MaybePlacebo::, Arc>>>::new(); let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(Itertools::unique(input.encryptedStructure().iter()).any(({ @@ -72694,14 +72720,14 @@ pub mod _AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations_Compile { let mut cmm: Object = input.cmm().clone(); if head.version().clone() == 2 { let mut valueOrError8: Arc, Arc>>; - let mut _out1: Arc, Arc>> = _default::GetV2EncryptionContext(&crate::implementation_from_dafny::_Canonize_Compile::_default::UnCanon(&canonData)); + let mut _out1: Arc, Arc>> = _default::GetV2EncryptionContext(&crate::implementation_from_dafny::_Canonize_Compile::_default::UnCanon(&canonData, 0, &(seq![] as Sequence>))); valueOrError8 = _out1.clone(); if valueOrError8.IsFailure() { output = MaybePlacebo::from(valueOrError8.PropagateFailure::>()); return output.read(); }; let mut newEncryptionContext: Map = valueOrError8.Extract(); - if newEncryptionContext.cardinality() != int!(0) { + if truncate!(newEncryptionContext.cardinality(), u64) != 0 { let mut valueOrError9: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(encryptionContext.keys().disjoint(&newEncryptionContext.keys()), &crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::E(&string_utf16_of("Internal Error - Structured Encryption encryption context overlaps with Item Encryptor encryption context."))); if valueOrError9.IsFailure() { output = MaybePlacebo::from(valueOrError9.PropagateFailure::>()); @@ -72827,7 +72853,7 @@ pub mod _AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations_Compile { })); return output.read(); } - /// dafny/StructuredEncryption/src/AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations.dfy(111,3) + /// dafny/StructuredEncryption/src/AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations.dfy(112,3) pub fn DBE_COMMITMENT_POLICY() -> Arc { Arc::new(CommitmentPolicy::DBE { DBE: Arc::new(DBECommitmentPolicy::REQUIRE_ENCRYPT_REQUIRE_DECRYPT {}) @@ -72835,7 +72861,7 @@ pub mod _AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations_Compile { } } - /// dafny/StructuredEncryption/src/AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations.dfy(38,3) + /// dafny/StructuredEncryption/src/AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations.dfy(39,3) #[derive(PartialEq, Clone)] pub enum Config { Config { @@ -72930,7 +72956,7 @@ pub mod _AwsCryptographyKeyStoreOperations_Compile { pub use crate::implementation_from_dafny::software::amazon::cryptography::keystore::internaldafny::types::CreateKeyInput; pub use crate::implementation_from_dafny::software::amazon::cryptography::keystore::internaldafny::types::CreateKeyOutput; pub use crate::implementation_from_dafny::_Wrappers_Compile::Option::Some; - pub use ::dafny_runtime::int; + pub use ::dafny_runtime::truncate; pub use crate::implementation_from_dafny::_Wrappers_Compile::Option::None; pub use ::dafny_runtime::Map; pub use crate::implementation_from_dafny::UTF8::ValidUTF8Bytes; @@ -72966,7 +72992,7 @@ pub mod _AwsCryptographyKeyStoreOperations_Compile { /// = aws-encryption-sdk-specification/framework/branch-key-store.md#getkeystoreinfo /// = type=implication /// # This operation MUST return the keystore information in this keystore configuration. - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographyKeyStore/src/AwsCryptographyKeyStoreOperations.dfy(58,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographyKeyStore/src/AwsCryptographyKeyStoreOperations.dfy(59,3) pub fn GetKeyStoreInfo(config: &Arc) -> Arc, Arc>> { let mut output: Arc, Arc>> = Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::, Arc>::Success { value: Arc::new(GetKeyStoreInfoOutput::GetKeyStoreInfoOutput { @@ -72979,7 +73005,7 @@ pub mod _AwsCryptographyKeyStoreOperations_Compile { }); return output.clone(); } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographyKeyStore/src/AwsCryptographyKeyStoreOperations.dfy(87,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographyKeyStore/src/AwsCryptographyKeyStoreOperations.dfy(88,3) pub fn CreateKeyStore(config: &Arc, input: &Arc) -> Arc, Arc>> { let mut output = MaybePlacebo::, Arc>>>::new(); let mut valueOrError0: Arc, Arc>>; @@ -73009,10 +73035,10 @@ pub mod _AwsCryptographyKeyStoreOperations_Compile { /// = type=implication /// # If an optional branch key id is provided /// # and no encryption context is provided this operation MUST fail. - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographyKeyStore/src/AwsCryptographyKeyStoreOperations.dfy(107,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographyKeyStore/src/AwsCryptographyKeyStoreOperations.dfy(108,3) pub fn CreateKey(config: &Arc, input: &Arc) -> Arc, Arc>> { let mut output = MaybePlacebo::, Arc>>>::new(); - let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(!matches!(input.branchKeyIdentifier().as_ref(), Some{ .. }) || matches!(input.encryptionContext().as_ref(), Some{ .. }) && int!(0) < input.encryptionContext().value().cardinality(), &Arc::new(Error::KeyStoreException { + let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(!matches!(input.branchKeyIdentifier().as_ref(), Some{ .. }) || matches!(input.encryptionContext().as_ref(), Some{ .. }) && 0 < truncate!(input.encryptionContext().value().cardinality(), u64), &Arc::new(Error::KeyStoreException { message: crate::implementation_from_dafny::_KeyStoreErrorMessages_Compile::_default::CUSTOM_BRANCH_KEY_ID_NEED_EC() })); if valueOrError0.IsFailure() { @@ -73044,7 +73070,7 @@ pub mod _AwsCryptographyKeyStoreOperations_Compile { }; branchKeyIdentifier = valueOrError2.Extract(); } else { - let mut valueOrError3: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(int!(0) < input.branchKeyIdentifier().value().cardinality(), &Arc::new(Error::KeyStoreException { + let mut valueOrError3: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(0 < truncate!(input.branchKeyIdentifier().value().cardinality(), u64), &Arc::new(Error::KeyStoreException { message: string_utf16_of("Custom branch key id can not be an empty string.") })); if valueOrError3.IsFailure() { @@ -73145,7 +73171,7 @@ pub mod _AwsCryptographyKeyStoreOperations_Compile { /// = type=implication /// # If the Keystore's KMS Configuration is `Discovery` or `MRDiscovery`, /// # this operation MUST immediately fail. - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographyKeyStore/src/AwsCryptographyKeyStoreOperations.dfy(209,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographyKeyStore/src/AwsCryptographyKeyStoreOperations.dfy(211,3) pub fn VersionKey(config: &Arc, input: &Arc) -> Arc, Arc>> { let mut output = MaybePlacebo::, Arc>>>::new(); let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(crate::implementation_from_dafny::_KMSKeystoreOperations_Compile::_default::HasKeyId(config.kmsConfiguration()), &Arc::new(Error::KeyStoreException { @@ -73155,7 +73181,7 @@ pub mod _AwsCryptographyKeyStoreOperations_Compile { output = MaybePlacebo::from(valueOrError0.PropagateFailure::>()); return output.read(); }; - let mut valueOrError1: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(int!(0) < input.branchKeyIdentifier().cardinality(), &Arc::new(Error::KeyStoreException { + let mut valueOrError1: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(0 < truncate!(input.branchKeyIdentifier().cardinality(), u64), &Arc::new(Error::KeyStoreException { message: crate::implementation_from_dafny::_KeyStoreErrorMessages_Compile::_default::BRANCH_KEY_ID_NEEDED() })); if valueOrError1.IsFailure() { @@ -73196,21 +73222,21 @@ pub mod _AwsCryptographyKeyStoreOperations_Compile { output = MaybePlacebo::from(_out2.clone()); return output.read(); } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographyKeyStore/src/AwsCryptographyKeyStoreOperations.dfy(253,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographyKeyStore/src/AwsCryptographyKeyStoreOperations.dfy(256,3) pub fn GetActiveBranchKey(config: &Arc, input: &Arc) -> Arc, Arc>> { let mut output: Arc, Arc>>; let mut _out0: Arc, Arc>> = crate::implementation_from_dafny::_GetKeys_Compile::_default::GetActiveKeyAndUnwrap(input, config.ddbTableName(), config.logicalKeyStoreName(), config.kmsConfiguration(), config.grantTokens(), config.kmsClient(), config.ddbClient()); output = _out0.clone(); return output.clone(); } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographyKeyStore/src/AwsCryptographyKeyStoreOperations.dfy(270,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographyKeyStore/src/AwsCryptographyKeyStoreOperations.dfy(273,3) pub fn GetBranchKeyVersion(config: &Arc, input: &Arc) -> Arc, Arc>> { let mut output: Arc, Arc>>; let mut _out0: Arc, Arc>> = crate::implementation_from_dafny::_GetKeys_Compile::_default::GetBranchKeyVersion(input, config.ddbTableName(), config.logicalKeyStoreName(), config.kmsConfiguration(), config.grantTokens(), config.kmsClient(), config.ddbClient()); output = _out0.clone(); return output.clone(); } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographyKeyStore/src/AwsCryptographyKeyStoreOperations.dfy(287,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographyKeyStore/src/AwsCryptographyKeyStoreOperations.dfy(290,3) pub fn GetBeaconKey(config: &Arc, input: &Arc) -> Arc, Arc>> { let mut output: Arc, Arc>>; let mut _out0: Arc, Arc>> = crate::implementation_from_dafny::_GetKeys_Compile::_default::GetBeaconKeyAndUnwrap(input, config.ddbTableName(), config.logicalKeyStoreName(), config.kmsConfiguration(), config.grantTokens(), config.kmsClient(), config.ddbClient()); @@ -73219,7 +73245,7 @@ pub mod _AwsCryptographyKeyStoreOperations_Compile { } } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographyKeyStore/src/AwsCryptographyKeyStoreOperations.dfy(28,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographyKeyStore/src/AwsCryptographyKeyStoreOperations.dfy(29,3) #[derive(PartialEq, Clone)] pub enum Config { Config { @@ -73482,7 +73508,7 @@ pub mod _AwsCryptographyMaterialProvidersOperations_Compile { pub struct _default {} impl _default { - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/AwsCryptographyMaterialProvidersOperations.dfy(91,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/AwsCryptographyMaterialProvidersOperations.dfy(92,3) pub fn CreateAwsKmsKeyring(config: &Arc, input: &Arc) -> Arc, Arc>> { let mut output = MaybePlacebo::, Arc>>>::new(); let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_AwsKmsUtils_Compile::_default::ValidateKmsKeyId(input.kmsKeyId()); @@ -73506,7 +73532,7 @@ pub mod _AwsCryptographyMaterialProvidersOperations_Compile { }))); return output.read(); } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/AwsCryptographyMaterialProvidersOperations.dfy(103,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/AwsCryptographyMaterialProvidersOperations.dfy(104,3) pub fn CreateAwsKmsDiscoveryKeyring(config: &Arc, input: &Arc) -> Arc, Arc>> { let mut output = MaybePlacebo::, Arc>>>::new(); if matches!(input.discoveryFilter().as_ref(), Some{ .. }) { @@ -73532,7 +73558,7 @@ pub mod _AwsCryptographyMaterialProvidersOperations_Compile { }))); return output.read(); } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/AwsCryptographyMaterialProvidersOperations.dfy(117,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/AwsCryptographyMaterialProvidersOperations.dfy(118,3) pub fn CreateAwsKmsMultiKeyring(config: &Arc, input: &Arc) -> Arc, Arc>> { let mut output = MaybePlacebo::, Arc>>>::new(); let mut valueOrError0: Arc>, Arc>> = crate::implementation_from_dafny::_AwsKmsUtils_Compile::_default::GetValidGrantTokens(input.grantTokens()); @@ -73562,7 +73588,7 @@ pub mod _AwsCryptographyMaterialProvidersOperations_Compile { }; return output.read(); } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/AwsCryptographyMaterialProvidersOperations.dfy(147,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/AwsCryptographyMaterialProvidersOperations.dfy(148,3) pub fn CreateAwsKmsDiscoveryMultiKeyring(config: &Arc, input: &Arc) -> Arc, Arc>> { let mut output = MaybePlacebo::, Arc>>>::new(); let mut valueOrError0: Arc>, Arc>> = crate::implementation_from_dafny::_AwsKmsUtils_Compile::_default::GetValidGrantTokens(input.grantTokens()); @@ -73590,7 +73616,7 @@ pub mod _AwsCryptographyMaterialProvidersOperations_Compile { output = MaybePlacebo::from(rc_coerce(crate::implementation_from_dafny::_Wrappers_Compile::Result::, Arc>::coerce(upcast_object::(), upcast_id::>()))(_out1.clone())); return output.read(); } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/AwsCryptographyMaterialProvidersOperations.dfy(172,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/AwsCryptographyMaterialProvidersOperations.dfy(173,3) pub fn CreateAwsKmsMrkKeyring(config: &Arc, input: &Arc) -> Arc, Arc>> { let mut output = MaybePlacebo::, Arc>>>::new(); let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_AwsKmsUtils_Compile::_default::ValidateKmsKeyId(input.kmsKeyId()); @@ -73614,7 +73640,7 @@ pub mod _AwsCryptographyMaterialProvidersOperations_Compile { }))); return output.read(); } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/AwsCryptographyMaterialProvidersOperations.dfy(185,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/AwsCryptographyMaterialProvidersOperations.dfy(186,3) pub fn CreateAwsKmsMrkMultiKeyring(config: &Arc, input: &Arc) -> Arc, Arc>> { let mut output = MaybePlacebo::, Arc>>>::new(); let mut valueOrError0: Arc>, Arc>> = crate::implementation_from_dafny::_AwsKmsUtils_Compile::_default::GetValidGrantTokens(input.grantTokens()); @@ -73642,7 +73668,7 @@ pub mod _AwsCryptographyMaterialProvidersOperations_Compile { output = MaybePlacebo::from(rc_coerce(crate::implementation_from_dafny::_Wrappers_Compile::Result::, Arc>::coerce(upcast_object::(), upcast_id::>()))(_out1.clone())); return output.read(); } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/AwsCryptographyMaterialProvidersOperations.dfy(210,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/AwsCryptographyMaterialProvidersOperations.dfy(211,3) pub fn CreateAwsKmsMrkDiscoveryKeyring(config: &Arc, input: &Arc) -> Arc, Arc>> { let mut output = MaybePlacebo::, Arc>>>::new(); if matches!(input.discoveryFilter().as_ref(), Some{ .. }) { @@ -73678,7 +73704,7 @@ pub mod _AwsCryptographyMaterialProvidersOperations_Compile { }))); return output.read(); } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/AwsCryptographyMaterialProvidersOperations.dfy(235,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/AwsCryptographyMaterialProvidersOperations.dfy(236,3) pub fn CreateAwsKmsMrkDiscoveryMultiKeyring(config: &Arc, input: &Arc) -> Arc, Arc>> { let mut output = MaybePlacebo::, Arc>>>::new(); let mut valueOrError0: Arc>, Arc>> = crate::implementation_from_dafny::_AwsKmsUtils_Compile::_default::GetValidGrantTokens(input.grantTokens()); @@ -73706,11 +73732,11 @@ pub mod _AwsCryptographyMaterialProvidersOperations_Compile { output = MaybePlacebo::from(rc_coerce(crate::implementation_from_dafny::_Wrappers_Compile::Result::, Arc>::coerce(upcast_object::(), upcast_id::>()))(_out1.clone())); return output.read(); } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/AwsCryptographyMaterialProvidersOperations.dfy(262,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/AwsCryptographyMaterialProvidersOperations.dfy(263,3) pub fn N(n: PositiveLong) -> Sequence { crate::implementation_from_dafny::_StandardLibrary_Compile::_String_Compile::_default::Base10Int2String(&int!((&n).clone())) } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/AwsCryptographyMaterialProvidersOperations.dfy(269,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/AwsCryptographyMaterialProvidersOperations.dfy(270,3) pub fn CheckCache(cache: &Arc, ttlSeconds: PositiveLong) -> Arc>> { let mut output = MaybePlacebo::>>>::new(); if matches!(cache.as_ref(), StormTracking{ .. }) { @@ -73738,7 +73764,7 @@ pub mod _AwsCryptographyMaterialProvidersOperations_Compile { }; return output.read(); } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/AwsCryptographyMaterialProvidersOperations.dfy(289,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/AwsCryptographyMaterialProvidersOperations.dfy(290,3) pub fn CreateAwsKmsHierarchicalKeyring(config: &Arc, input: &Arc) -> Arc, Arc>> { let mut output = MaybePlacebo::, Arc>>>::new(); let mut cmc: Object; @@ -73943,7 +73969,7 @@ pub mod _AwsCryptographyMaterialProvidersOperations_Compile { }))); return output.read(); } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/AwsCryptographyMaterialProvidersOperations.dfy(389,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/AwsCryptographyMaterialProvidersOperations.dfy(390,3) pub fn CreateAwsKmsEcdhKeyring(config: &Arc, input: &Arc) -> Arc, Arc>> { let mut output = MaybePlacebo::, Arc>>>::new(); let mut valueOrError0: Arc>, Arc>> = crate::implementation_from_dafny::_AwsKmsUtils_Compile::_default::GetValidGrantTokens(input.grantTokens()); @@ -74096,10 +74122,10 @@ pub mod _AwsCryptographyMaterialProvidersOperations_Compile { }))); return output.read(); } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/AwsCryptographyMaterialProvidersOperations.dfy(493,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/AwsCryptographyMaterialProvidersOperations.dfy(494,3) pub fn CreateMultiKeyring(config: &Arc, input: &Arc) -> Arc, Arc>> { let mut output = MaybePlacebo::, Arc>>>::new(); - let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(matches!(input.generator().as_ref(), Some{ .. }) || int!(0) < input.childKeyrings().cardinality(), &Arc::new(crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::Error::AwsCryptographicMaterialProvidersException { + let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(matches!(input.generator().as_ref(), Some{ .. }) || 0 < truncate!(input.childKeyrings().cardinality(), u64), &Arc::new(crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::Error::AwsCryptographicMaterialProvidersException { message: string_utf16_of("Must include a generator keyring and/or at least one child keyring") })); if valueOrError0.IsFailure() { @@ -74115,7 +74141,7 @@ pub mod _AwsCryptographyMaterialProvidersOperations_Compile { }))); return output.read(); } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/AwsCryptographyMaterialProvidersOperations.dfy(515,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/AwsCryptographyMaterialProvidersOperations.dfy(517,3) pub fn CreateRawAesKeyring(config: &Arc, input: &Arc) -> Arc, Arc>> { let mut output = MaybePlacebo::, Arc>>>::new(); let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(input.keyNamespace().clone() != string_utf16_of("aws-kms"), &Arc::new(crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::Error::AwsCryptographicMaterialProvidersException { @@ -74157,14 +74183,15 @@ pub mod _AwsCryptographyMaterialProvidersOperations_Compile { let mut __let_tmp_rhs0: (ValidUTF8Bytes, ValidUTF8Bytes) = namespaceAndName.clone(); let mut namespace: ValidUTF8Bytes = __let_tmp_rhs0.0.clone(); let mut name: ValidUTF8Bytes = __let_tmp_rhs0.1.clone(); - let mut valueOrError2: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(input.wrappingKey().cardinality() == int!(16) || input.wrappingKey().cardinality() == int!(24) || input.wrappingKey().cardinality() == int!(32), &Arc::new(crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::Error::AwsCryptographicMaterialProvidersException { + let mut wrapping_key_size: u64 = truncate!(input.wrappingKey().cardinality(), u64); + let mut valueOrError2: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(wrapping_key_size == 16 || wrapping_key_size == 24 || wrapping_key_size == 32, &Arc::new(crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::Error::AwsCryptographicMaterialProvidersException { message: string_utf16_of("Invalid wrapping key length") })); if valueOrError2.IsFailure() { output = MaybePlacebo::from(valueOrError2.PropagateFailure::>()); return output.read(); }; - let mut valueOrError3: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(input.wrappingKey().cardinality() == int!(wrappingAlg.keyLength().clone()), &Arc::new(crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::Error::AwsCryptographicMaterialProvidersException { + let mut valueOrError3: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(wrapping_key_size == wrappingAlg.keyLength().clone() as u64, &Arc::new(crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::Error::AwsCryptographicMaterialProvidersException { message: string_utf16_of("Wrapping key length does not match specified wrapping algorithm") })); if valueOrError3.IsFailure() { @@ -74180,7 +74207,7 @@ pub mod _AwsCryptographyMaterialProvidersOperations_Compile { }))); return output.read(); } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/AwsCryptographyMaterialProvidersOperations.dfy(574,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/AwsCryptographyMaterialProvidersOperations.dfy(578,3) pub fn CreateRawRsaKeyring(config: &Arc, input: &Arc) -> Arc, Arc>> { let mut output = MaybePlacebo::, Arc>>>::new(); let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(input.keyNamespace().clone() != string_utf16_of("aws-kms"), &Arc::new(crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::Error::AwsCryptographicMaterialProvidersException { @@ -74234,7 +74261,7 @@ pub mod _AwsCryptographyMaterialProvidersOperations_Compile { }))); return output.read(); } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/AwsCryptographyMaterialProvidersOperations.dfy(609,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/AwsCryptographyMaterialProvidersOperations.dfy(613,3) pub fn CreateRawEcdhKeyring(config: &Arc, input: &Arc) -> Arc, Arc>> { let mut output = MaybePlacebo::, Arc>>>::new(); let mut recipientPublicKey: Sequence; @@ -74361,7 +74388,7 @@ pub mod _AwsCryptographyMaterialProvidersOperations_Compile { }))); return output.read(); } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/AwsCryptographyMaterialProvidersOperations.dfy(708,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/AwsCryptographyMaterialProvidersOperations.dfy(712,3) pub fn CreateAwsKmsRsaKeyring(config: &Arc, input: &Arc) -> Arc, Arc>> { let mut output = MaybePlacebo::, Arc>>>::new(); let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(matches!(input.publicKey().as_ref(), Some{ .. }) || matches!(input.kmsClient().as_ref(), Some{ .. }), &Arc::new(crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::Error::AwsCryptographicMaterialProvidersException { @@ -74430,7 +74457,7 @@ pub mod _AwsCryptographyMaterialProvidersOperations_Compile { }))); return output.read(); } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/AwsCryptographyMaterialProvidersOperations.dfy(765,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/AwsCryptographyMaterialProvidersOperations.dfy(769,3) pub fn CreateDefaultCryptographicMaterialsManager(config: &Arc, input: &Arc) -> Arc, Arc>> { let mut output: Arc, Arc>>; let mut cmm: Object; @@ -74442,13 +74469,13 @@ pub mod _AwsCryptographyMaterialProvidersOperations_Compile { })); return output.clone(); } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/AwsCryptographyMaterialProvidersOperations.dfy(772,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/AwsCryptographyMaterialProvidersOperations.dfy(776,3) pub fn CmpError(s: &Sequence) -> Arc { Arc::new(crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::Error::AwsCryptographicMaterialProvidersException { message: s.clone() }) } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/AwsCryptographyMaterialProvidersOperations.dfy(780,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/AwsCryptographyMaterialProvidersOperations.dfy(784,3) pub fn CreateRequiredEncryptionContextCMM(config: &Arc, input: &Arc) -> Arc, Arc>> { let mut output = MaybePlacebo::, Arc>>>::new(); let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(matches!(input.underlyingCMM().as_ref(), Some{ .. }) && matches!(input.keyring().as_ref(), None{ .. }), &_default::CmpError(&string_utf16_of("CreateRequiredEncryptionContextCMM currently only supports cmm."))); @@ -74474,7 +74501,7 @@ pub mod _AwsCryptographyMaterialProvidersOperations_Compile { _coll0.build() }) }))(); - let mut valueOrError1: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(int!(0) < keySet.cardinality(), &_default::CmpError(&string_utf16_of("RequiredEncryptionContextCMM needs at least one requiredEncryptionContextKey."))); + let mut valueOrError1: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(0 < truncate!(keySet.cardinality(), u64), &_default::CmpError(&string_utf16_of("RequiredEncryptionContextCMM needs at least one requiredEncryptionContextKey."))); if valueOrError1.IsFailure() { output = MaybePlacebo::from(valueOrError1.PropagateFailure::>()); return output.read(); @@ -74488,7 +74515,7 @@ pub mod _AwsCryptographyMaterialProvidersOperations_Compile { }))); return output.read(); } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/AwsCryptographyMaterialProvidersOperations.dfy(797,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/AwsCryptographyMaterialProvidersOperations.dfy(802,3) pub fn CreateCryptographicMaterialsCache(config: &Arc, input: &Arc) -> Arc, Arc>> { let mut output = MaybePlacebo::, Arc>>>::new(); let mut _source0: Arc = input.cache().clone(); @@ -74529,7 +74556,7 @@ pub mod _AwsCryptographyMaterialProvidersOperations_Compile { let mut ___mcc_h1: Arc = _source0.No().clone(); let mut cmc: Object; let mut _nw2: Object = LocalCMC::_allocate_object(); - LocalCMC::_ctor(&_nw2, &int!(0), &int!(1)); + LocalCMC::_ctor(&_nw2, 0, 1); cmc = _nw2.clone(); output = MaybePlacebo::from(rc_coerce(crate::implementation_from_dafny::_Wrappers_Compile::Result::, Arc>::coerce(upcast_object::(), upcast_id::>()))(Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::, Arc>::Success { value: cmc.clone() @@ -74541,7 +74568,7 @@ pub mod _AwsCryptographyMaterialProvidersOperations_Compile { let mut c: Arc = ___mcc_h2.clone(); let mut cmc: Object; let mut _nw3: Object = LocalCMC::_allocate_object(); - LocalCMC::_ctor(&_nw3, &int!(c.entryCapacity().clone()), &int!((&_default::OptionalCountingNumber(c.entryPruningTailSize()).UnwrapOr(&truncate!((&int!(1)).clone(), i32))).clone())); + LocalCMC::_ctor(&_nw3, c.entryCapacity().clone() as u64, _default::OptionalCountingNumber(c.entryPruningTailSize()).UnwrapOr(&truncate!((&int!(1)).clone(), i32)) as u64); cmc = _nw3.clone(); output = MaybePlacebo::from(rc_coerce(crate::implementation_from_dafny::_Wrappers_Compile::Result::, Arc>::coerce(upcast_object::(), upcast_id::>()))(Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::, Arc>::Success { value: cmc.clone() @@ -74553,7 +74580,7 @@ pub mod _AwsCryptographyMaterialProvidersOperations_Compile { let mut c: Arc = ___mcc_h3.clone(); let mut cmc: Object; let mut _nw4: Object = LocalCMC::_allocate_object(); - LocalCMC::_ctor(&_nw4, &int!(c.entryCapacity().clone()), &int!((&_default::OptionalCountingNumber(c.entryPruningTailSize()).UnwrapOr(&truncate!((&int!(1)).clone(), i32))).clone())); + LocalCMC::_ctor(&_nw4, c.entryCapacity().clone() as u64, _default::OptionalCountingNumber(c.entryPruningTailSize()).UnwrapOr(&truncate!((&int!(1)).clone(), i32)) as u64); cmc = _nw4.clone(); let mut synCmc: Object; let mut _nw5: Object = SynchronizedLocalCMC::_allocate_object(cmc.clone()); @@ -74612,7 +74639,7 @@ pub mod _AwsCryptographyMaterialProvidersOperations_Compile { }; return output.read(); } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/AwsCryptographyMaterialProvidersOperations.dfy(845,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/AwsCryptographyMaterialProvidersOperations.dfy(850,3) pub fn OptionalCountingNumber(c: &Arc>) -> Arc> { if matches!(c.as_ref(), Some{ .. }) && c.value().clone() <= 0 { Arc::new(Option::::None {}) @@ -74620,7 +74647,7 @@ pub mod _AwsCryptographyMaterialProvidersOperations_Compile { c.clone() } } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/AwsCryptographyMaterialProvidersOperations.dfy(862,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/AwsCryptographyMaterialProvidersOperations.dfy(867,3) pub fn CreateDefaultClientSupplier(config: &Arc, input: &Arc) -> Arc, Arc>> { let mut output: Arc, Arc>>; let mut clientSupplier: Object; @@ -74632,15 +74659,15 @@ pub mod _AwsCryptographyMaterialProvidersOperations_Compile { })); return output.clone(); } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/AwsCryptographyMaterialProvidersOperations.dfy(869,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/AwsCryptographyMaterialProvidersOperations.dfy(874,3) pub fn InitializeEncryptionMaterials(config: &Arc, input: &Arc) -> Arc, Arc>> { crate::implementation_from_dafny::_Materials_Compile::_default::InitializeEncryptionMaterials(input) } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/AwsCryptographyMaterialProvidersOperations.dfy(875,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/AwsCryptographyMaterialProvidersOperations.dfy(880,3) pub fn InitializeDecryptionMaterials(config: &Arc, input: &Arc) -> Arc, Arc>> { crate::implementation_from_dafny::_Materials_Compile::_default::InitializeDecryptionMaterials(input) } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/AwsCryptographyMaterialProvidersOperations.dfy(881,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/AwsCryptographyMaterialProvidersOperations.dfy(886,3) pub fn ValidEncryptionMaterialsTransition(config: &Arc, input: &Arc) -> Arc>> { let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(crate::implementation_from_dafny::_Materials_Compile::_default::ValidEncryptionMaterialsTransition(input.start(), input.stop()), &Arc::new(crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::Error::InvalidEncryptionMaterialsTransition { message: string_utf16_of("Invalid Encryption Materials Transition") @@ -74653,7 +74680,7 @@ pub mod _AwsCryptographyMaterialProvidersOperations_Compile { }) } } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/AwsCryptographyMaterialProvidersOperations.dfy(892,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/AwsCryptographyMaterialProvidersOperations.dfy(897,3) pub fn ValidDecryptionMaterialsTransition(config: &Arc, input: &Arc) -> Arc>> { let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(crate::implementation_from_dafny::_Materials_Compile::_default::DecryptionMaterialsTransitionIsValid(input.start(), input.stop()), &Arc::new(crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::Error::InvalidDecryptionMaterialsTransition { message: string_utf16_of("Invalid Decryption Materials Transition") @@ -74666,7 +74693,7 @@ pub mod _AwsCryptographyMaterialProvidersOperations_Compile { }) } } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/AwsCryptographyMaterialProvidersOperations.dfy(903,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/AwsCryptographyMaterialProvidersOperations.dfy(908,3) pub fn EncryptionMaterialsHasPlaintextDataKey(config: &Arc, input: &Arc) -> Arc>> { let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(crate::implementation_from_dafny::_Materials_Compile::_default::EncryptionMaterialsHasPlaintextDataKey(input), &Arc::new(crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::Error::InvalidDecryptionMaterials { message: string_utf16_of("Invalid Encryption Materials") @@ -74679,7 +74706,7 @@ pub mod _AwsCryptographyMaterialProvidersOperations_Compile { }) } } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/AwsCryptographyMaterialProvidersOperations.dfy(913,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/AwsCryptographyMaterialProvidersOperations.dfy(918,3) pub fn DecryptionMaterialsWithPlaintextDataKey(config: &Arc, input: &Arc) -> Arc>> { let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(crate::implementation_from_dafny::_Materials_Compile::_default::DecryptionMaterialsWithPlaintextDataKey(input), &Arc::new(crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::Error::InvalidDecryptionMaterials { message: string_utf16_of("Invalid Decryption Materials") @@ -74692,11 +74719,11 @@ pub mod _AwsCryptographyMaterialProvidersOperations_Compile { }) } } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/AwsCryptographyMaterialProvidersOperations.dfy(924,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/AwsCryptographyMaterialProvidersOperations.dfy(929,3) pub fn GetAlgorithmSuiteInfo(config: &Arc, input: &Sequence) -> Arc, Arc>> { crate::implementation_from_dafny::_AlgorithmSuites_Compile::_default::GetAlgorithmSuiteInfo(input) } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/AwsCryptographyMaterialProvidersOperations.dfy(930,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/AwsCryptographyMaterialProvidersOperations.dfy(935,3) pub fn ValidAlgorithmSuiteInfo(config: &Arc, input: &Arc) -> Arc>> { let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(crate::implementation_from_dafny::_AlgorithmSuites_Compile::_default::_AlgorithmSuite_q(input), &Arc::new(crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::Error::InvalidAlgorithmSuiteInfo { message: string_utf16_of("Invalid AlgorithmSuiteInfo") @@ -74709,7 +74736,7 @@ pub mod _AwsCryptographyMaterialProvidersOperations_Compile { }) } } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/AwsCryptographyMaterialProvidersOperations.dfy(940,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/AwsCryptographyMaterialProvidersOperations.dfy(945,3) pub fn ValidateCommitmentPolicyOnEncrypt(config: &Arc, input: &Arc) -> Arc>> { let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Commitment_Compile::_default::ValidateCommitmentPolicyOnEncrypt(input.algorithm(), input.commitmentPolicy()); if valueOrError0.IsFailure() { @@ -74720,7 +74747,7 @@ pub mod _AwsCryptographyMaterialProvidersOperations_Compile { }) } } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/AwsCryptographyMaterialProvidersOperations.dfy(948,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/AwsCryptographyMaterialProvidersOperations.dfy(953,3) pub fn ValidateCommitmentPolicyOnDecrypt(config: &Arc, input: &Arc) -> Arc>> { let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Commitment_Compile::_default::ValidateCommitmentPolicyOnDecrypt(input.algorithm(), input.commitmentPolicy()); if valueOrError0.IsFailure() { @@ -74733,7 +74760,7 @@ pub mod _AwsCryptographyMaterialProvidersOperations_Compile { } } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/AwsCryptographyMaterialProvidersOperations.dfy(72,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/AwsCryptographyMaterialProvidersOperations.dfy(73,3) #[derive(PartialEq, Clone)] pub enum Config { Config { @@ -75143,7 +75170,7 @@ pub mod _AwsKmsDiscoveryKeyring_Compile { pub use ::dafny_runtime::upcast_object; pub use crate::implementation_from_dafny::_Actions_Compile::DeterministicActionWithResult; pub use crate::implementation_from_dafny::_Constants_Compile::AwsKmsEdkHelper; - pub use ::dafny_runtime::int; + pub use ::dafny_runtime::truncate; pub use ::dafny_runtime::DafnyCharUTF16; pub use crate::implementation_from_dafny::_Materials_Compile::SealedDecryptionMaterials; pub use crate::implementation_from_dafny::_Actions_Compile::ActionWithResult; @@ -75162,7 +75189,7 @@ pub mod _AwsKmsDiscoveryKeyring_Compile { pub struct _default {} impl _default { - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsDiscoveryKeyring.dfy(544,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsDiscoveryKeyring.dfy(574,3) pub fn DiscoveryMatch(arn: &AwsKmsArn, discoveryFilter: &Arc>>) -> bool { true && (&({ let mut arn = arn.clone(); @@ -75179,7 +75206,7 @@ pub mod _AwsKmsDiscoveryKeyring_Compile { } } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsDiscoveryKeyring.dfy(34,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsDiscoveryKeyring.dfy(35,3) pub struct AwsKmsDiscoveryKeyring { pub __i_client: Object, pub __i_discoveryFilter: Arc>>, @@ -75191,7 +75218,7 @@ pub mod _AwsKmsDiscoveryKeyring_Compile { pub fn _allocate_object() -> Object { allocate_object::() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsDiscoveryKeyring.dfy(56,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsDiscoveryKeyring.dfy(57,5) pub fn _ctor(this: &Object, client: &Object, discoveryFilter: &Arc>>, grantTokens: &GrantTokenList) -> () { let mut _set___i_client: bool = false; let mut _set___i_discoveryFilter: bool = false; @@ -75201,15 +75228,15 @@ pub mod _AwsKmsDiscoveryKeyring_Compile { update_field_uninit_object!(this.clone(), __i_grantTokens, _set___i_grantTokens, grantTokens.clone()); return (); } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsDiscoveryKeyring.dfy(40,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsDiscoveryKeyring.dfy(41,5) pub fn client(&self) -> Object { self.__i_client.clone() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsDiscoveryKeyring.dfy(41,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsDiscoveryKeyring.dfy(42,5) pub fn discoveryFilter(&self) -> Arc>> { self.__i_discoveryFilter.clone() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsDiscoveryKeyring.dfy(42,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsDiscoveryKeyring.dfy(43,5) pub fn grantTokens(&self) -> GrantTokenList { self.__i_grantTokens.clone() } @@ -75230,7 +75257,7 @@ pub mod _AwsKmsDiscoveryKeyring_Compile { impl IKeyring for AwsKmsDiscoveryKeyring { - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsDiscoveryKeyring.dfy(88,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsDiscoveryKeyring.dfy(105,5) fn _OnEncrypt_k(&self, input: &Arc) -> Arc, Arc>> { let mut output: Arc, Arc>> = Arc::new(Result::, Arc>::Failure { error: Arc::new(Error::AwsCryptographicMaterialProvidersException { @@ -75239,7 +75266,7 @@ pub mod _AwsKmsDiscoveryKeyring_Compile { }); return output.clone(); } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsDiscoveryKeyring.dfy(116,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsDiscoveryKeyring.dfy(147,5) fn _OnDecrypt_k(&self, input: &Arc) -> Arc, Arc>> { let mut res = MaybePlacebo::, Arc>>>::new(); let mut materials: Arc = input.materials().clone(); @@ -75276,7 +75303,7 @@ pub mod _AwsKmsDiscoveryKeyring_Compile { return res.read(); }; let mut edksToAttempt: Sequence> = valueOrError2.Extract(); - if int!(0) == edksToAttempt.cardinality() { + if 0 == truncate!(edksToAttempt.cardinality(), u64) { let mut valueOrError3: Arc, Arc>> = crate::implementation_from_dafny::_ErrorMessages_Compile::_default::IncorrectDataKeys(input.encryptedDataKeys(), input.materials().algorithmSuite(), &string_utf16_of("")); if valueOrError3.IsFailure() { res = MaybePlacebo::from(valueOrError3.PropagateFailure::>()); @@ -75325,7 +75352,7 @@ pub mod _AwsKmsDiscoveryKeyring_Compile { UpcastObjectFn!(dyn IKeyring); } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsDiscoveryKeyring.dfy(285,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsDiscoveryKeyring.dfy(311,3) pub struct AwsKmsEncryptedDataKeyFilter { pub __i_discoveryFilter: Arc>> } @@ -75335,13 +75362,13 @@ pub mod _AwsKmsDiscoveryKeyring_Compile { pub fn _allocate_object() -> Object { allocate_object::() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsDiscoveryKeyring.dfy(293,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsDiscoveryKeyring.dfy(319,5) pub fn _ctor(this: &Object, discoveryFilter: &Arc>>) -> () { let mut _set___i_discoveryFilter: bool = false; update_field_uninit_object!(this.clone(), __i_discoveryFilter, _set___i_discoveryFilter, discoveryFilter.clone()); return (); } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsDiscoveryKeyring.dfy(292,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsDiscoveryKeyring.dfy(318,5) pub fn discoveryFilter(&self) -> Arc>> { self.__i_discoveryFilter.clone() } @@ -75362,7 +75389,7 @@ pub mod _AwsKmsDiscoveryKeyring_Compile { impl DeterministicAction, Arc>>> for AwsKmsEncryptedDataKeyFilter { - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsDiscoveryKeyring.dfy(322,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsDiscoveryKeyring.dfy(348,5) fn Invoke(&self, edk: &Arc) -> Arc>> { let mut output = MaybePlacebo::>>>::new(); let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(crate::implementation_from_dafny::UTF8::_default::ValidUTF8Seq(edk.keyProviderInfo()), &Arc::new(Error::AwsCryptographicMaterialProvidersException { @@ -75415,7 +75442,7 @@ pub mod _AwsKmsDiscoveryKeyring_Compile { UpcastObjectFn!(dyn DeterministicAction, Arc>>>); } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsDiscoveryKeyring.dfy(373,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsDiscoveryKeyring.dfy(399,3) pub struct AwsKmsEncryptedDataKeyTransformer {} impl AwsKmsEncryptedDataKeyTransformer { @@ -75423,7 +75450,7 @@ pub mod _AwsKmsDiscoveryKeyring_Compile { pub fn _allocate_object() -> Object { allocate_object::() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsDiscoveryKeyring.dfy(380,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsDiscoveryKeyring.dfy(406,5) pub fn _ctor(this: &Object) -> () { return (); } @@ -75444,7 +75471,7 @@ pub mod _AwsKmsDiscoveryKeyring_Compile { impl DeterministicAction, Arc>, Arc>>> for AwsKmsEncryptedDataKeyTransformer { - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsDiscoveryKeyring.dfy(401,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsDiscoveryKeyring.dfy(427,5) fn Invoke(&self, edk: &Arc) -> Arc>, Arc>> { let mut res = MaybePlacebo::>, Arc>>>::new(); let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(edk.keyProviderId().clone() == crate::implementation_from_dafny::_Constants_Compile::_default::PROVIDER_ID(), &Arc::new(Error::AwsCryptographicMaterialProvidersException { @@ -75488,7 +75515,7 @@ pub mod _AwsKmsDiscoveryKeyring_Compile { UpcastObjectFn!(dyn DeterministicAction, Arc>, Arc>>>); } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsDiscoveryKeyring.dfy(428,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsDiscoveryKeyring.dfy(454,3) pub struct AwsKmsEncryptedDataKeyDecryptor { pub __i_materials: DecryptionMaterialsPendingPlaintextDataKey, pub __i_client: Object, @@ -75500,7 +75527,7 @@ pub mod _AwsKmsDiscoveryKeyring_Compile { pub fn _allocate_object() -> Object { allocate_object::() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsDiscoveryKeyring.dfy(438,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsDiscoveryKeyring.dfy(464,5) pub fn _ctor(this: &Object, materials: &DecryptionMaterialsPendingPlaintextDataKey, client: &Object, grantTokens: &GrantTokenList) -> () { let mut _set___i_materials: bool = false; let mut _set___i_client: bool = false; @@ -75510,15 +75537,15 @@ pub mod _AwsKmsDiscoveryKeyring_Compile { update_field_uninit_object!(this.clone(), __i_grantTokens, _set___i_grantTokens, grantTokens.clone()); return (); } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsDiscoveryKeyring.dfy(434,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsDiscoveryKeyring.dfy(460,5) pub fn materials(&self) -> DecryptionMaterialsPendingPlaintextDataKey { self.__i_materials.clone() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsDiscoveryKeyring.dfy(435,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsDiscoveryKeyring.dfy(461,5) pub fn client(&self) -> Object { self.__i_client.clone() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsDiscoveryKeyring.dfy(436,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsDiscoveryKeyring.dfy(462,5) pub fn grantTokens(&self) -> GrantTokenList { self.__i_grantTokens.clone() } @@ -75539,7 +75566,7 @@ pub mod _AwsKmsDiscoveryKeyring_Compile { impl Action, Arc>>> for AwsKmsEncryptedDataKeyDecryptor { - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsDiscoveryKeyring.dfy(509,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsDiscoveryKeyring.dfy(539,5) fn Invoke(&self, helper: &Arc) -> Arc>> { let mut res = MaybePlacebo::>>>::new(); let mut awsKmsKey: Sequence = AwsArn::ToString(helper.arn()); @@ -75636,12 +75663,12 @@ pub mod _AwsKmsEcdhKeyring_Compile { pub use crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::OnDecryptOutput; pub use crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::DecryptionMaterials; pub use crate::implementation_from_dafny::_Actions_Compile::DeterministicActionWithResult; - pub use ::dafny_runtime::int; + pub use ::dafny_runtime::truncate; pub use crate::implementation_from_dafny::_Actions_Compile::ActionWithResult; pub use crate::implementation_from_dafny::_Materials_Compile::SealedDecryptionMaterials; pub use crate::implementation_from_dafny::_Materials_Compile::DecryptionMaterialsPendingPlaintextDataKey; pub use crate::implementation_from_dafny::_Actions_Compile::Action; - pub use ::dafny_runtime::DafnyInt; + pub use ::dafny_runtime::int; pub use crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::KmsPublicKeyDiscoveryInput; pub use crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::KmsPrivateKeyToStaticPublicKeyInput; pub use crate::implementation_from_dafny::_EcdhEdkWrapping_Compile::EcdhUnwrap; @@ -75655,7 +75682,7 @@ pub mod _AwsKmsEcdhKeyring_Compile { pub struct _default {} impl _default { - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsEcdhKeyring.dfy(369,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsEcdhKeyring.dfy(404,3) pub fn DeriveSharedSecret(client: &Object, senderAwsKmsKey: &Sequence, recipientPublicKey: &Sequence, grantTokens: &GrantTokenList) -> Arc, Arc>> { let mut res = MaybePlacebo::, Arc>>>::new(); let mut deriveSharedSecretRequest: Arc = Arc::new(DeriveSharedSecretRequest::DeriveSharedSecretRequest { @@ -75693,19 +75720,19 @@ pub mod _AwsKmsEcdhKeyring_Compile { })); return res.read(); } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsEcdhKeyring.dfy(707,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsEcdhKeyring.dfy(748,3) pub fn E(s: &Sequence) -> Arc { Arc::new(crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::Error::AwsCryptographicMaterialProvidersException { message: s.clone() }) } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsEcdhKeyring.dfy(44,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsEcdhKeyring.dfy(45,3) pub fn AWS_KMS_ECDH_KEYRING_VERSION() -> Sequence { crate::implementation_from_dafny::_RawECDHKeyring_Compile::_default::RAW_ECDH_KEYRING_VERSION() } } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsEcdhKeyring.dfy(49,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsEcdhKeyring.dfy(50,3) pub struct AwsKmsEcdhKeyring { pub __i_client: Object, pub __i_cryptoPrimitives: Object, @@ -75724,7 +75751,7 @@ pub mod _AwsKmsEcdhKeyring_Compile { pub fn _allocate_object() -> Object { allocate_object::() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsEcdhKeyring.dfy(75,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsEcdhKeyring.dfy(76,5) pub fn _ctor(this: &Object, KeyAgreementScheme: &Arc, curveSpec: &Arc, client: &Object, grantTokens: &GrantTokenList, senderKmsKeyId: &Arc>>, senderPublicKey: &Arc>, recipientPublicKey: &PublicKeyType, compressedSenderPublicKey: &Arc>>, compressedRecipientPublicKey: &Sequence, cryptoPrimitives: &Object) -> () { let mut _set___i_client: bool = false; let mut _set___i_cryptoPrimitives: bool = false; @@ -75748,43 +75775,43 @@ pub mod _AwsKmsEcdhKeyring_Compile { update_field_uninit_object!(this.clone(), __i_cryptoPrimitives, _set___i_cryptoPrimitives, cryptoPrimitives.clone()); return (); } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsEcdhKeyring.dfy(52,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsEcdhKeyring.dfy(53,5) pub fn client(&self) -> Object { self.__i_client.clone() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsEcdhKeyring.dfy(61,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsEcdhKeyring.dfy(62,5) pub fn cryptoPrimitives(&self) -> Object { self.__i_cryptoPrimitives.clone() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsEcdhKeyring.dfy(58,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsEcdhKeyring.dfy(59,5) pub fn keyAgreementScheme(&self) -> Arc { self.__i_keyAgreementScheme.clone() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsEcdhKeyring.dfy(59,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsEcdhKeyring.dfy(60,5) pub fn curveSpec(&self) -> Arc { self.__i_curveSpec.clone() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsEcdhKeyring.dfy(60,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsEcdhKeyring.dfy(61,5) pub fn grantTokens(&self) -> GrantTokenList { self.__i_grantTokens.clone() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsEcdhKeyring.dfy(55,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsEcdhKeyring.dfy(56,5) pub fn recipientPublicKey(&self) -> PublicKeyType { self.__i_recipientPublicKey.clone() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsEcdhKeyring.dfy(54,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsEcdhKeyring.dfy(55,5) pub fn senderPublicKey(&self) -> Arc> { self.__i_senderPublicKey.clone() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsEcdhKeyring.dfy(56,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsEcdhKeyring.dfy(57,5) pub fn compressedSenderPublicKey(&self) -> Arc>> { self.__i_compressedSenderPublicKey.clone() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsEcdhKeyring.dfy(57,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsEcdhKeyring.dfy(58,5) pub fn compressedRecipientPublicKey(&self) -> Sequence { self.__i_compressedRecipientPublicKey.clone() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsEcdhKeyring.dfy(53,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsEcdhKeyring.dfy(54,5) pub fn senderKmsKeyId(&self) -> Arc>> { self.__i_senderKmsKeyId.clone() } @@ -75805,7 +75832,7 @@ pub mod _AwsKmsEcdhKeyring_Compile { impl IKeyring for AwsKmsEcdhKeyring { - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsEcdhKeyring.dfy(133,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsEcdhKeyring.dfy(155,5) fn _OnEncrypt_k(&self, input: &Arc) -> Arc, Arc>> { let mut res = MaybePlacebo::, Arc>>>::new(); let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(!matches!((&self.keyAgreementScheme().clone()).as_ref(), KmsPublicKeyDiscovery{ .. }), &_default::E(&string_utf16_of("KmsPublicKeyDiscovery Key Agreement Scheme is forbidden on encrypt."))); @@ -75924,7 +75951,7 @@ pub mod _AwsKmsEcdhKeyring_Compile { }; return res.read(); } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsEcdhKeyring.dfy(286,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsEcdhKeyring.dfy(320,5) fn _OnDecrypt_k(&self, input: &Arc) -> Arc, Arc>> { let mut res = MaybePlacebo::, Arc>>>::new(); let mut materials: Arc = input.materials().clone(); @@ -75946,7 +75973,7 @@ pub mod _AwsKmsEcdhKeyring_Compile { return res.read(); }; let mut edksToAttempt: Sequence> = valueOrError1.Extract(); - if int!(0) == edksToAttempt.cardinality() { + if 0 == truncate!(edksToAttempt.cardinality(), u64) { let mut valueOrError2: Arc, Arc>> = crate::implementation_from_dafny::_ErrorMessages_Compile::_default::IncorrectDataKeys(input.encryptedDataKeys(), input.materials().algorithmSuite(), &string_utf16_of("")); if valueOrError2.IsFailure() { res = MaybePlacebo::from(valueOrError2.PropagateFailure::>()); @@ -75992,7 +76019,7 @@ pub mod _AwsKmsEcdhKeyring_Compile { UpcastObjectFn!(dyn IKeyring); } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsEcdhKeyring.dfy(434,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsEcdhKeyring.dfy(469,3) pub struct DecryptSingleEncryptedDataKey { pub __i_materials: DecryptionMaterialsPendingPlaintextDataKey, pub __i_cryptoPrimitives: Object, @@ -76008,7 +76035,7 @@ pub mod _AwsKmsEcdhKeyring_Compile { pub fn _allocate_object() -> Object { allocate_object::() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsEcdhKeyring.dfy(448,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsEcdhKeyring.dfy(483,5) pub fn _ctor(this: &Object, materials: &DecryptionMaterialsPendingPlaintextDataKey, cryptoPrimitives: &Object, recipientPublicKey: &Sequence, client: &Object, grantTokens: &GrantTokenList, keyAgreementScheme: &Arc, curveSpec: &Arc) -> () { let mut _set___i_materials: bool = false; let mut _set___i_cryptoPrimitives: bool = false; @@ -76026,31 +76053,31 @@ pub mod _AwsKmsEcdhKeyring_Compile { update_field_uninit_object!(this.clone(), __i_grantTokens, _set___i_grantTokens, grantTokens.clone()); return (); } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsEcdhKeyring.dfy(440,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsEcdhKeyring.dfy(475,5) pub fn materials(&self) -> DecryptionMaterialsPendingPlaintextDataKey { self.__i_materials.clone() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsEcdhKeyring.dfy(441,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsEcdhKeyring.dfy(476,5) pub fn cryptoPrimitives(&self) -> Object { self.__i_cryptoPrimitives.clone() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsEcdhKeyring.dfy(442,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsEcdhKeyring.dfy(477,5) pub fn recipientPublicKey(&self) -> Sequence { self.__i_recipientPublicKey.clone() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsEcdhKeyring.dfy(445,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsEcdhKeyring.dfy(480,5) pub fn keyAgreementScheme(&self) -> Arc { self.__i_keyAgreementScheme.clone() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsEcdhKeyring.dfy(443,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsEcdhKeyring.dfy(478,5) pub fn client(&self) -> Object { self.__i_client.clone() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsEcdhKeyring.dfy(446,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsEcdhKeyring.dfy(481,5) pub fn curveSpec(&self) -> Arc { self.__i_curveSpec.clone() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsEcdhKeyring.dfy(444,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsEcdhKeyring.dfy(479,5) pub fn grantTokens(&self) -> GrantTokenList { self.__i_grantTokens.clone() } @@ -76071,107 +76098,100 @@ pub mod _AwsKmsEcdhKeyring_Compile { impl Action, Arc>>> for DecryptSingleEncryptedDataKey { - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsEcdhKeyring.dfy(500,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsEcdhKeyring.dfy(540,5) fn Invoke(&self, edk: &Arc) -> Arc>> { let mut res = MaybePlacebo::>>>::new(); - let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(crate::implementation_from_dafny::UTF8::_default::ValidUTF8Seq(edk.keyProviderId()), &Arc::new(crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::Error::AwsCryptographicMaterialProvidersException { - message: string_utf16_of("Received invalid EDK provider id for AWS KMS ECDH Keyring") - })); - if valueOrError0.IsFailure() { - res = MaybePlacebo::from(valueOrError0.PropagateFailure::()); - return res.read(); - }; let mut suite: Arc = self.materials().clone().algorithmSuite().clone(); let mut keyProviderId: ValidUTF8Bytes = edk.keyProviderId().clone(); let mut providerInfo: Sequence = edk.keyProviderInfo().clone(); let mut ciphertext: Sequence = edk.ciphertext().clone(); - let mut valueOrError1: Arc, Arc>> = crate::implementation_from_dafny::_EdkWrapping_Compile::_default::GetProviderWrappedMaterial(&ciphertext, &suite); + let mut valueOrError0: Arc, Arc>> = crate::implementation_from_dafny::_EdkWrapping_Compile::_default::GetProviderWrappedMaterial(&ciphertext, &suite); + if valueOrError0.IsFailure() { + res = MaybePlacebo::from(valueOrError0.PropagateFailure::()); + return res.read(); + }; + let mut providerWrappedMaterial: Sequence = valueOrError0.Extract(); + let mut valueOrError1: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(truncate!(providerInfo.cardinality(), u64) <= crate::implementation_from_dafny::_Constants_Compile::_default::ECDH_PROVIDER_INFO_521_LEN() as u64 && crate::implementation_from_dafny::_RawECDHKeyring_Compile::_default::ValidProviderInfoLength(&providerInfo), &_default::E(&string_utf16_of("EDK ProviderInfo longer than expected"))); if valueOrError1.IsFailure() { res = MaybePlacebo::from(valueOrError1.PropagateFailure::()); return res.read(); }; - let mut providerWrappedMaterial: Sequence = valueOrError1.Extract(); - let mut valueOrError2: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(providerInfo.cardinality() <= int!(crate::implementation_from_dafny::_Constants_Compile::_default::ECDH_PROVIDER_INFO_521_LEN()) && crate::implementation_from_dafny::_RawECDHKeyring_Compile::_default::ValidProviderInfoLength(&providerInfo), &_default::E(&string_utf16_of("EDK ProviderInfo longer than expected"))); + let mut keyringVersion: u8 = providerInfo.get(&int!((&truncate!((&int!(0)).clone(), u32)).clone())); + let mut valueOrError2: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(seq![keyringVersion] == _default::AWS_KMS_ECDH_KEYRING_VERSION(), &_default::E(&string_utf16_of("Incorrect Keyring version found in provider info."))); if valueOrError2.IsFailure() { res = MaybePlacebo::from(valueOrError2.PropagateFailure::()); return res.read(); }; - let mut keyringVersion: u8 = providerInfo.get(&int!(0)); - let mut valueOrError3: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(seq![keyringVersion] == _default::AWS_KMS_ECDH_KEYRING_VERSION(), &_default::E(&string_utf16_of("Incorrect Keyring version found in provider info."))); + let mut recipientPublicKeyLength: u32 = crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default::SeqToUInt32(&providerInfo.slice(&int!((&crate::implementation_from_dafny::_Constants_Compile::_default::ECDH_PROVIDER_INFO_RPL_INDEX()).clone()), &int!((&crate::implementation_from_dafny::_Constants_Compile::_default::ECDH_PROVIDER_INFO_RPK_INDEX()).clone()))); + let mut recipientPublicKeyLengthIndex: u64 = crate::implementation_from_dafny::_Constants_Compile::_default::ECDH_PROVIDER_INFO_RPK_INDEX() as u64 + recipientPublicKeyLength as u64; + let mut senderPublicKeyIndex: u64 = recipientPublicKeyLengthIndex + crate::implementation_from_dafny::_Constants_Compile::_default::ECDH_PROVIDER_INFO_PUBLIC_KEY_LEN(); + let mut valueOrError3: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(recipientPublicKeyLengthIndex + 4 < truncate!(providerInfo.cardinality(), u64), &_default::E(&string_utf16_of("Key Provider Info Serialization Error. Serialized length less than expected."))); if valueOrError3.IsFailure() { res = MaybePlacebo::from(valueOrError3.PropagateFailure::()); return res.read(); }; - let mut recipientPublicKeyLength: DafnyInt = int!(crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default::SeqToUInt32(&providerInfo.slice(&int!((&crate::implementation_from_dafny::_Constants_Compile::_default::ECDH_PROVIDER_INFO_RPL_INDEX()).clone()), &int!((&crate::implementation_from_dafny::_Constants_Compile::_default::ECDH_PROVIDER_INFO_RPK_INDEX()).clone())))); - let mut recipientPublicKeyLengthIndex: DafnyInt = int!(crate::implementation_from_dafny::_Constants_Compile::_default::ECDH_PROVIDER_INFO_RPK_INDEX()) + recipientPublicKeyLength.clone(); - let mut senderPublicKeyIndex: DafnyInt = recipientPublicKeyLengthIndex.clone() + crate::implementation_from_dafny::_Constants_Compile::_default::ECDH_PROVIDER_INFO_PUBLIC_KEY_LEN(); - let mut valueOrError4: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(recipientPublicKeyLengthIndex.clone() + int!(4) < providerInfo.cardinality(), &_default::E(&string_utf16_of("Key Provider Info Serialization Error. Serialized length less than expected."))); + let mut providerInfoRecipientPublicKey: Sequence = providerInfo.slice(&int!((&crate::implementation_from_dafny::_Constants_Compile::_default::ECDH_PROVIDER_INFO_RPK_INDEX()).clone()), &int!((&recipientPublicKeyLengthIndex).clone())); + let mut providerInfoSenderPublicKey: Sequence = providerInfo.drop(&int!((&senderPublicKeyIndex).clone())); + let mut valueOrError4: Arc, Arc>>; + let mut _out0: Arc, Arc>> = crate::implementation_from_dafny::_RawECDHKeyring_Compile::_default::DecompressPublicKey(&providerInfoSenderPublicKey, &self.curveSpec().clone(), &self.cryptoPrimitives().clone()); + valueOrError4 = _out0.clone(); if valueOrError4.IsFailure() { res = MaybePlacebo::from(valueOrError4.PropagateFailure::()); return res.read(); }; - let mut providerInfoRecipientPublicKey: Sequence = providerInfo.slice(&int!((&crate::implementation_from_dafny::_Constants_Compile::_default::ECDH_PROVIDER_INFO_RPK_INDEX()).clone()), &recipientPublicKeyLengthIndex); - let mut providerInfoSenderPublicKey: Sequence = providerInfo.drop(&senderPublicKeyIndex); + let mut senderPublicKey: Sequence = valueOrError4.Extract(); let mut valueOrError5: Arc, Arc>>; - let mut _out0: Arc, Arc>> = crate::implementation_from_dafny::_RawECDHKeyring_Compile::_default::DecompressPublicKey(&providerInfoSenderPublicKey, &self.curveSpec().clone(), &self.cryptoPrimitives().clone()); - valueOrError5 = _out0.clone(); + let mut _out1: Arc, Arc>> = crate::implementation_from_dafny::_RawECDHKeyring_Compile::_default::DecompressPublicKey(&providerInfoRecipientPublicKey, &self.curveSpec().clone(), &self.cryptoPrimitives().clone()); + valueOrError5 = _out1.clone(); if valueOrError5.IsFailure() { res = MaybePlacebo::from(valueOrError5.PropagateFailure::()); return res.read(); }; - let mut senderPublicKey: Sequence = valueOrError5.Extract(); - let mut valueOrError6: Arc, Arc>>; - let mut _out1: Arc, Arc>> = crate::implementation_from_dafny::_RawECDHKeyring_Compile::_default::DecompressPublicKey(&providerInfoRecipientPublicKey, &self.curveSpec().clone(), &self.cryptoPrimitives().clone()); - valueOrError6 = _out1.clone(); + let mut recipientPublicKey: Sequence = valueOrError5.Extract(); + let mut valueOrError6: Arc>>; + let mut _out2: Arc>> = crate::implementation_from_dafny::_RawECDHKeyring_Compile::_default::ValidatePublicKey(&self.cryptoPrimitives().clone(), &self.curveSpec().clone(), &senderPublicKey); + valueOrError6 = _out2.clone(); if valueOrError6.IsFailure() { res = MaybePlacebo::from(valueOrError6.PropagateFailure::()); return res.read(); }; - let mut recipientPublicKey: Sequence = valueOrError6.Extract(); + let mut _v0: bool = valueOrError6.Extract(); let mut valueOrError7: Arc>>; - let mut _out2: Arc>> = crate::implementation_from_dafny::_RawECDHKeyring_Compile::_default::ValidatePublicKey(&self.cryptoPrimitives().clone(), &self.curveSpec().clone(), &senderPublicKey); - valueOrError7 = _out2.clone(); + let mut _out3: Arc>> = crate::implementation_from_dafny::_RawECDHKeyring_Compile::_default::ValidatePublicKey(&self.cryptoPrimitives().clone(), &self.curveSpec().clone(), &recipientPublicKey); + valueOrError7 = _out3.clone(); if valueOrError7.IsFailure() { res = MaybePlacebo::from(valueOrError7.PropagateFailure::()); return res.read(); }; - let mut _v0: bool = valueOrError7.Extract(); - let mut valueOrError8: Arc>>; - let mut _out3: Arc>> = crate::implementation_from_dafny::_RawECDHKeyring_Compile::_default::ValidatePublicKey(&self.cryptoPrimitives().clone(), &self.curveSpec().clone(), &recipientPublicKey); - valueOrError8 = _out3.clone(); + let mut _v1: bool = valueOrError7.Extract(); + let mut valueOrError8: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(crate::implementation_from_dafny::software::amazon::cryptography::services::kms::internaldafny::types::_default::IsValid_PublicKeyType(&senderPublicKey) && crate::implementation_from_dafny::software::amazon::cryptography::services::kms::internaldafny::types::_default::IsValid_PublicKeyType(&self.recipientPublicKey().clone()), &_default::E(&string_utf16_of("Received serialized sender public key of incorrect length"))); if valueOrError8.IsFailure() { res = MaybePlacebo::from(valueOrError8.PropagateFailure::()); return res.read(); }; - let mut _v1: bool = valueOrError8.Extract(); - let mut valueOrError9: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(crate::implementation_from_dafny::software::amazon::cryptography::services::kms::internaldafny::types::_default::IsValid_PublicKeyType(&senderPublicKey) && crate::implementation_from_dafny::software::amazon::cryptography::services::kms::internaldafny::types::_default::IsValid_PublicKeyType(&self.recipientPublicKey().clone()), &_default::E(&string_utf16_of("Received serialized sender public key of incorrect length"))); - if valueOrError9.IsFailure() { - res = MaybePlacebo::from(valueOrError9.PropagateFailure::()); - return res.read(); - }; let mut sharedSecretPublicKey: Sequence; let mut sharedSecretKmsKeyId: Sequence; let mut _source0: Arc = self.keyAgreementScheme().clone(); if matches!((&_source0).as_ref(), KmsPublicKeyDiscovery{ .. }) { let mut ___mcc_h0: Arc = _source0.KmsPublicKeyDiscovery().clone(); let mut kmsPublicKeyDiscovery: Arc = ___mcc_h0.clone(); - let mut valueOrError10: Arc>> = crate::implementation_from_dafny::_AwsKmsUtils_Compile::_default::ValidateKmsKeyId(kmsPublicKeyDiscovery.recipientKmsIdentifier()); - if valueOrError10.IsFailure() { - res = MaybePlacebo::from(valueOrError10.PropagateFailure::()); + let mut valueOrError9: Arc>> = crate::implementation_from_dafny::_AwsKmsUtils_Compile::_default::ValidateKmsKeyId(kmsPublicKeyDiscovery.recipientKmsIdentifier()); + if valueOrError9.IsFailure() { + res = MaybePlacebo::from(valueOrError9.PropagateFailure::()); return res.read(); }; - let mut _v2: () = valueOrError10.Extract(); + let mut _v2: () = valueOrError9.Extract(); sharedSecretPublicKey = senderPublicKey.clone(); sharedSecretKmsKeyId = kmsPublicKeyDiscovery.recipientKmsIdentifier().clone(); } else { let mut ___mcc_h1: Arc = _source0.KmsPrivateKeyToStaticPublicKey().clone(); let mut kmsPrivateKeyToStaticPublicKey: Arc = ___mcc_h1.clone(); - let mut valueOrError11: Arc>> = crate::implementation_from_dafny::_AwsKmsUtils_Compile::_default::ValidateKmsKeyId(kmsPrivateKeyToStaticPublicKey.senderKmsIdentifier()); - if valueOrError11.IsFailure() { - res = MaybePlacebo::from(valueOrError11.PropagateFailure::()); + let mut valueOrError10: Arc>> = crate::implementation_from_dafny::_AwsKmsUtils_Compile::_default::ValidateKmsKeyId(kmsPrivateKeyToStaticPublicKey.senderKmsIdentifier()); + if valueOrError10.IsFailure() { + res = MaybePlacebo::from(valueOrError10.PropagateFailure::()); return res.read(); }; - let mut _v3: () = valueOrError11.Extract(); + let mut _v3: () = valueOrError10.Extract(); sharedSecretKmsKeyId = kmsPrivateKeyToStaticPublicKey.senderKmsIdentifier().clone(); if kmsPrivateKeyToStaticPublicKey.recipientPublicKey().clone() == recipientPublicKey.clone() { sharedSecretPublicKey = recipientPublicKey.clone(); @@ -76179,19 +76199,19 @@ pub mod _AwsKmsEcdhKeyring_Compile { sharedSecretPublicKey = senderPublicKey.clone(); } }; - let mut valueOrError12: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(crate::implementation_from_dafny::software::amazon::cryptography::services::kms::internaldafny::types::_default::IsValid_PublicKeyType(&sharedSecretPublicKey), &_default::E(&string_utf16_of("Received Recipient Public Key of incorrect expected length"))); - if valueOrError12.IsFailure() { - res = MaybePlacebo::from(valueOrError12.PropagateFailure::()); + let mut valueOrError11: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(crate::implementation_from_dafny::software::amazon::cryptography::services::kms::internaldafny::types::_default::IsValid_PublicKeyType(&sharedSecretPublicKey), &_default::E(&string_utf16_of("Received Recipient Public Key of incorrect expected length"))); + if valueOrError11.IsFailure() { + res = MaybePlacebo::from(valueOrError11.PropagateFailure::()); return res.read(); }; - let mut valueOrError13: Arc, Arc>>; + let mut valueOrError12: Arc, Arc>>; let mut _out4: Arc, Arc>> = _default::DeriveSharedSecret(&self.client().clone(), &sharedSecretKmsKeyId, &sharedSecretPublicKey, &self.grantTokens().clone()); - valueOrError13 = _out4.clone(); - if valueOrError13.IsFailure() { - res = MaybePlacebo::from(valueOrError13.PropagateFailure::()); + valueOrError12 = _out4.clone(); + if valueOrError12.IsFailure() { + res = MaybePlacebo::from(valueOrError12.PropagateFailure::()); return res.read(); }; - let mut sharedSecret: Sequence = valueOrError13.Extract(); + let mut sharedSecret: Sequence = valueOrError12.Extract(); let mut ecdhUnwrap: Object; let mut _nw0: Object = EcdhUnwrap::_allocate_object(); EcdhUnwrap::_ctor(&_nw0, &providerInfoSenderPublicKey, &providerInfoRecipientPublicKey, &sharedSecret, &_default::AWS_KMS_ECDH_KEYRING_VERSION(), &self.curveSpec().clone(), &self.cryptoPrimitives().clone()); @@ -76199,18 +76219,18 @@ pub mod _AwsKmsEcdhKeyring_Compile { let mut unwrapOutputRes: Arc>>, Arc>>; let mut _out5: Arc>>, Arc>> = crate::implementation_from_dafny::_EdkWrapping_Compile::_default::UnwrapEdkMaterial::>(edk.ciphertext(), &self.materials().clone(), &upcast_object::>>()(ecdhUnwrap.clone())); unwrapOutputRes = _out5.clone(); - let mut valueOrError14: Arc>>, Arc>> = unwrapOutputRes.clone(); - if valueOrError14.IsFailure() { - res = MaybePlacebo::from(valueOrError14.PropagateFailure::()); + let mut valueOrError13: Arc>>, Arc>> = unwrapOutputRes.clone(); + if valueOrError13.IsFailure() { + res = MaybePlacebo::from(valueOrError13.PropagateFailure::()); return res.read(); }; - let mut unwrapOutput: Arc>> = valueOrError14.Extract(); - let mut valueOrError15: Arc, Arc>> = crate::implementation_from_dafny::_Materials_Compile::_default::DecryptionMaterialsAddDataKey(&self.materials().clone(), unwrapOutput.plaintextDataKey(), unwrapOutput.symmetricSigningKey()); - if valueOrError15.IsFailure() { - res = MaybePlacebo::from(valueOrError15.PropagateFailure::()); + let mut unwrapOutput: Arc>> = valueOrError13.Extract(); + let mut valueOrError14: Arc, Arc>> = crate::implementation_from_dafny::_Materials_Compile::_default::DecryptionMaterialsAddDataKey(&self.materials().clone(), unwrapOutput.plaintextDataKey(), unwrapOutput.symmetricSigningKey()); + if valueOrError14.IsFailure() { + res = MaybePlacebo::from(valueOrError14.PropagateFailure::()); return res.read(); }; - let mut result: Arc = valueOrError15.Extract(); + let mut result: Arc = valueOrError14.Extract(); res = MaybePlacebo::from(Arc::new(Result::, Arc>::Success { value: result.clone() })); @@ -76223,7 +76243,7 @@ pub mod _AwsKmsEcdhKeyring_Compile { UpcastObjectFn!(dyn Action, Arc>>>); } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsEcdhKeyring.dfy(620,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsEcdhKeyring.dfy(660,3) pub struct OnDecryptEcdhDataKeyFilter { pub __i_keyAgreementScheme: Arc, pub __i_compressedRecipientPublicKey: Sequence, @@ -76235,7 +76255,7 @@ pub mod _AwsKmsEcdhKeyring_Compile { pub fn _allocate_object() -> Object { allocate_object::() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsEcdhKeyring.dfy(627,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsEcdhKeyring.dfy(667,5) pub fn _ctor(this: &Object, keyAgreementScheme: &Arc, compressedRecipientPublicKey: &Sequence, compressedSenderPublicKey: &Arc>>) -> () { let mut _set___i_keyAgreementScheme: bool = false; let mut _set___i_compressedRecipientPublicKey: bool = false; @@ -76250,15 +76270,15 @@ pub mod _AwsKmsEcdhKeyring_Compile { update_field_if_uninit_object!(this, __i_compressedSenderPublicKey, _set___i_compressedSenderPublicKey, as Default>::default()); return (); } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsEcdhKeyring.dfy(623,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsEcdhKeyring.dfy(663,5) pub fn keyAgreementScheme(&self) -> Arc { self.__i_keyAgreementScheme.clone() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsEcdhKeyring.dfy(624,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsEcdhKeyring.dfy(664,5) pub fn compressedRecipientPublicKey(&self) -> Sequence { self.__i_compressedRecipientPublicKey.clone() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsEcdhKeyring.dfy(625,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsEcdhKeyring.dfy(665,5) pub fn compressedSenderPublicKey(&self) -> Sequence { self.__i_compressedSenderPublicKey.clone() } @@ -76279,7 +76299,7 @@ pub mod _AwsKmsEcdhKeyring_Compile { impl DeterministicAction, Arc>>> for OnDecryptEcdhDataKeyFilter { - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsEcdhKeyring.dfy(655,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsEcdhKeyring.dfy(696,5) fn Invoke(&self, edk: &Arc) -> Arc>> { let mut res = MaybePlacebo::>>>::new(); let mut providerInfo: Sequence = edk.keyProviderInfo().clone(); @@ -76290,27 +76310,27 @@ pub mod _AwsKmsEcdhKeyring_Compile { })); return res.read(); }; - let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(providerInfo.cardinality() <= int!(crate::implementation_from_dafny::_Constants_Compile::_default::ECDH_PROVIDER_INFO_521_LEN()) && crate::implementation_from_dafny::_RawECDHKeyring_Compile::_default::ValidProviderInfoLength(&providerInfo), &_default::E(&string_utf16_of("EDK ProviderInfo longer than expected"))); + let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(truncate!(providerInfo.cardinality(), u64) <= crate::implementation_from_dafny::_Constants_Compile::_default::ECDH_PROVIDER_INFO_521_LEN() as u64 && crate::implementation_from_dafny::_RawECDHKeyring_Compile::_default::ValidProviderInfoLength(&providerInfo), &_default::E(&string_utf16_of("EDK ProviderInfo longer than expected"))); if valueOrError0.IsFailure() { res = MaybePlacebo::from(valueOrError0.PropagateFailure::()); return res.read(); }; - let mut keyringVersion: u8 = providerInfo.get(&int!(0)); + let mut keyringVersion: u8 = providerInfo.get(&int!((&truncate!((&int!(0)).clone(), u32)).clone())); let mut valueOrError1: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(seq![keyringVersion] == _default::AWS_KMS_ECDH_KEYRING_VERSION(), &_default::E(&string_utf16_of("Incorrect Keyring version found in provider info."))); if valueOrError1.IsFailure() { res = MaybePlacebo::from(valueOrError1.PropagateFailure::()); return res.read(); }; - let mut recipientPublicKeyLength: DafnyInt = int!(crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default::SeqToUInt32(&providerInfo.slice(&int!((&crate::implementation_from_dafny::_Constants_Compile::_default::ECDH_PROVIDER_INFO_RPL_INDEX()).clone()), &int!((&crate::implementation_from_dafny::_Constants_Compile::_default::ECDH_PROVIDER_INFO_RPK_INDEX()).clone())))); - let mut recipientPublicKeyLengthIndex: DafnyInt = int!(crate::implementation_from_dafny::_Constants_Compile::_default::ECDH_PROVIDER_INFO_RPK_INDEX()) + recipientPublicKeyLength.clone(); - let mut senderPublicKeyIndex: DafnyInt = recipientPublicKeyLengthIndex.clone() + crate::implementation_from_dafny::_Constants_Compile::_default::ECDH_PROVIDER_INFO_PUBLIC_KEY_LEN(); - let mut valueOrError2: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(recipientPublicKeyLengthIndex.clone() + int!(4) < providerInfo.cardinality(), &_default::E(&string_utf16_of("Key Provider Info Serialization Error. Serialized length less than expected."))); + let mut recipientPublicKeyLength: u32 = crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default::SeqToUInt32(&providerInfo.slice(&int!((&crate::implementation_from_dafny::_Constants_Compile::_default::ECDH_PROVIDER_INFO_RPL_INDEX()).clone()), &int!((&crate::implementation_from_dafny::_Constants_Compile::_default::ECDH_PROVIDER_INFO_RPK_INDEX()).clone()))); + let mut recipientPublicKeyLengthIndex: u64 = crate::implementation_from_dafny::_Constants_Compile::_default::ECDH_PROVIDER_INFO_RPK_INDEX() as u64 + recipientPublicKeyLength as u64; + let mut senderPublicKeyIndex: u64 = recipientPublicKeyLengthIndex + crate::implementation_from_dafny::_Constants_Compile::_default::ECDH_PROVIDER_INFO_PUBLIC_KEY_LEN(); + let mut valueOrError2: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(recipientPublicKeyLengthIndex + 4 < truncate!(providerInfo.cardinality(), u64), &_default::E(&string_utf16_of("Key Provider Info Serialization Error. Serialized length less than expected."))); if valueOrError2.IsFailure() { res = MaybePlacebo::from(valueOrError2.PropagateFailure::()); return res.read(); }; - let mut providerInfoRecipientPublicKey: Sequence = providerInfo.slice(&int!((&crate::implementation_from_dafny::_Constants_Compile::_default::ECDH_PROVIDER_INFO_RPK_INDEX()).clone()), &recipientPublicKeyLengthIndex); - let mut providerInfoSenderPublicKey: Sequence = providerInfo.drop(&senderPublicKeyIndex); + let mut providerInfoRecipientPublicKey: Sequence = providerInfo.slice(&int!((&crate::implementation_from_dafny::_Constants_Compile::_default::ECDH_PROVIDER_INFO_RPK_INDEX()).clone()), &int!((&recipientPublicKeyLengthIndex).clone())); + let mut providerInfoSenderPublicKey: Sequence = providerInfo.drop(&int!((&senderPublicKeyIndex).clone())); if matches!((&self.keyAgreementScheme().clone()).as_ref(), KmsPublicKeyDiscovery{ .. }) { res = MaybePlacebo::from(Arc::new(Result::>::Success { value: self.compressedRecipientPublicKey().clone() == providerInfoRecipientPublicKey.clone() @@ -76361,10 +76381,8 @@ pub mod _AwsKmsHierarchicalKeyring_Compile { pub use crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::GetBranchKeyIdOutput; pub use crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::GetBranchKeyIdInput; pub use crate::implementation_from_dafny::_Wrappers_Compile::Outcome; - pub use ::std::marker::Sync; - pub use ::std::marker::Send; pub use crate::implementation_from_dafny::_Wrappers_Compile::Result::Success; - pub use ::dafny_runtime::int; + pub use ::dafny_runtime::truncate; pub use crate::implementation_from_dafny::software::amazon::cryptography::primitives::internaldafny::types::DigestInput; pub use crate::implementation_from_dafny::software::amazon::cryptography::keystore::internaldafny::types::BranchKeyMaterials; pub use crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::GetCacheEntryInput; @@ -76373,6 +76391,7 @@ pub mod _AwsKmsHierarchicalKeyring_Compile { pub use crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::Error::EntryDoesNotExist; pub use crate::implementation_from_dafny::software::amazon::cryptography::keystore::internaldafny::types::GetActiveBranchKeyOutput; pub use crate::implementation_from_dafny::software::amazon::cryptography::keystore::internaldafny::types::GetActiveBranchKeyInput; + pub use ::dafny_runtime::int; pub use crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::PutCacheEntryInput; pub use crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::Materials; pub use crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::Error::EntryAlreadyExists; @@ -76386,6 +76405,8 @@ pub mod _AwsKmsHierarchicalKeyring_Compile { pub use crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::OnEncryptOutput; pub use crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::EncryptionMaterials; pub use crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::AlgorithmSuiteInfo; + pub use ::std::marker::Sync; + pub use ::std::marker::Send; pub use crate::implementation_from_dafny::_EdkWrapping_Compile::WrapEdkMaterialOutput; pub use ::dafny_runtime::upcast_object; pub use crate::implementation_from_dafny::_MaterialWrapping_Compile::WrapMaterial; @@ -76430,11 +76451,11 @@ pub mod _AwsKmsHierarchicalKeyring_Compile { pub struct _default {} impl _default { - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(96,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(97,3) pub fn cacheEntryWithinLimits(creationTime: PositiveLong, now: PositiveLong, ttlSeconds: PositiveLong) -> bool { now - creationTime <= ttlSeconds } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(522,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(549,3) pub fn DeriveEncryptionKeyFromBranchKey(branchKey: &Sequence, salt: &Sequence, purpose: &Arc>>, cryptoPrimitives: &Object) -> Arc, Arc>> { let mut output = MaybePlacebo::, Arc>>>::new(); let mut maybeDerivedBranchKey: Arc, Arc>>; @@ -76465,33 +76486,33 @@ pub mod _AwsKmsHierarchicalKeyring_Compile { })); return output.read(); } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(559,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(586,3) pub fn WrappingAad(branchKeyId: &Sequence, branchKeyVersion: &Sequence, aad: &Sequence) -> Sequence { crate::implementation_from_dafny::_Constants_Compile::_default::PROVIDER_ID_HIERARCHY().concat(branchKeyId).concat(branchKeyVersion).concat(aad) } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(1283,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(1309,3) pub fn SerializeEDKCiphertext(encOutput: &Arc) -> Sequence { encOutput.cipherText().concat(encOutput.authTag()) } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(1287,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(1313,3) pub fn E(s: &Sequence) -> Arc { Arc::new(crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::Error::AwsCryptographicMaterialProvidersException { message: s.clone() }) } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(75,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(76,3) pub fn AES_256_ENC_KEY_LENGTH() -> i32 { 32 } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(76,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(77,3) pub fn AES_256_ENC_TAG_LENGTH() -> i32 { 16 } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(77,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(78,3) pub fn AES_256_ENC_IV_LENGTH() -> i32 { 12 } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(78,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(79,3) pub fn AES_256_ENC_ALG() -> Arc { Arc::new(AES_GCM::AES_GCM { keyLength: _default::AES_256_ENC_KEY_LENGTH(), @@ -76499,73 +76520,73 @@ pub mod _AwsKmsHierarchicalKeyring_Compile { ivLength: _default::AES_256_ENC_IV_LENGTH() }) } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(72,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(73,3) pub fn H_WRAP_SALT_LEN() -> PositiveInteger { 16 } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(73,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(74,3) pub fn H_WRAP_NONCE_LEN() -> PositiveInteger { 12 } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(88,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(89,3) pub fn EDK_CIPHERTEXT_BRANCH_KEY_VERSION_INDEX() -> i32 { _default::H_WRAP_SALT_LEN() + _default::H_WRAP_NONCE_LEN() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(87,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(88,3) pub fn EDK_CIPHERTEXT_VERSION_LENGTH() -> i32 { 16 } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(89,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(90,3) pub fn EDK_CIPHERTEXT_VERSION_INDEX() -> i32 { _default::EDK_CIPHERTEXT_BRANCH_KEY_VERSION_INDEX() + _default::EDK_CIPHERTEXT_VERSION_LENGTH() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(91,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(92,3) pub fn EXPECTED_EDK_CIPHERTEXT_OVERHEAD() -> i32 { _default::EDK_CIPHERTEXT_VERSION_INDEX() + _default::AES_256_ENC_TAG_LENGTH() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(74,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(75,3) pub fn DERIVED_BRANCH_KEY_EXPECTED_LENGTH() -> PositiveInteger { 32 } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(58,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(59,3) pub fn BRANCH_KEY_STORE_GSI() -> Sequence { string_utf16_of("Active-Keys") } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(59,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(60,3) pub fn BRANCH_KEY_FIELD() -> Sequence { string_utf16_of("enc") } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(60,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(61,3) pub fn VERSION_FIELD() -> Sequence { string_utf16_of("version") } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(61,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(62,3) pub fn BRANCH_KEY_IDENTIFIER_FIELD() -> Sequence { string_utf16_of("branch-key-id") } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(63,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(64,3) pub fn KEY_CONDITION_EXPRESSION() -> Sequence { string_utf16_of("#status = :status and #branch_key_id = :branch_key_id") } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(64,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(65,3) pub fn EXPRESSION_ATTRIBUTE_NAMES() -> Map, Sequence> { map![(string_utf16_of("#status")) => (string_utf16_of("status")), (string_utf16_of("#branch_key_id")) => (string_utf16_of("branch-key-id"))] } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(68,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(69,3) pub fn EXPRESSION_ATTRIBUTE_VALUE_STATUS_KEY() -> Sequence { string_utf16_of(":status") } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(69,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(70,3) pub fn EXPRESSION_ATTRIBUTE_VALUE_STATUS_VALUE() -> Sequence { string_utf16_of("ACTIVE") } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(70,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(71,3) pub fn EXPRESSION_ATTRIBUTE_VALUE_BRANCH_KEY() -> Sequence { string_utf16_of(":branch_key_id") } } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(108,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(109,3) pub struct AwsKmsHierarchicalKeyring { pub __i_keyStore: Object, pub __i_cryptoPrimitives: Object, @@ -76582,7 +76603,7 @@ pub mod _AwsKmsHierarchicalKeyring_Compile { pub fn _allocate_object() -> Object { allocate_object::() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(140,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(141,5) pub fn _ctor(this: &Object, keyStore: &Object, branchKeyId: &Arc>>, branchKeyIdSupplier: &Arc>>, ttlSeconds: PositiveLong, cmc: &Object, partitionIdBytes: &Sequence, logicalKeyStoreNameBytes: &Sequence, cryptoPrimitives: &Object) -> () { let mut _set___i_keyStore: bool = false; let mut _set___i_cryptoPrimitives: bool = false; @@ -76602,7 +76623,7 @@ pub mod _AwsKmsHierarchicalKeyring_Compile { update_field_uninit_object!(this.clone(), __i_logicalKeyStoreNameBytes, _set___i_logicalKeyStoreNameBytes, logicalKeyStoreNameBytes.clone()); return (); } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(193,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(194,5) pub fn GetBranchKeyId(&self, context: &Map) -> Arc, Arc>> { let mut ret = MaybePlacebo::, Arc>>>::new(); if matches!((&self.branchKeyId().clone()).as_ref(), Some{ .. }) { @@ -76628,14 +76649,14 @@ pub mod _AwsKmsHierarchicalKeyring_Compile { }; return ret.read(); } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(383,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(412,5) pub fn GetActiveCacheId(&self, branchKeyId: &Sequence, branchKeyIdUtf8: &Sequence, cryptoPrimitives: &Object) -> Arc, Arc>> { let mut cacheId = MaybePlacebo::, Arc>>>::new(); - let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(matches!((&crate::implementation_from_dafny::UTF8::_default::Decode(branchKeyIdUtf8).MapFailure::>(&(Arc::new(move |x0: &Sequence| crate::implementation_from_dafny::_AwsKmsUtils_Compile::_default::WrapStringToError(x0)) as Arc _ + Sync + Send>))).as_ref(), Success{ .. }) && ({ - let __pat_let1_0: Sequence = crate::implementation_from_dafny::UTF8::_default::Decode(branchKeyIdUtf8).MapFailure::>(&(Arc::new(move |x0: &Sequence| crate::implementation_from_dafny::_AwsKmsUtils_Compile::_default::WrapStringToError(x0)) as Arc _ + Sync + Send>)).value().clone(); + let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(true && ({ + let __pat_let1_0: Arc, Sequence>> = crate::implementation_from_dafny::UTF8::_default::Decode(branchKeyIdUtf8); { - let branchKeyId: Sequence = __pat_let1_0.clone(); - true && (int!(0) <= branchKeyId.cardinality() && branchKeyId.cardinality() < crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default::UINT32_LIMIT()) + let branchKeyId: Arc, Sequence>> = __pat_let1_0.clone(); + matches!((&branchKeyId).as_ref(), Success{ .. }) && (0 <= truncate!(branchKeyId.value().cardinality(), u64) && truncate!(branchKeyId.value().cardinality(), u64) < truncate!(crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default::UINT32_LIMIT(), u64)) } }), &_default::E(&string_utf16_of("Invalid Branch Key ID Length"))); if valueOrError0.IsFailure() { @@ -76665,7 +76686,7 @@ pub mod _AwsKmsHierarchicalKeyring_Compile { return cacheId.read(); }; let mut cacheDigest: Sequence = valueOrError1.Extract(); - let mut valueOrError2: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(cacheDigest.cardinality() == crate::implementation_from_dafny::_Digest_Compile::_default::Length(&hashAlgorithm), &Arc::new(crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::Error::AwsCryptographicMaterialProvidersException { + let mut valueOrError2: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(truncate!(cacheDigest.cardinality(), u64) == crate::implementation_from_dafny::_Digest_Compile::_default::Length(&hashAlgorithm), &Arc::new(crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::Error::AwsCryptographicMaterialProvidersException { message: string_utf16_of("Digest generated a message not equal to the expected length.") })); if valueOrError2.IsFailure() { @@ -76677,7 +76698,7 @@ pub mod _AwsKmsHierarchicalKeyring_Compile { })); return cacheId.read(); } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(443,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(474,5) pub fn GetActiveHierarchicalMaterials(&self, branchKeyId: &Sequence, cacheId: &Sequence, keyStore: &Object) -> Arc, Arc>> { let mut material = MaybePlacebo::, Arc>>>::new(); let mut getCacheInput: Arc = Arc::new(GetCacheEntryInput::GetCacheEntryInput { @@ -76749,9 +76770,7 @@ pub mod _AwsKmsHierarchicalKeyring_Compile { })); return material.read(); } else { - let mut valueOrError2: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(matches!(getCacheOutput.value().materials().as_ref(), BranchKey{ .. }) && getCacheOutput.value().materials().clone() == Arc::new(Materials::BranchKey { - BranchKey: getCacheOutput.value().materials().BranchKey().clone() - }), &_default::E(&string_utf16_of("Invalid Material Type."))); + let mut valueOrError2: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(matches!(getCacheOutput.value().materials().as_ref(), BranchKey{ .. }), &_default::E(&string_utf16_of("Invalid Material Type."))); if valueOrError2.IsFailure() { material = MaybePlacebo::from(valueOrError2.PropagateFailure::>()); return material.read(); @@ -76763,35 +76782,35 @@ pub mod _AwsKmsHierarchicalKeyring_Compile { }; return material.read(); } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(113,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(114,5) pub fn keyStore(&self) -> Object { self.__i_keyStore.clone() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(115,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(116,5) pub fn cryptoPrimitives(&self) -> Object { self.__i_cryptoPrimitives.clone() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(116,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(117,5) pub fn cache(&self) -> Object { self.__i_cache.clone() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(112,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(113,5) pub fn branchKeyIdSupplier(&self) -> Arc>> { self.__i_branchKeyIdSupplier.clone() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(111,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(112,5) pub fn branchKeyId(&self) -> Arc>> { self.__i_branchKeyId.clone() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(114,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(115,5) pub fn ttlSeconds(&self) -> PositiveLong { self.__i_ttlSeconds.clone() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(117,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(118,5) pub fn partitionIdBytes(&self) -> Sequence { self.__i_partitionIdBytes.clone() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(118,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(119,5) pub fn logicalKeyStoreNameBytes(&self) -> Sequence { self.__i_logicalKeyStoreNameBytes.clone() } @@ -76812,7 +76831,7 @@ pub mod _AwsKmsHierarchicalKeyring_Compile { impl IKeyring for AwsKmsHierarchicalKeyring { - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(216,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(238,5) fn _OnEncrypt_k(&self, input: &Arc) -> Arc, Arc>> { let mut res = MaybePlacebo::, Arc>>>::new(); let mut materials: Arc = input.materials().clone(); @@ -76921,7 +76940,7 @@ pub mod _AwsKmsHierarchicalKeyring_Compile { }; return res.read(); } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(313,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(346,5) fn _OnDecrypt_k(&self, input: &Arc) -> Arc, Arc>> { let mut res = MaybePlacebo::, Arc>>>::new(); let mut materials: Arc = input.materials().clone(); @@ -76951,7 +76970,7 @@ pub mod _AwsKmsHierarchicalKeyring_Compile { return res.read(); }; let mut edksToAttempt: Sequence> = valueOrError2.Extract(); - if int!(0) == edksToAttempt.cardinality() { + if 0 == truncate!(edksToAttempt.cardinality(), u64) { let mut valueOrError3: Arc, Arc>> = crate::implementation_from_dafny::_ErrorMessages_Compile::_default::IncorrectDataKeys(input.encryptedDataKeys(), input.materials().algorithmSuite(), &string_utf16_of("")); if valueOrError3.IsFailure() { res = MaybePlacebo::from(valueOrError3.PropagateFailure::>()); @@ -76999,7 +77018,7 @@ pub mod _AwsKmsHierarchicalKeyring_Compile { UpcastObjectFn!(dyn IKeyring); } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(580,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(607,3) pub struct OnDecryptHierarchyEncryptedDataKeyFilter { pub __i_branchKeyId: Sequence } @@ -77009,13 +77028,13 @@ pub mod _AwsKmsHierarchicalKeyring_Compile { pub fn _allocate_object() -> Object { allocate_object::() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(585,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(612,5) pub fn _ctor(this: &Object, branchKeyId: &Sequence) -> () { let mut _set___i_branchKeyId: bool = false; update_field_uninit_object!(this.clone(), __i_branchKeyId, _set___i_branchKeyId, branchKeyId.clone()); return (); } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(583,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(610,5) pub fn branchKeyId(&self) -> Sequence { self.__i_branchKeyId.clone() } @@ -77036,7 +77055,7 @@ pub mod _AwsKmsHierarchicalKeyring_Compile { impl DeterministicAction, Arc>>> for OnDecryptHierarchyEncryptedDataKeyFilter { - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(603,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(632,5) fn Invoke(&self, edk: &Arc) -> Arc>> { let mut res = MaybePlacebo::>>>::new(); let mut providerInfo: Sequence = edk.keyProviderInfo().clone(); @@ -77047,13 +77066,11 @@ pub mod _AwsKmsHierarchicalKeyring_Compile { })); return res.read(); }; - if !crate::implementation_from_dafny::UTF8::_default::ValidUTF8Seq(&providerInfo) { - res = MaybePlacebo::from(Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::>::Failure { - error: _default::E(&string_utf16_of("Invalid encoding, provider info is not UTF8.")) - })); - return res.read(); - }; - let mut valueOrError0: Arc, Arc>> = crate::implementation_from_dafny::UTF8::_default::Decode(&providerInfo).MapFailure::>(&(Arc::new(move |x0: &Sequence| crate::implementation_from_dafny::_AwsKmsUtils_Compile::_default::WrapStringToError(x0)) as Arc _ + Sync + Send>)); + let mut valueOrError0: Arc, Arc>> = crate::implementation_from_dafny::UTF8::_default::Decode(&providerInfo).MapFailure::>(&({ + Arc::new(move |e: &Sequence| -> Arc{ + _default::E(&string_utf16_of("Invalid encoding, provider info is not UTF8.")) + }) + })); if valueOrError0.IsFailure() { res = MaybePlacebo::from(valueOrError0.PropagateFailure::()); return res.read(); @@ -77071,7 +77088,7 @@ pub mod _AwsKmsHierarchicalKeyring_Compile { UpcastObjectFn!(dyn DeterministicAction, Arc>>>); } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(633,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(660,3) pub struct DecryptSingleEncryptedDataKey { pub __i_materials: DecryptionMaterialsPendingPlaintextDataKey, pub __i_keyStore: Object, @@ -77088,7 +77105,7 @@ pub mod _AwsKmsHierarchicalKeyring_Compile { pub fn _allocate_object() -> Object { allocate_object::() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(648,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(675,5) pub fn _ctor(this: &Object, materials: &DecryptionMaterialsPendingPlaintextDataKey, keyStore: &Object, cryptoPrimitives: &Object, branchKeyId: &Sequence, ttlSeconds: PositiveLong, cache: &Object, partitionIdBytes: &Sequence, logicalKeyStoreNameBytes: &Sequence) -> () { let mut _set___i_materials: bool = false; let mut _set___i_keyStore: bool = false; @@ -77108,14 +77125,14 @@ pub mod _AwsKmsHierarchicalKeyring_Compile { update_field_uninit_object!(this.clone(), __i_logicalKeyStoreNameBytes, _set___i_logicalKeyStoreNameBytes, logicalKeyStoreNameBytes.clone()); return (); } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(767,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(798,5) pub fn GetVersionCacheId(&self, branchKeyIdUtf8: &Sequence, branchKeyVersion: &Sequence, cryptoPrimitives: &Object) -> Arc, Arc>> { let mut cacheId = MaybePlacebo::, Arc>>>::new(); - let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(matches!((&crate::implementation_from_dafny::UTF8::_default::Decode(branchKeyIdUtf8).MapFailure::>(&(Arc::new(move |x0: &Sequence| crate::implementation_from_dafny::_AwsKmsUtils_Compile::_default::WrapStringToError(x0)) as Arc _ + Sync + Send>))).as_ref(), Success{ .. }) && ({ - let __pat_let2_0: Sequence = crate::implementation_from_dafny::UTF8::_default::Decode(branchKeyIdUtf8).MapFailure::>(&(Arc::new(move |x0: &Sequence| crate::implementation_from_dafny::_AwsKmsUtils_Compile::_default::WrapStringToError(x0)) as Arc _ + Sync + Send>)).value().clone(); + let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(true && ({ + let __pat_let2_0: Arc, Sequence>> = crate::implementation_from_dafny::UTF8::_default::Decode(branchKeyIdUtf8); { - let branchKeyId: Sequence = __pat_let2_0.clone(); - true && (int!(0) <= branchKeyId.cardinality() && branchKeyId.cardinality() < crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default::UINT32_LIMIT()) + let branchKeyId: Arc, Sequence>> = __pat_let2_0.clone(); + matches!((&branchKeyId).as_ref(), Success{ .. }) && (0 <= truncate!(branchKeyId.value().cardinality(), u64) && truncate!(branchKeyId.value().cardinality(), u64) < truncate!(crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default::UINT32_LIMIT(), u64)) } }), &_default::E(&string_utf16_of("Invalid Branch Key ID Length"))); if valueOrError0.IsFailure() { @@ -77130,7 +77147,18 @@ pub mod _AwsKmsHierarchicalKeyring_Compile { cacheId = MaybePlacebo::from(valueOrError1.PropagateFailure::>()); return cacheId.read(); }; - let mut versionBytes: ValidUTF8Bytes = crate::implementation_from_dafny::UTF8::_default::EncodeAscii(branchKeyVersion); + let mut valueOrError2: Arc>> = crate::implementation_from_dafny::UTF8::_default::Encode(branchKeyVersion).MapFailure::>(&({ + Arc::new(move |e: &Sequence| -> Arc{ + Arc::new(crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::Error::AwsCryptographicMaterialProvidersException { + message: e.clone() + }) + }) + })); + if valueOrError2.IsFailure() { + cacheId = MaybePlacebo::from(valueOrError2.PropagateFailure::>()); + return cacheId.read(); + }; + let mut versionBytes: ValidUTF8Bytes = valueOrError2.Extract(); let mut suffix: Sequence = self.logicalKeyStoreNameBytes().clone().concat(&crate::implementation_from_dafny::_CacheConstants_Compile::_default::NULL_BYTE()).concat(branchKeyIdUtf8).concat(&crate::implementation_from_dafny::_CacheConstants_Compile::_default::NULL_BYTE()).concat(&versionBytes); let mut identifier: Sequence = resourceId.concat(&crate::implementation_from_dafny::_CacheConstants_Compile::_default::NULL_BYTE()).concat(&scopeId).concat(&crate::implementation_from_dafny::_CacheConstants_Compile::_default::NULL_BYTE()).concat(&self.partitionIdBytes().clone()).concat(&crate::implementation_from_dafny::_CacheConstants_Compile::_default::NULL_BYTE()).concat(&suffix); let mut identifierDigestInput: Arc = Arc::new(DigestInput::DigestInput { @@ -77140,31 +77168,24 @@ pub mod _AwsKmsHierarchicalKeyring_Compile { let mut maybeCacheDigest: Arc, Arc>>; let mut _out0: Arc, Arc>> = crate::implementation_from_dafny::_Digest_Compile::_default::Digest(&identifierDigestInput); maybeCacheDigest = _out0.clone(); - let mut valueOrError2: Arc, Arc>> = maybeCacheDigest.MapFailure::>(&({ + let mut valueOrError3: Arc, Arc>> = maybeCacheDigest.MapFailure::>(&({ Arc::new(move |e: &Arc| -> Arc{ Arc::new(crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::Error::AwsCryptographyPrimitives { AwsCryptographyPrimitives: e.clone() }) }) })); - if valueOrError2.IsFailure() { - cacheId = MaybePlacebo::from(valueOrError2.PropagateFailure::>()); - return cacheId.read(); - }; - let mut cacheDigest: Sequence = valueOrError2.Extract(); - let mut valueOrError3: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(cacheDigest.cardinality() == crate::implementation_from_dafny::_Digest_Compile::_default::Length(&hashAlgorithm), &Arc::new(crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::Error::AwsCryptographicMaterialProvidersException { - message: string_utf16_of("Digest generated a message not equal to the expected length.") - })); if valueOrError3.IsFailure() { cacheId = MaybePlacebo::from(valueOrError3.PropagateFailure::>()); return cacheId.read(); }; + let mut cacheDigest: Sequence = valueOrError3.Extract(); cacheId = MaybePlacebo::from(Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::, Arc>::Success { value: cacheDigest.clone() })); return cacheId.read(); } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(832,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(860,5) pub fn GetHierarchicalMaterialsVersion(&self, branchKeyId: &Sequence, branchKeyIdUtf8: &Sequence, version: &Sequence, cacheId: &Sequence) -> Arc, Arc>> { let mut material = MaybePlacebo::, Arc>>>::new(); let mut getCacheInput: Arc = Arc::new(GetCacheEntryInput::GetCacheEntryInput { @@ -77237,9 +77258,7 @@ pub mod _AwsKmsHierarchicalKeyring_Compile { })); return material.read(); } else { - let mut valueOrError2: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(matches!(getCacheOutput.value().materials().as_ref(), BranchKey{ .. }) && getCacheOutput.value().materials().clone() == Arc::new(Materials::BranchKey { - BranchKey: getCacheOutput.value().materials().BranchKey().clone() - }), &_default::E(&string_utf16_of("Invalid Material Type."))); + let mut valueOrError2: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(matches!(getCacheOutput.value().materials().as_ref(), BranchKey{ .. }), &_default::E(&string_utf16_of("Invalid Material Type."))); if valueOrError2.IsFailure() { material = MaybePlacebo::from(valueOrError2.PropagateFailure::>()); return material.read(); @@ -77251,35 +77270,35 @@ pub mod _AwsKmsHierarchicalKeyring_Compile { }; return material.read(); } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(639,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(666,5) pub fn materials(&self) -> DecryptionMaterialsPendingPlaintextDataKey { self.__i_materials.clone() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(640,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(667,5) pub fn keyStore(&self) -> Object { self.__i_keyStore.clone() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(641,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(668,5) pub fn cryptoPrimitives(&self) -> Object { self.__i_cryptoPrimitives.clone() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(642,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(669,5) pub fn branchKeyId(&self) -> Sequence { self.__i_branchKeyId.clone() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(643,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(670,5) pub fn ttlSeconds(&self) -> PositiveLong { self.__i_ttlSeconds.clone() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(644,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(671,5) pub fn cache(&self) -> Object { self.__i_cache.clone() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(645,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(672,5) pub fn partitionIdBytes(&self) -> Sequence { self.__i_partitionIdBytes.clone() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(646,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(673,5) pub fn logicalKeyStoreNameBytes(&self) -> Sequence { self.__i_logicalKeyStoreNameBytes.clone() } @@ -77300,85 +77319,78 @@ pub mod _AwsKmsHierarchicalKeyring_Compile { impl Action, Arc>>> for DecryptSingleEncryptedDataKey { - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(705,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(736,5) fn Invoke(&self, edk: &Arc) -> Arc>> { let mut res = MaybePlacebo::>>>::new(); - let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(crate::implementation_from_dafny::UTF8::_default::ValidUTF8Seq(edk.keyProviderInfo()), &Arc::new(crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::Error::AwsCryptographicMaterialProvidersException { - message: string_utf16_of("Received invalid EDK provider info for Hierarchical Keyring") - })); - if valueOrError0.IsFailure() { - res = MaybePlacebo::from(valueOrError0.PropagateFailure::()); - return res.read(); - }; let mut suite: Arc = self.materials().clone().algorithmSuite().clone(); let mut keyProviderId: ValidUTF8Bytes = edk.keyProviderId().clone(); let mut branchKeyIdUtf8: Sequence = edk.keyProviderInfo().clone(); let mut ciphertext: Sequence = edk.ciphertext().clone(); - let mut valueOrError1: Arc, Arc>> = crate::implementation_from_dafny::_EdkWrapping_Compile::_default::GetProviderWrappedMaterial(&ciphertext, &suite); - if valueOrError1.IsFailure() { - res = MaybePlacebo::from(valueOrError1.PropagateFailure::()); + let mut valueOrError0: Arc, Arc>> = crate::implementation_from_dafny::_EdkWrapping_Compile::_default::GetProviderWrappedMaterial(&ciphertext, &suite); + if valueOrError0.IsFailure() { + res = MaybePlacebo::from(valueOrError0.PropagateFailure::()); return res.read(); }; - let mut providerWrappedMaterial: Sequence = valueOrError1.Extract(); - let mut valueOrError2: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(providerWrappedMaterial.cardinality() >= int!(_default::EDK_CIPHERTEXT_VERSION_INDEX()), &Arc::new(crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::Error::AwsCryptographicMaterialProvidersException { + let mut providerWrappedMaterial: Sequence = valueOrError0.Extract(); + let mut valueOrError1: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(truncate!(providerWrappedMaterial.cardinality(), u64) >= _default::EDK_CIPHERTEXT_VERSION_INDEX() as u64, &Arc::new(crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::Error::AwsCryptographicMaterialProvidersException { message: string_utf16_of("Received EDK Ciphertext of incorrect length.") })); + if valueOrError1.IsFailure() { + res = MaybePlacebo::from(valueOrError1.PropagateFailure::()); + return res.read(); + }; + let mut branchKeyVersionUuid: Sequence = providerWrappedMaterial.slice(&int!((&_default::EDK_CIPHERTEXT_BRANCH_KEY_VERSION_INDEX()).clone()), &int!((&_default::EDK_CIPHERTEXT_VERSION_INDEX()).clone())); + let mut valueOrError2: Arc, Arc>> = crate::implementation_from_dafny::UUID::_default::FromByteArray(&branchKeyVersionUuid).MapFailure::>(&(Arc::new(move |x0: &Sequence| crate::implementation_from_dafny::_AwsKmsUtils_Compile::_default::WrapStringToError(x0)) as Arc _ + Sync + Send>)); if valueOrError2.IsFailure() { res = MaybePlacebo::from(valueOrError2.PropagateFailure::()); return res.read(); }; - let mut branchKeyVersionUuid: Sequence = providerWrappedMaterial.slice(&int!((&_default::EDK_CIPHERTEXT_BRANCH_KEY_VERSION_INDEX()).clone()), &int!((&_default::EDK_CIPHERTEXT_VERSION_INDEX()).clone())); - let mut valueOrError3: Arc, Arc>> = crate::implementation_from_dafny::UUID::_default::FromByteArray(&branchKeyVersionUuid).MapFailure::>(&(Arc::new(move |x0: &Sequence| crate::implementation_from_dafny::_AwsKmsUtils_Compile::_default::WrapStringToError(x0)) as Arc _ + Sync + Send>)); + let mut version: Sequence = valueOrError2.Extract(); + let mut valueOrError3: Arc, Arc>>; + let mut _out0: Arc, Arc>> = self.GetVersionCacheId(&branchKeyIdUtf8, &version, &self.cryptoPrimitives().clone()); + valueOrError3 = _out0.clone(); if valueOrError3.IsFailure() { res = MaybePlacebo::from(valueOrError3.PropagateFailure::()); return res.read(); }; - let mut version: Sequence = valueOrError3.Extract(); - let mut valueOrError4: Arc, Arc>>; - let mut _out0: Arc, Arc>> = self.GetVersionCacheId(&branchKeyIdUtf8, &version, &self.cryptoPrimitives().clone()); - valueOrError4 = _out0.clone(); + let mut cacheId: Sequence = valueOrError3.Extract(); + let mut valueOrError4: Arc, Arc>>; + let mut _out1: Arc, Arc>> = self.GetHierarchicalMaterialsVersion(&self.branchKeyId().clone(), &branchKeyIdUtf8, &version, &cacheId); + valueOrError4 = _out1.clone(); if valueOrError4.IsFailure() { res = MaybePlacebo::from(valueOrError4.PropagateFailure::()); return res.read(); }; - let mut cacheId: Sequence = valueOrError4.Extract(); - let mut valueOrError5: Arc, Arc>>; - let mut _out1: Arc, Arc>> = self.GetHierarchicalMaterialsVersion(&self.branchKeyId().clone(), &branchKeyIdUtf8, &version, &cacheId); - valueOrError5 = _out1.clone(); + let mut hierarchicalMaterials: Arc = valueOrError4.Extract(); + let mut branchKey: Sequence = hierarchicalMaterials.branchKey().clone(); + let mut branchKeyVersion: ValidUTF8Bytes = hierarchicalMaterials.branchKeyVersion().clone(); + let mut valueOrError5: Arc, Arc>> = crate::implementation_from_dafny::UTF8::_default::Decode(&branchKeyVersion).MapFailure::>(&(Arc::new(move |x0: &Sequence| crate::implementation_from_dafny::_AwsKmsUtils_Compile::_default::WrapStringToError(x0)) as Arc _ + Sync + Send>)); if valueOrError5.IsFailure() { res = MaybePlacebo::from(valueOrError5.PropagateFailure::()); return res.read(); }; - let mut hierarchicalMaterials: Arc = valueOrError5.Extract(); - let mut branchKey: Sequence = hierarchicalMaterials.branchKey().clone(); - let mut branchKeyVersion: ValidUTF8Bytes = hierarchicalMaterials.branchKeyVersion().clone(); - let mut valueOrError6: Arc, Arc>> = crate::implementation_from_dafny::UTF8::_default::Decode(&branchKeyVersion).MapFailure::>(&(Arc::new(move |x0: &Sequence| crate::implementation_from_dafny::_AwsKmsUtils_Compile::_default::WrapStringToError(x0)) as Arc _ + Sync + Send>)); + let mut branchKeyVersionAsString: Sequence = valueOrError5.Extract(); + let mut valueOrError6: Arc, Arc>> = crate::implementation_from_dafny::UUID::_default::ToByteArray(&branchKeyVersionAsString).MapFailure::>(&(Arc::new(move |x0: &Sequence| crate::implementation_from_dafny::_AwsKmsUtils_Compile::_default::WrapStringToError(x0)) as Arc _ + Sync + Send>)); if valueOrError6.IsFailure() { res = MaybePlacebo::from(valueOrError6.PropagateFailure::()); return res.read(); }; - let mut branchKeyVersionAsString: Sequence = valueOrError6.Extract(); - let mut valueOrError7: Arc, Arc>> = crate::implementation_from_dafny::UUID::_default::ToByteArray(&branchKeyVersionAsString).MapFailure::>(&(Arc::new(move |x0: &Sequence| crate::implementation_from_dafny::_AwsKmsUtils_Compile::_default::WrapStringToError(x0)) as Arc _ + Sync + Send>)); - if valueOrError7.IsFailure() { - res = MaybePlacebo::from(valueOrError7.PropagateFailure::()); - return res.read(); - }; - let mut branchKeyVersionAsBytes: Sequence = valueOrError7.Extract(); + let mut branchKeyVersionAsBytes: Sequence = valueOrError6.Extract(); let mut maybeCrypto: Arc, Arc>>; let mut _out2: Arc, Arc>> = crate::implementation_from_dafny::software::amazon::cryptography::primitives::internaldafny::_default::AtomicPrimitives(&crate::implementation_from_dafny::software::amazon::cryptography::primitives::internaldafny::_default::DefaultCryptoConfig()); maybeCrypto = _out2.clone(); - let mut valueOrError8: Arc, Arc>> = maybeCrypto.MapFailure::>(&({ + let mut valueOrError7: Arc, Arc>> = maybeCrypto.MapFailure::>(&({ Arc::new(move |e: &Arc| -> Arc{ Arc::new(crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::Error::AwsCryptographyPrimitives { AwsCryptographyPrimitives: e.clone() }) }) })); - if valueOrError8.IsFailure() { - res = MaybePlacebo::from(valueOrError8.PropagateFailure::()); + if valueOrError7.IsFailure() { + res = MaybePlacebo::from(valueOrError7.PropagateFailure::()); return res.read(); }; - let mut cryptoPrimitivesX: Object = upcast_object::()(valueOrError8.Extract()); + let mut cryptoPrimitivesX: Object = upcast_object::()(valueOrError7.Extract()); let mut cryptoPrimitives: Object = cast_object!(cryptoPrimitivesX.clone(), AtomicPrimitivesClient); let mut kmsHierarchyUnwrap: Object; let mut _nw0: Object = KmsHierarchyUnwrapKeyMaterial::_allocate_object(); @@ -77387,18 +77399,18 @@ pub mod _AwsKmsHierarchicalKeyring_Compile { let mut unwrapOutputRes: Arc>>, Arc>>; let mut _out3: Arc>>, Arc>> = crate::implementation_from_dafny::_EdkWrapping_Compile::_default::UnwrapEdkMaterial::>(edk.ciphertext(), &self.materials().clone(), &upcast_object::>>()(kmsHierarchyUnwrap.clone())); unwrapOutputRes = _out3.clone(); - let mut valueOrError9: Arc>>, Arc>> = unwrapOutputRes.clone(); - if valueOrError9.IsFailure() { - res = MaybePlacebo::from(valueOrError9.PropagateFailure::()); + let mut valueOrError8: Arc>>, Arc>> = unwrapOutputRes.clone(); + if valueOrError8.IsFailure() { + res = MaybePlacebo::from(valueOrError8.PropagateFailure::()); return res.read(); }; - let mut unwrapOutput: Arc>> = valueOrError9.Extract(); - let mut valueOrError10: Arc, Arc>> = crate::implementation_from_dafny::_Materials_Compile::_default::DecryptionMaterialsAddDataKey(&self.materials().clone(), unwrapOutput.plaintextDataKey(), unwrapOutput.symmetricSigningKey()); - if valueOrError10.IsFailure() { - res = MaybePlacebo::from(valueOrError10.PropagateFailure::()); + let mut unwrapOutput: Arc>> = valueOrError8.Extract(); + let mut valueOrError9: Arc, Arc>> = crate::implementation_from_dafny::_Materials_Compile::_default::DecryptionMaterialsAddDataKey(&self.materials().clone(), unwrapOutput.plaintextDataKey(), unwrapOutput.symmetricSigningKey()); + if valueOrError9.IsFailure() { + res = MaybePlacebo::from(valueOrError9.PropagateFailure::()); return res.read(); }; - let mut result: Arc = valueOrError10.Extract(); + let mut result: Arc = valueOrError9.Extract(); res = MaybePlacebo::from(Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::, Arc>::Success { value: result.clone() })); @@ -77411,7 +77423,7 @@ pub mod _AwsKmsHierarchicalKeyring_Compile { UpcastObjectFn!(dyn Action, Arc>>>); } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(911,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(935,3) #[derive(PartialEq, Clone)] pub enum HierarchyUnwrapInfo { HierarchyUnwrapInfo {} @@ -77473,7 +77485,7 @@ pub mod _AwsKmsHierarchicalKeyring_Compile { } } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(912,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(936,3) #[derive(PartialEq, Clone)] pub enum HierarchyWrapInfo { HierarchyWrapInfo {} @@ -77535,7 +77547,7 @@ pub mod _AwsKmsHierarchicalKeyring_Compile { } } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(914,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(938,3) pub struct KmsHierarchyUnwrapKeyMaterial { pub __i_crypto: Object, pub __i_branchKeyIdUtf8: ValidUTF8Bytes, @@ -77548,7 +77560,7 @@ pub mod _AwsKmsHierarchicalKeyring_Compile { pub fn _allocate_object() -> Object { allocate_object::() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(922,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(946,5) pub fn _ctor(this: &Object, branchKey: &Sequence, branchKeyIdUtf8: &ValidUTF8Bytes, branchKeyVersionAsBytes: &Sequence, crypto: &Object) -> () { let mut _set___i_crypto: bool = false; let mut _set___i_branchKeyIdUtf8: bool = false; @@ -77560,19 +77572,19 @@ pub mod _AwsKmsHierarchicalKeyring_Compile { update_field_uninit_object!(this.clone(), __i_crypto, _set___i_crypto, crypto.clone()); return (); } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(920,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(944,5) pub fn crypto(&self) -> Object { self.__i_crypto.clone() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(918,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(942,5) pub fn branchKeyIdUtf8(&self) -> ValidUTF8Bytes { self.__i_branchKeyIdUtf8.clone() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(919,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(943,5) pub fn branchKeyVersionAsBytes(&self) -> Sequence { self.__i_branchKeyVersionAsBytes.clone() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(917,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(941,5) pub fn branchKey(&self) -> Sequence { self.__i_branchKey.clone() } @@ -77601,26 +77613,26 @@ pub mod _AwsKmsHierarchicalKeyring_Compile { impl Action, Arc>>, Arc>>> for KmsHierarchyUnwrapKeyMaterial { - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(988,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(1012,5) fn Invoke(&self, input: &Arc) -> Arc>>, Arc>> { let mut res = MaybePlacebo::>>, Arc>>>::new(); let mut suite: Arc = input.algorithmSuite().clone(); let mut wrappedMaterial: Sequence = input.wrappedMaterial().clone(); let mut aad: Map = input.encryptionContext().clone(); let mut KeyLength: i32 = crate::implementation_from_dafny::_AlgorithmSuites_Compile::_default::GetEncryptKeyLength(&suite); - let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(wrappedMaterial.cardinality() == int!(_default::EXPECTED_EDK_CIPHERTEXT_OVERHEAD()) + int!(KeyLength), &Arc::new(crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::Error::AwsCryptographicMaterialProvidersException { + let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(truncate!(wrappedMaterial.cardinality(), u64) == _default::EXPECTED_EDK_CIPHERTEXT_OVERHEAD() as u64 + KeyLength as u64, &Arc::new(crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::Error::AwsCryptographicMaterialProvidersException { message: string_utf16_of("Received EDK Ciphertext of incorrect length2.") })); if valueOrError0.IsFailure() { res = MaybePlacebo::from(valueOrError0.PropagateFailure::>>>()); return res.read(); }; - let mut salt: Sequence = wrappedMaterial.slice(&int!(0), &int!((&_default::H_WRAP_SALT_LEN()).clone())); + let mut salt: Sequence = wrappedMaterial.take(&int!((&_default::H_WRAP_SALT_LEN()).clone())); let mut iv: Sequence = wrappedMaterial.slice(&int!((&_default::H_WRAP_SALT_LEN()).clone()), &int!((&_default::EDK_CIPHERTEXT_BRANCH_KEY_VERSION_INDEX()).clone())); let mut branchKeyVersionUuid: Sequence = wrappedMaterial.slice(&int!((&_default::EDK_CIPHERTEXT_BRANCH_KEY_VERSION_INDEX()).clone()), &int!((&_default::EDK_CIPHERTEXT_VERSION_INDEX()).clone())); let mut wrappedKey: Sequence = wrappedMaterial.slice(&int!((&_default::EDK_CIPHERTEXT_VERSION_INDEX()).clone()), &int!((&(_default::EDK_CIPHERTEXT_VERSION_INDEX() + KeyLength)).clone())); let mut authTag: Sequence = wrappedMaterial.drop(&int!((&(_default::EDK_CIPHERTEXT_VERSION_INDEX() + KeyLength)).clone())); - let mut valueOrError1: Arc, Arc>> = crate::implementation_from_dafny::_CanonicalEncryptionContext_Compile::_default::EncryptionContextToAAD(input.encryptionContext()); + let mut valueOrError1: Arc, Arc>> = input.serializedEC().clone(); if valueOrError1.IsFailure() { res = MaybePlacebo::from(valueOrError1.PropagateFailure::>>>()); return res.read(); @@ -77659,11 +77671,6 @@ pub mod _AwsKmsHierarchicalKeyring_Compile { return res.read(); }; let mut unwrappedPdk: Sequence = valueOrError3.Extract(); - let mut valueOrError4: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(unwrappedPdk.cardinality() == int!(crate::implementation_from_dafny::_AlgorithmSuites_Compile::_default::GetEncryptKeyLength(input.algorithmSuite())), &_default::E(&string_utf16_of("Invalid Key Length"))); - if valueOrError4.IsFailure() { - res = MaybePlacebo::from(valueOrError4.PropagateFailure::>>>()); - return res.read(); - }; let mut output: Arc>> = Arc::new(UnwrapOutput::>::UnwrapOutput { unwrappedMaterial: unwrappedPdk.clone(), unwrapInfo: Arc::new(HierarchyUnwrapInfo::HierarchyUnwrapInfo {}) @@ -77680,7 +77687,7 @@ pub mod _AwsKmsHierarchicalKeyring_Compile { UpcastObjectFn!(dyn Action, Arc>>, Arc>>>); } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(1053,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(1076,3) pub struct KmsHierarchyGenerateAndWrapKeyMaterial { pub __i_branchKey: Sequence, pub __i_branchKeyIdUtf8: ValidUTF8Bytes, @@ -77693,7 +77700,7 @@ pub mod _AwsKmsHierarchicalKeyring_Compile { pub fn _allocate_object() -> Object { allocate_object::() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(1061,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(1084,5) pub fn _ctor(this: &Object, branchKey: &Sequence, branchKeyIdUtf8: &ValidUTF8Bytes, branchKeyVersionAsBytes: &Sequence, crypto: &Object) -> () { let mut _set___i_branchKey: bool = false; let mut _set___i_branchKeyIdUtf8: bool = false; @@ -77705,19 +77712,19 @@ pub mod _AwsKmsHierarchicalKeyring_Compile { update_field_uninit_object!(this.clone(), __i_crypto, _set___i_crypto, crypto.clone()); return (); } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(1056,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(1079,5) pub fn branchKey(&self) -> Sequence { self.__i_branchKey.clone() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(1057,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(1080,5) pub fn branchKeyIdUtf8(&self) -> ValidUTF8Bytes { self.__i_branchKeyIdUtf8.clone() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(1058,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(1081,5) pub fn branchKeyVersionAsBytes(&self) -> Sequence { self.__i_branchKeyVersionAsBytes.clone() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(1059,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(1082,5) pub fn crypto(&self) -> Object { self.__i_crypto.clone() } @@ -77746,7 +77753,7 @@ pub mod _AwsKmsHierarchicalKeyring_Compile { impl Action, Arc>>, Arc>>> for KmsHierarchyGenerateAndWrapKeyMaterial { - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(1103,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(1126,5) fn Invoke(&self, input: &Arc) -> Arc>>, Arc>> { let mut res = MaybePlacebo::>>, Arc>>>::new(); let mut suite: Arc = input.algorithmSuite().clone(); @@ -77775,7 +77782,8 @@ pub mod _AwsKmsHierarchicalKeyring_Compile { let mut _out1: Arc>>, Arc>> = Action::, Arc>>, Arc>>>::Invoke(rd!(wrap.clone()), &Arc::new(WrapInput::WrapInput { plaintextMaterial: pdk.clone(), algorithmSuite: input.algorithmSuite().clone(), - encryptionContext: input.encryptionContext().clone() + encryptionContext: input.encryptionContext().clone(), + serializedEC: input.serializedEC().clone() })); valueOrError1 = _out1.clone(); if valueOrError1.IsFailure() { @@ -77800,7 +77808,7 @@ pub mod _AwsKmsHierarchicalKeyring_Compile { UpcastObjectFn!(dyn Action, Arc>>, Arc>>>); } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(1143,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(1168,3) pub struct KmsHierarchyWrapKeyMaterial { pub __i_branchKey: Sequence, pub __i_branchKeyIdUtf8: ValidUTF8Bytes, @@ -77813,7 +77821,7 @@ pub mod _AwsKmsHierarchicalKeyring_Compile { pub fn _allocate_object() -> Object { allocate_object::() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(1151,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(1176,5) pub fn _ctor(this: &Object, branchKey: &Sequence, branchKeyIdUtf8: &ValidUTF8Bytes, branchKeyVersionAsBytes: &Sequence, crypto: &Object) -> () { let mut _set___i_branchKey: bool = false; let mut _set___i_branchKeyIdUtf8: bool = false; @@ -77825,19 +77833,19 @@ pub mod _AwsKmsHierarchicalKeyring_Compile { update_field_uninit_object!(this.clone(), __i_crypto, _set___i_crypto, crypto.clone()); return (); } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(1146,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(1171,5) pub fn branchKey(&self) -> Sequence { self.__i_branchKey.clone() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(1147,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(1172,5) pub fn branchKeyIdUtf8(&self) -> ValidUTF8Bytes { self.__i_branchKeyIdUtf8.clone() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(1148,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(1173,5) pub fn branchKeyVersionAsBytes(&self) -> Sequence { self.__i_branchKeyVersionAsBytes.clone() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(1149,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(1174,5) pub fn crypto(&self) -> Object { self.__i_crypto.clone() } @@ -77866,7 +77874,7 @@ pub mod _AwsKmsHierarchicalKeyring_Compile { impl Action, Arc>>, Arc>>> for KmsHierarchyWrapKeyMaterial { - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(1207,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsHierarchicalKeyring.dfy(1232,5) fn Invoke(&self, input: &Arc) -> Arc>>, Arc>> { let mut res = MaybePlacebo::>>, Arc>>>::new(); let mut suite: Arc = input.algorithmSuite().clone(); @@ -77887,9 +77895,9 @@ pub mod _AwsKmsHierarchicalKeyring_Compile { return res.read(); }; let mut saltAndNonce: Sequence = valueOrError0.Extract(); - let mut salt: Sequence = saltAndNonce.slice(&int!(0), &int!((&_default::H_WRAP_SALT_LEN()).clone())); + let mut salt: Sequence = saltAndNonce.take(&int!((&_default::H_WRAP_SALT_LEN()).clone())); let mut nonce: Sequence = saltAndNonce.drop(&int!((&_default::H_WRAP_SALT_LEN()).clone())); - let mut valueOrError1: Arc, Arc>> = crate::implementation_from_dafny::_CanonicalEncryptionContext_Compile::_default::EncryptionContextToAAD(input.encryptionContext()); + let mut valueOrError1: Arc, Arc>> = input.serializedEC().clone(); if valueOrError1.IsFailure() { res = MaybePlacebo::from(valueOrError1.PropagateFailure::>>>()); return res.read(); @@ -77976,6 +77984,7 @@ pub mod _AwsKmsKeyring_Compile { pub use ::std::marker::Sync; pub use ::std::marker::Send; pub use crate::implementation_from_dafny::_Wrappers_Compile::Outcome; + pub use ::dafny_runtime::truncate; pub use ::dafny_runtime::string_utf16_of; pub use crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::EncryptedDataKey; pub use crate::implementation_from_dafny::_EdkWrapping_Compile::WrapEdkMaterialOutput::GenerateAndWrapEdkMaterialOutput; @@ -77984,7 +77993,6 @@ pub mod _AwsKmsKeyring_Compile { pub use crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::OnDecryptOutput; pub use crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::DecryptionMaterials; pub use crate::implementation_from_dafny::_Actions_Compile::DeterministicActionWithResult; - pub use ::dafny_runtime::int; pub use crate::implementation_from_dafny::_Actions_Compile::ActionWithResult; pub use crate::implementation_from_dafny::_Materials_Compile::SealedDecryptionMaterials; pub use crate::implementation_from_dafny::_Actions_Compile::DeterministicAction; @@ -78021,7 +78029,7 @@ pub mod _AwsKmsKeyring_Compile { pub use crate::implementation_from_dafny::software::amazon::cryptography::services::kms::internaldafny::types::EncryptRequest; pub use crate::implementation_from_dafny::software::amazon::cryptography::services::kms::internaldafny::types::EncryptResponse; - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsKeyring.dfy(40,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsKeyring.dfy(41,3) pub struct AwsKmsKeyring { pub __i_client: Object, pub __i_awsKmsKey: Sequence, @@ -78039,7 +78047,7 @@ pub mod _AwsKmsKeyring_Compile { /// # The AWS KMS /// # key identifier MUST be [a valid identifier](aws-kms-key-arn.md#a- /// # valid-aws-kms-identifier). - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsKeyring.dfy(57,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsKeyring.dfy(58,5) pub fn _ctor(this: &Object, client: &Object, awsKmsKey: &Sequence, grantTokens: &GrantTokenList) -> () { let mut _set___i_client: bool = false; let mut _set___i_awsKmsKey: bool = false; @@ -78052,19 +78060,19 @@ pub mod _AwsKmsKeyring_Compile { update_field_uninit_object!(this.clone(), __i_grantTokens, _set___i_grantTokens, grantTokens.clone()); return (); } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsKeyring.dfy(43,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsKeyring.dfy(44,5) pub fn client(&self) -> Object { self.__i_client.clone() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsKeyring.dfy(44,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsKeyring.dfy(45,5) pub fn awsKmsKey(&self) -> Sequence { self.__i_awsKmsKey.clone() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsKeyring.dfy(46,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsKeyring.dfy(47,5) pub fn grantTokens(&self) -> GrantTokenList { self.__i_grantTokens.clone() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsKeyring.dfy(45,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsKeyring.dfy(46,5) pub fn awsKmsArn(&self) -> Arc { self.__i_awsKmsArn.clone() } @@ -78085,7 +78093,7 @@ pub mod _AwsKmsKeyring_Compile { impl IKeyring for AwsKmsKeyring { - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsKeyring.dfy(109,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsKeyring.dfy(131,5) fn _OnEncrypt_k(&self, input: &Arc) -> Arc, Arc>> { let mut res = MaybePlacebo::, Arc>>>::new(); let mut materials: Arc = input.materials().clone(); @@ -78127,7 +78135,7 @@ pub mod _AwsKmsKeyring_Compile { return res.read(); }; let mut providerInfo: ValidUTF8Bytes = valueOrError2.Extract(); - let mut valueOrError3: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(providerInfo.cardinality() < crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default::UINT16_LIMIT(), &Arc::new(crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::Error::AwsCryptographicMaterialProvidersException { + let mut valueOrError3: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(truncate!(providerInfo.cardinality(), u64) < truncate!(crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default::UINT16_LIMIT(), u64), &Arc::new(crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::Error::AwsCryptographicMaterialProvidersException { message: string_utf16_of("Invalid response from AWS KMS GenerateDataKey: Key ID too long.") })); if valueOrError3.IsFailure() { @@ -78170,7 +78178,7 @@ pub mod _AwsKmsKeyring_Compile { }; return res.read(); } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsKeyring.dfy(392,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsKeyring.dfy(426,5) fn _OnDecrypt_k(&self, input: &Arc) -> Arc, Arc>> { let mut res = MaybePlacebo::, Arc>>>::new(); let mut materials: Arc = input.materials().clone(); @@ -78187,19 +78195,19 @@ pub mod _AwsKmsKeyring_Compile { res = MaybePlacebo::from(valueOrError1.PropagateFailure::>()); return res.read(); }; - let mut filter: Object; + let mut filter: Object, bool, Arc>>; let mut _nw0: Object = OnDecryptEncryptedDataKeyFilter::_allocate_object(); OnDecryptEncryptedDataKeyFilter::_ctor(&_nw0, &self.awsKmsKey().clone()); - filter = _nw0.clone(); + filter = upcast_object::, bool, Arc>>()(_nw0.clone()); let mut valueOrError2: Arc>, Arc>>; - let mut _out0: Arc>, Arc>> = crate::implementation_from_dafny::_Actions_Compile::_default::FilterWithResult::, Arc>(&upcast_object::, bool, Arc>>()(filter.clone()), input.encryptedDataKeys()); + let mut _out0: Arc>, Arc>> = crate::implementation_from_dafny::_Actions_Compile::_default::FilterWithResult::, Arc>(&filter, input.encryptedDataKeys()); valueOrError2 = _out0.clone(); if valueOrError2.IsFailure() { res = MaybePlacebo::from(valueOrError2.PropagateFailure::>()); return res.read(); }; let mut edksToAttempt: Sequence> = valueOrError2.Extract(); - if int!(0) == edksToAttempt.cardinality() { + if 0 == truncate!(edksToAttempt.cardinality(), u64) { let mut valueOrError3: Arc, Arc>> = crate::implementation_from_dafny::_ErrorMessages_Compile::_default::IncorrectDataKeys(input.encryptedDataKeys(), input.materials().algorithmSuite(), &string_utf16_of("")); if valueOrError3.IsFailure() { res = MaybePlacebo::from(valueOrError3.PropagateFailure::>()); @@ -78247,7 +78255,7 @@ pub mod _AwsKmsKeyring_Compile { UpcastObjectFn!(dyn IKeyring); } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsKeyring.dfy(557,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsKeyring.dfy(592,3) pub struct OnDecryptEncryptedDataKeyFilter { pub __i_awsKmsKey: Sequence } @@ -78257,13 +78265,13 @@ pub mod _AwsKmsKeyring_Compile { pub fn _allocate_object() -> Object { allocate_object::() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsKeyring.dfy(562,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsKeyring.dfy(597,5) pub fn _ctor(this: &Object, awsKmsKey: &Sequence) -> () { let mut _set___i_awsKmsKey: bool = false; update_field_uninit_object!(this.clone(), __i_awsKmsKey, _set___i_awsKmsKey, awsKmsKey.clone()); return (); } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsKeyring.dfy(560,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsKeyring.dfy(595,5) pub fn awsKmsKey(&self) -> Sequence { self.__i_awsKmsKey.clone() } @@ -78284,7 +78292,7 @@ pub mod _AwsKmsKeyring_Compile { impl DeterministicAction, Arc>>> for OnDecryptEncryptedDataKeyFilter { - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsKeyring.dfy(577,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsKeyring.dfy(612,5) fn Invoke(&self, edk: &Arc) -> Arc>> { let mut res = MaybePlacebo::>>>::new(); if edk.keyProviderId().clone() != crate::implementation_from_dafny::_Constants_Compile::_default::PROVIDER_ID() { @@ -78325,7 +78333,7 @@ pub mod _AwsKmsKeyring_Compile { UpcastObjectFn!(dyn DeterministicAction, Arc>>>); } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsKeyring.dfy(608,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsKeyring.dfy(643,3) pub struct DecryptSingleEncryptedDataKey { pub __i_materials: DecryptionMaterialsPendingPlaintextDataKey, pub __i_client: Object, @@ -78338,7 +78346,7 @@ pub mod _AwsKmsKeyring_Compile { pub fn _allocate_object() -> Object { allocate_object::() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsKeyring.dfy(619,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsKeyring.dfy(654,5) pub fn _ctor(this: &Object, materials: &DecryptionMaterialsPendingPlaintextDataKey, client: &Object, awsKmsKey: &Sequence, grantTokens: &GrantTokenList) -> () { let mut _set___i_materials: bool = false; let mut _set___i_client: bool = false; @@ -78350,19 +78358,19 @@ pub mod _AwsKmsKeyring_Compile { update_field_uninit_object!(this.clone(), __i_grantTokens, _set___i_grantTokens, grantTokens.clone()); return (); } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsKeyring.dfy(614,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsKeyring.dfy(649,5) pub fn materials(&self) -> DecryptionMaterialsPendingPlaintextDataKey { self.__i_materials.clone() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsKeyring.dfy(615,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsKeyring.dfy(650,5) pub fn client(&self) -> Object { self.__i_client.clone() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsKeyring.dfy(616,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsKeyring.dfy(651,5) pub fn awsKmsKey(&self) -> Sequence { self.__i_awsKmsKey.clone() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsKeyring.dfy(617,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsKeyring.dfy(652,5) pub fn grantTokens(&self) -> GrantTokenList { self.__i_grantTokens.clone() } @@ -78383,7 +78391,7 @@ pub mod _AwsKmsKeyring_Compile { impl Action, Arc>>> for DecryptSingleEncryptedDataKey { - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsKeyring.dfy(683,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsKeyring.dfy(722,5) fn Invoke(&self, edk: &Arc) -> Arc>> { let mut res = MaybePlacebo::>>>::new(); let mut kmsUnwrap: Object; @@ -78417,7 +78425,7 @@ pub mod _AwsKmsKeyring_Compile { UpcastObjectFn!(dyn Action, Arc>>>); } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsKeyring.dfy(717,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsKeyring.dfy(756,3) #[derive(PartialEq, Clone)] pub enum KmsUnwrapInfo { KmsUnwrapInfo {} @@ -78479,7 +78487,7 @@ pub mod _AwsKmsKeyring_Compile { } } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsKeyring.dfy(719,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsKeyring.dfy(758,3) #[derive(PartialEq, Clone)] pub enum KmsWrapInfo { KmsWrapInfo { @@ -78547,7 +78555,7 @@ pub mod _AwsKmsKeyring_Compile { } } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsKeyring.dfy(723,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsKeyring.dfy(762,3) pub struct KmsUnwrapKeyMaterial { pub __i_client: Object, pub __i_grantTokens: GrantTokenList, @@ -78559,7 +78567,7 @@ pub mod _AwsKmsKeyring_Compile { pub fn _allocate_object() -> Object { allocate_object::() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsKeyring.dfy(730,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsKeyring.dfy(769,5) pub fn _ctor(this: &Object, client: &Object, awsKmsKey: &Sequence, grantTokens: &GrantTokenList) -> () { let mut _set___i_client: bool = false; let mut _set___i_grantTokens: bool = false; @@ -78569,15 +78577,15 @@ pub mod _AwsKmsKeyring_Compile { update_field_uninit_object!(this.clone(), __i_grantTokens, _set___i_grantTokens, grantTokens.clone()); return (); } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsKeyring.dfy(726,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsKeyring.dfy(765,5) pub fn client(&self) -> Object { self.__i_client.clone() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsKeyring.dfy(728,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsKeyring.dfy(767,5) pub fn grantTokens(&self) -> GrantTokenList { self.__i_grantTokens.clone() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsKeyring.dfy(727,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsKeyring.dfy(766,5) pub fn awsKmsKey(&self) -> Sequence { self.__i_awsKmsKey.clone() } @@ -78606,7 +78614,7 @@ pub mod _AwsKmsKeyring_Compile { impl Action, Arc>>, Arc>>> for KmsUnwrapKeyMaterial { - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsKeyring.dfy(784,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsKeyring.dfy(823,5) fn Invoke(&self, input: &Arc) -> Arc>>, Arc>> { let mut res = MaybePlacebo::>>, Arc>>>::new(); let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(crate::implementation_from_dafny::software::amazon::cryptography::services::kms::internaldafny::types::_default::IsValid_CiphertextType(input.wrappedMaterial()), &Arc::new(crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::Error::AwsCryptographicMaterialProvidersException { @@ -78652,7 +78660,7 @@ pub mod _AwsKmsKeyring_Compile { return res.read(); }; let mut decryptResponse: Arc = valueOrError2.Extract(); - let mut valueOrError3: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(matches!(decryptResponse.KeyId().as_ref(), Some{ .. }) && decryptResponse.KeyId().value().clone() == self.awsKmsKey().clone() && matches!(decryptResponse.Plaintext().as_ref(), Some{ .. }) && int!(crate::implementation_from_dafny::_AlgorithmSuites_Compile::_default::GetEncryptKeyLength(input.algorithmSuite())) == decryptResponse.Plaintext().value().cardinality(), &Arc::new(crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::Error::AwsCryptographicMaterialProvidersException { + let mut valueOrError3: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(matches!(decryptResponse.KeyId().as_ref(), Some{ .. }) && decryptResponse.KeyId().value().clone() == self.awsKmsKey().clone() && matches!(decryptResponse.Plaintext().as_ref(), Some{ .. }) && crate::implementation_from_dafny::_AlgorithmSuites_Compile::_default::GetEncryptKeyLength(input.algorithmSuite()) as u64 == truncate!(decryptResponse.Plaintext().value().cardinality(), u64), &Arc::new(crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::Error::AwsCryptographicMaterialProvidersException { message: string_utf16_of("Invalid response from KMS Decrypt") })); if valueOrError3.IsFailure() { @@ -78675,7 +78683,7 @@ pub mod _AwsKmsKeyring_Compile { UpcastObjectFn!(dyn Action, Arc>>, Arc>>>); } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsKeyring.dfy(827,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsKeyring.dfy(867,3) pub struct KmsGenerateAndWrapKeyMaterial { pub __i_client: Object, pub __i_awsKmsKey: Sequence, @@ -78687,7 +78695,7 @@ pub mod _AwsKmsKeyring_Compile { pub fn _allocate_object() -> Object { allocate_object::() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsKeyring.dfy(834,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsKeyring.dfy(874,5) pub fn _ctor(this: &Object, client: &Object, awsKmsKey: &Sequence, grantTokens: &GrantTokenList) -> () { let mut _set___i_client: bool = false; let mut _set___i_awsKmsKey: bool = false; @@ -78697,15 +78705,15 @@ pub mod _AwsKmsKeyring_Compile { update_field_uninit_object!(this.clone(), __i_grantTokens, _set___i_grantTokens, grantTokens.clone()); return (); } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsKeyring.dfy(830,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsKeyring.dfy(870,5) pub fn client(&self) -> Object { self.__i_client.clone() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsKeyring.dfy(831,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsKeyring.dfy(871,5) pub fn awsKmsKey(&self) -> Sequence { self.__i_awsKmsKey.clone() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsKeyring.dfy(832,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsKeyring.dfy(872,5) pub fn grantTokens(&self) -> GrantTokenList { self.__i_grantTokens.clone() } @@ -78734,7 +78742,7 @@ pub mod _AwsKmsKeyring_Compile { impl Action, Arc>>, Arc>>> for KmsGenerateAndWrapKeyMaterial { - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsKeyring.dfy(898,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsKeyring.dfy(938,5) fn Invoke(&self, input: &Arc) -> Arc>>, Arc>> { let mut res = MaybePlacebo::>>, Arc>>>::new(); let mut suite: Arc = input.algorithmSuite().clone(); @@ -78781,7 +78789,7 @@ pub mod _AwsKmsKeyring_Compile { res = MaybePlacebo::from(valueOrError2.PropagateFailure::>>>()); return res.read(); }; - let mut valueOrError3: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(matches!(generateResponse.Plaintext().as_ref(), Some{ .. }) && int!(crate::implementation_from_dafny::_AlgorithmSuites_Compile::_default::GetEncryptKeyLength(&suite)) == generateResponse.Plaintext().value().cardinality(), &Arc::new(crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::Error::AwsCryptographicMaterialProvidersException { + let mut valueOrError3: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(matches!(generateResponse.Plaintext().as_ref(), Some{ .. }) && crate::implementation_from_dafny::_AlgorithmSuites_Compile::_default::GetEncryptKeyLength(&suite) as u64 == truncate!(generateResponse.Plaintext().value().cardinality(), u64), &Arc::new(crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::Error::AwsCryptographicMaterialProvidersException { message: string_utf16_of("Invalid response from AWS KMS GenerateDataKey: Invalid data key") })); if valueOrError3.IsFailure() { @@ -78821,7 +78829,7 @@ pub mod _AwsKmsKeyring_Compile { UpcastObjectFn!(dyn Action, Arc>>, Arc>>>); } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsKeyring.dfy(973,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsKeyring.dfy(1014,3) pub struct KmsWrapKeyMaterial { pub __i_client: Object, pub __i_awsKmsKey: Sequence, @@ -78833,7 +78841,7 @@ pub mod _AwsKmsKeyring_Compile { pub fn _allocate_object() -> Object { allocate_object::() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsKeyring.dfy(980,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsKeyring.dfy(1021,5) pub fn _ctor(this: &Object, client: &Object, awsKmsKey: &Sequence, grantTokens: &GrantTokenList) -> () { let mut _set___i_client: bool = false; let mut _set___i_awsKmsKey: bool = false; @@ -78843,15 +78851,15 @@ pub mod _AwsKmsKeyring_Compile { update_field_uninit_object!(this.clone(), __i_grantTokens, _set___i_grantTokens, grantTokens.clone()); return (); } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsKeyring.dfy(976,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsKeyring.dfy(1017,5) pub fn client(&self) -> Object { self.__i_client.clone() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsKeyring.dfy(977,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsKeyring.dfy(1018,5) pub fn awsKmsKey(&self) -> Sequence { self.__i_awsKmsKey.clone() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsKeyring.dfy(978,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsKeyring.dfy(1019,5) pub fn grantTokens(&self) -> GrantTokenList { self.__i_grantTokens.clone() } @@ -78880,7 +78888,7 @@ pub mod _AwsKmsKeyring_Compile { impl Action, Arc>>, Arc>>> for KmsWrapKeyMaterial { - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsKeyring.dfy(1039,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsKeyring.dfy(1080,5) fn Invoke(&self, input: &Arc) -> Arc>>, Arc>> { let mut res = MaybePlacebo::>>, Arc>>>::new(); let mut suite: Arc = input.algorithmSuite().clone(); @@ -78965,10 +78973,11 @@ pub mod _AwsKmsMrkAreUnique_Compile { pub use crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::Error; pub use ::std::marker::Sync; pub use ::std::marker::Send; - pub use ::dafny_runtime::int; + pub use ::dafny_runtime::truncate; pub use ::dafny_runtime::DafnyCharUTF16; pub use ::dafny_runtime::Set; pub use ::dafny_runtime::SetBuilder; + pub use ::dafny_runtime::int; pub use ::dafny_runtime::string_utf16_of; pub use crate::implementation_from_dafny::_AwsArnParsing_Compile::AwsKmsIdentifier::AwsKmsArnIdentifier; pub use crate::implementation_from_dafny::_AwsArnParsing_Compile::AwsKmsArn; @@ -78977,15 +78986,15 @@ pub mod _AwsKmsMrkAreUnique_Compile { pub struct _default {} impl _default { - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsMrkAreUnique.dfy(17,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsMrkAreUnique.dfy(19,3) pub fn AwsKmsMrkAreUnique(identifiers: &Sequence>) -> Arc>> { let mut mrks: Sequence> = crate::implementation_from_dafny::_Seq_Compile::_default::Filter::>(&(Arc::new(move |x0: &Arc| crate::implementation_from_dafny::_AwsArnParsing_Compile::_default::IsMultiRegionAwsKmsIdentifier(x0)) as Arc _ + Sync + Send>), identifiers); - if mrks.cardinality() == int!(0) { + if truncate!(mrks.cardinality(), u64) == 0 { Arc::new(Outcome::>::Pass {}) } else { let mut mrkKeyIds: Sequence> = crate::implementation_from_dafny::_Seq_Compile::_default::Map::, Sequence>(&(Arc::new(move |x0: &Arc| _default::GetKeyId(x0)) as Arc _ + Sync + Send>), &mrks); let mut setMrks: Set> = crate::implementation_from_dafny::_Seq_Compile::_default::ToSet::>(&mrkKeyIds); - if mrkKeyIds.cardinality() == setMrks.cardinality() { + if truncate!(mrkKeyIds.cardinality(), u64) == truncate!(setMrks.cardinality(), u64) { Arc::new(Outcome::>::Pass {}) } else { let mut duplicateMrkIds: Set> = (&({ @@ -79017,7 +79026,7 @@ pub mod _AwsKmsMrkAreUnique_Compile { }; let mut duplicateIdentifiers: Sequence> = crate::implementation_from_dafny::_Seq_Compile::_default::Filter::>(&isDuplicate, identifiers); let mut duplicates: Sequence> = crate::implementation_from_dafny::_Seq_Compile::_default::Map::, Sequence>(&identifierToString, &duplicateIdentifiers); - if duplicates.cardinality() == int!(0) { + if truncate!(duplicates.cardinality(), u64) == 0 { Arc::new(Outcome::>::Fail { error: Arc::new(Error::AwsCryptographicMaterialProvidersException { message: string_utf16_of("Impossible") @@ -79033,7 +79042,7 @@ pub mod _AwsKmsMrkAreUnique_Compile { } } } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsMrkAreUnique.dfy(49,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsMrkAreUnique.dfy(54,3) pub fn GetKeyId(identifier: &Arc) -> Sequence { let mut _source0: Arc = identifier.clone(); if matches!((&_source0).as_ref(), AwsKmsArnIdentifier{ .. }) { @@ -79083,7 +79092,7 @@ pub mod _AwsKmsMrkDiscoveryKeyring_Compile { pub use crate::implementation_from_dafny::_Constants_Compile::AwsKmsEdkHelper; pub use ::dafny_runtime::upcast_object; pub use crate::implementation_from_dafny::_Actions_Compile::DeterministicActionWithResult; - pub use ::dafny_runtime::int; + pub use ::dafny_runtime::truncate; pub use crate::implementation_from_dafny::_Materials_Compile::SealedDecryptionMaterials; pub use crate::implementation_from_dafny::_Actions_Compile::ActionWithResult; pub use crate::implementation_from_dafny::_Wrappers_Compile::Result::Success; @@ -79099,7 +79108,7 @@ pub mod _AwsKmsMrkDiscoveryKeyring_Compile { pub struct _default {} impl _default { - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsMrkDiscoveryKeyring.dfy(514,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsMrkDiscoveryKeyring.dfy(558,3) pub fn ToStringForRegion(arn: &AwsKmsArn, region: &Sequence) -> Sequence { if crate::implementation_from_dafny::_AwsArnParsing_Compile::_default::IsMultiRegionAwsKmsArn(arn) { AwsArn::ToArnString(arn, &Arc::new(Option::>::Some { @@ -79109,7 +79118,7 @@ pub mod _AwsKmsMrkDiscoveryKeyring_Compile { AwsArn::ToString(arn) } } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsMrkDiscoveryKeyring.dfy(537,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsMrkDiscoveryKeyring.dfy(581,3) pub fn DiscoveryMatch(arn: &AwsKmsArn, discoveryFilter: &Arc>>, region: &Sequence) -> bool { (&({ let mut arn = arn.clone(); @@ -79130,7 +79139,7 @@ pub mod _AwsKmsMrkDiscoveryKeyring_Compile { } } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsMrkDiscoveryKeyring.dfy(35,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsMrkDiscoveryKeyring.dfy(36,3) pub struct AwsKmsMrkDiscoveryKeyring { pub __i_client: Object, pub __i_region: Sequence, @@ -79143,7 +79152,7 @@ pub mod _AwsKmsMrkDiscoveryKeyring_Compile { pub fn _allocate_object() -> Object { allocate_object::() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsMrkDiscoveryKeyring.dfy(59,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsMrkDiscoveryKeyring.dfy(60,5) pub fn _ctor(this: &Object, client: &Object, region: &Sequence, discoveryFilter: &Arc>>, grantTokens: &GrantTokenList) -> () { let mut _set___i_client: bool = false; let mut _set___i_region: bool = false; @@ -79155,19 +79164,19 @@ pub mod _AwsKmsMrkDiscoveryKeyring_Compile { update_field_uninit_object!(this.clone(), __i_grantTokens, _set___i_grantTokens, grantTokens.clone()); return (); } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsMrkDiscoveryKeyring.dfy(42,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsMrkDiscoveryKeyring.dfy(43,5) pub fn client(&self) -> Object { self.__i_client.clone() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsMrkDiscoveryKeyring.dfy(45,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsMrkDiscoveryKeyring.dfy(46,5) pub fn region(&self) -> Sequence { self.__i_region.clone() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsMrkDiscoveryKeyring.dfy(43,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsMrkDiscoveryKeyring.dfy(44,5) pub fn discoveryFilter(&self) -> Arc>> { self.__i_discoveryFilter.clone() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsMrkDiscoveryKeyring.dfy(44,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsMrkDiscoveryKeyring.dfy(45,5) pub fn grantTokens(&self) -> GrantTokenList { self.__i_grantTokens.clone() } @@ -79188,7 +79197,7 @@ pub mod _AwsKmsMrkDiscoveryKeyring_Compile { impl IKeyring for AwsKmsMrkDiscoveryKeyring { - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsMrkDiscoveryKeyring.dfy(89,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsMrkDiscoveryKeyring.dfy(111,5) fn _OnEncrypt_k(&self, input: &Arc) -> Arc, Arc>> { let mut output: Arc, Arc>> = Arc::new(Result::, Arc>::Failure { error: Arc::new(Error::AwsCryptographicMaterialProvidersException { @@ -79197,7 +79206,7 @@ pub mod _AwsKmsMrkDiscoveryKeyring_Compile { }); return output.clone(); } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsMrkDiscoveryKeyring.dfy(115,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsMrkDiscoveryKeyring.dfy(154,5) fn _OnDecrypt_k(&self, input: &Arc) -> Arc, Arc>> { let mut output = MaybePlacebo::, Arc>>>::new(); let mut materials: Arc = input.materials().clone(); @@ -79222,7 +79231,7 @@ pub mod _AwsKmsMrkDiscoveryKeyring_Compile { return output.read(); }; let mut edksToAttempt: Sequence> = valueOrError1.Extract(); - if int!(0) == edksToAttempt.cardinality() { + if 0 == truncate!(edksToAttempt.cardinality(), u64) { let mut valueOrError2: Arc, Arc>> = crate::implementation_from_dafny::_ErrorMessages_Compile::_default::IncorrectDataKeys(input.encryptedDataKeys(), input.materials().algorithmSuite(), &string_utf16_of("")); if valueOrError2.IsFailure() { output = MaybePlacebo::from(valueOrError2.PropagateFailure::>()); @@ -79271,7 +79280,7 @@ pub mod _AwsKmsMrkDiscoveryKeyring_Compile { UpcastObjectFn!(dyn IKeyring); } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsMrkDiscoveryKeyring.dfy(308,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsMrkDiscoveryKeyring.dfy(348,3) pub struct AwsKmsEncryptedDataKeyFilterTransform { pub __i_region: Sequence, pub __i_discoveryFilter: Arc>> @@ -79282,7 +79291,7 @@ pub mod _AwsKmsMrkDiscoveryKeyring_Compile { pub fn _allocate_object() -> Object { allocate_object::() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsMrkDiscoveryKeyring.dfy(317,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsMrkDiscoveryKeyring.dfy(357,5) pub fn _ctor(this: &Object, region: &Sequence, discoveryFilter: &Arc>>) -> () { let mut _set___i_region: bool = false; let mut _set___i_discoveryFilter: bool = false; @@ -79290,11 +79299,11 @@ pub mod _AwsKmsMrkDiscoveryKeyring_Compile { update_field_uninit_object!(this.clone(), __i_discoveryFilter, _set___i_discoveryFilter, discoveryFilter.clone()); return (); } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsMrkDiscoveryKeyring.dfy(315,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsMrkDiscoveryKeyring.dfy(355,5) pub fn region(&self) -> Sequence { self.__i_region.clone() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsMrkDiscoveryKeyring.dfy(316,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsMrkDiscoveryKeyring.dfy(356,5) pub fn discoveryFilter(&self) -> Arc>> { self.__i_discoveryFilter.clone() } @@ -79315,7 +79324,7 @@ pub mod _AwsKmsMrkDiscoveryKeyring_Compile { impl DeterministicAction, Arc>, Arc>>> for AwsKmsEncryptedDataKeyFilterTransform { - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsMrkDiscoveryKeyring.dfy(349,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsMrkDiscoveryKeyring.dfy(389,5) fn Invoke(&self, edk: &Arc) -> Arc>, Arc>> { let mut res = MaybePlacebo::>, Arc>>>::new(); if edk.keyProviderId().clone() != crate::implementation_from_dafny::_Constants_Compile::_default::PROVIDER_ID() { @@ -79383,7 +79392,7 @@ pub mod _AwsKmsMrkDiscoveryKeyring_Compile { UpcastObjectFn!(dyn DeterministicAction, Arc>, Arc>>>); } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsMrkDiscoveryKeyring.dfy(390,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsMrkDiscoveryKeyring.dfy(430,3) pub struct AwsKmsEncryptedDataKeyDecryptor { pub __i_materials: DecryptionMaterialsPendingPlaintextDataKey, pub __i_client: Object, @@ -79396,7 +79405,7 @@ pub mod _AwsKmsMrkDiscoveryKeyring_Compile { pub fn _allocate_object() -> Object { allocate_object::() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsMrkDiscoveryKeyring.dfy(401,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsMrkDiscoveryKeyring.dfy(441,5) pub fn _ctor(this: &Object, materials: &DecryptionMaterialsPendingPlaintextDataKey, client: &Object, region: &Sequence, grantTokens: &GrantTokenList) -> () { let mut _set___i_materials: bool = false; let mut _set___i_client: bool = false; @@ -79408,19 +79417,19 @@ pub mod _AwsKmsMrkDiscoveryKeyring_Compile { update_field_uninit_object!(this.clone(), __i_grantTokens, _set___i_grantTokens, grantTokens.clone()); return (); } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsMrkDiscoveryKeyring.dfy(396,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsMrkDiscoveryKeyring.dfy(436,5) pub fn materials(&self) -> DecryptionMaterialsPendingPlaintextDataKey { self.__i_materials.clone() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsMrkDiscoveryKeyring.dfy(397,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsMrkDiscoveryKeyring.dfy(437,5) pub fn client(&self) -> Object { self.__i_client.clone() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsMrkDiscoveryKeyring.dfy(398,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsMrkDiscoveryKeyring.dfy(438,5) pub fn region(&self) -> Sequence { self.__i_region.clone() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsMrkDiscoveryKeyring.dfy(399,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsMrkDiscoveryKeyring.dfy(439,5) pub fn grantTokens(&self) -> GrantTokenList { self.__i_grantTokens.clone() } @@ -79441,7 +79450,7 @@ pub mod _AwsKmsMrkDiscoveryKeyring_Compile { impl Action, Arc>>> for AwsKmsEncryptedDataKeyDecryptor { - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsMrkDiscoveryKeyring.dfy(478,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsMrkDiscoveryKeyring.dfy(522,5) fn Invoke(&self, helper: &Arc) -> Arc>> { let mut res = MaybePlacebo::>>>::new(); let mut awsKmsKey: Sequence = _default::ToStringForRegion(helper.arn(), &self.region().clone()); @@ -79512,6 +79521,7 @@ pub mod _AwsKmsMrkKeyring_Compile { pub use ::std::marker::Sync; pub use ::std::marker::Send; pub use crate::implementation_from_dafny::_Wrappers_Compile::Outcome; + pub use ::dafny_runtime::truncate; pub use ::dafny_runtime::string_utf16_of; pub use crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::EncryptedDataKey; pub use crate::implementation_from_dafny::_EdkWrapping_Compile::WrapEdkMaterialOutput::GenerateAndWrapEdkMaterialOutput; @@ -79521,7 +79531,6 @@ pub mod _AwsKmsMrkKeyring_Compile { pub use crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::DecryptionMaterials; pub use crate::implementation_from_dafny::_AwsKmsUtils_Compile::OnDecryptMrkAwareEncryptedDataKeyFilter; pub use crate::implementation_from_dafny::_Actions_Compile::DeterministicActionWithResult; - pub use ::dafny_runtime::int; pub use crate::implementation_from_dafny::_Materials_Compile::SealedDecryptionMaterials; pub use crate::implementation_from_dafny::_Actions_Compile::ActionWithResult; pub use crate::implementation_from_dafny::_Materials_Compile::DecryptionMaterialsPendingPlaintextDataKey; @@ -79531,7 +79540,7 @@ pub mod _AwsKmsMrkKeyring_Compile { pub use crate::implementation_from_dafny::_AwsKmsKeyring_Compile::KmsUnwrapInfo; pub use crate::implementation_from_dafny::_MaterialWrapping_Compile::UnwrapMaterial; - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsMrkKeyring.dfy(39,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsMrkKeyring.dfy(40,3) pub struct AwsKmsMrkKeyring { pub __i_client: Object, pub __i_awsKmsKey: Sequence, @@ -79550,7 +79559,7 @@ pub mod _AwsKmsMrkKeyring_Compile { /// # The AWS KMS /// # key identifier MUST be [a valid identifier](aws-kms-key-arn.md#a- /// # valid-aws-kms-identifier). - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsMrkKeyring.dfy(57,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsMrkKeyring.dfy(58,5) pub fn _ctor(this: &Object, client: &Object, awsKmsKey: &Sequence, grantTokens: &GrantTokenList) -> () { let mut _set___i_client: bool = false; let mut _set___i_awsKmsKey: bool = false; @@ -79563,19 +79572,19 @@ pub mod _AwsKmsMrkKeyring_Compile { update_field_uninit_object!(this.clone(), __i_grantTokens, _set___i_grantTokens, grantTokens.clone()); return (); } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsMrkKeyring.dfy(43,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsMrkKeyring.dfy(44,5) pub fn client(&self) -> Object { self.__i_client.clone() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsMrkKeyring.dfy(44,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsMrkKeyring.dfy(45,5) pub fn awsKmsKey(&self) -> Sequence { self.__i_awsKmsKey.clone() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsMrkKeyring.dfy(46,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsMrkKeyring.dfy(47,5) pub fn grantTokens(&self) -> GrantTokenList { self.__i_grantTokens.clone() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsMrkKeyring.dfy(45,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsMrkKeyring.dfy(46,5) pub fn awsKmsArn(&self) -> Arc { self.__i_awsKmsArn.clone() } @@ -79596,7 +79605,7 @@ pub mod _AwsKmsMrkKeyring_Compile { impl IKeyring for AwsKmsMrkKeyring { - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsMrkKeyring.dfy(97,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsMrkKeyring.dfy(119,5) fn _OnEncrypt_k(&self, input: &Arc) -> Arc, Arc>> { let mut output = MaybePlacebo::, Arc>>>::new(); let mut materials: Arc = input.materials().clone(); @@ -79638,7 +79647,7 @@ pub mod _AwsKmsMrkKeyring_Compile { return output.read(); }; let mut providerInfo: ValidUTF8Bytes = valueOrError2.Extract(); - let mut valueOrError3: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(providerInfo.cardinality() < crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default::UINT16_LIMIT(), &Arc::new(Error::AwsCryptographicMaterialProvidersException { + let mut valueOrError3: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(truncate!(providerInfo.cardinality(), u64) < truncate!(crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default::UINT16_LIMIT(), u64), &Arc::new(Error::AwsCryptographicMaterialProvidersException { message: string_utf16_of("Invalid response from AWS KMS GenerateDataKey: Key ID too long.") })); if valueOrError3.IsFailure() { @@ -79681,7 +79690,7 @@ pub mod _AwsKmsMrkKeyring_Compile { }; return output.read(); } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsMrkKeyring.dfy(398,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsMrkKeyring.dfy(432,5) fn _OnDecrypt_k(&self, input: &Arc) -> Arc, Arc>> { let mut output = MaybePlacebo::, Arc>>>::new(); let mut materials: Arc = input.materials().clone(); @@ -79710,7 +79719,7 @@ pub mod _AwsKmsMrkKeyring_Compile { return output.read(); }; let mut edksToAttempt: Sequence> = valueOrError2.Extract(); - if int!(0) == edksToAttempt.cardinality() { + if 0 == truncate!(edksToAttempt.cardinality(), u64) { let mut valueOrError3: Arc, Arc>> = crate::implementation_from_dafny::_ErrorMessages_Compile::_default::IncorrectDataKeys(input.encryptedDataKeys(), input.materials().algorithmSuite(), &string_utf16_of("")); if valueOrError3.IsFailure() { output = MaybePlacebo::from(valueOrError3.PropagateFailure::>()); @@ -79758,7 +79767,7 @@ pub mod _AwsKmsMrkKeyring_Compile { UpcastObjectFn!(dyn IKeyring); } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsMrkKeyring.dfy(533,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsMrkKeyring.dfy(568,3) pub struct DecryptSingleEncryptedDataKey { pub __i_materials: DecryptionMaterialsPendingPlaintextDataKey, pub __i_client: Object, @@ -79771,7 +79780,7 @@ pub mod _AwsKmsMrkKeyring_Compile { pub fn _allocate_object() -> Object { allocate_object::() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsMrkKeyring.dfy(544,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsMrkKeyring.dfy(579,5) pub fn _ctor(this: &Object, materials: &DecryptionMaterialsPendingPlaintextDataKey, client: &Object, awsKmsKey: &Sequence, grantTokens: &GrantTokenList) -> () { let mut _set___i_materials: bool = false; let mut _set___i_client: bool = false; @@ -79783,19 +79792,19 @@ pub mod _AwsKmsMrkKeyring_Compile { update_field_uninit_object!(this.clone(), __i_grantTokens, _set___i_grantTokens, grantTokens.clone()); return (); } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsMrkKeyring.dfy(539,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsMrkKeyring.dfy(574,5) pub fn materials(&self) -> DecryptionMaterialsPendingPlaintextDataKey { self.__i_materials.clone() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsMrkKeyring.dfy(540,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsMrkKeyring.dfy(575,5) pub fn client(&self) -> Object { self.__i_client.clone() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsMrkKeyring.dfy(541,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsMrkKeyring.dfy(576,5) pub fn awsKmsKey(&self) -> Sequence { self.__i_awsKmsKey.clone() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsMrkKeyring.dfy(542,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsMrkKeyring.dfy(577,5) pub fn grantTokens(&self) -> GrantTokenList { self.__i_grantTokens.clone() } @@ -79816,7 +79825,7 @@ pub mod _AwsKmsMrkKeyring_Compile { impl Action, Arc>>> for DecryptSingleEncryptedDataKey { - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsMrkKeyring.dfy(609,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsMrkKeyring.dfy(648,5) fn Invoke(&self, edk: &Arc) -> Arc>> { let mut res = MaybePlacebo::>>>::new(); let mut kmsUnwrap: Object; @@ -79928,7 +79937,7 @@ pub mod _AwsKmsRsaKeyring_Compile { pub use crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::OnEncryptOutput; pub use crate::implementation_from_dafny::_Wrappers_Compile::Outcome; pub use crate::implementation_from_dafny::_Wrappers_Compile::Option::Some; - pub use ::dafny_runtime::int; + pub use ::dafny_runtime::truncate; pub use ::dafny_runtime::string_utf16_of; pub use crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::SignatureAlgorithm::None; pub use crate::implementation_from_dafny::_EdkWrapping_Compile::WrapEdkMaterialOutput; @@ -79973,11 +79982,12 @@ pub mod _AwsKmsRsaKeyring_Compile { pub use crate::implementation_from_dafny::software::amazon::cryptography::services::kms::internaldafny::types::DecryptRequest; pub use crate::implementation_from_dafny::software::amazon::cryptography::services::kms::internaldafny::types::RecipientInfo; pub use crate::implementation_from_dafny::software::amazon::cryptography::services::kms::internaldafny::types::DecryptResponse; + pub use ::dafny_runtime::int; pub struct _default {} impl _default { - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsRsaKeyring.dfy(277,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsRsaKeyring.dfy(318,3) pub fn EncryptionContextDigest(cryptoPrimitives: &Object, encryptionContext: &Map) -> Arc, Arc>> { let mut output = MaybePlacebo::, Arc>>>::new(); let mut valueOrError0: Arc, Arc>> = crate::implementation_from_dafny::_CanonicalEncryptionContext_Compile::_default::EncryptionContextToAAD(encryptionContext); @@ -80010,13 +80020,13 @@ pub mod _AwsKmsRsaKeyring_Compile { })); return output.read(); } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsRsaKeyring.dfy(40,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsRsaKeyring.dfy(41,3) pub fn MIN_KMS_RSA_KEY_LEN() -> RSAModulusLengthBits { 2048 } } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsRsaKeyring.dfy(42,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsRsaKeyring.dfy(43,3) pub struct AwsKmsRsaKeyring { pub __i_cryptoPrimitives: Object, pub __i_client: Arc>>, @@ -80032,7 +80042,7 @@ pub mod _AwsKmsRsaKeyring_Compile { pub fn _allocate_object() -> Object { allocate_object::() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsRsaKeyring.dfy(76,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsRsaKeyring.dfy(77,5) pub fn _ctor(this: &Object, publicKey: &Arc>>, awsKmsKey: &Sequence, paddingScheme: &Arc, client: &Arc>>, cryptoPrimitives: &Object, grantTokens: &GrantTokenList) -> () { let mut _set___i_cryptoPrimitives: bool = false; let mut _set___i_client: bool = false; @@ -80051,31 +80061,31 @@ pub mod _AwsKmsRsaKeyring_Compile { update_field_uninit_object!(this.clone(), __i_grantTokens, _set___i_grantTokens, grantTokens.clone()); return (); } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsRsaKeyring.dfy(51,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsRsaKeyring.dfy(52,5) pub fn cryptoPrimitives(&self) -> Object { self.__i_cryptoPrimitives.clone() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsRsaKeyring.dfy(45,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsRsaKeyring.dfy(46,5) pub fn client(&self) -> Arc>> { self.__i_client.clone() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsRsaKeyring.dfy(49,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsRsaKeyring.dfy(50,5) pub fn paddingScheme(&self) -> Arc { self.__i_paddingScheme.clone() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsRsaKeyring.dfy(47,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsRsaKeyring.dfy(48,5) pub fn awsKmsKey(&self) -> Sequence { self.__i_awsKmsKey.clone() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsRsaKeyring.dfy(50,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsRsaKeyring.dfy(51,5) pub fn publicKey(&self) -> Arc>> { self.__i_publicKey.clone() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsRsaKeyring.dfy(48,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsRsaKeyring.dfy(49,5) pub fn awsKmsArn(&self) -> Arc { self.__i_awsKmsArn.clone() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsRsaKeyring.dfy(46,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsRsaKeyring.dfy(47,5) pub fn grantTokens(&self) -> GrantTokenList { self.__i_grantTokens.clone() } @@ -80096,10 +80106,10 @@ pub mod _AwsKmsRsaKeyring_Compile { impl IKeyring for AwsKmsRsaKeyring { - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsRsaKeyring.dfy(115,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsRsaKeyring.dfy(137,5) fn _OnEncrypt_k(&self, input: &Arc) -> Arc, Arc>> { let mut res = MaybePlacebo::, Arc>>>::new(); - let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(matches!((&self.publicKey().clone()).as_ref(), Some{ .. }) && int!(0) < self.publicKey().clone().Extract().cardinality(), &Arc::new(crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::Error::AwsCryptographicMaterialProvidersException { + let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(matches!((&self.publicKey().clone()).as_ref(), Some{ .. }) && 0 < truncate!(self.publicKey().clone().Extract().cardinality(), u64), &Arc::new(crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::Error::AwsCryptographicMaterialProvidersException { message: string_utf16_of("A AwsKmsRsaKeyring without a public key cannot provide OnEncrypt") })); if valueOrError0.IsFailure() { @@ -80167,7 +80177,7 @@ pub mod _AwsKmsRsaKeyring_Compile { })); return res.read(); } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsRsaKeyring.dfy(190,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsRsaKeyring.dfy(230,5) fn _OnDecrypt_k(&self, input: &Arc) -> Arc, Arc>> { let mut res = MaybePlacebo::, Arc>>>::new(); let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(matches!((&self.client().clone()).as_ref(), Some{ .. }), &Arc::new(crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::Error::AwsCryptographicMaterialProvidersException { @@ -80209,7 +80219,7 @@ pub mod _AwsKmsRsaKeyring_Compile { return res.read(); }; let mut edksToAttempt: Sequence> = valueOrError4.Extract(); - if int!(0) == edksToAttempt.cardinality() { + if 0 == truncate!(edksToAttempt.cardinality(), u64) { let mut valueOrError5: Arc, Arc>> = crate::implementation_from_dafny::_ErrorMessages_Compile::_default::IncorrectDataKeys(input.encryptedDataKeys(), input.materials().algorithmSuite(), &string_utf16_of("")); if valueOrError5.IsFailure() { res = MaybePlacebo::from(valueOrError5.PropagateFailure::>()); @@ -80265,7 +80275,7 @@ pub mod _AwsKmsRsaKeyring_Compile { UpcastObjectFn!(dyn IKeyring); } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsRsaKeyring.dfy(304,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsRsaKeyring.dfy(345,3) pub struct DecryptSingleAWSRSAEncryptedDataKey { pub __i_materials: DecryptionMaterialsPendingPlaintextDataKey, pub __i_client: Object, @@ -80280,7 +80290,7 @@ pub mod _AwsKmsRsaKeyring_Compile { pub fn _allocate_object() -> Object { allocate_object::() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsRsaKeyring.dfy(317,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsRsaKeyring.dfy(358,5) pub fn _ctor(this: &Object, materials: &DecryptionMaterialsPendingPlaintextDataKey, client: &Object, awsKmsKey: &Sequence, paddingScheme: &Arc, encryptionContextDigest: &Sequence, grantTokens: &GrantTokenList) -> () { let mut _set___i_materials: bool = false; let mut _set___i_client: bool = false; @@ -80296,27 +80306,27 @@ pub mod _AwsKmsRsaKeyring_Compile { update_field_uninit_object!(this.clone(), __i_grantTokens, _set___i_grantTokens, grantTokens.clone()); return (); } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsRsaKeyring.dfy(310,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsRsaKeyring.dfy(351,5) pub fn materials(&self) -> DecryptionMaterialsPendingPlaintextDataKey { self.__i_materials.clone() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsRsaKeyring.dfy(311,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsRsaKeyring.dfy(352,5) pub fn client(&self) -> Object { self.__i_client.clone() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsRsaKeyring.dfy(312,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsRsaKeyring.dfy(353,5) pub fn awsKmsKey(&self) -> Sequence { self.__i_awsKmsKey.clone() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsRsaKeyring.dfy(313,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsRsaKeyring.dfy(354,5) pub fn paddingScheme(&self) -> Arc { self.__i_paddingScheme.clone() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsRsaKeyring.dfy(314,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsRsaKeyring.dfy(355,5) pub fn encryptionContextDigest(&self) -> Sequence { self.__i_encryptionContextDigest.clone() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsRsaKeyring.dfy(315,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsRsaKeyring.dfy(356,5) pub fn grantTokens(&self) -> GrantTokenList { self.__i_grantTokens.clone() } @@ -80337,7 +80347,7 @@ pub mod _AwsKmsRsaKeyring_Compile { impl Action, Arc>>> for DecryptSingleAWSRSAEncryptedDataKey { - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsRsaKeyring.dfy(385,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsRsaKeyring.dfy(430,5) fn Invoke(&self, edk: &Arc) -> Arc>> { let mut res = MaybePlacebo::>>>::new(); let mut unwrap: Object; @@ -80370,7 +80380,7 @@ pub mod _AwsKmsRsaKeyring_Compile { UpcastObjectFn!(dyn Action, Arc>>>); } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsRsaKeyring.dfy(413,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsRsaKeyring.dfy(458,3) #[derive(PartialEq, Clone)] pub enum KmsRsaUnwrapInfo { KmsRsaUnwrapInfo {} @@ -80432,7 +80442,7 @@ pub mod _AwsKmsRsaKeyring_Compile { } } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsRsaKeyring.dfy(415,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsRsaKeyring.dfy(460,3) #[derive(PartialEq, Clone)] pub enum KmsRsaWrapInfo { KmsRsaWrapInfo {} @@ -80494,7 +80504,7 @@ pub mod _AwsKmsRsaKeyring_Compile { } } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsRsaKeyring.dfy(417,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsRsaKeyring.dfy(462,3) pub struct KmsRsaGenerateAndWrapKeyMaterial { pub __i_publicKey: Sequence, pub __i_cryptoPrimitives: Object, @@ -80506,7 +80516,7 @@ pub mod _AwsKmsRsaKeyring_Compile { pub fn _allocate_object() -> Object { allocate_object::() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsRsaKeyring.dfy(424,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsRsaKeyring.dfy(469,5) pub fn _ctor(this: &Object, publicKey: &Sequence, paddingScheme: &Arc, cryptoPrimitives: &Object) -> () { let mut _set___i_publicKey: bool = false; let mut _set___i_cryptoPrimitives: bool = false; @@ -80516,15 +80526,15 @@ pub mod _AwsKmsRsaKeyring_Compile { update_field_uninit_object!(this.clone(), __i_paddingScheme, _set___i_paddingScheme, paddingScheme.clone()); return (); } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsRsaKeyring.dfy(420,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsRsaKeyring.dfy(465,5) pub fn publicKey(&self) -> Sequence { self.__i_publicKey.clone() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsRsaKeyring.dfy(422,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsRsaKeyring.dfy(467,5) pub fn cryptoPrimitives(&self) -> Object { self.__i_cryptoPrimitives.clone() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsRsaKeyring.dfy(421,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsRsaKeyring.dfy(466,5) pub fn paddingScheme(&self) -> Arc { self.__i_paddingScheme.clone() } @@ -80553,7 +80563,7 @@ pub mod _AwsKmsRsaKeyring_Compile { impl Action, Arc>>, Arc>>> for KmsRsaGenerateAndWrapKeyMaterial { - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsRsaKeyring.dfy(461,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsRsaKeyring.dfy(506,5) fn Invoke(&self, input: &Arc) -> Arc>>, Arc>> { let mut res = MaybePlacebo::>>, Arc>>>::new(); let mut generateBytesResult: Arc, Arc>>; @@ -80581,7 +80591,8 @@ pub mod _AwsKmsRsaKeyring_Compile { let mut _out1: Arc>>, Arc>> = Action::, Arc>>, Arc>>>::Invoke(rd!(wrap.clone()), &Arc::new(WrapInput::WrapInput { plaintextMaterial: plaintextMaterial.clone(), algorithmSuite: input.algorithmSuite().clone(), - encryptionContext: input.encryptionContext().clone() + encryptionContext: input.encryptionContext().clone(), + serializedEC: input.serializedEC().clone() })); valueOrError1 = _out1.clone(); if valueOrError1.IsFailure() { @@ -80606,7 +80617,7 @@ pub mod _AwsKmsRsaKeyring_Compile { UpcastObjectFn!(dyn Action, Arc>>, Arc>>>); } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsRsaKeyring.dfy(498,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsRsaKeyring.dfy(544,3) pub struct KmsRsaWrapKeyMaterial { pub __i_publicKey: Sequence, pub __i_cryptoPrimitives: Object, @@ -80618,7 +80629,7 @@ pub mod _AwsKmsRsaKeyring_Compile { pub fn _allocate_object() -> Object { allocate_object::() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsRsaKeyring.dfy(505,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsRsaKeyring.dfy(551,5) pub fn _ctor(this: &Object, publicKey: &Sequence, paddingScheme: &Arc, cryptoPrimitives: &Object) -> () { let mut _set___i_publicKey: bool = false; let mut _set___i_cryptoPrimitives: bool = false; @@ -80628,15 +80639,15 @@ pub mod _AwsKmsRsaKeyring_Compile { update_field_uninit_object!(this.clone(), __i_paddingScheme, _set___i_paddingScheme, paddingScheme.clone()); return (); } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsRsaKeyring.dfy(501,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsRsaKeyring.dfy(547,5) pub fn publicKey(&self) -> Sequence { self.__i_publicKey.clone() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsRsaKeyring.dfy(503,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsRsaKeyring.dfy(549,5) pub fn cryptoPrimitives(&self) -> Object { self.__i_cryptoPrimitives.clone() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsRsaKeyring.dfy(502,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsRsaKeyring.dfy(548,5) pub fn paddingScheme(&self) -> Arc { self.__i_paddingScheme.clone() } @@ -80665,7 +80676,7 @@ pub mod _AwsKmsRsaKeyring_Compile { impl Action, Arc>>, Arc>>> for KmsRsaWrapKeyMaterial { - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsRsaKeyring.dfy(542,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsRsaKeyring.dfy(588,5) fn Invoke(&self, input: &Arc) -> Arc>>, Arc>> { let mut res = MaybePlacebo::>>, Arc>>>::new(); let mut valueOrError0: Arc, Arc>>; @@ -80718,7 +80729,7 @@ pub mod _AwsKmsRsaKeyring_Compile { UpcastObjectFn!(dyn Action, Arc>>, Arc>>>); } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsRsaKeyring.dfy(576,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsRsaKeyring.dfy(622,3) pub struct KmsRsaUnwrapKeyMaterial { pub __i_client: Object, pub __i_grantTokens: GrantTokenList, @@ -80732,7 +80743,7 @@ pub mod _AwsKmsRsaKeyring_Compile { pub fn _allocate_object() -> Object { allocate_object::() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsRsaKeyring.dfy(585,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsRsaKeyring.dfy(631,5) pub fn _ctor(this: &Object, client: &Object, awsKmsKey: &Sequence, paddingScheme: &Arc, encryptionContextDigest: &Sequence, grantTokens: &GrantTokenList) -> () { let mut _set___i_client: bool = false; let mut _set___i_grantTokens: bool = false; @@ -80746,23 +80757,23 @@ pub mod _AwsKmsRsaKeyring_Compile { update_field_uninit_object!(this.clone(), __i_grantTokens, _set___i_grantTokens, grantTokens.clone()); return (); } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsRsaKeyring.dfy(579,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsRsaKeyring.dfy(625,5) pub fn client(&self) -> Object { self.__i_client.clone() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsRsaKeyring.dfy(583,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsRsaKeyring.dfy(629,5) pub fn grantTokens(&self) -> GrantTokenList { self.__i_grantTokens.clone() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsRsaKeyring.dfy(580,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsRsaKeyring.dfy(626,5) pub fn awsKmsKey(&self) -> Sequence { self.__i_awsKmsKey.clone() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsRsaKeyring.dfy(581,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsRsaKeyring.dfy(627,5) pub fn paddingScheme(&self) -> Arc { self.__i_paddingScheme.clone() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsRsaKeyring.dfy(582,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsRsaKeyring.dfy(628,5) pub fn encryptionContextDigest(&self) -> Sequence { self.__i_encryptionContextDigest.clone() } @@ -80791,7 +80802,7 @@ pub mod _AwsKmsRsaKeyring_Compile { impl Action, Arc>>, Arc>>> for KmsRsaUnwrapKeyMaterial { - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsRsaKeyring.dfy(644,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsRsaKeyring.dfy(690,5) fn Invoke(&self, input: &Arc) -> Arc>>, Arc>> { let mut res = MaybePlacebo::>>, Arc>>>::new(); let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(crate::implementation_from_dafny::software::amazon::cryptography::services::kms::internaldafny::types::_default::IsValid_CiphertextType(input.wrappedMaterial()), &Arc::new(crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::Error::AwsCryptographicMaterialProvidersException { @@ -80838,7 +80849,7 @@ pub mod _AwsKmsRsaKeyring_Compile { res = MaybePlacebo::from(valueOrError2.PropagateFailure::>>>()); return res.read(); }; - let mut valueOrError3: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(self.encryptionContextDigest().clone() <= decryptResponse.Plaintext().value().clone() && int!(crate::implementation_from_dafny::_AlgorithmSuites_Compile::_default::GetEncryptKeyLength(input.algorithmSuite())) + self.encryptionContextDigest().clone().cardinality() == decryptResponse.Plaintext().value().cardinality(), &Arc::new(crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::Error::AwsCryptographicMaterialProvidersException { + let mut valueOrError3: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(self.encryptionContextDigest().clone() <= decryptResponse.Plaintext().value().clone() && crate::implementation_from_dafny::_AlgorithmSuites_Compile::_default::GetEncryptKeyLength(input.algorithmSuite()) as u64 + truncate!(self.encryptionContextDigest().clone().cardinality(), u64) == truncate!(decryptResponse.Plaintext().value().cardinality(), u64), &Arc::new(crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::Error::AwsCryptographicMaterialProvidersException { message: string_utf16_of("Encryption context digest does not match expected value.") })); if valueOrError3.IsFailure() { @@ -80846,7 +80857,7 @@ pub mod _AwsKmsRsaKeyring_Compile { return res.read(); }; let mut output: Arc>> = Arc::new(UnwrapOutput::>::UnwrapOutput { - unwrappedMaterial: decryptResponse.Plaintext().value().drop(&self.encryptionContextDigest().clone().cardinality()), + unwrappedMaterial: decryptResponse.Plaintext().value().drop(&int!((&truncate!((&self.encryptionContextDigest().clone().cardinality()).clone(), u64)).clone())), unwrapInfo: Arc::new(KmsRsaUnwrapInfo::KmsRsaUnwrapInfo {}) }); res = MaybePlacebo::from(Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::>>, Arc>::Success { @@ -80873,7 +80884,7 @@ pub mod _AwsKmsUtils_Compile { pub use ::dafny_runtime::Map; pub use crate::implementation_from_dafny::UTF8::ValidUTF8Bytes; pub use crate::implementation_from_dafny::_Wrappers_Compile::Result; - pub use ::dafny_runtime::int; + pub use ::dafny_runtime::truncate; pub use ::dafny_runtime::map; pub use ::dafny_runtime::MapBuilder; pub use crate::implementation_from_dafny::_Wrappers_Compile::Result::Failure; @@ -80906,7 +80917,7 @@ pub mod _AwsKmsUtils_Compile { pub struct _default {} impl _default { - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsUtils.dfy(19,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsUtils.dfy(20,3) pub fn OkForDecrypt(id: &Arc, arn: &Sequence) -> Arc>> { if !matches!(id.as_ref(), AwsKmsArnIdentifier{ .. }) { Arc::new(Outcome::>::Fail { @@ -80926,9 +80937,9 @@ pub mod _AwsKmsUtils_Compile { } } } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsUtils.dfy(29,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsUtils.dfy(30,3) pub fn StringifyEncryptionContext(utf8EncCtx: &Map) -> Arc, Sequence>, Arc>> { - if utf8EncCtx.cardinality() == int!(0) { + if truncate!(utf8EncCtx.cardinality(), u64) == 0 { Arc::new(Result::, Sequence>, Arc>::Success { value: map![] }) @@ -81004,7 +81015,7 @@ pub mod _AwsKmsUtils_Compile { } } } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsUtils.dfy(49,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsUtils.dfy(51,3) pub fn StringifyEncryptionContextPair(utf8Key: &ValidUTF8Bytes, utf8Value: &ValidUTF8Bytes) -> Arc, Sequence), Arc>> { let mut valueOrError0: Arc, Arc>> = crate::implementation_from_dafny::UTF8::_default::Decode(utf8Key).MapFailure::>(&(Arc::new(move |x0: &Sequence| _default::WrapStringToError(x0)) as Arc _ + Sync + Send>)); if valueOrError0.IsFailure() { @@ -81025,13 +81036,13 @@ pub mod _AwsKmsUtils_Compile { } } } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsUtils.dfy(63,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsUtils.dfy(65,3) pub fn WrapStringToError(e: &Sequence) -> Arc { Arc::new(crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::Error::AwsCryptographicMaterialProvidersException { message: e.clone() }) } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsUtils.dfy(69,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsUtils.dfy(71,3) pub fn ValidateKmsKeyId(keyId: &Sequence) -> Arc>> { let mut valueOrError0: Arc, Arc>> = crate::implementation_from_dafny::_AwsArnParsing_Compile::_default::ParseAwsKmsIdentifier(keyId).MapFailure::>(&(Arc::new(move |x0: &Sequence| _default::WrapStringToError(x0)) as Arc _ + Sync + Send>)); if valueOrError0.IsFailure() { @@ -81044,7 +81055,7 @@ pub mod _AwsKmsUtils_Compile { if valueOrError1.IsFailure() { valueOrError1.PropagateFailure::<()>() } else { - let mut valueOrError2: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(int!(0) < keyId.cardinality() && keyId.cardinality() <= crate::implementation_from_dafny::_AwsArnParsing_Compile::_default::MAX_AWS_KMS_IDENTIFIER_LENGTH(), &Arc::new(crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::Error::AwsCryptographicMaterialProvidersException { + let mut valueOrError2: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(0 < truncate!(keyId.cardinality(), u64) && truncate!(keyId.cardinality(), u64) <= crate::implementation_from_dafny::_AwsArnParsing_Compile::_default::MAX_AWS_KMS_IDENTIFIER_LENGTH(), &Arc::new(crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::Error::AwsCryptographicMaterialProvidersException { message: string_utf16_of("Key identifier is too long") })); if valueOrError2.IsFailure() { @@ -81057,10 +81068,10 @@ pub mod _AwsKmsUtils_Compile { } } } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsUtils.dfy(87,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsUtils.dfy(90,3) pub fn GetValidGrantTokens(grantTokens: &Arc>>>) -> Arc>, Arc>> { let mut tokens: Sequence> = grantTokens.UnwrapOr(&(seq![] as Sequence>)); - let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(int!(0) <= tokens.cardinality() && tokens.cardinality() <= int!(10), &Arc::new(crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::Error::AwsCryptographicMaterialProvidersException { + let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(0 <= truncate!(tokens.cardinality(), u64) && truncate!(tokens.cardinality(), u64) <= 10, &Arc::new(crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::Error::AwsCryptographicMaterialProvidersException { message: string_utf16_of("Grant token list can have no more than 10 tokens") })); if valueOrError0.IsFailure() { @@ -81070,7 +81081,7 @@ pub mod _AwsKmsUtils_Compile { let mut tokens = tokens.clone(); Arc::new(move |__forall_var_0: Sequence| -> bool{ let mut token: Sequence = __forall_var_0.clone(); - !tokens.contains(&token) || int!(1) <= token.cardinality() && token.cardinality() <= int!(8192) + !tokens.contains(&token) || 1 <= truncate!(token.cardinality(), u64) && truncate!(token.cardinality(), u64) <= 8192 }) }).as_ref()), &Arc::new(crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::Error::AwsCryptographicMaterialProvidersException { message: string_utf16_of("Grant token list contains a grant token with invalid length") @@ -81084,7 +81095,7 @@ pub mod _AwsKmsUtils_Compile { } } } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsUtils.dfy(105,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsUtils.dfy(110,3) pub fn GetEcdhPublicKey(client: &Object, awsKmsKey: &Sequence) -> Arc>> { let mut res = MaybePlacebo::>>>::new(); let mut getPublicKeyRequest: Arc = Arc::new(GetPublicKeyRequest::GetPublicKeyRequest { @@ -81118,7 +81129,7 @@ pub mod _AwsKmsUtils_Compile { })); return res.read(); } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsUtils.dfy(154,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsUtils.dfy(159,3) pub fn ParseKeyNamespaceAndName(keyNamespace: &Sequence, keyName: &Sequence) -> Arc>> { let mut valueOrError0: Arc>> = crate::implementation_from_dafny::UTF8::_default::Encode(keyNamespace).MapFailure::>(&({ Arc::new(move |e: &Sequence| -> Arc{ @@ -81131,7 +81142,7 @@ pub mod _AwsKmsUtils_Compile { valueOrError0.PropagateFailure::<(ValidUTF8Bytes, ValidUTF8Bytes)>() } else { let mut namespace: ValidUTF8Bytes = valueOrError0.Extract(); - let mut valueOrError1: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(namespace.cardinality() < crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default::UINT16_LIMIT(), &Arc::new(crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::Error::AwsCryptographicMaterialProvidersException { + let mut valueOrError1: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(truncate!(namespace.cardinality(), u64) < truncate!(crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default::UINT16_LIMIT(), u64), &Arc::new(crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::Error::AwsCryptographicMaterialProvidersException { message: string_utf16_of("Key namespace too long") })); if valueOrError1.IsFailure() { @@ -81148,7 +81159,7 @@ pub mod _AwsKmsUtils_Compile { valueOrError2.PropagateFailure::<(ValidUTF8Bytes, ValidUTF8Bytes)>() } else { let mut name: ValidUTF8Bytes = valueOrError2.Extract(); - let mut valueOrError3: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(name.cardinality() < crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default::UINT16_LIMIT(), &Arc::new(crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::Error::AwsCryptographicMaterialProvidersException { + let mut valueOrError3: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(truncate!(name.cardinality(), u64) < truncate!(crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default::UINT16_LIMIT(), u64), &Arc::new(crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::Error::AwsCryptographicMaterialProvidersException { message: string_utf16_of("Key name too long") })); if valueOrError3.IsFailure() { @@ -81165,9 +81176,9 @@ pub mod _AwsKmsUtils_Compile { } } } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsUtils.dfy(178,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsUtils.dfy(185,3) pub fn ValidateDiscoveryFilter(filter: &Arc) -> Arc>> { - let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(int!(0) < filter.accountIds().cardinality(), &Arc::new(crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::Error::AwsCryptographicMaterialProvidersException { + let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(0 < truncate!(filter.accountIds().cardinality(), u64), &Arc::new(crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::Error::AwsCryptographicMaterialProvidersException { message: string_utf16_of("Discovery filter must have at least one account ID") })); if valueOrError0.IsFailure() { @@ -81177,7 +81188,7 @@ pub mod _AwsKmsUtils_Compile { let mut filter = filter.clone(); Arc::new(move |__forall_var_0: Sequence| -> bool{ let mut accountId: Sequence = __forall_var_0.clone(); - !filter.accountIds().contains(&accountId) || int!(0) < accountId.cardinality() + !filter.accountIds().contains(&accountId) || 0 < truncate!(accountId.cardinality(), u64) }) }).as_ref()), &Arc::new(crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::Error::AwsCryptographicMaterialProvidersException { message: string_utf16_of("Discovery filter account IDs cannot be blank") @@ -81185,7 +81196,7 @@ pub mod _AwsKmsUtils_Compile { if valueOrError1.IsFailure() { valueOrError1.PropagateFailure::<()>() } else { - let mut valueOrError2: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(int!(0) < filter.partition().cardinality(), &Arc::new(crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::Error::AwsCryptographicMaterialProvidersException { + let mut valueOrError2: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(0 < truncate!(filter.partition().cardinality(), u64), &Arc::new(crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::Error::AwsCryptographicMaterialProvidersException { message: string_utf16_of("Discovery filter partition cannot be blank") })); if valueOrError2.IsFailure() { @@ -81200,7 +81211,7 @@ pub mod _AwsKmsUtils_Compile { } } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsUtils.dfy(197,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsUtils.dfy(207,3) pub struct OnDecryptMrkAwareEncryptedDataKeyFilter { pub __i_awsKmsKey: Arc, pub __i_providerId: ValidUTF8Bytes @@ -81211,7 +81222,7 @@ pub mod _AwsKmsUtils_Compile { pub fn _allocate_object() -> Object { allocate_object::() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsUtils.dfy(205,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsUtils.dfy(215,5) pub fn _ctor(this: &Object, awsKmsKey: &Arc, providerId: &ValidUTF8Bytes) -> () { let mut _set___i_awsKmsKey: bool = false; let mut _set___i_providerId: bool = false; @@ -81219,11 +81230,11 @@ pub mod _AwsKmsUtils_Compile { update_field_uninit_object!(this.clone(), __i_providerId, _set___i_providerId, providerId.clone()); return (); } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsUtils.dfy(200,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsUtils.dfy(210,5) pub fn awsKmsKey(&self) -> Arc { self.__i_awsKmsKey.clone() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsUtils.dfy(201,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsUtils.dfy(211,5) pub fn providerId(&self) -> ValidUTF8Bytes { self.__i_providerId.clone() } @@ -81244,7 +81255,7 @@ pub mod _AwsKmsUtils_Compile { impl DeterministicAction, Arc>>> for OnDecryptMrkAwareEncryptedDataKeyFilter { - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsUtils.dfy(229,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/AwsKmsUtils.dfy(239,5) fn Invoke(&self, edk: &Arc) -> Arc>> { let mut res = MaybePlacebo::>>>::new(); if edk.keyProviderId().clone() != self.providerId().clone() { @@ -81291,17 +81302,16 @@ pub mod _AwsKmsUtils_Compile { pub mod _Base64_Compile { pub use ::dafny_runtime::DafnyCharUTF16; pub use ::dafny_runtime::Sequence; - pub use ::dafny_runtime::euclidian_modulo; + pub use ::std::default::Default; + pub use ::dafny_runtime::truncate; + pub use ::dafny_runtime::integer_range; + pub use ::std::convert::Into; pub use ::dafny_runtime::int; - pub use ::dafny_runtime::itertools::Itertools; - pub use ::std::sync::Arc; - pub use ::dafny_runtime::NumCast; pub use ::dafny_runtime::seq; - pub use ::dafny_runtime::DafnyInt; - pub use ::dafny_runtime::integer_range; - pub use ::dafny_runtime::Zero; + pub use ::dafny_runtime::MaybePlacebo; + pub use ::std::sync::Arc; pub use ::dafny_runtime::string_utf16_of; - pub use ::std::default::Default; + pub use ::dafny_runtime::DafnyInt; pub use ::dafny_runtime::DafnyPrint; pub use ::std::fmt::Formatter; pub use ::std::ops::Deref; @@ -81319,21 +81329,29 @@ pub mod _Base64_Compile { pub struct _default {} impl _default { - /// ../submodules/MaterialProviders/StandardLibrary/src/Base64.dfy(20,3) + /// ../submodules/MaterialProviders/StandardLibrary/src/Base64.dfy(21,3) pub fn IsBase64Char(c: &DafnyCharUTF16) -> bool { c.clone() == DafnyCharUTF16(43 as u16) || c.clone() == DafnyCharUTF16(47 as u16) || DafnyCharUTF16(48 as u16) <= c.clone() && c.clone() <= DafnyCharUTF16(57 as u16) || DafnyCharUTF16(65 as u16) <= c.clone() && c.clone() <= DafnyCharUTF16(90 as u16) || DafnyCharUTF16(97 as u16) <= c.clone() && c.clone() <= DafnyCharUTF16(122 as u16) } - /// ../submodules/MaterialProviders/StandardLibrary/src/Base64.dfy(26,3) + /// ../submodules/MaterialProviders/StandardLibrary/src/Base64.dfy(27,3) pub fn IsUnpaddedBase64String(s: &Sequence) -> bool { - euclidian_modulo(s.cardinality(), int!(4)) == int!(0) && Itertools::unique(s.iter()).all(({ - let mut s = s.clone(); - Arc::new(move |__forall_var_0: DafnyCharUTF16| -> bool{ - let mut k: DafnyCharUTF16 = __forall_var_0.clone(); - !s.contains(&k) || _default::IsBase64Char(&k) - }) - }).as_ref()) + let mut _hresult: bool = ::default(); + let mut size: u64 = truncate!(s.cardinality(), u64); + if size % 4 != 0 { + _hresult = false; + return _hresult; + }; + let mut _hi0: u64 = size; + for i in integer_range(0, _hi0).map(Into::::into) { + if !_default::IsBase64Char(&s.get(&int!((&i).clone()))) { + _hresult = false; + return _hresult; + } + } + _hresult = true; + return _hresult; } - /// ../submodules/MaterialProviders/StandardLibrary/src/Base64.dfy(31,3) + /// ../submodules/MaterialProviders/StandardLibrary/src/Base64.dfy(46,3) pub fn IndexToChar(i: u8) -> DafnyCharUTF16 { if i == 63 { DafnyCharUTF16(47 as u16) @@ -81345,15 +81363,15 @@ pub mod _Base64_Compile { DafnyCharUTF16((i - 4) as u16) } else { if 26 <= i && i <= 51 { - DafnyCharUTF16(i as u16) + DafnyCharUTF16(::from(int!(71)).unwrap()) + DafnyCharUTF16((i + 71) as u16) } else { - DafnyCharUTF16(i as u16) + DafnyCharUTF16(::from(int!(65)).unwrap()) + DafnyCharUTF16((i + 65) as u16) } } } } } - /// ../submodules/MaterialProviders/StandardLibrary/src/Base64.dfy(47,3) + /// ../submodules/MaterialProviders/StandardLibrary/src/Base64.dfy(62,3) pub fn CharToIndex(c: &DafnyCharUTF16) -> u8 { if c.clone() == DafnyCharUTF16(47 as u16) { 63 @@ -81362,18 +81380,18 @@ pub mod _Base64_Compile { 62 } else { if DafnyCharUTF16(48 as u16) <= c.clone() && c.clone() <= DafnyCharUTF16(57 as u16) { - (c.clone() + DafnyCharUTF16(::from(int!(4)).unwrap())).0 as u8 + c.clone().0 as u8 + 4 } else { if DafnyCharUTF16(97 as u16) <= c.clone() && c.clone() <= DafnyCharUTF16(122 as u16) { - (c.clone() - DafnyCharUTF16(::from(int!(71)).unwrap())).0 as u8 + c.clone().0 as u8 - 71 } else { - (c.clone() - DafnyCharUTF16(::from(int!(65)).unwrap())).0 as u8 + c.clone().0 as u8 - 65 } } } } } - /// ../submodules/MaterialProviders/StandardLibrary/src/Base64.dfy(68,3) + /// ../submodules/MaterialProviders/StandardLibrary/src/Base64.dfy(83,3) pub fn UInt24ToSeq(x: u32) -> Sequence { let mut b0: u8 = (x / 65536) as u8; let mut x0: u32 = x - b0 as u32 * 65536; @@ -81381,11 +81399,15 @@ pub mod _Base64_Compile { let mut b2: u8 = (x0 % 256) as u8; seq![b0, b1, b2] } - /// ../submodules/MaterialProviders/StandardLibrary/src/Base64.dfy(80,3) + /// ../submodules/MaterialProviders/StandardLibrary/src/Base64.dfy(95,3) pub fn SeqToUInt24(s: &Sequence) -> u32 { - s.get(&int!(0)) as u32 * 65536 + s.get(&int!(1)) as u32 * 256 + s.get(&int!(2)) as u32 + s.get(&int!((&truncate!((&int!(0)).clone(), u32)).clone())) as u32 * 65536 + s.get(&int!((&truncate!((&int!(1)).clone(), u32)).clone())) as u32 * 256 + s.get(&int!((&truncate!((&int!(2)).clone(), u32)).clone())) as u32 } - /// ../submodules/MaterialProviders/StandardLibrary/src/Base64.dfy(96,3) + /// ../submodules/MaterialProviders/StandardLibrary/src/Base64.dfy(102,3) + pub fn SeqPosToUInt24(s: &Sequence, pos: u64) -> u32 { + s.get(&int!((&pos).clone())) as u32 * 65536 + s.get(&int!((&(pos + 1)).clone())) as u32 * 256 + s.get(&int!((&(pos + 2)).clone())) as u32 + } + /// ../submodules/MaterialProviders/StandardLibrary/src/Base64.dfy(119,3) pub fn UInt24ToIndexSeq(x: u32) -> Sequence { let mut b0: u8 = (x / 262144) as u8; let mut x0: u32 = x - b0 as u32 * 262144; @@ -81395,130 +81417,127 @@ pub mod _Base64_Compile { let mut b3: u8 = (x1 % 64) as u8; seq![b0, b1, b2, b3] } - /// ../submodules/MaterialProviders/StandardLibrary/src/Base64.dfy(114,3) + /// ../submodules/MaterialProviders/StandardLibrary/src/Base64.dfy(137,3) pub fn IndexSeqToUInt24(s: &Sequence) -> u32 { - s.get(&int!(0)) as u32 * 262144 + s.get(&int!(1)) as u32 * 4096 + s.get(&int!(2)) as u32 * 64 + s.get(&int!(3)) as u32 + s.get(&int!((&truncate!((&int!(0)).clone(), u32)).clone())) as u32 * 262144 + s.get(&int!((&truncate!((&int!(1)).clone(), u32)).clone())) as u32 * 4096 + s.get(&int!((&truncate!((&int!(2)).clone(), u32)).clone())) as u32 * 64 + s.get(&int!((&truncate!((&int!(3)).clone(), u32)).clone())) as u32 + } + /// ../submodules/MaterialProviders/StandardLibrary/src/Base64.dfy(144,3) + pub fn IndexSeqPosToUInt24(s: &Sequence, pos: u64) -> u32 { + s.get(&int!((&pos).clone())) as u32 * 262144 + s.get(&int!((&(pos + 1)).clone())) as u32 * 4096 + s.get(&int!((&(pos + 2)).clone())) as u32 * 64 + s.get(&int!((&(pos + 3)).clone())) as u32 } - /// ../submodules/MaterialProviders/StandardLibrary/src/Base64.dfy(130,3) + /// ../submodules/MaterialProviders/StandardLibrary/src/Base64.dfy(161,3) pub fn DecodeBlock(s: &Sequence) -> Sequence { _default::UInt24ToSeq(_default::IndexSeqToUInt24(s)) } - /// ../submodules/MaterialProviders/StandardLibrary/src/Base64.dfy(138,3) + /// ../submodules/MaterialProviders/StandardLibrary/src/Base64.dfy(169,3) + pub fn DecodeBlockPos(s: &Sequence, pos: u64) -> Sequence { + _default::UInt24ToSeq(_default::IndexSeqPosToUInt24(s, pos)) + } + /// ../submodules/MaterialProviders/StandardLibrary/src/Base64.dfy(178,3) pub fn EncodeBlock(s: &Sequence) -> Sequence { _default::UInt24ToIndexSeq(_default::SeqToUInt24(s)) } - /// ../submodules/MaterialProviders/StandardLibrary/src/Base64.dfy(157,3) + /// ../submodules/MaterialProviders/StandardLibrary/src/Base64.dfy(187,3) + pub fn EncodeBlockPos(s: &Sequence, pos: u64) -> Sequence { + _default::UInt24ToIndexSeq(_default::SeqPosToUInt24(s, pos)) + } + /// ../submodules/MaterialProviders/StandardLibrary/src/Base64.dfy(206,3) pub fn DecodeRecursively(s: &Sequence) -> Sequence { - let mut _accumulator: Sequence = seq![] as Sequence; - let mut _r0 = s.clone(); - 'TAIL_CALL_START: loop { - let s = _r0; - if s.cardinality() == int!(0) { - return _accumulator.concat(&(seq![] as Sequence)); - } else { - _accumulator = _accumulator.concat(&_default::DecodeBlock(&s.take(&int!(4)))); - let mut _in0: Sequence = s.drop(&int!(4)); - _r0 = _in0.clone(); - continue 'TAIL_CALL_START; - } - } + let mut b = MaybePlacebo::>::new(); + let mut i: u64 = truncate!(s.cardinality(), u64); + let mut result: Sequence = seq![] as Sequence; + while 0 < i { + result = _default::DecodeBlockPos(s, i - 4).concat(&result); + i = i - 4; + }; + b = MaybePlacebo::from(result.clone()); + return b.read(); } - /// ../submodules/MaterialProviders/StandardLibrary/src/Base64.dfy(169,3) + /// ../submodules/MaterialProviders/StandardLibrary/src/Base64.dfy(232,3) pub fn EncodeRecursively(b: &Sequence) -> Sequence { - let mut _accumulator: Sequence = seq![] as Sequence; - let mut _r0 = b.clone(); - 'TAIL_CALL_START: loop { - let b = _r0; - if b.cardinality() == int!(0) { - return _accumulator.concat(&(seq![] as Sequence)); - } else { - _accumulator = _accumulator.concat(&_default::EncodeBlock(&b.take(&int!(3)))); - let mut _in0: Sequence = b.drop(&int!(3)); - _r0 = _in0.clone(); - continue 'TAIL_CALL_START; - } - } + let mut s = MaybePlacebo::>::new(); + let mut i: u64 = truncate!(b.cardinality(), u64); + let mut result: Sequence = seq![] as Sequence; + while 0 < i { + result = _default::EncodeBlockPos(b, i - 3).concat(&result); + i = i - 3; + }; + s = MaybePlacebo::from(result.clone()); + return s.read(); } - /// ../submodules/MaterialProviders/StandardLibrary/src/Base64.dfy(189,3) + /// ../submodules/MaterialProviders/StandardLibrary/src/Base64.dfy(266,3) pub fn FromCharsToIndices(s: &Sequence) -> Sequence { - { - let _initializer = { - let s: Sequence = s.clone(); - { - let mut s = s.clone(); - Arc::new(move |i: &DafnyInt| -> u8{ - _default::CharToIndex(&s.get(i)) - }) - } - }; - integer_range(Zero::zero(), s.cardinality()).map(move |i| _initializer(&i)).collect::>() + let mut b = MaybePlacebo::>::new(); + let mut result: Sequence = seq![] as Sequence; + let mut _hi0: u64 = truncate!(s.cardinality(), u64); + for i in integer_range(0, _hi0).map(Into::::into) { + result = result.concat(&seq![_default::CharToIndex(&s.get(&int!((&i).clone())))]); } + b = MaybePlacebo::from(result.clone()); + return b.read(); } - /// ../submodules/MaterialProviders/StandardLibrary/src/Base64.dfy(197,3) + /// ../submodules/MaterialProviders/StandardLibrary/src/Base64.dfy(284,3) pub fn FromIndicesToChars(b: &Sequence) -> Sequence { - { - let _initializer = { - let b: Sequence = b.clone(); - { - let mut b = b.clone(); - Arc::new(move |i: &DafnyInt| -> DafnyCharUTF16{ - _default::IndexToChar(b.get(i)) - }) - } - }; - integer_range(Zero::zero(), b.cardinality()).map(move |i| _initializer(&i)).collect::>() + let mut s = MaybePlacebo::>::new(); + let mut result: Sequence = seq![] as Sequence; + let mut _hi0: u64 = truncate!(b.cardinality(), u64); + for i in integer_range(0, _hi0).map(Into::::into) { + result = result.concat(&seq![_default::IndexToChar(b.get(&int!((&i).clone())))]); } + s = MaybePlacebo::from(result.clone()); + return s.read(); } - /// ../submodules/MaterialProviders/StandardLibrary/src/Base64.dfy(215,3) + /// ../submodules/MaterialProviders/StandardLibrary/src/Base64.dfy(311,3) pub fn DecodeUnpadded(s: &Sequence) -> Sequence { _default::DecodeRecursively(&_default::FromCharsToIndices(s)) } - /// ../submodules/MaterialProviders/StandardLibrary/src/Base64.dfy(223,3) + /// ../submodules/MaterialProviders/StandardLibrary/src/Base64.dfy(319,3) pub fn EncodeUnpadded(b: &Sequence) -> Sequence { _default::FromIndicesToChars(&_default::EncodeRecursively(b)) } - /// ../submodules/MaterialProviders/StandardLibrary/src/Base64.dfy(263,3) + /// ../submodules/MaterialProviders/StandardLibrary/src/Base64.dfy(359,3) pub fn Is1Padding(s: &Sequence) -> bool { - s.cardinality() == int!(4) && _default::IsBase64Char(&s.get(&int!(0))) && _default::IsBase64Char(&s.get(&int!(1))) && _default::IsBase64Char(&s.get(&int!(2))) && _default::CharToIndex(&s.get(&int!(2))) % 4 == 0 && s.get(&int!(3)) == DafnyCharUTF16(61 as u16) + truncate!(s.cardinality(), u64) == 4 && _default::IsBase64Char(&s.get(&int!((&truncate!((&int!(0)).clone(), u32)).clone()))) && _default::IsBase64Char(&s.get(&int!((&truncate!((&int!(1)).clone(), u32)).clone()))) && _default::IsBase64Char(&s.get(&int!((&truncate!((&int!(2)).clone(), u32)).clone()))) && _default::CharToIndex(&s.get(&int!((&truncate!((&int!(2)).clone(), u32)).clone()))) % 4 == 0 && s.get(&int!((&truncate!((&int!(3)).clone(), u32)).clone())) == DafnyCharUTF16(61 as u16) } - /// ../submodules/MaterialProviders/StandardLibrary/src/Base64.dfy(273,3) + /// ../submodules/MaterialProviders/StandardLibrary/src/Base64.dfy(370,3) pub fn Decode1Padding(s: &Sequence) -> Sequence { - let mut d: Sequence = _default::DecodeBlock(&seq![_default::CharToIndex(&s.get(&int!(0))), _default::CharToIndex(&s.get(&int!(1))), _default::CharToIndex(&s.get(&int!(2))), 0]); - seq![d.get(&int!(0)), d.get(&int!(1))] + let mut d: Sequence = _default::DecodeBlock(&seq![_default::CharToIndex(&s.get(&int!((&truncate!((&int!(0)).clone(), u32)).clone()))), _default::CharToIndex(&s.get(&int!((&truncate!((&int!(1)).clone(), u32)).clone()))), _default::CharToIndex(&s.get(&int!((&truncate!((&int!(2)).clone(), u32)).clone()))), 0]); + seq![d.get(&int!((&truncate!((&int!(0)).clone(), u32)).clone())), d.get(&int!((&truncate!((&int!(1)).clone(), u32)).clone()))] } - /// ../submodules/MaterialProviders/StandardLibrary/src/Base64.dfy(282,3) + /// ../submodules/MaterialProviders/StandardLibrary/src/Base64.dfy(379,3) pub fn Encode1Padding(b: &Sequence) -> Sequence { - let mut e: Sequence = _default::EncodeBlock(&seq![b.get(&int!(0)), b.get(&int!(1)), 0]); - seq![_default::IndexToChar(e.get(&int!(0))), _default::IndexToChar(e.get(&int!(1))), _default::IndexToChar(e.get(&int!(2))), DafnyCharUTF16(61 as u16)] + let mut e: Sequence = _default::EncodeBlock(&seq![b.get(&int!((&truncate!((&int!(0)).clone(), u32)).clone())), b.get(&int!((&truncate!((&int!(1)).clone(), u32)).clone())), 0]); + seq![_default::IndexToChar(e.get(&int!((&truncate!((&int!(0)).clone(), u32)).clone()))), _default::IndexToChar(e.get(&int!((&truncate!((&int!(1)).clone(), u32)).clone()))), _default::IndexToChar(e.get(&int!((&truncate!((&int!(2)).clone(), u32)).clone()))), DafnyCharUTF16(61 as u16)] } - /// ../submodules/MaterialProviders/StandardLibrary/src/Base64.dfy(303,3) + /// ../submodules/MaterialProviders/StandardLibrary/src/Base64.dfy(400,3) pub fn Is2Padding(s: &Sequence) -> bool { - s.cardinality() == int!(4) && _default::IsBase64Char(&s.get(&int!(0))) && _default::IsBase64Char(&s.get(&int!(1))) && _default::CharToIndex(&s.get(&int!(1))) % 16 == 0 && s.get(&int!(2)) == DafnyCharUTF16(61 as u16) && s.get(&int!(3)) == DafnyCharUTF16(61 as u16) + truncate!(s.cardinality(), u64) == 4 && _default::IsBase64Char(&s.get(&int!((&truncate!((&int!(0)).clone(), u32)).clone()))) && _default::IsBase64Char(&s.get(&int!((&truncate!((&int!(1)).clone(), u32)).clone()))) && _default::CharToIndex(&s.get(&int!((&truncate!((&int!(1)).clone(), u32)).clone()))) % 16 == 0 && s.get(&int!((&truncate!((&int!(2)).clone(), u32)).clone())) == DafnyCharUTF16(61 as u16) && s.get(&int!((&truncate!((&int!(3)).clone(), u32)).clone())) == DafnyCharUTF16(61 as u16) } - /// ../submodules/MaterialProviders/StandardLibrary/src/Base64.dfy(313,3) + /// ../submodules/MaterialProviders/StandardLibrary/src/Base64.dfy(411,3) pub fn Decode2Padding(s: &Sequence) -> Sequence { - let mut d: Sequence = _default::DecodeBlock(&seq![_default::CharToIndex(&s.get(&int!(0))), _default::CharToIndex(&s.get(&int!(1))), 0, 0]); - seq![d.get(&int!(0))] + let mut d: Sequence = _default::DecodeBlock(&seq![_default::CharToIndex(&s.get(&int!((&truncate!((&int!(0)).clone(), u32)).clone()))), _default::CharToIndex(&s.get(&int!((&truncate!((&int!(1)).clone(), u32)).clone()))), 0, 0]); + seq![d.get(&int!((&truncate!((&int!(0)).clone(), u32)).clone()))] } /// Padding with 2 = implies the sequence represents 1 bytes - /// ../submodules/MaterialProviders/StandardLibrary/src/Base64.dfy(322,3) + /// ../submodules/MaterialProviders/StandardLibrary/src/Base64.dfy(420,3) pub fn Encode2Padding(b: &Sequence) -> Sequence { - let mut e: Sequence = _default::EncodeBlock(&seq![b.get(&int!(0)), 0, 0]); - seq![_default::IndexToChar(e.get(&int!(0))), _default::IndexToChar(e.get(&int!(1))), DafnyCharUTF16(61 as u16), DafnyCharUTF16(61 as u16)] + let mut e: Sequence = _default::EncodeBlock(&seq![b.get(&int!((&truncate!((&int!(0)).clone(), u32)).clone())), 0, 0]); + seq![_default::IndexToChar(e.get(&int!((&truncate!((&int!(0)).clone(), u32)).clone()))), _default::IndexToChar(e.get(&int!((&truncate!((&int!(1)).clone(), u32)).clone()))), DafnyCharUTF16(61 as u16), DafnyCharUTF16(61 as u16)] } - /// ../submodules/MaterialProviders/StandardLibrary/src/Base64.dfy(344,3) + /// ../submodules/MaterialProviders/StandardLibrary/src/Base64.dfy(442,3) pub fn IsBase64String(s: &Sequence) -> bool { - let mut finalBlockStart: DafnyInt = s.cardinality() - int!(4); - euclidian_modulo(s.cardinality(), int!(4)) == int!(0) && (_default::IsUnpaddedBase64String(s) || _default::IsUnpaddedBase64String(&s.take(&finalBlockStart)) && (_default::Is1Padding(&s.drop(&finalBlockStart)) || _default::Is2Padding(&s.drop(&finalBlockStart)))) + let mut size: u64 = truncate!(s.cardinality(), u64); + size % 4 == 0 && (_default::IsUnpaddedBase64String(s) || _default::IsUnpaddedBase64String(&s.take(&int!((&(size - 4)).clone()))) && (_default::Is1Padding(&s.drop(&int!((&(size - 4)).clone()))) || _default::Is2Padding(&s.drop(&int!((&(size - 4)).clone()))))) } - /// ../submodules/MaterialProviders/StandardLibrary/src/Base64.dfy(352,3) + /// ../submodules/MaterialProviders/StandardLibrary/src/Base64.dfy(451,3) pub fn DecodeValid(s: &Sequence) -> Sequence { - if s.clone().to_array().len() == 0 { + let mut size: u64 = truncate!(s.cardinality(), u64); + if size == 0 { seq![] as Sequence } else { - let mut finalBlockStart: DafnyInt = s.cardinality() - int!(4); - let mut prefix: Sequence = s.take(&finalBlockStart); - let mut suffix: Sequence = s.drop(&finalBlockStart); + let mut finalBlockStart: u64 = size - 4; + let mut prefix: Sequence = s.take(&int!((&finalBlockStart).clone())); + let mut suffix: Sequence = s.drop(&int!((&finalBlockStart).clone())); if _default::Is1Padding(&suffix) { _default::DecodeUnpadded(&prefix).concat(&_default::Decode1Padding(&suffix)) } else { @@ -81530,7 +81549,7 @@ pub mod _Base64_Compile { } } } - /// ../submodules/MaterialProviders/StandardLibrary/src/Base64.dfy(403,3) + /// ../submodules/MaterialProviders/StandardLibrary/src/Base64.dfy(504,3) pub fn Decode(s: &Sequence) -> Arc, Sequence>> { if _default::IsBase64String(s) { Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::, Sequence>::Success { @@ -81542,20 +81561,22 @@ pub mod _Base64_Compile { }) } } - /// ../submodules/MaterialProviders/StandardLibrary/src/Base64.dfy(421,3) + /// ../submodules/MaterialProviders/StandardLibrary/src/Base64.dfy(522,3) pub fn Encode(b: &Sequence) -> Sequence { - if euclidian_modulo(b.cardinality(), int!(3)) == int!(0) { + let mut size: u64 = truncate!(b.cardinality(), u64); + let mut r#mod: u64 = size % 3; + if r#mod == 0 { let mut s: Sequence = _default::EncodeUnpadded(b); s.clone() } else { - if euclidian_modulo(b.cardinality(), int!(3)) == int!(1) { - let mut s1: Sequence = _default::EncodeUnpadded(&b.take(&(b.cardinality() - int!(1)))); - let mut s2: Sequence = _default::Encode2Padding(&b.drop(&(b.cardinality() - int!(1)))); + if r#mod == 1 { + let mut s1: Sequence = _default::EncodeUnpadded(&b.take(&int!((&(size - 1)).clone()))); + let mut s2: Sequence = _default::Encode2Padding(&b.drop(&int!((&(size - 1)).clone()))); let mut s: Sequence = s1.concat(&s2); s.clone() } else { - let mut s1: Sequence = _default::EncodeUnpadded(&b.take(&(b.cardinality() - int!(2)))); - let mut s2: Sequence = _default::Encode1Padding(&b.drop(&(b.cardinality() - int!(2)))); + let mut s1: Sequence = _default::EncodeUnpadded(&b.take(&int!((&(size - 2)).clone()))); + let mut s2: Sequence = _default::Encode1Padding(&b.drop(&int!((&(size - 2)).clone()))); let mut s: Sequence = s1.concat(&s2); s.clone() } @@ -81563,7 +81584,7 @@ pub mod _Base64_Compile { } } - /// ../submodules/MaterialProviders/StandardLibrary/src/Base64.dfy(15,3) + /// ../submodules/MaterialProviders/StandardLibrary/src/Base64.dfy(16,3) #[derive(Clone, PartialEq, Copy)] #[repr(transparent)] pub struct index(pub u8); @@ -81655,7 +81676,7 @@ pub mod _Base64_Compile { } } - /// ../submodules/MaterialProviders/StandardLibrary/src/Base64.dfy(18,3) + /// ../submodules/MaterialProviders/StandardLibrary/src/Base64.dfy(19,3) #[derive(Clone, PartialEq, Copy)] #[repr(transparent)] pub struct uint24(pub u32); @@ -82710,6 +82731,7 @@ pub mod _BatchExecuteStatementTransformTest_Compile { pub use crate::implementation_from_dafny::software::amazon::cryptography::services::dynamodb::internaldafny::types::BatchStatementRequest; pub use crate::implementation_from_dafny::_Wrappers_Compile::Option; pub use crate::implementation_from_dafny::software::amazon::cryptography::services::dynamodb::internaldafny::types::PreparedStatementParameters; + pub use crate::implementation_from_dafny::software::amazon::cryptography::services::dynamodb::internaldafny::types::ReturnValuesOnConditionCheckFailure; pub use crate::implementation_from_dafny::software::amazon::cryptography::services::dynamodb::internaldafny::types::PartiQLBatchRequest; pub use ::dafny_runtime::seq; pub use crate::implementation_from_dafny::software::amazon::cryptography::services::dynamodb::internaldafny::types::BatchExecuteStatementInput; @@ -82743,7 +82765,8 @@ pub mod _BatchExecuteStatementTransformTest_Compile { let mut request: Arc = Arc::new(BatchStatementRequest::BatchStatementRequest { Statement: statement.clone(), Parameters: Arc::new(Option::::None {}), - ConsistentRead: Arc::new(Option::::None {}) + ConsistentRead: Arc::new(Option::::None {}), + ReturnValuesOnConditionCheckFailure: Arc::new(Option::>::None {}) }); let mut requests: PartiQLBatchRequest; let mut _out2: PartiQLBatchRequest = crate::implementation_from_dafny::_TestFixtures_Compile::_default::GetPartiQLBatchRequest(&seq![request.clone()]); @@ -82772,7 +82795,8 @@ pub mod _BatchExecuteStatementTransformTest_Compile { let mut request: Arc = Arc::new(BatchStatementRequest::BatchStatementRequest { Statement: statement.clone(), Parameters: Arc::new(Option::::None {}), - ConsistentRead: Arc::new(Option::::None {}) + ConsistentRead: Arc::new(Option::::None {}), + ReturnValuesOnConditionCheckFailure: Arc::new(Option::>::None {}) }); let mut requests: PartiQLBatchRequest; let mut _out2: PartiQLBatchRequest = crate::implementation_from_dafny::_TestFixtures_Compile::_default::GetPartiQLBatchRequest(&seq![request.clone()]); @@ -82818,7 +82842,8 @@ pub mod _BatchExecuteStatementTransformTest_Compile { let mut request: Arc = Arc::new(BatchStatementRequest::BatchStatementRequest { Statement: statement.clone(), Parameters: Arc::new(Option::::None {}), - ConsistentRead: Arc::new(Option::::None {}) + ConsistentRead: Arc::new(Option::::None {}), + ReturnValuesOnConditionCheckFailure: Arc::new(Option::>::None {}) }); let mut requests: PartiQLBatchRequest; let mut _out2: PartiQLBatchRequest = crate::implementation_from_dafny::_TestFixtures_Compile::_default::GetPartiQLBatchRequest(&seq![request.clone()]); @@ -83127,13 +83152,16 @@ pub mod _BatchWriteItemTransform_Compile { pub use ::dafny_runtime::string_utf16_of; pub use crate::implementation_from_dafny::software::amazon::cryptography::services::dynamodb::internaldafny::types::BatchWriteItemInput; pub use crate::implementation_from_dafny::software::amazon::cryptography::services::dynamodb::internaldafny::types::BatchWriteItemRequestMap; + pub use crate::implementation_from_dafny::_DdbMiddlewareConfig_Compile::ValidTableConfig; + pub use crate::implementation_from_dafny::_Wrappers_Compile::Option::Some; pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::transforms::internaldafny::types::BatchWriteItemOutputTransformInput; pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::transforms::internaldafny::types::BatchWriteItemOutputTransformOutput; + pub use crate::implementation_from_dafny::software::amazon::cryptography::services::dynamodb::internaldafny::types::BatchWriteItemOutput; pub struct _default {} impl _default { - /// dafny/DynamoDbEncryptionTransforms/src/BatchWriteItemTransform.dfy(17,3) + /// dafny/DynamoDbEncryptionTransforms/src/BatchWriteItemTransform.dfy(18,3) pub fn Input(config: &Arc, input: &Arc) -> Arc, Arc>> { let mut output = MaybePlacebo::, Arc>>>::new(); let mut tableNames: Set> = input.sdkInput().RequestItems().keys(); @@ -83154,25 +83182,27 @@ pub mod _BatchWriteItemTransform_Compile { if matches!(req.PutRequest().as_ref(), None{ .. }) { encryptedItems = encryptedItems.concat(&seq![req.clone()]); } else { - let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_DynamoDbMiddlewareSupport_Compile::_default::IsWriteable(&tableConfig, req.PutRequest().value().Item()); + let mut valueOrError0: Arc>>; + let mut _out1: Arc>> = crate::implementation_from_dafny::_DynamoDbMiddlewareSupport_Compile::_default::IsWriteable(&tableConfig, req.PutRequest().value().Item()); + valueOrError0 = _out1.clone(); if valueOrError0.IsFailure() { output = MaybePlacebo::from(valueOrError0.PropagateFailure::>()); return output.read(); }; let mut _v0: bool = valueOrError0.Extract(); let mut valueOrError1: Arc, Arc>, Arc>>; - let mut _out1: Arc, Arc>, Arc>> = crate::implementation_from_dafny::_DynamoDbMiddlewareSupport_Compile::_default::AddSignedBeacons(&tableConfig, req.PutRequest().value().Item()); - valueOrError1 = _out1.clone(); + let mut _out2: Arc, Arc>, Arc>> = crate::implementation_from_dafny::_DynamoDbMiddlewareSupport_Compile::_default::AddSignedBeacons(&tableConfig, req.PutRequest().value().Item()); + valueOrError1 = _out2.clone(); if valueOrError1.IsFailure() { output = MaybePlacebo::from(valueOrError1.PropagateFailure::>()); return output.read(); }; let mut item: Map, Arc> = valueOrError1.Extract(); let mut encryptRes: Arc, Arc>>; - let mut _out2: Arc, Arc>> = IDynamoDbItemEncryptorClient::EncryptItem(rd!(tableConfig.itemEncryptor().clone()), &Arc::new(EncryptItemInput::EncryptItemInput { + let mut _out3: Arc, Arc>> = IDynamoDbItemEncryptorClient::EncryptItem(rd!(tableConfig.itemEncryptor().clone()), &Arc::new(EncryptItemInput::EncryptItemInput { plaintextItem: item.clone() })); - encryptRes = _out2.clone(); + encryptRes = _out3.clone(); let mut valueOrError2: Arc, Arc>> = crate::implementation_from_dafny::_DdbMiddlewareConfig_Compile::_default::MapError::>(&encryptRes); if valueOrError2.IsFailure() { output = MaybePlacebo::from(valueOrError2.PropagateFailure::>()); @@ -83186,8 +83216,8 @@ pub mod _BatchWriteItemTransform_Compile { }; let mut keyId: Arc>> = valueOrError3.Extract(); let mut valueOrError4: Arc, Arc>, Arc>>; - let mut _out3: Arc, Arc>, Arc>> = crate::implementation_from_dafny::_DynamoDbMiddlewareSupport_Compile::_default::GetEncryptedBeacons(&tableConfig, req.PutRequest().value().Item(), &crate::implementation_from_dafny::_DynamoDbEncryptionUtil_Compile::_default::MaybeFromOptionKeyId(&keyId)); - valueOrError4 = _out3.clone(); + let mut _out4: Arc, Arc>, Arc>> = crate::implementation_from_dafny::_DynamoDbMiddlewareSupport_Compile::_default::GetEncryptedBeacons(&tableConfig, req.PutRequest().value().Item(), &crate::implementation_from_dafny::_DynamoDbEncryptionUtil_Compile::_default::MaybeFromOptionKeyId(&keyId)); + valueOrError4 = _out4.clone(); if valueOrError4.IsFailure() { output = MaybePlacebo::from(valueOrError4.PropagateFailure::>()); return output.read(); @@ -83248,14 +83278,119 @@ pub mod _BatchWriteItemTransform_Compile { })); return output.read(); } - /// dafny/DynamoDbEncryptionTransforms/src/BatchWriteItemTransform.dfy(83,3) + /// dafny/DynamoDbEncryptionTransforms/src/BatchWriteItemTransform.dfy(86,3) + pub fn GetOrigItem(tableConfig: &ValidTableConfig, srcRequests: &WriteRequests, itemReq: &Arc) -> Arc, Arc>> { + let mut ret = MaybePlacebo::, Arc>>>::new(); + let mut partKey: Sequence = tableConfig.partitionKeyName().clone(); + let mut sortKey: Arc>> = tableConfig.sortKeyName().clone(); + let mut item: Map, Arc> = itemReq.PutRequest().value().Item().clone(); + let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(item.contains(&partKey), &crate::implementation_from_dafny::_DdbMiddlewareConfig_Compile::_default::E(&string_utf16_of("Required partition key not in unprocessed item"))); + if valueOrError0.IsFailure() { + ret = MaybePlacebo::from(valueOrError0.PropagateFailure::>()); + return ret.read(); + }; + let mut valueOrError1: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(matches!((&sortKey).as_ref(), None{ .. }) || item.contains(sortKey.value()), &crate::implementation_from_dafny::_DdbMiddlewareConfig_Compile::_default::E(&string_utf16_of("Required sort key not in unprocessed item"))); + if valueOrError1.IsFailure() { + ret = MaybePlacebo::from(valueOrError1.PropagateFailure::>()); + return ret.read(); + }; + let mut _hi0: DafnyInt = srcRequests.cardinality(); + for i in integer_range(int!(0), _hi0.clone()) { + if matches!(srcRequests.get(&i).PutRequest().as_ref(), Some{ .. }) { + let mut req: Map, Arc> = srcRequests.get(&i).PutRequest().value().Item().clone(); + if req.contains(&partKey) && req.get(&partKey) == item.get(&partKey) { + if matches!((&sortKey).as_ref(), None{ .. }) || req.contains(sortKey.value()) && req.get(sortKey.value()) == item.get(sortKey.value()) { + ret = MaybePlacebo::from(Arc::new(Result::, Arc>::Success { + value: srcRequests.get(&i) + })); + return ret.read(); + } + } + } + } + ret = MaybePlacebo::from(Arc::new(Result::, Arc>::Failure { + error: crate::implementation_from_dafny::_DdbMiddlewareConfig_Compile::_default::E(&string_utf16_of("Item in UnprocessedItems not found in original request.")) + })); + return ret.read(); + } + /// = specification/dynamodb-encryption-client/ddb-sdk-integration.md#decrypt-after-batchwriteitem + /// = type=implication + /// # If there are no UnprocessedItems, then the BatchWriteItemOutput MUST be returned unchanged. + /// dafny/DynamoDbEncryptionTransforms/src/BatchWriteItemTransform.dfy(112,3) pub fn Output(config: &Arc, input: &Arc) -> Arc, Arc>> { - let mut output: Arc, Arc>> = Arc::new(Result::, Arc>::Success { - value: Arc::new(BatchWriteItemOutputTransformOutput::BatchWriteItemOutputTransformOutput { - transformedOutput: input.sdkOutput().clone() - }) + let mut output = MaybePlacebo::, Arc>>>::new(); + if matches!(input.sdkOutput().UnprocessedItems().as_ref(), None{ .. }) { + output = MaybePlacebo::from(Arc::new(Result::, Arc>::Success { + value: Arc::new(BatchWriteItemOutputTransformOutput::BatchWriteItemOutputTransformOutput { + transformedOutput: input.sdkOutput().clone() + }) + })); + return output.read(); + }; + let mut srcItems: BatchWriteItemRequestMap = input.originalInput().RequestItems().clone(); + let mut unprocessed: Map, WriteRequests> = input.sdkOutput().UnprocessedItems().value().clone(); + let mut tableNames: Set> = unprocessed.keys(); + let mut result: Map, WriteRequests> = map![]; + let mut tableNamesSeq: Sequence>; + let mut _out0: Sequence> = crate::implementation_from_dafny::SortedSets::_default::SetToSequence::>(&tableNames); + tableNamesSeq = _out0.clone(); + let mut i: DafnyInt = int!(0); + while i.clone() < tableNamesSeq.cardinality() { + let mut tableName: Sequence = tableNamesSeq.get(&i); + let mut writeRequests: WriteRequests = unprocessed.get(&tableName); + if !crate::implementation_from_dafny::_DdbMiddlewareConfig_Compile::_default::IsPlainWrite(config, &tableName) { + if !srcItems.contains(&tableName) { + output = MaybePlacebo::from(Arc::new(Result::, Arc>::Failure { + error: crate::implementation_from_dafny::_DdbMiddlewareConfig_Compile::_default::E(&tableName.concat(&string_utf16_of(" in UnprocessedItems for BatchWriteItem response, but not in original request."))) + })); + return output.read(); + }; + let mut srcRequests: WriteRequests = srcItems.get(&tableName); + let mut tableConfig: ValidTableConfig = config.tableEncryptionConfigs().get(&tableName); + let mut origItems: Sequence> = seq![] as Sequence>; + let mut _hi0: DafnyInt = writeRequests.cardinality(); + for x in integer_range(int!(0), _hi0.clone()) { + let mut req: Arc = writeRequests.get(&x); + if matches!(req.PutRequest().as_ref(), None{ .. }) { + origItems = origItems.concat(&seq![req.clone()]); + } else { + let mut valueOrError0: Arc, Arc>>; + let mut _out1: Arc, Arc>> = _default::GetOrigItem(&tableConfig, &srcRequests, &req); + valueOrError0 = _out1.clone(); + if valueOrError0.IsFailure() { + output = MaybePlacebo::from(valueOrError0.PropagateFailure::>()); + return output.read(); + }; + let mut orig_item: Arc = valueOrError0.Extract(); + origItems = origItems.concat(&seq![orig_item.clone()]); + } + } + writeRequests = origItems.clone(); + }; + i = i.clone() + int!(1); + result = result.update_index(&tableName, &writeRequests); + }; + let mut valueOrError1: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(result.cardinality() == unprocessed.cardinality(), &crate::implementation_from_dafny::_DdbMiddlewareConfig_Compile::_default::E(&string_utf16_of("Internal Error"))); + if valueOrError1.IsFailure() { + output = MaybePlacebo::from(valueOrError1.PropagateFailure::>()); + return output.read(); + }; + let mut new_output: Arc; + let mut _dt__update__tmp_h0: Arc = input.sdkOutput().clone(); + let mut _dt__update_hUnprocessedItems_h0: Arc> = Arc::new(Option::, WriteRequests>>::Some { + value: result.clone() }); - return output.clone(); + new_output = Arc::new(BatchWriteItemOutput::BatchWriteItemOutput { + UnprocessedItems: _dt__update_hUnprocessedItems_h0.clone(), + ItemCollectionMetrics: _dt__update__tmp_h0.ItemCollectionMetrics().clone(), + ConsumedCapacity: _dt__update__tmp_h0.ConsumedCapacity().clone() + }); + output = MaybePlacebo::from(Arc::new(Result::, Arc>::Success { + value: Arc::new(BatchWriteItemOutputTransformOutput::BatchWriteItemOutputTransformOutput { + transformedOutput: new_output.clone() + }) + })); + return output.read(); } } } @@ -83290,6 +83425,8 @@ pub mod _BatchWriteItemTransformTest_Compile { pub use crate::implementation_from_dafny::software::amazon::cryptography::services::dynamodb::internaldafny::types::ConsumedCapacity; pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::transforms::internaldafny::types::BatchWriteItemOutputTransformOutput; pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::transforms::internaldafny::types::BatchWriteItemOutputTransformInput; + pub use crate::implementation_from_dafny::software::amazon::cryptography::services::dynamodb::internaldafny::types::AttributeValue; + pub use ::dafny_runtime::int; pub struct _default {} @@ -83326,7 +83463,7 @@ pub mod _BatchWriteItemTransformTest_Compile { crate::implementation_from_dafny::_TestFixtures_Compile::_default::expect_equal::>(&string_utf16_of("BatchWriteItemInput"), transformed.value().transformedInput(), &input); return (); } - /// dafny/DynamoDbEncryptionTransforms/test/BatchWriteItemTransform.dfy(37,3) + /// dafny/DynamoDbEncryptionTransforms/test/BatchWriteItemTransform.dfy(66,3) pub fn TestBatchWriteItemOutputTransform() -> () { let mut middlewareUnderTest: Object; let mut _out0: Object = crate::implementation_from_dafny::_TestFixtures_Compile::_default::GetDynamoDbEncryptionTransforms(); @@ -83364,6 +83501,329 @@ pub mod _BatchWriteItemTransformTest_Compile { crate::implementation_from_dafny::_TestFixtures_Compile::_default::expect_equal::>(&string_utf16_of("BatchWriteItemOutput"), transformed.value().transformedOutput(), &output); return (); } + /// dafny/DynamoDbEncryptionTransforms/test/BatchWriteItemTransform.dfy(97,3) + pub fn MakePut(item: &Map, Arc>) -> Arc { + Arc::new(WriteRequest::WriteRequest { + PutRequest: Arc::new(Option::>::Some { + value: Arc::new(PutRequest::PutRequest { + Item: item.clone() + }) + }), + DeleteRequest: Arc::new(Option::>::None {}) + }) + } + /// dafny/DynamoDbEncryptionTransforms/test/BatchWriteItemTransform.dfy(105,3) + pub fn TestBatchWriteItemOutputTransformUnprocessed() -> () { + let mut middlewareUnderTest: Object; + let mut _out0: Object = crate::implementation_from_dafny::_TestFixtures_Compile::_default::GetDynamoDbEncryptionTransforms(); + middlewareUnderTest = _out0.clone(); + let mut tableName: Sequence; + let mut _out1: Sequence = crate::implementation_from_dafny::_TestFixtures_Compile::_default::GetTableName(&string_utf16_of("foo")); + tableName = _out1.clone(); + let mut theRequests: BatchWriteItemRequestMap; + let mut _out2: BatchWriteItemRequestMap = crate::implementation_from_dafny::_TestFixtures_Compile::_default::GetBatchWriteItemRequestMap(&map![(tableName.clone()) => (seq![_default::MakePut(&_default::Item1()), _default::MakePut(&_default::Item2()), _default::MakePut(&_default::Item3()), _default::MakePut(&_default::Item4())])]); + theRequests = _out2.clone(); + let mut input: Arc = Arc::new(BatchWriteItemInput::BatchWriteItemInput { + RequestItems: theRequests.clone(), + ReturnConsumedCapacity: Arc::new(Option::>::None {}), + ReturnItemCollectionMetrics: Arc::new(Option::>::None {}) + }); + let mut valueOrError0: Arc, Arc>>; + let mut _out3: Arc, Arc>> = IDynamoDbEncryptionTransformsClient::BatchWriteItemInputTransform(rd!(middlewareUnderTest.clone()), &Arc::new(BatchWriteItemInputTransformInput::BatchWriteItemInputTransformInput { + sdkInput: input.clone() + })); + valueOrError0 = _out3.clone(); + if !(!valueOrError0.IsFailure()) { + panic!("Halt") + }; + let mut transInput: Arc = valueOrError0.Extract(); + let mut unProcessed: BatchWriteItemRequestMap = transInput.transformedInput().RequestItems().clone(); + if !(unProcessed.clone() != input.RequestItems().clone()) { + panic!("Halt") + }; + let mut output: Arc = Arc::new(BatchWriteItemOutput::BatchWriteItemOutput { + UnprocessedItems: Arc::new(Option::::Some { + value: unProcessed.clone() + }), + ItemCollectionMetrics: Arc::new(Option::, Sequence>>>::None {}), + ConsumedCapacity: Arc::new(Option::>>::None {}) + }); + let mut valueOrError1: Arc, Arc>>; + let mut _out4: Arc, Arc>> = IDynamoDbEncryptionTransformsClient::BatchWriteItemOutputTransform(rd!(middlewareUnderTest.clone()), &Arc::new(BatchWriteItemOutputTransformInput::BatchWriteItemOutputTransformInput { + sdkOutput: output.clone(), + originalInput: input.clone() + })); + valueOrError1 = _out4.clone(); + if !(!valueOrError1.IsFailure()) { + panic!("Halt") + }; + let mut transOutput: Arc = valueOrError1.Extract(); + crate::implementation_from_dafny::_TestFixtures_Compile::_default::expect_equal::>>(&string_utf16_of("BatchWriteOutput"), transOutput.transformedOutput().UnprocessedItems(), &Arc::new(Option::::Some { + value: theRequests.clone() + })); + return (); + } + /// dafny/DynamoDbEncryptionTransforms/test/BatchWriteItemTransform.dfy(136,3) + pub fn TestBatchWriteItemOutputTransformUnprocessed2() -> () { + let mut middlewareUnderTest: Object; + let mut _out0: Object = crate::implementation_from_dafny::_TestFixtures_Compile::_default::GetDynamoDbEncryptionTransforms(); + middlewareUnderTest = _out0.clone(); + let mut tableName1: Sequence; + let mut _out1: Sequence = crate::implementation_from_dafny::_TestFixtures_Compile::_default::GetTableName(&string_utf16_of("foo")); + tableName1 = _out1.clone(); + let mut tableName2: Sequence; + let mut _out2: Sequence = crate::implementation_from_dafny::_TestFixtures_Compile::_default::GetTableName(&string_utf16_of("baz")); + tableName2 = _out2.clone(); + let mut theRequests: BatchWriteItemRequestMap; + let mut _out3: BatchWriteItemRequestMap = crate::implementation_from_dafny::_TestFixtures_Compile::_default::GetBatchWriteItemRequestMap(&map![(tableName1.clone()) => (seq![_default::MakePut(&_default::Item1()), _default::MakePut(&_default::Item2())]), (tableName2.clone()) => (seq![_default::MakePut(&_default::Item3()), _default::MakePut(&_default::Item4())])]); + theRequests = _out3.clone(); + let mut input: Arc = Arc::new(BatchWriteItemInput::BatchWriteItemInput { + RequestItems: theRequests.clone(), + ReturnConsumedCapacity: Arc::new(Option::>::None {}), + ReturnItemCollectionMetrics: Arc::new(Option::>::None {}) + }); + let mut valueOrError0: Arc, Arc>>; + let mut _out4: Arc, Arc>> = IDynamoDbEncryptionTransformsClient::BatchWriteItemInputTransform(rd!(middlewareUnderTest.clone()), &Arc::new(BatchWriteItemInputTransformInput::BatchWriteItemInputTransformInput { + sdkInput: input.clone() + })); + valueOrError0 = _out4.clone(); + if !(!valueOrError0.IsFailure()) { + panic!("Halt") + }; + let mut transInput: Arc = valueOrError0.Extract(); + let mut unProcessed: BatchWriteItemRequestMap = transInput.transformedInput().RequestItems().clone(); + if !(unProcessed.clone() != input.RequestItems().clone()) { + panic!("Halt") + }; + let mut output: Arc = Arc::new(BatchWriteItemOutput::BatchWriteItemOutput { + UnprocessedItems: Arc::new(Option::::Some { + value: unProcessed.clone() + }), + ItemCollectionMetrics: Arc::new(Option::, Sequence>>>::None {}), + ConsumedCapacity: Arc::new(Option::>>::None {}) + }); + let mut valueOrError1: Arc, Arc>>; + let mut _out5: Arc, Arc>> = IDynamoDbEncryptionTransformsClient::BatchWriteItemOutputTransform(rd!(middlewareUnderTest.clone()), &Arc::new(BatchWriteItemOutputTransformInput::BatchWriteItemOutputTransformInput { + sdkOutput: output.clone(), + originalInput: input.clone() + })); + valueOrError1 = _out5.clone(); + if !(!valueOrError1.IsFailure()) { + panic!("Halt") + }; + let mut transOutput: Arc = valueOrError1.Extract(); + crate::implementation_from_dafny::_TestFixtures_Compile::_default::expect_equal::>>(&string_utf16_of("BatchWriteOutput"), transOutput.transformedOutput().UnprocessedItems(), &Arc::new(Option::::Some { + value: theRequests.clone() + })); + return (); + } + /// dafny/DynamoDbEncryptionTransforms/test/BatchWriteItemTransform.dfy(168,3) + pub fn TestBatchWriteItemOutputTransformUnprocessed3() -> () { + let mut middlewareUnderTest: Object; + let mut _out0: Object = crate::implementation_from_dafny::_TestFixtures_Compile::_default::GetDynamoDbEncryptionTransforms(); + middlewareUnderTest = _out0.clone(); + let mut tableName1: Sequence; + let mut _out1: Sequence = crate::implementation_from_dafny::_TestFixtures_Compile::_default::GetTableName(&string_utf16_of("foo")); + tableName1 = _out1.clone(); + let mut tableName2: Sequence; + let mut _out2: Sequence = crate::implementation_from_dafny::_TestFixtures_Compile::_default::GetTableName(&string_utf16_of("baz")); + tableName2 = _out2.clone(); + let mut theRequests: BatchWriteItemRequestMap; + let mut _out3: BatchWriteItemRequestMap = crate::implementation_from_dafny::_TestFixtures_Compile::_default::GetBatchWriteItemRequestMap(&map![(tableName1.clone()) => (seq![_default::MakePut(&_default::Item1()), _default::MakePut(&_default::Item2())]), (tableName2.clone()) => (seq![_default::MakePut(&_default::Item3()), _default::MakePut(&_default::Item4())])]); + theRequests = _out3.clone(); + let mut input: Arc = Arc::new(BatchWriteItemInput::BatchWriteItemInput { + RequestItems: theRequests.clone(), + ReturnConsumedCapacity: Arc::new(Option::>::None {}), + ReturnItemCollectionMetrics: Arc::new(Option::>::None {}) + }); + let mut valueOrError0: Arc, Arc>>; + let mut _out4: Arc, Arc>> = IDynamoDbEncryptionTransformsClient::BatchWriteItemInputTransform(rd!(middlewareUnderTest.clone()), &Arc::new(BatchWriteItemInputTransformInput::BatchWriteItemInputTransformInput { + sdkInput: input.clone() + })); + valueOrError0 = _out4.clone(); + if !(!valueOrError0.IsFailure()) { + panic!("Halt") + }; + let mut transInput: Arc = valueOrError0.Extract(); + if !transInput.transformedInput().RequestItems().contains(&tableName1) { + panic!("Halt") + }; + if !transInput.transformedInput().RequestItems().contains(&tableName2) { + panic!("Halt") + }; + let mut list: Map, Sequence>> = map![(tableName1.clone()) => (transInput.transformedInput().RequestItems().get(&tableName1).slice(&int!(0), &int!(1))), (tableName2.clone()) => (transInput.transformedInput().RequestItems().get(&tableName2).slice(&int!(0), &int!(1)))]; + if !crate::implementation_from_dafny::software::amazon::cryptography::services::dynamodb::internaldafny::types::_default::IsValid_BatchWriteItemRequestMap(&list) { + panic!("Halt") + }; + let mut unProcessed: BatchWriteItemRequestMap = list.clone(); + let mut orig_list: Map, Sequence>> = map![(tableName1.clone()) => (seq![_default::MakePut(&_default::Item1())]), (tableName2.clone()) => (seq![_default::MakePut(&_default::Item3())])]; + if !crate::implementation_from_dafny::software::amazon::cryptography::services::dynamodb::internaldafny::types::_default::IsValid_BatchWriteItemRequestMap(&orig_list) { + panic!("Halt") + }; + let mut originalUnProcessed: BatchWriteItemRequestMap = orig_list.clone(); + if !(unProcessed.clone() != input.RequestItems().clone()) { + panic!("Halt") + }; + let mut output: Arc = Arc::new(BatchWriteItemOutput::BatchWriteItemOutput { + UnprocessedItems: Arc::new(Option::::Some { + value: unProcessed.clone() + }), + ItemCollectionMetrics: Arc::new(Option::, Sequence>>>::None {}), + ConsumedCapacity: Arc::new(Option::>>::None {}) + }); + let mut valueOrError1: Arc, Arc>>; + let mut _out5: Arc, Arc>> = IDynamoDbEncryptionTransformsClient::BatchWriteItemOutputTransform(rd!(middlewareUnderTest.clone()), &Arc::new(BatchWriteItemOutputTransformInput::BatchWriteItemOutputTransformInput { + sdkOutput: output.clone(), + originalInput: input.clone() + })); + valueOrError1 = _out5.clone(); + if !(!valueOrError1.IsFailure()) { + panic!("Halt") + }; + let mut transOutput: Arc = valueOrError1.Extract(); + crate::implementation_from_dafny::_TestFixtures_Compile::_default::expect_equal::>>(&string_utf16_of("BatchWriteOutput"), transOutput.transformedOutput().UnprocessedItems(), &Arc::new(Option::::Some { + value: originalUnProcessed.clone() + })); + return (); + } + /// dafny/DynamoDbEncryptionTransforms/test/BatchWriteItemTransform.dfy(237,3) + pub fn TestBatchWriteItemOutputTransformUnprocessed4() -> () { + let mut middlewareUnderTest: Object; + let mut _out0: Object = crate::implementation_from_dafny::_TestFixtures_Compile::_default::GetDynamoDbEncryptionTransforms2(); + middlewareUnderTest = _out0.clone(); + let mut tableName1: Sequence; + let mut _out1: Sequence = crate::implementation_from_dafny::_TestFixtures_Compile::_default::GetTableName(&string_utf16_of("foo")); + tableName1 = _out1.clone(); + let mut tableName2: Sequence; + let mut _out2: Sequence = crate::implementation_from_dafny::_TestFixtures_Compile::_default::GetTableName(&string_utf16_of("baz")); + tableName2 = _out2.clone(); + let mut theRequests: BatchWriteItemRequestMap; + let mut _out3: BatchWriteItemRequestMap = crate::implementation_from_dafny::_TestFixtures_Compile::_default::GetBatchWriteItemRequestMap(&map![(tableName1.clone()) => (seq![_default::MakePut(&_default::Item1()), _default::MakePut(&_default::Item1a())]), (tableName2.clone()) => (seq![_default::MakePut(&_default::Item1b()), _default::MakePut(&_default::Item1c())])]); + theRequests = _out3.clone(); + let mut input: Arc = Arc::new(BatchWriteItemInput::BatchWriteItemInput { + RequestItems: theRequests.clone(), + ReturnConsumedCapacity: Arc::new(Option::>::None {}), + ReturnItemCollectionMetrics: Arc::new(Option::>::None {}) + }); + let mut valueOrError0: Arc, Arc>>; + let mut _out4: Arc, Arc>> = IDynamoDbEncryptionTransformsClient::BatchWriteItemInputTransform(rd!(middlewareUnderTest.clone()), &Arc::new(BatchWriteItemInputTransformInput::BatchWriteItemInputTransformInput { + sdkInput: input.clone() + })); + valueOrError0 = _out4.clone(); + if !(!valueOrError0.IsFailure()) { + panic!("Halt") + }; + let mut transInput: Arc = valueOrError0.Extract(); + let mut unProcessed: BatchWriteItemRequestMap = transInput.transformedInput().RequestItems().clone(); + if !(unProcessed.clone() != input.RequestItems().clone()) { + panic!("Halt") + }; + let mut output: Arc = Arc::new(BatchWriteItemOutput::BatchWriteItemOutput { + UnprocessedItems: Arc::new(Option::::Some { + value: unProcessed.clone() + }), + ItemCollectionMetrics: Arc::new(Option::, Sequence>>>::None {}), + ConsumedCapacity: Arc::new(Option::>>::None {}) + }); + let mut valueOrError1: Arc, Arc>>; + let mut _out5: Arc, Arc>> = IDynamoDbEncryptionTransformsClient::BatchWriteItemOutputTransform(rd!(middlewareUnderTest.clone()), &Arc::new(BatchWriteItemOutputTransformInput::BatchWriteItemOutputTransformInput { + sdkOutput: output.clone(), + originalInput: input.clone() + })); + valueOrError1 = _out5.clone(); + if !(!valueOrError1.IsFailure()) { + panic!("Halt") + }; + let mut transOutput: Arc = valueOrError1.Extract(); + crate::implementation_from_dafny::_TestFixtures_Compile::_default::expect_equal::>>(&string_utf16_of("BatchWriteOutput"), transOutput.transformedOutput().UnprocessedItems(), &Arc::new(Option::::Some { + value: theRequests.clone() + })); + return (); + } + /// dafny/DynamoDbEncryptionTransforms/test/BatchWriteItemTransform.dfy(38,3) + pub fn Item1() -> Map, Arc> { + map![(string_utf16_of("bar")) => (Arc::new(AttributeValue::S { + S: string_utf16_of("bar1") + })), (string_utf16_of("sign")) => (Arc::new(AttributeValue::S { + S: string_utf16_of("sign1") + })), (string_utf16_of("encrypt")) => (Arc::new(AttributeValue::S { + S: string_utf16_of("encrypt1") + })), (string_utf16_of("plain")) => (Arc::new(AttributeValue::S { + S: string_utf16_of("plain1") + }))] + } + /// dafny/DynamoDbEncryptionTransforms/test/BatchWriteItemTransform.dfy(45,3) + pub fn Item2() -> Map, Arc> { + map![(string_utf16_of("bar")) => (Arc::new(AttributeValue::S { + S: string_utf16_of("bar2") + })), (string_utf16_of("sign")) => (Arc::new(AttributeValue::S { + S: string_utf16_of("sign2") + })), (string_utf16_of("encrypt")) => (Arc::new(AttributeValue::S { + S: string_utf16_of("encrypt2") + })), (string_utf16_of("plain")) => (Arc::new(AttributeValue::S { + S: string_utf16_of("plain2") + }))] + } + /// dafny/DynamoDbEncryptionTransforms/test/BatchWriteItemTransform.dfy(52,3) + pub fn Item3() -> Map, Arc> { + map![(string_utf16_of("bar")) => (Arc::new(AttributeValue::S { + S: string_utf16_of("bar3") + })), (string_utf16_of("sign")) => (Arc::new(AttributeValue::S { + S: string_utf16_of("sign3") + })), (string_utf16_of("encrypt")) => (Arc::new(AttributeValue::S { + S: string_utf16_of("encrypt3") + })), (string_utf16_of("plain")) => (Arc::new(AttributeValue::S { + S: string_utf16_of("plain3") + }))] + } + /// dafny/DynamoDbEncryptionTransforms/test/BatchWriteItemTransform.dfy(59,3) + pub fn Item4() -> Map, Arc> { + map![(string_utf16_of("bar")) => (Arc::new(AttributeValue::S { + S: string_utf16_of("bar4") + })), (string_utf16_of("sign")) => (Arc::new(AttributeValue::S { + S: string_utf16_of("sign4") + })), (string_utf16_of("encrypt")) => (Arc::new(AttributeValue::S { + S: string_utf16_of("encrypt4") + })), (string_utf16_of("plain")) => (Arc::new(AttributeValue::S { + S: string_utf16_of("plain4") + }))] + } + /// dafny/DynamoDbEncryptionTransforms/test/BatchWriteItemTransform.dfy(216,3) + pub fn Item1a() -> Map, Arc> { + map![(string_utf16_of("bar")) => (Arc::new(AttributeValue::S { + S: string_utf16_of("bar1") + })), (string_utf16_of("sign")) => (Arc::new(AttributeValue::S { + S: string_utf16_of("sign2") + })), (string_utf16_of("encrypt")) => (Arc::new(AttributeValue::S { + S: string_utf16_of("encrypt2") + })), (string_utf16_of("plain")) => (Arc::new(AttributeValue::S { + S: string_utf16_of("plain2") + }))] + } + /// dafny/DynamoDbEncryptionTransforms/test/BatchWriteItemTransform.dfy(223,3) + pub fn Item1b() -> Map, Arc> { + map![(string_utf16_of("bar")) => (Arc::new(AttributeValue::S { + S: string_utf16_of("bar1") + })), (string_utf16_of("sign")) => (Arc::new(AttributeValue::S { + S: string_utf16_of("sign3") + })), (string_utf16_of("encrypt")) => (Arc::new(AttributeValue::S { + S: string_utf16_of("encrypt3") + })), (string_utf16_of("plain")) => (Arc::new(AttributeValue::S { + S: string_utf16_of("plain3") + }))] + } + /// dafny/DynamoDbEncryptionTransforms/test/BatchWriteItemTransform.dfy(230,3) + pub fn Item1c() -> Map, Arc> { + map![(string_utf16_of("bar")) => (Arc::new(AttributeValue::S { + S: string_utf16_of("bar1") + })), (string_utf16_of("sign")) => (Arc::new(AttributeValue::S { + S: string_utf16_of("sign4") + })), (string_utf16_of("encrypt")) => (Arc::new(AttributeValue::S { + S: string_utf16_of("encrypt4") + })), (string_utf16_of("plain")) => (Arc::new(AttributeValue::S { + S: string_utf16_of("plain4") + }))] + } } /// dafny/DynamoDbEncryptionTransforms/test/BatchWriteItemTransform.dfy(13,3) @@ -83372,11 +83832,35 @@ pub mod _BatchWriteItemTransformTest_Compile { _default::TestBatchWriteItemInputTransform() } - /// dafny/DynamoDbEncryptionTransforms/test/BatchWriteItemTransform.dfy(37,3) + /// dafny/DynamoDbEncryptionTransforms/test/BatchWriteItemTransform.dfy(66,3) #[test] pub fn TestBatchWriteItemOutputTransform() { _default::TestBatchWriteItemOutputTransform() } + + /// dafny/DynamoDbEncryptionTransforms/test/BatchWriteItemTransform.dfy(105,3) + #[test] + pub fn TestBatchWriteItemOutputTransformUnprocessed() { + _default::TestBatchWriteItemOutputTransformUnprocessed() + } + + /// dafny/DynamoDbEncryptionTransforms/test/BatchWriteItemTransform.dfy(136,3) + #[test] + pub fn TestBatchWriteItemOutputTransformUnprocessed2() { + _default::TestBatchWriteItemOutputTransformUnprocessed2() + } + + /// dafny/DynamoDbEncryptionTransforms/test/BatchWriteItemTransform.dfy(168,3) + #[test] + pub fn TestBatchWriteItemOutputTransformUnprocessed3() { + _default::TestBatchWriteItemOutputTransformUnprocessed3() + } + + /// dafny/DynamoDbEncryptionTransforms/test/BatchWriteItemTransform.dfy(237,3) + #[test] + pub fn TestBatchWriteItemOutputTransformUnprocessed4() { + _default::TestBatchWriteItemOutputTransformUnprocessed4() + } } /// dafny/DynamoDbEncryption/test/BeaconTestFixtures.dfy(6,1) pub mod _BeaconTestFixtures_Compile { @@ -85668,7 +86152,7 @@ pub mod _CMM_Compile { pub struct _default {} impl _default { - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/CMM.dfy(60,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/CMM.dfy(76,3) pub fn _RequiredEncryptionContextKeys_q(requiredEncryptionContextKeys: &Arc>>, encryptionMaterials: &Arc) -> bool { Itertools::unique((&requiredEncryptionContextKeys.UnwrapOr(&(seq![] as Sequence))).iter()).all(({ let mut encryptionMaterials = encryptionMaterials.clone(); @@ -85686,27 +86170,27 @@ pub mod _CMM_Compile { }) }).as_ref()) } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/CMM.dfy(65,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/CMM.dfy(81,3) pub fn EncryptionContextComplete(input: &Arc, decryptionMaterials: &Arc) -> bool { let mut reproducedEncryptionContext: Map = input.reproducedEncryptionContext().UnwrapOr(&map![]); - (&reproducedEncryptionContext.keys()).iter().all(({ + (&reproducedEncryptionContext).keys().iter().all(({ let mut decryptionMaterials = decryptionMaterials.clone(); let mut reproducedEncryptionContext = reproducedEncryptionContext.clone(); Arc::new(move |__forall_var_0: &ValidUTF8Bytes| -> bool{ let mut k: Sequence = __forall_var_0.clone(); - !reproducedEncryptionContext.keys().contains(&k) || decryptionMaterials.encryptionContext().contains(&k) && decryptionMaterials.encryptionContext().get(&k) == reproducedEncryptionContext.get(&k) + !reproducedEncryptionContext.contains(&k) || decryptionMaterials.encryptionContext().contains(&k) && decryptionMaterials.encryptionContext().get(&k) == reproducedEncryptionContext.get(&k) }) }).as_ref()) } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/CMM.dfy(73,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/CMM.dfy(89,3) pub fn _ReproducedEncryptionContext_q(input: &Arc) -> bool { let mut reproducedEncryptionContext: Map = input.reproducedEncryptionContext().UnwrapOr(&map![]); - (&reproducedEncryptionContext.keys()).iter().all(({ + (&reproducedEncryptionContext).keys().iter().all(({ let mut reproducedEncryptionContext = reproducedEncryptionContext.clone(); let mut input = input.clone(); Arc::new(move |__forall_var_0: &ValidUTF8Bytes| -> bool{ let mut k: Sequence = __forall_var_0.clone(); - !(reproducedEncryptionContext.keys().contains(&k) && input.encryptionContext().contains(&k)) || input.encryptionContext().get(&k) == reproducedEncryptionContext.get(&k) + !(reproducedEncryptionContext.contains(&k) && input.encryptionContext().contains(&k)) || input.encryptionContext().get(&k) == reproducedEncryptionContext.get(&k) }) }).as_ref()) } @@ -85758,26 +86242,25 @@ pub mod _CanonicalEncryptionContext_Compile { pub use ::dafny_runtime::Sequence; pub use crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::Error; pub use crate::implementation_from_dafny::_Wrappers_Compile::Outcome; + pub use ::dafny_runtime::truncate; pub use ::dafny_runtime::string_utf16_of; pub use ::std::marker::Sync; pub use ::std::marker::Send; - pub use ::dafny_runtime::int; pub use ::dafny_runtime::seq; - pub use ::dafny_runtime::truncate; pub struct _default {} impl _default { - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/CanonicalEncryptionContext.dfy(22,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/CanonicalEncryptionContext.dfy(23,3) pub fn EncryptionContextToAAD(encryptionContext: &Map) -> Arc, Arc>> { - let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(encryptionContext.cardinality() < crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default::UINT16_LIMIT(), &Arc::new(Error::AwsCryptographicMaterialProvidersException { + let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(truncate!(encryptionContext.cardinality(), u64) < truncate!(crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default::UINT16_LIMIT(), u64), &Arc::new(Error::AwsCryptographicMaterialProvidersException { message: string_utf16_of("Encryption Context is too large") })); if valueOrError0.IsFailure() { valueOrError0.PropagateFailure::>() } else { let mut keys: Sequence> = crate::implementation_from_dafny::SortedSets::_default::SetToOrderedSequence2::(&encryptionContext.keys(), &(Arc::new(move |x0: &u8,x1: &u8| crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default::UInt8Less(x0.clone(), x1.clone())) as Arc _ + Sync + Send>)); - if keys.cardinality() == int!(0) { + if truncate!(keys.cardinality(), u16) == 0 { Arc::new(Result::, Arc>::Success { value: seq![] as Sequence }) @@ -85840,9 +86323,10 @@ pub mod _Canonize_Compile { pub use crate::implementation_from_dafny::_StructuredEncryptionHeader_Compile::LegendByte; pub use crate::implementation_from_dafny::_StructuredEncryptionHeader_Compile::Legend; pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::structuredencryption::internaldafny::types::Error; - pub use ::dafny_runtime::int; + pub use ::dafny_runtime::truncate; pub use crate::implementation_from_dafny::_Wrappers_Compile::Outcome; pub use ::dafny_runtime::string_utf16_of; + pub use ::dafny_runtime::int; pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::structuredencryption::internaldafny::types::AuthenticateAction; pub use ::dafny_runtime::seq; pub use ::dafny_runtime::itertools::Itertools; @@ -85860,11 +86344,11 @@ pub mod _Canonize_Compile { pub struct _default {} impl _default { - /// dafny/StructuredEncryption/src/Canonize.dfy(77,3) + /// dafny/StructuredEncryption/src/Canonize.dfy(78,3) pub fn IsCanonPath(table: &Sequence, origKey: &Sequence>, key: &Sequence) -> bool { key.clone() == crate::implementation_from_dafny::_StructuredEncryptionPaths_Compile::_default::CanonPath(table, origKey) } - /// dafny/StructuredEncryption/src/Canonize.dfy(84,3) + /// dafny/StructuredEncryption/src/Canonize.dfy(85,3) pub fn MakeCanon(tableName: &Sequence, data: &Arc) -> Arc { Arc::new(CanonCryptoItem::CanonCryptoItem { key: crate::implementation_from_dafny::_StructuredEncryptionPaths_Compile::_default::CanonPath(tableName, data.key()), @@ -85873,7 +86357,7 @@ pub mod _Canonize_Compile { action: data.action().clone() }) } - /// dafny/StructuredEncryption/src/Canonize.dfy(100,3) + /// dafny/StructuredEncryption/src/Canonize.dfy(101,3) pub fn MakeCanonAuth(tableName: &Sequence, data: &Arc) -> Arc { Arc::new(CanonAuthItem::CanonAuthItem { key: crate::implementation_from_dafny::_StructuredEncryptionPaths_Compile::_default::CanonPath(tableName, data.key()), @@ -85882,11 +86366,11 @@ pub mod _Canonize_Compile { action: data.action().clone() }) } - /// dafny/StructuredEncryption/src/Canonize.dfy(116,3) + /// dafny/StructuredEncryption/src/Canonize.dfy(117,3) pub fn Same(x: &Arc, y: &Arc) -> bool { x.key().clone() == y.key().clone() && x.origKey().clone() == y.origKey().clone() && x.data().clone() == y.data().clone() } - /// dafny/StructuredEncryption/src/Canonize.dfy(123,3) + /// dafny/StructuredEncryption/src/Canonize.dfy(124,3) pub fn MakeCryptoItem(x: &Arc, action: &Arc) -> Arc { Arc::new(CanonCryptoItem::CanonCryptoItem { key: x.key().clone(), @@ -85895,7 +86379,7 @@ pub mod _Canonize_Compile { action: action.clone() }) } - /// dafny/StructuredEncryption/src/Canonize.dfy(129,3) + /// dafny/StructuredEncryption/src/Canonize.dfy(130,3) pub fn LegendToAction(v: LegendByte) -> Arc { if v == crate::implementation_from_dafny::_StructuredEncryptionHeader_Compile::_default::ENCRYPT_AND_SIGN_LEGEND() { Arc::new(CryptoAction::ENCRYPT_AND_SIGN {}) @@ -85907,17 +86391,21 @@ pub mod _Canonize_Compile { } } } - /// dafny/StructuredEncryption/src/Canonize.dfy(139,3) - pub fn ResolveLegend(fields: &Sequence>, legend: &Legend, acc: &Sequence>) -> Arc>, Arc>> { + /// dafny/StructuredEncryption/src/Canonize.dfy(140,3) + pub fn ResolveLegend(fields: &Sequence>, legend: &Legend, pos: u64, legendPos: u64, acc: &Sequence>) -> Arc>, Arc>> { let mut _r0 = fields.clone(); let mut _r1 = legend.clone(); - let mut _r2 = acc.clone(); + let mut _r2 = pos; + let mut _r3 = legendPos; + let mut _r4 = acc.clone(); 'TAIL_CALL_START: loop { let fields = _r0; let legend = _r1; - let acc = _r2; - if fields.cardinality() == int!(0) { - let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(legend.cardinality() == int!(0), &crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::E(&string_utf16_of("Schema changed : something that was signed is now unsigned."))); + let pos = _r2; + let legendPos = _r3; + let acc = _r4; + if truncate!(fields.cardinality(), u64) == pos { + let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(truncate!(legend.cardinality(), u64) == legendPos, &crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::E(&string_utf16_of("Schema changed : something that was signed is now unsigned."))); if valueOrError0.IsFailure() { return valueOrError0.PropagateFailure::>>(); } else { @@ -85926,32 +86414,40 @@ pub mod _Canonize_Compile { }); } } else { - if fields.get(&int!(0)).action().clone() == Arc::new(AuthenticateAction::DO_NOT_SIGN {}) { - let mut _in0: Sequence> = fields.drop(&int!(1)); + if fields.get(&int!((&pos).clone())).action().clone() == Arc::new(AuthenticateAction::DO_NOT_SIGN {}) { + let mut _in0: Sequence> = fields.clone(); let mut _in1: Legend = legend.clone(); - let mut _in2: Sequence> = acc.concat(&seq![_default::MakeCryptoItem(&fields.get(&int!(0)), &Arc::new(CryptoAction::DO_NOTHING {}))]); + let mut _in2: u64 = pos + 1; + let mut _in3: u64 = legendPos; + let mut _in4: Sequence> = acc.concat(&seq![_default::MakeCryptoItem(&fields.get(&int!((&pos).clone())), &Arc::new(CryptoAction::DO_NOTHING {}))]); _r0 = _in0.clone(); _r1 = _in1.clone(); - _r2 = _in2.clone(); + _r2 = _in2; + _r3 = _in3; + _r4 = _in4.clone(); continue 'TAIL_CALL_START; } else { - let mut valueOrError1: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(int!(0) < legend.cardinality(), &crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::E(&string_utf16_of("Schema changed : something that was unsigned is now signed."))); + let mut valueOrError1: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(legendPos < truncate!(legend.cardinality(), u64), &crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::E(&string_utf16_of("Schema changed : something that was unsigned is now signed."))); if valueOrError1.IsFailure() { return valueOrError1.PropagateFailure::>>(); } else { - let mut _in3: Sequence> = fields.drop(&int!(1)); - let mut _in4: Sequence = legend.drop(&int!(1)); - let mut _in5: Sequence> = acc.concat(&seq![_default::MakeCryptoItem(&fields.get(&int!(0)), &_default::LegendToAction(legend.get(&int!(0))))]); - _r0 = _in3.clone(); - _r1 = _in4.clone(); - _r2 = _in5.clone(); + let mut _in5: Sequence> = fields.clone(); + let mut _in6: Legend = legend.clone(); + let mut _in7: u64 = pos + 1; + let mut _in8: u64 = legendPos + 1; + let mut _in9: Sequence> = acc.concat(&seq![_default::MakeCryptoItem(&fields.get(&int!((&pos).clone())), &_default::LegendToAction(legend.get(&int!((&legendPos).clone()))))]); + _r0 = _in5.clone(); + _r1 = _in6.clone(); + _r2 = _in7; + _r3 = _in8; + _r4 = _in9.clone(); continue 'TAIL_CALL_START; } } } } } - /// dafny/StructuredEncryption/src/Canonize.dfy(163,3) + /// dafny/StructuredEncryption/src/Canonize.dfy(168,3) pub fn ForEncrypt(tableName: &Sequence, data: &Sequence>) -> Arc>, Arc>> { let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(Itertools::unique(data.iter()).all(({ let mut data = data.clone(); @@ -85969,7 +86465,7 @@ pub mod _Canonize_Compile { }) } } - /// dafny/StructuredEncryption/src/Canonize.dfy(380,3) + /// dafny/StructuredEncryption/src/Canonize.dfy(385,3) pub fn AuthToCanonAuth(tableName: &Sequence, data: &Sequence>) -> Sequence> { let mut canonList: Sequence> = crate::implementation_from_dafny::_Seq_Compile::_default::Map::, Arc>({ let tableName: Sequence = tableName.clone(); @@ -85982,7 +86478,7 @@ pub mod _Canonize_Compile { }, data); canonList.clone() } - /// dafny/StructuredEncryption/src/Canonize.dfy(409,3) + /// dafny/StructuredEncryption/src/Canonize.dfy(414,3) pub fn CryptoToCanonCrypto(tableName: &Sequence, data: &Sequence>) -> Sequence> { let mut canonList: Sequence> = crate::implementation_from_dafny::_Seq_Compile::_default::Map::, Arc>({ let tableName: Sequence = tableName.clone(); @@ -85995,19 +86491,19 @@ pub mod _Canonize_Compile { }, data); canonList.clone() } - /// dafny/StructuredEncryption/src/Canonize.dfy(449,3) + /// dafny/StructuredEncryption/src/Canonize.dfy(454,3) pub fn AuthSort(canonList: &Sequence>) -> Sequence> { let mut canonSorted: Sequence> = crate::implementation_from_dafny::_SortCanon_Compile::_default::AuthSort(canonList); canonSorted.clone() } - /// dafny/StructuredEncryption/src/Canonize.dfy(489,3) + /// dafny/StructuredEncryption/src/Canonize.dfy(494,3) pub fn CryptoSort(canonList: &Sequence>) -> Sequence> { let mut canonSorted: Sequence> = crate::implementation_from_dafny::_SortCanon_Compile::_default::CryptoSort(canonList); canonSorted.clone() } - /// dafny/StructuredEncryption/src/Canonize.dfy(554,3) + /// dafny/StructuredEncryption/src/Canonize.dfy(559,3) pub fn DoResolveLegend(canonSorted: &Sequence>, legend: &Legend) -> Arc>, Arc>> { - let mut valueOrError0: Arc>, Arc>> = _default::ResolveLegend(canonSorted, legend, &(seq![] as Sequence>)); + let mut valueOrError0: Arc>, Arc>> = _default::ResolveLegend(canonSorted, legend, 0, 0, &(seq![] as Sequence>)); if valueOrError0.IsFailure() { valueOrError0.PropagateFailure::>>() } else { @@ -86017,7 +86513,7 @@ pub mod _Canonize_Compile { }) } } - /// dafny/StructuredEncryption/src/Canonize.dfy(602,3) + /// dafny/StructuredEncryption/src/Canonize.dfy(607,3) pub fn ForDecrypt(tableName: &Sequence, data: &Sequence>, legend: &Legend) -> Arc>, Arc>> { let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(Itertools::unique(data.iter()).all(({ let mut data = data.clone(); @@ -86034,42 +86530,48 @@ pub mod _Canonize_Compile { _default::DoResolveLegend(&canonSorted, legend) } } - /// dafny/StructuredEncryption/src/Canonize.dfy(618,3) + /// dafny/StructuredEncryption/src/Canonize.dfy(623,3) pub fn SameUnCanon(x: &Arc, y: &Arc) -> bool { x.origKey().clone() == y.key().clone() && x.data().clone() == y.data().clone() && x.action().clone() == y.action().clone() } - /// dafny/StructuredEncryption/src/Canonize.dfy(625,3) - pub fn UnCanon(input: &Sequence>) -> Sequence> { - let mut _accumulator: Sequence> = seq![] as Sequence>; + /// dafny/StructuredEncryption/src/Canonize.dfy(630,3) + pub fn UnCanon(input: &Sequence>, pos: u64, acc: &Sequence>) -> Sequence> { let mut _r0 = input.clone(); + let mut _r1 = pos; + let mut _r2 = acc.clone(); 'TAIL_CALL_START: loop { let input = _r0; - if input.cardinality() == int!(0) { - return _accumulator.concat(&(seq![] as Sequence>)); + let pos = _r1; + let acc = _r2; + if truncate!(input.cardinality(), u64) == pos { + return acc.clone(); } else { let mut newItem: Arc = Arc::new(CryptoItem::CryptoItem { - key: input.get(&int!(0)).origKey().clone(), - data: input.get(&int!(0)).data().clone(), - action: input.get(&int!(0)).action().clone() + key: input.get(&int!((&pos).clone())).origKey().clone(), + data: input.get(&int!((&pos).clone())).data().clone(), + action: input.get(&int!((&pos).clone())).action().clone() }); - _accumulator = _accumulator.concat(&seq![newItem.clone()]); - let mut _in0: Sequence> = input.drop(&int!(1)); + let mut _in0: Sequence> = input.clone(); + let mut _in1: u64 = pos + 1; + let mut _in2: Sequence> = acc.concat(&seq![newItem.clone()]); _r0 = _in0.clone(); + _r1 = _in1; + _r2 = _in2.clone(); continue 'TAIL_CALL_START; } } } - /// dafny/StructuredEncryption/src/Canonize.dfy(702,3) + /// dafny/StructuredEncryption/src/Canonize.dfy(710,3) pub fn UnCanonDecrypt(input: &Sequence>) -> Sequence> { - let mut results: Sequence> = _default::UnCanon(input); + let mut results: Sequence> = _default::UnCanon(input, 0, &(seq![] as Sequence>)); results.clone() } - /// dafny/StructuredEncryption/src/Canonize.dfy(748,3) + /// dafny/StructuredEncryption/src/Canonize.dfy(756,3) pub fn UnCanonEncrypt(input: &Sequence>) -> Sequence> { - let mut results: Sequence> = _default::UnCanon(input); + let mut results: Sequence> = _default::UnCanon(input, 0, &(seq![] as Sequence>)); results.clone() } - /// dafny/StructuredEncryption/src/Canonize.dfy(774,3) + /// dafny/StructuredEncryption/src/Canonize.dfy(782,3) pub fn AddHeaders(input: &Sequence>, headerData: &Arc, footerData: &Arc) -> Sequence> { let mut headItem: Arc = Arc::new(CryptoItem::CryptoItem { key: crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::HeaderPath(), @@ -86084,34 +86586,46 @@ pub mod _Canonize_Compile { let mut largeResult: Sequence> = input.concat(&seq![headItem.clone(), footItem.clone()]); largeResult.clone() } - /// dafny/StructuredEncryption/src/Canonize.dfy(798,3) - pub fn RemoveHeaderPaths(xs: &Sequence>) -> Sequence> { - let mut _accumulator: Sequence> = seq![] as Sequence>; + /// dafny/StructuredEncryption/src/Canonize.dfy(806,3) + pub fn RemoveHeaderPaths(xs: &Sequence>, pos: u64, acc: &Sequence>) -> Sequence> { let mut _r0 = xs.clone(); + let mut _r1 = pos; + let mut _r2 = acc.clone(); 'TAIL_CALL_START: loop { let xs = _r0; - if xs.cardinality() == int!(0) { - return _accumulator.concat(&(seq![] as Sequence>)); + let pos = _r1; + let acc = _r2; + if truncate!(xs.cardinality(), u64) == pos { + return acc.clone(); } else { - _accumulator = _accumulator.concat(&(if seq![crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::HeaderPath(), crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::FooterPath()].contains(xs.get(&int!(0)).key()) { - seq![] as Sequence> - } else { - seq![xs.get(&int!(0))] - })); - let mut _in0: Sequence> = xs.drop(&int!(1)); - _r0 = _in0.clone(); - continue 'TAIL_CALL_START; + if seq![crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::HeaderPath(), crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::FooterPath()].contains(xs.get(&int!((&pos).clone())).key()) { + let mut _in0: Sequence> = xs.clone(); + let mut _in1: u64 = pos + 1; + let mut _in2: Sequence> = acc.clone(); + _r0 = _in0.clone(); + _r1 = _in1; + _r2 = _in2.clone(); + continue 'TAIL_CALL_START; + } else { + let mut _in3: Sequence> = xs.clone(); + let mut _in4: u64 = pos + 1; + let mut _in5: Sequence> = acc.concat(&seq![xs.get(&int!((&pos).clone()))]); + _r0 = _in3.clone(); + _r1 = _in4; + _r2 = _in5.clone(); + continue 'TAIL_CALL_START; + } } } } - /// dafny/StructuredEncryption/src/Canonize.dfy(811,3) + /// dafny/StructuredEncryption/src/Canonize.dfy(837,3) pub fn RemoveHeaders(input: &Sequence>) -> Sequence> { - let mut finalData: Sequence> = _default::RemoveHeaderPaths(input); + let mut finalData: Sequence> = _default::RemoveHeaderPaths(input, 0, &(seq![] as Sequence>)); finalData.clone() } } - /// dafny/StructuredEncryption/src/Canonize.dfy(24,3) + /// dafny/StructuredEncryption/src/Canonize.dfy(25,3) #[derive(PartialEq, Clone)] pub enum EncryptionSelector { DoEncrypt {}, @@ -86294,7 +86808,7 @@ pub mod _CompoundBeacon_Compile { pub struct _default {} impl _default { - /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(88,3) + /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(89,3) pub fn MakeCompoundBeacon(base: &Arc, split: &DafnyCharUTF16, parts: &Sequence>, numSigned: &nat, construct: &ConstructorList) -> Arc>> { let mut x: Arc = Arc::new(CompoundBeacon::CompoundBeacon { base: base.clone(), @@ -86313,7 +86827,7 @@ pub mod _CompoundBeacon_Compile { }) } } - /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(613,3) + /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(614,3) pub fn MakeDefaultConstructor(parts: &Sequence>) -> Arc { let mut cons: Sequence> = crate::implementation_from_dafny::_Seq_Compile::_default::Map::, Arc>(&({ Arc::new(move |x: &Arc| -> Arc{ @@ -86329,10 +86843,10 @@ pub mod _CompoundBeacon_Compile { } } - /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(24,3) + /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(25,3) pub type Prefix = Sequence; - /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(26,3) + /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(27,3) #[derive(PartialEq, Clone)] pub enum BeaconPart { Encrypted { @@ -86347,7 +86861,7 @@ pub mod _CompoundBeacon_Compile { } impl BeaconPart { - /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(31,5) + /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(32,5) pub fn getPrefix(self: &Arc) -> Sequence { let mut _source0: Arc = self.clone(); if matches!((&_source0).as_ref(), Encrypted{ .. }) { @@ -86366,7 +86880,7 @@ pub mod _CompoundBeacon_Compile { p.clone() } } - /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(39,5) + /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(40,5) pub fn getName(self: &Arc) -> Sequence { let mut _source0: Arc = self.clone(); if matches!((&_source0).as_ref(), Encrypted{ .. }) { @@ -86385,7 +86899,7 @@ pub mod _CompoundBeacon_Compile { n.clone() } } - /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(47,5) + /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(48,5) pub fn getString(self: &Arc, item: &Map, Arc>, vf: &VirtualFieldMap) -> Arc>>, Arc>> { let mut _source0: Arc = self.clone(); if matches!((&_source0).as_ref(), Encrypted{ .. }) { @@ -86404,7 +86918,7 @@ pub mod _CompoundBeacon_Compile { crate::implementation_from_dafny::_DdbVirtualFields_Compile::_default::VirtToString(&l, item, vf) } } - /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(55,5) + /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(56,5) pub fn GetFields(self: &Arc, virtualFields: &VirtualFieldMap) -> Sequence> { let mut _source0: Arc = self.clone(); if matches!((&_source0).as_ref(), Encrypted{ .. }) { @@ -86527,7 +87041,7 @@ pub mod _CompoundBeacon_Compile { } } - /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(68,3) + /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(69,3) #[derive(PartialEq, Clone)] pub enum ConstructorPart { ConstructorPart { @@ -86606,10 +87120,10 @@ pub mod _CompoundBeacon_Compile { } } - /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(73,3) + /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(74,3) pub type ConstructorPartList = Sequence>; - /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(75,3) + /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(76,3) #[derive(PartialEq, Clone)] pub enum Constructor { Constructor { @@ -86618,7 +87132,7 @@ pub mod _CompoundBeacon_Compile { } impl Constructor { - /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(78,5) + /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(79,5) pub fn getReqParts(self: &Arc) -> Set> { (&({ let mut _this = self.clone(); @@ -86693,13 +87207,13 @@ pub mod _CompoundBeacon_Compile { } } - /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(84,3) + /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(85,3) pub type ConstructorList = Sequence>; - /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(86,3) + /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(87,3) pub type ValidCompoundBeacon = Arc; - /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(119,3) + /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(120,3) #[derive(PartialEq, Clone)] pub enum CompoundBeacon { CompoundBeacon { @@ -86712,7 +87226,7 @@ pub mod _CompoundBeacon_Compile { } impl CompoundBeacon { - /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(144,5) + /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(145,5) pub fn HasBeacon2(self: &Arc, parts: &Sequence>, name: &Sequence) -> bool { let mut _this = self.clone(); let mut _r0 = parts.clone(); @@ -86737,19 +87251,19 @@ pub mod _CompoundBeacon_Compile { } } } - /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(155,5) + /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(156,5) pub fn HasBeacon(self: &Arc, name: &Sequence) -> bool { self.HasBeacon2(self.parts(), name) } - /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(161,5) + /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(162,5) pub fn isEncrypted(self: &Arc) -> bool { self.numSigned().clone() < self.parts().cardinality() } - /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(166,5) + /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(167,5) pub fn getPartFromPrefix(self: &Arc, value: &Sequence) -> Arc, Arc>> { self.partFromPrefix(self.parts(), value) } - /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(173,5) + /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(174,5) pub fn PartsToString(self: &Arc, p: &Sequence>) -> Sequence { let mut beaconParts: Sequence> = crate::implementation_from_dafny::_Seq_Compile::_default::Map::, Sequence>(&({ Arc::new(move |s: &Arc| -> Sequence{ @@ -86762,7 +87276,7 @@ pub mod _CompoundBeacon_Compile { crate::implementation_from_dafny::_StandardLibrary_Compile::_default::Join::(&beaconParts, &string_utf16_of("")) } } - /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(182,5) + /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(183,5) pub fn CPartToString(self: &Arc, s: &Arc) -> Sequence { if s.required().clone() { s.part().getPrefix() @@ -86770,7 +87284,7 @@ pub mod _CompoundBeacon_Compile { string_utf16_of("[").concat(&s.part().getPrefix()).concat(&string_utf16_of("]")) } } - /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(190,5) + /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(191,5) pub fn CPartsToString(self: &Arc, p: &Sequence>) -> Sequence { let mut beaconParts: Sequence> = crate::implementation_from_dafny::_Seq_Compile::_default::Map::, Sequence>(&({ let mut _this = self.clone(); @@ -86784,7 +87298,7 @@ pub mod _CompoundBeacon_Compile { crate::implementation_from_dafny::_StandardLibrary_Compile::_default::Join::(&beaconParts, &string_utf16_of("")) } } - /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(199,5) + /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(200,5) pub fn CListToString(self: &Arc, p: &ConstructorList) -> Sequence { let mut beaconParts: Sequence> = crate::implementation_from_dafny::_Seq_Compile::_default::Map::, Sequence>(&({ let mut _this = self.clone(); @@ -86794,7 +87308,7 @@ pub mod _CompoundBeacon_Compile { }), p); crate::implementation_from_dafny::_StandardLibrary_Compile::_default::Join::(&beaconParts, &string_utf16_of(", ")) } - /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(211,5) + /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(212,5) pub fn CanConstruct(self: &Arc, con: &Sequence>, inParts: &Sequence>, matched: bool) -> bool { let mut _this = self.clone(); let mut _r0 = con.clone(); @@ -86839,7 +87353,7 @@ pub mod _CompoundBeacon_Compile { } } } - /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(226,5) + /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(227,5) pub fn IsValidPartOrder(self: &Arc, candidates: &Sequence>, inParts: &Sequence>) -> bool { let mut _this = self.clone(); let mut _r0 = candidates.clone(); @@ -86864,7 +87378,7 @@ pub mod _CompoundBeacon_Compile { } } } - /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(237,5) + /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(238,5) pub fn ValidatePartOrder(self: &Arc, inParts: &Sequence>, orig: &Sequence) -> Arc>> { if self.IsValidPartOrder(self.construct(), inParts) { Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::>::Success { @@ -86877,7 +87391,7 @@ pub mod _CompoundBeacon_Compile { }) } } - /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(251,5) + /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(252,5) pub fn partFromPrefix(self: &Arc, p: &Sequence>, value: &Sequence) -> Arc, Arc>> { let mut _this = self.clone(); let mut _r0 = p.clone(); @@ -86906,7 +87420,7 @@ pub mod _CompoundBeacon_Compile { } } } - /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(264,5) + /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(265,5) pub fn SkipSignedPieces(self: &Arc, pieces: &Sequence>) -> Arc>, Arc>> { let mut _this = self.clone(); let mut _r0 = pieces.clone(); @@ -86937,7 +87451,7 @@ pub mod _CompoundBeacon_Compile { } } } - /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(277,5) + /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(278,5) pub fn IsLessThanComparable(self: &Arc, pieces: &Sequence>) -> Arc>> { let mut valueOrError0: Arc>, Arc>> = self.SkipSignedPieces(pieces); if valueOrError0.IsFailure() { @@ -86967,9 +87481,9 @@ pub mod _CompoundBeacon_Compile { } } } - /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(290,5) + /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(291,5) pub fn GetFields(self: &Arc, virtualFields: &VirtualFieldMap) -> Sequence> { - crate::implementation_from_dafny::_Seq_Compile::_default::Flatten::>(&crate::implementation_from_dafny::_Seq_Compile::_default::Map::, Sequence>>({ + crate::implementation_from_dafny::_StandardLibrary_Compile::_Sequence_Compile::_default::Flatten::>(&crate::implementation_from_dafny::_Seq_Compile::_default::Map::, Sequence>>({ let virtualFields: VirtualFieldMap = virtualFields.clone(); &({ let mut virtualFields = virtualFields.clone(); @@ -86977,9 +87491,9 @@ pub mod _CompoundBeacon_Compile { p.GetFields(&virtualFields) }) }) - }, self.parts())) + }, self.parts()), 0, &(seq![] as Sequence>)) } - /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(296,5) + /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(297,5) pub fn FindAndCalcPart(self: &Arc, value: &Sequence, keys: &Arc) -> Arc, Arc>> { let mut valueOrError0: Arc, Arc>> = self.partFromPrefix(self.parts(), value); if valueOrError0.IsFailure() { @@ -86989,7 +87503,7 @@ pub mod _CompoundBeacon_Compile { self.PartValueCalc(&value.drop(&part.prefix().cardinality()), keys, &part) } } - /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(304,5) + /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(305,5) pub fn justPrefix(self: &Arc, value: &Sequence) -> Arc>> { let mut valueOrError0: Arc, Arc>> = self.partFromPrefix(self.parts(), value); if valueOrError0.IsFailure() { @@ -87001,7 +87515,7 @@ pub mod _CompoundBeacon_Compile { }) } } - /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(311,5) + /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(312,5) pub fn GetBeaconValue(self: &Arc, value: &Arc, keys: &Arc, forEquality: bool) -> Arc, Arc>> { if !matches!(value.as_ref(), S{ .. }) { Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::, Arc>::Failure { @@ -87009,12 +87523,12 @@ pub mod _CompoundBeacon_Compile { }) } else { let mut parts: Sequence> = crate::implementation_from_dafny::_StandardLibrary_Compile::_default::Split::(value.S(), self.split()); - let mut valueOrError0: Arc>, Arc>> = crate::implementation_from_dafny::_Seq_Compile::_default::MapWithResult::, Arc, Arc>(&({ + let mut valueOrError0: Arc>, Arc>> = crate::implementation_from_dafny::_StandardLibrary_Compile::_Sequence_Compile::_default::MapWithResult::, Arc, Arc>(&({ let mut _this = self.clone(); Arc::new(move |s: &Sequence| -> Arc, Arc>>{ _this.getPartFromPrefix(s) }) - }), &parts); + }), &parts, 0, &(seq![] as Sequence>)); if valueOrError0.IsFailure() { valueOrError0.PropagateFailure::>() } else { @@ -87024,7 +87538,7 @@ pub mod _CompoundBeacon_Compile { valueOrError1.PropagateFailure::>() } else { let mut _v1: bool = valueOrError1.Extract(); - let mut valueOrError2: Arc>, Arc>> = crate::implementation_from_dafny::_Seq_Compile::_default::MapWithResult::, Sequence, Arc>({ + let mut valueOrError2: Arc>, Arc>> = crate::implementation_from_dafny::_StandardLibrary_Compile::_Sequence_Compile::_default::MapWithResult::, Sequence, Arc>({ let keys: Arc = keys.clone(); &({ let mut keys = keys.clone(); @@ -87033,7 +87547,7 @@ pub mod _CompoundBeacon_Compile { _this.FindAndCalcPart(s, &keys) }) }) - }, &parts); + }, &parts, 0, &(seq![] as Sequence>)); if valueOrError2.IsFailure() { valueOrError2.PropagateFailure::>() } else { @@ -87064,7 +87578,7 @@ pub mod _CompoundBeacon_Compile { } } } - /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(331,5) + /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(332,5) pub fn TryConstructor(self: &Arc, consFields: &Sequence>, item: &Map, Arc>, vf: &VirtualFieldMap, keys: &Arc, acc: &Sequence) -> Arc>>, Arc>> { let mut _this = self.clone(); let mut _r0 = consFields.clone(); @@ -87169,7 +87683,7 @@ pub mod _CompoundBeacon_Compile { } } } - /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(370,5) + /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(371,5) pub fn TryConstructors(self: &Arc, construct: &Sequence>, item: &Map, Arc>, vf: &VirtualFieldMap, keys: &Arc) -> Arc>>, Arc>> { let mut _this = self.clone(); let mut _r0 = construct.clone(); @@ -87212,15 +87726,15 @@ pub mod _CompoundBeacon_Compile { } } } - /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(394,5) + /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(395,5) pub fn hash(self: &Arc, item: &Map, Arc>, vf: &VirtualFieldMap, keys: &Arc) -> Arc>>, Arc>> { self.TryConstructors(self.construct(), item, vf, keys) } - /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(409,5) + /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(410,5) pub fn getNaked(self: &Arc, item: &Map, Arc>, vf: &VirtualFieldMap) -> Arc>>, Arc>> { self.TryConstructors(self.construct(), item, vf, &Arc::new(MaybeKeyMap::DontUseKeys {})) } - /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(416,5) + /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(417,5) pub fn findPart(self: &Arc, val: &Sequence) -> Arc, Arc>> { let mut thePart: Sequence> = crate::implementation_from_dafny::_Seq_Compile::_default::Filter::>({ let val: Sequence = val.clone(); @@ -87250,12 +87764,12 @@ pub mod _CompoundBeacon_Compile { /// = specification/searchable-encryption/beacons.md#getpart-for-a-compound-beacon /// = type=implication /// # * The returned string MUST NOT be empty. - /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(444,5) + /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(445,5) pub fn getPart(self: &Arc, val: &Sequence, keys: &Map, Sequence>) -> Arc, Arc>> { let mut pieces: Sequence> = crate::implementation_from_dafny::_StandardLibrary_Compile::_default::Split::(val, self.split()); self.calcParts(&pieces, keys, &(seq![] as Sequence)) } - /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(465,5) + /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(466,5) pub fn calcPart(self: &Arc, piece: &Sequence, keys: &Map, Sequence>) -> Arc, Arc>> { let mut valueOrError0: Arc, Arc>> = self.findPart(piece); if valueOrError0.IsFailure() { @@ -87267,7 +87781,7 @@ pub mod _CompoundBeacon_Compile { }), &thePart) } } - /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(486,5) + /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(487,5) pub fn calcParts(self: &Arc, pieces: &Sequence>, keys: &Map, Sequence>, acc: &Sequence) -> Arc, Arc>> { let mut _this = self.clone(); let mut _r0 = pieces.clone(); @@ -87312,15 +87826,15 @@ pub mod _CompoundBeacon_Compile { } } } - /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(504,5) + /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(505,5) pub fn OkPrefixStringPair(x: &Sequence, y: &Sequence) -> bool { !(x.clone() <= y.clone()) && !(y.clone() <= x.clone()) } - /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(511,5) + /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(512,5) pub fn OkPrefixPair(self: &Arc, pos1: &nat, pos2: &nat) -> bool { pos1.clone() == pos2.clone() || CompoundBeacon::OkPrefixStringPair(self.parts().get(pos1).prefix(), self.parts().get(pos2).prefix()) } - /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(520,5) + /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(521,5) pub fn CheckOnePrefixPart(self: &Arc, pos1: &nat, pos2: &nat) -> Arc>> { if !self.OkPrefixPair(pos1, pos2) { Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::>::Failure { @@ -87332,7 +87846,7 @@ pub mod _CompoundBeacon_Compile { }) } } - /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(533,5) + /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(534,5) pub fn CheckOnePrefix(self: &Arc, pos: &nat) -> Arc>> { let mut partNumbers: Sequence = { let _initializer = { @@ -87342,7 +87856,7 @@ pub mod _CompoundBeacon_Compile { }; integer_range(Zero::zero(), self.parts().cardinality()).map(move |i| _initializer(&i)).collect::>() }; - let mut valueOrError0: Arc, Arc>> = crate::implementation_from_dafny::_Seq_Compile::_default::MapWithResult::>({ + let mut valueOrError0: Arc, Arc>> = crate::implementation_from_dafny::_StandardLibrary_Compile::_Sequence_Compile::_default::MapWithResult::>({ let pos: nat = pos.clone(); &({ let mut pos = pos.clone(); @@ -87358,7 +87872,7 @@ pub mod _CompoundBeacon_Compile { }) }; integer_range(Zero::zero(), self.parts().cardinality()).map(move |i| _initializer(&i)).collect::>() - })); + }), 0, &(seq![] as Sequence)); if valueOrError0.IsFailure() { valueOrError0.PropagateFailure::() } else { @@ -87368,7 +87882,7 @@ pub mod _CompoundBeacon_Compile { }) } } - /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(542,5) + /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(543,5) pub fn ValidPrefixSetResultPos(self: &Arc, index: &nat) -> Arc>> { let mut _this = self.clone(); let mut _r0 = index.clone(); @@ -87393,7 +87907,7 @@ pub mod _CompoundBeacon_Compile { } } } - /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(553,5) + /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(554,5) pub fn ValidPrefixSetResult(self: &Arc) -> Arc>> { let mut valueOrError0: Arc>> = self.ValidPrefixSetResultPos(&int!(0)); if valueOrError0.IsFailure() { @@ -87446,7 +87960,7 @@ pub mod _CompoundBeacon_Compile { } } } - /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(570,5) + /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(571,5) pub fn PartValueCalc(self: &Arc, data: &Sequence, keys: &Arc, part: &Arc) -> Arc, Arc>> { let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(!data.contains(self.split()), &crate::implementation_from_dafny::_DynamoDbEncryptionUtil_Compile::_default::E(&string_utf16_of("Value '").concat(data).concat(&string_utf16_of("' for beacon part ")).concat(&part.getName()).concat(&string_utf16_of(" contains the split character '")).concat(&seq![self.split().clone()]).concat(&string_utf16_of("'.")))); if valueOrError0.IsFailure() { @@ -87598,9 +88112,6 @@ pub mod ConcurrentCall { } /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/Constants.dfy(7,1) pub mod _Constants_Compile { - pub use ::dafny_runtime::DafnyInt; - pub use ::dafny_runtime::int; - pub use ::dafny_runtime::truncate; pub use ::std::sync::Arc; pub use crate::implementation_from_dafny::software::amazon::cryptography::primitives::internaldafny::types::AES_GCM; pub use crate::implementation_from_dafny::UTF8::ValidUTF8Bytes; @@ -87628,12 +88139,12 @@ pub mod _Constants_Compile { 1 } /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/Constants.dfy(29,3) - pub fn ECDH_PROVIDER_INFO_PUBLIC_KEY_LEN() -> DafnyInt { - int!(4) + pub fn ECDH_PROVIDER_INFO_PUBLIC_KEY_LEN() -> u64 { + 4 } /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/Constants.dfy(28,3) pub fn ECDH_PROVIDER_INFO_RPK_INDEX() -> u32 { - _default::ECDH_PROVIDER_INFO_RPL_INDEX() + truncate!(_default::ECDH_PROVIDER_INFO_PUBLIC_KEY_LEN(), u32) + _default::ECDH_PROVIDER_INFO_RPL_INDEX() + _default::ECDH_PROVIDER_INFO_PUBLIC_KEY_LEN() as u32 } /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/Constants.dfy(39,3) pub fn ECDH_AES_256_ENC_KEY_LENGTH() -> i32 { @@ -87661,8 +88172,8 @@ pub mod _Constants_Compile { s.clone() } /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/Constants.dfy(14,3) - pub fn UINT32_TO_SEQ_LEN() -> DafnyInt { - int!(4) + pub fn UINT32_TO_SEQ_LEN() -> u64 { + 4 } /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/Constants.dfy(15,3) pub fn KDF_SALT_LEN() -> i32 { @@ -87673,16 +88184,16 @@ pub mod _Constants_Compile { 64 } /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/Constants.dfy(17,3) - pub fn ECDH_COMMITMENT_KEY_LENGTH() -> DafnyInt { - int!(32) + pub fn ECDH_COMMITMENT_KEY_LENGTH() -> u64 { + 32 } /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/Constants.dfy(18,3) - pub fn ECDH_COMMITMENT_KEY_INDEX() -> DafnyInt { - int!(32) + pub fn ECDH_COMMITMENT_KEY_INDEX() -> u64 { + 32 } /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/Constants.dfy(19,3) - pub fn ECDH_WRAPPED_KEY_MATERIAL_INDEX() -> DafnyInt { - int!(64) + pub fn ECDH_WRAPPED_KEY_MATERIAL_INDEX() -> u64 { + 64 } /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/Constants.dfy(20,3) pub fn ECDH_KDF_STRING() -> Sequence { @@ -87693,7 +88204,7 @@ pub mod _Constants_Compile { string_utf16_of("HMAC_SHA384") } /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/Constants.dfy(22,3) - pub fn ECDH_KDF_DELIMETER() -> Sequence { + pub fn ECDH_KDF_DELIMITER() -> Sequence { seq![0] } /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/Constants.dfy(24,3) @@ -87709,32 +88220,32 @@ pub mod _Constants_Compile { 143 } /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/Constants.dfy(30,3) - pub fn ECDH_PUBLIC_KEY_LEN_ECC_NIST_256() -> DafnyInt { - int!(91) + pub fn ECDH_PUBLIC_KEY_LEN_ECC_NIST_256() -> u64 { + 91 } /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/Constants.dfy(31,3) - pub fn ECDH_PUBLIC_KEY_LEN_ECC_NIST_384() -> DafnyInt { - int!(120) + pub fn ECDH_PUBLIC_KEY_LEN_ECC_NIST_384() -> u64 { + 120 } /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/Constants.dfy(32,3) - pub fn ECDH_PUBLIC_KEY_LEN_ECC_NIST_521() -> DafnyInt { - int!(158) + pub fn ECDH_PUBLIC_KEY_LEN_ECC_NIST_521() -> u64 { + 158 } /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/Constants.dfy(34,3) - pub fn ECDH_PUBLIC_KEY_COMPRESSED_LEN_ECC_NIST_256() -> DafnyInt { - int!(33) + pub fn ECDH_PUBLIC_KEY_COMPRESSED_LEN_ECC_NIST_256() -> u64 { + 33 } /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/Constants.dfy(35,3) - pub fn ECDH_PUBLIC_KEY_COMPRESSED_LEN_ECC_NIST_384() -> DafnyInt { - int!(49) + pub fn ECDH_PUBLIC_KEY_COMPRESSED_LEN_ECC_NIST_384() -> u64 { + 49 } /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/Constants.dfy(36,3) - pub fn ECDH_PUBLIC_KEY_COMPRESSED_LEN_ECC_NIST_521() -> DafnyInt { - int!(67) + pub fn ECDH_PUBLIC_KEY_COMPRESSED_LEN_ECC_NIST_521() -> u64 { + 67 } /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/Constants.dfy(38,3) - pub fn CIPHERTEXT_WRAPPED_MATERIAL_INDEX() -> DafnyInt { - int!(68) + pub fn CIPHERTEXT_WRAPPED_MATERIAL_INDEX() -> u64 { + 68 } /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/Constants.dfy(58,3) pub fn PROVIDER_ID_HIERARCHY() -> ValidUTF8Bytes { @@ -87748,26 +88259,30 @@ pub mod _Constants_Compile { } /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/Constants.dfy(71,3) pub fn KMS_ECDH_PROVIDER_ID() -> ValidUTF8Bytes { - crate::implementation_from_dafny::UTF8::_default::EncodeAscii(&string_utf16_of("aws-kms-ecdh")) + let mut s: Sequence = seq![97, 119, 115, 45, 107, 109, 115, 45, 101, 99, 100, 104]; + s.clone() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/Constants.dfy(74,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/Constants.dfy(77,3) pub fn RAW_ECDH_PROVIDER_ID() -> ValidUTF8Bytes { - crate::implementation_from_dafny::UTF8::_default::EncodeAscii(&string_utf16_of("raw-ecdh")) + let mut s: Sequence = seq![114, 97, 119, 45, 101, 99, 100, 104]; + s.clone() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/Constants.dfy(77,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/Constants.dfy(83,3) pub fn ECDH_KDF_PRF_NAME() -> ValidUTF8Bytes { - crate::implementation_from_dafny::UTF8::_default::EncodeAscii(&string_utf16_of("HMAC_SHA384")) + let mut s: Sequence = seq![72, 77, 65, 67, 95, 83, 72, 65, 51, 56, 52]; + s.clone() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/Constants.dfy(80,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/Constants.dfy(89,3) pub fn ECDH_KDF_UTF8() -> ValidUTF8Bytes { - crate::implementation_from_dafny::UTF8::_default::EncodeAscii(&string_utf16_of("ecdh-key-derivation")) + let mut s: Sequence = seq![101, 99, 100, 104, 45, 107, 101, 121, 45, 100, 101, 114, 105, 118, 97, 116, 105, 111, 110]; + s.clone() } } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/Constants.dfy(82,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/Constants.dfy(94,3) pub type AwsKmsEncryptedDataKey = Arc; - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/Constants.dfy(94,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/Constants.dfy(106,3) #[derive(PartialEq, Clone)] pub enum AwsKmsEdkHelper { AwsKmsEdkHelper { @@ -88175,7 +88690,7 @@ pub mod _DDBKeystoreOperations_Compile { pub use crate::implementation_from_dafny::software::amazon::cryptography::services::dynamodb::internaldafny::types::GetItemOutput; pub use crate::implementation_from_dafny::_Wrappers_Compile::Outcome; pub use crate::implementation_from_dafny::_Wrappers_Compile::Option::Some; - pub use ::dafny_runtime::int; + pub use ::dafny_runtime::truncate; pub use ::dafny_runtime::string_utf16_of; pub use crate::implementation_from_dafny::software::amazon::cryptography::services::dynamodb::internaldafny::types::TransactWriteItem; pub use crate::implementation_from_dafny::software::amazon::cryptography::services::dynamodb::internaldafny::types::ConditionCheck; @@ -88197,7 +88712,7 @@ pub mod _DDBKeystoreOperations_Compile { pub struct _default {} impl _default { - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographyKeyStore/src/DDBKeystoreOperations.dfy(29,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographyKeyStore/src/DDBKeystoreOperations.dfy(30,3) pub fn WriteNewKeyToStore(versionBranchKeyItem: &VersionBranchKeyItem, activeBranchKeyItem: &ActiveBranchKeyItem, beaconKeyItem: &BeaconKeyItem, tableName: &Sequence, ddbClient: &Object) -> Arc, Arc>> { let mut output = MaybePlacebo::, Arc>>>::new(); let mut items: TransactWriteItemList = seq![_default::CreateTransactWritePutItem(versionBranchKeyItem, tableName, &Arc::new(ConditionExpression::BRANCH_KEY_NOT_EXIST {})), _default::CreateTransactWritePutItem(activeBranchKeyItem, tableName, &Arc::new(ConditionExpression::BRANCH_KEY_NOT_EXIST {})), _default::CreateTransactWritePutItem(beaconKeyItem, tableName, &Arc::new(ConditionExpression::BRANCH_KEY_NOT_EXIST {}))]; @@ -88227,7 +88742,7 @@ pub mod _DDBKeystoreOperations_Compile { })); return output.read(); } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographyKeyStore/src/DDBKeystoreOperations.dfy(91,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographyKeyStore/src/DDBKeystoreOperations.dfy(92,3) pub fn WriteNewBranchKeyVersionToKeystore(versionBranchKeyItem: &VersionBranchKeyItem, activeBranchKeyItem: &ActiveBranchKeyItem, tableName: &Sequence, ddbClient: &Object) -> Arc, Arc>> { let mut output = MaybePlacebo::, Arc>>>::new(); let mut items: TransactWriteItemList = seq![_default::CreateTransactWritePutItem(versionBranchKeyItem, tableName, &Arc::new(ConditionExpression::BRANCH_KEY_NOT_EXIST {})), _default::CreateTransactWritePutItem(activeBranchKeyItem, tableName, &Arc::new(ConditionExpression::BRANCH_KEY_EXISTS {}))]; @@ -88257,7 +88772,7 @@ pub mod _DDBKeystoreOperations_Compile { })); return output.read(); } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographyKeyStore/src/DDBKeystoreOperations.dfy(145,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographyKeyStore/src/DDBKeystoreOperations.dfy(146,3) pub fn GetActiveBranchKeyItem(branchKeyIdentifier: &Sequence, tableName: &Sequence, ddbClient: &Object) -> Arc>> { let mut output = MaybePlacebo::>>>::new(); let mut dynamoDbKey: Map, Arc> = map![(crate::implementation_from_dafny::_Structure_Compile::_default::BRANCH_KEY_IDENTIFIER_FIELD()) => (Arc::new(AttributeValue::S { @@ -88289,7 +88804,7 @@ pub mod _DDBKeystoreOperations_Compile { return output.read(); }; let mut getItemResponse: Arc = valueOrError0.Extract(); - let mut valueOrError1: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(matches!(getItemResponse.Item().as_ref(), Some{ .. }) && getItemResponse.Item().value().cardinality() >= int!(1), &Arc::new(crate::implementation_from_dafny::software::amazon::cryptography::keystore::internaldafny::types::Error::KeyStoreException { + let mut valueOrError1: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(matches!(getItemResponse.Item().as_ref(), Some{ .. }) && truncate!(getItemResponse.Item().value().cardinality(), u64) >= 1, &Arc::new(crate::implementation_from_dafny::software::amazon::cryptography::keystore::internaldafny::types::Error::KeyStoreException { message: crate::implementation_from_dafny::_KeyStoreErrorMessages_Compile::_default::NO_CORRESPONDING_BRANCH_KEY() })); if valueOrError1.IsFailure() { @@ -88308,7 +88823,7 @@ pub mod _DDBKeystoreOperations_Compile { })); return output.read(); } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographyKeyStore/src/DDBKeystoreOperations.dfy(213,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographyKeyStore/src/DDBKeystoreOperations.dfy(215,3) pub fn GetVersionBranchKeyItem(branchKeyIdentifier: &Sequence, branchKeyVersion: &Sequence, tableName: &Sequence, ddbClient: &Object) -> Arc>> { let mut output = MaybePlacebo::>>>::new(); let mut dynamoDbKey: Map, Arc> = map![(crate::implementation_from_dafny::_Structure_Compile::_default::BRANCH_KEY_IDENTIFIER_FIELD()) => (Arc::new(AttributeValue::S { @@ -88340,7 +88855,7 @@ pub mod _DDBKeystoreOperations_Compile { return output.read(); }; let mut getItemResponse: Arc = valueOrError0.Extract(); - let mut valueOrError1: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(matches!(getItemResponse.Item().as_ref(), Some{ .. }) && getItemResponse.Item().value().cardinality() >= int!(1), &Arc::new(crate::implementation_from_dafny::software::amazon::cryptography::keystore::internaldafny::types::Error::KeyStoreException { + let mut valueOrError1: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(matches!(getItemResponse.Item().as_ref(), Some{ .. }) && truncate!(getItemResponse.Item().value().cardinality(), u64) >= 1, &Arc::new(crate::implementation_from_dafny::software::amazon::cryptography::keystore::internaldafny::types::Error::KeyStoreException { message: crate::implementation_from_dafny::_KeyStoreErrorMessages_Compile::_default::NO_CORRESPONDING_BRANCH_KEY() })); if valueOrError1.IsFailure() { @@ -88359,7 +88874,7 @@ pub mod _DDBKeystoreOperations_Compile { })); return output.read(); } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographyKeyStore/src/DDBKeystoreOperations.dfy(281,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographyKeyStore/src/DDBKeystoreOperations.dfy(284,3) pub fn GetBeaconKeyItem(branchKeyIdentifier: &Sequence, tableName: &Sequence, ddbClient: &Object) -> Arc>> { let mut output = MaybePlacebo::>>>::new(); let mut dynamoDbKey: Map, Arc> = map![(crate::implementation_from_dafny::_Structure_Compile::_default::BRANCH_KEY_IDENTIFIER_FIELD()) => (Arc::new(AttributeValue::S { @@ -88391,7 +88906,7 @@ pub mod _DDBKeystoreOperations_Compile { return output.read(); }; let mut getItemResponse: Arc = valueOrError0.Extract(); - let mut valueOrError1: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(matches!(getItemResponse.Item().as_ref(), Some{ .. }) && getItemResponse.Item().value().cardinality() >= int!(1), &Arc::new(crate::implementation_from_dafny::software::amazon::cryptography::keystore::internaldafny::types::Error::KeyStoreException { + let mut valueOrError1: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(matches!(getItemResponse.Item().as_ref(), Some{ .. }) && truncate!(getItemResponse.Item().value().cardinality(), u64) >= 1, &Arc::new(crate::implementation_from_dafny::software::amazon::cryptography::keystore::internaldafny::types::Error::KeyStoreException { message: crate::implementation_from_dafny::_KeyStoreErrorMessages_Compile::_default::NO_CORRESPONDING_BRANCH_KEY() })); if valueOrError1.IsFailure() { @@ -88410,7 +88925,7 @@ pub mod _DDBKeystoreOperations_Compile { })); return output.read(); } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographyKeyStore/src/DDBKeystoreOperations.dfy(350,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographyKeyStore/src/DDBKeystoreOperations.dfy(354,3) pub fn CreateTransactWritePutItem(item: &Map, Arc>, tableName: &Sequence, conditionExpression: &Arc) -> Arc { Arc::new(TransactWriteItem::TransactWriteItem { ConditionCheck: Arc::new(Option::>::None {}), @@ -88440,25 +88955,25 @@ pub mod _DDBKeystoreOperations_Compile { Update: Arc::new(Option::>::None {}) }) } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographyKeyStore/src/DDBKeystoreOperations.dfy(17,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographyKeyStore/src/DDBKeystoreOperations.dfy(18,3) pub fn BRANCH_KEY_EXISTS_EXPRESSION_ATTRIBUTE_NAME() -> Sequence { string_utf16_of("#BranchKeyIdentifierField") } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographyKeyStore/src/DDBKeystoreOperations.dfy(18,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographyKeyStore/src/DDBKeystoreOperations.dfy(19,3) pub fn BRANCH_KEY_EXISTS_EXPRESSION_ATTRIBUTE_NAMES() -> Map, Sequence> { map![(_default::BRANCH_KEY_EXISTS_EXPRESSION_ATTRIBUTE_NAME()) => (crate::implementation_from_dafny::_Structure_Compile::_default::BRANCH_KEY_IDENTIFIER_FIELD())] } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographyKeyStore/src/DDBKeystoreOperations.dfy(22,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographyKeyStore/src/DDBKeystoreOperations.dfy(23,3) pub fn BRANCH_KEY_NOT_EXIST_CONDITION() -> Sequence { string_utf16_of("attribute_not_exists(").concat(&_default::BRANCH_KEY_EXISTS_EXPRESSION_ATTRIBUTE_NAME()).concat(&string_utf16_of(")")) } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographyKeyStore/src/DDBKeystoreOperations.dfy(23,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographyKeyStore/src/DDBKeystoreOperations.dfy(24,3) pub fn BRANCH_KEY_EXISTS_CONDITION() -> Sequence { string_utf16_of("attribute_exists(").concat(&_default::BRANCH_KEY_EXISTS_EXPRESSION_ATTRIBUTE_NAME()).concat(&string_utf16_of(")")) } } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographyKeyStore/src/DDBKeystoreOperations.dfy(25,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographyKeyStore/src/DDBKeystoreOperations.dfy(26,3) #[derive(PartialEq, Clone)] pub enum ConditionExpression { BRANCH_KEY_NOT_EXIST {}, @@ -88602,7 +89117,7 @@ pub mod _DdbMiddlewareConfig_Compile { pub fn IsPlainWrite(config: &Arc, tableName: &Sequence) -> bool { !config.tableEncryptionConfigs().contains(tableName) || config.tableEncryptionConfigs().get(tableName).plaintextOverride().clone() == Arc::new(PlaintextOverride::FORCE_PLAINTEXT_WRITE_ALLOW_PLAINTEXT_READ {}) } - /// dafny/DynamoDbEncryptionTransforms/src/DdbMiddlewareConfig.dfy(91,3) + /// dafny/DynamoDbEncryptionTransforms/src/DdbMiddlewareConfig.dfy(93,3) pub fn AttrToString(attr: &Arc) -> Sequence { if matches!(attr.as_ref(), S{ .. }) { attr.S().clone() @@ -88618,7 +89133,7 @@ pub mod _DdbMiddlewareConfig_Compile { } } } - /// dafny/DynamoDbEncryptionTransforms/src/DdbMiddlewareConfig.dfy(104,3) + /// dafny/DynamoDbEncryptionTransforms/src/DdbMiddlewareConfig.dfy(106,3) pub fn KeyString(config: &ValidTableConfig, item: &Map, Arc>) -> Sequence { let mut partition: Sequence = if item.contains(config.partitionKeyName()) { config.partitionKeyName().concat(&string_utf16_of(" = ")).concat(&_default::AttrToString(&item.get(config.partitionKeyName()))) @@ -88632,7 +89147,7 @@ pub mod _DdbMiddlewareConfig_Compile { }; partition.concat(&sort) } - /// dafny/DynamoDbEncryptionTransforms/src/DdbMiddlewareConfig.dfy(120,3) + /// dafny/DynamoDbEncryptionTransforms/src/DdbMiddlewareConfig.dfy(122,3) pub fn MapError<_T: DafnyType>(r: &Arc>>) -> Arc>> { r.MapFailure::>(&({ Arc::new(move |e: &Arc| -> Arc{ @@ -88642,7 +89157,7 @@ pub mod _DdbMiddlewareConfig_Compile { }) })) } - /// dafny/DynamoDbEncryptionTransforms/src/DdbMiddlewareConfig.dfy(124,3) + /// dafny/DynamoDbEncryptionTransforms/src/DdbMiddlewareConfig.dfy(126,3) pub fn MapString<_T: DafnyType>(r: &Arc>>) -> Arc>> { r.MapFailure::>(&({ Arc::new(move |e: &Sequence| -> Arc{ @@ -88652,13 +89167,13 @@ pub mod _DdbMiddlewareConfig_Compile { }) })) } - /// dafny/DynamoDbEncryptionTransforms/src/DdbMiddlewareConfig.dfy(129,3) + /// dafny/DynamoDbEncryptionTransforms/src/DdbMiddlewareConfig.dfy(131,3) pub fn E(s: &Sequence) -> Arc { Arc::new(crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::transforms::internaldafny::types::Error::DynamoDbEncryptionTransformsException { message: s.clone() }) } - /// dafny/DynamoDbEncryptionTransforms/src/DdbMiddlewareConfig.dfy(133,3) + /// dafny/DynamoDbEncryptionTransforms/src/DdbMiddlewareConfig.dfy(135,3) pub fn MakeError<_X: DafnyType>(s: &Sequence) -> Arc>> { Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::<_X, Arc>::Failure { error: Arc::new(crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::transforms::internaldafny::types::Error::DynamoDbEncryptionTransformsException { @@ -88805,7 +89320,7 @@ pub mod _DdbMiddlewareConfig_Compile { /// dafny/DynamoDbEncryptionTransforms/src/DdbMiddlewareConfig.dfy(41,3) pub type ValidTableConfig = Arc; - /// dafny/DynamoDbEncryptionTransforms/src/DdbMiddlewareConfig.dfy(87,3) + /// dafny/DynamoDbEncryptionTransforms/src/DdbMiddlewareConfig.dfy(89,3) #[derive(PartialEq, Clone)] pub enum Config { Config { @@ -89473,9 +89988,9 @@ pub mod _DdbVirtualFields_Compile { pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::internaldafny::types::Error; pub use ::dafny_runtime::Sequence; pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::internaldafny::types::VirtualPart; + pub use ::dafny_runtime::seq; pub use crate::implementation_from_dafny::_TermLoc_Compile::TermLoc; pub use crate::implementation_from_dafny::_Wrappers_Compile::Option::None; - pub use ::dafny_runtime::seq; pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::internaldafny::types::VirtualTransform; pub use ::std::marker::Sync; pub use ::std::marker::Send; @@ -89517,13 +90032,13 @@ pub mod _DdbVirtualFields_Compile { pub struct _default {} impl _default { - /// dafny/DynamoDbEncryption/src/Virtual.dfy(28,3) + /// dafny/DynamoDbEncryption/src/Virtual.dfy(29,3) pub fn ParseVirtualFieldConfig(vf: &Arc) -> Arc, Arc>> { - let mut valueOrError0: Arc>, Arc>> = crate::implementation_from_dafny::_Seq_Compile::_default::MapWithResult::, Arc, Arc>(&({ + let mut valueOrError0: Arc>, Arc>> = crate::implementation_from_dafny::_StandardLibrary_Compile::_Sequence_Compile::_default::MapWithResult::, Arc, Arc>(&({ Arc::new(move |p: &Arc| -> Arc, Arc>>{ _default::ParseVirtualPartConfig(p) }) - }), vf.parts()); + }), vf.parts(), 0, &(seq![] as Sequence>)); if valueOrError0.IsFailure() { valueOrError0.PropagateFailure::>() } else { @@ -89536,7 +90051,7 @@ pub mod _DdbVirtualFields_Compile { }) } } - /// dafny/DynamoDbEncryption/src/Virtual.dfy(34,3) + /// dafny/DynamoDbEncryption/src/Virtual.dfy(35,3) pub fn ParseVirtualPartConfig(part: &Arc) -> Arc, Arc>> { let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_TermLoc_Compile::_default::MakeTermLoc(part.loc()); if valueOrError0.IsFailure() { @@ -89560,7 +90075,7 @@ pub mod _DdbVirtualFields_Compile { } } } - /// dafny/DynamoDbEncryption/src/Virtual.dfy(84,3) + /// dafny/DynamoDbEncryption/src/Virtual.dfy(85,3) pub fn Examine(parts: &Sequence>, exam: &Arc bool + Sync + Send>) -> bool { let mut _r0 = parts.clone(); let mut _r1 = exam.clone(); @@ -89582,7 +90097,7 @@ pub mod _DdbVirtualFields_Compile { } } } - /// dafny/DynamoDbEncryption/src/Virtual.dfy(103,3) + /// dafny/DynamoDbEncryption/src/Virtual.dfy(104,3) pub fn Min(x: &nat, y: &nat) -> nat { if y.clone() < x.clone() { y.clone() @@ -89593,7 +90108,7 @@ pub mod _DdbVirtualFields_Compile { /// = specification/searchable-encryption/virtual.md#getprefix-transform-initialization /// = type=implication /// # If length is non-negative, the GetPrefix transform MUST return the first `length` characters of the input. - /// dafny/DynamoDbEncryption/src/Virtual.dfy(112,3) + /// dafny/DynamoDbEncryption/src/Virtual.dfy(113,3) pub fn GetPrefix(s: &Sequence, length: &DafnyInt) -> Sequence { if length.clone() >= int!(0) { s.take(&_default::Min(length, &s.cardinality())) @@ -89604,7 +90119,7 @@ pub mod _DdbVirtualFields_Compile { /// = specification/searchable-encryption/virtual.md#getsuffix-transform-initialization /// = type=implication /// # If length is non-negative, the GetSuffix transform MUST return the last `length` characters of the input. - /// dafny/DynamoDbEncryption/src/Virtual.dfy(138,3) + /// dafny/DynamoDbEncryption/src/Virtual.dfy(139,3) pub fn GetSuffix(s: &Sequence, length: &DafnyInt) -> Sequence { if length.clone() >= int!(0) { s.drop(&(s.cardinality() - _default::Min(length, &s.cardinality()))) @@ -89612,7 +90127,7 @@ pub mod _DdbVirtualFields_Compile { s.drop(&_default::Min(&(int!(0) - length.clone()), &s.cardinality())) } } - /// dafny/DynamoDbEncryption/src/Virtual.dfy(165,3) + /// dafny/DynamoDbEncryption/src/Virtual.dfy(166,3) pub fn GetPos(pos: &DafnyInt, limit: &nat) -> nat { if limit.clone() == int!(0) { int!(0) @@ -89632,7 +90147,7 @@ pub mod _DdbVirtualFields_Compile { /// = type=implication /// # The GetSubstring transform MUST return the range of characters /// # from low (inclusive) to high (exclusive) - /// dafny/DynamoDbEncryption/src/Virtual.dfy(206,3) + /// dafny/DynamoDbEncryption/src/Virtual.dfy(207,3) pub fn GetSubstring(s: &Sequence, low: &DafnyInt, high: &DafnyInt) -> Sequence { let mut lo: nat = _default::GetPos(low, &s.cardinality()); let mut hi: nat = _default::GetPos(high, &s.cardinality()); @@ -89642,7 +90157,7 @@ pub mod _DdbVirtualFields_Compile { string_utf16_of("") } } - /// dafny/DynamoDbEncryption/src/Virtual.dfy(224,3) + /// dafny/DynamoDbEncryption/src/Virtual.dfy(225,3) pub fn UpperChar(ch: &DafnyCharUTF16) -> DafnyCharUTF16 { if DafnyCharUTF16(97 as u16) <= ch.clone() && ch.clone() <= DafnyCharUTF16(122 as u16) { ch.clone() - DafnyCharUTF16(97 as u16) + DafnyCharUTF16(65 as u16) @@ -89653,7 +90168,7 @@ pub mod _DdbVirtualFields_Compile { /// = specification/searchable-encryption/virtual.md#upper-transform-initialization /// = type=implication /// # The Upper transform MUST convert all ascii lowercase characters into their uppercase equivalents. - /// dafny/DynamoDbEncryption/src/Virtual.dfy(231,3) + /// dafny/DynamoDbEncryption/src/Virtual.dfy(232,3) pub fn UpperCase(s: &Sequence) -> Sequence { crate::implementation_from_dafny::_Seq_Compile::_default::Map::(&({ Arc::new(move |c: &DafnyCharUTF16| -> DafnyCharUTF16{ @@ -89661,7 +90176,7 @@ pub mod _DdbVirtualFields_Compile { }) }), s) } - /// dafny/DynamoDbEncryption/src/Virtual.dfy(239,3) + /// dafny/DynamoDbEncryption/src/Virtual.dfy(240,3) pub fn LowerChar(ch: &DafnyCharUTF16) -> DafnyCharUTF16 { if DafnyCharUTF16(65 as u16) <= ch.clone() && ch.clone() <= DafnyCharUTF16(90 as u16) { ch.clone() - DafnyCharUTF16(65 as u16) + DafnyCharUTF16(97 as u16) @@ -89672,7 +90187,7 @@ pub mod _DdbVirtualFields_Compile { /// = specification/searchable-encryption/virtual.md#lower-transform-initialization /// = type=implication /// # The Lower transform MUST convert all ascii uppercase characters into their lowercase equivalents. - /// dafny/DynamoDbEncryption/src/Virtual.dfy(246,3) + /// dafny/DynamoDbEncryption/src/Virtual.dfy(247,3) pub fn LowerCase(s: &Sequence) -> Sequence { crate::implementation_from_dafny::_Seq_Compile::_default::Map::(&({ Arc::new(move |c: &DafnyCharUTF16| -> DafnyCharUTF16{ @@ -89680,7 +90195,7 @@ pub mod _DdbVirtualFields_Compile { }) }), s) } - /// dafny/DynamoDbEncryption/src/Virtual.dfy(255,3) + /// dafny/DynamoDbEncryption/src/Virtual.dfy(256,3) pub fn GetSegment(s: &Sequence, split: &DafnyCharUTF16, index: &DafnyInt) -> Sequence { let mut parts: Sequence> = crate::implementation_from_dafny::_StandardLibrary_Compile::_default::Split::(s, split); if index.clone() >= parts.cardinality() || parts.cardinality() < int!(0) - index.clone() { @@ -89689,7 +90204,7 @@ pub mod _DdbVirtualFields_Compile { parts.get(&_default::GetPos(index, &parts.cardinality())) } } - /// dafny/DynamoDbEncryption/src/Virtual.dfy(275,3) + /// dafny/DynamoDbEncryption/src/Virtual.dfy(276,3) pub fn GetSegments(s: &Sequence, split: &DafnyCharUTF16, low: &DafnyInt, high: &DafnyInt) -> Sequence { let mut parts: Sequence> = crate::implementation_from_dafny::_StandardLibrary_Compile::_default::Split::(s, split); let mut lo: nat = _default::GetPos(low, &parts.cardinality()); @@ -89703,7 +90218,7 @@ pub mod _DdbVirtualFields_Compile { /// = specification/searchable-encryption/virtual.md#insert-transform-initialization /// = type=implication /// # The Insert transform MUST append this string to its input - /// dafny/DynamoDbEncryption/src/Virtual.dfy(301,3) + /// dafny/DynamoDbEncryption/src/Virtual.dfy(302,3) pub fn DoTransform(t: &Arc, s: &Sequence) -> Sequence { let mut _source0: Arc = t.clone(); if matches!((&_source0).as_ref(), upper{ .. }) { @@ -89752,7 +90267,7 @@ pub mod _DdbVirtualFields_Compile { } } } - /// dafny/DynamoDbEncryption/src/Virtual.dfy(319,3) + /// dafny/DynamoDbEncryption/src/Virtual.dfy(320,3) pub fn FullTransform(t: &Sequence>, s: &Sequence) -> Sequence { let mut _r0 = t.clone(); let mut _r1 = s.clone(); @@ -89770,7 +90285,7 @@ pub mod _DdbVirtualFields_Compile { } } } - /// dafny/DynamoDbEncryption/src/Virtual.dfy(326,3) + /// dafny/DynamoDbEncryption/src/Virtual.dfy(327,3) pub fn GetVirtField(vf: &Arc, item: &Map, Arc>) -> Arc>>, Arc>> { _default::GetVirtField2(vf.parts(), item, &string_utf16_of("")) } @@ -89778,7 +90293,7 @@ pub mod _DdbVirtualFields_Compile { /// = type=implication /// # Evaluation MUST return no value if the location does not exist, /// # or is not a plain string value. - /// dafny/DynamoDbEncryption/src/Virtual.dfy(330,3) + /// dafny/DynamoDbEncryption/src/Virtual.dfy(331,3) pub fn GetVirtField2(parts: &Sequence>, item: &Map, Arc>, acc: &Sequence) -> Arc>>, Arc>> { let mut _r0 = parts.clone(); let mut _r1 = item.clone(); @@ -89817,7 +90332,7 @@ pub mod _DdbVirtualFields_Compile { } } } - /// dafny/DynamoDbEncryption/src/Virtual.dfy(363,3) + /// dafny/DynamoDbEncryption/src/Virtual.dfy(364,3) pub fn VirtToAttr(loc: &TermLoc, item: &Map, Arc>, vf: &VirtualFieldMap) -> Arc>>, Arc>> { if loc.cardinality() == int!(1) && vf.contains(loc.get(&int!(0)).key()) { let mut valueOrError0: Arc>>, Arc>> = _default::GetVirtField(&vf.get(loc.get(&int!(0)).key()), item); @@ -89843,7 +90358,7 @@ pub mod _DdbVirtualFields_Compile { }) } } - /// dafny/DynamoDbEncryption/src/Virtual.dfy(375,3) + /// dafny/DynamoDbEncryption/src/Virtual.dfy(376,3) pub fn VirtToBytes(loc: &TermLoc, item: &Map, Arc>, vf: &VirtualFieldMap) -> Arc>>, Arc>> { if loc.cardinality() == int!(1) && vf.contains(loc.get(&int!(0)).key()) { let mut valueOrError0: Arc>>, Arc>> = _default::GetVirtField(&vf.get(loc.get(&int!(0)).key()), item); @@ -89877,7 +90392,7 @@ pub mod _DdbVirtualFields_Compile { crate::implementation_from_dafny::_TermLoc_Compile::_default::TermToBytes(loc, item) } } - /// dafny/DynamoDbEncryption/src/Virtual.dfy(388,3) + /// dafny/DynamoDbEncryption/src/Virtual.dfy(389,3) pub fn VirtToString(loc: &TermLoc, item: &Map, Arc>, vf: &VirtualFieldMap) -> Arc>>, Arc>> { if loc.cardinality() == int!(1) && vf.contains(loc.get(&int!(0)).key()) { _default::GetVirtField(&vf.get(loc.get(&int!(0)).key()), item) @@ -89885,7 +90400,7 @@ pub mod _DdbVirtualFields_Compile { crate::implementation_from_dafny::_TermLoc_Compile::_default::TermToString(loc, item) } } - /// dafny/DynamoDbEncryption/src/Virtual.dfy(397,3) + /// dafny/DynamoDbEncryption/src/Virtual.dfy(398,3) pub fn DS(s: &Sequence) -> Arc { Arc::new(AttributeValue::S { S: s.clone() @@ -89893,13 +90408,13 @@ pub mod _DdbVirtualFields_Compile { } } - /// dafny/DynamoDbEncryption/src/Virtual.dfy(43,3) + /// dafny/DynamoDbEncryption/src/Virtual.dfy(44,3) pub type VirtualFieldMap = Map, ValidVirtualField>; - /// dafny/DynamoDbEncryption/src/Virtual.dfy(52,3) + /// dafny/DynamoDbEncryption/src/Virtual.dfy(53,3) pub type ValidVirtualField = Arc; - /// dafny/DynamoDbEncryption/src/Virtual.dfy(55,3) + /// dafny/DynamoDbEncryption/src/Virtual.dfy(56,3) #[derive(PartialEq, Clone)] pub enum VirtField { VirtField { @@ -89909,11 +90424,11 @@ pub mod _DdbVirtualFields_Compile { } impl VirtField { - /// dafny/DynamoDbEncryption/src/Virtual.dfy(61,5) + /// dafny/DynamoDbEncryption/src/Virtual.dfy(62,5) pub fn examine(self: &Arc, exam: &Arc bool + Sync + Send>) -> bool { _default::Examine(self.parts(), exam) } - /// dafny/DynamoDbEncryption/src/Virtual.dfy(69,5) + /// dafny/DynamoDbEncryption/src/Virtual.dfy(70,5) pub fn GetFields(self: &Arc) -> Sequence> { crate::implementation_from_dafny::_Seq_Compile::_default::Map::, Sequence>(&({ Arc::new(move |p: &Arc| -> Sequence{ @@ -89921,7 +90436,7 @@ pub mod _DdbVirtualFields_Compile { }) }), self.parts()) } - /// dafny/DynamoDbEncryption/src/Virtual.dfy(73,5) + /// dafny/DynamoDbEncryption/src/Virtual.dfy(74,5) pub fn GetLocs(self: &Arc) -> Set { (&({ let mut _this = self.clone(); @@ -89937,7 +90452,7 @@ pub mod _DdbVirtualFields_Compile { }) }))() } - /// dafny/DynamoDbEncryption/src/Virtual.dfy(77,5) + /// dafny/DynamoDbEncryption/src/Virtual.dfy(78,5) pub fn HasSingleLoc(self: &Arc, loc: &TermLoc) -> bool { self.parts().cardinality() == int!(1) && self.parts().get(&int!(0)).loc().clone() == loc.clone() } @@ -90010,7 +90525,7 @@ pub mod _DdbVirtualFields_Compile { } } - /// dafny/DynamoDbEncryption/src/Virtual.dfy(98,3) + /// dafny/DynamoDbEncryption/src/Virtual.dfy(99,3) #[derive(PartialEq, Clone)] pub enum VirtPart { VirtPart { @@ -90089,7 +90604,7 @@ pub mod _DdbVirtualFields_Compile { } } } -/// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/CMMs/DefaultCMM.dfy(11,1) +/// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/CMMs/DefaultCMM.dfy(13,1) pub mod _DefaultCMM_Compile { pub use ::dafny_runtime::Object; pub use ::dafny_runtime::allocate_object; @@ -90124,10 +90639,11 @@ pub mod _DefaultCMM_Compile { pub use crate::implementation_from_dafny::UTF8::ValidUTF8Bytes; pub use crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::OnEncryptOutput; pub use crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::OnEncryptInput; + pub use crate::implementation_from_dafny::_MultiKeyring_Compile::MultiKeyring; pub use crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::DecryptMaterialsInput; pub use crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::DecryptMaterialsOutput; pub use ::dafny_runtime::Set; - pub use ::dafny_runtime::DafnyInt; + pub use ::dafny_runtime::truncate; pub use ::dafny_runtime::int; pub use crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::DecryptionMaterials; pub use crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::InitializeDecryptionMaterialsInput; @@ -90135,7 +90651,7 @@ pub mod _DefaultCMM_Compile { pub use crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::OnDecryptOutput; pub use crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::OnDecryptInput; - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/CMMs/DefaultCMM.dfy(28,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/CMMs/DefaultCMM.dfy(33,3) pub struct DefaultCMM { pub __i_keyring: Object, pub __i_cryptoPrimitives: Object @@ -90146,7 +90662,7 @@ pub mod _DefaultCMM_Compile { pub fn _allocate_object() -> Object { allocate_object::() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/CMMs/DefaultCMM.dfy(47,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/CMMs/DefaultCMM.dfy(52,5) pub fn OfKeyring(this: &Object, k: &Object, c: &Object) -> () { let mut _set___i_keyring: bool = false; let mut _set___i_cryptoPrimitives: bool = false; @@ -90154,11 +90670,11 @@ pub mod _DefaultCMM_Compile { update_field_uninit_object!(this.clone(), __i_cryptoPrimitives, _set___i_cryptoPrimitives, c.clone()); return (); } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/CMMs/DefaultCMM.dfy(45,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/CMMs/DefaultCMM.dfy(50,5) pub fn keyring(&self) -> Object { self.__i_keyring.clone() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/CMMs/DefaultCMM.dfy(31,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/CMMs/DefaultCMM.dfy(36,5) pub fn cryptoPrimitives(&self) -> Object { self.__i_cryptoPrimitives.clone() } @@ -90179,7 +90695,7 @@ pub mod _DefaultCMM_Compile { impl ICryptographicMaterialsManager for DefaultCMM { - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/CMMs/DefaultCMM.dfy(90,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/CMMs/DefaultCMM.dfy(107,5) fn _GetEncryptionMaterials_k(&self, input: &Arc) -> Arc, Arc>> { let mut output = MaybePlacebo::, Arc>>>::new(); let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(!input.encryptionContext().contains(&crate::implementation_from_dafny::_Materials_Compile::_default::EC_PUBLIC_KEY_FIELD()), &Arc::new(crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::Error::AwsCryptographicMaterialProvidersException { @@ -90256,26 +90772,31 @@ pub mod _DefaultCMM_Compile { let mut encryptionMaterialsOutput: Arc = Arc::new(GetEncryptionMaterialsOutput::GetEncryptionMaterialsOutput { encryptionMaterials: result.materials().clone() }); - let mut valueOrError5: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(crate::implementation_from_dafny::_Materials_Compile::_default::EncryptionMaterialsHasPlaintextDataKey(encryptionMaterialsOutput.encryptionMaterials()), &Arc::new(crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::Error::AwsCryptographicMaterialProvidersException { - message: string_utf16_of("Could not retrieve materials required for encryption") - })); - if valueOrError5.IsFailure() { - output = MaybePlacebo::from(valueOrError5.PropagateFailure::>()); - return output.read(); - }; - let mut valueOrError6: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(crate::implementation_from_dafny::_Materials_Compile::_default::ValidEncryptionMaterialsTransition(&materials, encryptionMaterialsOutput.encryptionMaterials()), &Arc::new(crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::Error::AwsCryptographicMaterialProvidersException { - message: string_utf16_of("Keyring returned an invalid response") - })); - if valueOrError6.IsFailure() { - output = MaybePlacebo::from(valueOrError6.PropagateFailure::>()); - return output.read(); + if !(crate::implementation_from_dafny::_MultiKeyring_Compile::_default::_Verified_q(&self.keyring().clone()) || ({ + let __is_11: Object = self.keyring().clone(); + __is_11.clone().is_instance_of::() + })) { + let mut valueOrError5: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(crate::implementation_from_dafny::_Materials_Compile::_default::EncryptionMaterialsHasPlaintextDataKey(encryptionMaterialsOutput.encryptionMaterials()), &Arc::new(crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::Error::AwsCryptographicMaterialProvidersException { + message: string_utf16_of("Could not retrieve materials required for encryption") + })); + if valueOrError5.IsFailure() { + output = MaybePlacebo::from(valueOrError5.PropagateFailure::>()); + return output.read(); + }; + let mut valueOrError6: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(crate::implementation_from_dafny::_Materials_Compile::_default::ValidEncryptionMaterialsTransition(&materials, encryptionMaterialsOutput.encryptionMaterials()), &Arc::new(crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::Error::AwsCryptographicMaterialProvidersException { + message: string_utf16_of("Keyring returned an invalid response") + })); + if valueOrError6.IsFailure() { + output = MaybePlacebo::from(valueOrError6.PropagateFailure::>()); + return output.read(); + } }; output = MaybePlacebo::from(Arc::new(Result::, Arc>::Success { value: encryptionMaterialsOutput.clone() })); return output.read(); } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/CMMs/DefaultCMM.dfy(333,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/CMMs/DefaultCMM.dfy(355,5) fn _DecryptMaterials_k(&self, input: &Arc) -> Arc, Arc>> { let mut output = MaybePlacebo::, Arc>>>::new(); let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Commitment_Compile::_default::ValidateCommitmentPolicyOnDecrypt(input.algorithmSuiteId(), input.commitmentPolicy()); @@ -90289,9 +90810,9 @@ pub mod _DefaultCMM_Compile { let mut keysSeq: Sequence; let mut _out0: Sequence = crate::implementation_from_dafny::SortedSets::_default::SetToSequence::(&keysSet); keysSeq = _out0.clone(); - let mut i: DafnyInt = int!(0); - while i.clone() < keysSeq.cardinality() { - let mut key: ValidUTF8Bytes = keysSeq.get(&i); + let mut i: u64 = 0; + while i < truncate!(keysSeq.cardinality(), u64) { + let mut key: ValidUTF8Bytes = keysSeq.get(&int!((&i).clone())); if input.encryptionContext().contains(&key) { let mut valueOrError1: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(input.reproducedEncryptionContext().value().get(&key) == input.encryptionContext().get(&key), &Arc::new(crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::Error::AwsCryptographicMaterialProvidersException { message: string_utf16_of("Encryption context does not match reproduced encryption context.") @@ -90303,7 +90824,7 @@ pub mod _DefaultCMM_Compile { } else { requiredEncryptionContextKeys = requiredEncryptionContextKeys.concat(&seq![key.clone()]); }; - i = i.clone() + int!(1); + i = i + 1; } }; let mut valueOrError2: Arc, Arc>> = crate::implementation_from_dafny::_Materials_Compile::_default::InitializeDecryptionMaterials(&Arc::new(InitializeDecryptionMaterialsInput::InitializeDecryptionMaterialsInput { @@ -90327,12 +90848,17 @@ pub mod _DefaultCMM_Compile { return output.read(); }; let mut result: Arc = valueOrError3.Extract(); - let mut valueOrError4: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(crate::implementation_from_dafny::_Materials_Compile::_default::DecryptionMaterialsTransitionIsValid(&materials, result.materials()), &Arc::new(crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::Error::AwsCryptographicMaterialProvidersException { - message: string_utf16_of("Keyring.OnDecrypt failed to decrypt the plaintext data key.") - })); - if valueOrError4.IsFailure() { - output = MaybePlacebo::from(valueOrError4.PropagateFailure::>()); - return output.read(); + if !(crate::implementation_from_dafny::_MultiKeyring_Compile::_default::_Verified_q(&self.keyring().clone()) || ({ + let __is_12: Object = self.keyring().clone(); + __is_12.clone().is_instance_of::() + })) { + let mut valueOrError4: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(crate::implementation_from_dafny::_Materials_Compile::_default::DecryptionMaterialsTransitionIsValid(&materials, result.materials()), &Arc::new(crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::Error::AwsCryptographicMaterialProvidersException { + message: string_utf16_of("Keyring.OnDecrypt failed to decrypt the plaintext data key.") + })); + if valueOrError4.IsFailure() { + output = MaybePlacebo::from(valueOrError4.PropagateFailure::>()); + return output.read(); + } }; output = MaybePlacebo::from(Arc::new(Result::, Arc>::Success { value: Arc::new(DecryptMaterialsOutput::DecryptMaterialsOutput { @@ -90561,15 +91087,15 @@ pub mod _DeleteItemTransform_Compile { output = MaybePlacebo::from(Arc::new(Result::, Arc>::Success { value: Arc::new(DeleteItemOutputTransformOutput::DeleteItemOutputTransformOutput { transformedOutput: { - let __pat_let11_0: Arc = input.sdkOutput().clone(); + let __pat_let13_0: Arc = input.sdkOutput().clone(); { - let _dt__update__tmp_h0: Arc = __pat_let11_0.clone(); + let _dt__update__tmp_h0: Arc = __pat_let13_0.clone(); { - let __pat_let12_0: Arc, Arc>>> = Arc::new(Option::, Arc>>::Some { + let __pat_let14_0: Arc, Arc>>> = Arc::new(Option::, Arc>>::Some { value: item.clone() }); { - let _dt__update_hAttributes_h0: Arc, Arc>>> = __pat_let12_0.clone(); + let _dt__update_hAttributes_h0: Arc, Arc>>> = __pat_let14_0.clone(); Arc::new(DeleteItemOutput::DeleteItemOutput { Attributes: _dt__update_hAttributes_h0.clone(), ConsumedCapacity: _dt__update__tmp_h0.ConsumedCapacity().clone(), @@ -90603,6 +91129,7 @@ pub mod _DeleteItemTransformTest_Compile { pub use crate::implementation_from_dafny::software::amazon::cryptography::services::dynamodb::internaldafny::types::ReturnConsumedCapacity; pub use crate::implementation_from_dafny::software::amazon::cryptography::services::dynamodb::internaldafny::types::ReturnItemCollectionMetrics; pub use crate::implementation_from_dafny::software::amazon::cryptography::services::dynamodb::internaldafny::types::AttributeValue; + pub use crate::implementation_from_dafny::software::amazon::cryptography::services::dynamodb::internaldafny::types::ReturnValuesOnConditionCheckFailure; pub use crate::implementation_from_dafny::_Wrappers_Compile::Result; pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::transforms::internaldafny::types::DeleteItemInputTransformOutput; pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::transforms::internaldafny::types::Error; @@ -90636,7 +91163,8 @@ pub mod _DeleteItemTransformTest_Compile { ReturnItemCollectionMetrics: Arc::new(Option::>::None {}), ConditionExpression: Arc::new(Option::>::None {}), ExpressionAttributeNames: Arc::new(Option::, Sequence>>::None {}), - ExpressionAttributeValues: Arc::new(Option::, Arc>>::None {}) + ExpressionAttributeValues: Arc::new(Option::, Arc>>::None {}), + ReturnValuesOnConditionCheckFailure: Arc::new(Option::>::None {}) }); let mut transformed: Arc, Arc>>; let mut _out2: Arc, Arc>> = IDynamoDbEncryptionTransformsClient::DeleteItemInputTransform(rd!(middlewareUnderTest.clone()), &Arc::new(DeleteItemInputTransformInput::DeleteItemInputTransformInput { @@ -90670,7 +91198,8 @@ pub mod _DeleteItemTransformTest_Compile { ReturnItemCollectionMetrics: Arc::new(Option::>::None {}), ConditionExpression: Arc::new(Option::>::None {}), ExpressionAttributeNames: Arc::new(Option::, Sequence>>::None {}), - ExpressionAttributeValues: Arc::new(Option::, Arc>>::None {}) + ExpressionAttributeValues: Arc::new(Option::, Arc>>::None {}), + ReturnValuesOnConditionCheckFailure: Arc::new(Option::>::None {}) }); let mut transformed: Arc, Arc>>; let mut _out2: Arc, Arc>> = IDynamoDbEncryptionTransformsClient::DeleteItemOutputTransform(rd!(middlewareUnderTest.clone()), &Arc::new(DeleteItemOutputTransformInput::DeleteItemOutputTransformInput { @@ -90700,9 +91229,7 @@ pub mod _DeleteItemTransformTest_Compile { pub mod _Digest_Compile { pub use ::std::sync::Arc; pub use crate::implementation_from_dafny::software::amazon::cryptography::primitives::internaldafny::types::DigestAlgorithm; - pub use ::dafny_runtime::_System::nat; pub use crate::implementation_from_dafny::software::amazon::cryptography::primitives::internaldafny::types::DigestAlgorithm::SHA_512; - pub use ::dafny_runtime::int; pub use crate::implementation_from_dafny::software::amazon::cryptography::primitives::internaldafny::types::DigestAlgorithm::SHA_384; pub use crate::implementation_from_dafny::software::amazon::cryptography::primitives::internaldafny::types::DigestInput; pub use crate::implementation_from_dafny::_Wrappers_Compile::Result; @@ -90710,25 +91237,26 @@ pub mod _Digest_Compile { pub use crate::implementation_from_dafny::software::amazon::cryptography::primitives::internaldafny::types::Error; pub use ::dafny_runtime::MaybePlacebo; pub use crate::implementation_from_dafny::_Wrappers_Compile::Outcome; + pub use ::dafny_runtime::truncate; pub use ::dafny_runtime::string_utf16_of; pub struct _default {} impl _default { - /// ../submodules/MaterialProviders/AwsCryptographyPrimitives/src/Digest.dfy(13,3) - pub fn Length(digestAlgorithm: &Arc) -> nat { + /// ../submodules/MaterialProviders/AwsCryptographyPrimitives/src/Digest.dfy(14,3) + pub fn Length(digestAlgorithm: &Arc) -> u64 { let mut _source0: Arc = digestAlgorithm.clone(); if matches!((&_source0).as_ref(), SHA_512{ .. }) { - int!(64) + 64 } else { if matches!((&_source0).as_ref(), SHA_384{ .. }) { - int!(48) + 48 } else { - int!(32) + 32 } } } - /// ../submodules/MaterialProviders/AwsCryptographyPrimitives/src/Digest.dfy(21,3) + /// ../submodules/MaterialProviders/AwsCryptographyPrimitives/src/Digest.dfy(22,3) pub fn Digest(input: &Arc) -> Arc, Arc>> { let mut res = MaybePlacebo::, Arc>>>::new(); let mut __let_tmp_rhs0: Arc = input.clone(); @@ -90742,7 +91270,7 @@ pub mod _Digest_Compile { return res.read(); }; let mut value: Sequence = valueOrError0.Extract(); - let mut valueOrError1: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(value.cardinality() == _default::Length(&digestAlgorithm), &Arc::new(Error::AwsCryptographicPrimitivesError { + let mut valueOrError1: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(truncate!(value.cardinality(), u64) == _default::Length(&digestAlgorithm), &Arc::new(Error::AwsCryptographicPrimitivesError { message: string_utf16_of("Incorrect length digest from ExternDigest.") })); if valueOrError1.IsFailure() { @@ -90771,13 +91299,14 @@ pub mod _DiscoveryMultiKeyring_Compile { pub use crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::Error; pub use ::dafny_runtime::MaybePlacebo; pub use crate::implementation_from_dafny::_Wrappers_Compile::Outcome; - pub use ::dafny_runtime::int; + pub use ::dafny_runtime::truncate; pub use ::dafny_runtime::string_utf16_of; pub use crate::implementation_from_dafny::_Wrappers_Compile::Option::None; pub use crate::implementation_from_dafny::_AwsKmsDiscoveryKeyring_Compile::AwsKmsDiscoveryKeyring; pub use ::dafny_runtime::seq; - pub use ::dafny_runtime::DafnyInt; pub use ::dafny_runtime::integer_range; + pub use ::std::convert::Into; + pub use ::dafny_runtime::int; pub use crate::implementation_from_dafny::software::amazon::cryptography::services::kms::internaldafny::types::IKMSClient; pub use ::dafny_runtime::rd; pub use crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::GetClientInput; @@ -90787,10 +91316,10 @@ pub mod _DiscoveryMultiKeyring_Compile { pub struct _default {} impl _default { - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/DiscoveryMultiKeyring.dfy(33,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/DiscoveryMultiKeyring.dfy(35,3) pub fn DiscoveryMultiKeyring(regions: &Sequence>, discoveryFilter: &Arc>>, clientSupplier: &Object, grantTokens: &Arc>) -> Arc, Arc>> { let mut output = MaybePlacebo::, Arc>>>::new(); - let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(int!(0) < regions.cardinality(), &Arc::new(Error::AwsCryptographicMaterialProvidersException { + let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(0 < truncate!(regions.cardinality(), u64), &Arc::new(Error::AwsCryptographicMaterialProvidersException { message: string_utf16_of("No regions passed.") })); if valueOrError0.IsFailure() { @@ -90805,9 +91334,9 @@ pub mod _DiscoveryMultiKeyring_Compile { return output.read(); }; let mut children: Sequence> = seq![] as Sequence>; - let mut _hi0: DafnyInt = regions.cardinality(); - for i in integer_range(int!(0), _hi0.clone()) { - let mut region: Sequence = regions.get(&i); + let mut _hi0: u64 = truncate!(regions.cardinality(), u64); + for i in integer_range(0, _hi0).map(Into::::into) { + let mut region: Sequence = regions.get(&int!((&i).clone())); let mut valueOrError2: Arc, Arc>>; let mut _out0: Arc, Arc>> = IClientSupplier::GetClient(rd!(clientSupplier.clone()), &Arc::new(GetClientInput::GetClientInput { region: region.clone() @@ -94239,32 +94768,36 @@ pub mod _DynamoDBFilterExpr_Compile { DafnyCharUTF16(::from(int!(b"55296")).unwrap()) <= ch.clone() && ch.clone() <= DafnyCharUTF16(::from(int!(b"56319")).unwrap()) } /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(1274,3) - pub fn UnicodeLess(a: &Sequence, b: &Sequence) -> bool { + pub fn UnicodeLess(a: &Sequence, b: &Sequence, pos: &nat) -> bool { let mut _r0 = a.clone(); let mut _r1 = b.clone(); + let mut _r2 = pos.clone(); 'TAIL_CALL_START: loop { let a = _r0; let b = _r1; - if a.cardinality() == int!(0) && b.cardinality() == int!(0) { + let pos = _r2; + if a.cardinality() == pos.clone() && b.cardinality() == pos.clone() { return false; } else { - if a.cardinality() == int!(0) { + if a.cardinality() == pos.clone() { return true; } else { - if b.cardinality() == int!(0) { + if b.cardinality() == pos.clone() { return false; } else { - if a.get(&int!(0)) == b.get(&int!(0)) { - let mut _in0: Sequence = a.drop(&int!(1)); - let mut _in1: Sequence = b.drop(&int!(1)); + if a.get(&pos) == b.get(&pos) { + let mut _in0: Sequence = a.clone(); + let mut _in1: Sequence = b.clone(); + let mut _in2: DafnyInt = pos.clone() + int!(1); _r0 = _in0.clone(); _r1 = _in1.clone(); + _r2 = _in2.clone(); continue 'TAIL_CALL_START; } else { - let mut aIsHighSurrogate: bool = _default::IsHighSurrogate(&a.get(&int!(0))); - let mut bIsHighSurrogate: bool = _default::IsHighSurrogate(&b.get(&int!(0))); + let mut aIsHighSurrogate: bool = _default::IsHighSurrogate(&a.get(&pos)); + let mut bIsHighSurrogate: bool = _default::IsHighSurrogate(&b.get(&pos)); if aIsHighSurrogate == bIsHighSurrogate { - return a.get(&int!(0)) < b.get(&int!(0)); + return a.get(&pos) < b.get(&pos); } else { return bIsHighSurrogate; } @@ -94274,11 +94807,11 @@ pub mod _DynamoDBFilterExpr_Compile { } } } - /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(1297,3) + /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(1299,3) pub fn UnicodeLessOrEqual(a: &Sequence, b: &Sequence) -> bool { - !_default::UnicodeLess(b, a) + !_default::UnicodeLess(b, a, &int!(0)) } - /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(1302,3) + /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(1304,3) pub fn CompareFloat(x: &Sequence, y: &Sequence) -> Arc>> { let mut valueOrError0: Arc, Arc>> = crate::implementation_from_dafny::_DynamoDbNormalizeNumber_Compile::_default::NormalizeNumber(x).MapFailure::>(&({ Arc::new(move |e: &Sequence| -> Arc{ @@ -94304,7 +94837,7 @@ pub mod _DynamoDBFilterExpr_Compile { } } } - /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(1309,3) + /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(1311,3) pub fn AttributeEQ(a: &Arc, b: &Arc) -> Arc>> { if matches!(a.as_ref(), N{ .. }) && matches!(b.as_ref(), N{ .. }) { let mut valueOrError0: Arc>> = _default::CompareFloat(a.N(), b.N()); @@ -94322,7 +94855,7 @@ pub mod _DynamoDBFilterExpr_Compile { }) } } - /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(1318,3) + /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(1320,3) pub fn AttributeNE(a: &Arc, b: &Arc) -> Arc>> { let mut valueOrError0: Arc>> = _default::AttributeEQ(a, b); if valueOrError0.IsFailure() { @@ -94334,7 +94867,7 @@ pub mod _DynamoDBFilterExpr_Compile { }) } } - /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(1324,3) + /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(1326,3) pub fn AttributeLE(a: &Arc, b: &Arc) -> Arc>> { if matches!(a.as_ref(), N{ .. }) && matches!(b.as_ref(), N{ .. }) { let mut valueOrError0: Arc>> = _default::CompareFloat(a.N(), b.N()); @@ -94364,7 +94897,7 @@ pub mod _DynamoDBFilterExpr_Compile { } } } - /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(1336,3) + /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(1338,3) pub fn AttributeLT(a: &Arc, b: &Arc) -> Arc>> { let mut valueOrError0: Arc>> = _default::AttributeLE(b, a); if valueOrError0.IsFailure() { @@ -94376,7 +94909,7 @@ pub mod _DynamoDBFilterExpr_Compile { }) } } - /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(1341,3) + /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(1343,3) pub fn AttributeGT(a: &Arc, b: &Arc) -> Arc>> { let mut valueOrError0: Arc>> = _default::AttributeLE(a, b); if valueOrError0.IsFailure() { @@ -94388,7 +94921,7 @@ pub mod _DynamoDBFilterExpr_Compile { }) } } - /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(1346,3) + /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(1348,3) pub fn AttributeGE(a: &Arc, b: &Arc) -> Arc>> { let mut valueOrError0: Arc>> = _default::AttributeLE(b, a); if valueOrError0.IsFailure() { @@ -94400,7 +94933,7 @@ pub mod _DynamoDBFilterExpr_Compile { }) } } - /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(1353,3) + /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(1355,3) pub fn apply_binary_comp(input: &Arc, x: &Arc, y: &Arc) -> Arc>> { let mut _source0: Arc = input.clone(); if matches!((&_source0).as_ref(), Attr{ .. }) { @@ -94524,7 +95057,7 @@ pub mod _DynamoDBFilterExpr_Compile { } } } - /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(1366,3) + /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(1368,3) pub fn apply_binary(input: &Arc, x: &Arc, y: &Arc) -> Arc, Arc>> { if _default::IsComp(input) { if matches!(x.as_ref(), Str{ .. }) && matches!(y.as_ref(), Str{ .. }) { @@ -94564,7 +95097,7 @@ pub mod _DynamoDBFilterExpr_Compile { } } } - /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(1383,3) + /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(1385,3) pub fn NumArgs(t: &Arc, stack: &Sequence>) -> nat { let mut _source0: Arc = t.clone(); if matches!((&_source0).as_ref(), Attr{ .. }) { @@ -94656,7 +95189,7 @@ pub mod _DynamoDBFilterExpr_Compile { } } } - /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(1398,3) + /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(1400,3) pub fn InnerEvalExpr(input: &Sequence>, stack: &Sequence>, item: &Map, Arc>, names: &Arc, Sequence>>>, values: &Map, Arc>) -> Arc>> { let mut _r0 = input.clone(); let mut _r1 = stack.clone(); @@ -94794,7 +95327,7 @@ pub mod _DynamoDBFilterExpr_Compile { } } } - /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(1442,3) + /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(1444,3) pub fn FilterItems(b: &Arc, parsed: &Sequence>, ItemList: &Sequence, Arc>>, names: &Arc, Sequence>>>, values: &Map, Arc>) -> Arc, Arc>>, Arc>> { let mut output = MaybePlacebo::, Arc>>, Arc>>>::new(); let mut acc: Sequence, Arc>> = seq![] as Sequence, Arc>>; @@ -94823,7 +95356,7 @@ pub mod _DynamoDBFilterExpr_Compile { })); return output.read(); } - /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(1466,3) + /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(1468,3) pub fn FilterResults(b: &Arc, ItemList: &Sequence, Arc>>, KeyExpression: &Arc>>, FilterExpression: &Arc>>, names: &Arc, Sequence>>>, values: &Arc, Arc>>>) -> Arc, Arc>>, Arc>> { let mut output = MaybePlacebo::, Arc>>, Arc>>>::new(); if ItemList.cardinality() == int!(0) || matches!(KeyExpression.as_ref(), None{ .. }) && matches!(FilterExpression.as_ref(), None{ .. }) { @@ -94875,7 +95408,7 @@ pub mod _DynamoDBFilterExpr_Compile { }; return output.read(); } - /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(1504,3) + /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(1506,3) pub fn KeyIdFromPart(bv: &Arc, keyIdField: &Sequence, attr: &Sequence, value: &Sequence) -> Arc>> { if !bv.beacons().contains(attr) || matches!((&bv.beacons().get(attr)).as_ref(), Standard{ .. }) { Arc::new(Option::>::None {}) @@ -94914,7 +95447,7 @@ pub mod _DynamoDBFilterExpr_Compile { } } } - /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(1526,3) + /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(1528,3) pub fn KeyIdFromAttr(bv: &Arc, attr: &Arc>>, value: &Sequence, names: &Arc, Sequence>>>) -> Arc>> { if matches!(attr.as_ref(), None{ .. }) { Arc::new(Option::>::None {}) @@ -94934,7 +95467,7 @@ pub mod _DynamoDBFilterExpr_Compile { } } } - /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(1543,3) + /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(1545,3) pub fn GetBeaconKeyIds2(pos: &nat, bv: &Arc, expr: &Sequence>, values: &Map, Arc>, names: &Arc, Sequence>>>, soFar: &Sequence>) -> Arc>, Arc>> { let mut _r0 = pos.clone(); let mut _r1 = bv.clone(); @@ -95026,7 +95559,7 @@ pub mod _DynamoDBFilterExpr_Compile { } } } - /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(1575,3) + /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(1577,3) pub fn GetBeaconKeyIds(bv: &Arc, expr: &Arc>>, values: &Map, Arc>, names: &Arc, Sequence>>>, soFar: &Sequence>) -> Arc>, Arc>> { if matches!(expr.as_ref(), None{ .. }) { Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::>, Arc>::Success { @@ -95041,7 +95574,7 @@ pub mod _DynamoDBFilterExpr_Compile { /// = type=implication /// # If the [Beacon Key Source](#beacon-key-source) is a [Single Key Store](#single-key-store-initialization) /// # then `beacon key id` MUST be the configured [beacon key id](#beacon-key-id) - /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(1596,3) + /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(1598,3) pub fn GetBeaconKeyId(bv: &Arc, keyExpr: &Arc>>, filterExpr: &Arc>>, values: &Arc, Arc>>>, names: &Arc, Sequence>>>) -> Arc, Arc>> { if !matches!(bv.keySource().keyLoc().as_ref(), MultiLoc{ .. }) { Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::, Arc>::Success { @@ -95085,7 +95618,7 @@ pub mod _DynamoDBFilterExpr_Compile { } } } - /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(1664,3) + /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(1666,3) pub fn Beaconize(b: &Arc, context: &Arc, keyId: &Arc, naked: bool) -> Arc, Arc>> { let mut output = MaybePlacebo::, Arc>>>::new(); if matches!(context.keyExpr().as_ref(), None{ .. }) && matches!(context.filterExpr().as_ref(), None{ .. }) { @@ -95161,7 +95694,7 @@ pub mod _DynamoDBFilterExpr_Compile { }; return output.read(); } - /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(1710,3) + /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(1712,3) pub fn GetAttrName(t: &Arc, names: &Arc, Sequence>>>) -> Sequence { if matches!(names.as_ref(), Some{ .. }) && names.value().contains(t.s()) { names.value().get(t.s()) @@ -95169,7 +95702,7 @@ pub mod _DynamoDBFilterExpr_Compile { t.s().clone() } } - /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(1720,3) + /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(1722,3) pub fn TestParsedExpr(expr: &Sequence>, encrypted: &Set>, names: &Arc, Sequence>>>) -> Arc>> { let mut output = MaybePlacebo::>>>::new(); let mut _hi0: DafnyInt = expr.cardinality(); @@ -95187,7 +95720,7 @@ pub mod _DynamoDBFilterExpr_Compile { output = MaybePlacebo::from(Arc::new(Outcome::>::Pass {})); return output.read(); } - /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(1739,3) + /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(1741,3) pub fn TestBeaconize(actions: &Map, Arc>, keyExpr: &Arc>>, filterExpr: &Arc>>, names: &Arc, Sequence>>>) -> Arc>> { let mut output = MaybePlacebo::>>>::new(); let mut encrypted: Set> = (&({ @@ -95709,7 +96242,7 @@ pub mod _DynamoDBFilterExpr_Compile { } } - /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(1649,3) + /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(1651,3) #[derive(PartialEq, Clone)] pub enum ExprContext { ExprContext { @@ -95810,7 +96343,7 @@ pub mod _DynamoDBFilterExpr_Compile { } } - /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(1656,3) + /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(1658,3) #[derive(PartialEq, Clone)] pub enum ParsedContext { ParsedContext { @@ -95908,10 +96441,12 @@ pub mod _DynamoDBSupport_Compile { pub use ::std::sync::Arc; pub use crate::implementation_from_dafny::software::amazon::cryptography::services::dynamodb::internaldafny::types::AttributeValue; pub use crate::implementation_from_dafny::_Wrappers_Compile::Result; - pub use ::dafny_runtime::Set; - pub use ::dafny_runtime::SetBuilder; + pub use ::dafny_runtime::MaybePlacebo; pub use ::std::marker::Sync; pub use ::std::marker::Send; + pub use ::dafny_runtime::truncate; + pub use ::dafny_runtime::integer_range; + pub use ::std::convert::Into; pub use ::dafny_runtime::int; pub use ::dafny_runtime::string_utf16_of; pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::structuredencryption::internaldafny::types::CryptoAction; @@ -95924,14 +96459,14 @@ pub mod _DynamoDBSupport_Compile { pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::internaldafny::types::Error; pub use ::dafny_runtime::map; pub use crate::implementation_from_dafny::_SearchableEncryptionInfo_Compile::SearchInfo; - pub use ::dafny_runtime::MaybePlacebo; + pub use ::dafny_runtime::Set; + pub use ::dafny_runtime::SetBuilder; pub use crate::implementation_from_dafny::_Wrappers_Compile::Outcome; pub use crate::implementation_from_dafny::_SearchableEncryptionInfo_Compile::KeyLocation::MultiLoc; pub use ::dafny_runtime::MapBuilder; pub use crate::implementation_from_dafny::software::amazon::cryptography::services::dynamodb::internaldafny::types::QueryInput; pub use crate::implementation_from_dafny::_DynamoDBFilterExpr_Compile::ExprContext; pub use crate::implementation_from_dafny::software::amazon::cryptography::services::dynamodb::internaldafny::types::QueryOutput; - pub use ::dafny_runtime::truncate; pub use crate::implementation_from_dafny::software::amazon::cryptography::services::dynamodb::internaldafny::types::ScanInput; pub use crate::implementation_from_dafny::software::amazon::cryptography::services::dynamodb::internaldafny::types::ScanOutput; pub use crate::implementation_from_dafny::_SearchableEncryptionInfo_Compile::BeaconVersion; @@ -95945,45 +96480,33 @@ pub mod _DynamoDBSupport_Compile { /// = specification/dynamodb-encryption-client/ddb-support.md#writable /// = type=implication /// # Writeable MUST reject any item containing an attribute which begins with `aws_dbe_`. - /// dafny/DynamoDbEncryption/src/DDBSupport.dfy(36,3) + /// dafny/DynamoDbEncryption/src/DDBSupport.dfy(37,3) pub fn IsWriteable(item: &Map, Arc>) -> Arc>> { - if item.keys().iter().all(({ - let mut item = item.clone(); - Arc::new(move |__forall_var_0: &Sequence| -> bool{ - let mut k: Sequence = __forall_var_0.clone(); - !item.contains(&k) || !(crate::implementation_from_dafny::_DynamoDbEncryptionUtil_Compile::_default::ReservedPrefix() <= k.clone()) - }) - }).as_ref()) { - Arc::new(Result::>::Success { - value: true - }) - } else { - let mut bad: Set> = (&({ - let mut item = item.clone(); - Arc::new(move || -> Set>{ - let mut _coll0: SetBuilder> = SetBuilder::>::new(); - for __compr_0 in (&item).keys().iter().cloned() { - let mut k: Sequence = __compr_0.clone(); - if item.contains(&k) && crate::implementation_from_dafny::_DynamoDbEncryptionUtil_Compile::_default::ReservedPrefix() <= k.clone() { - _coll0.add(&k) - } - } - _coll0.build() - }) - }))(); - let mut badSeq: Sequence> = crate::implementation_from_dafny::SortedSets::_default::SetToOrderedSequence2::(&bad, &(Arc::new(move |x0: &DafnyCharUTF16,x1: &DafnyCharUTF16| crate::implementation_from_dafny::_DynamoDbEncryptionUtil_Compile::_default::CharLess(x0, x1)) as Arc _ + Sync + Send>)); - if badSeq.cardinality() == int!(0) { - Arc::new(Result::>::Failure { - error: string_utf16_of("") - }) - } else { - Arc::new(Result::>::Failure { - error: string_utf16_of("Writing reserved attributes not allowed : ").concat(&crate::implementation_from_dafny::_StandardLibrary_Compile::_default::Join::(&badSeq, &string_utf16_of("\n"))) - }) + let mut ret = MaybePlacebo::>>>::new(); + let mut keys: Sequence> = crate::implementation_from_dafny::SortedSets::_default::SetToOrderedSequence2::(&item.keys(), &(Arc::new(move |x0: &DafnyCharUTF16,x1: &DafnyCharUTF16| crate::implementation_from_dafny::_DynamoDbEncryptionUtil_Compile::_default::CharLess(x0, x1)) as Arc _ + Sync + Send>)); + let mut rp: Sequence = crate::implementation_from_dafny::_DynamoDbEncryptionUtil_Compile::_default::ReservedPrefix(); + let mut _hi0: u64 = truncate!(keys.cardinality(), u64); + for i in integer_range(0, _hi0).map(Into::::into) { + if rp.clone() <= keys.get(&int!((&i).clone())) { + let mut result: Sequence = string_utf16_of("Writing reserved attributes not allowed : "); + let mut _hi1: u64 = truncate!(keys.cardinality(), u64); + for j in integer_range(i, _hi1).map(Into::::into) { + if rp.clone() <= keys.get(&int!((&i).clone())) { + result = result.concat(&keys.get(&int!((&i).clone()))).concat(&string_utf16_of("\n")); + } + } + ret = MaybePlacebo::from(Arc::new(Result::>::Failure { + error: result.clone() + })); + return ret.read(); } } + ret = MaybePlacebo::from(Arc::new(Result::>::Success { + value: true + })); + return ret.read(); } - /// dafny/DynamoDbEncryption/src/DDBSupport.dfy(55,3) + /// dafny/DynamoDbEncryption/src/DDBSupport.dfy(63,3) pub fn GetEncryptedAttributes(actions: &Map, Arc>, expr: &Arc>>, attrNames: &Arc, Sequence>>>) -> Sequence> { if matches!(expr.as_ref(), None{ .. }) { seq![] as Sequence> @@ -96003,11 +96526,11 @@ pub mod _DynamoDBSupport_Compile { /// = specification/dynamodb-encryption-client/ddb-support.md#testconditionexpression /// = type=implication /// # TestConditionExpression MUST fail if any operand in the condition expression is an encrypted attribute name. - /// dafny/DynamoDbEncryption/src/DDBSupport.dfy(72,3) + /// dafny/DynamoDbEncryption/src/DDBSupport.dfy(80,3) pub fn TestConditionExpression(actions: &Map, Arc>, expr: &Arc>>, attrNames: &Arc, Sequence>>>, attrValues: &Arc, Arc>>>) -> Arc>> { if matches!(expr.as_ref(), Some{ .. }) { let mut attrs: Sequence> = _default::GetEncryptedAttributes(actions, expr, attrNames); - if attrs.cardinality() == int!(0) { + if truncate!(attrs.cardinality(), u64) == 0 { Arc::new(Result::>::Success { value: true }) @@ -96022,18 +96545,18 @@ pub mod _DynamoDBSupport_Compile { }) } } - /// dafny/DynamoDbEncryption/src/DDBSupport.dfy(94,3) + /// dafny/DynamoDbEncryption/src/DDBSupport.dfy(103,3) pub fn IsSigned(actions: &Map, Arc>, attr: &Sequence) -> bool { actions.contains(attr) && actions.get(attr) != Arc::new(CryptoAction::DO_NOTHING {}) } - /// dafny/DynamoDbEncryption/src/DDBSupport.dfy(100,3) + /// dafny/DynamoDbEncryption/src/DDBSupport.dfy(109,3) pub fn IsEncrypted(actions: &Map, Arc>, attr: &Sequence) -> bool { actions.contains(attr) && actions.get(attr) == Arc::new(CryptoAction::ENCRYPT_AND_SIGN {}) } /// = specification/dynamodb-encryption-client/ddb-support.md#testupdateexpression /// = type=implication /// # TestUpdateExpression MUST fail if any operand in the update expression is a signed attribute name. - /// dafny/DynamoDbEncryption/src/DDBSupport.dfy(109,3) + /// dafny/DynamoDbEncryption/src/DDBSupport.dfy(118,3) pub fn TestUpdateExpression(actions: &Map, Arc>, expr: &Arc>>, attrNames: &Arc, Sequence>>>, attrValues: &Arc, Arc>>>) -> Arc>> { if matches!(expr.as_ref(), Some{ .. }) { let mut attrs: Sequence> = crate::implementation_from_dafny::_DynamoDbUpdateExpr_Compile::_default::ExtractAttributes(expr.value(), attrNames); @@ -96046,7 +96569,7 @@ pub mod _DynamoDBSupport_Compile { }) }) }, &attrs); - if encryptedAttrs.cardinality() == int!(0) { + if truncate!(encryptedAttrs.cardinality(), u64) == 0 { Arc::new(Result::>::Success { value: true }) @@ -96061,7 +96584,7 @@ pub mod _DynamoDBSupport_Compile { }) } } - /// dafny/DynamoDbEncryption/src/DDBSupport.dfy(134,3) + /// dafny/DynamoDbEncryption/src/DDBSupport.dfy(144,3) pub fn GetEncryptedBeacons(search: &Arc>, item: &Map, Arc>, keyId: &Arc) -> Arc, Arc>, Arc>> { let mut output: Arc, Arc>, Arc>>; if matches!(search.as_ref(), None{ .. }) { @@ -96075,7 +96598,7 @@ pub mod _DynamoDBSupport_Compile { }; return output.clone(); } - /// dafny/DynamoDbEncryption/src/DDBSupport.dfy(149,3) + /// dafny/DynamoDbEncryption/src/DDBSupport.dfy(159,3) pub fn AddSignedBeacons(search: &Arc>, item: &Map, Arc>) -> Arc, Arc>, Arc>> { let mut output = MaybePlacebo::, Arc>, Arc>>>::new(); if matches!(search.as_ref(), None{ .. }) { @@ -96111,7 +96634,7 @@ pub mod _DynamoDBSupport_Compile { _coll0.build() }) }))(); - let mut valueOrError1: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(badAttrs.cardinality() == int!(0), &crate::implementation_from_dafny::_DynamoDbEncryptionUtil_Compile::_default::E(&string_utf16_of("Signed beacons have generated values different from supplied values."))); + let mut valueOrError1: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(truncate!(badAttrs.cardinality(), u64) == 0, &crate::implementation_from_dafny::_DynamoDbEncryptionUtil_Compile::_default::E(&string_utf16_of("Signed beacons have generated values different from supplied values."))); if valueOrError1.IsFailure() { output = MaybePlacebo::from(valueOrError1.PropagateFailure::, Arc>>()); return output.read(); @@ -96138,7 +96661,7 @@ pub mod _DynamoDBSupport_Compile { _coll1.build() }) }))(); - if int!(0) < bad.cardinality() { + if 0 < truncate!(bad.cardinality(), u64) { let mut badSeq: Sequence> = crate::implementation_from_dafny::SortedSets::_default::SetToOrderedSequence2::(&bad, &(Arc::new(move |x0: &DafnyCharUTF16,x1: &DafnyCharUTF16| crate::implementation_from_dafny::_DynamoDbEncryptionUtil_Compile::_default::CharLess(x0, x1)) as Arc _ + Sync + Send>)); output = MaybePlacebo::from(Arc::new(Result::, Arc>, Arc>::Failure { error: crate::implementation_from_dafny::_DynamoDbEncryptionUtil_Compile::_default::E(&string_utf16_of("Supplied Beacons do not match calculated beacons : ").concat(&crate::implementation_from_dafny::_StandardLibrary_Compile::_default::Join::(&badSeq, &string_utf16_of(", ")))) @@ -96178,7 +96701,7 @@ pub mod _DynamoDBSupport_Compile { }; return output.read(); } - /// dafny/DynamoDbEncryption/src/DDBSupport.dfy(192,3) + /// dafny/DynamoDbEncryption/src/DDBSupport.dfy(204,3) pub fn DoRemoveBeacons(item: &Map, Arc>) -> Map, Arc> { (&({ let mut item = item.clone(); @@ -96203,13 +96726,13 @@ pub mod _DynamoDBSupport_Compile { /// = type=implication /// # RemoveBeacons MUST remove any attributes whose name begins with `aws_dbe_`, /// # and leave all other attributes unchanged. - /// dafny/DynamoDbEncryption/src/DDBSupport.dfy(199,3) + /// dafny/DynamoDbEncryption/src/DDBSupport.dfy(211,3) pub fn RemoveBeacons(search: &Arc>, item: &Map, Arc>) -> Arc, Arc>, Sequence>> { Arc::new(Result::, Arc>, Sequence>::Success { value: _default::DoRemoveBeacons(item) }) } - /// dafny/DynamoDbEncryption/src/DDBSupport.dfy(214,3) + /// dafny/DynamoDbEncryption/src/DDBSupport.dfy(226,3) pub fn QueryInputForBeacons(search: &Arc>, actions: &Map, Arc>, req: &Arc) -> Arc, Arc>> { let mut output = MaybePlacebo::, Arc>>>::new(); if matches!(search.as_ref(), None{ .. }) { @@ -96248,25 +96771,25 @@ pub mod _DynamoDBSupport_Compile { let mut newContext: Arc = valueOrError2.Extract(); output = MaybePlacebo::from(Arc::new(Result::, Arc>::Success { value: { - let __pat_let13_0: Arc = req.clone(); + let __pat_let15_0: Arc = req.clone(); { - let _dt__update__tmp_h0: Arc = __pat_let13_0.clone(); + let _dt__update__tmp_h0: Arc = __pat_let15_0.clone(); { - let __pat_let14_0: Arc, Arc>>> = newContext.values().clone(); + let __pat_let16_0: Arc, Arc>>> = newContext.values().clone(); { - let _dt__update_hExpressionAttributeValues_h0: Arc, Arc>>> = __pat_let14_0.clone(); + let _dt__update_hExpressionAttributeValues_h0: Arc, Arc>>> = __pat_let16_0.clone(); { - let __pat_let15_0: Arc, Sequence>>> = newContext.names().clone(); + let __pat_let17_0: Arc, Sequence>>> = newContext.names().clone(); { - let _dt__update_hExpressionAttributeNames_h0: Arc, Sequence>>> = __pat_let15_0.clone(); + let _dt__update_hExpressionAttributeNames_h0: Arc, Sequence>>> = __pat_let17_0.clone(); { - let __pat_let16_0: Arc>> = newContext.filterExpr().clone(); + let __pat_let18_0: Arc>> = newContext.filterExpr().clone(); { - let _dt__update_hFilterExpression_h0: Arc>> = __pat_let16_0.clone(); + let _dt__update_hFilterExpression_h0: Arc>> = __pat_let18_0.clone(); { - let __pat_let17_0: Arc>> = newContext.keyExpr().clone(); + let __pat_let19_0: Arc>> = newContext.keyExpr().clone(); { - let _dt__update_hKeyConditionExpression_h0: Arc>> = __pat_let17_0.clone(); + let _dt__update_hKeyConditionExpression_h0: Arc>> = __pat_let19_0.clone(); Arc::new(QueryInput::QueryInput { TableName: _dt__update__tmp_h0.TableName().clone(), IndexName: _dt__update__tmp_h0.IndexName().clone(), @@ -96301,7 +96824,7 @@ pub mod _DynamoDBSupport_Compile { }; return output.read(); } - /// dafny/DynamoDbEncryption/src/DDBSupport.dfy(240,3) + /// dafny/DynamoDbEncryption/src/DDBSupport.dfy(252,3) pub fn QueryOutputForBeacons(search: &Arc>, req: &Arc, resp: &Arc) -> Arc, Arc>> { let mut output = MaybePlacebo::, Arc>>>::new(); if matches!(search.as_ref(), None{ .. }) { @@ -96312,15 +96835,15 @@ pub mod _DynamoDBSupport_Compile { }), resp.Items().value()); output = MaybePlacebo::from(Arc::new(Result::, Arc>::Success { value: { - let __pat_let18_0: Arc = resp.clone(); + let __pat_let20_0: Arc = resp.clone(); { - let _dt__update__tmp_h0: Arc = __pat_let18_0.clone(); + let _dt__update__tmp_h0: Arc = __pat_let20_0.clone(); { - let __pat_let19_0: Arc, Arc>>>> = Arc::new(Option::, Arc>>>::Some { + let __pat_let21_0: Arc, Arc>>>> = Arc::new(Option::, Arc>>>::Some { value: trimmedItems.clone() }); { - let _dt__update_hItems_h0: Arc, Arc>>>> = __pat_let19_0.clone(); + let _dt__update_hItems_h0: Arc, Arc>>>> = __pat_let21_0.clone(); Arc::new(QueryOutput::QueryOutput { Items: _dt__update_hItems_h0.clone(), Count: _dt__update__tmp_h0.Count().clone(), @@ -96343,7 +96866,7 @@ pub mod _DynamoDBSupport_Compile { return output.read(); }; let mut newItems: Sequence, Arc>> = valueOrError0.Extract(); - let mut valueOrError1: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(newItems.cardinality() < crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default::INT32_MAX_LIMIT(), &crate::implementation_from_dafny::_DynamoDbEncryptionUtil_Compile::_default::E(&string_utf16_of("This is impossible."))); + let mut valueOrError1: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(truncate!(newItems.cardinality(), u64) < truncate!(crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default::INT32_MAX_LIMIT(), u64), &crate::implementation_from_dafny::_DynamoDbEncryptionUtil_Compile::_default::E(&string_utf16_of("This is impossible."))); if valueOrError1.IsFailure() { output = MaybePlacebo::from(valueOrError1.PropagateFailure::>()); return output.read(); @@ -96363,19 +96886,19 @@ pub mod _DynamoDBSupport_Compile { }; output = MaybePlacebo::from(Arc::new(Result::, Arc>::Success { value: { - let __pat_let20_0: Arc = resp.clone(); + let __pat_let22_0: Arc = resp.clone(); { - let _dt__update__tmp_h1: Arc = __pat_let20_0.clone(); + let _dt__update__tmp_h1: Arc = __pat_let22_0.clone(); { - let __pat_let21_0: Arc> = count.clone(); + let __pat_let23_0: Arc> = count.clone(); { - let _dt__update_hCount_h0: Arc> = __pat_let21_0.clone(); + let _dt__update_hCount_h0: Arc> = __pat_let23_0.clone(); { - let __pat_let22_0: Arc, Arc>>>> = Arc::new(Option::, Arc>>>::Some { + let __pat_let24_0: Arc, Arc>>>> = Arc::new(Option::, Arc>>>::Some { value: trimmedItems.clone() }); { - let _dt__update_hItems_h1: Arc, Arc>>>> = __pat_let22_0.clone(); + let _dt__update_hItems_h1: Arc, Arc>>>> = __pat_let24_0.clone(); Arc::new(QueryOutput::QueryOutput { Items: _dt__update_hItems_h1.clone(), Count: _dt__update_hCount_h0.clone(), @@ -96394,7 +96917,7 @@ pub mod _DynamoDBSupport_Compile { }; return output.read(); } - /// dafny/DynamoDbEncryption/src/DDBSupport.dfy(268,3) + /// dafny/DynamoDbEncryption/src/DDBSupport.dfy(281,3) pub fn GetBeaconKeyId(search: &Arc>, keyExpr: &Arc>>, filterExpr: &Arc>>, values: &Arc, Arc>>>, names: &Arc, Sequence>>>) -> Arc, Arc>> { if matches!(search.as_ref(), None{ .. }) { Arc::new(Result::, Arc>::Success { @@ -96404,7 +96927,7 @@ pub mod _DynamoDBSupport_Compile { crate::implementation_from_dafny::_DynamoDBFilterExpr_Compile::_default::GetBeaconKeyId(&SearchInfo::curr(search.value()), keyExpr, filterExpr, values, names) } } - /// dafny/DynamoDbEncryption/src/DDBSupport.dfy(284,3) + /// dafny/DynamoDbEncryption/src/DDBSupport.dfy(297,3) pub fn ScanInputForBeacons(search: &Arc>, actions: &Map, Arc>, req: &Arc) -> Arc, Arc>> { let mut output = MaybePlacebo::, Arc>>>::new(); if matches!(search.as_ref(), None{ .. }) { @@ -96443,21 +96966,21 @@ pub mod _DynamoDBSupport_Compile { let mut newContext: Arc = valueOrError2.Extract(); output = MaybePlacebo::from(Arc::new(Result::, Arc>::Success { value: { - let __pat_let23_0: Arc = req.clone(); + let __pat_let25_0: Arc = req.clone(); { - let _dt__update__tmp_h0: Arc = __pat_let23_0.clone(); + let _dt__update__tmp_h0: Arc = __pat_let25_0.clone(); { - let __pat_let24_0: Arc, Arc>>> = newContext.values().clone(); + let __pat_let26_0: Arc, Arc>>> = newContext.values().clone(); { - let _dt__update_hExpressionAttributeValues_h0: Arc, Arc>>> = __pat_let24_0.clone(); + let _dt__update_hExpressionAttributeValues_h0: Arc, Arc>>> = __pat_let26_0.clone(); { - let __pat_let25_0: Arc, Sequence>>> = newContext.names().clone(); + let __pat_let27_0: Arc, Sequence>>> = newContext.names().clone(); { - let _dt__update_hExpressionAttributeNames_h0: Arc, Sequence>>> = __pat_let25_0.clone(); + let _dt__update_hExpressionAttributeNames_h0: Arc, Sequence>>> = __pat_let27_0.clone(); { - let __pat_let26_0: Arc>> = newContext.filterExpr().clone(); + let __pat_let28_0: Arc>> = newContext.filterExpr().clone(); { - let _dt__update_hFilterExpression_h0: Arc>> = __pat_let26_0.clone(); + let _dt__update_hFilterExpression_h0: Arc>> = __pat_let28_0.clone(); Arc::new(ScanInput::ScanInput { TableName: _dt__update__tmp_h0.TableName().clone(), IndexName: _dt__update__tmp_h0.IndexName().clone(), @@ -96489,7 +97012,7 @@ pub mod _DynamoDBSupport_Compile { }; return output.read(); } - /// dafny/DynamoDbEncryption/src/DDBSupport.dfy(309,3) + /// dafny/DynamoDbEncryption/src/DDBSupport.dfy(322,3) pub fn ScanOutputForBeacons(search: &Arc>, req: &Arc, resp: &Arc) -> Arc, Arc>> { let mut ret = MaybePlacebo::, Arc>>>::new(); if matches!(search.as_ref(), None{ .. }) { @@ -96500,15 +97023,15 @@ pub mod _DynamoDBSupport_Compile { }), resp.Items().value()); ret = MaybePlacebo::from(Arc::new(Result::, Arc>::Success { value: { - let __pat_let27_0: Arc = resp.clone(); + let __pat_let29_0: Arc = resp.clone(); { - let _dt__update__tmp_h0: Arc = __pat_let27_0.clone(); + let _dt__update__tmp_h0: Arc = __pat_let29_0.clone(); { - let __pat_let28_0: Arc, Arc>>>> = Arc::new(Option::, Arc>>>::Some { + let __pat_let30_0: Arc, Arc>>>> = Arc::new(Option::, Arc>>>::Some { value: trimmedItems.clone() }); { - let _dt__update_hItems_h0: Arc, Arc>>>> = __pat_let28_0.clone(); + let _dt__update_hItems_h0: Arc, Arc>>>> = __pat_let30_0.clone(); Arc::new(ScanOutput::ScanOutput { Items: _dt__update_hItems_h0.clone(), Count: _dt__update__tmp_h0.Count().clone(), @@ -96531,7 +97054,7 @@ pub mod _DynamoDBSupport_Compile { return ret.read(); }; let mut newItems: Sequence, Arc>> = valueOrError0.Extract(); - let mut valueOrError1: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(newItems.cardinality() < crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default::INT32_MAX_LIMIT(), &crate::implementation_from_dafny::_DynamoDbEncryptionUtil_Compile::_default::E(&string_utf16_of("This is impossible."))); + let mut valueOrError1: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(truncate!(newItems.cardinality(), u64) < truncate!(crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default::INT32_MAX_LIMIT(), u64), &crate::implementation_from_dafny::_DynamoDbEncryptionUtil_Compile::_default::E(&string_utf16_of("This is impossible."))); if valueOrError1.IsFailure() { ret = MaybePlacebo::from(valueOrError1.PropagateFailure::>()); return ret.read(); @@ -96551,19 +97074,19 @@ pub mod _DynamoDBSupport_Compile { }; ret = MaybePlacebo::from(Arc::new(Result::, Arc>::Success { value: { - let __pat_let29_0: Arc = resp.clone(); + let __pat_let31_0: Arc = resp.clone(); { - let _dt__update__tmp_h1: Arc = __pat_let29_0.clone(); + let _dt__update__tmp_h1: Arc = __pat_let31_0.clone(); { - let __pat_let30_0: Arc> = count.clone(); + let __pat_let32_0: Arc> = count.clone(); { - let _dt__update_hCount_h0: Arc> = __pat_let30_0.clone(); + let _dt__update_hCount_h0: Arc> = __pat_let32_0.clone(); { - let __pat_let31_0: Arc, Arc>>>> = Arc::new(Option::, Arc>>>::Some { + let __pat_let33_0: Arc, Arc>>>> = Arc::new(Option::, Arc>>>::Some { value: trimmedItems.clone() }); { - let _dt__update_hItems_h1: Arc, Arc>>>> = __pat_let31_0.clone(); + let _dt__update_hItems_h1: Arc, Arc>>>> = __pat_let33_0.clone(); Arc::new(ScanOutput::ScanOutput { Items: _dt__update_hItems_h1.clone(), Count: _dt__update_hCount_h0.clone(), @@ -96582,7 +97105,7 @@ pub mod _DynamoDBSupport_Compile { }; return ret.read(); } - /// dafny/DynamoDbEncryption/src/DDBSupport.dfy(337,3) + /// dafny/DynamoDbEncryption/src/DDBSupport.dfy(351,3) pub fn GetVirtualFieldsLoop(fields: &Sequence>, bv: &Arc, item: &Map, Arc>, results: &Map, Sequence>) -> Arc, Sequence>, Arc>> { let mut _r0 = fields.clone(); let mut _r1 = bv.clone(); @@ -96593,28 +97116,28 @@ pub mod _DynamoDBSupport_Compile { let bv = _r1; let item = _r2; let results = _r3; - if fields.cardinality() == int!(0) { + if truncate!(fields.cardinality(), u64) == 0 { return Arc::new(Result::, Sequence>, Arc>::Success { value: results.clone() }); } else { - let mut valueOrError0: Arc>>, Arc>> = crate::implementation_from_dafny::_DdbVirtualFields_Compile::_default::GetVirtField(&bv.virtualFields().get(&fields.get(&int!(0))), &item); + let mut valueOrError0: Arc>>, Arc>> = crate::implementation_from_dafny::_DdbVirtualFields_Compile::_default::GetVirtField(&bv.virtualFields().get(&fields.get(&int!((&truncate!((&int!(0)).clone(), u32)).clone()))), &item); if valueOrError0.IsFailure() { return valueOrError0.PropagateFailure::, Sequence>>(); } else { let mut optValue: Arc>> = valueOrError0.Extract(); if matches!((&optValue).as_ref(), Some{ .. }) { - let mut _in0: Sequence> = fields.drop(&int!(1)); + let mut _in0: Sequence> = fields.drop(&int!((&truncate!((&int!(1)).clone(), u32)).clone())); let mut _in1: Arc = bv.clone(); let mut _in2: Map, Arc> = item.clone(); - let mut _in3: Map, Sequence> = results.update_index(&fields.get(&int!(0)), optValue.value()); + let mut _in3: Map, Sequence> = results.update_index(&fields.get(&int!((&truncate!((&int!(0)).clone(), u32)).clone())), optValue.value()); _r0 = _in0.clone(); _r1 = _in1.clone(); _r2 = _in2.clone(); _r3 = _in3.clone(); continue 'TAIL_CALL_START; } else { - let mut _in4: Sequence> = fields.drop(&int!(1)); + let mut _in4: Sequence> = fields.drop(&int!((&truncate!((&int!(1)).clone(), u32)).clone())); let mut _in5: Arc = bv.clone(); let mut _in6: Map, Arc> = item.clone(); let mut _in7: Map, Sequence> = results.clone(); @@ -96628,14 +97151,14 @@ pub mod _DynamoDBSupport_Compile { } } } - /// dafny/DynamoDbEncryption/src/DDBSupport.dfy(357,3) + /// dafny/DynamoDbEncryption/src/DDBSupport.dfy(372,3) pub fn GetVirtualFields(beaconVersion: &Arc, item: &Map, Arc>) -> Arc, Sequence>, Arc>> { let mut output: Arc, Sequence>, Arc>>; let mut fieldNames: Sequence> = crate::implementation_from_dafny::SortedSets::_default::SetToOrderedSequence2::(&beaconVersion.virtualFields().keys(), &(Arc::new(move |x0: &DafnyCharUTF16,x1: &DafnyCharUTF16| crate::implementation_from_dafny::_DynamoDbEncryptionUtil_Compile::_default::CharLess(x0, x1)) as Arc _ + Sync + Send>)); output = _default::GetVirtualFieldsLoop(&fieldNames, beaconVersion, item, &map![]); return output.clone(); } - /// dafny/DynamoDbEncryption/src/DDBSupport.dfy(364,3) + /// dafny/DynamoDbEncryption/src/DDBSupport.dfy(379,3) pub fn GetCompoundBeaconsLoop(fields: &Sequence>, bv: &Arc, item: &Map, Arc>, results: &Map, Sequence>) -> Arc, Sequence>, Arc>> { let mut _r0 = fields.clone(); let mut _r1 = bv.clone(); @@ -96646,12 +97169,12 @@ pub mod _DynamoDBSupport_Compile { let bv = _r1; let item = _r2; let results = _r3; - if fields.cardinality() == int!(0) { + if truncate!(fields.cardinality(), u64) == 0 { return Arc::new(Result::, Sequence>, Arc>::Success { value: results.clone() }); } else { - let mut beacon: Arc = bv.beacons().get(&fields.get(&int!(0))); + let mut beacon: Arc = bv.beacons().get(&fields.get(&int!((&truncate!((&int!(0)).clone(), u32)).clone()))); if matches!((&beacon).as_ref(), Compound{ .. }) { let mut valueOrError0: Arc>>, Arc>> = CompoundBeacon::getNaked(beacon.cmp(), &item, bv.virtualFields()); if valueOrError0.IsFailure() { @@ -96659,7 +97182,7 @@ pub mod _DynamoDBSupport_Compile { } else { let mut optValue: Arc>> = valueOrError0.Extract(); if matches!((&optValue).as_ref(), Some{ .. }) { - let mut _in0: Sequence> = fields.drop(&int!(1)); + let mut _in0: Sequence> = fields.drop(&int!((&truncate!((&int!(1)).clone(), u32)).clone())); let mut _in1: Arc = bv.clone(); let mut _in2: Map, Arc> = item.clone(); let mut _in3: Map, Sequence> = results.update_index(&fields.get(&int!(0)), optValue.value()); @@ -96669,7 +97192,7 @@ pub mod _DynamoDBSupport_Compile { _r3 = _in3.clone(); continue 'TAIL_CALL_START; } else { - let mut _in4: Sequence> = fields.drop(&int!(1)); + let mut _in4: Sequence> = fields.drop(&int!((&truncate!((&int!(1)).clone(), u32)).clone())); let mut _in5: Arc = bv.clone(); let mut _in6: Map, Arc> = item.clone(); let mut _in7: Map, Sequence> = results.clone(); @@ -96681,7 +97204,7 @@ pub mod _DynamoDBSupport_Compile { } } } else { - let mut _in8: Sequence> = fields.drop(&int!(1)); + let mut _in8: Sequence> = fields.drop(&int!((&truncate!((&int!(1)).clone(), u32)).clone())); let mut _in9: Arc = bv.clone(); let mut _in10: Map, Arc> = item.clone(); let mut _in11: Map, Sequence> = results.clone(); @@ -96694,14 +97217,14 @@ pub mod _DynamoDBSupport_Compile { } } } - /// dafny/DynamoDbEncryption/src/DDBSupport.dfy(388,3) + /// dafny/DynamoDbEncryption/src/DDBSupport.dfy(404,3) pub fn GetCompoundBeacons(beaconVersion: &Arc, item: &Map, Arc>) -> Arc, Sequence>, Arc>> { let mut output: Arc, Sequence>, Arc>>; let mut beaconNames: Sequence> = crate::implementation_from_dafny::SortedSets::_default::SetToOrderedSequence2::(&beaconVersion.beacons().keys(), &(Arc::new(move |x0: &DafnyCharUTF16,x1: &DafnyCharUTF16| crate::implementation_from_dafny::_DynamoDbEncryptionUtil_Compile::_default::CharLess(x0, x1)) as Arc _ + Sync + Send>)); output = _default::GetCompoundBeaconsLoop(&beaconNames, beaconVersion, item, &map![]); return output.clone(); } - /// dafny/DynamoDbEncryption/src/DDBSupport.dfy(145,3) + /// dafny/DynamoDbEncryption/src/DDBSupport.dfy(155,3) pub fn VersionTag() -> Sequence { crate::implementation_from_dafny::_DynamoDbEncryptionUtil_Compile::_default::VersionPrefix().concat(&string_utf16_of("1")) } @@ -96879,7 +97402,7 @@ pub mod _DynamoDbEncryptionBranchKeyIdSupplierTest_Compile { pub struct _default {} impl _default { - /// dafny/DynamoDbEncryption/test/DynamoDbEncryptionBranchKeyIdSupplierTest.dfy(49,3) + /// dafny/DynamoDbEncryption/test/DynamoDbEncryptionBranchKeyIdSupplierTest.dfy(67,3) pub fn TestHappyCase() -> () { let mut ddbKeyToBranchKeyId: Object; let mut _nw0: Object = TestBranchKeyIdSupplier::_allocate_object(); @@ -97014,7 +97537,7 @@ pub mod _DynamoDbEncryptionBranchKeyIdSupplierTest_Compile { _default::TestRoundtrip(&hierarchyKeyring, &materialsB, &_default::TEST_DBE_ALG_SUITE_ID(), &_default::BRANCH_KEY_ID_B()); return (); } - /// dafny/DynamoDbEncryption/test/DynamoDbEncryptionBranchKeyIdSupplierTest.dfy(109,3) + /// dafny/DynamoDbEncryption/test/DynamoDbEncryptionBranchKeyIdSupplierTest.dfy(127,3) pub fn TestRoundtrip(hierarchyKeyring: &Object, encryptionMaterialsIn: &Arc, algorithmSuiteId: &Arc, expectedBranchKeyId: &Sequence) -> () { let mut valueOrError0: Arc, Arc>>; let mut _out0: Arc, Arc>> = IKeyring::OnEncrypt(rd!(hierarchyKeyring.clone()), &Arc::new(OnEncryptInput::OnEncryptInput { @@ -97099,53 +97622,51 @@ pub mod _DynamoDbEncryptionBranchKeyIdSupplierTest_Compile { pub fn logicalKeyStoreName() -> Sequence { _default::branchKeyStoreName() } - /// dafny/DynamoDbEncryption/test/DynamoDbEncryptionBranchKeyIdSupplierTest.dfy(29,3) - pub fn BRANCH_KEY_ID() -> Sequence { - string_utf16_of("75789115-1deb-4fe3-a2ec-be9e885d1945") - } - /// dafny/DynamoDbEncryption/test/DynamoDbEncryptionBranchKeyIdSupplierTest.dfy(30,3) - pub fn BRANCH_KEY_ID_UTF8() -> ValidUTF8Bytes { - crate::implementation_from_dafny::UTF8::_default::EncodeAscii(&_default::BRANCH_KEY_ID()) - } - /// dafny/DynamoDbEncryption/test/DynamoDbEncryptionBranchKeyIdSupplierTest.dfy(35,3) + /// dafny/DynamoDbEncryption/test/DynamoDbEncryptionBranchKeyIdSupplierTest.dfy(40,3) pub fn STRING_TYPE_ID() -> Sequence { seq![0, 1] } - /// dafny/DynamoDbEncryption/test/DynamoDbEncryptionBranchKeyIdSupplierTest.dfy(39,3) + /// dafny/DynamoDbEncryption/test/DynamoDbEncryptionBranchKeyIdSupplierTest.dfy(44,3) pub fn CASE_A_BYTES() -> Sequence { _default::STRING_TYPE_ID().concat(&seq![67, 65, 83, 69, 95, 65]) } - /// dafny/DynamoDbEncryption/test/DynamoDbEncryptionBranchKeyIdSupplierTest.dfy(41,3) + /// dafny/DynamoDbEncryption/test/DynamoDbEncryptionBranchKeyIdSupplierTest.dfy(46,3) pub fn CASE_B_BYTES() -> Sequence { _default::STRING_TYPE_ID().concat(&seq![67, 65, 83, 69, 95, 66]) } - /// dafny/DynamoDbEncryption/test/DynamoDbEncryptionBranchKeyIdSupplierTest.dfy(42,3) + /// dafny/DynamoDbEncryption/test/DynamoDbEncryptionBranchKeyIdSupplierTest.dfy(29,3) + pub fn BRANCH_KEY_ID() -> Sequence { + string_utf16_of("3f43a9af-08c5-4317-b694-3d3e883dcaef") + } + /// dafny/DynamoDbEncryption/test/DynamoDbEncryptionBranchKeyIdSupplierTest.dfy(47,3) pub fn BRANCH_KEY_ID_A() -> Sequence { _default::BRANCH_KEY_ID() } - /// dafny/DynamoDbEncryption/test/DynamoDbEncryptionBranchKeyIdSupplierTest.dfy(31,3) + /// dafny/DynamoDbEncryption/test/DynamoDbEncryptionBranchKeyIdSupplierTest.dfy(36,3) pub fn ALTERNATE_BRANCH_KEY_ID() -> Sequence { string_utf16_of("4bb57643-07c1-419e-92ad-0df0df149d7c") } - /// dafny/DynamoDbEncryption/test/DynamoDbEncryptionBranchKeyIdSupplierTest.dfy(43,3) + /// dafny/DynamoDbEncryption/test/DynamoDbEncryptionBranchKeyIdSupplierTest.dfy(48,3) pub fn BRANCH_KEY_ID_B() -> Sequence { _default::ALTERNATE_BRANCH_KEY_ID() } - /// dafny/DynamoDbEncryption/test/DynamoDbEncryptionBranchKeyIdSupplierTest.dfy(45,3) + /// dafny/DynamoDbEncryption/test/DynamoDbEncryptionBranchKeyIdSupplierTest.dfy(55,3) pub fn RESERVED_PREFIX() -> Sequence { string_utf16_of("aws-crypto-attr.") } - /// dafny/DynamoDbEncryption/test/DynamoDbEncryptionBranchKeyIdSupplierTest.dfy(34,3) + /// dafny/DynamoDbEncryption/test/DynamoDbEncryptionBranchKeyIdSupplierTest.dfy(39,3) pub fn BRANCH_KEY() -> Sequence { string_utf16_of("branchKey") } - /// dafny/DynamoDbEncryption/test/DynamoDbEncryptionBranchKeyIdSupplierTest.dfy(46,3) + /// dafny/DynamoDbEncryption/test/DynamoDbEncryptionBranchKeyIdSupplierTest.dfy(57,3) pub fn KEY_ATTR_NAME() -> ValidUTF8Bytes { - crate::implementation_from_dafny::UTF8::_default::EncodeAscii(&_default::RESERVED_PREFIX().concat(&_default::BRANCH_KEY())) + let mut s: Sequence = seq![97, 119, 115, 45, 99, 114, 121, 112, 116, 111, 45, 97, 116, 116, 114, 46, 98, 114, 97, 110, 99, 104, 75, 101, 121]; + s.clone() } - /// dafny/DynamoDbEncryption/test/DynamoDbEncryptionBranchKeyIdSupplierTest.dfy(47,3) + /// dafny/DynamoDbEncryption/test/DynamoDbEncryptionBranchKeyIdSupplierTest.dfy(62,3) pub fn BRANCH_KEY_NAME() -> ValidUTF8Bytes { - crate::implementation_from_dafny::UTF8::_default::EncodeAscii(&_default::BRANCH_KEY()) + let mut s: Sequence = seq![98, 114, 97, 110, 99, 104, 75, 101, 121]; + s.clone() } /// dafny/DynamoDbEncryption/test/DynamoDbEncryptionBranchKeyIdSupplierTest.dfy(24,3) pub fn keyArn() -> Sequence { @@ -97157,27 +97678,33 @@ pub mod _DynamoDbEncryptionBranchKeyIdSupplierTest_Compile { DBE: Arc::new(DBEAlgorithmSuiteId::ALG_AES_256_GCM_HKDF_SHA512_COMMIT_KEY_SYMSIG_HMAC_SHA384 {}) }) } - /// dafny/DynamoDbEncryption/test/DynamoDbEncryptionBranchKeyIdSupplierTest.dfy(44,3) + /// dafny/DynamoDbEncryption/test/DynamoDbEncryptionBranchKeyIdSupplierTest.dfy(50,3) pub fn EC_PARTITION_NAME() -> ValidUTF8Bytes { - crate::implementation_from_dafny::UTF8::_default::EncodeAscii(&string_utf16_of("aws-crypto-partition-name")) + let mut s: Sequence = seq![97, 119, 115, 45, 99, 114, 121, 112, 116, 111, 45, 112, 97, 114, 116, 105, 116, 105, 111, 110, 45, 110, 97, 109, 101]; + s.clone() } - /// dafny/DynamoDbEncryption/test/DynamoDbEncryptionBranchKeyIdSupplierTest.dfy(36,3) + /// dafny/DynamoDbEncryption/test/DynamoDbEncryptionBranchKeyIdSupplierTest.dfy(41,3) pub fn CASE_A() -> Sequence { string_utf16_of("CASE_A") } - /// dafny/DynamoDbEncryption/test/DynamoDbEncryptionBranchKeyIdSupplierTest.dfy(37,3) + /// dafny/DynamoDbEncryption/test/DynamoDbEncryptionBranchKeyIdSupplierTest.dfy(42,3) pub fn CASE_B() -> Sequence { string_utf16_of("CASE_B") } + /// dafny/DynamoDbEncryption/test/DynamoDbEncryptionBranchKeyIdSupplierTest.dfy(31,3) + pub fn BRANCH_KEY_ID_UTF8() -> ValidUTF8Bytes { + let mut s: Sequence = seq![51, 102, 52, 51, 97, 57, 97, 102, 45, 48, 56, 99, 53, 45, 52, 51, 49, 55, 45, 98, 54, 57, 52, 45, 51, 100, 51, 101, 56, 56, 51, 100, 99, 97, 101, 102]; + s.clone() + } } - /// dafny/DynamoDbEncryption/test/DynamoDbEncryptionBranchKeyIdSupplierTest.dfy(49,3) + /// dafny/DynamoDbEncryption/test/DynamoDbEncryptionBranchKeyIdSupplierTest.dfy(67,3) #[test] pub fn TestHappyCase() { _default::TestHappyCase() } - /// dafny/DynamoDbEncryption/test/DynamoDbEncryptionBranchKeyIdSupplierTest.dfy(155,3) + /// dafny/DynamoDbEncryption/test/DynamoDbEncryptionBranchKeyIdSupplierTest.dfy(173,3) pub struct TestBranchKeyIdSupplier {} impl TestBranchKeyIdSupplier { @@ -97185,7 +97712,7 @@ pub mod _DynamoDbEncryptionBranchKeyIdSupplierTest_Compile { pub fn _allocate_object() -> Object { allocate_object::() } - /// dafny/DynamoDbEncryption/test/DynamoDbEncryptionBranchKeyIdSupplierTest.dfy(163,5) + /// dafny/DynamoDbEncryption/test/DynamoDbEncryptionBranchKeyIdSupplierTest.dfy(181,5) pub fn _ctor(this: &Object) -> () { return (); } @@ -97198,7 +97725,7 @@ pub mod _DynamoDbEncryptionBranchKeyIdSupplierTest_Compile { impl IDynamoDbKeyBranchKeyIdSupplier for TestBranchKeyIdSupplier { - /// dafny/DynamoDbEncryption/test/DynamoDbEncryptionBranchKeyIdSupplierTest.dfy(173,5) + /// dafny/DynamoDbEncryption/test/DynamoDbEncryptionBranchKeyIdSupplierTest.dfy(191,5) fn _GetBranchKeyIdFromDdbKey_k(&self, input: &Arc) -> Arc, Arc>> { let mut output: Arc, Arc>>; let mut item: Map, Arc> = input.ddbKey().clone(); @@ -97257,8 +97784,6 @@ pub mod _DynamoDbEncryptionUtil_Compile { pub use crate::implementation_from_dafny::software::amazon::cryptography::services::dynamodb::internaldafny::types::AttributeValue::NULL; pub use ::dafny_runtime::DafnyType; pub use ::dafny_runtime::DafnyPrintWrapper; - pub use ::dafny_runtime::DafnyInt; - pub use ::dafny_runtime::int; pub use ::std::fmt::Debug; pub use ::std::fmt::Formatter; pub use ::std::fmt::Result; @@ -97378,8 +97903,8 @@ pub mod _DynamoDbEncryptionUtil_Compile { string_utf16_of("aws_dbe_v_") } /// dafny/DynamoDbEncryption/src/Util.dfy(17,3) - pub fn MAX_STRUCTURE_DEPTH() -> DafnyInt { - int!(32) + pub fn MAX_STRUCTURE_DEPTH() -> u64 { + 32 } /// dafny/DynamoDbEncryption/src/Util.dfy(18,3) pub fn MAX_STRUCTURE_DEPTH_STR() -> Sequence { @@ -97586,12 +98111,13 @@ pub mod _DynamoDbGetEncryptedDataKeyDescriptionTest_Compile { pub use crate::implementation_from_dafny::software::amazon::cryptography::services::dynamodb::internaldafny::types::AttributeValue; pub use ::dafny_runtime::map; pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::internaldafny::types::Error::DynamoDbEncryptionException; + pub use crate::implementation_from_dafny::UTF8::ValidUTF8Bytes; pub use crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::EncryptedDataKey; pub struct _default {} impl _default { - /// dafny/DynamoDbEncryption/test/DynamoDbGetEncryptedDataKeyDescriptionTest.dfy(51,3) + /// dafny/DynamoDbEncryption/test/DynamoDbGetEncryptedDataKeyDescriptionTest.dfy(86,3) pub fn CreatePartialHeader(version: Version, flavor: Flavor, msgID: &MessageID, legend: &Legend, encContext: &CMPEncryptionContext, dataKeyList: &CMPEncryptedDataKeyList) -> Arc { let mut result: Arc = Arc::new(PartialHeader::PartialHeader { version: version, @@ -97603,7 +98129,7 @@ pub mod _DynamoDbGetEncryptedDataKeyDescriptionTest_Compile { }); return result.clone(); } - /// dafny/DynamoDbEncryption/test/DynamoDbGetEncryptedDataKeyDescriptionTest.dfy(70,3) + /// dafny/DynamoDbEncryption/test/DynamoDbGetEncryptedDataKeyDescriptionTest.dfy(105,3) pub fn TestHeaderInputAwsKmsDataKeyCase() -> () { let mut expectedHead: Arc; let mut _out0: Arc = _default::CreatePartialHeader(_default::testVersion(), _default::testFlavor1(), &_default::testMsgID(), &_default::testLegend(), &_default::testEncContext(), &seq![_default::testAwsKmsDataKey()]); @@ -97660,7 +98186,7 @@ pub mod _DynamoDbGetEncryptedDataKeyDescriptionTest_Compile { }; return (); } - /// dafny/DynamoDbEncryption/test/DynamoDbGetEncryptedDataKeyDescriptionTest.dfy(87,3) + /// dafny/DynamoDbEncryption/test/DynamoDbGetEncryptedDataKeyDescriptionTest.dfy(122,3) pub fn TestHeaderInputAwsKmsHDataKeyCase() -> () { let mut expectedHead: Arc; let mut _out0: Arc = _default::CreatePartialHeader(_default::testVersion(), _default::testFlavor1(), &_default::testMsgID(), &_default::testLegend(), &_default::testEncContext(), &seq![_default::testAwsKmsHDataKey()]); @@ -97718,7 +98244,7 @@ pub mod _DynamoDbGetEncryptedDataKeyDescriptionTest_Compile { _default::assertBranchKey(&actualDataKeyDescription); return (); } - /// dafny/DynamoDbEncryption/test/DynamoDbGetEncryptedDataKeyDescriptionTest.dfy(106,3) + /// dafny/DynamoDbEncryption/test/DynamoDbGetEncryptedDataKeyDescriptionTest.dfy(141,3) pub fn TestHeaderInputRawRsaDataKeyDataKeyCase() -> () { let mut expectedHead: Arc; let mut _out0: Arc = _default::CreatePartialHeader(_default::testVersion(), _default::testFlavor1(), &_default::testMsgID(), &_default::testLegend(), &_default::testEncContext(), &seq![_default::testRawRsaDataKey()]); @@ -97763,7 +98289,7 @@ pub mod _DynamoDbGetEncryptedDataKeyDescriptionTest_Compile { }; return (); } - /// dafny/DynamoDbEncryption/test/DynamoDbGetEncryptedDataKeyDescriptionTest.dfy(121,3) + /// dafny/DynamoDbEncryption/test/DynamoDbGetEncryptedDataKeyDescriptionTest.dfy(156,3) pub fn TestHeaderInputAwsKmsRsaDataKeyCase() -> () { let mut expectedHead: Arc; let mut _out0: Arc = _default::CreatePartialHeader(_default::testVersion(), _default::testFlavor1(), &_default::testMsgID(), &_default::testLegend(), &_default::testEncContext(), &seq![_default::testAwsKmsRsaDataKey()]); @@ -97820,7 +98346,7 @@ pub mod _DynamoDbGetEncryptedDataKeyDescriptionTest_Compile { }; return (); } - /// dafny/DynamoDbEncryption/test/DynamoDbGetEncryptedDataKeyDescriptionTest.dfy(139,3) + /// dafny/DynamoDbEncryption/test/DynamoDbGetEncryptedDataKeyDescriptionTest.dfy(174,3) pub fn TestDDBItemInputAwsKmsDataKeyCase() -> () { let mut expectedHead: Arc; let mut _out0: Arc = _default::CreatePartialHeader(_default::testVersion(), _default::testFlavor1(), &_default::testMsgID(), &_default::testLegend(), &_default::testEncContext(), &seq![_default::testAwsKmsDataKey()]); @@ -97880,7 +98406,7 @@ pub mod _DynamoDbGetEncryptedDataKeyDescriptionTest_Compile { }; return (); } - /// dafny/DynamoDbEncryption/test/DynamoDbGetEncryptedDataKeyDescriptionTest.dfy(159,3) + /// dafny/DynamoDbEncryption/test/DynamoDbGetEncryptedDataKeyDescriptionTest.dfy(194,3) pub fn TestDDBItemInputAwsKmsHDataKeyCase() -> () { let mut expectedHead: Arc; let mut _out0: Arc = _default::CreatePartialHeader(_default::testVersion(), _default::testFlavor0(), &_default::testMsgID(), &_default::testLegend(), &_default::testEncContext(), &seq![_default::testAwsKmsHDataKey()]); @@ -97941,7 +98467,7 @@ pub mod _DynamoDbGetEncryptedDataKeyDescriptionTest_Compile { _default::assertBranchKey(&actualDataKeyDescription); return (); } - /// dafny/DynamoDbEncryption/test/DynamoDbGetEncryptedDataKeyDescriptionTest.dfy(179,3) + /// dafny/DynamoDbEncryption/test/DynamoDbGetEncryptedDataKeyDescriptionTest.dfy(214,3) pub fn TestDDBItemInputRawRsaDataKeyCase() -> () { let mut expectedHead: Arc; let mut _out0: Arc = _default::CreatePartialHeader(_default::testVersion(), _default::testFlavor1(), &_default::testMsgID(), &_default::testLegend(), &_default::testEncContext(), &seq![_default::testRawRsaDataKey()]); @@ -97989,7 +98515,7 @@ pub mod _DynamoDbGetEncryptedDataKeyDescriptionTest_Compile { }; return (); } - /// dafny/DynamoDbEncryption/test/DynamoDbGetEncryptedDataKeyDescriptionTest.dfy(195,3) + /// dafny/DynamoDbEncryption/test/DynamoDbGetEncryptedDataKeyDescriptionTest.dfy(230,3) pub fn TestDDBItemInputAwsKmsRsaDataKeyCase() -> () { let mut expectedHead: Arc; let mut _out0: Arc = _default::CreatePartialHeader(_default::testVersion(), _default::testFlavor1(), &_default::testMsgID(), &_default::testLegend(), &_default::testEncContext(), &seq![_default::testAwsKmsRsaDataKey()]); @@ -98049,7 +98575,7 @@ pub mod _DynamoDbGetEncryptedDataKeyDescriptionTest_Compile { }; return (); } - /// dafny/DynamoDbEncryption/test/DynamoDbGetEncryptedDataKeyDescriptionTest.dfy(213,3) + /// dafny/DynamoDbEncryption/test/DynamoDbGetEncryptedDataKeyDescriptionTest.dfy(248,3) pub fn TestHeaderMultiDataKeyCase() -> () { let mut expectedHead: Arc; let mut _out0: Arc = _default::CreatePartialHeader(_default::testVersion(), _default::testFlavor1(), &_default::testMsgID(), &_default::testLegend(), &_default::testEncContext(), &seq![_default::testAwsKmsDataKey(), _default::testAwsKmsRsaDataKey()]); @@ -98127,7 +98653,7 @@ pub mod _DynamoDbGetEncryptedDataKeyDescriptionTest_Compile { }; return (); } - /// dafny/DynamoDbEncryption/test/DynamoDbGetEncryptedDataKeyDescriptionTest.dfy(234,3) + /// dafny/DynamoDbEncryption/test/DynamoDbGetEncryptedDataKeyDescriptionTest.dfy(269,3) pub fn TestDDBItemInputMultiDataKeyCase() -> () { let mut expectedHead: Arc; let mut _out0: Arc = _default::CreatePartialHeader(_default::testVersion(), _default::testFlavor1(), &_default::testMsgID(), &_default::testLegend(), &_default::testEncContext(), &seq![_default::testAwsKmsDataKey(), _default::testAwsKmsRsaDataKey()]); @@ -98217,7 +98743,7 @@ pub mod _DynamoDbGetEncryptedDataKeyDescriptionTest_Compile { }; return (); } - /// dafny/DynamoDbEncryption/test/DynamoDbGetEncryptedDataKeyDescriptionTest.dfy(261,3) + /// dafny/DynamoDbEncryption/test/DynamoDbGetEncryptedDataKeyDescriptionTest.dfy(296,3) pub fn TestNoHeaderFailureCase() -> () { let mut expectedHead: Arc; let mut _out0: Arc = _default::CreatePartialHeader(_default::testVersion(), _default::testFlavor1(), &_default::testMsgID(), &_default::testLegend(), &_default::testEncContext(), &seq![_default::testAwsKmsDataKey()]); @@ -98258,7 +98784,7 @@ pub mod _DynamoDbGetEncryptedDataKeyDescriptionTest_Compile { }; return (); } - /// dafny/DynamoDbEncryption/test/DynamoDbGetEncryptedDataKeyDescriptionTest.dfy(278,3) + /// dafny/DynamoDbEncryption/test/DynamoDbGetEncryptedDataKeyDescriptionTest.dfy(313,3) pub fn assertBranchKey(actualDataKeyDescription: &Arc) -> () { let mut _e00: DafnyInt = actualDataKeyDescription.EncryptedDataKeyDescriptionOutput().cardinality(); let mut _e10: DafnyInt = int!(1); @@ -98295,125 +98821,160 @@ pub mod _DynamoDbGetEncryptedDataKeyDescriptionTest_Compile { }; return (); } - /// dafny/DynamoDbEncryption/test/DynamoDbGetEncryptedDataKeyDescriptionTest.dfy(18,3) - pub fn testVersion() -> Version { - 1 - } - /// dafny/DynamoDbEncryption/test/DynamoDbGetEncryptedDataKeyDescriptionTest.dfy(20,3) - pub fn testFlavor1() -> Flavor { - 1 - } - /// dafny/DynamoDbEncryption/test/DynamoDbGetEncryptedDataKeyDescriptionTest.dfy(21,3) - pub fn testMsgID() -> MessageID { - seq![1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32] + /// dafny/DynamoDbEncryption/test/DynamoDbGetEncryptedDataKeyDescriptionTest.dfy(17,3) + pub fn abc() -> ValidUTF8Bytes { + let mut s: Sequence = seq![97, 98, 99]; + s.clone() } /// dafny/DynamoDbEncryption/test/DynamoDbGetEncryptedDataKeyDescriptionTest.dfy(22,3) - pub fn testLegend() -> Legend { - seq![101, 115] + pub fn def() -> ValidUTF8Bytes { + let mut s: Sequence = seq![100, 101, 102]; + s.clone() } - /// dafny/DynamoDbEncryption/test/DynamoDbGetEncryptedDataKeyDescriptionTest.dfy(23,3) + /// dafny/DynamoDbEncryption/test/DynamoDbGetEncryptedDataKeyDescriptionTest.dfy(58,3) pub fn testEncContext() -> CMPEncryptionContext { - map![(crate::implementation_from_dafny::UTF8::_default::EncodeAscii(&string_utf16_of("abc"))) => (crate::implementation_from_dafny::UTF8::_default::EncodeAscii(&string_utf16_of("def")))] + map![(_default::abc()) => (_default::def())] + } + /// dafny/DynamoDbEncryption/test/DynamoDbGetEncryptedDataKeyDescriptionTest.dfy(27,3) + pub fn aws_kms() -> ValidUTF8Bytes { + let mut s: Sequence = seq![97, 119, 115, 45, 107, 109, 115]; + s.clone() + } + /// dafny/DynamoDbEncryption/test/DynamoDbGetEncryptedDataKeyDescriptionTest.dfy(32,3) + pub fn keyproviderInfo() -> ValidUTF8Bytes { + let mut s: Sequence = seq![107, 101, 121, 112, 114, 111, 118, 105, 100, 101, 114, 73, 110, 102, 111]; + s.clone() } - /// dafny/DynamoDbEncryption/test/DynamoDbGetEncryptedDataKeyDescriptionTest.dfy(24,3) + /// dafny/DynamoDbEncryption/test/DynamoDbGetEncryptedDataKeyDescriptionTest.dfy(59,3) pub fn testAwsKmsDataKey() -> Arc { Arc::new(EncryptedDataKey::EncryptedDataKey { - keyProviderId: crate::implementation_from_dafny::UTF8::_default::EncodeAscii(&string_utf16_of("aws-kms")), - keyProviderInfo: crate::implementation_from_dafny::UTF8::_default::EncodeAscii(&string_utf16_of("keyproviderInfo")), + keyProviderId: _default::aws_kms(), + keyProviderInfo: _default::keyproviderInfo(), ciphertext: seq![1, 2, 3, 4, 5] }) } - /// dafny/DynamoDbEncryption/test/DynamoDbGetEncryptedDataKeyDescriptionTest.dfy(28,3) + /// dafny/DynamoDbEncryption/test/DynamoDbGetEncryptedDataKeyDescriptionTest.dfy(37,3) + pub fn aws_kms_hierarchy() -> ValidUTF8Bytes { + let mut s: Sequence = seq![97, 119, 115, 45, 107, 109, 115, 45, 104, 105, 101, 114, 97, 114, 99, 104, 121]; + s.clone() + } + /// dafny/DynamoDbEncryption/test/DynamoDbGetEncryptedDataKeyDescriptionTest.dfy(63,3) pub fn testAwsKmsHDataKey() -> Arc { Arc::new(EncryptedDataKey::EncryptedDataKey { - keyProviderId: crate::implementation_from_dafny::UTF8::_default::EncodeAscii(&string_utf16_of("aws-kms-hierarchy")), - keyProviderInfo: crate::implementation_from_dafny::UTF8::_default::EncodeAscii(&string_utf16_of("keyproviderInfo")), + keyProviderId: _default::aws_kms_hierarchy(), + keyProviderInfo: _default::keyproviderInfo(), ciphertext: seq![64, 92, 115, 7, 85, 121, 112, 79, 69, 12, 82, 25, 67, 34, 11, 66, 93, 45, 40, 23, 90, 61, 16, 28, 59, 114, 52, 122, 50, 23, 11, 101, 48, 53, 30, 120, 51, 74, 77, 53, 57, 99, 53, 13, 30, 21, 109, 85, 15, 86, 47, 84, 91, 85, 87, 60, 4, 56, 67, 74, 29, 87, 85, 106, 8, 82, 63, 114, 100, 110, 68, 58, 83, 24, 111, 41, 21, 91, 122, 61, 118, 37, 72, 38, 67, 2, 17, 61, 17, 121, 7, 90, 117, 49, 30, 20, 89, 68, 33, 111, 107, 5, 120, 20, 95, 78, 70, 2, 49, 84, 39, 50, 40, 40, 115, 114, 76, 18, 103, 84, 34, 123, 1, 125, 61, 33, 13, 18, 81, 24, 53, 53, 26, 60, 52, 85, 81, 96, 85, 72] }) } /// dafny/DynamoDbEncryption/test/DynamoDbGetEncryptedDataKeyDescriptionTest.dfy(42,3) + pub fn raw_rsa() -> ValidUTF8Bytes { + let mut s: Sequence = seq![114, 97, 119, 45, 114, 115, 97]; + s.clone() + } + /// dafny/DynamoDbEncryption/test/DynamoDbGetEncryptedDataKeyDescriptionTest.dfy(77,3) pub fn testRawRsaDataKey() -> Arc { Arc::new(EncryptedDataKey::EncryptedDataKey { - keyProviderId: crate::implementation_from_dafny::UTF8::_default::EncodeAscii(&string_utf16_of("raw-rsa")), + keyProviderId: _default::raw_rsa(), keyProviderInfo: seq![1, 2, 3, 4, 5], ciphertext: seq![6, 7, 8, 9] }) } - /// dafny/DynamoDbEncryption/test/DynamoDbGetEncryptedDataKeyDescriptionTest.dfy(46,3) + /// dafny/DynamoDbEncryption/test/DynamoDbGetEncryptedDataKeyDescriptionTest.dfy(47,3) + pub fn aws_kms_rsa() -> ValidUTF8Bytes { + let mut s: Sequence = seq![97, 119, 115, 45, 107, 109, 115, 45, 114, 115, 97]; + s.clone() + } + /// dafny/DynamoDbEncryption/test/DynamoDbGetEncryptedDataKeyDescriptionTest.dfy(81,3) pub fn testAwsKmsRsaDataKey() -> Arc { Arc::new(EncryptedDataKey::EncryptedDataKey { - keyProviderId: crate::implementation_from_dafny::UTF8::_default::EncodeAscii(&string_utf16_of("aws-kms-rsa")), - keyProviderInfo: crate::implementation_from_dafny::UTF8::_default::EncodeAscii(&string_utf16_of("keyproviderInfo")), + keyProviderId: _default::aws_kms_rsa(), + keyProviderInfo: _default::keyproviderInfo(), ciphertext: seq![1, 2, 3, 4, 5] }) } - /// dafny/DynamoDbEncryption/test/DynamoDbGetEncryptedDataKeyDescriptionTest.dfy(19,3) + /// dafny/DynamoDbEncryption/test/DynamoDbGetEncryptedDataKeyDescriptionTest.dfy(53,3) + pub fn testVersion() -> Version { + 1 + } + /// dafny/DynamoDbEncryption/test/DynamoDbGetEncryptedDataKeyDescriptionTest.dfy(55,3) + pub fn testFlavor1() -> Flavor { + 1 + } + /// dafny/DynamoDbEncryption/test/DynamoDbGetEncryptedDataKeyDescriptionTest.dfy(56,3) + pub fn testMsgID() -> MessageID { + seq![1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32] + } + /// dafny/DynamoDbEncryption/test/DynamoDbGetEncryptedDataKeyDescriptionTest.dfy(57,3) + pub fn testLegend() -> Legend { + seq![101, 115] + } + /// dafny/DynamoDbEncryption/test/DynamoDbGetEncryptedDataKeyDescriptionTest.dfy(54,3) pub fn testFlavor0() -> Flavor { 0 } } - /// dafny/DynamoDbEncryption/test/DynamoDbGetEncryptedDataKeyDescriptionTest.dfy(70,3) + /// dafny/DynamoDbEncryption/test/DynamoDbGetEncryptedDataKeyDescriptionTest.dfy(105,3) #[test] pub fn TestHeaderInputAwsKmsDataKeyCase() { _default::TestHeaderInputAwsKmsDataKeyCase() } - /// dafny/DynamoDbEncryption/test/DynamoDbGetEncryptedDataKeyDescriptionTest.dfy(87,3) + /// dafny/DynamoDbEncryption/test/DynamoDbGetEncryptedDataKeyDescriptionTest.dfy(122,3) #[test] pub fn TestHeaderInputAwsKmsHDataKeyCase() { _default::TestHeaderInputAwsKmsHDataKeyCase() } - /// dafny/DynamoDbEncryption/test/DynamoDbGetEncryptedDataKeyDescriptionTest.dfy(106,3) + /// dafny/DynamoDbEncryption/test/DynamoDbGetEncryptedDataKeyDescriptionTest.dfy(141,3) #[test] pub fn TestHeaderInputRawRsaDataKeyDataKeyCase() { _default::TestHeaderInputRawRsaDataKeyDataKeyCase() } - /// dafny/DynamoDbEncryption/test/DynamoDbGetEncryptedDataKeyDescriptionTest.dfy(121,3) + /// dafny/DynamoDbEncryption/test/DynamoDbGetEncryptedDataKeyDescriptionTest.dfy(156,3) #[test] pub fn TestHeaderInputAwsKmsRsaDataKeyCase() { _default::TestHeaderInputAwsKmsRsaDataKeyCase() } - /// dafny/DynamoDbEncryption/test/DynamoDbGetEncryptedDataKeyDescriptionTest.dfy(139,3) + /// dafny/DynamoDbEncryption/test/DynamoDbGetEncryptedDataKeyDescriptionTest.dfy(174,3) #[test] pub fn TestDDBItemInputAwsKmsDataKeyCase() { _default::TestDDBItemInputAwsKmsDataKeyCase() } - /// dafny/DynamoDbEncryption/test/DynamoDbGetEncryptedDataKeyDescriptionTest.dfy(159,3) + /// dafny/DynamoDbEncryption/test/DynamoDbGetEncryptedDataKeyDescriptionTest.dfy(194,3) #[test] pub fn TestDDBItemInputAwsKmsHDataKeyCase() { _default::TestDDBItemInputAwsKmsHDataKeyCase() } - /// dafny/DynamoDbEncryption/test/DynamoDbGetEncryptedDataKeyDescriptionTest.dfy(179,3) + /// dafny/DynamoDbEncryption/test/DynamoDbGetEncryptedDataKeyDescriptionTest.dfy(214,3) #[test] pub fn TestDDBItemInputRawRsaDataKeyCase() { _default::TestDDBItemInputRawRsaDataKeyCase() } - /// dafny/DynamoDbEncryption/test/DynamoDbGetEncryptedDataKeyDescriptionTest.dfy(195,3) + /// dafny/DynamoDbEncryption/test/DynamoDbGetEncryptedDataKeyDescriptionTest.dfy(230,3) #[test] pub fn TestDDBItemInputAwsKmsRsaDataKeyCase() { _default::TestDDBItemInputAwsKmsRsaDataKeyCase() } - /// dafny/DynamoDbEncryption/test/DynamoDbGetEncryptedDataKeyDescriptionTest.dfy(213,3) + /// dafny/DynamoDbEncryption/test/DynamoDbGetEncryptedDataKeyDescriptionTest.dfy(248,3) #[test] pub fn TestHeaderMultiDataKeyCase() { _default::TestHeaderMultiDataKeyCase() } - /// dafny/DynamoDbEncryption/test/DynamoDbGetEncryptedDataKeyDescriptionTest.dfy(234,3) + /// dafny/DynamoDbEncryption/test/DynamoDbGetEncryptedDataKeyDescriptionTest.dfy(269,3) #[test] pub fn TestDDBItemInputMultiDataKeyCase() { _default::TestDDBItemInputMultiDataKeyCase() } - /// dafny/DynamoDbEncryption/test/DynamoDbGetEncryptedDataKeyDescriptionTest.dfy(261,3) + /// dafny/DynamoDbEncryption/test/DynamoDbGetEncryptedDataKeyDescriptionTest.dfy(296,3) #[test] pub fn TestNoHeaderFailureCase() { _default::TestNoHeaderFailureCase() @@ -98457,13 +99018,13 @@ pub mod _DynamoDbItemEncryptorTest_Compile { pub struct _default {} impl _default { - /// dafny/DynamoDbItemEncryptor/test/DynamoDBItemEncryptorTest.dfy(30,3) + /// dafny/DynamoDbItemEncryptor/test/DynamoDBItemEncryptorTest.dfy(33,3) pub fn DDBS(x: &Sequence) -> Arc { Arc::new(AttributeValue::S { S: x.clone() }) } - /// dafny/DynamoDbItemEncryptor/test/DynamoDBItemEncryptorTest.dfy(34,3) + /// dafny/DynamoDbItemEncryptor/test/DynamoDBItemEncryptorTest.dfy(37,3) pub fn TestUnexpectedField() -> () { let mut encryptor: Object; let mut _out0: Object = crate::implementation_from_dafny::_TestFixtures_Compile::_default::GetDynamoDbItemEncryptor(); @@ -98492,7 +99053,7 @@ pub mod _DynamoDbItemEncryptorTest_Compile { }; return (); } - /// dafny/DynamoDbItemEncryptor/test/DynamoDBItemEncryptorTest.dfy(47,3) + /// dafny/DynamoDbItemEncryptor/test/DynamoDBItemEncryptorTest.dfy(50,3) pub fn TestMissingSortKey() -> () { let mut config: Arc; let mut _out0: Arc = crate::implementation_from_dafny::_TestFixtures_Compile::_default::GetEncryptorConfig(); @@ -98541,7 +99102,7 @@ pub mod _DynamoDbItemEncryptorTest_Compile { }; return (); } - /// dafny/DynamoDbItemEncryptor/test/DynamoDBItemEncryptorTest.dfy(66,3) + /// dafny/DynamoDbItemEncryptor/test/DynamoDBItemEncryptorTest.dfy(69,3) pub fn GetAttrName(s: &Sequence) -> Sequence { if crate::implementation_from_dafny::software::amazon::cryptography::services::dynamodb::internaldafny::types::_default::IsValid_AttributeName(s) { s.clone() @@ -98549,7 +99110,7 @@ pub mod _DynamoDbItemEncryptorTest_Compile { string_utf16_of("spoo") } } - /// dafny/DynamoDbItemEncryptor/test/DynamoDBItemEncryptorTest.dfy(96,3) + /// dafny/DynamoDbItemEncryptor/test/DynamoDBItemEncryptorTest.dfy(99,3) pub fn TestV2RoundTripComplexSwitch() -> () { let mut config: Arc; let mut _out0: Arc = crate::implementation_from_dafny::_TestFixtures_Compile::_default::GetEncryptorConfigFromActions(&_default::Actions1(), &Arc::new(Option::>::Some { @@ -98570,9 +99131,6 @@ pub mod _DynamoDbItemEncryptorTest_Compile { })), (string_utf16_of("sign4")) => (Arc::new(AttributeValue::NULL { NULL: true })), (string_utf16_of("nothing")) => (_default::DDBS(&string_utf16_of("baz")))]; - let mut expectedOutputItem: Map, Arc> = inputItem.update_index(&string_utf16_of("bar"), &Arc::new(AttributeValue::N { - N: string_utf16_of("1234") - })); let mut encryptRes: Arc, Arc>>; let mut _out2: Arc, Arc>> = IDynamoDbItemEncryptorClient::EncryptItem(rd!(encryptor.clone()), &Arc::new(EncryptItemInput::EncryptItemInput { plaintextItem: inputItem.clone() @@ -98596,7 +99154,7 @@ pub mod _DynamoDbItemEncryptorTest_Compile { panic!("Halt") }; let mut _e01: Arc = encryptRes.value().encryptedItem().get(&string_utf16_of("bar")); - let mut _e11: Arc = expectedOutputItem.get(&string_utf16_of("bar")); + let mut _e11: Arc = inputItem.get(&string_utf16_of("bar")); if !(_e01.clone() == _e11.clone()) { print!("{}", DafnyPrintWrapper(&string_utf16_of("\nLeft:\n"))); print!("{}", DafnyPrintWrapper(&_e01)); @@ -98664,16 +99222,16 @@ pub mod _DynamoDbItemEncryptorTest_Compile { if !matches!((&decryptRes).as_ref(), Success{ .. }) { panic!("Halt") }; - if decryptRes.value().plaintextItem().clone() != expectedOutputItem.clone() { - print!("{}", DafnyPrintWrapper(&string_utf16_of("\nexpectedOutputItem :\n"))); - print!("{}", DafnyPrintWrapper(&expectedOutputItem)); + if decryptRes.value().plaintextItem().clone() != inputItem.clone() { + print!("{}", DafnyPrintWrapper(&string_utf16_of("\ninputItem :\n"))); + print!("{}", DafnyPrintWrapper(&inputItem)); print!("{}", DafnyPrintWrapper(&string_utf16_of("\n"))); print!("{}", DafnyPrintWrapper(&string_utf16_of("\nOutput Item :\n"))); print!("{}", DafnyPrintWrapper(decryptRes.value().plaintextItem())); print!("{}", DafnyPrintWrapper(&string_utf16_of("\n"))) }; let mut _e06: Map, Arc> = decryptRes.value().plaintextItem().clone(); - let mut _e16: Map, Arc> = expectedOutputItem.clone(); + let mut _e16: Map, Arc> = inputItem.clone(); if !(_e06.clone() == _e16.clone()) { print!("{}", DafnyPrintWrapper(&string_utf16_of("\nLeft:\n"))); print!("{}", DafnyPrintWrapper(&_e06)); @@ -98767,7 +99325,7 @@ pub mod _DynamoDbItemEncryptorTest_Compile { }; return (); } - /// dafny/DynamoDbItemEncryptor/test/DynamoDBItemEncryptorTest.dfy(186,3) + /// dafny/DynamoDbItemEncryptor/test/DynamoDBItemEncryptorTest.dfy(188,3) pub fn TestV2RoundTripComplex() -> () { let mut actions: Map, Arc> = map![(string_utf16_of("bar")) => (Arc::new(CryptoAction::SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT {})), (string_utf16_of("sortKey")) => (Arc::new(CryptoAction::SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT {})), (string_utf16_of("encrypt")) => (Arc::new(CryptoAction::ENCRYPT_AND_SIGN {})), (string_utf16_of("sign")) => (Arc::new(CryptoAction::SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT {})), (string_utf16_of("sign2")) => (Arc::new(CryptoAction::SIGN_ONLY {})), (string_utf16_of("sign3")) => (Arc::new(CryptoAction::SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT {})), (string_utf16_of("sign4")) => (Arc::new(CryptoAction::SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT {})), (string_utf16_of("nothing")) => (Arc::new(CryptoAction::DO_NOTHING {}))]; let mut config: Arc; @@ -98975,7 +99533,7 @@ pub mod _DynamoDbItemEncryptorTest_Compile { }; return (); } - /// dafny/DynamoDbItemEncryptor/test/DynamoDBItemEncryptorTest.dfy(313,3) + /// dafny/DynamoDbItemEncryptor/test/DynamoDBItemEncryptorTest.dfy(315,3) pub fn TestMissingContext() -> () { let mut actions: Map, Arc> = crate::implementation_from_dafny::_TestFixtures_Compile::_default::GetV2AttributeActions(); let mut config: Arc; @@ -99004,7 +99562,7 @@ pub mod _DynamoDbItemEncryptorTest_Compile { }; return (); } - /// dafny/DynamoDbItemEncryptor/test/DynamoDBItemEncryptorTest.dfy(333,3) + /// dafny/DynamoDbItemEncryptor/test/DynamoDBItemEncryptorTest.dfy(335,3) pub fn TestV2RoundTrip() -> () { let mut actions: Map, Arc> = crate::implementation_from_dafny::_TestFixtures_Compile::_default::GetV2AttributeActions(); let mut config: Arc; @@ -99174,7 +99732,7 @@ pub mod _DynamoDbItemEncryptorTest_Compile { }; return (); } - /// dafny/DynamoDbItemEncryptor/test/DynamoDBItemEncryptorTest.dfy(404,3) + /// dafny/DynamoDbItemEncryptor/test/DynamoDBItemEncryptorTest.dfy(406,3) pub fn TestV2RoundTripSpecial() -> () { let mut actions: Map, Arc> = map![(string_utf16_of("bar")) => (Arc::new(CryptoAction::SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT {})), (string_utf16_of("a.b")) => (Arc::new(CryptoAction::SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT {})), (string_utf16_of(".a")) => (Arc::new(CryptoAction::SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT {})), (string_utf16_of("a.")) => (Arc::new(CryptoAction::SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT {})), (string_utf16_of(".a.")) => (Arc::new(CryptoAction::SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT {})), (string_utf16_of("a[2]")) => (Arc::new(CryptoAction::SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT {})), (string_utf16_of("a#b")) => (Arc::new(CryptoAction::SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT {})), (string_utf16_of("$")) => (Arc::new(CryptoAction::SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT {})), (string_utf16_of("$a")) => (Arc::new(CryptoAction::SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT {})), (string_utf16_of("$a.b")) => (Arc::new(CryptoAction::SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT {})), (string_utf16_of("$[a]")) => (Arc::new(CryptoAction::SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT {})), (string_utf16_of("$['a']")) => (Arc::new(CryptoAction::SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT {})), (string_utf16_of("$[\"a\"]")) => (Arc::new(CryptoAction::SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT {})), (string_utf16_of("(a)")) => (Arc::new(CryptoAction::SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT {})), (string_utf16_of("$['")) => (Arc::new(CryptoAction::SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT {})), (string_utf16_of("$'a'")) => (Arc::new(CryptoAction::SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT {})), (string_utf16_of("$\"a\"")) => (Arc::new(CryptoAction::SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT {})), (string_utf16_of("$(a)")) => (Arc::new(CryptoAction::SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT {})), (string_utf16_of("$(a")) => (Arc::new(CryptoAction::SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT {}))]; let mut config: Arc; @@ -99320,7 +99878,7 @@ pub mod _DynamoDbItemEncryptorTest_Compile { }; return (); } - /// dafny/DynamoDbItemEncryptor/test/DynamoDBItemEncryptorTest.dfy(546,3) + /// dafny/DynamoDbItemEncryptor/test/DynamoDBItemEncryptorTest.dfy(548,3) pub fn TestRoundTrip() -> () { let mut encryptor: Object; let mut _out0: Object = crate::implementation_from_dafny::_TestFixtures_Compile::_default::GetDynamoDbItemEncryptor(); @@ -99467,11 +100025,11 @@ pub mod _DynamoDbItemEncryptorTest_Compile { }; return (); } - /// dafny/DynamoDbItemEncryptor/test/DynamoDBItemEncryptorTest.dfy(605,3) - pub fn TestMaxRoundTrip() -> () { + /// dafny/DynamoDbItemEncryptor/test/DynamoDBItemEncryptorTest.dfy(607,3) + pub fn TestLargeRoundTrip() -> () { let mut inputItem: Map, Arc> = map![(string_utf16_of("bar")) => (_default::DDBS(&string_utf16_of("key")))]; let mut actions: Map, Arc> = map![(string_utf16_of("bar")) => (Arc::new(CryptoAction::SIGN_ONLY {}))]; - let mut _hi0: DafnyInt = crate::implementation_from_dafny::_DynamoDbItemEncryptorUtil_Compile::_default::MAX_ATTRIBUTE_COUNT() - int!(1); + let mut _hi0: DafnyInt = int!(500); for i in integer_range(int!(0), _hi0.clone()) { let mut str: Sequence = crate::implementation_from_dafny::_StandardLibrary_Compile::_String_Compile::_default::Base10Int2String(&i); if !crate::implementation_from_dafny::software::amazon::cryptography::services::dynamodb::internaldafny::types::_default::IsValid_AttributeName(&str) { @@ -99576,116 +100134,73 @@ pub mod _DynamoDbItemEncryptorTest_Compile { }; return (); } - /// dafny/DynamoDbItemEncryptor/test/DynamoDBItemEncryptorTest.dfy(650,3) - pub fn TestTooManyAttributes() -> () { - let mut inputItem: Map, Arc> = map![(string_utf16_of("bar")) => (_default::DDBS(&string_utf16_of("key")))]; - let mut actions: Map, Arc> = map![(string_utf16_of("bar")) => (Arc::new(CryptoAction::SIGN_ONLY {}))]; - let mut _hi0: DafnyInt = crate::implementation_from_dafny::_DynamoDbItemEncryptorUtil_Compile::_default::MAX_ATTRIBUTE_COUNT(); - for i in integer_range(int!(0), _hi0.clone()) { - let mut str: Sequence = crate::implementation_from_dafny::_StandardLibrary_Compile::_String_Compile::_default::Base10Int2String(&i); - if !crate::implementation_from_dafny::software::amazon::cryptography::services::dynamodb::internaldafny::types::_default::IsValid_AttributeName(&str) { - panic!("Halt") - }; - inputItem = inputItem.update_index(&str, &_default::DDBS(&str)); - actions = actions.update_index(&str, &Arc::new(CryptoAction::ENCRYPT_AND_SIGN {})); - } - let mut config: Arc; - let mut _out0: Arc = crate::implementation_from_dafny::_TestFixtures_Compile::_default::GetEncryptorConfigFromActions(&actions, &Arc::new(Option::>::None {})); - config = _out0.clone(); - let mut encryptor: Object; - let mut _out1: Object = crate::implementation_from_dafny::_TestFixtures_Compile::_default::GetDynamoDbItemEncryptorFrom(&config); - encryptor = _out1.clone(); - let mut encryptRes: Arc, Arc>>; - let mut _out2: Arc, Arc>> = IDynamoDbItemEncryptorClient::EncryptItem(rd!(encryptor.clone()), &Arc::new(EncryptItemInput::EncryptItemInput { - plaintextItem: inputItem.clone() - })); - encryptRes = _out2.clone(); - if !matches!((&encryptRes).as_ref(), Failure{ .. }) { - panic!("Halt") - }; - let mut _e00: Arc = encryptRes.error().clone(); - let mut _e10: Arc = crate::implementation_from_dafny::_DynamoDbItemEncryptorUtil_Compile::_default::E(&string_utf16_of("Item to encrypt had 101 attributes, but maximum allowed is 100")); - if !(_e00.clone() == _e10.clone()) { - print!("{}", DafnyPrintWrapper(&string_utf16_of("\nLeft:\n"))); - print!("{}", DafnyPrintWrapper(&_e00)); - print!("{}", DafnyPrintWrapper(&string_utf16_of("\nRight:\n"))); - print!("{}", DafnyPrintWrapper(&_e10)); - panic!("Halt") - }; - return (); - } - /// dafny/DynamoDbItemEncryptor/test/DynamoDBItemEncryptorTest.dfy(85,3) + /// dafny/DynamoDbItemEncryptor/test/DynamoDBItemEncryptorTest.dfy(88,3) pub fn Actions2() -> Map, Arc> { map![(_default::GetAttrName(&string_utf16_of("bar"))) => (Arc::new(CryptoAction::SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT {})), (_default::GetAttrName(&string_utf16_of("sortKey"))) => (Arc::new(CryptoAction::SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT {})), (_default::GetAttrName(&string_utf16_of("encrypt"))) => (Arc::new(CryptoAction::ENCRYPT_AND_SIGN {})), (_default::GetAttrName(&string_utf16_of("sign"))) => (Arc::new(CryptoAction::SIGN_ONLY {})), (_default::GetAttrName(&string_utf16_of("sign2"))) => (Arc::new(CryptoAction::SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT {})), (_default::GetAttrName(&string_utf16_of("sign3"))) => (Arc::new(CryptoAction::SIGN_ONLY {})), (_default::GetAttrName(&string_utf16_of("sign4"))) => (Arc::new(CryptoAction::SIGN_ONLY {})), (_default::GetAttrName(&string_utf16_of("nothing"))) => (Arc::new(CryptoAction::DO_NOTHING {}))] } - /// dafny/DynamoDbItemEncryptor/test/DynamoDBItemEncryptorTest.dfy(74,3) + /// dafny/DynamoDbItemEncryptor/test/DynamoDBItemEncryptorTest.dfy(77,3) pub fn Actions1() -> Map, Arc> { map![(string_utf16_of("bar")) => (Arc::new(CryptoAction::SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT {})), (string_utf16_of("sortKey")) => (Arc::new(CryptoAction::SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT {})), (string_utf16_of("encrypt")) => (Arc::new(CryptoAction::ENCRYPT_AND_SIGN {})), (string_utf16_of("sign")) => (Arc::new(CryptoAction::SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT {})), (string_utf16_of("sign2")) => (Arc::new(CryptoAction::SIGN_ONLY {})), (string_utf16_of("sign3")) => (Arc::new(CryptoAction::SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT {})), (string_utf16_of("sign4")) => (Arc::new(CryptoAction::SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT {})), (string_utf16_of("nothing")) => (Arc::new(CryptoAction::DO_NOTHING {}))] } /// dafny/DynamoDbItemEncryptor/test/DynamoDBItemEncryptorTest.dfy(28,3) pub fn PublicKeyUtf8() -> ValidUTF8Bytes { - crate::implementation_from_dafny::UTF8::_default::EncodeAscii(&string_utf16_of("aws-crypto-public-key")) + let mut s: Sequence = seq![97, 119, 115, 45, 99, 114, 121, 112, 116, 111, 45, 112, 117, 98, 108, 105, 99, 45, 107, 101, 121]; + s.clone() } } - /// dafny/DynamoDbItemEncryptor/test/DynamoDBItemEncryptorTest.dfy(34,3) + /// dafny/DynamoDbItemEncryptor/test/DynamoDBItemEncryptorTest.dfy(37,3) #[test] pub fn TestUnexpectedField() { _default::TestUnexpectedField() } - /// dafny/DynamoDbItemEncryptor/test/DynamoDBItemEncryptorTest.dfy(47,3) + /// dafny/DynamoDbItemEncryptor/test/DynamoDBItemEncryptorTest.dfy(50,3) #[test] pub fn TestMissingSortKey() { _default::TestMissingSortKey() } - /// dafny/DynamoDbItemEncryptor/test/DynamoDBItemEncryptorTest.dfy(96,3) + /// dafny/DynamoDbItemEncryptor/test/DynamoDBItemEncryptorTest.dfy(99,3) #[test] pub fn TestV2RoundTripComplexSwitch() { _default::TestV2RoundTripComplexSwitch() } - /// dafny/DynamoDbItemEncryptor/test/DynamoDBItemEncryptorTest.dfy(186,3) + /// dafny/DynamoDbItemEncryptor/test/DynamoDBItemEncryptorTest.dfy(188,3) #[test] pub fn TestV2RoundTripComplex() { _default::TestV2RoundTripComplex() } - /// dafny/DynamoDbItemEncryptor/test/DynamoDBItemEncryptorTest.dfy(313,3) + /// dafny/DynamoDbItemEncryptor/test/DynamoDBItemEncryptorTest.dfy(315,3) #[test] pub fn TestMissingContext() { _default::TestMissingContext() } - /// dafny/DynamoDbItemEncryptor/test/DynamoDBItemEncryptorTest.dfy(333,3) + /// dafny/DynamoDbItemEncryptor/test/DynamoDBItemEncryptorTest.dfy(335,3) #[test] pub fn TestV2RoundTrip() { _default::TestV2RoundTrip() } - /// dafny/DynamoDbItemEncryptor/test/DynamoDBItemEncryptorTest.dfy(404,3) + /// dafny/DynamoDbItemEncryptor/test/DynamoDBItemEncryptorTest.dfy(406,3) #[test] pub fn TestV2RoundTripSpecial() { _default::TestV2RoundTripSpecial() } - /// dafny/DynamoDbItemEncryptor/test/DynamoDBItemEncryptorTest.dfy(546,3) + /// dafny/DynamoDbItemEncryptor/test/DynamoDBItemEncryptorTest.dfy(548,3) #[test] pub fn TestRoundTrip() { _default::TestRoundTrip() } - /// dafny/DynamoDbItemEncryptor/test/DynamoDBItemEncryptorTest.dfy(605,3) + /// dafny/DynamoDbItemEncryptor/test/DynamoDBItemEncryptorTest.dfy(607,3) #[test] - pub fn TestMaxRoundTrip() { - _default::TestMaxRoundTrip() - } - - /// dafny/DynamoDbItemEncryptor/test/DynamoDBItemEncryptorTest.dfy(650,3) - #[test] - pub fn TestTooManyAttributes() { - _default::TestTooManyAttributes() + pub fn TestLargeRoundTrip() { + _default::TestLargeRoundTrip() } } /// dafny/DynamoDbItemEncryptor/src/Util.dfy(6,1) @@ -99707,28 +100222,28 @@ pub mod _DynamoDbItemEncryptorUtil_Compile { pub use ::dafny_runtime::map; pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::structuredencryption::internaldafny::types::StructuredDataTerminal; pub use crate::implementation_from_dafny::_DynamoToStruct_Compile::AttrValueAndLength; - pub use ::dafny_runtime::int; + pub use ::dafny_runtime::truncate; pub use ::dafny_runtime::seq; - pub use ::dafny_runtime::DafnyInt; + pub use ::dafny_runtime::int; pub struct _default {} impl _default { - /// dafny/DynamoDbItemEncryptor/src/Util.dfy(23,3) + /// dafny/DynamoDbItemEncryptor/src/Util.dfy(24,3) pub fn E(msg: &Sequence) -> Arc { Arc::new(Error::DynamoDbItemEncryptorException { message: msg.clone() }) } - /// dafny/DynamoDbItemEncryptor/src/Util.dfy(28,3) + /// dafny/DynamoDbItemEncryptor/src/Util.dfy(29,3) pub fn ByteLess(x: u8, y: u8) -> bool { x < y } - /// dafny/DynamoDbItemEncryptor/src/Util.dfy(33,3) + /// dafny/DynamoDbItemEncryptor/src/Util.dfy(34,3) pub fn CharLess(x: &DafnyCharUTF16, y: &DafnyCharUTF16) -> bool { x.clone() < y.clone() } - /// dafny/DynamoDbItemEncryptor/src/Util.dfy(46,3) + /// dafny/DynamoDbItemEncryptor/src/Util.dfy(58,3) pub fn GetLiteralValue(x: &Sequence) -> Arc, Sequence>> { let mut valueOrError0: Arc, Sequence>> = crate::implementation_from_dafny::UTF8::_default::Decode(x); if valueOrError0.IsFailure() { @@ -99764,7 +100279,7 @@ pub mod _DynamoDbItemEncryptorUtil_Compile { } } } - /// dafny/DynamoDbItemEncryptor/src/Util.dfy(59,3) + /// dafny/DynamoDbItemEncryptor/src/Util.dfy(71,3) pub fn GetSortKey(context: &Map) -> Arc>, Sequence>> { if context.keys().contains(&_default::SORT_NAME()) { let mut sortName: Sequence = crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::EC_ATTR_PREFIX().concat(&context.get(&_default::SORT_NAME())); @@ -99787,7 +100302,7 @@ pub mod _DynamoDbItemEncryptorUtil_Compile { /// = specification/dynamodb-encryption-client/ddb-encryption-branch-key-id-supplier.md#behavior /// = type=implication /// # - If the partition name does not exist in the encryption context, this operation MUST fail. - /// dafny/DynamoDbItemEncryptor/src/Util.dfy(69,3) + /// dafny/DynamoDbItemEncryptor/src/Util.dfy(81,3) pub fn ConvertContextForSelector(context: &Map) -> Arc, Arc>, Sequence>> { let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(context.keys().contains(&_default::PARTITION_NAME()), &string_utf16_of("Invalid encryption context: Missing partition name")); if valueOrError0.IsFailure() { @@ -99815,7 +100330,7 @@ pub mod _DynamoDbItemEncryptorUtil_Compile { valueOrError4.PropagateFailure::, Arc>>() } else { let mut legend: Sequence = valueOrError4.Extract(); - let mut valueOrError5: Arc, Arc>, Sequence>> = _default::GetV2AttrMap(&keys, context, &legend, &map![]); + let mut valueOrError5: Arc, Arc>, Sequence>> = _default::GetV2AttrMap(&keys, context, &legend, 0, 0, &map![]); if valueOrError5.IsFailure() { valueOrError5.PropagateFailure::, Arc>>() } else { @@ -99885,7 +100400,7 @@ pub mod _DynamoDbItemEncryptorUtil_Compile { } } } - /// dafny/DynamoDbItemEncryptor/src/Util.dfy(159,3) + /// dafny/DynamoDbItemEncryptor/src/Util.dfy(171,3) pub fn GetAttrValue(ecValue: &ValidUTF8Bytes, legend: &DafnyCharUTF16) -> Arc, Sequence>> { if legend.clone() == crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::LEGEND_STRING() { let mut valueOrError0: Arc, Sequence>> = crate::implementation_from_dafny::UTF8::_default::Decode(ecValue); @@ -99930,7 +100445,9 @@ pub mod _DynamoDbItemEncryptorUtil_Compile { valueOrError3.PropagateFailure::>() } else { let mut terminal: Arc = valueOrError3.Extract(); - let mut valueOrError4: Arc, Sequence>> = crate::implementation_from_dafny::_DynamoToStruct_Compile::_default::BytesToAttr(terminal.value(), terminal.typeId(), false, &int!(1)); + let mut valueOrError4: Arc, Sequence>> = crate::implementation_from_dafny::_DynamoToStruct_Compile::_default::BytesToAttr(terminal.value(), terminal.typeId(), &Arc::new(Option::::Some { + value: truncate!(terminal.value().cardinality(), u64) + }), 1, 0); if valueOrError4.IsFailure() { valueOrError4.PropagateFailure::>() } else { @@ -99949,19 +100466,23 @@ pub mod _DynamoDbItemEncryptorUtil_Compile { } } } - /// dafny/DynamoDbItemEncryptor/src/Util.dfy(179,3) - pub fn GetV2AttrMap(keys: &Sequence, context: &Map, legend: &Sequence, attrMap: &Map, Arc>) -> Arc, Arc>, Sequence>> { + /// dafny/DynamoDbItemEncryptor/src/Util.dfy(192,3) + pub fn GetV2AttrMap(keys: &Sequence, context: &Map, legend: &Sequence, keyPos: u64, legendPos: u64, attrMap: &Map, Arc>) -> Arc, Arc>, Sequence>> { let mut _r0 = keys.clone(); let mut _r1 = context.clone(); let mut _r2 = legend.clone(); - let mut _r3 = attrMap.clone(); + let mut _r3 = keyPos; + let mut _r4 = legendPos; + let mut _r5 = attrMap.clone(); 'TAIL_CALL_START: loop { let keys = _r0; let context = _r1; let legend = _r2; - let attrMap = _r3; - if keys.cardinality() == int!(0) { - if legend.cardinality() == int!(0) { + let keyPos = _r3; + let legendPos = _r4; + let attrMap = _r5; + if truncate!(keys.cardinality(), u64) == keyPos { + if truncate!(legend.cardinality(), u64) == legendPos { return Arc::new(Result::, Arc>, Sequence>::Success { value: attrMap.clone() }); @@ -99971,9 +100492,9 @@ pub mod _DynamoDbItemEncryptorUtil_Compile { }); } } else { - let mut key: ValidUTF8Bytes = keys.get(&int!(0)); + let mut key: ValidUTF8Bytes = keys.get(&int!((&keyPos).clone())); if crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::EC_ATTR_PREFIX() < key.clone() { - let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(int!(0) < legend.cardinality(), &string_utf16_of("Encryption Context Legend is too short.")); + let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(legendPos < truncate!(legend.cardinality(), u64), &string_utf16_of("Encryption Context Legend is too short.")); if valueOrError0.IsFailure() { return valueOrError0.PropagateFailure::, Arc>>(); } else { @@ -99982,38 +100503,46 @@ pub mod _DynamoDbItemEncryptorUtil_Compile { return valueOrError1.PropagateFailure::, Arc>>(); } else { let mut attrName: Sequence = valueOrError1.Extract(); - let mut valueOrError2: Arc, Sequence>> = _default::GetAttrValue(&context.get(&key), &legend.get(&int!(0))); + let mut valueOrError2: Arc, Sequence>> = _default::GetAttrValue(&context.get(&key), &legend.get(&int!((&legendPos).clone()))); if valueOrError2.IsFailure() { return valueOrError2.PropagateFailure::, Arc>>(); } else { let mut attrValue: Arc = valueOrError2.Extract(); - let mut _in0: Sequence = keys.drop(&int!(1)); + let mut _in0: Sequence = keys.clone(); let mut _in1: Map = context.clone(); - let mut _in2: Sequence = legend.drop(&int!(1)); - let mut _in3: Map, Arc> = attrMap.update_index(&attrName, &attrValue); + let mut _in2: Sequence = legend.clone(); + let mut _in3: u64 = keyPos + 1; + let mut _in4: u64 = legendPos + 1; + let mut _in5: Map, Arc> = attrMap.update_index(&attrName, &attrValue); _r0 = _in0.clone(); _r1 = _in1.clone(); _r2 = _in2.clone(); - _r3 = _in3.clone(); + _r3 = _in3; + _r4 = _in4; + _r5 = _in5.clone(); continue 'TAIL_CALL_START; } } } } else { - let mut _in4: Sequence = keys.drop(&int!(1)); - let mut _in5: Map = context.clone(); - let mut _in6: Sequence = legend.clone(); - let mut _in7: Map, Arc> = attrMap.clone(); - _r0 = _in4.clone(); - _r1 = _in5.clone(); - _r2 = _in6.clone(); - _r3 = _in7.clone(); + let mut _in6: Sequence = keys.clone(); + let mut _in7: Map = context.clone(); + let mut _in8: Sequence = legend.clone(); + let mut _in9: u64 = keyPos + 1; + let mut _in10: u64 = legendPos; + let mut _in11: Map, Arc> = attrMap.clone(); + _r0 = _in6.clone(); + _r1 = _in7.clone(); + _r2 = _in8.clone(); + _r3 = _in9; + _r4 = _in10; + _r5 = _in11.clone(); continue 'TAIL_CALL_START; } } } } - /// dafny/DynamoDbItemEncryptor/src/Util.dfy(204,3) + /// dafny/DynamoDbItemEncryptor/src/Util.dfy(224,3) pub fn GetAttributeName(ddbAttrKey: &ValidUTF8Bytes) -> Arc, Sequence>> { let mut ddbAttrNameBytes: Sequence = ddbAttrKey.drop(&crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::EC_ATTR_PREFIX().cardinality()); let mut valueOrError0: Arc, Sequence>> = crate::implementation_from_dafny::UTF8::_default::Decode(&ddbAttrNameBytes); @@ -100031,7 +100560,7 @@ pub mod _DynamoDbItemEncryptorUtil_Compile { } } } - /// dafny/DynamoDbItemEncryptor/src/Util.dfy(215,3) + /// dafny/DynamoDbItemEncryptor/src/Util.dfy(235,3) pub fn AddAttributeToMap(ddbAttrKey: &ValidUTF8Bytes, encodedAttrValue: &ValidUTF8Bytes, attrMap: &Map, Arc>) -> Arc, Arc>, Sequence>> { let mut valueOrError0: Arc, Sequence>> = _default::GetAttributeName(ddbAttrKey); if valueOrError0.IsFailure() { @@ -100043,7 +100572,9 @@ pub mod _DynamoDbItemEncryptorUtil_Compile { valueOrError1.PropagateFailure::, Arc>>() } else { let mut terminal: Arc = valueOrError1.Extract(); - let mut valueOrError2: Arc, Sequence>> = crate::implementation_from_dafny::_DynamoToStruct_Compile::_default::BytesToAttr(terminal.value(), terminal.typeId(), false, &int!(1)); + let mut valueOrError2: Arc, Sequence>> = crate::implementation_from_dafny::_DynamoToStruct_Compile::_default::BytesToAttr(terminal.value(), terminal.typeId(), &Arc::new(Option::::Some { + value: truncate!(terminal.value().cardinality(), u64) + }), 1, 0); if valueOrError2.IsFailure() { valueOrError2.PropagateFailure::, Arc>>() } else { @@ -100055,46 +100586,45 @@ pub mod _DynamoDbItemEncryptorUtil_Compile { } } } - /// dafny/DynamoDbItemEncryptor/src/Util.dfy(18,3) + /// dafny/DynamoDbItemEncryptor/src/Util.dfy(20,3) pub fn ReservedPrefix() -> Sequence { string_utf16_of("aws_dbe_") } - /// dafny/DynamoDbItemEncryptor/src/Util.dfy(19,3) + /// dafny/DynamoDbItemEncryptor/src/Util.dfy(21,3) pub fn BeaconPrefix() -> Sequence { _default::ReservedPrefix().concat(&string_utf16_of("b_")) } - /// dafny/DynamoDbItemEncryptor/src/Util.dfy(20,3) + /// dafny/DynamoDbItemEncryptor/src/Util.dfy(22,3) pub fn VersionPrefix() -> Sequence { _default::ReservedPrefix().concat(&string_utf16_of("v_")) } - /// dafny/DynamoDbItemEncryptor/src/Util.dfy(40,3) + /// dafny/DynamoDbItemEncryptor/src/Util.dfy(49,3) pub fn SORT_NAME() -> ValidUTF8Bytes { - crate::implementation_from_dafny::UTF8::_default::EncodeAscii(&string_utf16_of("aws-crypto-sort-name")) + let mut s: Sequence = seq![97, 119, 115, 45, 99, 114, 121, 112, 116, 111, 45, 115, 111, 114, 116, 45, 110, 97, 109, 101]; + s.clone() } - /// dafny/DynamoDbItemEncryptor/src/Util.dfy(39,3) + /// dafny/DynamoDbItemEncryptor/src/Util.dfy(44,3) pub fn PARTITION_NAME() -> ValidUTF8Bytes { - crate::implementation_from_dafny::UTF8::_default::EncodeAscii(&string_utf16_of("aws-crypto-partition-name")) + let mut s: Sequence = seq![97, 119, 115, 45, 99, 114, 121, 112, 116, 111, 45, 112, 97, 114, 116, 105, 116, 105, 111, 110, 45, 110, 97, 109, 101]; + s.clone() } - /// dafny/DynamoDbItemEncryptor/src/Util.dfy(38,3) + /// dafny/DynamoDbItemEncryptor/src/Util.dfy(39,3) pub fn TABLE_NAME() -> ValidUTF8Bytes { - crate::implementation_from_dafny::UTF8::_default::EncodeAscii(&string_utf16_of("aws-crypto-table-name")) + let mut s: Sequence = seq![97, 119, 115, 45, 99, 114, 121, 112, 116, 111, 45, 116, 97, 98, 108, 101, 45, 110, 97, 109, 101]; + s.clone() } - /// dafny/DynamoDbItemEncryptor/src/Util.dfy(42,3) + /// dafny/DynamoDbItemEncryptor/src/Util.dfy(54,3) pub fn SELECTOR_TABLE_NAME() -> Sequence { string_utf16_of("aws_dbe_table_name") } - /// dafny/DynamoDbItemEncryptor/src/Util.dfy(43,3) + /// dafny/DynamoDbItemEncryptor/src/Util.dfy(55,3) pub fn SELECTOR_PARTITION_NAME() -> Sequence { string_utf16_of("aws_dbe_partition_name") } - /// dafny/DynamoDbItemEncryptor/src/Util.dfy(44,3) + /// dafny/DynamoDbItemEncryptor/src/Util.dfy(56,3) pub fn SELECTOR_SORT_NAME() -> Sequence { string_utf16_of("aws_dbe_sort_name") } - /// dafny/DynamoDbItemEncryptor/src/Util.dfy(21,3) - pub fn MAX_ATTRIBUTE_COUNT() -> DafnyInt { - int!(100) - } } } /// dafny/DynamoDbEncryptionTransforms/src/DynamoDbMiddlewareSupport.dfy(12,1) @@ -100105,7 +100635,7 @@ pub mod _DynamoDbMiddlewareSupport_Compile { pub use crate::implementation_from_dafny::_Wrappers_Compile::Option; pub use ::dafny_runtime::Map; pub use crate::implementation_from_dafny::_Wrappers_Compile::Option::None; - pub use ::dafny_runtime::int; + pub use ::dafny_runtime::truncate; pub use ::dafny_runtime::Sequence; pub use crate::implementation_from_dafny::_DdbMiddlewareConfig_Compile::ValidTableConfig; pub use ::dafny_runtime::DafnyCharUTF16; @@ -100120,6 +100650,7 @@ pub mod _DynamoDbMiddlewareSupport_Compile { pub use crate::implementation_from_dafny::_Wrappers_Compile::Outcome; pub use ::dafny_runtime::string_utf16_of; pub use crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::EncryptedDataKey; + pub use ::dafny_runtime::int; pub use crate::implementation_from_dafny::software::amazon::cryptography::services::dynamodb::internaldafny::types::QueryInput; pub use crate::implementation_from_dafny::software::amazon::cryptography::services::dynamodb::internaldafny::types::QueryOutput; pub use crate::implementation_from_dafny::software::amazon::cryptography::services::dynamodb::internaldafny::types::ScanInput; @@ -100128,31 +100659,37 @@ pub mod _DynamoDbMiddlewareSupport_Compile { pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::internaldafny::types::VersionNumber; pub use ::dafny_runtime::MaybePlacebo; pub use crate::implementation_from_dafny::UTF8::ValidUTF8Bytes; + pub use ::dafny_runtime::seq; pub struct _default {} impl _default { - /// dafny/DynamoDbEncryptionTransforms/src/DynamoDbMiddlewareSupport.dfy(27,3) + /// dafny/DynamoDbEncryptionTransforms/src/DynamoDbMiddlewareSupport.dfy(28,3) pub fn NoMap<_X: DafnyTypeEq, _Y: DafnyType>(m: &Arc>>) -> bool { - matches!(m.as_ref(), None{ .. }) || m.value().cardinality() == int!(0) + matches!(m.as_ref(), None{ .. }) || truncate!(m.value().cardinality(), u64) == 0 } - /// dafny/DynamoDbEncryptionTransforms/src/DynamoDbMiddlewareSupport.dfy(32,3) + /// dafny/DynamoDbEncryptionTransforms/src/DynamoDbMiddlewareSupport.dfy(34,3) pub fn NoList<_X: DafnyType>(m: &Arc>>) -> bool { - matches!(m.as_ref(), None{ .. }) || m.value().cardinality() == int!(0) + matches!(m.as_ref(), None{ .. }) || truncate!(m.value().cardinality(), u64) == 0 } - /// dafny/DynamoDbEncryptionTransforms/src/DynamoDbMiddlewareSupport.dfy(39,3) + /// dafny/DynamoDbEncryptionTransforms/src/DynamoDbMiddlewareSupport.dfy(42,3) pub fn IsWriteable(config: &ValidTableConfig, item: &Map, Arc>) -> Arc>> { - crate::implementation_from_dafny::_DynamoDBSupport_Compile::_default::IsWriteable(item).MapFailure::>(&({ - Arc::new(move |e: &Sequence| -> Arc{ - crate::implementation_from_dafny::_DdbMiddlewareConfig_Compile::_default::E(e) - }) - })) + let mut ret: Arc>>; + let mut is_writable: Arc>>; + let mut _out0: Arc>> = crate::implementation_from_dafny::_DynamoDBSupport_Compile::_default::IsWriteable(item); + is_writable = _out0.clone(); + ret = is_writable.MapFailure::>(&({ + Arc::new(move |e: &Sequence| -> Arc{ + crate::implementation_from_dafny::_DdbMiddlewareConfig_Compile::_default::E(e) + }) + })); + return ret.clone(); } - /// dafny/DynamoDbEncryptionTransforms/src/DynamoDbMiddlewareSupport.dfy(47,3) + /// dafny/DynamoDbEncryptionTransforms/src/DynamoDbMiddlewareSupport.dfy(50,3) pub fn IsSigned(config: &ValidTableConfig, attr: &Sequence) -> bool { crate::implementation_from_dafny::_DynamoDBSupport_Compile::_default::IsSigned(rd!(config.itemEncryptor().clone()).config().clone().attributeActionsOnEncrypt(), attr) } - /// dafny/DynamoDbEncryptionTransforms/src/DynamoDbMiddlewareSupport.dfy(58,3) + /// dafny/DynamoDbEncryptionTransforms/src/DynamoDbMiddlewareSupport.dfy(61,3) pub fn TestConditionExpression(config: &ValidTableConfig, expr: &Arc>>, attrNames: &Arc, Sequence>>>, attrValues: &Arc, Arc>>>) -> Arc>> { crate::implementation_from_dafny::_DynamoDBSupport_Compile::_default::TestConditionExpression(rd!(config.itemEncryptor().clone()).config().clone().attributeActionsOnEncrypt(), expr, attrNames, attrValues).MapFailure::>(&({ Arc::new(move |e: &Sequence| -> Arc{ @@ -100160,7 +100697,7 @@ pub mod _DynamoDbMiddlewareSupport_Compile { }) })) } - /// dafny/DynamoDbEncryptionTransforms/src/DynamoDbMiddlewareSupport.dfy(73,3) + /// dafny/DynamoDbEncryptionTransforms/src/DynamoDbMiddlewareSupport.dfy(76,3) pub fn TestUpdateExpression(config: &ValidTableConfig, expr: &Arc>>, attrNames: &Arc, Sequence>>>, attrValues: &Arc, Arc>>>) -> Arc>> { crate::implementation_from_dafny::_DynamoDBSupport_Compile::_default::TestUpdateExpression(rd!(config.itemEncryptor().clone()).config().clone().attributeActionsOnEncrypt(), expr, attrNames, attrValues).MapFailure::>(&({ Arc::new(move |e: &Sequence| -> Arc{ @@ -100168,7 +100705,7 @@ pub mod _DynamoDbMiddlewareSupport_Compile { }) })) } - /// dafny/DynamoDbEncryptionTransforms/src/DynamoDbMiddlewareSupport.dfy(87,3) + /// dafny/DynamoDbEncryptionTransforms/src/DynamoDbMiddlewareSupport.dfy(90,3) pub fn AddSignedBeacons(config: &ValidTableConfig, item: &Map, Arc>) -> Arc, Arc>, Arc>> { let mut output: Arc, Arc>, Arc>>; let mut ret: Arc, Arc>, Arc>>; @@ -100183,7 +100720,7 @@ pub mod _DynamoDbMiddlewareSupport_Compile { })); return output.clone(); } - /// dafny/DynamoDbEncryptionTransforms/src/DynamoDbMiddlewareSupport.dfy(100,3) + /// dafny/DynamoDbEncryptionTransforms/src/DynamoDbMiddlewareSupport.dfy(103,3) pub fn GetEncryptedBeacons(config: &ValidTableConfig, item: &Map, Arc>, keyId: &Arc) -> Arc, Arc>, Arc>> { let mut output: Arc, Arc>, Arc>>; let mut ret: Arc, Arc>, Arc>>; @@ -100198,7 +100735,7 @@ pub mod _DynamoDbMiddlewareSupport_Compile { })); return output.clone(); } - /// dafny/DynamoDbEncryptionTransforms/src/DynamoDbMiddlewareSupport.dfy(111,3) + /// dafny/DynamoDbEncryptionTransforms/src/DynamoDbMiddlewareSupport.dfy(114,3) pub fn GetBeaconKeyId(config: &ValidTableConfig, keyExpr: &Arc>>, filterExpr: &Arc>>, values: &Arc, Arc>>>, names: &Arc, Sequence>>>) -> Arc, Arc>> { crate::implementation_from_dafny::_DynamoDBSupport_Compile::_default::GetBeaconKeyId(config.search(), keyExpr, filterExpr, values, names).MapFailure::>(&({ Arc::new(move |e: &Arc| -> Arc{ @@ -100208,7 +100745,7 @@ pub mod _DynamoDbMiddlewareSupport_Compile { }) })) } - /// dafny/DynamoDbEncryptionTransforms/src/DynamoDbMiddlewareSupport.dfy(127,3) + /// dafny/DynamoDbEncryptionTransforms/src/DynamoDbMiddlewareSupport.dfy(133,3) pub fn GetKeyIdFromHeader(config: &ValidTableConfig, output: &Arc) -> Arc>>, Arc>> { if matches!(config.search().as_ref(), Some{ .. }) && matches!(SearchInfo::curr(config.search().value()).keySource().keyLoc().as_ref(), MultiLoc{ .. }) { let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(matches!(output.parsedHeader().as_ref(), Some{ .. }), &crate::implementation_from_dafny::_DdbMiddlewareConfig_Compile::_default::E(&string_utf16_of("In multi-tenant mode, the parsed header is required."))); @@ -100216,15 +100753,15 @@ pub mod _DynamoDbMiddlewareSupport_Compile { valueOrError0.PropagateFailure::>>>() } else { let mut keys: Sequence> = output.parsedHeader().value().encryptedDataKeys().clone(); - let mut valueOrError1: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(keys.cardinality() == int!(1), &crate::implementation_from_dafny::_DdbMiddlewareConfig_Compile::_default::E(&string_utf16_of("Encrypt header has more than one Encrypted Data Key"))); + let mut valueOrError1: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(truncate!(keys.cardinality(), u64) == 1, &crate::implementation_from_dafny::_DdbMiddlewareConfig_Compile::_default::E(&string_utf16_of("Encrypt header has more than one Encrypted Data Key"))); if valueOrError1.IsFailure() { valueOrError1.PropagateFailure::>>>() } else { - let mut valueOrError2: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(keys.get(&int!(0)).keyProviderId().clone() == _default::HierarchicalKeyringId(), &crate::implementation_from_dafny::_DdbMiddlewareConfig_Compile::_default::E(&string_utf16_of("In multi-tenant mode, keyProviderId must be aws-kms-hierarchy"))); + let mut valueOrError2: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(keys.get(&int!((&truncate!((&int!(0)).clone(), u32)).clone())).keyProviderId().clone() == _default::HierarchicalKeyringId(), &crate::implementation_from_dafny::_DdbMiddlewareConfig_Compile::_default::E(&string_utf16_of("In multi-tenant mode, keyProviderId must be aws-kms-hierarchy"))); if valueOrError2.IsFailure() { valueOrError2.PropagateFailure::>>>() } else { - let mut valueOrError3: Arc, Arc>> = crate::implementation_from_dafny::UTF8::_default::Decode(keys.get(&int!(0)).keyProviderInfo()).MapFailure::>(&({ + let mut valueOrError3: Arc, Arc>> = crate::implementation_from_dafny::UTF8::_default::Decode(keys.get(&int!((&truncate!((&int!(0)).clone(), u32)).clone())).keyProviderInfo()).MapFailure::>(&({ Arc::new(move |e: &Sequence| -> Arc{ crate::implementation_from_dafny::_DdbMiddlewareConfig_Compile::_default::E(e) }) @@ -100248,7 +100785,7 @@ pub mod _DynamoDbMiddlewareSupport_Compile { }) } } - /// dafny/DynamoDbEncryptionTransforms/src/DynamoDbMiddlewareSupport.dfy(173,3) + /// dafny/DynamoDbEncryptionTransforms/src/DynamoDbMiddlewareSupport.dfy(180,3) pub fn RemoveBeacons(config: &ValidTableConfig, item: &Map, Arc>) -> Arc, Arc>, Arc>> { crate::implementation_from_dafny::_DynamoDBSupport_Compile::_default::RemoveBeacons(config.search(), item).MapFailure::>(&({ Arc::new(move |e: &Sequence| -> Arc{ @@ -100256,7 +100793,7 @@ pub mod _DynamoDbMiddlewareSupport_Compile { }) })) } - /// dafny/DynamoDbEncryptionTransforms/src/DynamoDbMiddlewareSupport.dfy(181,3) + /// dafny/DynamoDbEncryptionTransforms/src/DynamoDbMiddlewareSupport.dfy(188,3) pub fn QueryInputForBeacons(config: &ValidTableConfig, req: &Arc) -> Arc, Arc>> { let mut output: Arc, Arc>>; let mut ret: Arc, Arc>>; @@ -100271,7 +100808,7 @@ pub mod _DynamoDbMiddlewareSupport_Compile { })); return output.clone(); } - /// dafny/DynamoDbEncryptionTransforms/src/DynamoDbMiddlewareSupport.dfy(192,3) + /// dafny/DynamoDbEncryptionTransforms/src/DynamoDbMiddlewareSupport.dfy(199,3) pub fn QueryOutputForBeacons(config: &ValidTableConfig, req: &Arc, resp: &Arc) -> Arc, Arc>> { let mut output: Arc, Arc>>; let mut ret: Arc, Arc>>; @@ -100286,7 +100823,7 @@ pub mod _DynamoDbMiddlewareSupport_Compile { })); return output.clone(); } - /// dafny/DynamoDbEncryptionTransforms/src/DynamoDbMiddlewareSupport.dfy(205,3) + /// dafny/DynamoDbEncryptionTransforms/src/DynamoDbMiddlewareSupport.dfy(212,3) pub fn ScanInputForBeacons(config: &ValidTableConfig, req: &Arc) -> Arc, Arc>> { let mut output: Arc, Arc>>; let mut ret: Arc, Arc>>; @@ -100301,7 +100838,7 @@ pub mod _DynamoDbMiddlewareSupport_Compile { })); return output.clone(); } - /// dafny/DynamoDbEncryptionTransforms/src/DynamoDbMiddlewareSupport.dfy(216,3) + /// dafny/DynamoDbEncryptionTransforms/src/DynamoDbMiddlewareSupport.dfy(223,3) pub fn ScanOutputForBeacons(config: &ValidTableConfig, req: &Arc, resp: &Arc) -> Arc, Arc>> { let mut output: Arc, Arc>>; let mut ret: Arc, Arc>>; @@ -100316,7 +100853,7 @@ pub mod _DynamoDbMiddlewareSupport_Compile { })); return output.clone(); } - /// dafny/DynamoDbEncryptionTransforms/src/DynamoDbMiddlewareSupport.dfy(228,3) + /// dafny/DynamoDbEncryptionTransforms/src/DynamoDbMiddlewareSupport.dfy(235,3) pub fn GetVirtualFields(search: &ValidSearchInfo, item: &Map, Arc>, version: &Arc>) -> Arc, Sequence>, Arc>> { let mut output = MaybePlacebo::, Sequence>, Arc>>>::new(); if matches!(version.as_ref(), Some{ .. }) && version.value().clone() != 1 { @@ -100337,7 +100874,7 @@ pub mod _DynamoDbMiddlewareSupport_Compile { }))); return output.read(); } - /// dafny/DynamoDbEncryptionTransforms/src/DynamoDbMiddlewareSupport.dfy(238,3) + /// dafny/DynamoDbEncryptionTransforms/src/DynamoDbMiddlewareSupport.dfy(245,3) pub fn GetCompoundBeacons(search: &ValidSearchInfo, item: &Map, Arc>, version: &Arc>) -> Arc, Sequence>, Arc>> { let mut output = MaybePlacebo::, Sequence>, Arc>>>::new(); if matches!(version.as_ref(), Some{ .. }) && version.value().clone() != 1 { @@ -100358,9 +100895,10 @@ pub mod _DynamoDbMiddlewareSupport_Compile { }))); return output.read(); } - /// dafny/DynamoDbEncryptionTransforms/src/DynamoDbMiddlewareSupport.dfy(124,3) + /// dafny/DynamoDbEncryptionTransforms/src/DynamoDbMiddlewareSupport.dfy(127,3) pub fn HierarchicalKeyringId() -> ValidUTF8Bytes { - crate::implementation_from_dafny::UTF8::_default::EncodeAscii(&string_utf16_of("aws-kms-hierarchy")) + let mut s: Sequence = seq![97, 119, 115, 45, 107, 109, 115, 45, 104, 105, 101, 114, 97, 114, 99, 104, 121]; + s.clone() } } } @@ -100997,6 +101535,7 @@ pub mod _DynamoToStruct_Compile { pub use ::dafny_runtime::DafnyCharUTF16; pub use ::std::sync::Arc; pub use crate::implementation_from_dafny::software::amazon::cryptography::services::dynamodb::internaldafny::types::AttributeValue; + pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::structuredencryption::internaldafny::types::CryptoAction; pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::structuredencryption::internaldafny::types::StructuredDataTerminal; pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::internaldafny::types::Error; pub use ::dafny_runtime::MapBuilder; @@ -101005,10 +101544,11 @@ pub mod _DynamoToStruct_Compile { pub use ::std::marker::Sync; pub use ::std::marker::Send; pub use ::dafny_runtime::string_utf16_of; + pub use ::dafny_runtime::truncate; pub use ::dafny_runtime::DafnyType; pub use crate::implementation_from_dafny::_Wrappers_Compile::Result::Success; - pub use ::dafny_runtime::int; pub use crate::implementation_from_dafny::_Wrappers_Compile::Outcome; + pub use crate::implementation_from_dafny::_Wrappers_Compile::Option; pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::structuredencryption::internaldafny::types::TerminalTypeId; pub use crate::implementation_from_dafny::software::amazon::cryptography::services::dynamodb::internaldafny::types::AttributeValue::S; pub use crate::implementation_from_dafny::software::amazon::cryptography::services::dynamodb::internaldafny::types::AttributeValue::N; @@ -101019,14 +101559,16 @@ pub mod _DynamoToStruct_Compile { pub use crate::implementation_from_dafny::software::amazon::cryptography::services::dynamodb::internaldafny::types::AttributeValue::M; pub use crate::implementation_from_dafny::software::amazon::cryptography::services::dynamodb::internaldafny::types::AttributeValue::L; pub use crate::implementation_from_dafny::software::amazon::cryptography::services::dynamodb::internaldafny::types::AttributeValue::NULL; - pub use ::dafny_runtime::_System::nat; pub use ::dafny_runtime::seq; - pub use ::dafny_runtime::truncate; + pub use ::dafny_runtime::int; pub use crate::implementation_from_dafny::UTF8::ValidUTF8Bytes; + pub use ::dafny_runtime::MaybePlacebo; + pub use ::dafny_runtime::integer_range; + pub use ::std::convert::Into; + pub use crate::implementation_from_dafny::_Wrappers_Compile::Result::Failure; pub use ::dafny_runtime::DafnyTypeEq; - pub use ::dafny_runtime::DafnyInt; + pub use crate::implementation_from_dafny::_Wrappers_Compile::Option::None; pub use ::dafny_runtime::map; - pub use crate::implementation_from_dafny::_Wrappers_Compile::Result::Failure; pub use ::std::fmt::Debug; pub use ::std::fmt::Formatter; pub use ::dafny_runtime::DafnyPrint; @@ -101039,11 +101581,127 @@ pub mod _DynamoToStruct_Compile { pub struct _default {} impl _default { + /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(35,3) + pub fn ItemToStructured2(item: &Map, Arc>, actions: &Map, Arc>) -> Arc, Arc>, Arc>> { + let mut structuredMap: Map, Arc, Sequence>>> = (&({ + let mut item = item.clone(); + let mut actions = actions.clone(); + Arc::new(move || -> Map, Arc, Sequence>>>{ + let mut _coll0: MapBuilder, Arc, Sequence>>> = MapBuilder::, Arc, Sequence>>>::new(); + for __compr_0 in (&item).keys().iter().cloned() { + let mut k: Sequence = __compr_0.clone(); + if { + let x: Sequence = k.clone(); + crate::implementation_from_dafny::software::amazon::cryptography::services::dynamodb::internaldafny::types::_default::IsValid_AttributeName(&x) + } { + if item.contains(&k) && (!actions.contains(&k) || actions.get(&k) != Arc::new(CryptoAction::DO_NOTHING {}) || crate::implementation_from_dafny::_DynamoDbEncryptionUtil_Compile::_default::ReservedPrefix() <= k.clone()) { + _coll0.add(&k, &_default::AttrToStructured(&item.get(&k))) + } + } + } + _coll0.build() + }) + }))(); + _default::MapError::, Arc>>(&_default::SimplifyMapValue::, Arc>(&structuredMap)) + } + /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(48,3) + pub fn StructuredToItemEncrypt(s: &Map, Arc>, orig: &Map, Arc>, actions: &Map, Arc>) -> Arc, Arc>, Arc>> { + let mut ddbMap: Map, Arc, Sequence>>> = (&({ + let mut s = s.clone(); + let mut orig = orig.clone(); + let mut actions = actions.clone(); + Arc::new(move || -> Map, Arc, Sequence>>>{ + let mut _coll0: MapBuilder, Arc, Sequence>>> = MapBuilder::, Arc, Sequence>>>::new(); + for __compr_0 in (&orig).keys().iter().cloned() { + let mut k: Sequence = __compr_0.clone(); + if { + let x: Sequence = k.clone(); + crate::implementation_from_dafny::software::amazon::cryptography::services::dynamodb::internaldafny::types::_default::IsValid_AttributeName(&x) + } { + if orig.contains(&k) { + _coll0.add(&k, &(if s.contains(&k) && actions.contains(&k) && actions.get(&k) == Arc::new(CryptoAction::ENCRYPT_AND_SIGN {}) { + _default::StructuredToAttr(&s.get(&k)) + } else { + Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::, Sequence>::Success { + value: orig.get(&k) + }) + })) + } + } + } + _coll0.build() + }) + }))(); + let mut valueOrError0: Arc, Arc>, Arc>> = _default::MapError::, Arc>>(&_default::SimplifyMapValue::, Arc>(&ddbMap)); + if valueOrError0.IsFailure() { + valueOrError0.PropagateFailure::, Arc>>() + } else { + let mut oldMap: Map, Arc> = valueOrError0.Extract(); + let mut ddbMap2: Map, Arc, Sequence>>> = (&({ + let mut s = s.clone(); + let mut orig = orig.clone(); + Arc::new(move || -> Map, Arc, Sequence>>>{ + let mut _coll1: MapBuilder, Arc, Sequence>>> = MapBuilder::, Arc, Sequence>>>::new(); + for __compr_1 in (&s).keys().iter().cloned() { + let mut k: Sequence = __compr_1.clone(); + if { + let x: Sequence = k.clone(); + crate::implementation_from_dafny::software::amazon::cryptography::services::dynamodb::internaldafny::types::_default::IsValid_AttributeName(&x) + } { + if s.contains(&k) && !orig.contains(&k) { + _coll1.add(&k, &_default::StructuredToAttr(&s.get(&k))) + } + } + } + _coll1.build() + }) + }))(); + let mut valueOrError1: Arc, Arc>, Arc>> = _default::MapError::, Arc>>(&_default::SimplifyMapValue::, Arc>(&ddbMap2)); + if valueOrError1.IsFailure() { + valueOrError1.PropagateFailure::, Arc>>() + } else { + let mut newMap: Map, Arc> = valueOrError1.Extract(); + Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::, Arc>, Arc>::Success { + value: oldMap.merge(&newMap) + }) + } + } + } + /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(64,3) + pub fn StructuredToItemDecrypt(s: &Map, Arc>, orig: &Map, Arc>, actions: &Map, Arc>) -> Arc, Arc>, Arc>> { + let mut ddbMap: Map, Arc, Sequence>>> = (&({ + let mut s = s.clone(); + let mut orig = orig.clone(); + let mut actions = actions.clone(); + Arc::new(move || -> Map, Arc, Sequence>>>{ + let mut _coll0: MapBuilder, Arc, Sequence>>> = MapBuilder::, Arc, Sequence>>>::new(); + for __compr_0 in (&orig).keys().iter().cloned() { + let mut k: Sequence = __compr_0.clone(); + if { + let x: Sequence = k.clone(); + crate::implementation_from_dafny::software::amazon::cryptography::services::dynamodb::internaldafny::types::_default::IsValid_AttributeName(&x) + } { + if orig.contains(&k) && !(crate::implementation_from_dafny::_DynamoDbEncryptionUtil_Compile::_default::ReservedPrefix() <= k.clone()) { + _coll0.add(&k, &(if s.contains(&k) && actions.contains(&k) && actions.get(&k) == Arc::new(CryptoAction::ENCRYPT_AND_SIGN {}) { + _default::StructuredToAttr(&s.get(&k)) + } else { + Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::, Sequence>::Success { + value: orig.get(&k) + }) + })) + } + } + } + _coll0.build() + }) + }))(); + _default::MapError::, Arc>>(&_default::SimplifyMapValue::, Arc>(&ddbMap)) + } /// = specification/dynamodb-encryption-client/ddb-item-conversion.md#convert-ddb-item-to-structured-data /// = type=implication /// # - MUST contain a [Structured Data Terminal](../structured-encryption/structures.md#structured-data-terminal) /// # for each attribute on the DynamoDB Item, and no others. - /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(30,3) + /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(72,3) pub fn ItemToStructured(item: &Map, Arc>) -> Arc, Arc>, Arc>> { let mut structuredMap: Map, Arc, Sequence>>> = (&({ let mut item = item.clone(); @@ -101069,13 +101727,13 @@ pub mod _DynamoToStruct_Compile { /// = type=implication /// # - MUST contain an Attribute for every [Structured Data Terminal](../structured-encryption/structures.md#structured-data-terminal) /// # on the Structured Data, and not other Attributes. - /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(59,3) + /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(101,3) pub fn StructuredToItem(s: &Map, Arc>) -> Arc, Arc>, Arc>> { - if (&s.keys()).iter().all(({ + if s.keys().iter().all(({ let mut s = s.clone(); Arc::new(move |__forall_var_0: &Sequence| -> bool{ let mut k: Sequence = __forall_var_0.clone(); - !s.keys().contains(&k) || crate::implementation_from_dafny::software::amazon::cryptography::services::dynamodb::internaldafny::types::_default::IsValid_AttributeName(&k) + !s.contains(&k) || crate::implementation_from_dafny::software::amazon::cryptography::services::dynamodb::internaldafny::types::_default::IsValid_AttributeName(&k) }) }).as_ref()) { let mut structuredData: Map, Arc, Sequence>>> = (&({ @@ -101111,12 +101769,36 @@ pub mod _DynamoToStruct_Compile { _coll1.build() }) }))(); - let mut orderedAttrNames: Sequence> = crate::implementation_from_dafny::_StandardLibrary_Compile::_default::SetToOrderedSequence::(&badNames, &(Arc::new(move |x0: &DafnyCharUTF16,x1: &DafnyCharUTF16| _default::CharLess(x0, x1)) as Arc _ + Sync + Send>)); + let mut orderedAttrNames: Sequence> = crate::implementation_from_dafny::SortedSets::_default::SetToOrderedSequence2::(&badNames, &(Arc::new(move |x0: &DafnyCharUTF16,x1: &DafnyCharUTF16| _default::CharLess(x0, x1)) as Arc _ + Sync + Send>)); let mut attrNameList: Sequence = crate::implementation_from_dafny::_StandardLibrary_Compile::_default::Join::(&orderedAttrNames, &string_utf16_of(",")); _default::MakeError::, Arc>>(&string_utf16_of("Not valid attribute names : ").concat(&attrNameList)) } } - /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(125,3) + /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(134,3) + pub fn BigEndianPosToU32(x: &Sequence, pos: u64) -> Arc>> { + if truncate!(x.cardinality(), u64) < crate::implementation_from_dafny::_StandardLibrary_Compile::_MemoryMath_Compile::_default::Add(pos, _default::LENGTH_LEN64()) { + Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::>::Failure { + error: string_utf16_of("Length of 4-byte integer was less than 4") + }) + } else { + Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::>::Success { + value: crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default::SeqPosToUInt32(x, pos) + }) + } + } + /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(143,3) + pub fn BigEndianPosToU32As64(x: &Sequence, pos: u64) -> Arc>> { + if truncate!(x.cardinality(), u64) < crate::implementation_from_dafny::_StandardLibrary_Compile::_MemoryMath_Compile::_default::Add(pos, _default::LENGTH_LEN64()) { + Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::>::Failure { + error: string_utf16_of("Length of 4-byte integer was less than 4") + }) + } else { + Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::>::Success { + value: crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default::SeqPosToUInt32(x, pos) as u64 + }) + } + } + /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(152,3) pub fn MakeError<_T: DafnyType>(s: &Sequence) -> Arc>> { Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::<_T, Arc>::Failure { error: Arc::new(Error::DynamoDbEncryptionException { @@ -101124,7 +101806,7 @@ pub mod _DynamoToStruct_Compile { }) }) } - /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(129,3) + /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(156,3) pub fn MapError<_T: DafnyType>(r: &Arc>>) -> Arc>> { if matches!(r.as_ref(), Success{ .. }) { Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::<_T, Arc>::Success { @@ -101139,11 +101821,11 @@ pub mod _DynamoToStruct_Compile { /// and the Length is not needed since we are /// working with the exact set of bytes when we /// need to deserialize. - /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(136,3) + /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(163,3) pub fn TopLevelAttributeToBytes(a: &Arc) -> Arc, Sequence>> { - _default::AttrToBytes(a, false, &int!(1)) + _default::AttrToBytes(a, false, 1) } - /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(146,3) + /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(173,3) pub fn AttrToStructured(item: &Arc) -> Arc, Sequence>> { let mut valueOrError0: Arc, Sequence>> = _default::TopLevelAttributeToBytes(item); if valueOrError0.IsFailure() { @@ -101158,20 +101840,23 @@ pub mod _DynamoToStruct_Compile { }) } } - /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(156,3) + /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(183,3) pub fn StructuredToAttr(s: &Arc) -> Arc, Sequence>> { - let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(s.typeId().cardinality() == int!(2), &string_utf16_of("Type ID must be two bytes")); + let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(truncate!(s.typeId().cardinality(), u64) == _default::TYPEID_LEN64(), &string_utf16_of("Type ID must be two bytes")); if valueOrError0.IsFailure() { valueOrError0.PropagateFailure::>() } else { - let mut valueOrError1: Arc, Sequence>> = _default::BytesToAttr(s.value(), s.typeId(), false, &int!(1)); + let mut valueOrError1: Arc, Sequence>> = _default::BytesToAttr(s.value(), s.typeId(), &Arc::new(Option::::Some { + value: truncate!(s.value().cardinality(), u64) + }), 1, 0); if valueOrError1.IsFailure() { valueOrError1.PropagateFailure::>() } else { let mut attrValueAndLength: Arc = valueOrError1.Extract(); - let mut valueOrError2: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(attrValueAndLength.len().clone() == s.value().cardinality(), &string_utf16_of("Mismatch between length of encoded data and length of data")); - if valueOrError2.IsFailure() { - valueOrError2.PropagateFailure::>() + if attrValueAndLength.len().clone() != truncate!(s.value().cardinality(), u64) { + Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::, Sequence>::Failure { + error: string_utf16_of("Mismatch between length of encoded data and length of data") + }) } else { Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::, Sequence>::Success { value: attrValueAndLength.val().clone() @@ -101180,7 +101865,7 @@ pub mod _DynamoToStruct_Compile { } } } - /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(169,3) + /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(205,3) pub fn AttrToTypeId(a: &Arc) -> TerminalTypeId { let mut _source0: Arc = a.clone(); if matches!((&_source0).as_ref(), S{ .. }) { @@ -101241,13 +101926,13 @@ pub mod _DynamoToStruct_Compile { } } } - /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(185,3) + /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(221,3) pub fn CharLess(x: &DafnyCharUTF16, y: &DafnyCharUTF16) -> bool { x.clone() < y.clone() } - /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(191,3) - pub fn AttrToBytes(a: &Arc, prefix: bool, depth: &nat) -> Arc, Sequence>> { - let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(depth.clone() <= crate::implementation_from_dafny::_DynamoDbEncryptionUtil_Compile::_default::MAX_STRUCTURE_DEPTH(), &string_utf16_of("Depth of attribute structure to serialize exceeds limit of ").concat(&crate::implementation_from_dafny::_DynamoDbEncryptionUtil_Compile::_default::MAX_STRUCTURE_DEPTH_STR())); + /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(227,3) + pub fn AttrToBytes(a: &Arc, prefix: bool, depth: u64) -> Arc, Sequence>> { + let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(depth <= crate::implementation_from_dafny::_DynamoDbEncryptionUtil_Compile::_default::MAX_STRUCTURE_DEPTH(), &string_utf16_of("Depth of attribute structure to serialize exceeds limit of ").concat(&crate::implementation_from_dafny::_DynamoDbEncryptionUtil_Compile::_default::MAX_STRUCTURE_DEPTH_STR())); if valueOrError0.IsFailure() { valueOrError0.PropagateFailure::>() } else { @@ -101295,12 +101980,12 @@ pub mod _DynamoToStruct_Compile { if matches!(_source0.as_ref(), M{ .. }) { let mut ___mcc_h6: Map, Arc> = _source0.M().clone(); let mut m: Map, Arc> = ___mcc_h6.clone(); - _default::MapAttrToBytes(&m, &depth) + _default::MapAttrToBytes(&m, depth) } else { if matches!(_source0.as_ref(), L{ .. }) { let mut ___mcc_h7: Sequence> = _source0.L().clone(); let mut l: Sequence> = ___mcc_h7.clone(); - _default::ListAttrToBytes(&l, &depth) + _default::ListAttrToBytes(&l, depth) } else { if matches!(_source0.as_ref(), NULL{ .. }) { let mut ___mcc_h8: bool = _source0.NULL().clone(); @@ -101330,7 +102015,7 @@ pub mod _DynamoToStruct_Compile { } else { let mut baseBytes: Sequence = valueOrError1.Extract(); if prefix { - let mut valueOrError3: Arc, Sequence>> = _default::U32ToBigEndian(&baseBytes.cardinality()); + let mut valueOrError3: Arc, Sequence>> = _default::U32ToBigEndian64(truncate!(baseBytes.cardinality(), u64)); if valueOrError3.IsFailure() { valueOrError3.PropagateFailure::>() } else { @@ -101347,20 +102032,20 @@ pub mod _DynamoToStruct_Compile { } } } - /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(418,3) + /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(458,3) pub fn StringSetAttrToBytes(ss: &Sequence>) -> Arc, Sequence>> { let mut asSet: Set> = crate::implementation_from_dafny::_Seq_Compile::_default::ToSet::>(ss); - let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(asSet.cardinality() == ss.cardinality(), &string_utf16_of("String Set had duplicate values")); + let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(truncate!(asSet.cardinality(), u64) == truncate!(ss.cardinality(), u64), &string_utf16_of("String Set had duplicate values")); if valueOrError0.IsFailure() { valueOrError0.PropagateFailure::>() } else { let mut sortedList: Sequence> = crate::implementation_from_dafny::SortedSets::_default::SetToOrderedSequence2::(&asSet, &(Arc::new(move |x0: &DafnyCharUTF16,x1: &DafnyCharUTF16| _default::CharLess(x0, x1)) as Arc _ + Sync + Send>)); - let mut valueOrError1: Arc, Sequence>> = _default::U32ToBigEndian(&sortedList.cardinality()); + let mut valueOrError1: Arc, Sequence>> = _default::U32ToBigEndian64(truncate!(sortedList.cardinality(), u64)); if valueOrError1.IsFailure() { valueOrError1.PropagateFailure::>() } else { let mut count: Sequence = valueOrError1.Extract(); - let mut valueOrError2: Arc, Sequence>> = _default::CollectString(&sortedList, &(seq![] as Sequence)); + let mut valueOrError2: Arc, Sequence>> = _default::CollectString(&sortedList, 0, &(seq![] as Sequence)); if valueOrError2.IsFailure() { valueOrError2.PropagateFailure::>() } else { @@ -101372,34 +102057,34 @@ pub mod _DynamoToStruct_Compile { } } } - /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(433,3) + /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(475,3) pub fn NumberSetAttrToBytes(ns: &Sequence>) -> Arc, Sequence>> { let mut asSet: Set> = crate::implementation_from_dafny::_Seq_Compile::_default::ToSet::>(ns); - let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(asSet.cardinality() == ns.cardinality(), &string_utf16_of("Number Set had duplicate values")); + let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(truncate!(asSet.cardinality(), u64) == truncate!(ns.cardinality(), u64), &string_utf16_of("Number Set had duplicate values")); if valueOrError0.IsFailure() { valueOrError0.PropagateFailure::>() } else { - let mut valueOrError1: Arc>, Sequence>> = crate::implementation_from_dafny::_Seq_Compile::_default::MapWithResult::, Sequence, Sequence>(&({ + let mut valueOrError1: Arc>, Sequence>> = crate::implementation_from_dafny::_StandardLibrary_Compile::_Sequence_Compile::_default::MapWithResult::, Sequence, Sequence>(&({ Arc::new(move |n: &Sequence| -> Arc, Sequence>>{ crate::implementation_from_dafny::_DynamoDbNormalizeNumber_Compile::_default::NormalizeNumber(n) }) - }), ns); + }), ns, 0, &(seq![] as Sequence>)); if valueOrError1.IsFailure() { valueOrError1.PropagateFailure::>() } else { let mut normList: Sequence> = valueOrError1.Extract(); let mut asSet: Set> = crate::implementation_from_dafny::_Seq_Compile::_default::ToSet::>(&normList); - let mut valueOrError2: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(asSet.cardinality() == normList.cardinality(), &string_utf16_of("Number Set had duplicate values after normalization.")); + let mut valueOrError2: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(truncate!(asSet.cardinality(), u64) == truncate!(normList.cardinality(), u64), &string_utf16_of("Number Set had duplicate values after normalization.")); if valueOrError2.IsFailure() { valueOrError2.PropagateFailure::>() } else { let mut sortedList: Sequence> = crate::implementation_from_dafny::SortedSets::_default::SetToOrderedSequence2::(&asSet, &(Arc::new(move |x0: &DafnyCharUTF16,x1: &DafnyCharUTF16| _default::CharLess(x0, x1)) as Arc _ + Sync + Send>)); - let mut valueOrError3: Arc, Sequence>> = _default::U32ToBigEndian(&sortedList.cardinality()); + let mut valueOrError3: Arc, Sequence>> = _default::U32ToBigEndian64(truncate!(sortedList.cardinality(), u64)); if valueOrError3.IsFailure() { valueOrError3.PropagateFailure::>() } else { let mut count: Sequence = valueOrError3.Extract(); - let mut valueOrError4: Arc, Sequence>> = _default::CollectString(&sortedList, &(seq![] as Sequence)); + let mut valueOrError4: Arc, Sequence>> = _default::CollectString(&sortedList, 0, &(seq![] as Sequence)); if valueOrError4.IsFailure() { valueOrError4.PropagateFailure::>() } else { @@ -101413,20 +102098,20 @@ pub mod _DynamoToStruct_Compile { } } } - /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(455,3) + /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(501,3) pub fn BinarySetAttrToBytes(bs: &Sequence>) -> Arc, Sequence>> { let mut asSet: Set> = crate::implementation_from_dafny::_Seq_Compile::_default::ToSet::>(bs); - let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(asSet.cardinality() == bs.cardinality(), &string_utf16_of("Binary Set had duplicate values")); + let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(truncate!(asSet.cardinality(), u64) == truncate!(bs.cardinality(), u64), &string_utf16_of("Binary Set had duplicate values")); if valueOrError0.IsFailure() { valueOrError0.PropagateFailure::>() } else { let mut sortedList: Sequence> = crate::implementation_from_dafny::SortedSets::_default::SetToOrderedSequence2::(&asSet, &(Arc::new(move |x0: &u8,x1: &u8| crate::implementation_from_dafny::_DynamoDbEncryptionUtil_Compile::_default::ByteLess(x0.clone(), x1.clone())) as Arc _ + Sync + Send>)); - let mut valueOrError1: Arc, Sequence>> = _default::U32ToBigEndian(&sortedList.cardinality()); + let mut valueOrError1: Arc, Sequence>> = _default::U32ToBigEndian64(truncate!(sortedList.cardinality(), u64)); if valueOrError1.IsFailure() { valueOrError1.PropagateFailure::>() } else { let mut count: Sequence = valueOrError1.Extract(); - let mut valueOrError2: Arc, Sequence>> = _default::CollectBinary(&sortedList, &(seq![] as Sequence)); + let mut valueOrError2: Arc, Sequence>> = _default::CollectBinary(&sortedList, 0, &(seq![] as Sequence)); if valueOrError2.IsFailure() { valueOrError2.PropagateFailure::>() } else { @@ -101438,23 +102123,28 @@ pub mod _DynamoToStruct_Compile { } } } - /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(474,3) - pub fn MapAttrToBytes(m: &Map, Arc>, depth: &nat) -> Arc, Sequence>> { + /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(527,3) + pub fn MapAttrToBytes(m: &Map, Arc>, depth: u64) -> Arc, Sequence>> { let mut bytesResults: Map, Arc, Sequence>>> = (&({ let mut m = m.clone(); let mut depth = depth.clone(); Arc::new(move || -> Map, Arc, Sequence>>>{ let mut _coll0: MapBuilder, Arc, Sequence>>> = MapBuilder::, Arc, Sequence>>>::new(); - for __compr_0 in (&m.items()).iter().cloned() { - let mut kv: (Sequence, Arc) = __compr_0.clone(); - if m.items().contains(&kv) { - _coll0.add(&kv.0.clone(), &_default::AttrToBytes(&kv.1.clone(), true, &(depth.clone() + int!(1)))) + for __compr_0 in (&m).keys().iter().cloned() { + let mut k: Sequence = __compr_0.clone(); + if { + let x: Sequence = k.clone(); + crate::implementation_from_dafny::software::amazon::cryptography::services::dynamodb::internaldafny::types::_default::IsValid_AttributeName(&x) + } { + if m.contains(&k) { + _coll0.add(&k, &_default::AttrToBytes(&m.get(&k), true, depth + 1)) + } } } _coll0.build() }) }))(); - let mut valueOrError0: Arc, Sequence>> = _default::U32ToBigEndian(&m.cardinality()); + let mut valueOrError0: Arc, Sequence>> = _default::U32ToBigEndian64(truncate!(m.cardinality(), u64)); if valueOrError0.IsFailure() { valueOrError0.PropagateFailure::>() } else { @@ -101476,9 +102166,9 @@ pub mod _DynamoToStruct_Compile { } } } - /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(497,3) - pub fn ListAttrToBytes(l: &Sequence>, depth: &nat) -> Arc, Sequence>> { - let mut valueOrError0: Arc, Sequence>> = _default::U32ToBigEndian(&l.cardinality()); + /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(553,3) + pub fn ListAttrToBytes(l: &Sequence>, depth: u64) -> Arc, Sequence>> { + let mut valueOrError0: Arc, Sequence>> = _default::U32ToBigEndian64(truncate!(l.cardinality(), u64)); if valueOrError0.IsFailure() { valueOrError0.PropagateFailure::>() } else { @@ -101494,40 +102184,52 @@ pub mod _DynamoToStruct_Compile { } } } - /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(526,3) - pub fn U32ToBigEndian(x: &nat) -> Arc, Sequence>> { - if int!(b"4294967295") < x.clone() { + /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(595,3) + pub fn U32ToBigEndian64(x: u64) -> Arc, Sequence>> { + if 4294967295 < x { Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::, Sequence>::Failure { error: string_utf16_of("Length was too big") }) } else { Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::, Sequence>::Success { - value: crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default::UInt32ToSeq(truncate!(x.clone(), u32)) + value: crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default::UInt32ToSeq(x as u32) }) } } - /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(535,3) - pub fn BigEndianToU32(x: &Sequence) -> Arc>> { - if x.cardinality() < _default::LENGTH_LEN() { - Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::>::Failure { + /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(614,3) + pub fn BigEndianToU32As32(x: &Sequence) -> Arc>> { + if truncate!(x.cardinality(), u64) < _default::LENGTH_LEN64() { + Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::>::Failure { error: string_utf16_of("Length of 4-byte integer was less than 4") }) } else { - Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::>::Success { - value: int!(crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default::SeqToUInt32(&x.take(&_default::LENGTH_LEN()))) + Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::>::Success { + value: crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default::SeqToUInt32(&x.take(&int!((&_default::LENGTH_LEN64()).clone()))) + }) + } + } + /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(625,3) + pub fn BigEndianToU32As64(x: &Sequence) -> Arc>> { + if truncate!(x.cardinality(), u64) < _default::LENGTH_LEN64() { + Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::>::Failure { + error: string_utf16_of("Length of 4-byte integer was less than 4") + }) + } else { + Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::>::Success { + value: crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default::SeqToUInt32(&x.take(&int!((&_default::LENGTH_LEN64()).clone()))) as u64 }) } } /// The Duvet implications set-entries and set-entry-length mentioned in SerializeBinaryValue /// are also implied here for String Sets and Number Sets - /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(547,3) + /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(640,3) pub fn EncodeString(s: &Sequence) -> Arc, Sequence>> { let mut valueOrError0: Arc>> = crate::implementation_from_dafny::UTF8::_default::Encode(s); if valueOrError0.IsFailure() { valueOrError0.PropagateFailure::>() } else { let mut val: ValidUTF8Bytes = valueOrError0.Extract(); - let mut valueOrError1: Arc, Sequence>> = _default::U32ToBigEndian(&val.cardinality()); + let mut valueOrError1: Arc, Sequence>> = _default::U32ToBigEndian64(truncate!(val.cardinality(), u64)); if valueOrError1.IsFailure() { valueOrError1.PropagateFailure::>() } else { @@ -101538,27 +102240,31 @@ pub mod _DynamoToStruct_Compile { } } } - /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(562,3) - pub fn CollectString(setToSerialize: &Sequence>, serialized: &Sequence) -> Arc, Sequence>> { + /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(656,3) + pub fn CollectString(setToSerialize: &Sequence>, pos: u64, serialized: &Sequence) -> Arc, Sequence>> { let mut _r0 = setToSerialize.clone(); - let mut _r1 = serialized.clone(); + let mut _r1 = pos; + let mut _r2 = serialized.clone(); 'TAIL_CALL_START: loop { let setToSerialize = _r0; - let serialized = _r1; - if setToSerialize.cardinality() == int!(0) { + let pos = _r1; + let serialized = _r2; + if truncate!(setToSerialize.cardinality(), u64) == pos { return Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::, Sequence>::Success { value: serialized.clone() }); } else { - let mut valueOrError0: Arc, Sequence>> = _default::EncodeString(&setToSerialize.get(&int!(0))); + let mut valueOrError0: Arc, Sequence>> = _default::EncodeString(&setToSerialize.get(&int!((&pos).clone()))); if valueOrError0.IsFailure() { return valueOrError0.PropagateFailure::>(); } else { let mut entry: Sequence = valueOrError0.Extract(); - let mut _in0: Sequence> = setToSerialize.drop(&int!(1)); - let mut _in1: Sequence = serialized.concat(&entry); + let mut _in0: Sequence> = setToSerialize.clone(); + let mut _in1: u64 = pos + 1; + let mut _in2: Sequence = serialized.concat(&entry); _r0 = _in0.clone(); - _r1 = _in1.clone(); + _r1 = _in1; + _r2 = _in2.clone(); continue 'TAIL_CALL_START; } } @@ -101572,9 +102278,9 @@ pub mod _DynamoToStruct_Compile { /// # | ---------------- | ------------------------------------ | /// # | Set Entry Length | 4 | /// # | Set Entry Value | Variable. Equal to Set Entry Length. | - /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(575,3) + /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(673,3) pub fn SerializeBinaryValue(b: &Sequence) -> Arc, Sequence>> { - let mut valueOrError0: Arc, Sequence>> = _default::U32ToBigEndian(&b.cardinality()); + let mut valueOrError0: Arc, Sequence>> = _default::U32ToBigEndian64(truncate!(b.cardinality(), u64)); if valueOrError0.IsFailure() { valueOrError0.PropagateFailure::>() } else { @@ -101584,47 +102290,55 @@ pub mod _DynamoToStruct_Compile { }) } } - /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(599,3) - pub fn CollectBinary(setToSerialize: &Sequence>, serialized: &Sequence) -> Arc, Sequence>> { + /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(698,3) + pub fn CollectBinary(setToSerialize: &Sequence>, pos: u64, serialized: &Sequence) -> Arc, Sequence>> { let mut _r0 = setToSerialize.clone(); - let mut _r1 = serialized.clone(); + let mut _r1 = pos; + let mut _r2 = serialized.clone(); 'TAIL_CALL_START: loop { let setToSerialize = _r0; - let serialized = _r1; - if setToSerialize.cardinality() == int!(0) { + let pos = _r1; + let serialized = _r2; + if truncate!(setToSerialize.cardinality(), u64) == pos { return Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::, Sequence>::Success { value: serialized.clone() }); } else { - let mut valueOrError0: Arc, Sequence>> = _default::SerializeBinaryValue(&setToSerialize.get(&int!(0))); + let mut valueOrError0: Arc, Sequence>> = _default::SerializeBinaryValue(&setToSerialize.get(&int!((&pos).clone()))); if valueOrError0.IsFailure() { return valueOrError0.PropagateFailure::>(); } else { let mut item: Sequence = valueOrError0.Extract(); - let mut _in0: Sequence> = setToSerialize.drop(&int!(1)); - let mut _in1: Sequence = serialized.concat(&item); + let mut _in0: Sequence> = setToSerialize.clone(); + let mut _in1: u64 = pos + 1; + let mut _in2: Sequence = serialized.concat(&item); _r0 = _in0.clone(); - _r1 = _in1.clone(); + _r1 = _in1; + _r2 = _in2.clone(); continue 'TAIL_CALL_START; } } } } - /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(632,3) - pub fn CollectList(listToSerialize: &Sequence>, depth: &nat, serialized: &Sequence) -> Arc, Sequence>> { - if listToSerialize.cardinality() == int!(0) { - Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::, Sequence>::Success { - value: serialized.clone() - }) - } else { - let mut valueOrError0: Arc, Sequence>> = _default::AttrToBytes(&listToSerialize.get(&int!(0)), true, &(depth.clone() + int!(1))); - if valueOrError0.IsFailure() { - valueOrError0.PropagateFailure::>() - } else { - let mut val: Sequence = valueOrError0.Extract(); - _default::CollectList(&listToSerialize.drop(&int!(1)), depth, &serialized.concat(&val)) - } + /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(758,3) + pub fn CollectList(listToSerialize: &Sequence>, depth: u64, serialized: &Sequence) -> Arc, Sequence>> { + let mut ret = MaybePlacebo::, Sequence>>>::new(); + let mut result: Sequence = serialized.clone(); + let mut _hi0: u64 = truncate!(listToSerialize.cardinality(), u64); + for i in integer_range(0, _hi0).map(Into::::into) { + let mut val: Arc, Sequence>> = _default::AttrToBytes(&listToSerialize.get(&int!((&i).clone())), true, depth + 1); + if matches!((&val).as_ref(), Failure{ .. }) { + ret = MaybePlacebo::from(Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::, Sequence>::Failure { + error: val.error().clone() + })); + return ret.read(); + }; + result = result.concat(val.value()); } + ret = MaybePlacebo::from(Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::, Sequence>::Success { + value: result.clone() + })); + return ret.read(); } /// = specification/dynamodb-encryption-client/ddb-attribute-serialization.md#key-type /// = type=implication @@ -101632,14 +102346,14 @@ pub mod _DynamoToStruct_Compile { /// = specification/dynamodb-encryption-client/ddb-attribute-serialization.md#map-key /// = type=implication /// # Map Key MUST be a [String Value](#string). - /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(648,3) + /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(790,3) pub fn SerializeMapItem(key: &Sequence, value: &Sequence) -> Arc, Sequence>> { let mut valueOrError0: Arc>> = crate::implementation_from_dafny::UTF8::_default::Encode(key); if valueOrError0.IsFailure() { valueOrError0.PropagateFailure::>() } else { let mut name: ValidUTF8Bytes = valueOrError0.Extract(); - let mut valueOrError1: Arc, Sequence>> = _default::U32ToBigEndian(&name.cardinality()); + let mut valueOrError1: Arc, Sequence>> = _default::U32ToBigEndian64(truncate!(name.cardinality(), u64)); if valueOrError1.IsFailure() { valueOrError1.PropagateFailure::>() } else { @@ -101651,42 +102365,46 @@ pub mod _DynamoToStruct_Compile { } } } - /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(696,3) + /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(839,3) pub fn CollectMap(mapToSerialize: &Map, Sequence>, serialized: &Sequence) -> Arc, Sequence>> { let mut keys: Sequence> = crate::implementation_from_dafny::SortedSets::_default::SetToOrderedSequence2::(&mapToSerialize.keys(), &(Arc::new(move |x0: &DafnyCharUTF16,x1: &DafnyCharUTF16| _default::CharLess(x0, x1)) as Arc _ + Sync + Send>)); - _default::CollectOrderedMapSubset(&keys, mapToSerialize, serialized) + _default::CollectOrderedMapSubset(&keys, mapToSerialize, 0, serialized) } - /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(711,3) - pub fn CollectOrderedMapSubset(keys: &Sequence>, mapToSerialize: &Map, Sequence>, serialized: &Sequence) -> Arc, Sequence>> { + /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(854,3) + pub fn CollectOrderedMapSubset(keys: &Sequence>, mapToSerialize: &Map, Sequence>, pos: u64, serialized: &Sequence) -> Arc, Sequence>> { let mut _r0 = keys.clone(); let mut _r1 = mapToSerialize.clone(); - let mut _r2 = serialized.clone(); + let mut _r2 = pos; + let mut _r3 = serialized.clone(); 'TAIL_CALL_START: loop { let keys = _r0; let mapToSerialize = _r1; - let serialized = _r2; - if keys.cardinality() == int!(0) { + let pos = _r2; + let serialized = _r3; + if truncate!(keys.cardinality(), u64) == pos { return Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::, Sequence>::Success { value: serialized.clone() }); } else { - let mut valueOrError0: Arc, Sequence>> = _default::SerializeMapItem(&keys.get(&int!(0)), &mapToSerialize.get(&keys.get(&int!(0)))); + let mut valueOrError0: Arc, Sequence>> = _default::SerializeMapItem(&keys.get(&int!((&pos).clone())), &mapToSerialize.get(&keys.get(&int!((&pos).clone())))); if valueOrError0.IsFailure() { return valueOrError0.PropagateFailure::>(); } else { let mut data: Sequence = valueOrError0.Extract(); - let mut _in0: Sequence> = keys.drop(&int!(1)); + let mut _in0: Sequence> = keys.clone(); let mut _in1: Map, Sequence> = mapToSerialize.clone(); - let mut _in2: Sequence = serialized.concat(&data); + let mut _in2: u64 = pos + 1; + let mut _in3: Sequence = serialized.concat(&data); _r0 = _in0.clone(); _r1 = _in1.clone(); - _r2 = _in2.clone(); + _r2 = _in2; + _r3 = _in3.clone(); continue 'TAIL_CALL_START; } } } } - /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(728,3) + /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(875,3) pub fn BoolToUint8(b: bool) -> u8 { if b { 1 @@ -101694,34 +102412,27 @@ pub mod _DynamoToStruct_Compile { 0 } } - /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(739,3) + /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(886,3) pub fn IsUnique<_T: DafnyTypeEq>(s: &Sequence<_T>) -> bool { - (&({ - let mut s = s.clone(); - Arc::new(move || -> Set<_T>{ - let mut _coll0: SetBuilder<_T> = SetBuilder::<_T>::new(); - for __compr_0 in (&s).iter() { - let mut x: _T = __compr_0.clone(); - if s.contains(&x) { - _coll0.add(&x) - } - } - _coll0.build() - }) - }))().cardinality() == s.cardinality() + let mut asSet: Set<_T> = crate::implementation_from_dafny::_Seq_Compile::_default::ToSet::<_T>(s); + if truncate!(asSet.cardinality(), u64) == truncate!(s.cardinality(), u64) { + true + } else { + false + } } - /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(745,3) - pub fn DeserializeBinarySet(serialized: &Sequence, remainingCount: &nat, origSerializedSize: &nat, resultSet: &Arc) -> Arc, Sequence>> { + /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(900,3) + pub fn DeserializeBinarySet(serialized: &Sequence, remainingCount: u64, origSerializedSize: u64, resultSet: &Arc) -> Arc, Sequence>> { let mut _r0 = serialized.clone(); - let mut _r1 = remainingCount.clone(); - let mut _r2 = origSerializedSize.clone(); + let mut _r1 = remainingCount; + let mut _r2 = origSerializedSize; let mut _r3 = resultSet.clone(); 'TAIL_CALL_START: loop { let serialized = _r0; let remainingCount = _r1; let origSerializedSize = _r2; let resultSet = _r3; - if remainingCount.clone() == int!(0) { + if remainingCount == 0 { let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(_default::IsUnique::>(resultSet.val().BS()), &string_utf16_of("Binary set values must not have duplicates")); if valueOrError0.IsFailure() { return valueOrError0.PropagateFailure::>(); @@ -101731,35 +102442,35 @@ pub mod _DynamoToStruct_Compile { }); } } else { - if serialized.cardinality() < _default::LENGTH_LEN() { + if truncate!(serialized.cardinality(), u64) < _default::LENGTH_LEN64() { return Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::, Sequence>::Failure { error: string_utf16_of("Out of bytes reading Binary Set") }); } else { - let mut valueOrError1: Arc>> = _default::BigEndianToU32(&serialized); + let mut valueOrError1: Arc>> = _default::BigEndianToU32As64(&serialized); if valueOrError1.IsFailure() { return valueOrError1.PropagateFailure::>(); } else { - let mut len: nat = valueOrError1.Extract(); - let mut serialized: Sequence = serialized.drop(&_default::LENGTH_LEN()); - if serialized.cardinality() < len.clone() { + let mut len: u64 = valueOrError1.Extract(); + let mut serialized: Sequence = serialized.drop(&int!((&_default::LENGTH_LEN64()).clone())); + if truncate!(serialized.cardinality(), u64) < len { return Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::, Sequence>::Failure { error: string_utf16_of("Binary Set Structured Data has too few bytes") }); } else { let mut nattr: Arc = Arc::new(AttributeValue::BS { - BS: resultSet.val().BS().concat(&seq![serialized.take(&len)]) + BS: resultSet.val().BS().concat(&seq![serialized.take(&int!((&len).clone()))]) }); - let mut _in0: Sequence = serialized.drop(&len); - let mut _in1: DafnyInt = remainingCount.clone() - int!(1); - let mut _in2: nat = origSerializedSize.clone(); + let mut _in0: Sequence = serialized.drop(&int!((&len).clone())); + let mut _in1: u64 = remainingCount - 1; + let mut _in2: u64 = origSerializedSize; let mut _in3: Arc = Arc::new(AttrValueAndLength::AttrValueAndLength { val: nattr.clone(), - len: resultSet.len().clone() + len.clone() + _default::LENGTH_LEN() + len: resultSet.len().clone() + len + _default::LENGTH_LEN64() }); _r0 = _in0.clone(); - _r1 = _in1.clone(); - _r2 = _in2.clone(); + _r1 = _in1; + _r2 = _in2; _r3 = _in3.clone(); continue 'TAIL_CALL_START; } @@ -101768,18 +102479,18 @@ pub mod _DynamoToStruct_Compile { } } } - /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(777,3) - pub fn DeserializeStringSet(serialized: &Sequence, remainingCount: &nat, origSerializedSize: &nat, resultSet: &Arc) -> Arc, Sequence>> { + /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(934,3) + pub fn DeserializeStringSet(serialized: &Sequence, remainingCount: u64, origSerializedSize: u64, resultSet: &Arc) -> Arc, Sequence>> { let mut _r0 = serialized.clone(); - let mut _r1 = remainingCount.clone(); - let mut _r2 = origSerializedSize.clone(); + let mut _r1 = remainingCount; + let mut _r2 = origSerializedSize; let mut _r3 = resultSet.clone(); 'TAIL_CALL_START: loop { let serialized = _r0; let remainingCount = _r1; let origSerializedSize = _r2; let resultSet = _r3; - if remainingCount.clone() == int!(0) { + if remainingCount == 0 { let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(_default::IsUnique::>(resultSet.val().SS()), &string_utf16_of("String set values must not have duplicates")); if valueOrError0.IsFailure() { return valueOrError0.PropagateFailure::>(); @@ -101789,23 +102500,23 @@ pub mod _DynamoToStruct_Compile { }); } } else { - if serialized.cardinality() < _default::LENGTH_LEN() { + if truncate!(serialized.cardinality(), u64) < _default::LENGTH_LEN64() { return Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::, Sequence>::Failure { error: string_utf16_of("Out of bytes reading String Set") }); } else { - let mut valueOrError1: Arc>> = _default::BigEndianToU32(&serialized); + let mut valueOrError1: Arc>> = _default::BigEndianToU32As64(&serialized); if valueOrError1.IsFailure() { return valueOrError1.PropagateFailure::>(); } else { - let mut len: nat = valueOrError1.Extract(); - let mut serialized: Sequence = serialized.drop(&_default::LENGTH_LEN()); - if serialized.cardinality() < len.clone() { + let mut len: u64 = valueOrError1.Extract(); + let mut serialized: Sequence = serialized.drop(&int!((&_default::LENGTH_LEN64()).clone())); + if truncate!(serialized.cardinality(), u64) < len { return Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::, Sequence>::Failure { error: string_utf16_of("String Set Structured Data has too few bytes") }); } else { - let mut valueOrError2: Arc, Sequence>> = crate::implementation_from_dafny::UTF8::_default::Decode(&serialized.take(&len)); + let mut valueOrError2: Arc, Sequence>> = crate::implementation_from_dafny::UTF8::_default::Decode(&serialized.take(&int!((&len).clone()))); if valueOrError2.IsFailure() { return valueOrError2.PropagateFailure::>(); } else { @@ -101813,16 +102524,16 @@ pub mod _DynamoToStruct_Compile { let mut nattr: Arc = Arc::new(AttributeValue::SS { SS: resultSet.val().SS().concat(&seq![nstring.clone()]) }); - let mut _in0: Sequence = serialized.drop(&len); - let mut _in1: DafnyInt = remainingCount.clone() - int!(1); - let mut _in2: nat = origSerializedSize.clone(); + let mut _in0: Sequence = serialized.drop(&int!((&len).clone())); + let mut _in1: u64 = remainingCount - 1; + let mut _in2: u64 = origSerializedSize; let mut _in3: Arc = Arc::new(AttrValueAndLength::AttrValueAndLength { val: nattr.clone(), - len: resultSet.len().clone() + len.clone() + _default::LENGTH_LEN() + len: resultSet.len().clone() + len + _default::LENGTH_LEN64() }); _r0 = _in0.clone(); - _r1 = _in1.clone(); - _r2 = _in2.clone(); + _r1 = _in1; + _r2 = _in2; _r3 = _in3.clone(); continue 'TAIL_CALL_START; } @@ -101832,18 +102543,18 @@ pub mod _DynamoToStruct_Compile { } } } - /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(810,3) - pub fn DeserializeNumberSet(serialized: &Sequence, remainingCount: &nat, origSerializedSize: &nat, resultSet: &Arc) -> Arc, Sequence>> { + /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(969,3) + pub fn DeserializeNumberSet(serialized: &Sequence, remainingCount: u64, origSerializedSize: u64, resultSet: &Arc) -> Arc, Sequence>> { let mut _r0 = serialized.clone(); - let mut _r1 = remainingCount.clone(); - let mut _r2 = origSerializedSize.clone(); + let mut _r1 = remainingCount; + let mut _r2 = origSerializedSize; let mut _r3 = resultSet.clone(); 'TAIL_CALL_START: loop { let serialized = _r0; let remainingCount = _r1; let origSerializedSize = _r2; let resultSet = _r3; - if remainingCount.clone() == int!(0) { + if remainingCount == 0 { let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(_default::IsUnique::>(resultSet.val().NS()), &string_utf16_of("Number set values must not have duplicates")); if valueOrError0.IsFailure() { return valueOrError0.PropagateFailure::>(); @@ -101853,23 +102564,23 @@ pub mod _DynamoToStruct_Compile { }); } } else { - if serialized.cardinality() < _default::LENGTH_LEN() { + if truncate!(serialized.cardinality(), u64) < _default::LENGTH_LEN64() { return Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::, Sequence>::Failure { error: string_utf16_of("Out of bytes reading String Set") }); } else { - let mut valueOrError1: Arc>> = _default::BigEndianToU32(&serialized); + let mut valueOrError1: Arc>> = _default::BigEndianToU32As64(&serialized); if valueOrError1.IsFailure() { return valueOrError1.PropagateFailure::>(); } else { - let mut len: nat = valueOrError1.Extract(); - let mut serialized: Sequence = serialized.drop(&_default::LENGTH_LEN()); - if serialized.cardinality() < len.clone() { + let mut len: u64 = valueOrError1.Extract(); + let mut serialized: Sequence = serialized.drop(&int!((&_default::LENGTH_LEN64()).clone())); + if truncate!(serialized.cardinality(), u64) < len { return Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::, Sequence>::Failure { error: string_utf16_of("Number Set Structured Data has too few bytes") }); } else { - let mut valueOrError2: Arc, Sequence>> = crate::implementation_from_dafny::UTF8::_default::Decode(&serialized.take(&len)); + let mut valueOrError2: Arc, Sequence>> = crate::implementation_from_dafny::UTF8::_default::Decode(&serialized.take(&int!((&len).clone()))); if valueOrError2.IsFailure() { return valueOrError2.PropagateFailure::>(); } else { @@ -101877,16 +102588,16 @@ pub mod _DynamoToStruct_Compile { let mut nattr: Arc = Arc::new(AttributeValue::NS { NS: resultSet.val().NS().concat(&seq![nstring.clone()]) }); - let mut _in0: Sequence = serialized.drop(&len); - let mut _in1: DafnyInt = remainingCount.clone() - int!(1); - let mut _in2: nat = origSerializedSize.clone(); + let mut _in0: Sequence = serialized.drop(&int!((&len).clone())); + let mut _in1: u64 = remainingCount - 1; + let mut _in2: u64 = origSerializedSize; let mut _in3: Arc = Arc::new(AttrValueAndLength::AttrValueAndLength { val: nattr.clone(), - len: resultSet.len().clone() + len.clone() + _default::LENGTH_LEN() + len: resultSet.len().clone() + len + _default::LENGTH_LEN64() }); _r0 = _in0.clone(); - _r1 = _in1.clone(); - _r2 = _in2.clone(); + _r1 = _in1; + _r2 = _in2; _r3 = _in3.clone(); continue 'TAIL_CALL_START; } @@ -101896,111 +102607,137 @@ pub mod _DynamoToStruct_Compile { } } } - /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(844,3) - pub fn DeserializeList(serialized: &Sequence, remainingCount: &nat, depth: &nat, resultList: &Arc) -> Arc, Sequence>> { - if remainingCount.clone() == int!(0) { - Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::, Sequence>::Success { - value: resultList.clone() + /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(1003,3) + pub fn DeserializeListEntry(serialized: &Sequence, pos: u64, depth: u64, resultList: &Arc) -> Arc, u64), Sequence>> { + let mut serialized_size: u64 = truncate!(serialized.cardinality(), u64); + if serialized_size - pos < _default::PREFIX_LEN64() { + Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::<(Arc, u64), Sequence>::Failure { + error: string_utf16_of("Out of bytes reading Type of List element") }) } else { - if serialized.cardinality() < int!(6) { - Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::, Sequence>::Failure { - error: string_utf16_of("Out of bytes reading Type of List element") - }) + let mut TerminalTypeId: Sequence = serialized.slice(&int!((&pos).clone()), &int!((&(pos + 2)).clone())); + let mut valueOrError0: Arc>> = _default::BigEndianPosToU32As64(serialized, pos + 2); + if valueOrError0.IsFailure() { + valueOrError0.PropagateFailure::<(Arc, u64)>() } else { - let mut TerminalTypeId: Sequence = serialized.slice(&int!(0), &int!(2)); - let mut serialized: Sequence = serialized.drop(&int!(2)); - let mut valueOrError0: Arc>> = _default::BigEndianToU32(&serialized); - if valueOrError0.IsFailure() { - valueOrError0.PropagateFailure::>() + let mut len: u64 = valueOrError0.Extract(); + let mut new_pos: u64 = pos + _default::PREFIX_LEN64(); + if serialized_size - new_pos < len { + Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::<(Arc, u64), Sequence>::Failure { + error: string_utf16_of("Out of bytes reading Content of List element") + }) } else { - let mut len: nat = valueOrError0.Extract(); - let mut serialized: Sequence = serialized.drop(&_default::LENGTH_LEN()); - if serialized.cardinality() < len.clone() { - Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::, Sequence>::Failure { - error: string_utf16_of("Out of bytes reading Content of List element") - }) + let mut valueOrError1: Arc, Sequence>> = _default::BytesToAttr(serialized, &TerminalTypeId, &Arc::new(Option::::Some { + value: len + }), depth + 1, new_pos); + if valueOrError1.IsFailure() { + valueOrError1.PropagateFailure::<(Arc, u64)>() } else { - let mut valueOrError1: Arc, Sequence>> = _default::BytesToAttr(&serialized.take(&len), &TerminalTypeId, false, &(depth.clone() + int!(1))); - if valueOrError1.IsFailure() { - valueOrError1.PropagateFailure::>() - } else { - let mut nval: Arc = valueOrError1.Extract(); - let mut nattr: Arc = Arc::new(AttributeValue::L { - L: resultList.val().L().concat(&seq![nval.val().clone()]) - }); - _default::DeserializeList(&serialized.drop(&len), &(remainingCount.clone() - int!(1)), depth, &Arc::new(AttrValueAndLength::AttrValueAndLength { - val: nattr.clone(), - len: resultList.len().clone() + len.clone() + int!(6) - })) - } + let mut nval: Arc = valueOrError1.Extract(); + let mut new_pos: u64 = crate::implementation_from_dafny::_StandardLibrary_Compile::_MemoryMath_Compile::_default::Add(new_pos, nval.len().clone()); + let mut nattr: Arc = Arc::new(AttributeValue::L { + L: resultList.val().L().concat(&seq![nval.val().clone()]) + }); + let mut nResultList: Arc = Arc::new(AttrValueAndLength::AttrValueAndLength { + val: nattr.clone(), + len: crate::implementation_from_dafny::_StandardLibrary_Compile::_MemoryMath_Compile::_default::Add(resultList.len().clone(), new_pos - pos) + }); + Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::<(Arc, u64), Sequence>::Success { + value: ( + nResultList.clone(), + new_pos + ) + }) } } } } } - /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(876,3) - pub fn DeserializeMap(serialized: &Sequence, remainingCount: &nat, depth: &nat, resultMap: &Arc) -> Arc, Sequence>> { - if remainingCount.clone() == int!(0) { - Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::, Sequence>::Success { - value: resultMap.clone() - }) + /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(1064,3) + pub fn DeserializeList(serialized: &Sequence, pos: u64, remainingCount: u64, depth: u64, resultList: &Arc) -> Arc, Sequence>> { + let mut ret = MaybePlacebo::, Sequence>>>::new(); + let mut npos: u64 = pos; + let mut newResultList: Arc = resultList.clone(); + let mut _hi0: u64 = remainingCount; + for i in integer_range(0, _hi0).map(Into::::into) { + let mut test: Arc, u64), Sequence>> = _default::DeserializeListEntry(serialized, npos, depth, &newResultList); + if matches!((&test).as_ref(), Failure{ .. }) { + ret = MaybePlacebo::from(Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::, Sequence>::Failure { + error: test.error().clone() + })); + return ret.read(); + }; + newResultList = test.value().0.clone(); + npos = test.value().1.clone(); + } + ret = MaybePlacebo::from(Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::, Sequence>::Success { + value: newResultList.clone() + })); + return ret.read(); + } + /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(1110,3) + pub fn DeserializeMapEntry(serialized: &Sequence, pos: u64, depth: u64, resultMap: &Arc) -> Arc, u64), Sequence>> { + let mut serialized_size: u64 = truncate!(serialized.cardinality(), u64); + let mut orig_pos: u64 = pos; + let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(_default::PREFIX_LEN64() <= serialized_size - pos, &string_utf16_of("Out of bytes reading Map Key")); + if valueOrError0.IsFailure() { + valueOrError0.PropagateFailure::<(Arc, u64)>() } else { - let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(int!(6) <= serialized.cardinality(), &string_utf16_of("Out of bytes reading Map Key")); - if valueOrError0.IsFailure() { - valueOrError0.PropagateFailure::>() + let mut TerminalTypeId_key: Sequence = serialized.slice(&int!((&pos).clone()), &int!((&(pos + _default::TYPEID_LEN64())).clone())); + let mut valueOrError1: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(TerminalTypeId_key.clone() == crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::STRING(), &string_utf16_of("Key of Map is not String")); + if valueOrError1.IsFailure() { + valueOrError1.PropagateFailure::<(Arc, u64)>() } else { - let mut TerminalTypeId_key: Sequence = serialized.slice(&int!(0), &int!(2)); - let mut valueOrError1: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(TerminalTypeId_key.clone() == crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::STRING(), &string_utf16_of("Key of Map is not String")); - if valueOrError1.IsFailure() { - valueOrError1.PropagateFailure::>() + let mut pos: u64 = pos + _default::TYPEID_LEN64(); + let mut valueOrError2: Arc>> = _default::BigEndianPosToU32As64(serialized, pos); + if valueOrError2.IsFailure() { + valueOrError2.PropagateFailure::<(Arc, u64)>() } else { - let mut serialized: Sequence = serialized.drop(&int!(2)); - let mut valueOrError2: Arc>> = _default::BigEndianToU32(&serialized); - if valueOrError2.IsFailure() { - valueOrError2.PropagateFailure::>() + let mut len: u64 = valueOrError2.Extract(); + let mut pos: u64 = pos + _default::LENGTH_LEN64(); + let mut valueOrError3: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(len <= serialized_size - pos, &string_utf16_of("Key of Map of Structured Data has too few bytes")); + if valueOrError3.IsFailure() { + valueOrError3.PropagateFailure::<(Arc, u64)>() } else { - let mut len: nat = valueOrError2.Extract(); - let mut serialized: Sequence = serialized.drop(&_default::LENGTH_LEN()); - let mut valueOrError3: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(len.clone() <= serialized.cardinality(), &string_utf16_of("Key of Map of Structured Data has too few bytes")); - if valueOrError3.IsFailure() { - valueOrError3.PropagateFailure::>() + let mut valueOrError4: Arc, Sequence>> = crate::implementation_from_dafny::UTF8::_default::Decode(&serialized.slice(&int!((&pos).clone()), &int!((&(pos + len)).clone()))); + if valueOrError4.IsFailure() { + valueOrError4.PropagateFailure::<(Arc, u64)>() } else { - let mut valueOrError4: Arc, Sequence>> = crate::implementation_from_dafny::UTF8::_default::Decode(&serialized.take(&len)); - if valueOrError4.IsFailure() { - valueOrError4.PropagateFailure::>() + let mut key: Sequence = valueOrError4.Extract(); + let mut pos: u64 = pos + len; + let mut valueOrError5: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(2 <= serialized_size - pos, &string_utf16_of("Out of bytes reading Map Value")); + if valueOrError5.IsFailure() { + valueOrError5.PropagateFailure::<(Arc, u64)>() } else { - let mut key: Sequence = valueOrError4.Extract(); - let mut serialized: Sequence = serialized.drop(&len); - let mut valueOrError5: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(int!(2) <= serialized.cardinality(), &string_utf16_of("Out of bytes reading Map Value")); - if valueOrError5.IsFailure() { - valueOrError5.PropagateFailure::>() + let mut valueOrError6: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(crate::implementation_from_dafny::software::amazon::cryptography::services::dynamodb::internaldafny::types::_default::IsValid_AttributeName(&key), &string_utf16_of("Key is not valid AttributeName")); + if valueOrError6.IsFailure() { + valueOrError6.PropagateFailure::<(Arc, u64)>() } else { - let mut valueOrError6: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(crate::implementation_from_dafny::software::amazon::cryptography::services::dynamodb::internaldafny::types::_default::IsValid_AttributeName(&key), &string_utf16_of("Key is not valid AttributeName")); - if valueOrError6.IsFailure() { - valueOrError6.PropagateFailure::>() + let mut TerminalTypeId_value: Sequence = serialized.slice(&int!((&pos).clone()), &int!((&(pos + _default::TYPEID_LEN64())).clone())); + let mut pos: u64 = pos + _default::TYPEID_LEN64(); + let mut valueOrError7: Arc, Sequence>> = _default::BytesToAttr(serialized, &TerminalTypeId_value, &Arc::new(Option::::None {}), depth + 1, pos); + if valueOrError7.IsFailure() { + valueOrError7.PropagateFailure::<(Arc, u64)>() } else { - let mut TerminalTypeId_value: Sequence = serialized.slice(&int!(0), &int!(2)); - let mut serialized: Sequence = serialized.drop(&int!(2)); - let mut valueOrError7: Arc, Sequence>> = _default::BytesToAttr(&serialized, &TerminalTypeId_value, true, &(depth.clone() + int!(1))); - if valueOrError7.IsFailure() { - valueOrError7.PropagateFailure::>() + let mut nval: Arc = valueOrError7.Extract(); + let mut pos: u64 = crate::implementation_from_dafny::_StandardLibrary_Compile::_MemoryMath_Compile::_default::Add(pos, nval.len().clone()); + let mut valueOrError8: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(!resultMap.val().M().contains(&key), &string_utf16_of("Duplicate key in map.")); + if valueOrError8.IsFailure() { + valueOrError8.PropagateFailure::<(Arc, u64)>() } else { - let mut nval: Arc = valueOrError7.Extract(); - let mut serialized: Sequence = serialized.drop(nval.len()); - let mut valueOrError8: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(!resultMap.val().M().contains(&key), &string_utf16_of("Duplicate key in map.")); - if valueOrError8.IsFailure() { - valueOrError8.PropagateFailure::>() - } else { - let mut nattr: Arc = Arc::new(AttributeValue::M { - M: resultMap.val().M().update_index(&key, nval.val()) - }); - let mut newResultMap: Arc = Arc::new(AttrValueAndLength::AttrValueAndLength { - val: nattr.clone(), - len: resultMap.len().clone() + nval.len().clone() + int!(8) + len.clone() - }); - _default::DeserializeMap(&serialized, &(remainingCount.clone() - int!(1)), depth, &newResultMap) - } + let mut nattr: Arc = Arc::new(AttributeValue::M { + M: resultMap.val().M().update_index(&key, nval.val()) + }); + let mut newResultMap: Arc = Arc::new(AttrValueAndLength::AttrValueAndLength { + val: nattr.clone(), + len: crate::implementation_from_dafny::_StandardLibrary_Compile::_MemoryMath_Compile::_default::Add(resultMap.len().clone(), pos - orig_pos) + }); + Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::<(Arc, u64), Sequence>::Success { + value: ( + newResultMap.clone(), + pos + ) + }) } } } @@ -102011,46 +102748,63 @@ pub mod _DynamoToStruct_Compile { } } } - /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(933,3) - pub fn BytesToAttr(value: &Sequence, typeId: &TerminalTypeId, hasLen: bool, depth: &nat) -> Arc, Sequence>> { - let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(depth.clone() <= crate::implementation_from_dafny::_DynamoDbEncryptionUtil_Compile::_default::MAX_STRUCTURE_DEPTH(), &string_utf16_of("Depth of attribute structure to deserialize exceeds limit of ").concat(&crate::implementation_from_dafny::_DynamoDbEncryptionUtil_Compile::_default::MAX_STRUCTURE_DEPTH_STR())); + /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(1190,3) + pub fn DeserializeMap(serialized: &Sequence, pos: u64, remainingCount: u64, depth: u64, resultMap: &Arc) -> Arc, Sequence>> { + let mut ret = MaybePlacebo::, Sequence>>>::new(); + let mut npos: u64 = pos; + let mut newResultMap: Arc = resultMap.clone(); + let mut _hi0: u64 = remainingCount; + for i in integer_range(0, _hi0).map(Into::::into) { + let mut test: Arc, u64), Sequence>> = _default::DeserializeMapEntry(serialized, npos, depth, &newResultMap); + if matches!((&test).as_ref(), Failure{ .. }) { + ret = MaybePlacebo::from(Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::, Sequence>::Failure { + error: test.error().clone() + })); + return ret.read(); + }; + newResultMap = test.value().0.clone(); + npos = test.value().1.clone(); + } + ret = MaybePlacebo::from(Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::, Sequence>::Success { + value: newResultMap.clone() + })); + return ret.read(); + } + /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(1237,3) + pub fn BytesToAttr(value: &Sequence, typeId: &TerminalTypeId, totalBytes: &Arc>, depth: u64, pos: u64) -> Arc, Sequence>> { + let mut value_size: u64 = truncate!(value.cardinality(), u64); + let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(depth <= crate::implementation_from_dafny::_DynamoDbEncryptionUtil_Compile::_default::MAX_STRUCTURE_DEPTH(), &string_utf16_of("Depth of attribute structure to deserialize exceeds limit of ").concat(&crate::implementation_from_dafny::_DynamoDbEncryptionUtil_Compile::_default::MAX_STRUCTURE_DEPTH_STR())); if valueOrError0.IsFailure() { valueOrError0.PropagateFailure::>() } else { - let mut valueOrError1: Arc>> = if hasLen { - if value.cardinality() < _default::LENGTH_LEN() { - Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::>::Failure { - error: string_utf16_of("Out of bytes reading length") - }) - } else { - _default::BigEndianToU32(value) - } + let mut valueOrError1: Arc>> = if matches!(totalBytes.as_ref(), None{ .. }) { + _default::BigEndianPosToU32As64(value, pos) } else { - Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::>::Success { - value: value.cardinality() + Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::>::Success { + value: totalBytes.value().clone() }) }; if valueOrError1.IsFailure() { valueOrError1.PropagateFailure::>() } else { - let mut len: DafnyInt = valueOrError1.Extract(); - let mut value: Sequence = if hasLen { - value.drop(&_default::LENGTH_LEN()) + let mut len: u64 = valueOrError1.Extract(); + let mut pos: u64 = if matches!(totalBytes.as_ref(), None{ .. }) { + crate::implementation_from_dafny::_StandardLibrary_Compile::_MemoryMath_Compile::_default::Add(pos, _default::LENGTH_LEN64()) } else { - value.clone() + pos }; - let mut lengthBytes: DafnyInt = if hasLen { - _default::LENGTH_LEN() + let mut lengthBytes: u64 = if matches!(totalBytes.as_ref(), None{ .. }) { + _default::LENGTH_LEN64() } else { - int!(0) + 0 }; - if value.cardinality() < len.clone() { + if value_size - pos < len { Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::, Sequence>::Failure { error: string_utf16_of("Structured Data has too few bytes") }) } else { if typeId.clone() == crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::NULL() { - if len.clone() != int!(0) { + if len != 0 { Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::, Sequence>::Failure { error: string_utf16_of("NULL type did not have length zero") }) @@ -102060,13 +102814,13 @@ pub mod _DynamoToStruct_Compile { val: Arc::new(AttributeValue::NULL { NULL: true }), - len: lengthBytes.clone() + len: lengthBytes }) }) } } else { if typeId.clone() == crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::STRING() { - let mut valueOrError2: Arc, Sequence>> = crate::implementation_from_dafny::UTF8::_default::Decode(&value.take(&len)); + let mut valueOrError2: Arc, Sequence>> = crate::implementation_from_dafny::UTF8::_default::Decode(&value.slice(&int!((&pos).clone()), &int!((&(pos + len)).clone()))); if valueOrError2.IsFailure() { valueOrError2.PropagateFailure::>() } else { @@ -102076,13 +102830,13 @@ pub mod _DynamoToStruct_Compile { val: Arc::new(AttributeValue::S { S: str.clone() }), - len: len.clone() + lengthBytes.clone() + len: len + lengthBytes }) }) } } else { if typeId.clone() == crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::NUMBER() { - let mut valueOrError3: Arc, Sequence>> = crate::implementation_from_dafny::UTF8::_default::Decode(&value.take(&len)); + let mut valueOrError3: Arc, Sequence>> = crate::implementation_from_dafny::UTF8::_default::Decode(&value.slice(&int!((&pos).clone()), &int!((&(pos + len)).clone()))); if valueOrError3.IsFailure() { valueOrError3.PropagateFailure::>() } else { @@ -102092,7 +102846,7 @@ pub mod _DynamoToStruct_Compile { val: Arc::new(AttributeValue::N { N: str.clone() }), - len: len.clone() + lengthBytes.clone() + len: len + lengthBytes }) }) } @@ -102101,35 +102855,35 @@ pub mod _DynamoToStruct_Compile { Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::, Sequence>::Success { value: Arc::new(AttrValueAndLength::AttrValueAndLength { val: Arc::new(AttributeValue::B { - B: value.take(&len) + B: value.slice(&int!((&pos).clone()), &int!((&(pos + len)).clone())) }), - len: len.clone() + lengthBytes.clone() + len: len + lengthBytes }) }) } else { if typeId.clone() == crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::BOOLEAN() { - if len.clone() != _default::BOOL_LEN() { + if len != _default::BOOL_LEN64() { Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::, Sequence>::Failure { error: string_utf16_of("Boolean Structured Data has more than one byte") }) } else { - if value.get(&int!(0)) == 0 { + if value.get(&int!((&pos).clone())) == 0 { Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::, Sequence>::Success { value: Arc::new(AttrValueAndLength::AttrValueAndLength { val: Arc::new(AttributeValue::BOOL { BOOL: false }), - len: _default::BOOL_LEN() + lengthBytes.clone() + len: _default::BOOL_LEN64() + lengthBytes }) }) } else { - if value.get(&int!(0)) == 1 { + if value.get(&int!((&pos).clone())) == 1 { Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::, Sequence>::Success { value: Arc::new(AttrValueAndLength::AttrValueAndLength { val: Arc::new(AttributeValue::BOOL { BOOL: true }), - len: _default::BOOL_LEN() + lengthBytes.clone() + len: _default::BOOL_LEN64() + lengthBytes }) }) } else { @@ -102141,107 +102895,149 @@ pub mod _DynamoToStruct_Compile { } } else { if typeId.clone() == crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::STRING_SET() { - if value.cardinality() < _default::LENGTH_LEN() { + if value_size - pos < _default::LENGTH_LEN64() { Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::, Sequence>::Failure { error: string_utf16_of("String Set Structured Data has less than LENGTH_LEN bytes") }) } else { - let mut valueOrError4: Arc>> = _default::BigEndianToU32(&value); + let mut valueOrError4: Arc>> = _default::BigEndianPosToU32As64(value, pos); if valueOrError4.IsFailure() { valueOrError4.PropagateFailure::>() } else { - let mut len: nat = valueOrError4.Extract(); - let mut value: Sequence = value.drop(&_default::LENGTH_LEN()); - _default::DeserializeStringSet(&value, &len, &(value.cardinality() + _default::LENGTH_LEN() + lengthBytes.clone()), &Arc::new(AttrValueAndLength::AttrValueAndLength { - val: Arc::new(AttributeValue::SS { - SS: seq![] as Sequence> - }), - len: _default::LENGTH_LEN() + lengthBytes.clone() - })) + let mut len: u64 = valueOrError4.Extract(); + let mut pos: u64 = pos + _default::LENGTH_LEN64(); + let mut valueOrError5: Arc, Sequence>> = _default::DeserializeStringSet(&value.drop(&int!((&pos).clone())), len, crate::implementation_from_dafny::_StandardLibrary_Compile::_MemoryMath_Compile::_default::Add3(value_size - pos, _default::LENGTH_LEN64(), lengthBytes), &Arc::new(AttrValueAndLength::AttrValueAndLength { + val: Arc::new(AttributeValue::SS { + SS: seq![] as Sequence> + }), + len: _default::LENGTH_LEN64() + lengthBytes + })); + if valueOrError5.IsFailure() { + valueOrError5.PropagateFailure::>() + } else { + let mut retval: Arc = valueOrError5.Extract(); + Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::, Sequence>::Success { + value: retval.clone() + }) + } } } } else { if typeId.clone() == crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::NUMBER_SET() { - if value.cardinality() < _default::LENGTH_LEN() { + if value_size - pos < _default::LENGTH_LEN64() { Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::, Sequence>::Failure { error: string_utf16_of("Number Set Structured Data has less than 4 bytes") }) } else { - let mut valueOrError5: Arc>> = _default::BigEndianToU32(&value); - if valueOrError5.IsFailure() { - valueOrError5.PropagateFailure::>() + let mut valueOrError6: Arc>> = _default::BigEndianPosToU32As64(value, pos); + if valueOrError6.IsFailure() { + valueOrError6.PropagateFailure::>() } else { - let mut len: nat = valueOrError5.Extract(); - let mut value: Sequence = value.drop(&_default::LENGTH_LEN()); - _default::DeserializeNumberSet(&value, &len, &(value.cardinality() + _default::LENGTH_LEN() + lengthBytes.clone()), &Arc::new(AttrValueAndLength::AttrValueAndLength { - val: Arc::new(AttributeValue::NS { - NS: seq![] as Sequence> - }), - len: _default::LENGTH_LEN() + lengthBytes.clone() - })) + let mut len: u64 = valueOrError6.Extract(); + let mut pos: u64 = pos + _default::LENGTH_LEN64(); + let mut valueOrError7: Arc, Sequence>> = _default::DeserializeNumberSet(&value.drop(&int!((&pos).clone())), len, crate::implementation_from_dafny::_StandardLibrary_Compile::_MemoryMath_Compile::_default::Add3(value_size - pos, _default::LENGTH_LEN64(), lengthBytes), &Arc::new(AttrValueAndLength::AttrValueAndLength { + val: Arc::new(AttributeValue::NS { + NS: seq![] as Sequence> + }), + len: _default::LENGTH_LEN64() + lengthBytes + })); + if valueOrError7.IsFailure() { + valueOrError7.PropagateFailure::>() + } else { + let mut retval: Arc = valueOrError7.Extract(); + Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::, Sequence>::Success { + value: retval.clone() + }) + } } } } else { if typeId.clone() == crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::BINARY_SET() { - if value.cardinality() < _default::LENGTH_LEN() { + if value_size - pos < _default::LENGTH_LEN64() { Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::, Sequence>::Failure { error: string_utf16_of("Binary Set Structured Data has less than LENGTH_LEN bytes") }) } else { - let mut valueOrError6: Arc>> = _default::BigEndianToU32(&value); - if valueOrError6.IsFailure() { - valueOrError6.PropagateFailure::>() + let mut valueOrError8: Arc>> = _default::BigEndianPosToU32As64(value, pos); + if valueOrError8.IsFailure() { + valueOrError8.PropagateFailure::>() } else { - let mut len: nat = valueOrError6.Extract(); - let mut value: Sequence = value.drop(&_default::LENGTH_LEN()); - _default::DeserializeBinarySet(&value, &len, &(value.cardinality() + _default::LENGTH_LEN() + lengthBytes.clone()), &Arc::new(AttrValueAndLength::AttrValueAndLength { - val: Arc::new(AttributeValue::BS { - BS: seq![] as Sequence> - }), - len: _default::LENGTH_LEN() + lengthBytes.clone() - })) + let mut len: u64 = valueOrError8.Extract(); + let mut pos: u64 = pos + _default::LENGTH_LEN64(); + let mut valueOrError9: Arc, Sequence>> = _default::DeserializeBinarySet(&value.drop(&int!((&pos).clone())), len, crate::implementation_from_dafny::_StandardLibrary_Compile::_MemoryMath_Compile::_default::Add3(value_size - pos, _default::LENGTH_LEN64(), lengthBytes), &Arc::new(AttrValueAndLength::AttrValueAndLength { + val: Arc::new(AttributeValue::BS { + BS: seq![] as Sequence> + }), + len: _default::LENGTH_LEN64() + lengthBytes + })); + if valueOrError9.IsFailure() { + valueOrError9.PropagateFailure::>() + } else { + let mut retval: Arc = valueOrError9.Extract(); + Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::, Sequence>::Success { + value: retval.clone() + }) + } } } } else { if typeId.clone() == crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::MAP() { - if value.cardinality() < _default::LENGTH_LEN() { + if value_size < crate::implementation_from_dafny::_StandardLibrary_Compile::_MemoryMath_Compile::_default::Add(_default::LENGTH_LEN64(), pos) { Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::, Sequence>::Failure { error: string_utf16_of("List Structured Data has less than 4 bytes") }) } else { - let mut valueOrError7: Arc>> = _default::BigEndianToU32(&value); - if valueOrError7.IsFailure() { - valueOrError7.PropagateFailure::>() + let mut valueOrError10: Arc>> = _default::BigEndianPosToU32As64(value, pos); + if valueOrError10.IsFailure() { + valueOrError10.PropagateFailure::>() } else { - let mut len: nat = valueOrError7.Extract(); - let mut value: Sequence = value.drop(&_default::LENGTH_LEN()); - _default::DeserializeMap(&value, &len, depth, &Arc::new(AttrValueAndLength::AttrValueAndLength { + let mut len: u64 = valueOrError10.Extract(); + let mut pos: u64 = pos + _default::LENGTH_LEN64(); + let mut resultMap: Arc = Arc::new(AttrValueAndLength::AttrValueAndLength { val: Arc::new(AttributeValue::M { M: map![] }), - len: _default::LENGTH_LEN() + lengthBytes.clone() - })) + len: _default::LENGTH_LEN64() + lengthBytes + }); + let mut valueOrError11: Arc, Sequence>> = _default::DeserializeMap(value, pos, len, depth, &resultMap); + if valueOrError11.IsFailure() { + valueOrError11.PropagateFailure::>() + } else { + let mut retval: Arc = valueOrError11.Extract(); + Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::, Sequence>::Success { + value: retval.clone() + }) + } } } } else { if typeId.clone() == crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::LIST() { - if value.cardinality() < _default::LENGTH_LEN() { + if value_size < crate::implementation_from_dafny::_StandardLibrary_Compile::_MemoryMath_Compile::_default::Add(_default::LENGTH_LEN64(), pos) { Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::, Sequence>::Failure { error: string_utf16_of("List Structured Data has less than 4 bytes") }) } else { - let mut valueOrError8: Arc>> = _default::BigEndianToU32(&value); - if valueOrError8.IsFailure() { - valueOrError8.PropagateFailure::>() + let mut valueOrError12: Arc>> = _default::BigEndianPosToU32As64(value, pos); + if valueOrError12.IsFailure() { + valueOrError12.PropagateFailure::>() } else { - let mut len: nat = valueOrError8.Extract(); - let mut value: Sequence = value.drop(&_default::LENGTH_LEN()); - _default::DeserializeList(&value, &len, depth, &Arc::new(AttrValueAndLength::AttrValueAndLength { + let mut len: u64 = valueOrError12.Extract(); + let mut pos: u64 = pos + _default::LENGTH_LEN64(); + let mut resultList: Arc = Arc::new(AttrValueAndLength::AttrValueAndLength { val: Arc::new(AttributeValue::L { L: seq![] as Sequence> }), - len: _default::LENGTH_LEN() + lengthBytes.clone() - })) + len: _default::LENGTH_LEN64() + lengthBytes + }); + let mut valueOrError13: Arc, Sequence>> = _default::DeserializeList(value, pos, len, depth, &resultList); + if valueOrError13.IsFailure() { + valueOrError13.PropagateFailure::>() + } else { + let mut retval: Arc = valueOrError13.Extract(); + Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::, Sequence>::Success { + value: retval.clone() + }) + } } } } else { @@ -102262,7 +103058,7 @@ pub mod _DynamoToStruct_Compile { } } } - /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(1034,3) + /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(1359,3) pub fn FlattenValueMap<_X: DafnyTypeEq, _Y: DafnyType>(m: &Map<_X, Arc>>>) -> Map<_X, _Y> { (&({ let mut m = m.clone(); @@ -102278,7 +103074,7 @@ pub mod _DynamoToStruct_Compile { }) }))() } - /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(1038,3) + /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(1363,3) pub fn FlattenErrors<_X: DafnyTypeEq, _Y: DafnyType>(m: &Map<_X, Arc>>>) -> Set> { (&({ let mut m = m.clone(); @@ -102294,7 +103090,7 @@ pub mod _DynamoToStruct_Compile { }) }))() } - /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(1077,3) + /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(1402,3) pub fn SimplifyMapValue<_X: DafnyTypeEq, _Y: DafnyType>(m: &Map<_X, Arc>>>) -> Arc, Sequence>> { if m.keys().iter().all(({ let mut m = m.clone(); @@ -102309,40 +103105,40 @@ pub mod _DynamoToStruct_Compile { }) } else { let mut badValues: Set> = _default::FlattenErrors::<_X, _Y>(m); - let mut badValueSeq: Sequence> = crate::implementation_from_dafny::_StandardLibrary_Compile::_default::SetToOrderedSequence::(&badValues, &(Arc::new(move |x0: &DafnyCharUTF16,x1: &DafnyCharUTF16| _default::CharLess(x0, x1)) as Arc _ + Sync + Send>)); + let mut badValueSeq: Sequence> = crate::implementation_from_dafny::SortedSets::_default::SetToOrderedSequence2::(&badValues, &(Arc::new(move |x0: &DafnyCharUTF16,x1: &DafnyCharUTF16| _default::CharLess(x0, x1)) as Arc _ + Sync + Send>)); Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::, Sequence>::Failure { error: crate::implementation_from_dafny::_StandardLibrary_Compile::_default::Join::(&badValueSeq, &string_utf16_of("\n")) }) } } - /// number of bytes in an encoded boolean - /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(164,3) - pub fn BOOL_LEN() -> nat { - int!(1) - } - /// number of bytes in a prefix, i.e. 2-byte type and 4-byte length - /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(167,3) - pub fn PREFIX_LEN() -> nat { - int!(6) + /// number of bytes in an encoded count or length + /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(202,3) + pub fn LENGTH_LEN64() -> u64 { + 4 } /// number of bytes in a TerminalTypeId - /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(165,3) - pub fn TYPEID_LEN() -> nat { - int!(2) + /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(201,3) + pub fn TYPEID_LEN64() -> u64 { + 2 } - /// number of bytes in an encoded count or length - /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(166,3) - pub fn LENGTH_LEN() -> nat { - int!(4) + /// number of bytes in an encoded boolean + /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(200,3) + pub fn BOOL_LEN64() -> u64 { + 1 + } + /// number of bytes in a prefix, i.e. 2-byte type and 4-byte length + /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(203,3) + pub fn PREFIX_LEN64() -> u64 { + 6 } } - /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(734,3) + /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(881,3) #[derive(PartialEq, Clone)] pub enum AttrValueAndLength { AttrValueAndLength { val: Arc, - len: nat + len: u64 } } @@ -102354,7 +103150,7 @@ pub mod _DynamoToStruct_Compile { } } /// Returns a borrow of the field len - pub fn len(&self) -> &nat { + pub fn len(&self) -> &u64 { match self { AttrValueAndLength::AttrValueAndLength{val, len, } => len, } @@ -102435,9 +103231,8 @@ pub mod _DynamoToStructTest_Compile { pub use ::dafny_runtime::map; pub use ::dafny_runtime::Map; pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::internaldafny::types::Error; - pub use ::dafny_runtime::DafnyInt; pub use ::dafny_runtime::integer_range; - pub use ::dafny_runtime::euclidian_modulo; + pub use ::std::convert::Into; pub struct _default {} @@ -103425,9 +104220,9 @@ pub mod _DynamoToStructTest_Compile { let mut value: Arc = Arc::new(AttributeValue::S { S: string_utf16_of("hello") }); - let mut _hi0: DafnyInt = crate::implementation_from_dafny::_DynamoDbEncryptionUtil_Compile::_default::MAX_STRUCTURE_DEPTH() - int!(1); - for i in integer_range(int!(0), _hi0.clone()) { - if euclidian_modulo(i.clone(), int!(2)) == int!(0) { + let mut _hi0: u64 = crate::implementation_from_dafny::_DynamoDbEncryptionUtil_Compile::_default::MAX_STRUCTURE_DEPTH() - 1; + for i in integer_range(0, _hi0).map(Into::::into) { + if i % 2 == 0 { value = Arc::new(AttributeValue::M { M: map![(string_utf16_of("key")) => (value.clone())] }); @@ -103464,9 +104259,9 @@ pub mod _DynamoToStructTest_Compile { let mut value: Arc = Arc::new(AttributeValue::S { S: string_utf16_of("hello") }); - let mut _hi0: DafnyInt = crate::implementation_from_dafny::_DynamoDbEncryptionUtil_Compile::_default::MAX_STRUCTURE_DEPTH(); - for i in integer_range(int!(0), _hi0.clone()) { - if euclidian_modulo(i.clone(), int!(2)) == int!(0) { + let mut _hi0: u64 = crate::implementation_from_dafny::_DynamoDbEncryptionUtil_Compile::_default::MAX_STRUCTURE_DEPTH(); + for i in integer_range(0, _hi0).map(Into::::into) { + if i % 2 == 0 { value = Arc::new(AttributeValue::M { M: map![(string_utf16_of("key")) => (value.clone())] }); @@ -104043,8 +104838,9 @@ pub mod _EcdhEdkWrapping_Compile { pub use ::std::convert::AsRef; pub use ::dafny_runtime::allocate_object; pub use ::dafny_runtime::update_field_uninit_object; - pub use ::dafny_runtime::DafnyInt; + pub use ::dafny_runtime::truncate; pub use ::dafny_runtime::integer_range; + pub use ::std::convert::Into; pub use ::dafny_runtime::int; pub use ::dafny_runtime::UpcastObject; pub use ::dafny_runtime::DynAny; @@ -104057,6 +104853,7 @@ pub mod _EcdhEdkWrapping_Compile { pub use crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::AlgorithmSuiteInfo; pub use ::dafny_runtime::Map; pub use crate::implementation_from_dafny::_Wrappers_Compile::Outcome; + pub use ::dafny_runtime::DafnyInt; pub use ::dafny_runtime::Zero; pub use ::std::marker::Sync; pub use ::std::marker::Send; @@ -104074,7 +104871,7 @@ pub mod _EcdhEdkWrapping_Compile { pub struct _default {} impl _default { - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/KeyWrapping/EcdhEdkWrapping.dfy(460,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/KeyWrapping/EcdhEdkWrapping.dfy(464,3) pub fn DeriveSharedKeyingMaterial(sharedSecret: &Sequence, fixedInfo: &Sequence, salt: &Sequence, crypto: &Object) -> Arc, Arc>> { let mut res = MaybePlacebo::, Arc>>>::new(); let mut maybeDerivedKeyingMaterial: Arc, Arc>>; @@ -104110,11 +104907,11 @@ pub mod _EcdhEdkWrapping_Compile { /// = aws-encryption-sdk-specification/framework/key-agreement-schemas.md#key-derivation /// = type=implication /// # The FixedInfo field MUST be serialized in the following order: - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/KeyWrapping/EcdhEdkWrapping.dfy(509,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/KeyWrapping/EcdhEdkWrapping.dfy(513,3) pub fn SerializeFixedInfo(ecdhKeyDerivationUtf8: &ValidUTF8Bytes, curveSpecUtf8: &ValidUTF8Bytes, senderPublicKey: &Sequence, recipientPublicKey: &Sequence, canonicalizedEC: &Sequence, keyringVersion: &Sequence) -> Sequence { - ecdhKeyDerivationUtf8.concat(&crate::implementation_from_dafny::_Constants_Compile::_default::ECDH_KDF_DELIMETER()).concat(curveSpecUtf8).concat(&crate::implementation_from_dafny::_Constants_Compile::_default::ECDH_KDF_DELIMETER()).concat(&crate::implementation_from_dafny::_Constants_Compile::_default::ECDH_KDF_PRF_NAME()).concat(&crate::implementation_from_dafny::_Constants_Compile::_default::ECDH_KDF_DELIMETER()).concat(senderPublicKey).concat(recipientPublicKey).concat(&crate::implementation_from_dafny::_Constants_Compile::_default::ECDH_KDF_DELIMETER()).concat(keyringVersion).concat(&crate::implementation_from_dafny::_Constants_Compile::_default::ECDH_KDF_DELIMETER()).concat(canonicalizedEC) + ecdhKeyDerivationUtf8.concat(&crate::implementation_from_dafny::_Constants_Compile::_default::ECDH_KDF_DELIMITER()).concat(curveSpecUtf8).concat(&crate::implementation_from_dafny::_Constants_Compile::_default::ECDH_KDF_DELIMITER()).concat(&crate::implementation_from_dafny::_Constants_Compile::_default::ECDH_KDF_PRF_NAME()).concat(&crate::implementation_from_dafny::_Constants_Compile::_default::ECDH_KDF_DELIMITER()).concat(senderPublicKey).concat(recipientPublicKey).concat(&crate::implementation_from_dafny::_Constants_Compile::_default::ECDH_KDF_DELIMITER()).concat(keyringVersion).concat(&crate::implementation_from_dafny::_Constants_Compile::_default::ECDH_KDF_DELIMITER()).concat(canonicalizedEC) } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/KeyWrapping/EcdhEdkWrapping.dfy(570,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/KeyWrapping/EcdhEdkWrapping.dfy(574,3) pub fn CurveSpecTypeToString(c: &Arc) -> Sequence { let mut _source0: Arc = c.clone(); if matches!((&_source0).as_ref(), ECC_NIST_P256{ .. }) { @@ -104131,7 +104928,7 @@ pub mod _EcdhEdkWrapping_Compile { } } } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/KeyWrapping/EcdhEdkWrapping.dfy(580,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/KeyWrapping/EcdhEdkWrapping.dfy(584,3) pub fn E(s: &Sequence) -> Arc { Arc::new(crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::Error::AwsCryptographicMaterialProvidersException { message: s.clone() @@ -104139,7 +104936,7 @@ pub mod _EcdhEdkWrapping_Compile { } } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/KeyWrapping/EcdhEdkWrapping.dfy(26,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/KeyWrapping/EcdhEdkWrapping.dfy(27,3) #[derive(PartialEq, Clone)] pub enum EcdhUnwrapInfo { EcdhUnwrapInfo {} @@ -104201,7 +104998,7 @@ pub mod _EcdhEdkWrapping_Compile { } } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/KeyWrapping/EcdhEdkWrapping.dfy(27,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/KeyWrapping/EcdhEdkWrapping.dfy(28,3) #[derive(PartialEq, Clone)] pub enum EcdhWrapInfo { EcdhWrapInfo {} @@ -104263,7 +105060,7 @@ pub mod _EcdhEdkWrapping_Compile { } } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/KeyWrapping/EcdhEdkWrapping.dfy(29,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/KeyWrapping/EcdhEdkWrapping.dfy(30,3) pub struct EcdhUnwrap { pub __i_senderPublicKey: Sequence, pub __i_recipientPublicKey: Sequence, @@ -104278,7 +105075,7 @@ pub mod _EcdhEdkWrapping_Compile { pub fn _allocate_object() -> Object { allocate_object::() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/KeyWrapping/EcdhEdkWrapping.dfy(39,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/KeyWrapping/EcdhEdkWrapping.dfy(40,5) pub fn _ctor(this: &Object, senderPublicKey: &Sequence, recipientPublicKey: &Sequence, sharedSecret: &Sequence, keyringVersion: &Sequence, curveSpec: &Arc, crypto: &Object) -> () { let mut _set___i_senderPublicKey: bool = false; let mut _set___i_recipientPublicKey: bool = false; @@ -104294,38 +105091,38 @@ pub mod _EcdhEdkWrapping_Compile { update_field_uninit_object!(this.clone(), __i_crypto, _set___i_crypto, crypto.clone()); return (); } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/KeyWrapping/EcdhEdkWrapping.dfy(205,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/KeyWrapping/EcdhEdkWrapping.dfy(207,5) pub fn commitmentKeyCheck(&self, calculatedCommitmentKey: &Sequence, serializedCommitmentKey: &Sequence) -> bool { let mut res: bool = ::default(); let mut _diff_q: u8 = 0 as u8; - let mut _hi0: DafnyInt = serializedCommitmentKey.cardinality(); - for i in integer_range(int!(0), _hi0.clone()) { - _diff_q = _diff_q | calculatedCommitmentKey.get(&i) as u8 ^ serializedCommitmentKey.get(&i) as u8; + let mut _hi0: u64 = truncate!(serializedCommitmentKey.cardinality(), u64); + for i in integer_range(0, _hi0).map(Into::::into) { + _diff_q = _diff_q | calculatedCommitmentKey.get(&int!((&i).clone())) as u8 ^ serializedCommitmentKey.get(&int!((&i).clone())) as u8; } res = _diff_q == 0 as u8; return res; } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/KeyWrapping/EcdhEdkWrapping.dfy(32,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/KeyWrapping/EcdhEdkWrapping.dfy(33,5) pub fn senderPublicKey(&self) -> Sequence { self.__i_senderPublicKey.clone() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/KeyWrapping/EcdhEdkWrapping.dfy(33,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/KeyWrapping/EcdhEdkWrapping.dfy(34,5) pub fn recipientPublicKey(&self) -> Sequence { self.__i_recipientPublicKey.clone() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/KeyWrapping/EcdhEdkWrapping.dfy(34,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/KeyWrapping/EcdhEdkWrapping.dfy(35,5) pub fn sharedSecret(&self) -> Sequence { self.__i_sharedSecret.clone() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/KeyWrapping/EcdhEdkWrapping.dfy(35,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/KeyWrapping/EcdhEdkWrapping.dfy(36,5) pub fn keyringVersion(&self) -> Sequence { self.__i_keyringVersion.clone() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/KeyWrapping/EcdhEdkWrapping.dfy(36,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/KeyWrapping/EcdhEdkWrapping.dfy(37,5) pub fn curveSpec(&self) -> Arc { self.__i_curveSpec.clone() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/KeyWrapping/EcdhEdkWrapping.dfy(37,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/KeyWrapping/EcdhEdkWrapping.dfy(38,5) pub fn crypto(&self) -> Object { self.__i_crypto.clone() } @@ -104354,26 +105151,26 @@ pub mod _EcdhEdkWrapping_Compile { impl Action, Arc>>, Arc>>> for EcdhUnwrap { - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/KeyWrapping/EcdhEdkWrapping.dfy(87,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/KeyWrapping/EcdhEdkWrapping.dfy(88,5) fn Invoke(&self, input: &Arc) -> Arc>>, Arc>> { let mut res = MaybePlacebo::>>, Arc>>>::new(); let mut suite: Arc = input.algorithmSuite().clone(); let mut wrappedMaterial: Sequence = input.wrappedMaterial().clone(); let mut aad: Map = input.encryptionContext().clone(); - let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(crate::implementation_from_dafny::_Constants_Compile::_default::CIPHERTEXT_WRAPPED_MATERIAL_INDEX() < wrappedMaterial.cardinality(), &_default::E(&string_utf16_of("Recieved ciphertext is shorter than expected."))); + let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(crate::implementation_from_dafny::_Constants_Compile::_default::CIPHERTEXT_WRAPPED_MATERIAL_INDEX() < truncate!(wrappedMaterial.cardinality(), u64), &_default::E(&string_utf16_of("Received ciphertext is shorter than expected."))); if valueOrError0.IsFailure() { res = MaybePlacebo::from(valueOrError0.PropagateFailure::>>>()); return res.read(); }; - let mut KeyLength: DafnyInt = int!(crate::implementation_from_dafny::_AlgorithmSuites_Compile::_default::GetEncryptKeyLength(&suite)); - let mut valueOrError1: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(crate::implementation_from_dafny::_Constants_Compile::_default::ECDH_WRAPPED_KEY_MATERIAL_INDEX() + KeyLength.clone() < wrappedMaterial.cardinality(), &Arc::new(crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::Error::AwsCryptographicMaterialProvidersException { - message: string_utf16_of("Received EDK Ciphertext of incorrect length.") + let mut KeyLength: i32 = crate::implementation_from_dafny::_AlgorithmSuites_Compile::_default::GetEncryptKeyLength(&suite); + let mut valueOrError1: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(int!(crate::implementation_from_dafny::_Constants_Compile::_default::ECDH_WRAPPED_KEY_MATERIAL_INDEX()) + int!(KeyLength) < wrappedMaterial.cardinality(), &Arc::new(crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::Error::AwsCryptographicMaterialProvidersException { + message: string_utf16_of("Received EDK Ciphertext of incorrect length3.") })); if valueOrError1.IsFailure() { res = MaybePlacebo::from(valueOrError1.PropagateFailure::>>>()); return res.read(); }; - let mut kdfNonce: Sequence = wrappedMaterial.slice(&int!(0), &crate::implementation_from_dafny::_Constants_Compile::_default::ECDH_COMMITMENT_KEY_INDEX()); + let mut kdfNonce: Sequence = wrappedMaterial.take(&int!((&crate::implementation_from_dafny::_Constants_Compile::_default::ECDH_COMMITMENT_KEY_INDEX()).clone())); let mut iv: Sequence = { let _initializer = { Arc::new(move |_v0: &DafnyInt| -> u8{ @@ -104382,9 +105179,9 @@ pub mod _EcdhEdkWrapping_Compile { }; integer_range(Zero::zero(), int!(crate::implementation_from_dafny::_Constants_Compile::_default::ECDH_AES_256_ENC_ALG().ivLength().clone())).map(move |i| _initializer(&i)).collect::>() }; - let mut commitmentKey: Sequence = wrappedMaterial.slice(&crate::implementation_from_dafny::_Constants_Compile::_default::ECDH_COMMITMENT_KEY_INDEX(), &crate::implementation_from_dafny::_Constants_Compile::_default::ECDH_WRAPPED_KEY_MATERIAL_INDEX()); - let mut wrappedKey: Sequence = wrappedMaterial.slice(&crate::implementation_from_dafny::_Constants_Compile::_default::ECDH_WRAPPED_KEY_MATERIAL_INDEX(), &(crate::implementation_from_dafny::_Constants_Compile::_default::ECDH_WRAPPED_KEY_MATERIAL_INDEX() + KeyLength.clone())); - let mut authTag: Sequence = wrappedMaterial.drop(&(crate::implementation_from_dafny::_Constants_Compile::_default::ECDH_WRAPPED_KEY_MATERIAL_INDEX() + KeyLength.clone())); + let mut commitmentKey: Sequence = wrappedMaterial.slice(&int!((&crate::implementation_from_dafny::_Constants_Compile::_default::ECDH_COMMITMENT_KEY_INDEX()).clone()), &int!((&crate::implementation_from_dafny::_Constants_Compile::_default::ECDH_WRAPPED_KEY_MATERIAL_INDEX()).clone())); + let mut wrappedKey: Sequence = wrappedMaterial.slice(&int!((&crate::implementation_from_dafny::_Constants_Compile::_default::ECDH_WRAPPED_KEY_MATERIAL_INDEX()).clone()), &int!((&(crate::implementation_from_dafny::_Constants_Compile::_default::ECDH_WRAPPED_KEY_MATERIAL_INDEX() + KeyLength as u64)).clone())); + let mut authTag: Sequence = wrappedMaterial.drop(&int!((&(crate::implementation_from_dafny::_Constants_Compile::_default::ECDH_WRAPPED_KEY_MATERIAL_INDEX() + KeyLength as u64)).clone())); let mut valueOrError2: Arc>> = crate::implementation_from_dafny::UTF8::_default::Encode(&_default::CurveSpecTypeToString(&self.curveSpec().clone())).MapFailure::>(&(Arc::new(move |x0: &Sequence| _default::E(x0)) as Arc _ + Sync + Send>)); if valueOrError2.IsFailure() { res = MaybePlacebo::from(valueOrError2.PropagateFailure::>>>()); @@ -104406,9 +105203,9 @@ pub mod _EcdhEdkWrapping_Compile { return res.read(); }; let mut derivedKeyingMaterial: Sequence = valueOrError4.Extract(); - let mut calculatedCommitmentKey: Sequence = derivedKeyingMaterial.slice(&int!(0), &int!(32)); - let mut sharedKeyingMaterial: Sequence = derivedKeyingMaterial.drop(&int!(32)); - let mut valueOrError5: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(calculatedCommitmentKey.cardinality() == commitmentKey.cardinality(), &_default::E(&string_utf16_of("Calculated commitment key length does NOT match expected commitment key length"))); + let mut calculatedCommitmentKey: Sequence = derivedKeyingMaterial.take(&int!((&truncate!((&int!(32)).clone(), u32)).clone())); + let mut sharedKeyingMaterial: Sequence = derivedKeyingMaterial.drop(&int!((&truncate!((&int!(32)).clone(), u32)).clone())); + let mut valueOrError5: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(truncate!(calculatedCommitmentKey.cardinality(), u64) == truncate!(commitmentKey.cardinality(), u64), &_default::E(&string_utf16_of("Calculated commitment key length does NOT match expected commitment key length"))); if valueOrError5.IsFailure() { res = MaybePlacebo::from(valueOrError5.PropagateFailure::>>>()); return res.read(); @@ -104443,7 +105240,7 @@ pub mod _EcdhEdkWrapping_Compile { return res.read(); }; let mut unwrappedPdk: Sequence = valueOrError7.Extract(); - let mut valueOrError8: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(unwrappedPdk.cardinality() == int!(crate::implementation_from_dafny::_AlgorithmSuites_Compile::_default::GetEncryptKeyLength(input.algorithmSuite())), &_default::E(&string_utf16_of("Invalid Key Length"))); + let mut valueOrError8: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(truncate!(unwrappedPdk.cardinality(), u64) == crate::implementation_from_dafny::_AlgorithmSuites_Compile::_default::GetEncryptKeyLength(input.algorithmSuite()) as u64, &_default::E(&string_utf16_of("Invalid Key Length"))); if valueOrError8.IsFailure() { res = MaybePlacebo::from(valueOrError8.PropagateFailure::>>>()); return res.read(); @@ -104464,7 +105261,7 @@ pub mod _EcdhEdkWrapping_Compile { UpcastObjectFn!(dyn Action, Arc>>, Arc>>>); } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/KeyWrapping/EcdhEdkWrapping.dfy(226,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/KeyWrapping/EcdhEdkWrapping.dfy(229,3) pub struct EcdhGenerateAndWrapKeyMaterial { pub __i_crypto: Object, pub __i_sharedSecret: Sequence, @@ -104476,7 +105273,7 @@ pub mod _EcdhEdkWrapping_Compile { pub fn _allocate_object() -> Object { allocate_object::() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/KeyWrapping/EcdhEdkWrapping.dfy(233,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/KeyWrapping/EcdhEdkWrapping.dfy(236,5) pub fn _ctor(this: &Object, sharedSecret: &Sequence, fixedInfo: &Sequence, crypto: &Object) -> () { let mut _set___i_crypto: bool = false; let mut _set___i_sharedSecret: bool = false; @@ -104486,15 +105283,15 @@ pub mod _EcdhEdkWrapping_Compile { update_field_uninit_object!(this.clone(), __i_crypto, _set___i_crypto, crypto.clone()); return (); } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/KeyWrapping/EcdhEdkWrapping.dfy(231,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/KeyWrapping/EcdhEdkWrapping.dfy(234,5) pub fn crypto(&self) -> Object { self.__i_crypto.clone() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/KeyWrapping/EcdhEdkWrapping.dfy(229,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/KeyWrapping/EcdhEdkWrapping.dfy(232,5) pub fn sharedSecret(&self) -> Sequence { self.__i_sharedSecret.clone() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/KeyWrapping/EcdhEdkWrapping.dfy(230,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/KeyWrapping/EcdhEdkWrapping.dfy(233,5) pub fn fixedInfo(&self) -> Sequence { self.__i_fixedInfo.clone() } @@ -104523,7 +105320,7 @@ pub mod _EcdhEdkWrapping_Compile { impl Action, Arc>>, Arc>>> for EcdhGenerateAndWrapKeyMaterial { - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/KeyWrapping/EcdhEdkWrapping.dfy(272,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/KeyWrapping/EcdhEdkWrapping.dfy(275,5) fn Invoke(&self, input: &Arc) -> Arc>>, Arc>> { let mut res = MaybePlacebo::>>, Arc>>>::new(); let mut suite: Arc = input.algorithmSuite().clone(); @@ -104552,7 +105349,8 @@ pub mod _EcdhEdkWrapping_Compile { let mut _out1: Arc>>, Arc>> = Action::, Arc>>, Arc>>>::Invoke(rd!(wrap.clone()), &Arc::new(WrapInput::WrapInput { plaintextMaterial: pdk.clone(), algorithmSuite: input.algorithmSuite().clone(), - encryptionContext: input.encryptionContext().clone() + encryptionContext: input.encryptionContext().clone(), + serializedEC: input.serializedEC().clone() })); valueOrError1 = _out1.clone(); if valueOrError1.IsFailure() { @@ -104577,7 +105375,7 @@ pub mod _EcdhEdkWrapping_Compile { UpcastObjectFn!(dyn Action, Arc>>, Arc>>>); } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/KeyWrapping/EcdhEdkWrapping.dfy(314,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/KeyWrapping/EcdhEdkWrapping.dfy(318,3) pub struct EcdhWrapKeyMaterial { pub __i_crypto: Object, pub __i_fixedInfo: Sequence, @@ -104589,7 +105387,7 @@ pub mod _EcdhEdkWrapping_Compile { pub fn _allocate_object() -> Object { allocate_object::() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/KeyWrapping/EcdhEdkWrapping.dfy(321,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/KeyWrapping/EcdhEdkWrapping.dfy(325,5) pub fn _ctor(this: &Object, sharedSecret: &Sequence, fixedInfo: &Sequence, crypto: &Object) -> () { let mut _set___i_crypto: bool = false; let mut _set___i_fixedInfo: bool = false; @@ -104599,15 +105397,15 @@ pub mod _EcdhEdkWrapping_Compile { update_field_uninit_object!(this.clone(), __i_crypto, _set___i_crypto, crypto.clone()); return (); } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/KeyWrapping/EcdhEdkWrapping.dfy(319,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/KeyWrapping/EcdhEdkWrapping.dfy(323,5) pub fn crypto(&self) -> Object { self.__i_crypto.clone() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/KeyWrapping/EcdhEdkWrapping.dfy(318,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/KeyWrapping/EcdhEdkWrapping.dfy(322,5) pub fn fixedInfo(&self) -> Sequence { self.__i_fixedInfo.clone() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/KeyWrapping/EcdhEdkWrapping.dfy(317,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/KeyWrapping/EcdhEdkWrapping.dfy(321,5) pub fn sharedSecret(&self) -> Sequence { self.__i_sharedSecret.clone() } @@ -104636,7 +105434,7 @@ pub mod _EcdhEdkWrapping_Compile { impl Action, Arc>>, Arc>>> for EcdhWrapKeyMaterial { - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/KeyWrapping/EcdhEdkWrapping.dfy(380,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/KeyWrapping/EcdhEdkWrapping.dfy(384,5) fn Invoke(&self, input: &Arc) -> Arc>>, Arc>> { let mut res = MaybePlacebo::>>, Arc>>>::new(); let mut suite: Arc = input.algorithmSuite().clone(); @@ -104671,8 +105469,8 @@ pub mod _EcdhEdkWrapping_Compile { return res.read(); }; let mut derivedKeyingMaterial: Sequence = valueOrError2.Extract(); - let mut commitmentKey: Sequence = derivedKeyingMaterial.slice(&int!(0), &int!(32)); - let mut sharedKeyingMaterial: Sequence = derivedKeyingMaterial.drop(&int!(32)); + let mut commitmentKey: Sequence = derivedKeyingMaterial.take(&int!((&truncate!((&int!(32)).clone(), u32)).clone())); + let mut sharedKeyingMaterial: Sequence = derivedKeyingMaterial.drop(&int!((&truncate!((&int!(32)).clone(), u32)).clone())); let mut iv: Sequence = { let _initializer = { Arc::new(move |_v3: &DafnyInt| -> u8{ @@ -104749,7 +105547,7 @@ pub mod _EdkWrapping_Compile { pub use crate::implementation_from_dafny::_MaterialWrapping_Compile::UnwrapMaterial; pub use crate::implementation_from_dafny::_MaterialWrapping_Compile::UnwrapOutput; pub use crate::implementation_from_dafny::_MaterialWrapping_Compile::UnwrapInput; - pub use ::dafny_runtime::int; + pub use ::dafny_runtime::truncate; pub use crate::implementation_from_dafny::_IntermediateKeyWrapping_Compile::IntermediateUnwrapOutput; pub use crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::AlgorithmSuiteInfo; pub use crate::implementation_from_dafny::_IntermediateKeyWrapping_Compile::DeserializedIntermediateWrappedMaterial; @@ -104766,7 +105564,7 @@ pub mod _EdkWrapping_Compile { pub struct _default {} impl _default { - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/KeyWrapping/EdkWrapping.dfy(72,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/KeyWrapping/EdkWrapping.dfy(73,3) pub fn WrapEdkMaterial<_T: DafnyType>(encryptionMaterials: &Arc, wrap: &Object>, generateAndWrap: &Object>) -> Arc>, Arc>> { let mut ret = MaybePlacebo::>, Arc>>>::new(); let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(crate::implementation_from_dafny::_Materials_Compile::_default::ValidEncryptionMaterials(encryptionMaterials), &Arc::new(Error::AwsCryptographicMaterialProvidersException { @@ -104781,7 +105579,8 @@ pub mod _EdkWrapping_Compile { let mut _out0: Arc>, Arc>> = Action::, Arc>, Arc>>>::Invoke(rd!(wrap.clone()), &Arc::new(WrapInput::WrapInput { plaintextMaterial: encryptionMaterials.plaintextDataKey().value().clone(), algorithmSuite: encryptionMaterials.algorithmSuite().clone(), - encryptionContext: encryptionMaterials.encryptionContext().clone() + encryptionContext: encryptionMaterials.encryptionContext().clone(), + serializedEC: crate::implementation_from_dafny::_CanonicalEncryptionContext_Compile::_default::EncryptionContextToAAD(encryptionMaterials.encryptionContext()) })); valueOrError1 = _out0.clone(); if valueOrError1.IsFailure() { @@ -104822,7 +105621,8 @@ pub mod _EdkWrapping_Compile { let mut valueOrError3: Arc>, Arc>>; let mut _out2: Arc>, Arc>> = Action::, Arc>, Arc>>>::Invoke(rd!(generateAndWrap.clone()), &Arc::new(GenerateAndWrapInput::GenerateAndWrapInput { algorithmSuite: encryptionMaterials.algorithmSuite().clone(), - encryptionContext: encryptionMaterials.encryptionContext().clone() + encryptionContext: encryptionMaterials.encryptionContext().clone(), + serializedEC: crate::implementation_from_dafny::_CanonicalEncryptionContext_Compile::_default::EncryptionContextToAAD(encryptionMaterials.encryptionContext()) })); valueOrError3 = _out2.clone(); if valueOrError3.IsFailure() { @@ -104873,7 +105673,7 @@ pub mod _EdkWrapping_Compile { }; return ret.read(); } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/KeyWrapping/EdkWrapping.dfy(263,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/KeyWrapping/EdkWrapping.dfy(275,3) pub fn UnwrapEdkMaterial<_T: DafnyType>(wrappedMaterial: &Sequence, decryptionMaterials: &DecryptionMaterialsPendingPlaintextDataKey, unwrap: &Object>) -> Arc>, Arc>> { let mut ret = MaybePlacebo::>, Arc>>>::new(); let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(crate::implementation_from_dafny::_Materials_Compile::_default::ValidDecryptionMaterials(decryptionMaterials), &Arc::new(Error::AwsCryptographicMaterialProvidersException { @@ -104888,7 +105688,8 @@ pub mod _EdkWrapping_Compile { let mut _out0: Arc>, Arc>> = Action::, Arc>, Arc>>>::Invoke(rd!(unwrap.clone()), &Arc::new(UnwrapInput::UnwrapInput { wrappedMaterial: wrappedMaterial.clone(), algorithmSuite: decryptionMaterials.algorithmSuite().clone(), - encryptionContext: decryptionMaterials.encryptionContext().clone() + encryptionContext: decryptionMaterials.encryptionContext().clone(), + serializedEC: crate::implementation_from_dafny::_CanonicalEncryptionContext_Compile::_default::EncryptionContextToAAD(decryptionMaterials.encryptionContext()) })); valueOrError1 = _out0.clone(); if valueOrError1.IsFailure() { @@ -104906,7 +105707,7 @@ pub mod _EdkWrapping_Compile { return ret.read(); } else { if matches!(decryptionMaterials.algorithmSuite().edkWrapping().as_ref(), IntermediateKeyWrapping{ .. }) { - let mut valueOrError2: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(wrappedMaterial.cardinality() >= int!(decryptionMaterials.algorithmSuite().encrypt().AES_GCM().keyLength().clone() + decryptionMaterials.algorithmSuite().encrypt().AES_GCM().tagLength().clone()), &Arc::new(Error::AwsCryptographicMaterialProvidersException { + let mut valueOrError2: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(truncate!(wrappedMaterial.cardinality(), u64) >= (decryptionMaterials.algorithmSuite().encrypt().AES_GCM().keyLength().clone() + decryptionMaterials.algorithmSuite().encrypt().AES_GCM().tagLength().clone()) as u64, &Arc::new(Error::AwsCryptographicMaterialProvidersException { message: string_utf16_of("Invalid material for Intermediate Unwrapping") })); if valueOrError2.IsFailure() { @@ -104935,7 +105736,7 @@ pub mod _EdkWrapping_Compile { }; return ret.read(); } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/KeyWrapping/EdkWrapping.dfy(350,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/KeyWrapping/EdkWrapping.dfy(371,3) pub fn GetProviderWrappedMaterial(material: &Sequence, algSuite: &Arc) -> Arc, Arc>> { if matches!(algSuite.edkWrapping().as_ref(), DIRECT_KEY_WRAPPING{ .. }) { Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::, Arc>::Success { @@ -104958,7 +105759,7 @@ pub mod _EdkWrapping_Compile { } } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/KeyWrapping/EdkWrapping.dfy(27,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/KeyWrapping/EdkWrapping.dfy(28,3) #[derive(PartialEq, Clone)] pub enum WrapEdkMaterialOutput { WrapOnlyEdkMaterialOutput { @@ -105082,7 +105883,7 @@ pub mod _EdkWrapping_Compile { } } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/KeyWrapping/EdkWrapping.dfy(51,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/KeyWrapping/EdkWrapping.dfy(52,3) #[derive(PartialEq, Clone)] pub enum UnwrapEdkMaterialOutput { UnwrapEdkMaterialOutput { @@ -105182,18 +105983,18 @@ pub mod _ErrorMessages_Compile { pub use crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::AlgorithmSuiteInfo; pub use crate::implementation_from_dafny::_Wrappers_Compile::Result; pub use crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::Error; + pub use ::dafny_runtime::truncate; pub use ::dafny_runtime::int; - pub use ::dafny_runtime::DafnyInt; pub use crate::implementation_from_dafny::_Wrappers_Compile::Outcome; pub struct _default {} impl _default { - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/ErrorMessages.dfy(21,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/ErrorMessages.dfy(23,3) pub fn IncorrectRawDataKeys(datakey: &Sequence, keyringName: &Sequence, keyProviderId: &Sequence) -> Sequence { string_utf16_of("EncryptedDataKey ").concat(datakey).concat(&string_utf16_of(" did not match ")).concat(keyringName).concat(&string_utf16_of(". ")).concat(&string_utf16_of("Expected: keyProviderId: ")).concat(keyProviderId).concat(&string_utf16_of(".\n")) } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/ErrorMessages.dfy(31,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/ErrorMessages.dfy(33,3) pub fn IncorrectDataKeys(encryptedDataKeys: &Sequence>, material: &Arc, errMsg: &Sequence) -> Arc, Arc>> { let mut valueOrError0: Arc, Arc>> = _default::IncorrectDataKeysExpectedValues(encryptedDataKeys, material, errMsg); if valueOrError0.IsFailure() { @@ -105205,7 +106006,7 @@ pub mod _ErrorMessages_Compile { }) } } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/ErrorMessages.dfy(38,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/ErrorMessages.dfy(40,3) pub fn IncorrectDataKeysExpectedValues(encryptedDataKeys: &Sequence>, material: &Arc, errMsg: &Sequence) -> Arc, Arc>> { let mut _r0 = encryptedDataKeys.clone(); let mut _r1 = material.clone(); @@ -105214,12 +106015,12 @@ pub mod _ErrorMessages_Compile { let encryptedDataKeys = _r0; let material = _r1; let errMsg = _r2; - if encryptedDataKeys.cardinality() == int!(0) { + if truncate!(encryptedDataKeys.cardinality(), u64) == 0 { return Arc::new(Result::, Arc>::Success { value: errMsg.clone() }); } else { - let mut encryptedDataKey: Arc = encryptedDataKeys.get(&int!(0)); + let mut encryptedDataKey: Arc = encryptedDataKeys.get(&int!((&truncate!((&int!(0)).clone(), u32)).clone())); let mut valueOrError0: Arc, Arc>> = crate::implementation_from_dafny::UTF8::_default::Decode(encryptedDataKey.keyProviderId()).MapFailure::>(&({ Arc::new(move |e: &Sequence| -> Arc{ Arc::new(Error::AwsCryptographicMaterialProvidersException { @@ -105243,7 +106044,7 @@ pub mod _ErrorMessages_Compile { } else { let mut extractedKeyProviderInfo: Sequence = valueOrError1.Extract(); if extractedKeyProviderId.clone() != string_utf16_of("aws-kms-hierarchy") { - let mut _in0: Sequence> = encryptedDataKeys.drop(&int!(1)); + let mut _in0: Sequence> = encryptedDataKeys.drop(&int!((&truncate!((&int!(1)).clone(), u32)).clone())); let mut _in1: Arc = material.clone(); let mut _in2: Sequence = errMsg.concat(&string_utf16_of("KeyProviderId: ")).concat(&extractedKeyProviderId).concat(&string_utf16_of(", KeyProviderInfo: ")).concat(&extractedKeyProviderInfo).concat(&string_utf16_of("\n")); _r0 = _in0.clone(); @@ -105256,21 +106057,21 @@ pub mod _ErrorMessages_Compile { return valueOrError2.PropagateFailure::>(); } else { let mut providerWrappedMaterial: Sequence = valueOrError2.Extract(); - let mut EDK_CIPHERTEXT_BRANCH_KEY_VERSION_INDEX: DafnyInt = _default::SALT_LENGTH() + _default::IV_LENGTH(); - let mut EDK_CIPHERTEXT_VERSION_INDEX: DafnyInt = EDK_CIPHERTEXT_BRANCH_KEY_VERSION_INDEX.clone() + _default::VERSION_LENGTH(); - let mut valueOrError3: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(EDK_CIPHERTEXT_BRANCH_KEY_VERSION_INDEX.clone() < EDK_CIPHERTEXT_VERSION_INDEX.clone(), &Arc::new(Error::AwsCryptographicMaterialProvidersException { + let mut EDK_CIPHERTEXT_BRANCH_KEY_VERSION_INDEX: u64 = _default::SALT_LENGTH() + _default::IV_LENGTH(); + let mut EDK_CIPHERTEXT_VERSION_INDEX: u64 = EDK_CIPHERTEXT_BRANCH_KEY_VERSION_INDEX + _default::VERSION_LENGTH(); + let mut valueOrError3: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(EDK_CIPHERTEXT_BRANCH_KEY_VERSION_INDEX < EDK_CIPHERTEXT_VERSION_INDEX, &Arc::new(Error::AwsCryptographicMaterialProvidersException { message: string_utf16_of("Wrong branch key version index.") })); if valueOrError3.IsFailure() { return valueOrError3.PropagateFailure::>(); } else { - let mut valueOrError4: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(providerWrappedMaterial.cardinality() >= EDK_CIPHERTEXT_VERSION_INDEX.clone(), &Arc::new(Error::AwsCryptographicMaterialProvidersException { + let mut valueOrError4: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(truncate!(providerWrappedMaterial.cardinality(), u64) >= EDK_CIPHERTEXT_VERSION_INDEX, &Arc::new(Error::AwsCryptographicMaterialProvidersException { message: string_utf16_of("Incorrect ciphertext structure.") })); if valueOrError4.IsFailure() { return valueOrError4.PropagateFailure::>(); } else { - let mut branchKeyVersionUuid: Sequence = providerWrappedMaterial.slice(&EDK_CIPHERTEXT_BRANCH_KEY_VERSION_INDEX, &EDK_CIPHERTEXT_VERSION_INDEX); + let mut branchKeyVersionUuid: Sequence = providerWrappedMaterial.slice(&int!((&EDK_CIPHERTEXT_BRANCH_KEY_VERSION_INDEX).clone()), &int!((&EDK_CIPHERTEXT_VERSION_INDEX).clone())); let mut valueOrError5: Arc, Arc>> = crate::implementation_from_dafny::UUID::_default::FromByteArray(&branchKeyVersionUuid).MapFailure::>(&({ Arc::new(move |e: &Sequence| -> Arc{ Arc::new(Error::AwsCryptographicMaterialProvidersException { @@ -105282,7 +106083,7 @@ pub mod _ErrorMessages_Compile { return valueOrError5.PropagateFailure::>(); } else { let mut branchVersion: Sequence = valueOrError5.Extract(); - let mut _in3: Sequence> = encryptedDataKeys.drop(&int!(1)); + let mut _in3: Sequence> = encryptedDataKeys.drop(&int!((&truncate!((&int!(1)).clone(), u32)).clone())); let mut _in4: Arc = material.clone(); let mut _in5: Sequence = errMsg.concat(&string_utf16_of("KeyProviderId: ")).concat(&extractedKeyProviderId).concat(&string_utf16_of(", KeyProviderInfo: ")).concat(&extractedKeyProviderInfo).concat(&string_utf16_of(", BranchKeyVersion: ")).concat(&branchVersion).concat(&string_utf16_of("\n")); _r0 = _in3.clone(); @@ -105299,27 +106100,27 @@ pub mod _ErrorMessages_Compile { } } } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/ErrorMessages.dfy(13,3) - pub fn SALT_LENGTH() -> DafnyInt { - int!(16) - } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/ErrorMessages.dfy(14,3) - pub fn IV_LENGTH() -> DafnyInt { - int!(12) - } /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/ErrorMessages.dfy(15,3) - pub fn VERSION_LENGTH() -> DafnyInt { - int!(16) + pub fn SALT_LENGTH() -> u64 { + 16 + } + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/ErrorMessages.dfy(16,3) + pub fn IV_LENGTH() -> u64 { + 12 } /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/ErrorMessages.dfy(17,3) + pub fn VERSION_LENGTH() -> u64 { + 16 + } + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/ErrorMessages.dfy(19,3) pub fn KMS_ECDH_DISCOVERY_ENCRYPT_ERROR() -> Sequence { string_utf16_of("KmsPublicKeyDiscovery Key Agreement Scheme is forbidden on encrypt.") } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/ErrorMessages.dfy(18,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/ErrorMessages.dfy(20,3) pub fn RAW_ECDH_DISCOVERY_ENCRYPT_ERROR() -> Sequence { string_utf16_of("PublicKeyDiscovery Key Agreement Scheme is forbidden on encrypt.") } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/ErrorMessages.dfy(19,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/ErrorMessages.dfy(21,3) pub fn RAW_ECDH_EPHEMERAL_DECRYPT_ERROR() -> Sequence { string_utf16_of("EphemeralPrivateKeyToStaticPublicKey Key Agreement Scheme is forbidden on decrypt.") } @@ -105389,6 +106190,7 @@ pub mod _ExecuteStatementTransformTest_Compile { pub use crate::implementation_from_dafny::software::amazon::cryptography::services::dynamodb::internaldafny::types::PreparedStatementParameters; pub use crate::implementation_from_dafny::software::amazon::cryptography::services::dynamodb::internaldafny::types::ReturnConsumedCapacity; pub use crate::implementation_from_dafny::software::amazon::cryptography::services::dynamodb::internaldafny::types::PositiveIntegerObject; + pub use crate::implementation_from_dafny::software::amazon::cryptography::services::dynamodb::internaldafny::types::ReturnValuesOnConditionCheckFailure; pub use crate::implementation_from_dafny::_Wrappers_Compile::Result; pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::transforms::internaldafny::types::ExecuteStatementInputTransformOutput; pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::transforms::internaldafny::types::Error; @@ -105422,7 +106224,8 @@ pub mod _ExecuteStatementTransformTest_Compile { ConsistentRead: Arc::new(Option::::None {}), NextToken: Arc::new(Option::>::None {}), ReturnConsumedCapacity: Arc::new(Option::>::None {}), - Limit: Arc::new(Option::::None {}) + Limit: Arc::new(Option::::None {}), + ReturnValuesOnConditionCheckFailure: Arc::new(Option::>::None {}) }); let mut good_transformed: Arc, Arc>>; let mut _out2: Arc, Arc>> = IDynamoDbEncryptionTransformsClient::ExecuteStatementInputTransform(rd!(middlewareUnderTest.clone()), &Arc::new(ExecuteStatementInputTransformInput::ExecuteStatementInputTransformInput { @@ -105447,7 +106250,8 @@ pub mod _ExecuteStatementTransformTest_Compile { ConsistentRead: Arc::new(Option::::None {}), NextToken: Arc::new(Option::>::None {}), ReturnConsumedCapacity: Arc::new(Option::>::None {}), - Limit: Arc::new(Option::::None {}) + Limit: Arc::new(Option::::None {}), + ReturnValuesOnConditionCheckFailure: Arc::new(Option::>::None {}) }); let mut bad_transformed: Arc, Arc>>; let mut _out2: Arc, Arc>> = IDynamoDbEncryptionTransformsClient::ExecuteStatementInputTransform(rd!(middlewareUnderTest.clone()), &Arc::new(ExecuteStatementInputTransformInput::ExecuteStatementInputTransformInput { @@ -105491,7 +106295,8 @@ pub mod _ExecuteStatementTransformTest_Compile { ConsistentRead: Arc::new(Option::::None {}), NextToken: Arc::new(Option::>::None {}), ReturnConsumedCapacity: Arc::new(Option::>::None {}), - Limit: Arc::new(Option::::None {}) + Limit: Arc::new(Option::::None {}), + ReturnValuesOnConditionCheckFailure: Arc::new(Option::>::None {}) }); let mut transformed: Arc, Arc>>; let mut _out2: Arc, Arc>> = IDynamoDbEncryptionTransformsClient::ExecuteStatementOutputTransform(rd!(middlewareUnderTest.clone()), &Arc::new(ExecuteStatementOutputTransformInput::ExecuteStatementOutputTransformInput { @@ -105594,6 +106399,7 @@ pub mod _ExecuteTransactionTransformTest_Compile { pub use crate::implementation_from_dafny::software::amazon::cryptography::services::dynamodb::internaldafny::types::ParameterizedStatement; pub use crate::implementation_from_dafny::_Wrappers_Compile::Option; pub use crate::implementation_from_dafny::software::amazon::cryptography::services::dynamodb::internaldafny::types::PreparedStatementParameters; + pub use crate::implementation_from_dafny::software::amazon::cryptography::services::dynamodb::internaldafny::types::ReturnValuesOnConditionCheckFailure; pub use crate::implementation_from_dafny::software::amazon::cryptography::services::dynamodb::internaldafny::types::ParameterizedStatements; pub use ::dafny_runtime::seq; pub use crate::implementation_from_dafny::software::amazon::cryptography::services::dynamodb::internaldafny::types::ExecuteTransactionInput; @@ -105623,7 +106429,8 @@ pub mod _ExecuteTransactionTransformTest_Compile { statement = _out1.clone(); let mut pstatement: Arc = Arc::new(ParameterizedStatement::ParameterizedStatement { Statement: statement.clone(), - Parameters: Arc::new(Option::::None {}) + Parameters: Arc::new(Option::::None {}), + ReturnValuesOnConditionCheckFailure: Arc::new(Option::>::None {}) }); let mut pstatements: ParameterizedStatements; let mut _out2: ParameterizedStatements = crate::implementation_from_dafny::_TestFixtures_Compile::_default::GetPStatements(&seq![pstatement.clone()]); @@ -105652,7 +106459,8 @@ pub mod _ExecuteTransactionTransformTest_Compile { statement = _out1.clone(); let mut pstatement: Arc = Arc::new(ParameterizedStatement::ParameterizedStatement { Statement: statement.clone(), - Parameters: Arc::new(Option::::None {}) + Parameters: Arc::new(Option::::None {}), + ReturnValuesOnConditionCheckFailure: Arc::new(Option::>::None {}) }); let mut pstatements: ParameterizedStatements; let mut _out2: ParameterizedStatements = crate::implementation_from_dafny::_TestFixtures_Compile::_default::GetPStatements(&seq![pstatement.clone()]); @@ -105684,7 +106492,8 @@ pub mod _ExecuteTransactionTransformTest_Compile { statement = _out1.clone(); let mut pstatement: Arc = Arc::new(ParameterizedStatement::ParameterizedStatement { Statement: statement.clone(), - Parameters: Arc::new(Option::::None {}) + Parameters: Arc::new(Option::::None {}), + ReturnValuesOnConditionCheckFailure: Arc::new(Option::>::None {}) }); let mut pstatements: ParameterizedStatements; let mut _out2: ParameterizedStatements = crate::implementation_from_dafny::_TestFixtures_Compile::_default::GetPStatements(&seq![pstatement.clone()]); @@ -105724,7 +106533,7 @@ pub mod _ExecuteTransactionTransformTest_Compile { _default::TestExecuteTransactionOutputTransform() } } -/// ../submodules/MaterialProviders/AwsCryptographyPrimitives/src/Digest.dfy(35,1) +/// ../submodules/MaterialProviders/AwsCryptographyPrimitives/src/Digest.dfy(37,1) pub mod ExternDigest { pub use ::dafny_runtime::Sequence; pub use ::std::sync::Arc; @@ -105734,13 +106543,13 @@ pub mod ExternDigest { pub struct _default {} impl _default { - /// ../submodules/MaterialProviders/AwsCryptographyPrimitives/src/Digest.dfy(48,3) + /// ../submodules/MaterialProviders/AwsCryptographyPrimitives/src/Digest.dfy(50,3) pub fn CreateDigestSuccess(bytes: &Sequence) -> Arc, Arc>> { Arc::new(Result::, Arc>::Success { value: bytes.clone() }) } - /// ../submodules/MaterialProviders/AwsCryptographyPrimitives/src/Digest.dfy(52,3) + /// ../submodules/MaterialProviders/AwsCryptographyPrimitives/src/Digest.dfy(54,3) pub fn CreateDigestFailure(error: &Arc) -> Arc, Arc>> { Arc::new(Result::, Arc>::Failure { error: error.clone() @@ -105748,7 +106557,7 @@ pub mod ExternDigest { } } } -/// ../submodules/MaterialProviders/AwsCryptographyPrimitives/src/Random.dfy(27,1) +/// ../submodules/MaterialProviders/AwsCryptographyPrimitives/src/Random.dfy(29,1) pub mod ExternRandom { pub use ::dafny_runtime::Sequence; pub use ::std::sync::Arc; @@ -105758,13 +106567,13 @@ pub mod ExternRandom { pub struct _default {} impl _default { - /// ../submodules/MaterialProviders/AwsCryptographyPrimitives/src/Random.dfy(39,3) + /// ../submodules/MaterialProviders/AwsCryptographyPrimitives/src/Random.dfy(41,3) pub fn CreateGenerateBytesSuccess(bytes: &Sequence) -> Arc, Arc>> { Arc::new(Result::, Arc>::Success { value: bytes.clone() }) } - /// ../submodules/MaterialProviders/AwsCryptographyPrimitives/src/Random.dfy(43,3) + /// ../submodules/MaterialProviders/AwsCryptographyPrimitives/src/Random.dfy(45,3) pub fn CreateGenerateBytesFailure(error: &Arc) -> Arc, Arc>> { Arc::new(Result::, Arc>::Failure { error: error.clone() @@ -105780,7 +106589,7 @@ pub mod ExternRandom { /// non-ASCII Unicode codepoints may cause different language- or platform-specific behavior. /// /// File path symbols including . and .. are allowed. -/// ../submodules/MaterialProviders/libraries/src/FileIO/FileIO.dfy(20,1) +/// ../submodules/MaterialProviders/libraries/src/FileIO/FileIO.dfy(21,1) pub mod _FileIO_Compile { pub use ::dafny_runtime::Sequence; pub use ::dafny_runtime::DafnyCharUTF16; @@ -105796,7 +106605,7 @@ pub mod _FileIO_Compile { /// error message (which may also contain a stack trace). /// /// NOTE: See the module description for limitations on the path argument. - /// ../submodules/MaterialProviders/libraries/src/FileIO/FileIO.dfy(36,3) + /// ../submodules/MaterialProviders/libraries/src/FileIO/FileIO.dfy(38,3) pub fn ReadBytesFromFile(path: &Sequence) -> Arc, Sequence>> { let mut res: Arc, Sequence>>; let mut isError: bool; @@ -105829,7 +106638,7 @@ pub mod _FileIO_Compile { /// error message (which may also contain a stack trace). /// /// NOTE: See the module description for limitations on the path argument. - /// ../submodules/MaterialProviders/libraries/src/FileIO/FileIO.dfy(49,3) + /// ../submodules/MaterialProviders/libraries/src/FileIO/FileIO.dfy(51,3) pub fn WriteBytesToFile(path: &Sequence, bytes: &Sequence) -> Arc>> { let mut res: Arc>>; let mut isError: bool; @@ -105858,7 +106667,7 @@ pub mod _FileIO_Compile { /// error message (which may also contain a stack trace). /// /// NOTE: See the module description for limitations on the path argument. - /// ../submodules/MaterialProviders/libraries/src/FileIO/FileIO.dfy(63,3) + /// ../submodules/MaterialProviders/libraries/src/FileIO/FileIO.dfy(65,3) pub fn AppendBytesToFile(path: &Sequence, bytes: &Sequence) -> Arc>> { let mut res: Arc>>; let mut isError: bool; @@ -106389,15 +107198,15 @@ pub mod _GetItemTransform_Compile { output = MaybePlacebo::from(Arc::new(Result::, Arc>::Success { value: Arc::new(GetItemOutputTransformOutput::GetItemOutputTransformOutput { transformedOutput: { - let __pat_let32_0: Arc = input.sdkOutput().clone(); + let __pat_let34_0: Arc = input.sdkOutput().clone(); { - let _dt__update__tmp_h0: Arc = __pat_let32_0.clone(); + let _dt__update__tmp_h0: Arc = __pat_let34_0.clone(); { - let __pat_let33_0: Arc, Arc>>> = Arc::new(Option::, Arc>>::Some { + let __pat_let35_0: Arc, Arc>>> = Arc::new(Option::, Arc>>::Some { value: item.clone() }); { - let _dt__update_hItem_h0: Arc, Arc>>> = __pat_let33_0.clone(); + let _dt__update_hItem_h0: Arc, Arc>>> = __pat_let35_0.clone(); Arc::new(GetItemOutput::GetItemOutput { Item: _dt__update_hItem_h0.clone(), ConsumedCapacity: _dt__update__tmp_h0.ConsumedCapacity().clone() @@ -107565,19 +108374,19 @@ pub mod _GetOpt_Compile { let mut sub: Arc = valueOrError1.Extract(); Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::, Sequence>::Success { value: { - let __pat_let34_0: Arc = args.clone(); + let __pat_let36_0: Arc = args.clone(); { - let _dt__update__tmp_h0: Arc = __pat_let34_0.clone(); + let _dt__update__tmp_h0: Arc = __pat_let36_0.clone(); { - let __pat_let35_0: Arc>> = Arc::new(Option::>::Some { + let __pat_let37_0: Arc>> = Arc::new(Option::>::Some { value: sub.clone() }); { - let _dt__update_hsubcommand_h0: Arc>> = __pat_let35_0.clone(); + let _dt__update_hsubcommand_h0: Arc>> = __pat_let37_0.clone(); { - let __pat_let36_0: Sequence> = args.params().concat(&newParams); + let __pat_let38_0: Sequence> = args.params().concat(&newParams); { - let _dt__update_hparams_h0: Sequence> = __pat_let36_0.clone(); + let _dt__update_hparams_h0: Sequence> = __pat_let38_0.clone(); Arc::new(Parsed::Parsed { command: _dt__update__tmp_h0.command().clone(), params: _dt__update_hparams_h0.clone(), @@ -107600,13 +108409,13 @@ pub mod _GetOpt_Compile { } else { Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::, Sequence>::Success { value: { - let __pat_let37_0: Arc = args.clone(); + let __pat_let39_0: Arc = args.clone(); { - let _dt__update__tmp_h1: Arc = __pat_let37_0.clone(); + let _dt__update__tmp_h1: Arc = __pat_let39_0.clone(); { - let __pat_let38_0: Sequence> = args.params().concat(&newParams); + let __pat_let40_0: Sequence> = args.params().concat(&newParams); { - let _dt__update_hparams_h1: Sequence> = __pat_let38_0.clone(); + let _dt__update_hparams_h1: Sequence> = __pat_let40_0.clone(); Arc::new(Parsed::Parsed { command: _dt__update__tmp_h1.command().clone(), params: _dt__update_hparams_h1.clone(), @@ -109069,24 +109878,21 @@ pub mod _HKDF_Compile { pub use crate::implementation_from_dafny::HMAC::HMac; pub use ::dafny_runtime::Sequence; pub use ::dafny_runtime::rd; - pub use ::dafny_runtime::DafnyInt; pub use ::std::sync::Arc; pub use crate::implementation_from_dafny::software::amazon::cryptography::primitives::internaldafny::types::DigestAlgorithm; pub use ::dafny_runtime::MaybePlacebo; - pub use ::dafny_runtime::euclidian_division; - pub use ::dafny_runtime::int; pub use ::dafny_runtime::seq; pub use ::dafny_runtime::truncate; + pub use ::dafny_runtime::int; pub use crate::implementation_from_dafny::_Wrappers_Compile::Option; pub use crate::implementation_from_dafny::_Wrappers_Compile::Result; pub use crate::implementation_from_dafny::software::amazon::cryptography::primitives::internaldafny::types::Error; - pub use ::dafny_runtime::_System::nat; pub use crate::implementation_from_dafny::_Wrappers_Compile::Option::None; pub struct _default {} impl _default { - /// ../submodules/MaterialProviders/AwsCryptographyPrimitives/src/HKDF/HKDF.dfy(38,3) + /// ../submodules/MaterialProviders/AwsCryptographyPrimitives/src/HKDF/HKDF.dfy(39,3) pub fn Extract(hmac: &Object, salt: &Sequence, ikm: &Sequence) -> Sequence { let mut prk: Sequence; rd!(hmac).Init(salt); @@ -109096,34 +109902,34 @@ pub mod _HKDF_Compile { prk = prk.clone(); return prk.clone(); } - /// ../submodules/MaterialProviders/AwsCryptographyPrimitives/src/HKDF/HKDF.dfy(128,3) - pub fn Expand(hmac: &Object, prk: &Sequence, info: &Sequence, expectedLength: &DafnyInt, digest: &Arc) -> Sequence { + /// ../submodules/MaterialProviders/AwsCryptographyPrimitives/src/HKDF/HKDF.dfy(129,3) + pub fn Expand(hmac: &Object, prk: &Sequence, info: &Sequence, expectedLength: u64, digest: &Arc) -> Sequence { let mut okm = MaybePlacebo::>::new(); - let mut hashLength: DafnyInt = crate::implementation_from_dafny::_Digest_Compile::_default::Length(digest); - let mut n: DafnyInt = euclidian_division(hashLength.clone() + expectedLength.clone() - int!(1), hashLength.clone()); + let mut hashLength: u64 = crate::implementation_from_dafny::_Digest_Compile::_default::Length(digest); + let mut n: u64 = (hashLength + expectedLength - 1) / hashLength; rd!(hmac).Init(prk); let mut t_prev: Sequence = seq![] as Sequence; let mut t_n: Sequence = t_prev.clone(); - let mut i: DafnyInt = int!(1); - while i.clone() <= n.clone() { + let mut i: u64 = 1; + while i <= n { rd!(hmac).BlockUpdate(&t_prev); rd!(hmac).BlockUpdate(info); - rd!(hmac).BlockUpdate(&seq![truncate!(i.clone(), u8)]); + rd!(hmac).BlockUpdate(&seq![i as u8]); let mut _out0: Sequence = rd!(hmac).GetResult(); t_prev = _out0.clone(); t_n = t_n.concat(&t_prev); - i = i.clone() + int!(1); + i = i + 1; }; okm = MaybePlacebo::from(t_n.clone()); - if expectedLength.clone() < okm.read().cardinality() { - okm = MaybePlacebo::from(okm.read().take(expectedLength)); + if expectedLength < truncate!(okm.read().cardinality(), u64) { + okm = MaybePlacebo::from(okm.read().take(&int!((&expectedLength).clone()))); }; return okm.read(); } - /// ../submodules/MaterialProviders/AwsCryptographyPrimitives/src/HKDF/HKDF.dfy(206,3) - pub fn Hkdf(digest: &Arc, salt: &Arc>>, ikm: &Sequence, info: &Sequence, L: &DafnyInt) -> Sequence { + /// ../submodules/MaterialProviders/AwsCryptographyPrimitives/src/HKDF/HKDF.dfy(208,3) + pub fn Hkdf(digest: &Arc, salt: &Arc>>, ikm: &Sequence, info: &Sequence, L: u64) -> Sequence { let mut okm = MaybePlacebo::>::new(); - if L.clone() == int!(0) { + if L == 0 { okm = MaybePlacebo::from(seq![] as Sequence); return okm.read(); }; @@ -109134,11 +109940,11 @@ pub mod _HKDF_Compile { panic!("Halt") }; let mut hmac: Object = valueOrError0.Extract(); - let mut hashLength: nat = crate::implementation_from_dafny::_Digest_Compile::_default::Length(digest); + let mut hashLength: u64 = crate::implementation_from_dafny::_Digest_Compile::_default::Length(digest); let mut nonEmptySalt: Sequence; let mut _source0: Arc>> = salt.clone(); if matches!((&_source0).as_ref(), None{ .. }) { - nonEmptySalt = crate::implementation_from_dafny::_StandardLibrary_Compile::_default::Fill::(&truncate!((&int!(0)).clone(), u8), &hashLength); + nonEmptySalt = crate::implementation_from_dafny::_StandardLibrary_Compile::_default::Fill::(&truncate!((&int!(0)).clone(), u8), &int!((&hashLength).clone())); } else { let mut ___mcc_h0: Sequence = _source0.value().clone(); let mut s: Sequence = ___mcc_h0.clone(); @@ -109202,12 +110008,12 @@ pub mod _HappyCaseTests_Compile { pub use ::dafny_runtime::Map; pub use ::dafny_runtime::Sequence; pub use ::dafny_runtime::map; - pub use ::dafny_runtime::string_utf16_of; pub use crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::DBEAlgorithmSuiteId; pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::structuredencryption::internaldafny::types::EncryptStructureOutput; pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::structuredencryption::internaldafny::types::IStructuredEncryptionClient; pub use ::dafny_runtime::rd; pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::structuredencryption::internaldafny::types::EncryptStructureInput; + pub use ::dafny_runtime::string_utf16_of; pub use crate::implementation_from_dafny::_Wrappers_Compile::Option; pub use crate::implementation_from_dafny::_Wrappers_Compile::Result::Failure; pub use ::dafny_runtime::DafnyPrintWrapper; @@ -109223,11 +110029,12 @@ pub mod _HappyCaseTests_Compile { pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::structuredencryption::internaldafny::types::CryptoAction; pub use ::dafny_runtime::DafnyInt; pub use ::dafny_runtime::int; + pub use ::dafny_runtime::seq; pub struct _default {} impl _default { - /// dafny/StructuredEncryption/test/HappyCaseTests.dfy(16,3) + /// dafny/StructuredEncryption/test/HappyCaseTests.dfy(26,3) pub fn TestRoundTrip() -> () { let mut valueOrError0: Arc, Arc>>; let mut _out0: Arc, Arc>> = crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::structuredencryption::internaldafny::_default::StructuredEncryption(&crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::structuredencryption::internaldafny::_default::DefaultStructuredEncryptionConfig()); @@ -109239,7 +110046,7 @@ pub mod _HappyCaseTests_Compile { let mut cmm: Object; let mut _out1: Object = crate::implementation_from_dafny::_StructuredDataTestFixtures_Compile::_default::GetDefaultCMMWithKMSKeyring(); cmm = _out1.clone(); - let mut encContext: Map, Sequence> = map![(crate::implementation_from_dafny::UTF8::_default::EncodeAscii(&string_utf16_of("some"))) => (crate::implementation_from_dafny::UTF8::_default::EncodeAscii(&string_utf16_of("value")))]; + let mut encContext: Map, Sequence> = map![(_default::some()) => (_default::value())]; let mut algSuiteId: Arc = crate::implementation_from_dafny::_AlgorithmSuites_Compile::_default::DBE_ALG_AES_256_GCM_HKDF_SHA512_COMMIT_KEY_ECDSA_P384_SYMSIG_HMAC_SHA384().id().DBE().clone(); let mut encryptRes: Arc, Arc>>; let mut _out2: Arc, Arc>> = IStructuredEncryptionClient::EncryptStructure(rd!(structuredEncryption.clone()), &Arc::new(EncryptStructureInput::EncryptStructureInput { @@ -109364,9 +110171,19 @@ pub mod _HappyCaseTests_Compile { }; return (); } + /// dafny/StructuredEncryption/test/HappyCaseTests.dfy(16,3) + pub fn some() -> ValidUTF8Bytes { + let mut s: Sequence = seq![115, 111, 109, 101]; + s.clone() + } + /// dafny/StructuredEncryption/test/HappyCaseTests.dfy(21,3) + pub fn value() -> ValidUTF8Bytes { + let mut s: Sequence = seq![118, 97, 108, 117, 101]; + s.clone() + } } - /// dafny/StructuredEncryption/test/HappyCaseTests.dfy(16,3) + /// dafny/StructuredEncryption/test/HappyCaseTests.dfy(26,3) #[test] pub fn TestRoundTrip() { _default::TestRoundTrip() @@ -109496,11 +110313,16 @@ pub mod _HexStrings_Compile { } /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/KeyWrapping/IntermediateKeyWrapping.dfy(9,1) pub mod _IntermediateKeyWrapping_Compile { + pub use ::dafny_runtime::Sequence; + pub use ::dafny_runtime::seq; + pub use ::std::sync::Arc; + pub use ::dafny_runtime::DafnyInt; + pub use ::dafny_runtime::integer_range; + pub use ::dafny_runtime::Zero; + pub use ::dafny_runtime::int; pub use ::dafny_runtime::DafnyType; pub use ::dafny_runtime::Object; pub use crate::implementation_from_dafny::_MaterialWrapping_Compile::UnwrapMaterial; - pub use ::dafny_runtime::Sequence; - pub use ::std::sync::Arc; pub use crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::AlgorithmSuiteInfo; pub use ::dafny_runtime::Map; pub use crate::implementation_from_dafny::UTF8::ValidUTF8Bytes; @@ -109513,19 +110335,16 @@ pub mod _IntermediateKeyWrapping_Compile { pub use crate::implementation_from_dafny::_Actions_Compile::Action; pub use crate::implementation_from_dafny::_MaterialWrapping_Compile::UnwrapInput; pub use ::dafny_runtime::rd; - pub use ::dafny_runtime::DafnyInt; - pub use ::dafny_runtime::integer_range; - pub use ::dafny_runtime::Zero; - pub use ::dafny_runtime::int; + pub use ::dafny_runtime::truncate; pub use crate::implementation_from_dafny::software::amazon::cryptography::primitives::internaldafny::types::AESDecryptInput; - pub use crate::implementation_from_dafny::_Wrappers_Compile::Outcome; - pub use ::dafny_runtime::string_utf16_of; pub use crate::implementation_from_dafny::_MaterialWrapping_Compile::GenerateAndWrapMaterial; pub use crate::implementation_from_dafny::_MaterialWrapping_Compile::GenerateAndWrapOutput; pub use crate::implementation_from_dafny::_MaterialWrapping_Compile::GenerateAndWrapInput; pub use crate::implementation_from_dafny::software::amazon::cryptography::primitives::internaldafny::types::AESEncryptInput; pub use crate::implementation_from_dafny::software::amazon::cryptography::primitives::internaldafny::types::AESEncryptOutput; pub use crate::implementation_from_dafny::software::amazon::cryptography::primitives::internaldafny::types::GenerateRandomBytesInput; + pub use crate::implementation_from_dafny::_Wrappers_Compile::Outcome; + pub use ::dafny_runtime::string_utf16_of; pub use crate::implementation_from_dafny::software::amazon::cryptography::primitives::internaldafny::types::HkdfExtractInput; pub use crate::implementation_from_dafny::_Wrappers_Compile::Option; pub use crate::implementation_from_dafny::software::amazon::cryptography::primitives::internaldafny::types::HkdfExpandInput; @@ -109541,7 +110360,22 @@ pub mod _IntermediateKeyWrapping_Compile { pub struct _default {} impl _default { - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/KeyWrapping/IntermediateKeyWrapping.dfy(49,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/KeyWrapping/IntermediateKeyWrapping.dfy(57,3) + pub fn GetIvLengthZeros(len: i32) -> Sequence { + if len == 12 { + seq![0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] + } else { + { + let _initializer = { + Arc::new(move |_v0: &DafnyInt| -> u8{ + 0 + }) + }; + integer_range(Zero::zero(), int!(len)).map(move |i| _initializer(&i)).collect::>() + } + } + } + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/KeyWrapping/IntermediateKeyWrapping.dfy(69,3) pub fn IntermediateUnwrap<_T: DafnyType>(unwrap: &Object>, wrappedMaterial: &Sequence, algorithmSuite: &Arc, encryptionContext: &Map) -> Arc>, Arc>> { let mut res = MaybePlacebo::>, Arc>>>::new(); let mut maybeCrypto: Arc, Arc>>; @@ -109569,11 +110403,13 @@ pub mod _IntermediateKeyWrapping_Compile { let mut __let_tmp_rhs0: Arc = deserializedWrapped.clone(); let mut encryptedPdk: Sequence = __let_tmp_rhs0.encryptedPdk().clone(); let mut providerWrappedIkm: Sequence = __let_tmp_rhs0.providerWrappedIkm().clone(); + let mut serializedEC: Arc, Arc>> = crate::implementation_from_dafny::_CanonicalEncryptionContext_Compile::_default::EncryptionContextToAAD(encryptionContext); let mut valueOrError2: Arc>, Arc>>; let mut _out1: Arc>, Arc>> = Action::, Arc>, Arc>>>::Invoke(rd!(unwrap.clone()), &Arc::new(UnwrapInput::UnwrapInput { wrappedMaterial: providerWrappedIkm.clone(), algorithmSuite: algorithmSuite.clone(), - encryptionContext: encryptionContext.clone() + encryptionContext: encryptionContext.clone(), + serializedEC: serializedEC.clone() })); valueOrError2 = _out1.clone(); if valueOrError2.IsFailure() { @@ -109595,16 +110431,9 @@ pub mod _IntermediateKeyWrapping_Compile { let mut __let_tmp_rhs2: Arc = derivedKeys.clone(); let mut pdkEncryptionKey: Sequence = __let_tmp_rhs2.pdkEncryptionKey().clone(); let mut symmetricSigningKey: Sequence = __let_tmp_rhs2.symmetricSigningKey().clone(); - let mut iv: Sequence = { - let _initializer = { - Arc::new(move |_v0: &DafnyInt| -> u8{ - 0 - }) - }; - integer_range(Zero::zero(), int!(crate::implementation_from_dafny::_AlgorithmSuites_Compile::_default::GetEncryptIvLength(algorithmSuite))).map(move |i| _initializer(&i)).collect::>() - }; - let mut tagIndex: DafnyInt = encryptedPdk.cardinality() - int!(crate::implementation_from_dafny::_AlgorithmSuites_Compile::_default::GetEncryptTagLength(algorithmSuite)); - let mut valueOrError4: Arc, Arc>> = crate::implementation_from_dafny::_CanonicalEncryptionContext_Compile::_default::EncryptionContextToAAD(encryptionContext); + let mut iv: Sequence = _default::GetIvLengthZeros(crate::implementation_from_dafny::_AlgorithmSuites_Compile::_default::GetEncryptIvLength(algorithmSuite)); + let mut tagIndex: u64 = truncate!(encryptedPdk.cardinality(), u64) - crate::implementation_from_dafny::_AlgorithmSuites_Compile::_default::GetEncryptTagLength(algorithmSuite) as u64; + let mut valueOrError4: Arc, Arc>> = serializedEC.clone(); if valueOrError4.IsFailure() { res = MaybePlacebo::from(valueOrError4.PropagateFailure::>>()); return res.read(); @@ -109613,8 +110442,8 @@ pub mod _IntermediateKeyWrapping_Compile { let mut decInput: Arc = Arc::new(AESDecryptInput::AESDecryptInput { encAlg: algorithmSuite.encrypt().AES_GCM().clone(), key: pdkEncryptionKey.clone(), - cipherTxt: encryptedPdk.take(&tagIndex), - authTag: encryptedPdk.drop(&tagIndex), + cipherTxt: encryptedPdk.take(&int!((&tagIndex).clone())), + authTag: encryptedPdk.drop(&int!((&tagIndex).clone())), iv: iv.clone(), aad: aad.clone() }); @@ -109633,13 +110462,6 @@ pub mod _IntermediateKeyWrapping_Compile { return res.read(); }; let mut plaintextDataKey: Sequence = valueOrError5.Extract(); - let mut valueOrError6: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(plaintextDataKey.cardinality() == int!(crate::implementation_from_dafny::_AlgorithmSuites_Compile::_default::GetEncryptKeyLength(algorithmSuite)), &Arc::new(crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::Error::AwsCryptographicMaterialProvidersException { - message: string_utf16_of("Unexpected AES_GCM Decrypt length") - })); - if valueOrError6.IsFailure() { - res = MaybePlacebo::from(valueOrError6.PropagateFailure::>>()); - return res.read(); - }; res = MaybePlacebo::from(Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::>, Arc>::Success { value: Arc::new(IntermediateUnwrapOutput::<_T>::IntermediateUnwrapOutput { plaintextDataKey: plaintextDataKey.clone(), @@ -109649,7 +110471,7 @@ pub mod _IntermediateKeyWrapping_Compile { })); return res.read(); } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/KeyWrapping/IntermediateKeyWrapping.dfy(130,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/KeyWrapping/IntermediateKeyWrapping.dfy(152,3) pub fn IntermediateWrap<_T: DafnyType>(generateAndWrap: &Object>, plaintextDataKey: &Sequence, algorithmSuite: &Arc, encryptionContext: &Map) -> Arc>, Arc>> { let mut res = MaybePlacebo::>, Arc>>>::new(); let mut maybeCrypto: Arc, Arc>>; @@ -109671,7 +110493,8 @@ pub mod _IntermediateKeyWrapping_Compile { let mut valueOrError1: Arc>, Arc>>; let mut _out1: Arc>, Arc>> = Action::, Arc>, Arc>>>::Invoke(rd!(generateAndWrap.clone()), &Arc::new(GenerateAndWrapInput::GenerateAndWrapInput { algorithmSuite: algorithmSuite.clone(), - encryptionContext: encryptionContext.clone() + encryptionContext: encryptionContext.clone(), + serializedEC: crate::implementation_from_dafny::_CanonicalEncryptionContext_Compile::_default::EncryptionContextToAAD(encryptionContext) })); valueOrError1 = _out1.clone(); if valueOrError1.IsFailure() { @@ -109694,14 +110517,7 @@ pub mod _IntermediateKeyWrapping_Compile { let mut __let_tmp_rhs1: Arc = derivedKeys.clone(); let mut pdkEncryptionKey: Sequence = __let_tmp_rhs1.pdkEncryptionKey().clone(); let mut symmetricSigningKey: Sequence = __let_tmp_rhs1.symmetricSigningKey().clone(); - let mut iv: Sequence = { - let _initializer = { - Arc::new(move |_v1: &DafnyInt| -> u8{ - 0 - }) - }; - integer_range(Zero::zero(), int!(crate::implementation_from_dafny::_AlgorithmSuites_Compile::_default::GetEncryptIvLength(algorithmSuite))).map(move |i| _initializer(&i)).collect::>() - }; + let mut iv: Sequence = _default::GetIvLengthZeros(crate::implementation_from_dafny::_AlgorithmSuites_Compile::_default::GetEncryptIvLength(algorithmSuite)); let mut valueOrError3: Arc, Arc>> = crate::implementation_from_dafny::_CanonicalEncryptionContext_Compile::_default::EncryptionContextToAAD(encryptionContext); if valueOrError3.IsFailure() { res = MaybePlacebo::from(valueOrError3.PropagateFailure::>>()); @@ -109730,13 +110546,6 @@ pub mod _IntermediateKeyWrapping_Compile { return res.read(); }; let mut encryptedPdk: Arc = valueOrError4.Extract(); - let mut valueOrError5: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(encryptedPdk.cipherText().concat(encryptedPdk.authTag()).cardinality() == int!(crate::implementation_from_dafny::_AlgorithmSuites_Compile::_default::GetEncryptKeyLength(algorithmSuite) + crate::implementation_from_dafny::_AlgorithmSuites_Compile::_default::GetEncryptTagLength(algorithmSuite)), &Arc::new(crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::Error::AwsCryptographicMaterialProvidersException { - message: string_utf16_of("Unexpected AES_GCM Encrypt length") - })); - if valueOrError5.IsFailure() { - res = MaybePlacebo::from(valueOrError5.PropagateFailure::>>()); - return res.read(); - }; let mut serializedMaterial: Sequence = encryptedPdk.cipherText().concat(encryptedPdk.authTag()).concat(&providerWrappedIkm); res = MaybePlacebo::from(Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::>, Arc>::Success { value: Arc::new(IntermediateWrapOutput::<_T>::IntermediateWrapOutput { @@ -109747,7 +110556,7 @@ pub mod _IntermediateKeyWrapping_Compile { })); return res.read(); } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/KeyWrapping/IntermediateKeyWrapping.dfy(232,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/KeyWrapping/IntermediateKeyWrapping.dfy(255,3) pub fn IntermediateGenerateAndWrap<_T: DafnyType>(generateAndWrap: &Object>, algorithmSuite: &Arc, encryptionContext: &Map) -> Arc>, Arc>> { let mut res = MaybePlacebo::>, Arc>>>::new(); let mut maybeCrypto: Arc, Arc>>; @@ -109800,9 +110609,9 @@ pub mod _IntermediateKeyWrapping_Compile { })); return res.read(); } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/KeyWrapping/IntermediateKeyWrapping.dfy(286,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/KeyWrapping/IntermediateKeyWrapping.dfy(310,3) pub fn DeserializeIntermediateWrappedMaterial(material: &Sequence, algSuite: &Arc) -> Arc, Arc>> { - let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(material.cardinality() >= int!(crate::implementation_from_dafny::_AlgorithmSuites_Compile::_default::GetEncryptKeyLength(algSuite) + crate::implementation_from_dafny::_AlgorithmSuites_Compile::_default::GetEncryptTagLength(algSuite)), &Arc::new(crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::Error::AwsCryptographicMaterialProvidersException { + let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(truncate!(material.cardinality(), u64) >= (crate::implementation_from_dafny::_AlgorithmSuites_Compile::_default::GetEncryptKeyLength(algSuite) + crate::implementation_from_dafny::_AlgorithmSuites_Compile::_default::GetEncryptTagLength(algSuite)) as u64, &Arc::new(crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::Error::AwsCryptographicMaterialProvidersException { message: string_utf16_of("Unable to deserialize Intermediate Key Wrapped material: too short.") })); if valueOrError0.IsFailure() { @@ -109817,7 +110626,7 @@ pub mod _IntermediateKeyWrapping_Compile { }) } } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/KeyWrapping/IntermediateKeyWrapping.dfy(304,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/KeyWrapping/IntermediateKeyWrapping.dfy(329,3) pub fn DeriveKeysFromIntermediateMaterial(intermediateMaterial: &Sequence, algorithmSuite: &Arc, encryptionContext: &Map, cryptoPrimitives: &Object) -> Arc, Arc>> { let mut res = MaybePlacebo::, Arc>>>::new(); let mut hkdfExtractInput: Arc = Arc::new(HkdfExtractInput::HkdfExtractInput { @@ -109893,17 +110702,19 @@ pub mod _IntermediateKeyWrapping_Compile { })); return res.read(); } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/KeyWrapping/IntermediateKeyWrapping.dfy(24,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/KeyWrapping/IntermediateKeyWrapping.dfy(25,3) pub fn KEYWRAP_MAC_INFO() -> ValidUTF8Bytes { - crate::implementation_from_dafny::UTF8::_default::EncodeAscii(&string_utf16_of("AWS_MPL_INTERMEDIATE_KEYWRAP_MAC")) + let mut s: Sequence = seq![65, 87, 83, 95, 77, 80, 76, 95, 73, 78, 84, 69, 82, 77, 69, 68, 73, 65, 84, 69, 95, 75, 69, 89, 87, 82, 65, 80, 95, 77, 65, 67]; + s.clone() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/KeyWrapping/IntermediateKeyWrapping.dfy(25,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/KeyWrapping/IntermediateKeyWrapping.dfy(30,3) pub fn KEYWRAP_ENC_INFO() -> ValidUTF8Bytes { - crate::implementation_from_dafny::UTF8::_default::EncodeAscii(&string_utf16_of("AWS_MPL_INTERMEDIATE_KEYWRAP_ENC")) + let mut s: Sequence = seq![65, 87, 83, 95, 77, 80, 76, 95, 73, 78, 84, 69, 82, 77, 69, 68, 73, 65, 84, 69, 95, 75, 69, 89, 87, 82, 65, 80, 95, 69, 78, 67]; + s.clone() } } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/KeyWrapping/IntermediateKeyWrapping.dfy(27,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/KeyWrapping/IntermediateKeyWrapping.dfy(35,3) #[derive(PartialEq, Clone)] pub enum IntermediateUnwrapOutput { IntermediateUnwrapOutput { @@ -109993,7 +110804,7 @@ pub mod _IntermediateKeyWrapping_Compile { } } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/KeyWrapping/IntermediateKeyWrapping.dfy(34,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/KeyWrapping/IntermediateKeyWrapping.dfy(42,3) #[derive(PartialEq, Clone)] pub enum IntermediateGenerateAndWrapOutput { IntermediateGenerateAndWrapOutput { @@ -110094,7 +110905,7 @@ pub mod _IntermediateKeyWrapping_Compile { } } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/KeyWrapping/IntermediateKeyWrapping.dfy(42,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/KeyWrapping/IntermediateKeyWrapping.dfy(50,3) #[derive(PartialEq, Clone)] pub enum IntermediateWrapOutput { IntermediateWrapOutput { @@ -110184,7 +110995,7 @@ pub mod _IntermediateKeyWrapping_Compile { } } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/KeyWrapping/IntermediateKeyWrapping.dfy(279,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/KeyWrapping/IntermediateKeyWrapping.dfy(303,3) #[derive(PartialEq, Clone)] pub enum DeserializedIntermediateWrappedMaterial { DeserializedIntermediateWrappedMaterial { @@ -110263,7 +111074,7 @@ pub mod _IntermediateKeyWrapping_Compile { } } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/KeyWrapping/IntermediateKeyWrapping.dfy(299,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/KeyWrapping/IntermediateKeyWrapping.dfy(324,3) #[derive(PartialEq, Clone)] pub enum PdkEncryptionAndSymmetricSigningKeys { PdkEncryptionAndSymmetricSigningKeys { @@ -113061,24 +113872,24 @@ pub mod _JSON_Compile { }) } else { { - let __pat_let39_0: View = View_::OfBytes(&seq![DafnyCharUTF16(101 as u16).0 as u8]); + let __pat_let41_0: View = View_::OfBytes(&seq![DafnyCharUTF16(101 as u16).0 as u8]); { - let e: je = __pat_let39_0.clone(); + let e: je = __pat_let41_0.clone(); { - let __pat_let40_0: jminus = crate::implementation_from_dafny::_JSON_Compile::_Serializer_Compile::_default::Sign(dec.e10()); + let __pat_let42_0: jminus = crate::implementation_from_dafny::_JSON_Compile::_Serializer_Compile::_default::Sign(dec.e10()); { - let sign: jsign = __pat_let40_0.clone(); + let sign: jsign = __pat_let42_0.clone(); { - let __pat_let41_0: Arc>> = crate::implementation_from_dafny::_JSON_Compile::_Serializer_Compile::_default::Int(&crate::implementation_from_dafny::_Math_Compile::_default::Abs(dec.e10())); + let __pat_let43_0: Arc>> = crate::implementation_from_dafny::_JSON_Compile::_Serializer_Compile::_default::Int(&crate::implementation_from_dafny::_Math_Compile::_default::Abs(dec.e10())); { - let valueOrError2: Arc>> = __pat_let41_0.clone(); + let valueOrError2: Arc>> = __pat_let43_0.clone(); if valueOrError2.IsFailure() { valueOrError2.PropagateFailure::>>>() } else { { - let __pat_let42_0: View = valueOrError2.Extract(); + let __pat_let44_0: View = valueOrError2.Extract(); { - let num: jnum = __pat_let42_0.clone(); + let num: jnum = __pat_let44_0.clone(); Arc::new(Result::>>, Arc>::Success { value: Arc::new(Maybe::>::NonEmpty { t: Arc::new(jexp::JExp { @@ -113512,9 +114323,9 @@ pub mod _JSON_Compile { crate::implementation_from_dafny::_UnicodeStrings_Compile::_default::ASCIIToUTF16(&string_utf16_of("\\t")) } else { { - let __pat_let43_0: u16 = str.get(&start); + let __pat_let45_0: u16 = str.get(&start); { - let c: u16 = __pat_let43_0; + let c: u16 = __pat_let45_0; if c < truncate!(int!(31), u16) { crate::implementation_from_dafny::_UnicodeStrings_Compile::_default::ASCIIToUTF16(&string_utf16_of("\\u")).concat(&crate::implementation_from_dafny::_JSON_Compile::_Spec_Compile::_default::EscapeUnicode(c)) } else { @@ -118213,12 +119024,12 @@ pub mod _KMSKeystoreOperations_Compile { pub use crate::implementation_from_dafny::software::amazon::cryptography::services::kms::internaldafny::types::DecryptResponse; pub use crate::implementation_from_dafny::software::amazon::cryptography::services::kms::internaldafny::types::DecryptRequest; pub use crate::implementation_from_dafny::software::amazon::cryptography::services::kms::internaldafny::types::RecipientInfo; - pub use ::dafny_runtime::int; + pub use ::dafny_runtime::truncate; pub struct _default {} impl _default { - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographyKeyStore/src/KMSKeystoreOperations.dfy(23,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographyKeyStore/src/KMSKeystoreOperations.dfy(24,3) pub fn replaceRegion(arn: &Sequence, region: &Sequence) -> Sequence { let mut parsed: Arc>> = crate::implementation_from_dafny::_AwsArnParsing_Compile::_default::ParseAwsKmsArn(arn); if matches!((&parsed).as_ref(), Failure{ .. }) { @@ -118238,7 +119049,7 @@ pub mod _KMSKeystoreOperations_Compile { } } } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographyKeyStore/src/KMSKeystoreOperations.dfy(38,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographyKeyStore/src/KMSKeystoreOperations.dfy(39,3) pub fn GetArn(kmsConfiguration: &Arc, discoverdArn: &Sequence) -> Sequence { let mut _source0: Arc = kmsConfiguration.clone(); if matches!((&_source0).as_ref(), kmsKeyArn{ .. }) { @@ -118263,7 +119074,7 @@ pub mod _KMSKeystoreOperations_Compile { } } } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographyKeyStore/src/KMSKeystoreOperations.dfy(48,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographyKeyStore/src/KMSKeystoreOperations.dfy(49,3) pub fn _AttemptKmsOperation_q(kmsConfiguration: &Arc, encryptionContext: &BranchKeyContext) -> bool { let mut _source0: Arc = kmsConfiguration.clone(); if matches!((&_source0).as_ref(), kmsKeyArn{ .. }) { @@ -118288,7 +119099,7 @@ pub mod _KMSKeystoreOperations_Compile { } } } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographyKeyStore/src/KMSKeystoreOperations.dfy(59,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographyKeyStore/src/KMSKeystoreOperations.dfy(60,3) pub fn _Compatible_q(kmsConfiguration: &Arc, keyId: &Sequence) -> bool { let mut _source0: Arc = kmsConfiguration.clone(); if matches!((&_source0).as_ref(), kmsKeyArn{ .. }) { @@ -118301,11 +119112,11 @@ pub mod _KMSKeystoreOperations_Compile { _default::MrkMatch(&arn, keyId) } } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographyKeyStore/src/KMSKeystoreOperations.dfy(67,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographyKeyStore/src/KMSKeystoreOperations.dfy(68,3) pub fn _OptCompatible_q(kmsConfiguration: &Arc, keyId: &Arc>>) -> bool { matches!(keyId.as_ref(), Some{ .. }) && _default::_Compatible_q(kmsConfiguration, keyId.value()) } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographyKeyStore/src/KMSKeystoreOperations.dfy(73,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographyKeyStore/src/KMSKeystoreOperations.dfy(74,3) pub fn MrkMatch(x: &Sequence, y: &Sequence) -> bool { let mut xArn: Arc>> = crate::implementation_from_dafny::_AwsArnParsing_Compile::_default::ParseAwsKmsArn(x); let mut yArn: Arc>> = crate::implementation_from_dafny::_AwsArnParsing_Compile::_default::ParseAwsKmsArn(y); @@ -118319,11 +119130,11 @@ pub mod _KMSKeystoreOperations_Compile { })) } } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographyKeyStore/src/KMSKeystoreOperations.dfy(83,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographyKeyStore/src/KMSKeystoreOperations.dfy(84,3) pub fn HasKeyId(kmsConfiguration: &Arc) -> bool { matches!(kmsConfiguration.as_ref(), kmsKeyArn{ .. }) || matches!(kmsConfiguration.as_ref(), kmsMRKeyArn{ .. }) } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographyKeyStore/src/KMSKeystoreOperations.dfy(88,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographyKeyStore/src/KMSKeystoreOperations.dfy(89,3) pub fn GetKeyId(kmsConfiguration: &Arc) -> Sequence { let mut _source0: Arc = kmsConfiguration.clone(); if matches!((&_source0).as_ref(), kmsKeyArn{ .. }) { @@ -118336,7 +119147,7 @@ pub mod _KMSKeystoreOperations_Compile { arn.clone() } } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographyKeyStore/src/KMSKeystoreOperations.dfy(96,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographyKeyStore/src/KMSKeystoreOperations.dfy(97,3) pub fn GenerateKey(encryptionContext: &BranchKeyContext, kmsConfiguration: &Arc, grantTokens: &GrantTokenList, kmsClient: &Object) -> Arc, Arc>> { let mut res = MaybePlacebo::, Arc>>>::new(); let mut kmsKeyArn: Sequence = _default::GetKeyId(kmsConfiguration); @@ -118388,7 +119199,7 @@ pub mod _KMSKeystoreOperations_Compile { })); return res.read(); } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographyKeyStore/src/KMSKeystoreOperations.dfy(159,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographyKeyStore/src/KMSKeystoreOperations.dfy(160,3) pub fn ReEncryptKey(ciphertext: &Sequence, sourceEncryptionContext: &BranchKeyContext, destinationEncryptionContext: &BranchKeyContext, kmsConfiguration: &Arc, grantTokens: &GrantTokenList, kmsClient: &Object) -> Arc, Arc>> { let mut res = MaybePlacebo::, Arc>>>::new(); let mut kmsKeyArn: Sequence = _default::GetKeyId(kmsConfiguration); @@ -118445,7 +119256,7 @@ pub mod _KMSKeystoreOperations_Compile { })); return res.read(); } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographyKeyStore/src/KMSKeystoreOperations.dfy(247,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographyKeyStore/src/KMSKeystoreOperations.dfy(248,3) pub fn DecryptKey(encryptionContext: &BranchKeyContext, item: &BranchKeyItem, kmsConfiguration: &Arc, grantTokens: &GrantTokenList, kmsClient: &Object) -> Arc, Arc>> { let mut output = MaybePlacebo::, Arc>>>::new(); let mut kmsKeyArn: Sequence = _default::GetArn(kmsConfiguration, &encryptionContext.get(&crate::implementation_from_dafny::_Structure_Compile::_default::KMS_FIELD())); @@ -118478,7 +119289,7 @@ pub mod _KMSKeystoreOperations_Compile { return output.read(); }; let mut decryptResponse: Arc = valueOrError0.Extract(); - let mut valueOrError1: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(matches!(decryptResponse.Plaintext().as_ref(), Some{ .. }) && int!(32) == decryptResponse.Plaintext().value().cardinality(), &Arc::new(crate::implementation_from_dafny::software::amazon::cryptography::keystore::internaldafny::types::Error::KeyStoreException { + let mut valueOrError1: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(matches!(decryptResponse.Plaintext().as_ref(), Some{ .. }) && 32 == truncate!(decryptResponse.Plaintext().value().cardinality(), u64), &Arc::new(crate::implementation_from_dafny::software::amazon::cryptography::keystore::internaldafny::types::Error::KeyStoreException { message: string_utf16_of("Invalid response from AWS KMS Decrypt: Key is not 32 bytes.") })); if valueOrError1.IsFailure() { @@ -118502,25 +119313,25 @@ pub mod _KdfCtr_Compile { pub use ::dafny_runtime::MaybePlacebo; pub use crate::implementation_from_dafny::_Wrappers_Compile::Outcome; pub use crate::implementation_from_dafny::software::amazon::cryptography::primitives::internaldafny::types::DigestAlgorithm; - pub use ::dafny_runtime::int; + pub use ::dafny_runtime::truncate; pub use crate::implementation_from_dafny::_Wrappers_Compile::Option::Some; pub use ::dafny_runtime::string_utf16_of; pub use ::dafny_runtime::seq; - pub use ::dafny_runtime::truncate; pub use ::dafny_runtime::Object; pub use crate::implementation_from_dafny::HMAC::HMac; pub use ::dafny_runtime::rd; pub use ::dafny_runtime::euclidian_division; + pub use ::dafny_runtime::int; pub use ::dafny_runtime::integer_range; pub use ::std::convert::Into; pub struct _default {} impl _default { - /// ../submodules/MaterialProviders/AwsCryptographyPrimitives/src/KDF/KdfCtr.dfy(27,3) + /// ../submodules/MaterialProviders/AwsCryptographyPrimitives/src/KDF/KdfCtr.dfy(28,3) pub fn KdfCounterMode(input: &Arc) -> Arc, Arc>> { let mut output = MaybePlacebo::, Arc>>>::new(); - let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>((input.digestAlgorithm().clone() == Arc::new(DigestAlgorithm::SHA_256 {}) || input.digestAlgorithm().clone() == Arc::new(DigestAlgorithm::SHA_384 {})) && (input.ikm().cardinality() == int!(32) || input.ikm().cardinality() == int!(48) || input.ikm().cardinality() == int!(66)) && matches!(input.nonce().as_ref(), Some{ .. }) && (input.nonce().value().cardinality() == int!(16) || input.nonce().value().cardinality() == int!(32)) && (input.expectedLength().clone() == 32 || input.expectedLength().clone() == 64) && (int!(0) < int!(input.expectedLength().clone()) * int!(8) && int!(input.expectedLength().clone()) * int!(8) < crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default::INT32_MAX_LIMIT()), &Arc::new(Error::AwsCryptographicPrimitivesError { + let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>((input.digestAlgorithm().clone() == Arc::new(DigestAlgorithm::SHA_256 {}) || input.digestAlgorithm().clone() == Arc::new(DigestAlgorithm::SHA_384 {})) && (truncate!(input.ikm().cardinality(), u64) == 32 || truncate!(input.ikm().cardinality(), u64) == 48 || truncate!(input.ikm().cardinality(), u64) == 66) && matches!(input.nonce().as_ref(), Some{ .. }) && (truncate!(input.nonce().value().cardinality(), u64) == 16 || truncate!(input.nonce().value().cardinality(), u64) == 32) && (input.expectedLength().clone() == 32 || input.expectedLength().clone() == 64) && (0 < (input.expectedLength().clone() * 8) as u64 && ((input.expectedLength().clone() * 8) as u64) < truncate!(crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default::INT32_MAX_LIMIT(), u64)), &Arc::new(Error::AwsCryptographicPrimitivesError { message: string_utf16_of("Kdf in Counter Mode input is invalid.") })); if valueOrError0.IsFailure() { @@ -118531,8 +119342,8 @@ pub mod _KdfCtr_Compile { let mut label_: Sequence = input.purpose().UnwrapOr(&(seq![] as Sequence)); let mut info: Sequence = input.nonce().UnwrapOr(&(seq![] as Sequence)); let mut okm: Sequence = seq![] as Sequence; - let mut internalLength: u32 = truncate!(int!(4) + _default::SEPARATION_INDICATOR().cardinality() + int!(4), u32); - let mut valueOrError1: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(true && int!(internalLength) + label_.cardinality() + info.cardinality() < crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default::INT32_MAX_LIMIT(), &Arc::new(Error::AwsCryptographicPrimitivesError { + let mut internalLength: u32 = (4 + truncate!(_default::SEPARATION_INDICATOR().cardinality(), u64) + 4) as u32; + let mut valueOrError1: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(true && crate::implementation_from_dafny::_StandardLibrary_Compile::_MemoryMath_Compile::_default::Add3(internalLength as u64, truncate!(label_.cardinality(), u64), truncate!(info.cardinality(), u64)) < truncate!(crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default::INT32_MAX_LIMIT(), u64), &Arc::new(Error::AwsCryptographicPrimitivesError { message: string_utf16_of("Input Length exceeds INT32_MAX_LIMIT") })); if valueOrError1.IsFailure() { @@ -118541,7 +119352,7 @@ pub mod _KdfCtr_Compile { }; let mut lengthBits: Sequence = crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default::UInt32ToSeq((input.expectedLength().clone() * 8) as u32); let mut explicitInfo: Sequence = label_.concat(&_default::SEPARATION_INDICATOR()).concat(&info).concat(&lengthBits); - let mut valueOrError2: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(int!(4) + explicitInfo.cardinality() < crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default::INT32_MAX_LIMIT(), &Arc::new(Error::AwsCryptographicPrimitivesError { + let mut valueOrError2: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(4 + truncate!(explicitInfo.cardinality(), u64) < truncate!(crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default::INT32_MAX_LIMIT(), u64), &Arc::new(Error::AwsCryptographicPrimitivesError { message: string_utf16_of("PRF input length exceeds INT32_MAX_LIMIT.") })); if valueOrError2.IsFailure() { @@ -118561,7 +119372,7 @@ pub mod _KdfCtr_Compile { })); return output.read(); } - /// ../submodules/MaterialProviders/AwsCryptographyPrimitives/src/KDF/KdfCtr.dfy(68,3) + /// ../submodules/MaterialProviders/AwsCryptographyPrimitives/src/KDF/KdfCtr.dfy(74,3) pub fn RawDerive(ikm: &Sequence, explicitInfo: &Sequence, length: i32, offset: i32, digestAlgorithm: &Arc) -> Arc, Arc>> { let mut output = MaybePlacebo::, Arc>>>::new(); let mut valueOrError0: Arc, Arc>>; @@ -118573,12 +119384,12 @@ pub mod _KdfCtr_Compile { }; let mut hmac: Object = valueOrError0.Extract(); rd!(hmac).Init(ikm); - let mut macLengthBytes: i32 = truncate!(crate::implementation_from_dafny::_Digest_Compile::_default::Length(digestAlgorithm), i32); + let mut macLengthBytes: i32 = crate::implementation_from_dafny::_Digest_Compile::_default::Length(digestAlgorithm) as i32; let mut iterations: i32 = truncate!(euclidian_division(int!(length + macLengthBytes - 1), int!(macLengthBytes)), i32); let mut buffer: Sequence = seq![] as Sequence; let mut i: Sequence = crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default::UInt32ToSeq(_default::COUNTER_START_VALUE()); - let mut _hi0: i32 = iterations + 1; - for iteration in integer_range(1, _hi0).map(Into::::into) { + let mut _hi0: u64 = crate::implementation_from_dafny::_StandardLibrary_Compile::_MemoryMath_Compile::_default::Add(iterations as u64, 1); + for iteration in integer_range(1, _hi0).map(Into::::into) { rd!(hmac).BlockUpdate(&i); rd!(hmac).BlockUpdate(explicitInfo); let mut tmp: Sequence; @@ -118592,7 +119403,7 @@ pub mod _KdfCtr_Compile { }; i = valueOrError1.Extract(); } - let mut valueOrError2: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(buffer.cardinality() >= int!(length), &Arc::new(Error::AwsCryptographicPrimitivesError { + let mut valueOrError2: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(truncate!(buffer.cardinality(), u64) >= length as u64, &Arc::new(Error::AwsCryptographicPrimitivesError { message: string_utf16_of("Failed to derive key of requested length") })); if valueOrError2.IsFailure() { @@ -118604,26 +119415,26 @@ pub mod _KdfCtr_Compile { })); return output.read(); } - /// ../submodules/MaterialProviders/AwsCryptographyPrimitives/src/KDF/KdfCtr.dfy(114,3) + /// ../submodules/MaterialProviders/AwsCryptographyPrimitives/src/KDF/KdfCtr.dfy(121,3) pub fn Increment(x: &Sequence) -> Arc, Arc>> { - if x.get(&int!(3)) < 255 { + if x.get(&int!((&truncate!((&int!(3)).clone(), u32)).clone())) < 255 { Arc::new(Result::, Arc>::Success { - value: seq![x.get(&int!(0)), x.get(&int!(1)), x.get(&int!(2)), x.get(&int!(3)) + 1] + value: seq![x.get(&int!((&truncate!((&int!(0)).clone(), u32)).clone())), x.get(&int!((&truncate!((&int!(1)).clone(), u32)).clone())), x.get(&int!((&truncate!((&int!(2)).clone(), u32)).clone())), x.get(&int!((&truncate!((&int!(3)).clone(), u32)).clone())) + 1] }) } else { - if x.get(&int!(2)) < 255 { + if x.get(&int!((&truncate!((&int!(2)).clone(), u32)).clone())) < 255 { Arc::new(Result::, Arc>::Success { - value: seq![x.get(&int!(0)), x.get(&int!(1)), x.get(&int!(2)) + 1, 0] + value: seq![x.get(&int!((&truncate!((&int!(0)).clone(), u32)).clone())), x.get(&int!((&truncate!((&int!(1)).clone(), u32)).clone())), x.get(&int!((&truncate!((&int!(2)).clone(), u32)).clone())) + 1, 0] }) } else { - if x.get(&int!(1)) < 255 { + if x.get(&int!((&truncate!((&int!(1)).clone(), u32)).clone())) < 255 { Arc::new(Result::, Arc>::Success { - value: seq![x.get(&int!(0)), x.get(&int!(1)) + 1, 0, 0] + value: seq![x.get(&int!((&truncate!((&int!(0)).clone(), u32)).clone())), x.get(&int!((&truncate!((&int!(1)).clone(), u32)).clone())) + 1, 0, 0] }) } else { - if x.get(&int!(0)) < 255 { + if x.get(&int!((&truncate!((&int!(0)).clone(), u32)).clone())) < 255 { Arc::new(Result::, Arc>::Success { - value: seq![x.get(&int!(0)) + 1, 0, 0, 0] + value: seq![x.get(&int!((&truncate!((&int!(0)).clone(), u32)).clone())) + 1, 0, 0, 0] }) } else { Arc::new(Result::, Arc>::Failure { @@ -118636,11 +119447,11 @@ pub mod _KdfCtr_Compile { } } } - /// ../submodules/MaterialProviders/AwsCryptographyPrimitives/src/KDF/KdfCtr.dfy(21,3) + /// ../submodules/MaterialProviders/AwsCryptographyPrimitives/src/KDF/KdfCtr.dfy(22,3) pub fn SEPARATION_INDICATOR() -> Sequence { seq![0] } - /// ../submodules/MaterialProviders/AwsCryptographyPrimitives/src/KDF/KdfCtr.dfy(22,3) + /// ../submodules/MaterialProviders/AwsCryptographyPrimitives/src/KDF/KdfCtr.dfy(23,3) pub fn COUNTER_START_VALUE() -> u32 { 1 } @@ -118730,9 +119541,9 @@ pub mod _KmsArn_Compile { /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographyKeyStore/src/KmsArn.dfy(16,3) pub fn _ValidKmsArn_q(input: &Sequence) -> bool { crate::implementation_from_dafny::software::amazon::cryptography::services::kms::internaldafny::types::_default::IsValid_KeyIdType(input) && ({ - let __pat_let44_0: Arc>> = crate::implementation_from_dafny::_AwsArnParsing_Compile::_default::ParseAwsKmsArn(input); + let __pat_let46_0: Arc>> = crate::implementation_from_dafny::_AwsArnParsing_Compile::_default::ParseAwsKmsArn(input); { - let maybeParsed: Arc>> = __pat_let44_0.clone(); + let maybeParsed: Arc>> = __pat_let46_0.clone(); matches!((&maybeParsed).as_ref(), Success{ .. }) && maybeParsed.value().resource().resourceType().clone() == string_utf16_of("key") } }) @@ -118803,7 +119614,6 @@ pub mod _LocalCMC_Compile { pub use ::dafny_runtime::modify_field; pub use ::dafny_runtime::rd; pub use crate::implementation_from_dafny::_LocalCMC_Compile::Ref::Null; - pub use ::dafny_runtime::_System::nat; pub use crate::implementation_from_dafny::DafnyLibraries::MutableMap; pub use crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::GetCacheEntryInput; pub use crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::GetCacheEntryOutput; @@ -118814,34 +119624,35 @@ pub mod _LocalCMC_Compile { pub use crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::DeleteCacheEntryInput; pub use ::dafny_runtime::string_utf16_of; pub use ::dafny_runtime::integer_range; - pub use ::dafny_runtime::int; + pub use ::std::convert::Into; pub use crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::PutCacheEntryInput; pub use ::dafny_runtime::truncate; + pub use ::dafny_runtime::int; pub use crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::UpdateUsageMetadataInput; pub struct _default {} impl _default { - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/CMCs/LocalCMC.dfy(300,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/CMCs/LocalCMC.dfy(301,3) pub fn RemoveValue<_K: DafnyTypeEq, _V: DafnyTypeEq>(k0: &_K, m: &Map<_K, _V>) -> () { let mut _m_k: Map<_K, _V> = m.subtract(&set!{k0.clone()}); return (); } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/CMCs/LocalCMC.dfy(57,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/CMCs/LocalCMC.dfy(58,3) pub fn NULL() -> Arc>> { Arc::new(Ref::>::Null {}) } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/CMCs/LocalCMC.dfy(58,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/CMCs/LocalCMC.dfy(59,3) pub fn INT32_MAX_VALUE() -> i32 { 2040109465 } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/CMCs/LocalCMC.dfy(59,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/CMCs/LocalCMC.dfy(60,3) pub fn INT64_MAX_VALUE() -> i64 { 8762203435012037017 } } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/CMCs/LocalCMC.dfy(52,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/CMCs/LocalCMC.dfy(53,3) #[derive(PartialEq, Clone)] pub enum Ref { Ptr { @@ -118918,7 +119729,7 @@ pub mod _LocalCMC_Compile { } } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/CMCs/LocalCMC.dfy(61,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/CMCs/LocalCMC.dfy(62,3) pub struct CacheEntry { pub prev: ::dafny_runtime::Field>>>, pub next: ::dafny_runtime::Field>>>, @@ -118935,7 +119746,7 @@ pub mod _LocalCMC_Compile { pub fn _allocate_object() -> Object { allocate_object::() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/CMCs/LocalCMC.dfy(72,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/CMCs/LocalCMC.dfy(73,5) pub fn _ctor(this: &Object, _materials_k: &Arc, _identifier_k: &Sequence, _creationTime_k: PositiveLong, _expiryTime_k: PositiveLong, _messagesUsed_k: PositiveInteger, _bytesUsed_k: PositiveInteger) -> () { let mut _set_prev: bool = false; let mut _set_next: bool = false; @@ -118955,19 +119766,19 @@ pub mod _LocalCMC_Compile { update_field_mut_uninit_object!(this.clone(), next, _set_next, _default::NULL()); return (); } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/CMCs/LocalCMC.dfy(66,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/CMCs/LocalCMC.dfy(67,5) pub fn identifier(&self) -> Sequence { self.__i_identifier.clone() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/CMCs/LocalCMC.dfy(65,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/CMCs/LocalCMC.dfy(66,5) pub fn materials(&self) -> Arc { self.__i_materials.clone() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/CMCs/LocalCMC.dfy(67,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/CMCs/LocalCMC.dfy(68,5) pub fn creationTime(&self) -> PositiveLong { self.__i_creationTime.clone() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/CMCs/LocalCMC.dfy(68,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/CMCs/LocalCMC.dfy(69,5) pub fn expiryTime(&self) -> PositiveLong { self.__i_expiryTime.clone() } @@ -118978,7 +119789,7 @@ pub mod _LocalCMC_Compile { UpcastObjectFn!(DynAny); } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/CMCs/LocalCMC.dfy(102,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/CMCs/LocalCMC.dfy(103,3) pub struct DoublyLinkedCacheEntryList { pub head: ::dafny_runtime::Field>>>, pub tail: ::dafny_runtime::Field>>> @@ -118989,7 +119800,7 @@ pub mod _LocalCMC_Compile { pub fn _allocate_object() -> Object { allocate_object::() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/CMCs/LocalCMC.dfy(160,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/CMCs/LocalCMC.dfy(161,5) pub fn _ctor(this: &Object) -> () { let mut _set_head: bool = false; let mut _set_tail: bool = false; @@ -118997,7 +119808,7 @@ pub mod _LocalCMC_Compile { update_field_mut_uninit_object!(this.clone(), tail, _set_tail, Arc::new(Ref::>::Null {})); return (); } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/CMCs/LocalCMC.dfy(172,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/CMCs/LocalCMC.dfy(173,5) pub fn pushCell(&self, toPush: &Object) -> () { let mut cRef: Arc>> = Arc::new(Ref::>::Ptr { deref: toPush.clone() @@ -119013,7 +119824,7 @@ pub mod _LocalCMC_Compile { }; return (); } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/CMCs/LocalCMC.dfy(192,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/CMCs/LocalCMC.dfy(193,5) pub fn moveToFront(&self, c: &Object) -> () { if read_field!(self.head).deref().clone() != c.clone() { let mut toPush: Arc>> = Arc::new(Ref::>::Ptr { @@ -119033,7 +119844,7 @@ pub mod _LocalCMC_Compile { }; return (); } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/CMCs/LocalCMC.dfy(221,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/CMCs/LocalCMC.dfy(222,5) pub fn remove(&self, toRemove: &Object) -> () { if matches!((&read_field!(rd!(toRemove.clone()).prev)).as_ref(), Null{ .. }) { modify_field!(self.head, read_field!(rd!(toRemove.clone()).next)) @@ -119061,12 +119872,12 @@ pub mod _LocalCMC_Compile { UpcastObjectFn!(DynAny); } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/CMCs/LocalCMC.dfy(315,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/CMCs/LocalCMC.dfy(316,3) pub struct LocalCMC { pub queue: ::dafny_runtime::Field>, pub cache: ::dafny_runtime::Field, Object>>>, - pub __i_entryCapacity: nat, - pub __i_entryPruningTailSize: nat + pub __i_entryCapacity: u64, + pub __i_entryPruningTailSize: u64 } impl LocalCMC { @@ -119074,14 +119885,14 @@ pub mod _LocalCMC_Compile { pub fn _allocate_object() -> Object { allocate_object::() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/CMCs/LocalCMC.dfy(381,5) - pub fn _ctor(this: &Object, _entryCapacity_k: &nat, _entryPruningTailSize_k: &nat) -> () { + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/CMCs/LocalCMC.dfy(382,5) + pub fn _ctor(this: &Object, _entryCapacity_k: u64, _entryPruningTailSize_k: u64) -> () { let mut _set_queue: bool = false; let mut _set_cache: bool = false; let mut _set___i_entryCapacity: bool = false; let mut _set___i_entryPruningTailSize: bool = false; - update_field_uninit_object!(this.clone(), __i_entryCapacity, _set___i_entryCapacity, _entryCapacity_k.clone()); - update_field_uninit_object!(this.clone(), __i_entryPruningTailSize, _set___i_entryPruningTailSize, _entryPruningTailSize_k.clone()); + update_field_uninit_object!(this.clone(), __i_entryCapacity, _set___i_entryCapacity, _entryCapacity_k); + update_field_uninit_object!(this.clone(), __i_entryPruningTailSize, _set___i_entryPruningTailSize, _entryPruningTailSize_k); let mut _nw0: Object, Object>> = MutableMap::, Object>::_allocate_object(); update_field_mut_uninit_object!(this.clone(), cache, _set_cache, _nw0.clone()); let mut _nw1: Object = DoublyLinkedCacheEntryList::_allocate_object(); @@ -119089,7 +119900,7 @@ pub mod _LocalCMC_Compile { update_field_mut_uninit_object!(this.clone(), queue, _set_queue, _nw1.clone()); return (); } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/CMCs/LocalCMC.dfy(423,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/CMCs/LocalCMC.dfy(424,5) pub fn GetCacheEntryWithTime(&self, input: &Arc, now: PositiveLong) -> Arc, Arc>> { let mut output = MaybePlacebo::, Arc>>>::new(); if MutableMapTrait::, Object>::HasKey(rd!(read_field!(self.cache)), input.identifier()) { @@ -119139,11 +119950,11 @@ pub mod _LocalCMC_Compile { }; return output.read(); } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/CMCs/LocalCMC.dfy(652,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/CMCs/LocalCMC.dfy(654,5) pub fn pruning(&self, now: PositiveLong) -> Arc>> { let mut output = MaybePlacebo::>>>::new(); - let mut _hi0: nat = self.entryPruningTailSize().clone(); - for i in integer_range(int!(0), _hi0.clone()) { + let mut _hi0: u64 = self.entryPruningTailSize().clone(); + for i in integer_range(0, _hi0).map(Into::::into) { if matches!((&read_field!(rd!(read_field!(self.queue).clone()).tail)).as_ref(), Ptr{ .. }) { if rd!(read_field!(rd!(read_field!(self.queue).clone()).tail).deref().clone()).expiryTime().clone() < now { let mut valueOrError0: Arc>>; @@ -119174,12 +119985,12 @@ pub mod _LocalCMC_Compile { })); return output.read(); } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/CMCs/LocalCMC.dfy(363,5) - pub fn entryCapacity(&self) -> nat { + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/CMCs/LocalCMC.dfy(364,5) + pub fn entryCapacity(&self) -> u64 { self.__i_entryCapacity.clone() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/CMCs/LocalCMC.dfy(370,5) - pub fn entryPruningTailSize(&self) -> nat { + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/CMCs/LocalCMC.dfy(371,5) + pub fn entryPruningTailSize(&self) -> u64 { self.__i_entryPruningTailSize.clone() } } @@ -119191,7 +120002,7 @@ pub mod _LocalCMC_Compile { impl ICryptographicMaterialsCache for LocalCMC { - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/CMCs/LocalCMC.dfy(409,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/CMCs/LocalCMC.dfy(410,5) fn _GetCacheEntry_k(&self, input: &Arc) -> Arc, Arc>> { let mut output: Arc, Arc>>; let mut now: i64; @@ -119201,10 +120012,10 @@ pub mod _LocalCMC_Compile { output = _out1.clone(); return output.clone(); } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/CMCs/LocalCMC.dfy(476,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/CMCs/LocalCMC.dfy(477,5) fn _PutCacheEntry_k(&self, input: &Arc) -> Arc>> { let mut output = MaybePlacebo::>>>::new(); - if self.entryCapacity().clone() == int!(0) { + if self.entryCapacity().clone() == 0 { output = MaybePlacebo::from(Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::<(), Arc>::Success { value: () })); @@ -119222,7 +120033,7 @@ pub mod _LocalCMC_Compile { }; let mut _v2: () = valueOrError0.Extract(); }; - if self.entryCapacity().clone() == MutableMapTrait::, Object>::Size(rd!(read_field!(self.cache))) { + if self.entryCapacity().clone() == truncate!(MutableMapTrait::, Object>::Size(rd!(read_field!(self.cache))), u64) { let mut valueOrError1: Arc>>; let mut _out1: Arc>> = ICryptographicMaterialsCache::_DeleteCacheEntry_k(rd!(Object::<_>::from_ref(self)), &Arc::new(DeleteCacheEntryInput::DeleteCacheEntryInput { identifier: rd!(read_field!(rd!(read_field!(self.queue).clone()).tail).deref().clone()).identifier().clone() @@ -119245,7 +120056,7 @@ pub mod _LocalCMC_Compile { })); return output.read(); } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/CMCs/LocalCMC.dfy(567,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/CMCs/LocalCMC.dfy(568,5) fn _DeleteCacheEntry_k(&self, input: &Arc) -> Arc>> { let mut output: Arc>>; if MutableMapTrait::, Object>::HasKey(rd!(read_field!(self.cache)), input.identifier()) { @@ -119261,7 +120072,7 @@ pub mod _LocalCMC_Compile { }); return output.clone(); } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/CMCs/LocalCMC.dfy(616,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/CMCs/LocalCMC.dfy(618,5) fn _UpdateUsageMetadata_k(&self, input: &Arc) -> Arc>> { let mut output = MaybePlacebo::>>>::new(); if MutableMapTrait::, Object>::HasKey(rd!(read_field!(self.cache)), input.identifier()) { @@ -119414,15 +120225,16 @@ pub mod _Maps_Compile { } } } -/// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/KeyWrapping/MaterialWrapping.dfy(10,1) +/// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/KeyWrapping/MaterialWrapping.dfy(11,1) pub mod _MaterialWrapping_Compile { pub use ::std::sync::Arc; pub use crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::AlgorithmSuiteInfo; pub use ::dafny_runtime::Map; pub use crate::implementation_from_dafny::UTF8::ValidUTF8Bytes; + pub use ::dafny_runtime::Sequence; + pub use crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::Error; pub use ::std::fmt::Debug; pub use ::std::fmt::Formatter; - pub use ::std::fmt::Result; pub use ::dafny_runtime::DafnyPrint; pub use ::std::cmp::Eq; pub use ::std::hash::Hash; @@ -119430,20 +120242,19 @@ pub mod _MaterialWrapping_Compile { pub use ::std::default::Default; pub use ::std::convert::AsRef; pub use ::dafny_runtime::DafnyType; - pub use ::dafny_runtime::Sequence; pub use ::dafny_runtime::Any; pub use ::std::marker::Sync; pub use ::std::marker::Send; pub use ::dafny_runtime::UpcastObject; pub use crate::implementation_from_dafny::_Actions_Compile::ActionWithResult; - pub use crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::Error; - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/KeyWrapping/MaterialWrapping.dfy(20,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/KeyWrapping/MaterialWrapping.dfy(22,3) #[derive(PartialEq, Clone)] pub enum GenerateAndWrapInput { GenerateAndWrapInput { algorithmSuite: Arc, - encryptionContext: Map + encryptionContext: Map, + serializedEC: Arc, Arc>> } } @@ -119451,20 +120262,26 @@ pub mod _MaterialWrapping_Compile { /// Returns a borrow of the field algorithmSuite pub fn algorithmSuite(&self) -> &Arc { match self { - GenerateAndWrapInput::GenerateAndWrapInput{algorithmSuite, encryptionContext, } => algorithmSuite, + GenerateAndWrapInput::GenerateAndWrapInput{algorithmSuite, encryptionContext, serializedEC, } => algorithmSuite, } } /// Returns a borrow of the field encryptionContext pub fn encryptionContext(&self) -> &Map { match self { - GenerateAndWrapInput::GenerateAndWrapInput{algorithmSuite, encryptionContext, } => encryptionContext, + GenerateAndWrapInput::GenerateAndWrapInput{algorithmSuite, encryptionContext, serializedEC, } => encryptionContext, + } + } + /// Returns a borrow of the field serializedEC + pub fn serializedEC(&self) -> &Arc, Arc>> { + match self { + GenerateAndWrapInput::GenerateAndWrapInput{algorithmSuite, encryptionContext, serializedEC, } => serializedEC, } } } impl Debug for GenerateAndWrapInput { - fn fmt(&self, f: &mut Formatter) -> Result { + fn fmt(&self, f: &mut Formatter) -> ::std::fmt::Result { DafnyPrint::fmt_print(self, f, true) } } @@ -119473,11 +120290,13 @@ pub mod _MaterialWrapping_Compile { for GenerateAndWrapInput { fn fmt_print(&self, _formatter: &mut Formatter, _in_seq: bool) -> std::fmt::Result { match self { - GenerateAndWrapInput::GenerateAndWrapInput{algorithmSuite, encryptionContext, } => { + GenerateAndWrapInput::GenerateAndWrapInput{algorithmSuite, encryptionContext, serializedEC, } => { write!(_formatter, "MaterialWrapping_Compile.GenerateAndWrapInput.GenerateAndWrapInput(")?; DafnyPrint::fmt_print(algorithmSuite, _formatter, false)?; write!(_formatter, ", ")?; DafnyPrint::fmt_print(encryptionContext, _formatter, false)?; + write!(_formatter, ", ")?; + DafnyPrint::fmt_print(serializedEC, _formatter, false)?; write!(_formatter, ")")?; Ok(()) }, @@ -119492,9 +120311,10 @@ pub mod _MaterialWrapping_Compile { for GenerateAndWrapInput { fn hash<_H: Hasher>(&self, _state: &mut _H) { match self { - GenerateAndWrapInput::GenerateAndWrapInput{algorithmSuite, encryptionContext, } => { + GenerateAndWrapInput::GenerateAndWrapInput{algorithmSuite, encryptionContext, serializedEC, } => { Hash::hash(algorithmSuite, _state); - Hash::hash(encryptionContext, _state) + Hash::hash(encryptionContext, _state); + Hash::hash(serializedEC, _state) }, } } @@ -119505,7 +120325,8 @@ pub mod _MaterialWrapping_Compile { fn default() -> GenerateAndWrapInput { GenerateAndWrapInput::GenerateAndWrapInput { algorithmSuite: Default::default(), - encryptionContext: Default::default() + encryptionContext: Default::default(), + serializedEC: Default::default() } } } @@ -119517,7 +120338,7 @@ pub mod _MaterialWrapping_Compile { } } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/KeyWrapping/MaterialWrapping.dfy(25,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/KeyWrapping/MaterialWrapping.dfy(28,3) #[derive(PartialEq, Clone)] pub enum GenerateAndWrapOutput { GenerateAndWrapOutput { @@ -119550,7 +120371,7 @@ pub mod _MaterialWrapping_Compile { impl Debug for GenerateAndWrapOutput { - fn fmt(&self, f: &mut Formatter) -> Result { + fn fmt(&self, f: &mut Formatter) -> ::std::fmt::Result { DafnyPrint::fmt_print(self, f, true) } } @@ -119607,13 +120428,14 @@ pub mod _MaterialWrapping_Compile { } } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/KeyWrapping/MaterialWrapping.dfy(31,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/KeyWrapping/MaterialWrapping.dfy(34,3) #[derive(PartialEq, Clone)] pub enum WrapInput { WrapInput { plaintextMaterial: Sequence, algorithmSuite: Arc, - encryptionContext: Map + encryptionContext: Map, + serializedEC: Arc, Arc>> } } @@ -119621,26 +120443,32 @@ pub mod _MaterialWrapping_Compile { /// Returns a borrow of the field plaintextMaterial pub fn plaintextMaterial(&self) -> &Sequence { match self { - WrapInput::WrapInput{plaintextMaterial, algorithmSuite, encryptionContext, } => plaintextMaterial, + WrapInput::WrapInput{plaintextMaterial, algorithmSuite, encryptionContext, serializedEC, } => plaintextMaterial, } } /// Returns a borrow of the field algorithmSuite pub fn algorithmSuite(&self) -> &Arc { match self { - WrapInput::WrapInput{plaintextMaterial, algorithmSuite, encryptionContext, } => algorithmSuite, + WrapInput::WrapInput{plaintextMaterial, algorithmSuite, encryptionContext, serializedEC, } => algorithmSuite, } } /// Returns a borrow of the field encryptionContext pub fn encryptionContext(&self) -> &Map { match self { - WrapInput::WrapInput{plaintextMaterial, algorithmSuite, encryptionContext, } => encryptionContext, + WrapInput::WrapInput{plaintextMaterial, algorithmSuite, encryptionContext, serializedEC, } => encryptionContext, + } + } + /// Returns a borrow of the field serializedEC + pub fn serializedEC(&self) -> &Arc, Arc>> { + match self { + WrapInput::WrapInput{plaintextMaterial, algorithmSuite, encryptionContext, serializedEC, } => serializedEC, } } } impl Debug for WrapInput { - fn fmt(&self, f: &mut Formatter) -> Result { + fn fmt(&self, f: &mut Formatter) -> ::std::fmt::Result { DafnyPrint::fmt_print(self, f, true) } } @@ -119649,13 +120477,15 @@ pub mod _MaterialWrapping_Compile { for WrapInput { fn fmt_print(&self, _formatter: &mut Formatter, _in_seq: bool) -> std::fmt::Result { match self { - WrapInput::WrapInput{plaintextMaterial, algorithmSuite, encryptionContext, } => { + WrapInput::WrapInput{plaintextMaterial, algorithmSuite, encryptionContext, serializedEC, } => { write!(_formatter, "MaterialWrapping_Compile.WrapInput.WrapInput(")?; DafnyPrint::fmt_print(plaintextMaterial, _formatter, false)?; write!(_formatter, ", ")?; DafnyPrint::fmt_print(algorithmSuite, _formatter, false)?; write!(_formatter, ", ")?; DafnyPrint::fmt_print(encryptionContext, _formatter, false)?; + write!(_formatter, ", ")?; + DafnyPrint::fmt_print(serializedEC, _formatter, false)?; write!(_formatter, ")")?; Ok(()) }, @@ -119670,10 +120500,11 @@ pub mod _MaterialWrapping_Compile { for WrapInput { fn hash<_H: Hasher>(&self, _state: &mut _H) { match self { - WrapInput::WrapInput{plaintextMaterial, algorithmSuite, encryptionContext, } => { + WrapInput::WrapInput{plaintextMaterial, algorithmSuite, encryptionContext, serializedEC, } => { Hash::hash(plaintextMaterial, _state); Hash::hash(algorithmSuite, _state); - Hash::hash(encryptionContext, _state) + Hash::hash(encryptionContext, _state); + Hash::hash(serializedEC, _state) }, } } @@ -119685,7 +120516,8 @@ pub mod _MaterialWrapping_Compile { WrapInput::WrapInput { plaintextMaterial: Default::default(), algorithmSuite: Default::default(), - encryptionContext: Default::default() + encryptionContext: Default::default(), + serializedEC: Default::default() } } } @@ -119697,7 +120529,7 @@ pub mod _MaterialWrapping_Compile { } } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/KeyWrapping/MaterialWrapping.dfy(37,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/KeyWrapping/MaterialWrapping.dfy(41,3) #[derive(PartialEq, Clone)] pub enum WrapOutput { WrapOutput { @@ -119723,7 +120555,7 @@ pub mod _MaterialWrapping_Compile { impl Debug for WrapOutput { - fn fmt(&self, f: &mut Formatter) -> Result { + fn fmt(&self, f: &mut Formatter) -> ::std::fmt::Result { DafnyPrint::fmt_print(self, f, true) } } @@ -119776,13 +120608,14 @@ pub mod _MaterialWrapping_Compile { } } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/KeyWrapping/MaterialWrapping.dfy(42,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/KeyWrapping/MaterialWrapping.dfy(46,3) #[derive(PartialEq, Clone)] pub enum UnwrapInput { UnwrapInput { wrappedMaterial: Sequence, algorithmSuite: Arc, - encryptionContext: Map + encryptionContext: Map, + serializedEC: Arc, Arc>> } } @@ -119790,26 +120623,32 @@ pub mod _MaterialWrapping_Compile { /// Returns a borrow of the field wrappedMaterial pub fn wrappedMaterial(&self) -> &Sequence { match self { - UnwrapInput::UnwrapInput{wrappedMaterial, algorithmSuite, encryptionContext, } => wrappedMaterial, + UnwrapInput::UnwrapInput{wrappedMaterial, algorithmSuite, encryptionContext, serializedEC, } => wrappedMaterial, } } /// Returns a borrow of the field algorithmSuite pub fn algorithmSuite(&self) -> &Arc { match self { - UnwrapInput::UnwrapInput{wrappedMaterial, algorithmSuite, encryptionContext, } => algorithmSuite, + UnwrapInput::UnwrapInput{wrappedMaterial, algorithmSuite, encryptionContext, serializedEC, } => algorithmSuite, } } /// Returns a borrow of the field encryptionContext pub fn encryptionContext(&self) -> &Map { match self { - UnwrapInput::UnwrapInput{wrappedMaterial, algorithmSuite, encryptionContext, } => encryptionContext, + UnwrapInput::UnwrapInput{wrappedMaterial, algorithmSuite, encryptionContext, serializedEC, } => encryptionContext, + } + } + /// Returns a borrow of the field serializedEC + pub fn serializedEC(&self) -> &Arc, Arc>> { + match self { + UnwrapInput::UnwrapInput{wrappedMaterial, algorithmSuite, encryptionContext, serializedEC, } => serializedEC, } } } impl Debug for UnwrapInput { - fn fmt(&self, f: &mut Formatter) -> Result { + fn fmt(&self, f: &mut Formatter) -> ::std::fmt::Result { DafnyPrint::fmt_print(self, f, true) } } @@ -119818,13 +120657,15 @@ pub mod _MaterialWrapping_Compile { for UnwrapInput { fn fmt_print(&self, _formatter: &mut Formatter, _in_seq: bool) -> std::fmt::Result { match self { - UnwrapInput::UnwrapInput{wrappedMaterial, algorithmSuite, encryptionContext, } => { + UnwrapInput::UnwrapInput{wrappedMaterial, algorithmSuite, encryptionContext, serializedEC, } => { write!(_formatter, "MaterialWrapping_Compile.UnwrapInput.UnwrapInput(")?; DafnyPrint::fmt_print(wrappedMaterial, _formatter, false)?; write!(_formatter, ", ")?; DafnyPrint::fmt_print(algorithmSuite, _formatter, false)?; write!(_formatter, ", ")?; DafnyPrint::fmt_print(encryptionContext, _formatter, false)?; + write!(_formatter, ", ")?; + DafnyPrint::fmt_print(serializedEC, _formatter, false)?; write!(_formatter, ")")?; Ok(()) }, @@ -119839,10 +120680,11 @@ pub mod _MaterialWrapping_Compile { for UnwrapInput { fn hash<_H: Hasher>(&self, _state: &mut _H) { match self { - UnwrapInput::UnwrapInput{wrappedMaterial, algorithmSuite, encryptionContext, } => { + UnwrapInput::UnwrapInput{wrappedMaterial, algorithmSuite, encryptionContext, serializedEC, } => { Hash::hash(wrappedMaterial, _state); Hash::hash(algorithmSuite, _state); - Hash::hash(encryptionContext, _state) + Hash::hash(encryptionContext, _state); + Hash::hash(serializedEC, _state) }, } } @@ -119854,7 +120696,8 @@ pub mod _MaterialWrapping_Compile { UnwrapInput::UnwrapInput { wrappedMaterial: Default::default(), algorithmSuite: Default::default(), - encryptionContext: Default::default() + encryptionContext: Default::default(), + serializedEC: Default::default() } } } @@ -119866,7 +120709,7 @@ pub mod _MaterialWrapping_Compile { } } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/KeyWrapping/MaterialWrapping.dfy(48,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/KeyWrapping/MaterialWrapping.dfy(53,3) #[derive(PartialEq, Clone)] pub enum UnwrapOutput { UnwrapOutput { @@ -119892,7 +120735,7 @@ pub mod _MaterialWrapping_Compile { impl Debug for UnwrapOutput { - fn fmt(&self, f: &mut Formatter) -> Result { + fn fmt(&self, f: &mut Formatter) -> ::std::fmt::Result { DafnyPrint::fmt_print(self, f, true) } } @@ -119945,17 +120788,17 @@ pub mod _MaterialWrapping_Compile { } } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/KeyWrapping/MaterialWrapping.dfy(72,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/KeyWrapping/MaterialWrapping.dfy(77,3) pub trait GenerateAndWrapMaterial: Any + Sync + Send + UpcastObject + ActionWithResult, Arc>, Arc> + UpcastObject, Arc>, Arc>> where T: DafnyType {} - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/KeyWrapping/MaterialWrapping.dfy(85,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/KeyWrapping/MaterialWrapping.dfy(98,3) pub trait WrapMaterial: Any + Sync + Send + UpcastObject + ActionWithResult, Arc>, Arc> + UpcastObject, Arc>, Arc>> where T: DafnyType {} - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/KeyWrapping/MaterialWrapping.dfy(97,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/KeyWrapping/MaterialWrapping.dfy(117,3) pub trait UnwrapMaterial: Any + Sync + Send + UpcastObject + ActionWithResult, Arc>, Arc> + UpcastObject, Arc>, Arc>> where T: DafnyType {} @@ -119982,8 +120825,8 @@ pub mod _Materials_Compile { pub use crate::implementation_from_dafny::_Wrappers_Compile::Option; pub use crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::InitializeDecryptionMaterialsInput; pub use crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::DecryptionMaterials; + pub use ::dafny_runtime::truncate; pub use crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::AlgorithmSuiteInfo; - pub use ::dafny_runtime::int; pub use crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::SymmetricSignatureAlgorithm::HMAC; pub use ::dafny_runtime::Set; pub use ::dafny_runtime::set; @@ -119991,7 +120834,7 @@ pub mod _Materials_Compile { pub struct _default {} impl _default { - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Materials.dfy(29,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Materials.dfy(30,3) pub fn InitializeEncryptionMaterials(input: &Arc) -> Arc, Arc>> { let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(!input.encryptionContext().contains(&_default::EC_PUBLIC_KEY_FIELD()), &Arc::new(Error::AwsCryptographicMaterialProvidersException { message: string_utf16_of("Encryption Context ") @@ -120089,7 +120932,7 @@ pub mod _Materials_Compile { } } } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Materials.dfy(92,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Materials.dfy(93,3) pub fn InitializeDecryptionMaterials(input: &Arc) -> Arc, Arc>> { let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(Itertools::unique(input.requiredEncryptionContextKeys().iter()).all(({ let mut input = input.clone(); @@ -120105,7 +120948,7 @@ pub mod _Materials_Compile { } }) }).as_ref()), &Arc::new(Error::AwsCryptographicMaterialProvidersException { - message: string_utf16_of("Reporoduced encryption context key did not exist in provided encryption context.") + message: string_utf16_of("Reproduced encryption context key did not exist in provided encryption context.") })); if valueOrError0.IsFailure() { valueOrError0.PropagateFailure::>() @@ -120143,7 +120986,7 @@ pub mod _Materials_Compile { } } } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Materials.dfy(141,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Materials.dfy(142,3) pub fn DecodeVerificationKey(encryptionContext: &Map) -> Arc>>, Arc>> { if encryptionContext.contains(&_default::EC_PUBLIC_KEY_FIELD()) { let mut utf8Key: ValidUTF8Bytes = encryptionContext.get(&_default::EC_PUBLIC_KEY_FIELD()); @@ -120182,17 +121025,17 @@ pub mod _Materials_Compile { }) } } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Materials.dfy(166,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Materials.dfy(167,3) pub fn ValidEncryptionMaterialsTransition(oldMat: &Arc, newMat: &Arc) -> bool { - newMat.algorithmSuite().clone() == oldMat.algorithmSuite().clone() && newMat.encryptionContext().clone() == oldMat.encryptionContext().clone() && newMat.requiredEncryptionContextKeys().clone() == oldMat.requiredEncryptionContextKeys().clone() && newMat.signingKey().clone() == oldMat.signingKey().clone() && (matches!(oldMat.plaintextDataKey().as_ref(), crate::implementation_from_dafny::_Wrappers_Compile::Option::None{ .. }) && matches!(newMat.plaintextDataKey().as_ref(), Some{ .. }) || oldMat.plaintextDataKey().clone() == newMat.plaintextDataKey().clone()) && matches!(newMat.plaintextDataKey().as_ref(), Some{ .. }) && oldMat.encryptedDataKeys().cardinality() <= newMat.encryptedDataKeys().cardinality() && oldMat.encryptedDataKeys().as_dafny_multiset() <= newMat.encryptedDataKeys().as_dafny_multiset() && (!(!matches!(oldMat.algorithmSuite().symmetricSignature().as_ref(), crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::SymmetricSignatureAlgorithm::None{ .. })) || matches!(newMat.symmetricSigningKeys().as_ref(), Some{ .. }) && matches!(oldMat.symmetricSigningKeys().as_ref(), Some{ .. }) && oldMat.symmetricSigningKeys().value().as_dafny_multiset() <= newMat.symmetricSigningKeys().value().as_dafny_multiset()) && _default::ValidEncryptionMaterials(oldMat) && _default::ValidEncryptionMaterials(newMat) + newMat.algorithmSuite().clone() == oldMat.algorithmSuite().clone() && newMat.encryptionContext().clone() == oldMat.encryptionContext().clone() && newMat.requiredEncryptionContextKeys().clone() == oldMat.requiredEncryptionContextKeys().clone() && newMat.signingKey().clone() == oldMat.signingKey().clone() && (matches!(oldMat.plaintextDataKey().as_ref(), crate::implementation_from_dafny::_Wrappers_Compile::Option::None{ .. }) && matches!(newMat.plaintextDataKey().as_ref(), Some{ .. }) || oldMat.plaintextDataKey().clone() == newMat.plaintextDataKey().clone()) && matches!(newMat.plaintextDataKey().as_ref(), Some{ .. }) && truncate!(oldMat.encryptedDataKeys().cardinality(), u64) <= truncate!(newMat.encryptedDataKeys().cardinality(), u64) && oldMat.encryptedDataKeys().as_dafny_multiset() <= newMat.encryptedDataKeys().as_dafny_multiset() && (!(!matches!(oldMat.algorithmSuite().symmetricSignature().as_ref(), crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::SymmetricSignatureAlgorithm::None{ .. })) || matches!(newMat.symmetricSigningKeys().as_ref(), Some{ .. }) && (matches!(oldMat.symmetricSigningKeys().as_ref(), Some{ .. }) || matches!(oldMat.symmetricSigningKeys().as_ref(), crate::implementation_from_dafny::_Wrappers_Compile::Option::None{ .. }) && truncate!(oldMat.encryptedDataKeys().cardinality(), u64) == 0) && oldMat.symmetricSigningKeys().UnwrapOr(&(seq![] as Sequence>)).as_dafny_multiset() <= newMat.symmetricSigningKeys().value().as_dafny_multiset()) && _default::ValidEncryptionMaterials(oldMat) && _default::ValidEncryptionMaterials(newMat) } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Materials.dfy(214,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Materials.dfy(217,3) pub fn ValidEncryptionMaterials(encryptionMaterials: &Arc) -> bool { crate::implementation_from_dafny::_AlgorithmSuites_Compile::_default::_AlgorithmSuite_q(encryptionMaterials.algorithmSuite()) && ({ - let __pat_let45_0: Arc = encryptionMaterials.algorithmSuite().clone(); + let __pat_let47_0: Arc = encryptionMaterials.algorithmSuite().clone(); { - let suite: Arc = __pat_let45_0.clone(); - matches!(suite.signature().as_ref(), crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::SignatureAlgorithm::None{ .. }) == matches!(encryptionMaterials.signingKey().as_ref(), crate::implementation_from_dafny::_Wrappers_Compile::Option::None{ .. }) && (!matches!(encryptionMaterials.plaintextDataKey().as_ref(), Some{ .. }) || int!(crate::implementation_from_dafny::_AlgorithmSuites_Compile::_default::GetEncryptKeyLength(&suite)) == encryptionMaterials.plaintextDataKey().value().cardinality()) && (!matches!(encryptionMaterials.plaintextDataKey().as_ref(), crate::implementation_from_dafny::_Wrappers_Compile::Option::None{ .. }) || encryptionMaterials.encryptedDataKeys().cardinality() == int!(0)) && !matches!(suite.signature().as_ref(), crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::SignatureAlgorithm::None{ .. }) == encryptionMaterials.encryptionContext().contains(&_default::EC_PUBLIC_KEY_FIELD()) && matches!(suite.signature().as_ref(), crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::SignatureAlgorithm::ECDSA{ .. }) == matches!(encryptionMaterials.signingKey().as_ref(), Some{ .. }) && !matches!(suite.signature().as_ref(), crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::SignatureAlgorithm::None{ .. }) == encryptionMaterials.encryptionContext().contains(&_default::EC_PUBLIC_KEY_FIELD()) && (!(matches!(suite.symmetricSignature().as_ref(), HMAC{ .. }) && matches!(encryptionMaterials.symmetricSigningKeys().as_ref(), Some{ .. })) || encryptionMaterials.symmetricSigningKeys().value().cardinality() == encryptionMaterials.encryptedDataKeys().cardinality()) && (!matches!(suite.symmetricSignature().as_ref(), HMAC{ .. }) || matches!(encryptionMaterials.symmetricSigningKeys().as_ref(), Some{ .. })) && (!matches!(suite.symmetricSignature().as_ref(), crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::SymmetricSignatureAlgorithm::None{ .. }) || matches!(encryptionMaterials.symmetricSigningKeys().as_ref(), crate::implementation_from_dafny::_Wrappers_Compile::Option::None{ .. })) && Itertools::unique(encryptionMaterials.requiredEncryptionContextKeys().iter()).all(({ + let suite: Arc = __pat_let47_0.clone(); + matches!(suite.signature().as_ref(), crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::SignatureAlgorithm::None{ .. }) == matches!(encryptionMaterials.signingKey().as_ref(), crate::implementation_from_dafny::_Wrappers_Compile::Option::None{ .. }) && (!matches!(encryptionMaterials.plaintextDataKey().as_ref(), Some{ .. }) || crate::implementation_from_dafny::_AlgorithmSuites_Compile::_default::GetEncryptKeyLength(&suite) as u64 == truncate!(encryptionMaterials.plaintextDataKey().value().cardinality(), u64)) && (!matches!(encryptionMaterials.plaintextDataKey().as_ref(), crate::implementation_from_dafny::_Wrappers_Compile::Option::None{ .. }) || truncate!(encryptionMaterials.encryptedDataKeys().cardinality(), u64) == 0) && !matches!(suite.signature().as_ref(), crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::SignatureAlgorithm::None{ .. }) == encryptionMaterials.encryptionContext().contains(&_default::EC_PUBLIC_KEY_FIELD()) && matches!(suite.signature().as_ref(), crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::SignatureAlgorithm::ECDSA{ .. }) == matches!(encryptionMaterials.signingKey().as_ref(), Some{ .. }) && !matches!(suite.signature().as_ref(), crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::SignatureAlgorithm::None{ .. }) == encryptionMaterials.encryptionContext().contains(&_default::EC_PUBLIC_KEY_FIELD()) && (!(matches!(suite.symmetricSignature().as_ref(), HMAC{ .. }) && matches!(encryptionMaterials.symmetricSigningKeys().as_ref(), Some{ .. })) || truncate!(encryptionMaterials.symmetricSigningKeys().value().cardinality(), u64) == truncate!(encryptionMaterials.encryptedDataKeys().cardinality(), u64)) && (!matches!(suite.symmetricSignature().as_ref(), HMAC{ .. }) || (matches!(encryptionMaterials.symmetricSigningKeys().as_ref(), Some{ .. }) || truncate!(encryptionMaterials.encryptedDataKeys().cardinality(), u64) == 0 && matches!(encryptionMaterials.symmetricSigningKeys().as_ref(), crate::implementation_from_dafny::_Wrappers_Compile::Option::None{ .. }))) && (!matches!(suite.symmetricSignature().as_ref(), crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::SymmetricSignatureAlgorithm::None{ .. }) || matches!(encryptionMaterials.symmetricSigningKeys().as_ref(), crate::implementation_from_dafny::_Wrappers_Compile::Option::None{ .. })) && Itertools::unique(encryptionMaterials.requiredEncryptionContextKeys().iter()).all(({ let mut encryptionMaterials = encryptionMaterials.clone(); Arc::new(move |__forall_var_0: ValidUTF8Bytes| -> bool{ let mut key: ValidUTF8Bytes = __forall_var_0.clone(); @@ -120209,11 +121052,11 @@ pub mod _Materials_Compile { } }) } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Materials.dfy(289,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Materials.dfy(297,3) pub fn EncryptionMaterialsHasPlaintextDataKey(encryptionMaterials: &Arc) -> bool { - matches!(encryptionMaterials.plaintextDataKey().as_ref(), Some{ .. }) && int!(0) < encryptionMaterials.encryptedDataKeys().cardinality() && _default::ValidEncryptionMaterials(encryptionMaterials) + matches!(encryptionMaterials.plaintextDataKey().as_ref(), Some{ .. }) && 0 < truncate!(encryptionMaterials.encryptedDataKeys().cardinality(), u64) && _default::ValidEncryptionMaterials(encryptionMaterials) } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Materials.dfy(295,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Materials.dfy(304,3) pub fn EncryptionMaterialAddEncryptedDataKeys(encryptionMaterials: &Arc, encryptedDataKeysToAdd: &Sequence>, symmetricSigningKeysToAdd: &Arc>>>) -> Arc, Arc>> { let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(_default::ValidEncryptionMaterials(encryptionMaterials), &Arc::new(Error::InvalidEncryptionMaterialsTransition { message: string_utf16_of("Attempt to modify invalid encryption material.") @@ -120243,7 +121086,7 @@ pub mod _Materials_Compile { encryptionMaterials.symmetricSigningKeys().clone() } else { Arc::new(Option::>>::Some { - value: encryptionMaterials.symmetricSigningKeys().value().concat(symmetricSigningKeysToAdd.value()) + value: encryptionMaterials.symmetricSigningKeys().UnwrapOr(&(seq![] as Sequence>)).concat(symmetricSigningKeysToAdd.value()) }) }; Arc::new(Result::, Arc>::Success { @@ -120262,7 +121105,7 @@ pub mod _Materials_Compile { } } } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Materials.dfy(334,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Materials.dfy(343,3) pub fn EncryptionMaterialAddDataKey(encryptionMaterials: &Arc, plaintextDataKey: &Sequence, encryptedDataKeysToAdd: &Sequence>, symmetricSigningKeysToAdd: &Arc>>>) -> Arc, Arc>> { let mut suite: Arc = encryptionMaterials.algorithmSuite().clone(); let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(_default::ValidEncryptionMaterials(encryptionMaterials), &Arc::new(Error::InvalidEncryptionMaterialsTransition { @@ -120277,7 +121120,7 @@ pub mod _Materials_Compile { if valueOrError1.IsFailure() { valueOrError1.PropagateFailure::>() } else { - let mut valueOrError2: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(int!(crate::implementation_from_dafny::_AlgorithmSuites_Compile::_default::GetEncryptKeyLength(&suite)) == plaintextDataKey.cardinality(), &Arc::new(Error::InvalidEncryptionMaterialsTransition { + let mut valueOrError2: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(crate::implementation_from_dafny::_AlgorithmSuites_Compile::_default::GetEncryptKeyLength(&suite) as u64 == truncate!(plaintextDataKey.cardinality(), u64), &Arc::new(Error::InvalidEncryptionMaterialsTransition { message: string_utf16_of("plaintextDataKey does not match Algorithm Suite specification.") })); if valueOrError2.IsFailure() { @@ -120299,7 +121142,7 @@ pub mod _Materials_Compile { encryptionMaterials.symmetricSigningKeys().clone() } else { Arc::new(Option::>>::Some { - value: encryptionMaterials.symmetricSigningKeys().value().concat(symmetricSigningKeysToAdd.value()) + value: encryptionMaterials.symmetricSigningKeys().UnwrapOr(&(seq![] as Sequence>)).concat(symmetricSigningKeysToAdd.value()) }) }; Arc::new(Result::, Arc>::Success { @@ -120321,17 +121164,17 @@ pub mod _Materials_Compile { } } } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Materials.dfy(387,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Materials.dfy(397,3) pub fn DecryptionMaterialsTransitionIsValid(oldMat: &Arc, newMat: &Arc) -> bool { newMat.algorithmSuite().clone() == oldMat.algorithmSuite().clone() && newMat.encryptionContext().clone() == oldMat.encryptionContext().clone() && newMat.requiredEncryptionContextKeys().clone() == oldMat.requiredEncryptionContextKeys().clone() && newMat.verificationKey().clone() == oldMat.verificationKey().clone() && matches!(oldMat.plaintextDataKey().as_ref(), crate::implementation_from_dafny::_Wrappers_Compile::Option::None{ .. }) && matches!(newMat.plaintextDataKey().as_ref(), Some{ .. }) && matches!(oldMat.symmetricSigningKey().as_ref(), crate::implementation_from_dafny::_Wrappers_Compile::Option::None{ .. }) && _default::ValidDecryptionMaterials(oldMat) && _default::ValidDecryptionMaterials(newMat) } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Materials.dfy(418,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Materials.dfy(428,3) pub fn ValidDecryptionMaterials(decryptionMaterials: &Arc) -> bool { crate::implementation_from_dafny::_AlgorithmSuites_Compile::_default::_AlgorithmSuite_q(decryptionMaterials.algorithmSuite()) && ({ - let __pat_let46_0: Arc = decryptionMaterials.algorithmSuite().clone(); + let __pat_let48_0: Arc = decryptionMaterials.algorithmSuite().clone(); { - let suite: Arc = __pat_let46_0.clone(); - (!matches!(decryptionMaterials.plaintextDataKey().as_ref(), Some{ .. }) || int!(crate::implementation_from_dafny::_AlgorithmSuites_Compile::_default::GetEncryptKeyLength(&suite)) == decryptionMaterials.plaintextDataKey().value().cardinality()) && !matches!(suite.signature().as_ref(), crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::SignatureAlgorithm::None{ .. }) == decryptionMaterials.encryptionContext().contains(&_default::EC_PUBLIC_KEY_FIELD()) && matches!(suite.signature().as_ref(), crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::SignatureAlgorithm::ECDSA{ .. }) == matches!(decryptionMaterials.verificationKey().as_ref(), Some{ .. }) && !matches!(suite.signature().as_ref(), crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::SignatureAlgorithm::None{ .. }) == decryptionMaterials.encryptionContext().contains(&_default::EC_PUBLIC_KEY_FIELD()) && (!(!matches!(suite.symmetricSignature().as_ref(), crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::SymmetricSignatureAlgorithm::None{ .. })) || matches!(decryptionMaterials.plaintextDataKey().as_ref(), Some{ .. }) == matches!(decryptionMaterials.symmetricSigningKey().as_ref(), Some{ .. })) && (!matches!(suite.symmetricSignature().as_ref(), crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::SymmetricSignatureAlgorithm::None{ .. }) || matches!(decryptionMaterials.symmetricSigningKey().as_ref(), crate::implementation_from_dafny::_Wrappers_Compile::Option::None{ .. })) && Itertools::unique(decryptionMaterials.requiredEncryptionContextKeys().iter()).all(({ + let suite: Arc = __pat_let48_0.clone(); + (!matches!(decryptionMaterials.plaintextDataKey().as_ref(), Some{ .. }) || crate::implementation_from_dafny::_AlgorithmSuites_Compile::_default::GetEncryptKeyLength(&suite) as u64 == truncate!(decryptionMaterials.plaintextDataKey().value().cardinality(), u64)) && !matches!(suite.signature().as_ref(), crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::SignatureAlgorithm::None{ .. }) == decryptionMaterials.encryptionContext().contains(&_default::EC_PUBLIC_KEY_FIELD()) && matches!(suite.signature().as_ref(), crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::SignatureAlgorithm::ECDSA{ .. }) == matches!(decryptionMaterials.verificationKey().as_ref(), Some{ .. }) && !matches!(suite.signature().as_ref(), crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::SignatureAlgorithm::None{ .. }) == decryptionMaterials.encryptionContext().contains(&_default::EC_PUBLIC_KEY_FIELD()) && (!(!matches!(suite.symmetricSignature().as_ref(), crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::SymmetricSignatureAlgorithm::None{ .. })) || matches!(decryptionMaterials.plaintextDataKey().as_ref(), Some{ .. }) == matches!(decryptionMaterials.symmetricSigningKey().as_ref(), Some{ .. })) && (!matches!(suite.symmetricSignature().as_ref(), crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::SymmetricSignatureAlgorithm::None{ .. }) || matches!(decryptionMaterials.symmetricSigningKey().as_ref(), crate::implementation_from_dafny::_Wrappers_Compile::Option::None{ .. })) && Itertools::unique(decryptionMaterials.requiredEncryptionContextKeys().iter()).all(({ let mut decryptionMaterials = decryptionMaterials.clone(); Arc::new(move |__forall_var_0: ValidUTF8Bytes| -> bool{ let mut k: ValidUTF8Bytes = __forall_var_0.clone(); @@ -120348,7 +121191,7 @@ pub mod _Materials_Compile { } }) } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Materials.dfy(471,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Materials.dfy(482,3) pub fn DecryptionMaterialsAddDataKey(decryptionMaterials: &Arc, plaintextDataKey: &Sequence, symmetricSigningKey: &Arc>>) -> Arc, Arc>> { let mut suite: Arc = decryptionMaterials.algorithmSuite().clone(); let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(_default::ValidDecryptionMaterials(decryptionMaterials), &Arc::new(Error::InvalidDecryptionMaterialsTransition { @@ -120363,7 +121206,7 @@ pub mod _Materials_Compile { if valueOrError1.IsFailure() { valueOrError1.PropagateFailure::>() } else { - let mut valueOrError2: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(int!(crate::implementation_from_dafny::_AlgorithmSuites_Compile::_default::GetEncryptKeyLength(&suite)) == plaintextDataKey.cardinality(), &Arc::new(Error::InvalidDecryptionMaterialsTransition { + let mut valueOrError2: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(crate::implementation_from_dafny::_AlgorithmSuites_Compile::_default::GetEncryptKeyLength(&suite) as u64 == truncate!(plaintextDataKey.cardinality(), u64), &Arc::new(Error::InvalidDecryptionMaterialsTransition { message: string_utf16_of("plaintextDataKey does not match Algorithm Suite specification.") })); if valueOrError2.IsFailure() { @@ -120399,29 +121242,29 @@ pub mod _Materials_Compile { } } } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Materials.dfy(504,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Materials.dfy(516,3) pub fn DecryptionMaterialsWithoutPlaintextDataKey(decryptionMaterials: &Arc) -> bool { matches!(decryptionMaterials.plaintextDataKey().as_ref(), crate::implementation_from_dafny::_Wrappers_Compile::Option::None{ .. }) && _default::ValidDecryptionMaterials(decryptionMaterials) } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Materials.dfy(528,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Materials.dfy(540,3) pub fn DecryptionMaterialsWithPlaintextDataKey(decryptionMaterials: &Arc) -> bool { matches!(decryptionMaterials.plaintextDataKey().as_ref(), Some{ .. }) && _default::ValidDecryptionMaterials(decryptionMaterials) } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Materials.dfy(17,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Materials.dfy(18,3) pub fn EC_PUBLIC_KEY_FIELD() -> ValidUTF8Bytes { let mut s: Sequence = seq![97, 119, 115, 45, 99, 114, 121, 112, 116, 111, 45, 112, 117, 98, 108, 105, 99, 45, 107, 101, 121]; s.clone() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Materials.dfy(23,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Materials.dfy(24,3) pub fn RESERVED_KEY_VALUES() -> Set { set!{_default::EC_PUBLIC_KEY_FIELD()} } } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Materials.dfy(538,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Materials.dfy(550,3) pub type DecryptionMaterialsPendingPlaintextDataKey = Arc; - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Materials.dfy(542,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Materials.dfy(554,3) pub type SealedDecryptionMaterials = Arc; } /// ***************************************************************************** @@ -120524,13 +121367,14 @@ pub mod _MrkAwareDiscoveryMultiKeyring_Compile { pub use crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::Error; pub use ::dafny_runtime::MaybePlacebo; pub use crate::implementation_from_dafny::_Wrappers_Compile::Outcome; - pub use ::dafny_runtime::int; + pub use ::dafny_runtime::truncate; pub use ::dafny_runtime::string_utf16_of; pub use crate::implementation_from_dafny::_Wrappers_Compile::Option::None; pub use crate::implementation_from_dafny::_AwsKmsMrkDiscoveryKeyring_Compile::AwsKmsMrkDiscoveryKeyring; pub use ::dafny_runtime::seq; - pub use ::dafny_runtime::DafnyInt; pub use ::dafny_runtime::integer_range; + pub use ::std::convert::Into; + pub use ::dafny_runtime::int; pub use crate::implementation_from_dafny::software::amazon::cryptography::services::kms::internaldafny::types::IKMSClient; pub use ::dafny_runtime::rd; pub use crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::GetClientInput; @@ -120540,10 +121384,10 @@ pub mod _MrkAwareDiscoveryMultiKeyring_Compile { pub struct _default {} impl _default { - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/MrkAwareDiscoveryMultiKeyring.dfy(32,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/MrkAwareDiscoveryMultiKeyring.dfy(34,3) pub fn MrkAwareDiscoveryMultiKeyring(regions: &Sequence>, discoveryFilter: &Arc>>, clientSupplier: &Object, grantTokens: &Arc>) -> Arc, Arc>> { let mut output = MaybePlacebo::, Arc>>>::new(); - let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(int!(0) < regions.cardinality(), &Arc::new(Error::AwsCryptographicMaterialProvidersException { + let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(0 < truncate!(regions.cardinality(), u64), &Arc::new(Error::AwsCryptographicMaterialProvidersException { message: string_utf16_of("No regions passed.") })); if valueOrError0.IsFailure() { @@ -120558,9 +121402,9 @@ pub mod _MrkAwareDiscoveryMultiKeyring_Compile { return output.read(); }; let mut children: Sequence> = seq![] as Sequence>; - let mut _hi0: DafnyInt = regions.cardinality(); - for i in integer_range(int!(0), _hi0.clone()) { - let mut region: Sequence = regions.get(&i); + let mut _hi0: u64 = truncate!(regions.cardinality(), u64); + for i in integer_range(0, _hi0).map(Into::::into) { + let mut region: Sequence = regions.get(&int!((&i).clone())); let mut valueOrError2: Arc, Arc>>; let mut _out0: Arc, Arc>> = IClientSupplier::GetClient(rd!(clientSupplier.clone()), &Arc::new(GetClientInput::GetClientInput { region: region.clone() @@ -120612,8 +121456,9 @@ pub mod _MrkAwareStrictMultiKeyring_Compile { pub use ::dafny_runtime::rd; pub use crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::GetClientInput; pub use ::dafny_runtime::string_utf16_of; - pub use ::dafny_runtime::DafnyInt; + pub use ::dafny_runtime::truncate; pub use ::dafny_runtime::integer_range; + pub use ::std::convert::Into; pub use ::dafny_runtime::int; pub use crate::implementation_from_dafny::_Wrappers_Compile::Option::Some; pub use ::dafny_runtime::rc_coerce; @@ -120623,7 +121468,7 @@ pub mod _MrkAwareStrictMultiKeyring_Compile { pub struct _default {} impl _default { - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/MrkAwareStrictMultiKeyring.dfy(23,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/MrkAwareStrictMultiKeyring.dfy(25,3) pub fn MrkAwareStrictMultiKeyring(generator: &Arc>>, awsKmsKeys: &Arc>>>, clientSupplier: &Object, grantTokens: &Arc>) -> Arc, Arc>> { let mut output = MaybePlacebo::, Arc>>>::new(); let mut allStrings: Sequence>; @@ -120685,9 +121530,9 @@ pub mod _MrkAwareStrictMultiKeyring_Compile { } else { let mut ___mcc_h2: Sequence> = _source2.value().clone(); let mut childIdentifiers: Sequence> = ___mcc_h2.clone(); - let mut _hi0: DafnyInt = childIdentifiers.cardinality(); - for index in integer_range(int!(0), _hi0.clone()) { - let mut childIdentifier: Sequence = childIdentifiers.get(&index); + let mut _hi0: u64 = truncate!(childIdentifiers.cardinality(), u64); + for index in integer_range(0, _hi0).map(Into::::into) { + let mut childIdentifier: Sequence = childIdentifiers.get(&int!((&index).clone())); let mut valueOrError4: Arc, Arc>> = crate::implementation_from_dafny::_AwsArnParsing_Compile::_default::IsAwsKmsIdentifierString(&childIdentifier).MapFailure::>(&(Arc::new(move |x0: &Sequence| crate::implementation_from_dafny::_AwsKmsUtils_Compile::_default::WrapStringToError(x0)) as Arc _ + Sync + Send>)); if valueOrError4.IsFailure() { output = MaybePlacebo::from(valueOrError4.PropagateFailure::>()); @@ -120712,7 +121557,7 @@ pub mod _MrkAwareStrictMultiKeyring_Compile { children = children.concat(&seq![keyring.clone()]); } }; - let mut valueOrError6: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(matches!((&generatorKeyring).as_ref(), Some{ .. }) || int!(0) < children.cardinality(), &Arc::new(Error::AwsCryptographicMaterialProvidersException { + let mut valueOrError6: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(matches!((&generatorKeyring).as_ref(), Some{ .. }) || 0 < truncate!(children.cardinality(), u64), &Arc::new(Error::AwsCryptographicMaterialProvidersException { message: string_utf16_of("generatorKeyring or child Keyrings needed to create a multi keyring") })); if valueOrError6.IsFailure() { @@ -120783,10 +121628,20 @@ pub mod _MulInternals_Compile { pub mod _MulInternalsNonlinear_Compile { } -/// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/MultiKeyring.dfy(9,1) +/// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/MultiKeyring.dfy(19,1) pub mod _MultiKeyring_Compile { pub use ::dafny_runtime::Object; pub use crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::IKeyring; + pub use crate::implementation_from_dafny::_RawAESKeyring_Compile::RawAESKeyring; + pub use crate::implementation_from_dafny::_RawECDHKeyring_Compile::RawEcdhKeyring; + pub use crate::implementation_from_dafny::_RawRSAKeyring_Compile::RawRSAKeyring; + pub use crate::implementation_from_dafny::_AwsKmsDiscoveryKeyring_Compile::AwsKmsDiscoveryKeyring; + pub use crate::implementation_from_dafny::_AwsKmsEcdhKeyring_Compile::AwsKmsEcdhKeyring; + pub use crate::implementation_from_dafny::_AwsKmsHierarchicalKeyring_Compile::AwsKmsHierarchicalKeyring; + pub use crate::implementation_from_dafny::_AwsKmsKeyring_Compile::AwsKmsKeyring; + pub use crate::implementation_from_dafny::_AwsKmsMrkDiscoveryKeyring_Compile::AwsKmsMrkDiscoveryKeyring; + pub use crate::implementation_from_dafny::_AwsKmsMrkKeyring_Compile::AwsKmsMrkKeyring; + pub use crate::implementation_from_dafny::_AwsKmsRsaKeyring_Compile::AwsKmsRsaKeyring; pub use ::std::sync::Arc; pub use crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::OnDecryptInput; pub use crate::implementation_from_dafny::_Wrappers_Compile::Result; @@ -120812,8 +121667,9 @@ pub mod _MultiKeyring_Compile { pub use crate::implementation_from_dafny::_Wrappers_Compile::Option::Some; pub use crate::implementation_from_dafny::_Wrappers_Compile::Result::Success; pub use crate::implementation_from_dafny::_Wrappers_Compile::Result::Failure; - pub use ::dafny_runtime::DafnyInt; + pub use ::dafny_runtime::truncate; pub use ::dafny_runtime::integer_range; + pub use ::std::convert::Into; pub use ::dafny_runtime::int; pub use crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::DecryptionMaterials; pub use ::dafny_runtime::seq; @@ -120821,7 +121677,41 @@ pub mod _MultiKeyring_Compile { pub struct _default {} impl _default { - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/MultiKeyring.dfy(338,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/MultiKeyring.dfy(52,3) + pub fn _Verified_q(keyring: &Object) -> bool { + ({ + let __is_49: Object = keyring.clone(); + __is_49.clone().is_instance_of::() + }) || ({ + let __is_50: Object = keyring.clone(); + __is_50.clone().is_instance_of::() + }) || ({ + let __is_51: Object = keyring.clone(); + __is_51.clone().is_instance_of::() + }) || ({ + let __is_52: Object = keyring.clone(); + __is_52.clone().is_instance_of::() + }) || ({ + let __is_53: Object = keyring.clone(); + __is_53.clone().is_instance_of::() + }) || ({ + let __is_54: Object = keyring.clone(); + __is_54.clone().is_instance_of::() + }) || ({ + let __is_55: Object = keyring.clone(); + __is_55.clone().is_instance_of::() + }) || ({ + let __is_56: Object = keyring.clone(); + __is_56.clone().is_instance_of::() + }) || ({ + let __is_57: Object = keyring.clone(); + __is_57.clone().is_instance_of::() + }) || ({ + let __is_58: Object = keyring.clone(); + __is_58.clone().is_instance_of::() + }) + } + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/MultiKeyring.dfy(461,3) pub fn AttemptDecryptDataKey(keyring: &Object, input: &Arc) -> Arc, Arc>> { let mut res = MaybePlacebo::, Arc>>>::new(); let mut valueOrError0: Arc, Arc>>; @@ -120832,12 +121722,17 @@ pub mod _MultiKeyring_Compile { return res.read(); }; let mut output: Arc = valueOrError0.Extract(); - let mut valueOrError1: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(crate::implementation_from_dafny::_Materials_Compile::_default::DecryptionMaterialsTransitionIsValid(input.materials(), output.materials()), &Arc::new(Error::AwsCryptographicMaterialProvidersException { - message: string_utf16_of("Keyring performed invalid material transition") - })); - if valueOrError1.IsFailure() { - res = MaybePlacebo::from(valueOrError1.PropagateFailure::>()); - return res.read(); + if !(_default::_Verified_q(keyring) || ({ + let __is_59: Object = keyring.clone(); + __is_59.clone().is_instance_of::() + })) { + let mut valueOrError1: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(crate::implementation_from_dafny::_Materials_Compile::_default::DecryptionMaterialsTransitionIsValid(input.materials(), output.materials()), &Arc::new(Error::AwsCryptographicMaterialProvidersException { + message: string_utf16_of("Keyring performed invalid material transition") + })); + if valueOrError1.IsFailure() { + res = MaybePlacebo::from(valueOrError1.PropagateFailure::>()); + return res.read(); + } }; res = MaybePlacebo::from(Arc::new(Result::, Arc>::Success { value: output.clone() @@ -120846,7 +121741,7 @@ pub mod _MultiKeyring_Compile { } } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/MultiKeyring.dfy(18,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/MultiKeyring.dfy(69,3) pub struct MultiKeyring { pub __i_generatorKeyring: Arc>>, pub __i_childKeyrings: Sequence> @@ -120861,7 +121756,7 @@ pub mod _MultiKeyring_Compile { /// = type=implication /// # On keyring initialization, a keyring MUST define at least one of the /// # following: - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/MultiKeyring.dfy(43,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/MultiKeyring.dfy(95,5) pub fn _ctor(this: &Object, generatorKeyring: &Arc>>, childKeyrings: &Sequence>) -> () { let mut _set___i_generatorKeyring: bool = false; let mut _set___i_childKeyrings: bool = false; @@ -120869,11 +121764,11 @@ pub mod _MultiKeyring_Compile { update_field_uninit_object!(this.clone(), __i_childKeyrings, _set___i_childKeyrings, childKeyrings.clone()); return (); } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/MultiKeyring.dfy(40,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/MultiKeyring.dfy(92,5) pub fn generatorKeyring(&self) -> Arc>> { self.__i_generatorKeyring.clone() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/MultiKeyring.dfy(41,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/MultiKeyring.dfy(93,5) pub fn childKeyrings(&self) -> Sequence> { self.__i_childKeyrings.clone() } @@ -120894,7 +121789,7 @@ pub mod _MultiKeyring_Compile { impl IKeyring for MultiKeyring { - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/MultiKeyring.dfy(104,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/MultiKeyring.dfy(176,5) fn _OnEncrypt_k(&self, input: &Arc) -> Arc, Arc>> { let mut res = MaybePlacebo::, Arc>>>::new(); if matches!((&self.generatorKeyring().clone()).as_ref(), None{ .. }) && matches!(input.materials().plaintextDataKey().as_ref(), None{ .. }) { @@ -120929,46 +121824,64 @@ pub mod _MultiKeyring_Compile { res = MaybePlacebo::from(valueOrError1.PropagateFailure::>()); return res.read(); }; - let mut valueOrError2: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(crate::implementation_from_dafny::_Materials_Compile::_default::ValidEncryptionMaterialsTransition(input.materials(), onEncryptOutput.value().materials()), &Arc::new(Error::AwsCryptographicMaterialProvidersException { - message: string_utf16_of("Generator keyring returned invalid encryption materials") - })); - if valueOrError2.IsFailure() { - res = MaybePlacebo::from(valueOrError2.PropagateFailure::>()); - return res.read(); + if !(_default::_Verified_q(self.generatorKeyring().clone().value()) || ({ + let __is_60: Object = self.generatorKeyring().clone().value().clone(); + __is_60.clone().is_instance_of::() + })) { + let mut valueOrError2: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(crate::implementation_from_dafny::_Materials_Compile::_default::EncryptionMaterialsHasPlaintextDataKey(onEncryptOutput.value().materials()), &Arc::new(Error::AwsCryptographicMaterialProvidersException { + message: string_utf16_of("Could not retrieve materials required for encryption") + })); + if valueOrError2.IsFailure() { + res = MaybePlacebo::from(valueOrError2.PropagateFailure::>()); + return res.read(); + }; + let mut valueOrError3: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(crate::implementation_from_dafny::_Materials_Compile::_default::ValidEncryptionMaterialsTransition(input.materials(), onEncryptOutput.value().materials()), &Arc::new(Error::AwsCryptographicMaterialProvidersException { + message: string_utf16_of("Generator keyring returned invalid encryption materials") + })); + if valueOrError3.IsFailure() { + res = MaybePlacebo::from(valueOrError3.PropagateFailure::>()); + return res.read(); + } }; returnMaterials = onEncryptOutput.value().materials().clone(); }; - let mut _hi0: DafnyInt = self.childKeyrings().clone().cardinality(); - for i in integer_range(int!(0), _hi0.clone()) { + let mut _hi0: u64 = truncate!(self.childKeyrings().clone().cardinality(), u64); + for i in integer_range(0, _hi0).map(Into::::into) { let mut onEncryptInput: Arc = Arc::new(OnEncryptInput::OnEncryptInput { materials: returnMaterials.clone() }); + let mut child: Object = self.childKeyrings().clone().get(&int!((&i).clone())); let mut onEncryptOutput: Arc, Arc>>; - let mut _out1: Arc, Arc>> = IKeyring::OnEncrypt(rd!(self.childKeyrings().clone().get(&i)), &onEncryptInput); + let mut _out1: Arc, Arc>> = IKeyring::OnEncrypt(rd!(child.clone()), &onEncryptInput); onEncryptOutput = _out1.clone(); - let mut valueOrError3: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(matches!((&onEncryptOutput).as_ref(), Success{ .. }), &Arc::new(Error::AwsCryptographicMaterialProvidersException { + let mut valueOrError4: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(matches!((&onEncryptOutput).as_ref(), Success{ .. }), &Arc::new(Error::AwsCryptographicMaterialProvidersException { message: string_utf16_of("Child keyring failed to encrypt plaintext data key") })); - if valueOrError3.IsFailure() { - res = MaybePlacebo::from(valueOrError3.PropagateFailure::>()); - return res.read(); - }; - let mut valueOrError4: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(crate::implementation_from_dafny::_Materials_Compile::_default::ValidEncryptionMaterialsTransition(&returnMaterials, onEncryptOutput.value().materials()), &Arc::new(Error::AwsCryptographicMaterialProvidersException { - message: string_utf16_of("Child keyring performed invalid transition on encryption materials") - })); if valueOrError4.IsFailure() { res = MaybePlacebo::from(valueOrError4.PropagateFailure::>()); return res.read(); }; + if !(_default::_Verified_q(&child) || ({ + let __is_61: Object = child.clone(); + __is_61.clone().is_instance_of::() + })) { + let mut valueOrError5: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(crate::implementation_from_dafny::_Materials_Compile::_default::EncryptionMaterialsHasPlaintextDataKey(onEncryptOutput.value().materials()), &Arc::new(Error::AwsCryptographicMaterialProvidersException { + message: string_utf16_of("Could not retrieve materials required for encryption") + })); + if valueOrError5.IsFailure() { + res = MaybePlacebo::from(valueOrError5.PropagateFailure::>()); + return res.read(); + }; + let mut valueOrError6: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(crate::implementation_from_dafny::_Materials_Compile::_default::ValidEncryptionMaterialsTransition(&returnMaterials, onEncryptOutput.value().materials()), &Arc::new(Error::AwsCryptographicMaterialProvidersException { + message: string_utf16_of("Child keyring performed invalid transition on encryption materials") + })); + if valueOrError6.IsFailure() { + res = MaybePlacebo::from(valueOrError6.PropagateFailure::>()); + return res.read(); + } + }; returnMaterials = onEncryptOutput.value().materials().clone(); } - let mut valueOrError5: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(crate::implementation_from_dafny::_Materials_Compile::_default::ValidEncryptionMaterialsTransition(input.materials(), &returnMaterials), &Arc::new(Error::AwsCryptographicMaterialProvidersException { - message: string_utf16_of("A child or generator keyring modified the encryption materials in illegal ways.") - })); - if valueOrError5.IsFailure() { - res = MaybePlacebo::from(valueOrError5.PropagateFailure::>()); - return res.read(); - }; res = MaybePlacebo::from(Arc::new(Result::, Arc>::Success { value: Arc::new(OnEncryptOutput::OnEncryptOutput { materials: returnMaterials.clone() @@ -120976,7 +121889,7 @@ pub mod _MultiKeyring_Compile { })); return res.read(); } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/MultiKeyring.dfy(231,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/MultiKeyring.dfy(353,5) fn _OnDecrypt_k(&self, input: &Arc) -> Arc, Arc>> { let mut res = MaybePlacebo::, Arc>>>::new(); let mut materials: Arc = input.materials().clone(); @@ -121003,10 +121916,10 @@ pub mod _MultiKeyring_Compile { failures = failures.concat(&seq![result.error().clone()]); } }; - let mut _hi0: DafnyInt = self.childKeyrings().clone().cardinality(); - for j in integer_range(int!(0), _hi0.clone()) { + let mut _hi0: u64 = truncate!(self.childKeyrings().clone().cardinality(), u64); + for j in integer_range(0, _hi0).map(Into::::into) { let mut result: Arc, Arc>>; - let mut _out1: Arc, Arc>> = _default::AttemptDecryptDataKey(&self.childKeyrings().clone().get(&j), input); + let mut _out1: Arc, Arc>> = _default::AttemptDecryptDataKey(&self.childKeyrings().clone().get(&int!((&j).clone())), input); result = _out1.clone(); if matches!((&result).as_ref(), Success{ .. }) { res = MaybePlacebo::from(Arc::new(Result::, Arc>::Success { @@ -121033,6 +121946,271 @@ pub mod _MultiKeyring_Compile { UpcastObjectFn!(dyn IKeyring); } } +/// dafny/StructuredEncryption/src/OptimizedMergeSort.dfy(6,1) +pub mod _OptimizedMergeSort_Compile { + pub use ::dafny_runtime::DafnyType; + pub use ::dafny_runtime::Sequence; + pub use ::std::sync::Arc; + pub use ::std::marker::Sync; + pub use ::std::marker::Send; + pub use ::dafny_runtime::MaybePlacebo; + pub use ::dafny_runtime::truncate; + pub use ::dafny_runtime::Object; + pub use ::dafny_runtime::DafnyInt; + pub use ::dafny_runtime::int; + pub use ::std::mem::MaybeUninit; + pub use ::dafny_runtime::array; + pub use ::dafny_runtime::DafnyUsize; + pub use ::dafny_runtime::integer_range; + pub use ::dafny_runtime::rd; + pub use crate::implementation_from_dafny::_OptimizedMergeSort_Compile::PlaceResults::Left; + pub use ::std::convert::Into; + pub use crate::implementation_from_dafny::_OptimizedMergeSort_Compile::PlaceResults::Right; + pub use ::std::fmt::Debug; + pub use ::std::fmt::Formatter; + pub use ::std::fmt::Result; + pub use ::dafny_runtime::DafnyPrint; + pub use ::dafny_runtime::SequenceIter; + pub use ::dafny_runtime::seq; + pub use ::std::cmp::Eq; + pub use ::std::hash::Hash; + pub use ::std::hash::Hasher; + pub use ::std::default::Default; + pub use ::std::convert::AsRef; + + pub struct _default {} + + impl _default { + /// dafny/StructuredEncryption/src/OptimizedMergeSort.dfy(31,3) + pub fn MergeSort<_T: DafnyType>(s: &Sequence<_T>, lessThanOrEq: &Arc bool + Sync + Send>) -> Sequence<_T> { + let mut result = MaybePlacebo::>::new(); + if truncate!(s.cardinality(), u64) <= 1 { + result = MaybePlacebo::from(s.clone()); + return result.read(); + } else { + let mut left = MaybePlacebo::>::new(); + let mut _init0: Arc _T + Sync + Send> = { + let s: Sequence<_T> = s.clone(); + { + let mut s = s.clone(); + Arc::new(move |i: &DafnyInt| -> _T{ + s.get(&int!((&truncate!(i.clone(), u64)).clone())) + }) + } + }; + let mut _nw0: Object<[MaybeUninit<_T>]> = array::placebos_usize_object::<_T>(DafnyUsize::into_usize(truncate!(s.cardinality(), u64))); + for __i0_0 in integer_range(0, rd!(_nw0.clone()).len()) { + { + let __idx0 = DafnyUsize::into_usize(__i0_0.clone()); + ::dafny_runtime::md!(_nw0)[__idx0] = MaybeUninit::new((&_init0)(&int!(__i0_0.clone()))); + } + } + left = MaybePlacebo::from(array::construct_object(_nw0.clone())); + let mut right = MaybePlacebo::>::new(); + let mut _init1: Arc _T + Sync + Send> = { + let s: Sequence<_T> = s.clone(); + { + let mut s = s.clone(); + Arc::new(move |i: &DafnyInt| -> _T{ + s.get(&int!((&truncate!(i.clone(), u64)).clone())) + }) + } + }; + let mut _nw1: Object<[MaybeUninit<_T>]> = array::placebos_usize_object::<_T>(DafnyUsize::into_usize(truncate!(s.cardinality(), u64))); + for __i0_1 in integer_range(0, rd!(_nw1.clone()).len()) { + { + let __idx0 = DafnyUsize::into_usize(__i0_1.clone()); + ::dafny_runtime::md!(_nw1)[__idx0] = MaybeUninit::new((&_init1)(&int!(__i0_1.clone()))); + } + } + right = MaybePlacebo::from(array::construct_object(_nw1.clone())); + let mut boundedLo: u64; + let mut boundedHi: u64; + let mut _rhs0: u64 = 0; + let mut _rhs1: u64 = truncate!(int!(rd!(right.read()).len()), u64); + boundedLo = _rhs0; + boundedHi = _rhs1; + let mut _out0: ResultPlacement = _default::MergeSortMethod::<_T>(&left.read(), &right.read(), lessThanOrEq, boundedLo, boundedHi, &Arc::new(PlaceResults::Right {})); + result = MaybePlacebo::from(Sequence::from_array_object(&right.read())); + }; + return result.read(); + } + /// dafny/StructuredEncryption/src/OptimizedMergeSort.dfy(96,3) + pub fn MergeSortNat<_T: DafnyType>(s: &Sequence<_T>, lessThanOrEq: &Arc bool + Sync + Send>) -> Sequence<_T> { + _default::MergeSort::<_T>(s, lessThanOrEq) + } + /// dafny/StructuredEncryption/src/OptimizedMergeSort.dfy(111,3) + pub fn MergeSortMethod<_T: DafnyType>(left: &Object<[_T]>, right: &Object<[_T]>, lessThanOrEq: &Arc bool + Sync + Send>, lo: u64, hi: u64, r#where: &Arc) -> ResultPlacement { + let mut resultPlacement = MaybePlacebo::::new(); + if hi - lo == 1 { + if r#where.clone() == Arc::new(PlaceResults::Right {}) { + { + let __idx0 = DafnyUsize::into_usize(lo); + ::dafny_runtime::md!(right)[__idx0] = rd!(left)[DafnyUsize::into_usize(lo)].clone(); + }; + resultPlacement = MaybePlacebo::from(Arc::new(PlaceResults::Right {})); + return resultPlacement.read(); + } else { + resultPlacement = MaybePlacebo::from(Arc::new(PlaceResults::Left {})); + return resultPlacement.read(); + } + }; + let mut mid: u64 = (hi - lo) / 2 + lo; + let mut _placement_q: Arc; + let mut _out0: ResultPlacement = _default::MergeSortMethod::<_T>(left, right, lessThanOrEq, lo, mid, &Arc::new(PlaceResults::Either {})); + _placement_q = _out0.clone(); + let mut _out1: ResultPlacement = _default::MergeSortMethod::<_T>(left, right, lessThanOrEq, mid, hi, &_placement_q); + if matches!((&_placement_q).as_ref(), Left{ .. }) { + _default::MergeIntoRight::<_T>(left, right, lessThanOrEq, lo, mid, hi); + let mut _rhs0: Arc = Arc::new(PlaceResults::Right {}); + resultPlacement = MaybePlacebo::from(_rhs0.clone()); + } else { + _default::MergeIntoRight::<_T>(right, left, lessThanOrEq, lo, mid, hi); + let mut _rhs1: Arc = Arc::new(PlaceResults::Left {}); + resultPlacement = MaybePlacebo::from(_rhs1.clone()); + }; + 'label_goto_2: loop { + break; + }; + if matches!((&resultPlacement.read()).as_ref(), Left{ .. }) && r#where.clone() == Arc::new(PlaceResults::Right {}) { + let mut _hi0: u64 = hi; + for i in integer_range(lo, _hi0).map(Into::::into) { + { + let __idx0 = DafnyUsize::into_usize(i); + ::dafny_runtime::md!(right)[__idx0] = rd!(left)[DafnyUsize::into_usize(i)].clone(); + } + } + resultPlacement = MaybePlacebo::from(Arc::new(PlaceResults::Right {})); + }; + if matches!((&resultPlacement.read()).as_ref(), Right{ .. }) && r#where.clone() == Arc::new(PlaceResults::Left {}) { + let mut _hi1: u64 = hi; + for i in integer_range(lo, _hi1).map(Into::::into) { + { + let __idx0 = DafnyUsize::into_usize(i); + ::dafny_runtime::md!(left)[__idx0] = rd!(right)[DafnyUsize::into_usize(i)].clone(); + } + } + resultPlacement = MaybePlacebo::from(Arc::new(PlaceResults::Left {})); + }; + return resultPlacement.read(); + } + /// dafny/StructuredEncryption/src/OptimizedMergeSort.dfy(241,3) + pub fn MergeIntoRight<_T: DafnyType>(left: &Object<[_T]>, right: &Object<[_T]>, lessThanOrEq: &Arc bool + Sync + Send>, lo: u64, mid: u64, hi: u64) -> () { + let mut leftPosition: u64; + let mut rightPosition: u64; + let mut iter: u64; + let mut _rhs0: u64 = lo; + let mut _rhs1: u64 = mid; + let mut _rhs2: u64 = lo; + leftPosition = _rhs0; + rightPosition = _rhs1; + iter = _rhs2; + while iter < hi { + if leftPosition == mid || rightPosition < hi && lessThanOrEq(&rd!(left)[DafnyUsize::into_usize(rightPosition)].clone(), &rd!(left)[DafnyUsize::into_usize(leftPosition)].clone()) { + { + let __idx0 = DafnyUsize::into_usize(iter); + ::dafny_runtime::md!(right)[__idx0] = rd!(left)[DafnyUsize::into_usize(rightPosition)].clone(); + }; + let mut _rhs3: u64 = rightPosition + 1; + let mut _rhs4: u64 = iter + 1; + rightPosition = _rhs3; + iter = _rhs4; + } else { + { + let __idx0 = DafnyUsize::into_usize(iter); + ::dafny_runtime::md!(right)[__idx0] = rd!(left)[DafnyUsize::into_usize(leftPosition)].clone(); + }; + let mut _rhs5: u64 = leftPosition + 1; + let mut _rhs6: u64 = iter + 1; + leftPosition = _rhs5; + iter = _rhs6; + } + }; + return (); + } + } + + /// dafny/StructuredEncryption/src/OptimizedMergeSort.dfy(103,3) + #[derive(PartialEq, Clone)] + pub enum PlaceResults { + Left {}, + Right {}, + Either {} + } + + impl PlaceResults {} + + impl Debug + for PlaceResults { + fn fmt(&self, f: &mut Formatter) -> Result { + DafnyPrint::fmt_print(self, f, true) + } + } + + impl DafnyPrint + for PlaceResults { + fn fmt_print(&self, _formatter: &mut Formatter, _in_seq: bool) -> std::fmt::Result { + match self { + PlaceResults::Left{} => { + write!(_formatter, "OptimizedMergeSort_Compile.PlaceResults.Left")?; + Ok(()) + }, + PlaceResults::Right{} => { + write!(_formatter, "OptimizedMergeSort_Compile.PlaceResults.Right")?; + Ok(()) + }, + PlaceResults::Either{} => { + write!(_formatter, "OptimizedMergeSort_Compile.PlaceResults.Either")?; + Ok(()) + }, + } + } + } + + impl PlaceResults { + /// Enumerates all possible values of PlaceResults + pub fn _AllSingletonConstructors() -> SequenceIter> { + seq![Arc::new(PlaceResults::Left {}), Arc::new(PlaceResults::Right {}), Arc::new(PlaceResults::Either {})].iter() + } + } + + impl Eq + for PlaceResults {} + + impl Hash + for PlaceResults { + fn hash<_H: Hasher>(&self, _state: &mut _H) { + match self { + PlaceResults::Left{} => { + + }, + PlaceResults::Right{} => { + + }, + PlaceResults::Either{} => { + + }, + } + } + } + + impl Default + for PlaceResults { + fn default() -> PlaceResults { + PlaceResults::Left {} + } + } + + impl AsRef + for PlaceResults { + fn as_ref(&self) -> &Self { + self + } + } + + /// dafny/StructuredEncryption/src/OptimizedMergeSort.dfy(104,3) + pub type ResultPlacement = Arc; +} /// ../submodules/MaterialProviders/StandardLibrary/src/OsLang.dfy(4,1) pub mod OsLang { pub use ::dafny_runtime::Sequence; @@ -121061,16 +122239,17 @@ pub mod _PathsTests_Compile { pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::structuredencryption::internaldafny::types::PathSegment; pub use ::dafny_runtime::seq; pub use ::dafny_runtime::DafnyPrintWrapper; + pub use crate::implementation_from_dafny::UTF8::ValidUTF8Bytes; pub struct _default {} impl _default { - /// dafny/StructuredEncryption/test/Paths.dfy(12,3) + /// dafny/StructuredEncryption/test/Paths.dfy(22,3) pub fn TestSpecExamples() -> () { let mut tableName: Sequence = string_utf16_of("example_table"); let mut pathToTest: Sequence> = crate::implementation_from_dafny::_StructuredEncryptionPaths_Compile::_default::StringToUniPath(&string_utf16_of("name")); let mut _e00: Sequence = crate::implementation_from_dafny::_StructuredEncryptionPaths_Compile::_default::CanonPath(&tableName, &pathToTest); - let mut _e10: Sequence = crate::implementation_from_dafny::UTF8::_default::EncodeAscii(&string_utf16_of("example_table")).concat(&seq![0, 0, 0, 0, 0, 0, 0, 1]).concat(&seq![DafnyCharUTF16(36 as u16).0 as u8]).concat(&seq![0, 0, 0, 0, 0, 0, 0, 4]).concat(&crate::implementation_from_dafny::UTF8::_default::EncodeAscii(&string_utf16_of("name"))); + let mut _e10: Sequence = _default::example_table().concat(&seq![0, 0, 0, 0, 0, 0, 0, 1]).concat(&seq![DafnyCharUTF16(36 as u16).0 as u8]).concat(&seq![0, 0, 0, 0, 0, 0, 0, 4]).concat(&_default::name()); if !(_e00.clone() == _e10.clone()) { print!("{}", DafnyPrintWrapper(&string_utf16_of("\nLeft:\n"))); print!("{}", DafnyPrintWrapper(&_e00)); @@ -121080,9 +122259,19 @@ pub mod _PathsTests_Compile { }; return (); } + /// dafny/StructuredEncryption/test/Paths.dfy(12,3) + pub fn example_table() -> ValidUTF8Bytes { + let mut s: Sequence = seq![101, 120, 97, 109, 112, 108, 101, 95, 116, 97, 98, 108, 101]; + s.clone() + } + /// dafny/StructuredEncryption/test/Paths.dfy(17,3) + pub fn name() -> ValidUTF8Bytes { + let mut s: Sequence = seq![110, 97, 109, 101]; + s.clone() + } } - /// dafny/StructuredEncryption/test/Paths.dfy(12,3) + /// dafny/StructuredEncryption/test/Paths.dfy(22,3) #[test] pub fn TestSpecExamples() { _default::TestSpecExamples() @@ -121173,7 +122362,9 @@ pub mod _PutItemTransform_Compile { output = MaybePlacebo::from(valueOrError1.PropagateFailure::>()); return output.read(); }; - let mut valueOrError2: Arc>> = crate::implementation_from_dafny::_DynamoDbMiddlewareSupport_Compile::_default::IsWriteable(&tableConfig, input.sdkInput().Item()); + let mut valueOrError2: Arc>>; + let mut _out0: Arc>> = crate::implementation_from_dafny::_DynamoDbMiddlewareSupport_Compile::_default::IsWriteable(&tableConfig, input.sdkInput().Item()); + valueOrError2 = _out0.clone(); if valueOrError2.IsFailure() { output = MaybePlacebo::from(valueOrError2.PropagateFailure::>()); return output.read(); @@ -121186,18 +122377,18 @@ pub mod _PutItemTransform_Compile { }; let mut _v1: bool = valueOrError3.Extract(); let mut valueOrError4: Arc, Arc>, Arc>>; - let mut _out0: Arc, Arc>, Arc>> = crate::implementation_from_dafny::_DynamoDbMiddlewareSupport_Compile::_default::AddSignedBeacons(&tableConfig, input.sdkInput().Item()); - valueOrError4 = _out0.clone(); + let mut _out1: Arc, Arc>, Arc>> = crate::implementation_from_dafny::_DynamoDbMiddlewareSupport_Compile::_default::AddSignedBeacons(&tableConfig, input.sdkInput().Item()); + valueOrError4 = _out1.clone(); if valueOrError4.IsFailure() { output = MaybePlacebo::from(valueOrError4.PropagateFailure::>()); return output.read(); }; let mut item: Map, Arc> = valueOrError4.Extract(); let mut encryptRes: Arc, Arc>>; - let mut _out1: Arc, Arc>> = IDynamoDbItemEncryptorClient::EncryptItem(rd!(tableConfig.itemEncryptor().clone()), &Arc::new(EncryptItemInput::EncryptItemInput { + let mut _out2: Arc, Arc>> = IDynamoDbItemEncryptorClient::EncryptItem(rd!(tableConfig.itemEncryptor().clone()), &Arc::new(EncryptItemInput::EncryptItemInput { plaintextItem: item.clone() })); - encryptRes = _out1.clone(); + encryptRes = _out2.clone(); let mut valueOrError5: Arc, Arc>> = crate::implementation_from_dafny::_DdbMiddlewareConfig_Compile::_default::MapError::>(&encryptRes); if valueOrError5.IsFailure() { output = MaybePlacebo::from(valueOrError5.PropagateFailure::>()); @@ -121211,8 +122402,8 @@ pub mod _PutItemTransform_Compile { }; let mut keyId: Arc>> = valueOrError6.Extract(); let mut valueOrError7: Arc, Arc>, Arc>>; - let mut _out2: Arc, Arc>, Arc>> = crate::implementation_from_dafny::_DynamoDbMiddlewareSupport_Compile::_default::GetEncryptedBeacons(&tableConfig, input.sdkInput().Item(), &crate::implementation_from_dafny::_DynamoDbEncryptionUtil_Compile::_default::MaybeFromOptionKeyId(&keyId)); - valueOrError7 = _out2.clone(); + let mut _out3: Arc, Arc>, Arc>> = crate::implementation_from_dafny::_DynamoDbMiddlewareSupport_Compile::_default::GetEncryptedBeacons(&tableConfig, input.sdkInput().Item(), &crate::implementation_from_dafny::_DynamoDbEncryptionUtil_Compile::_default::MaybeFromOptionKeyId(&keyId)); + valueOrError7 = _out3.clone(); if valueOrError7.IsFailure() { output = MaybePlacebo::from(valueOrError7.PropagateFailure::>()); return output.read(); @@ -121221,13 +122412,13 @@ pub mod _PutItemTransform_Compile { output = MaybePlacebo::from(Arc::new(Result::, Arc>::Success { value: Arc::new(PutItemInputTransformOutput::PutItemInputTransformOutput { transformedInput: { - let __pat_let47_0: Arc = input.sdkInput().clone(); + let __pat_let62_0: Arc = input.sdkInput().clone(); { - let _dt__update__tmp_h0: Arc = __pat_let47_0.clone(); + let _dt__update__tmp_h0: Arc = __pat_let62_0.clone(); { - let __pat_let48_0: Map, Arc> = encrypted.encryptedItem().merge(&beacons); + let __pat_let63_0: Map, Arc> = encrypted.encryptedItem().merge(&beacons); { - let _dt__update_hItem_h0: Map, Arc> = __pat_let48_0.clone(); + let _dt__update_hItem_h0: Map, Arc> = __pat_let63_0.clone(); Arc::new(PutItemInput::PutItemInput { TableName: _dt__update__tmp_h0.TableName().clone(), Item: _dt__update_hItem_h0.clone(), @@ -121238,7 +122429,8 @@ pub mod _PutItemTransform_Compile { ConditionalOperator: _dt__update__tmp_h0.ConditionalOperator().clone(), ConditionExpression: _dt__update__tmp_h0.ConditionExpression().clone(), ExpressionAttributeNames: _dt__update__tmp_h0.ExpressionAttributeNames().clone(), - ExpressionAttributeValues: _dt__update__tmp_h0.ExpressionAttributeValues().clone() + ExpressionAttributeValues: _dt__update__tmp_h0.ExpressionAttributeValues().clone(), + ReturnValuesOnConditionCheckFailure: _dt__update__tmp_h0.ReturnValuesOnConditionCheckFailure().clone() }) } } @@ -121262,7 +122454,7 @@ pub mod _PutItemTransform_Compile { /// The response will contain Attributes if the related PutItem request's /// [ReturnValues](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_PutItem.html#DDB-PutItem-request-ReturnValues) /// had a value of `ALL_OLD` and the PutItem call replaced a pre-existing item. - /// dafny/DynamoDbEncryptionTransforms/src/PutItemTransform.dfy(81,3) + /// dafny/DynamoDbEncryptionTransforms/src/PutItemTransform.dfy(71,3) pub fn Output(config: &Arc, input: &Arc) -> Arc, Arc>> { let mut output = MaybePlacebo::, Arc>>>::new(); let mut tableName: Sequence = input.originalInput().TableName().clone(); @@ -121295,15 +122487,15 @@ pub mod _PutItemTransform_Compile { output = MaybePlacebo::from(Arc::new(Result::, Arc>::Success { value: Arc::new(PutItemOutputTransformOutput::PutItemOutputTransformOutput { transformedOutput: { - let __pat_let49_0: Arc = input.sdkOutput().clone(); + let __pat_let64_0: Arc = input.sdkOutput().clone(); { - let _dt__update__tmp_h0: Arc = __pat_let49_0.clone(); + let _dt__update__tmp_h0: Arc = __pat_let64_0.clone(); { - let __pat_let50_0: Arc, Arc>>> = Arc::new(Option::, Arc>>::Some { + let __pat_let65_0: Arc, Arc>>> = Arc::new(Option::, Arc>>::Some { value: item.clone() }); { - let _dt__update_hAttributes_h0: Arc, Arc>>> = __pat_let50_0.clone(); + let _dt__update_hAttributes_h0: Arc, Arc>>> = __pat_let65_0.clone(); Arc::new(PutItemOutput::PutItemOutput { Attributes: _dt__update_hAttributes_h0.clone(), ConsumedCapacity: _dt__update__tmp_h0.ConsumedCapacity().clone(), @@ -121337,6 +122529,7 @@ pub mod _PutItemTransformTest_Compile { pub use crate::implementation_from_dafny::software::amazon::cryptography::services::dynamodb::internaldafny::types::ReturnItemCollectionMetrics; pub use crate::implementation_from_dafny::software::amazon::cryptography::services::dynamodb::internaldafny::types::ConditionalOperator; pub use crate::implementation_from_dafny::software::amazon::cryptography::services::dynamodb::internaldafny::types::AttributeValue; + pub use crate::implementation_from_dafny::software::amazon::cryptography::services::dynamodb::internaldafny::types::ReturnValuesOnConditionCheckFailure; pub use crate::implementation_from_dafny::_Wrappers_Compile::Result; pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::transforms::internaldafny::types::PutItemInputTransformOutput; pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::transforms::internaldafny::types::Error; @@ -121374,7 +122567,8 @@ pub mod _PutItemTransformTest_Compile { ConditionalOperator: Arc::new(Option::>::None {}), ConditionExpression: Arc::new(Option::>::None {}), ExpressionAttributeNames: Arc::new(Option::, Sequence>>::None {}), - ExpressionAttributeValues: Arc::new(Option::, Arc>>::None {}) + ExpressionAttributeValues: Arc::new(Option::, Arc>>::None {}), + ReturnValuesOnConditionCheckFailure: Arc::new(Option::>::None {}) }); let mut transformed: Arc, Arc>>; let mut _out2: Arc, Arc>> = IDynamoDbEncryptionTransformsClient::PutItemInputTransform(rd!(middlewareUnderTest.clone()), &Arc::new(PutItemInputTransformInput::PutItemInputTransformInput { @@ -121403,7 +122597,8 @@ pub mod _PutItemTransformTest_Compile { ConditionalOperator: Arc::new(Option::>::None {}), ConditionExpression: Arc::new(Option::>::None {}), ExpressionAttributeNames: Arc::new(Option::, Sequence>>::None {}), - ExpressionAttributeValues: Arc::new(Option::, Arc>>::None {}) + ExpressionAttributeValues: Arc::new(Option::, Arc>>::None {}), + ReturnValuesOnConditionCheckFailure: Arc::new(Option::>::None {}) }); let mut transformed: Arc, Arc>>; let mut _out2: Arc, Arc>> = IDynamoDbEncryptionTransformsClient::PutItemInputTransform(rd!(middlewareUnderTest.clone()), &Arc::new(PutItemInputTransformInput::PutItemInputTransformInput { @@ -121457,7 +122652,8 @@ pub mod _PutItemTransformTest_Compile { ConditionalOperator: Arc::new(Option::>::None {}), ConditionExpression: Arc::new(Option::>::None {}), ExpressionAttributeNames: Arc::new(Option::, Sequence>>::None {}), - ExpressionAttributeValues: Arc::new(Option::, Arc>>::None {}) + ExpressionAttributeValues: Arc::new(Option::, Arc>>::None {}), + ReturnValuesOnConditionCheckFailure: Arc::new(Option::>::None {}) }); let mut transformed: Arc, Arc>>; let mut _out2: Arc, Arc>> = IDynamoDbEncryptionTransformsClient::PutItemInputTransform(rd!(middlewareUnderTest.clone()), &Arc::new(PutItemInputTransformInput::PutItemInputTransformInput { @@ -121492,7 +122688,8 @@ pub mod _PutItemTransformTest_Compile { ConditionalOperator: Arc::new(Option::>::None {}), ConditionExpression: Arc::new(Option::>::None {}), ExpressionAttributeNames: Arc::new(Option::, Sequence>>::None {}), - ExpressionAttributeValues: Arc::new(Option::, Arc>>::None {}) + ExpressionAttributeValues: Arc::new(Option::, Arc>>::None {}), + ReturnValuesOnConditionCheckFailure: Arc::new(Option::>::None {}) }); let mut transformed: Arc, Arc>>; let mut _out2: Arc, Arc>> = IDynamoDbEncryptionTransformsClient::PutItemOutputTransform(rd!(middlewareUnderTest.clone()), &Arc::new(PutItemOutputTransformInput::PutItemOutputTransformInput { @@ -121852,7 +123049,7 @@ pub mod RSAEncryption { pub use crate::implementation_from_dafny::software::amazon::cryptography::primitives::internaldafny::types::RSAModulusLengthBits; pub use crate::implementation_from_dafny::software::amazon::cryptography::primitives::internaldafny::types::Error; pub use crate::implementation_from_dafny::_Wrappers_Compile::Outcome; - pub use ::dafny_runtime::int; + pub use ::dafny_runtime::truncate; pub use ::dafny_runtime::string_utf16_of; pub use crate::implementation_from_dafny::software::amazon::cryptography::primitives::internaldafny::types::RSADecryptInput; pub use ::dafny_runtime::MaybePlacebo; @@ -121861,7 +123058,7 @@ pub mod RSAEncryption { pub struct _default {} impl _default { - /// ../submodules/MaterialProviders/AwsCryptographyPrimitives/src/RSAEncryption.dfy(11,3) + /// ../submodules/MaterialProviders/AwsCryptographyPrimitives/src/RSAEncryption.dfy(12,3) pub fn GenerateKeyPair(lengthBits: RSAModulusLengthBitsToGenerate) -> (Arc, Arc) { let mut publicKey: Arc; let mut privateKey: Arc; @@ -121887,14 +123084,14 @@ pub mod RSAEncryption { privateKey.clone() ); } - /// ../submodules/MaterialProviders/AwsCryptographyPrimitives/src/RSAEncryption.dfy(19,3) + /// ../submodules/MaterialProviders/AwsCryptographyPrimitives/src/RSAEncryption.dfy(20,3) pub fn GetRSAKeyModulusLength(publicKey: &Sequence) -> Arc>> { let mut valueOrError0: Arc>> = RSA::GetRSAKeyModulusLengthExtern(publicKey); if valueOrError0.IsFailure() { valueOrError0.PropagateFailure::() } else { let mut length: u32 = valueOrError0.Extract(); - let mut valueOrError1: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(int!(81) <= int!(length) && int!(length) < crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default::INT32_MAX_LIMIT(), &Arc::new(Error::AwsCryptographicPrimitivesError { + let mut valueOrError1: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(81 <= length as u64 && (length as u64) < truncate!(crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default::INT32_MAX_LIMIT(), u64), &Arc::new(Error::AwsCryptographicPrimitivesError { message: string_utf16_of("Unsupported length for RSA modulus.") })); if valueOrError1.IsFailure() { @@ -121906,10 +123103,10 @@ pub mod RSAEncryption { } } } - /// ../submodules/MaterialProviders/AwsCryptographyPrimitives/src/RSAEncryption.dfy(28,3) + /// ../submodules/MaterialProviders/AwsCryptographyPrimitives/src/RSAEncryption.dfy(29,3) pub fn Decrypt(input: &Arc) -> Arc, Arc>> { let mut output = MaybePlacebo::, Arc>>>::new(); - let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(int!(0) < input.privateKey().cardinality() && int!(0) < input.cipherText().cardinality(), &Arc::new(Error::AwsCryptographicPrimitivesError { + let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(0 < truncate!(input.privateKey().cardinality(), u64) && 0 < truncate!(input.cipherText().cardinality(), u64), &Arc::new(Error::AwsCryptographicPrimitivesError { message: string_utf16_of("") })); if valueOrError0.IsFailure() { @@ -121920,10 +123117,10 @@ pub mod RSAEncryption { output = MaybePlacebo::from(_out0.clone()); return output.read(); } - /// ../submodules/MaterialProviders/AwsCryptographyPrimitives/src/RSAEncryption.dfy(35,3) + /// ../submodules/MaterialProviders/AwsCryptographyPrimitives/src/RSAEncryption.dfy(38,3) pub fn Encrypt(input: &Arc) -> Arc, Arc>> { let mut output = MaybePlacebo::, Arc>>>::new(); - let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(int!(0) < input.publicKey().cardinality() && int!(0) < input.plaintext().cardinality(), &Arc::new(Error::AwsCryptographicPrimitivesError { + let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(0 < truncate!(input.publicKey().cardinality(), u64) && 0 < truncate!(input.plaintext().cardinality(), u64), &Arc::new(Error::AwsCryptographicPrimitivesError { message: string_utf16_of("") })); if valueOrError0.IsFailure() { @@ -121934,25 +123131,25 @@ pub mod RSAEncryption { output = MaybePlacebo::from(_out0.clone()); return output.read(); } - /// ../submodules/MaterialProviders/AwsCryptographyPrimitives/src/RSAEncryption.dfy(67,3) + /// ../submodules/MaterialProviders/AwsCryptographyPrimitives/src/RSAEncryption.dfy(72,3) pub fn CreateGetRSAKeyModulusLengthExternSuccess(output: u32) -> Arc>> { Arc::new(Result::>::Success { value: output }) } - /// ../submodules/MaterialProviders/AwsCryptographyPrimitives/src/RSAEncryption.dfy(71,3) + /// ../submodules/MaterialProviders/AwsCryptographyPrimitives/src/RSAEncryption.dfy(76,3) pub fn CreateGetRSAKeyModulusLengthExternFailure(error: &Arc) -> Arc>> { Arc::new(Result::>::Failure { error: error.clone() }) } - /// ../submodules/MaterialProviders/AwsCryptographyPrimitives/src/RSAEncryption.dfy(75,3) + /// ../submodules/MaterialProviders/AwsCryptographyPrimitives/src/RSAEncryption.dfy(80,3) pub fn CreateBytesSuccess(bytes: &Sequence) -> Arc, Arc>> { Arc::new(Result::, Arc>::Success { value: bytes.clone() }) } - /// ../submodules/MaterialProviders/AwsCryptographyPrimitives/src/RSAEncryption.dfy(79,3) + /// ../submodules/MaterialProviders/AwsCryptographyPrimitives/src/RSAEncryption.dfy(84,3) pub fn CreateBytesFailure(error: &Arc) -> Arc, Arc>> { Arc::new(Result::, Arc>::Failure { error: error.clone() @@ -121969,13 +123166,13 @@ pub mod _Random_Compile { pub use ::dafny_runtime::MaybePlacebo; pub use crate::implementation_from_dafny::software::amazon::cryptography::primitives::internaldafny::types::OpaqueError; pub use crate::implementation_from_dafny::_Wrappers_Compile::Outcome; - pub use ::dafny_runtime::int; + pub use ::dafny_runtime::truncate; pub use ::dafny_runtime::string_utf16_of; pub struct _default {} impl _default { - /// ../submodules/MaterialProviders/AwsCryptographyPrimitives/src/Random.dfy(12,3) + /// ../submodules/MaterialProviders/AwsCryptographyPrimitives/src/Random.dfy(13,3) pub fn GenerateBytes(i: i32) -> Arc, Arc>> { let mut res = MaybePlacebo::, Arc>>>::new(); let mut valueOrError0: Arc, OpaqueError>>; @@ -121986,7 +123183,7 @@ pub mod _Random_Compile { return res.read(); }; let mut value: Sequence = valueOrError0.Extract(); - let mut valueOrError1: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(value.cardinality() == int!(i), &Arc::new(Error::AwsCryptographicPrimitivesError { + let mut valueOrError1: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(truncate!(value.cardinality(), u64) == i as u64, &Arc::new(Error::AwsCryptographicPrimitivesError { message: string_utf16_of("Incorrect length from ExternRandom.") })); if valueOrError1.IsFailure() { @@ -122003,10 +123200,9 @@ pub mod _Random_Compile { /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawAESKeyring.dfy(14,1) pub mod _RawAESKeyring_Compile { pub use ::dafny_runtime::Sequence; - pub use ::dafny_runtime::_System::nat; pub use ::std::sync::Arc; pub use crate::implementation_from_dafny::software::amazon::cryptography::primitives::internaldafny::types::AESEncryptOutput; - pub use ::dafny_runtime::DafnyInt; + pub use ::dafny_runtime::truncate; pub use ::dafny_runtime::int; pub use ::dafny_runtime::Object; pub use ::dafny_runtime::allocate_object; @@ -122040,6 +123236,7 @@ pub mod _RawAESKeyring_Compile { pub use crate::implementation_from_dafny::_Wrappers_Compile::Outcome; pub use ::dafny_runtime::string_utf16_of; pub use ::dafny_runtime::integer_range; + pub use ::std::convert::Into; pub use crate::implementation_from_dafny::_EdkWrapping_Compile::UnwrapEdkMaterialOutput; pub use crate::implementation_from_dafny::_MaterialWrapping_Compile::UnwrapMaterial; pub use crate::implementation_from_dafny::_Wrappers_Compile::Result::Success; @@ -122070,32 +123267,32 @@ pub mod _RawAESKeyring_Compile { pub struct _default {} impl _default { - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawAESKeyring.dfy(402,3) - pub fn DeserializeEDKCiphertext(ciphertext: &Sequence, tagLen: &nat) -> Arc { - let mut encryptedKeyLength: DafnyInt = ciphertext.cardinality() - tagLen.clone(); + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawAESKeyring.dfy(442,3) + pub fn DeserializeEDKCiphertext(ciphertext: &Sequence, tagLen: u64) -> Arc { + let mut encryptedKeyLength: u64 = truncate!(ciphertext.cardinality(), u64) - tagLen; Arc::new(AESEncryptOutput::AESEncryptOutput { - cipherText: ciphertext.take(&encryptedKeyLength), - authTag: ciphertext.drop(&encryptedKeyLength) + cipherText: ciphertext.take(&int!((&encryptedKeyLength).clone())), + authTag: ciphertext.drop(&int!((&encryptedKeyLength).clone())) }) } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawAESKeyring.dfy(416,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawAESKeyring.dfy(457,3) pub fn SerializeEDKCiphertext(encOutput: &Arc) -> Sequence { encOutput.cipherText().concat(encOutput.authTag()) } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawAESKeyring.dfy(34,3) - pub fn AUTH_TAG_LEN_LEN() -> DafnyInt { - int!(4) - } /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawAESKeyring.dfy(35,3) - pub fn IV_LEN_LEN() -> DafnyInt { - int!(4) + pub fn AUTH_TAG_LEN_LEN() -> u64 { + 4 + } + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawAESKeyring.dfy(36,3) + pub fn IV_LEN_LEN() -> u64 { + 4 } } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawAESKeyring.dfy(37,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawAESKeyring.dfy(38,3) pub struct RawAESKeyring { - pub __i_cryptoPrimitives: Object, pub __i_wrappingKey: Sequence, + pub __i_cryptoPrimitives: Object, pub __i_wrappingAlgorithm: Arc, pub __i_keyNamespace: ValidUTF8Bytes, pub __i_keyName: ValidUTF8Bytes @@ -122106,10 +123303,10 @@ pub mod _RawAESKeyring_Compile { pub fn _allocate_object() -> Object { allocate_object::() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawAESKeyring.dfy(79,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawAESKeyring.dfy(81,5) pub fn _ctor(this: &Object, namespace: &ValidUTF8Bytes, name: &ValidUTF8Bytes, key: &Sequence, wrappingAlgorithm: &Arc, cryptoPrimitives: &Object) -> () { - let mut _set___i_cryptoPrimitives: bool = false; let mut _set___i_wrappingKey: bool = false; + let mut _set___i_cryptoPrimitives: bool = false; let mut _set___i_wrappingAlgorithm: bool = false; let mut _set___i_keyNamespace: bool = false; let mut _set___i_keyName: bool = false; @@ -122120,39 +123317,40 @@ pub mod _RawAESKeyring_Compile { update_field_uninit_object!(this.clone(), __i_cryptoPrimitives, _set___i_cryptoPrimitives, cryptoPrimitives.clone()); return (); } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawAESKeyring.dfy(360,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawAESKeyring.dfy(396,5) pub fn SerializeProviderInfo(&self, iv: &Sequence) -> Sequence { self.keyName().clone().concat(&crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default::UInt32ToSeq((self.wrappingAlgorithm().clone().tagLength().clone() * 8) as u32)).concat(&crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default::UInt32ToSeq(self.wrappingAlgorithm().clone().ivLength().clone() as u32)).concat(iv) } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawAESKeyring.dfy(369,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawAESKeyring.dfy(405,5) pub fn ShouldDecryptEDK(&self, edk: &Arc) -> bool { edk.keyProviderId().clone() == self.keyNamespace().clone() && self.ValidProviderInfo(edk.keyProviderInfo()) } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawAESKeyring.dfy(375,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawAESKeyring.dfy(411,5) pub fn ValidProviderInfo(&self, info: &Sequence) -> bool { - info.cardinality() == self.keyName().clone().cardinality() + _default::AUTH_TAG_LEN_LEN() + _default::IV_LEN_LEN() + int!(self.wrappingAlgorithm().clone().ivLength().clone()) && info.slice(&int!(0), &self.keyName().clone().cardinality()) == self.keyName().clone() && crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default::SeqToUInt32(&info.slice(&self.keyName().clone().cardinality(), &(self.keyName().clone().cardinality() + _default::AUTH_TAG_LEN_LEN()))) == 128 && crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default::SeqToUInt32(&info.slice(&self.keyName().clone().cardinality(), &(self.keyName().clone().cardinality() + _default::AUTH_TAG_LEN_LEN()))) == self.wrappingAlgorithm().clone().tagLength().clone() as u32 * 8 && crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default::SeqToUInt32(&info.slice(&(self.keyName().clone().cardinality() + _default::AUTH_TAG_LEN_LEN()), &(self.keyName().clone().cardinality() + _default::AUTH_TAG_LEN_LEN() + _default::IV_LEN_LEN()))) == self.wrappingAlgorithm().clone().ivLength().clone() as u32 && crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default::SeqToUInt32(&info.slice(&(self.keyName().clone().cardinality() + _default::AUTH_TAG_LEN_LEN()), &(self.keyName().clone().cardinality() + _default::AUTH_TAG_LEN_LEN() + _default::IV_LEN_LEN()))) == 12 + let mut keyname_size: u64 = truncate!(self.keyName().clone().cardinality(), u64); + truncate!(info.cardinality(), u64) == crate::implementation_from_dafny::_StandardLibrary_Compile::_MemoryMath_Compile::_default::Add4(keyname_size, _default::AUTH_TAG_LEN_LEN(), _default::IV_LEN_LEN(), self.wrappingAlgorithm().clone().ivLength().clone() as u64) && info.take(&int!((&keyname_size).clone())) == self.keyName().clone() && crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default::SeqToUInt32(&info.slice(&int!((&keyname_size).clone()), &int!((&(keyname_size + _default::AUTH_TAG_LEN_LEN())).clone()))) == 128 && 128 == self.wrappingAlgorithm().clone().tagLength().clone() as u32 * 8 && crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default::SeqToUInt32(&info.slice(&int!((&(keyname_size + _default::AUTH_TAG_LEN_LEN())).clone()), &int!((&(keyname_size + _default::AUTH_TAG_LEN_LEN() + _default::IV_LEN_LEN())).clone()))) == self.wrappingAlgorithm().clone().ivLength().clone() as u32 && crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default::SeqToUInt32(&info.slice(&int!((&(keyname_size + _default::AUTH_TAG_LEN_LEN())).clone()), &int!((&(keyname_size + _default::AUTH_TAG_LEN_LEN() + _default::IV_LEN_LEN())).clone()))) == 12 } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawAESKeyring.dfy(395,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawAESKeyring.dfy(434,5) pub fn GetIvFromProvInfo(&self, info: &Sequence) -> Sequence { - info.drop(&(self.keyName().clone().cardinality() + _default::AUTH_TAG_LEN_LEN() + _default::IV_LEN_LEN())) - } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawAESKeyring.dfy(42,5) - pub fn cryptoPrimitives(&self) -> Object { - self.__i_cryptoPrimitives.clone() + info.drop(&int!((&(truncate!(self.keyName().clone().cardinality(), u64) + _default::AUTH_TAG_LEN_LEN() + _default::IV_LEN_LEN())).clone())) } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawAESKeyring.dfy(73,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawAESKeyring.dfy(75,5) pub fn wrappingKey(&self) -> Sequence { self.__i_wrappingKey.clone() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawAESKeyring.dfy(74,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawAESKeyring.dfy(43,5) + pub fn cryptoPrimitives(&self) -> Object { + self.__i_cryptoPrimitives.clone() + } + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawAESKeyring.dfy(76,5) pub fn wrappingAlgorithm(&self) -> Arc { self.__i_wrappingAlgorithm.clone() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawAESKeyring.dfy(54,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawAESKeyring.dfy(56,5) pub fn keyNamespace(&self) -> ValidUTF8Bytes { self.__i_keyNamespace.clone() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawAESKeyring.dfy(55,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawAESKeyring.dfy(57,5) pub fn keyName(&self) -> ValidUTF8Bytes { self.__i_keyName.clone() } @@ -122173,7 +123371,7 @@ pub mod _RawAESKeyring_Compile { impl IKeyring for RawAESKeyring { - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawAESKeyring.dfy(120,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawAESKeyring.dfy(143,5) fn _OnEncrypt_k(&self, input: &Arc) -> Arc, Arc>> { let mut output = MaybePlacebo::, Arc>>>::new(); let mut materials: Arc = input.materials().clone(); @@ -122238,7 +123436,7 @@ pub mod _RawAESKeyring_Compile { }; return output.read(); } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawAESKeyring.dfy(241,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawAESKeyring.dfy(275,5) fn _OnDecrypt_k(&self, input: &Arc) -> Arc, Arc>> { let mut output = MaybePlacebo::, Arc>>>::new(); let mut materials: Arc = input.materials().clone(); @@ -122255,7 +123453,7 @@ pub mod _RawAESKeyring_Compile { return output.read(); }; let mut aad: Sequence = valueOrError1.Extract(); - let mut valueOrError2: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(self.wrappingKey().clone().cardinality() == int!(self.wrappingAlgorithm().clone().keyLength().clone()), &Arc::new(crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::Error::AwsCryptographicMaterialProvidersException { + let mut valueOrError2: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(truncate!(self.wrappingKey().clone().cardinality(), u64) == self.wrappingAlgorithm().clone().keyLength().clone() as u64, &Arc::new(crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::Error::AwsCryptographicMaterialProvidersException { message: string_utf16_of("The wrapping key does not match the wrapping algorithm") })); if valueOrError2.IsFailure() { @@ -122263,10 +123461,10 @@ pub mod _RawAESKeyring_Compile { return output.read(); }; let mut errors: Sequence> = seq![] as Sequence>; - let mut _hi0: DafnyInt = input.encryptedDataKeys().cardinality(); - for i in integer_range(int!(0), _hi0.clone()) { - if self.ShouldDecryptEDK(&input.encryptedDataKeys().get(&i)) { - let mut edk: Arc = input.encryptedDataKeys().get(&i); + let mut _hi0: u64 = truncate!(input.encryptedDataKeys().cardinality(), u64); + for i in integer_range(0, _hi0).map(Into::::into) { + if self.ShouldDecryptEDK(&input.encryptedDataKeys().get(&int!((&i).clone()))) { + let mut edk: Arc = input.encryptedDataKeys().get(&int!((&i).clone())); let mut iv: Sequence = self.GetIvFromProvInfo(edk.keyProviderInfo()); let mut unwrap: Object; let mut _nw0: Object = AesUnwrapKeyMaterial::_allocate_object(); @@ -122293,7 +123491,7 @@ pub mod _RawAESKeyring_Compile { errors = errors.concat(&seq![unwrapOutput.error().clone()]); } } else { - let mut valueOrError4: Arc, Arc>> = crate::implementation_from_dafny::UTF8::_default::Decode(input.encryptedDataKeys().get(&i).keyProviderId()).MapFailure::>(&({ + let mut valueOrError4: Arc, Arc>> = crate::implementation_from_dafny::UTF8::_default::Decode(input.encryptedDataKeys().get(&int!((&i).clone())).keyProviderId()).MapFailure::>(&({ Arc::new(move |e: &Sequence| -> Arc{ Arc::new(crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::Error::AwsCryptographicMaterialProvidersException { message: e.clone() @@ -122306,7 +123504,7 @@ pub mod _RawAESKeyring_Compile { }; let mut extractedKeyProviderId: Sequence = valueOrError4.Extract(); errors = errors.concat(&seq![Arc::new(crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::Error::AwsCryptographicMaterialProvidersException { - message: crate::implementation_from_dafny::_ErrorMessages_Compile::_default::IncorrectRawDataKeys(&crate::implementation_from_dafny::_StandardLibrary_Compile::_String_Compile::_default::Base10Int2String(&i), &string_utf16_of("AESKeyring"), &extractedKeyProviderId) + message: crate::implementation_from_dafny::_ErrorMessages_Compile::_default::IncorrectRawDataKeys(&crate::implementation_from_dafny::_StandardLibrary_Compile::_String_Compile::_default::Base10Int2String(&int!((&i).clone())), &string_utf16_of("AESKeyring"), &extractedKeyProviderId) })]); } } @@ -122325,7 +123523,7 @@ pub mod _RawAESKeyring_Compile { UpcastObjectFn!(dyn IKeyring); } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawAESKeyring.dfy(429,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawAESKeyring.dfy(474,3) #[derive(PartialEq, Clone)] pub enum AesUnwrapInfo { AesUnwrapInfo {} @@ -122387,7 +123585,7 @@ pub mod _RawAESKeyring_Compile { } } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawAESKeyring.dfy(430,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawAESKeyring.dfy(475,3) #[derive(PartialEq, Clone)] pub enum AesWrapInfo { AesWrapInfo { @@ -122455,7 +123653,7 @@ pub mod _RawAESKeyring_Compile { } } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawAESKeyring.dfy(432,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawAESKeyring.dfy(477,3) pub struct AesGenerateAndWrapKeyMaterial { pub __i_wrap: Object } @@ -122465,13 +123663,13 @@ pub mod _RawAESKeyring_Compile { pub fn _allocate_object() -> Object { allocate_object::() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawAESKeyring.dfy(437,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawAESKeyring.dfy(482,5) pub fn _ctor(this: &Object, wrap: &Object) -> () { let mut _set___i_wrap: bool = false; update_field_uninit_object!(this.clone(), __i_wrap, _set___i_wrap, wrap.clone()); return (); } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawAESKeyring.dfy(435,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawAESKeyring.dfy(480,5) pub fn wrap(&self) -> Object { self.__i_wrap.clone() } @@ -122500,7 +123698,7 @@ pub mod _RawAESKeyring_Compile { impl Action, Arc>>, Arc>>> for AesGenerateAndWrapKeyMaterial { - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawAESKeyring.dfy(486,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawAESKeyring.dfy(532,5) fn Invoke(&self, input: &Arc) -> Arc>>, Arc>> { let mut res = MaybePlacebo::>>, Arc>>>::new(); let mut generateBytesResult: Arc, Arc>>; @@ -122524,7 +123722,8 @@ pub mod _RawAESKeyring_Compile { let mut _out1: Arc>>, Arc>> = Action::, Arc>>, Arc>>>::Invoke(rd!(self.wrap().clone()), &Arc::new(WrapInput::WrapInput { plaintextMaterial: plaintextMaterial.clone(), algorithmSuite: input.algorithmSuite().clone(), - encryptionContext: input.encryptionContext().clone() + encryptionContext: input.encryptionContext().clone(), + serializedEC: input.serializedEC().clone() })); valueOrError1 = _out1.clone(); if valueOrError1.IsFailure() { @@ -122548,7 +123747,7 @@ pub mod _RawAESKeyring_Compile { UpcastObjectFn!(dyn Action, Arc>>, Arc>>>); } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawAESKeyring.dfy(529,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawAESKeyring.dfy(576,3) pub struct AesWrapKeyMaterial { pub __i_wrappingKey: Sequence, pub __i_wrappingAlgorithm: Arc, @@ -122560,7 +123759,7 @@ pub mod _RawAESKeyring_Compile { pub fn _allocate_object() -> Object { allocate_object::() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawAESKeyring.dfy(536,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawAESKeyring.dfy(583,5) pub fn _ctor(this: &Object, wrappingKey: &Sequence, wrappingAlgorithm: &Arc, cryptoPrimitives: &Object) -> () { let mut _set___i_wrappingKey: bool = false; let mut _set___i_wrappingAlgorithm: bool = false; @@ -122570,15 +123769,15 @@ pub mod _RawAESKeyring_Compile { update_field_uninit_object!(this.clone(), __i_cryptoPrimitives, _set___i_cryptoPrimitives, cryptoPrimitives.clone()); return (); } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawAESKeyring.dfy(532,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawAESKeyring.dfy(579,5) pub fn wrappingKey(&self) -> Sequence { self.__i_wrappingKey.clone() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawAESKeyring.dfy(533,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawAESKeyring.dfy(580,5) pub fn wrappingAlgorithm(&self) -> Arc { self.__i_wrappingAlgorithm.clone() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawAESKeyring.dfy(534,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawAESKeyring.dfy(581,5) pub fn cryptoPrimitives(&self) -> Object { self.__i_cryptoPrimitives.clone() } @@ -122607,7 +123806,7 @@ pub mod _RawAESKeyring_Compile { impl Action, Arc>>, Arc>>> for AesWrapKeyMaterial { - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawAESKeyring.dfy(591,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawAESKeyring.dfy(638,5) fn Invoke(&self, input: &Arc) -> Arc>>, Arc>> { let mut res = MaybePlacebo::>>, Arc>>>::new(); let mut valueOrError0: Arc, Arc>> = crate::implementation_from_dafny::_CanonicalEncryptionContext_Compile::_default::EncryptionContextToAAD(input.encryptionContext()); @@ -122672,7 +123871,7 @@ pub mod _RawAESKeyring_Compile { UpcastObjectFn!(dyn Action, Arc>>, Arc>>>); } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawAESKeyring.dfy(629,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawAESKeyring.dfy(676,3) pub struct AesUnwrapKeyMaterial { pub __i_wrappingKey: Sequence, pub __i_iv: Sequence, @@ -122685,7 +123884,7 @@ pub mod _RawAESKeyring_Compile { pub fn _allocate_object() -> Object { allocate_object::() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawAESKeyring.dfy(637,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawAESKeyring.dfy(684,5) pub fn _ctor(this: &Object, wrappingKey: &Sequence, wrappingAlgorithm: &Arc, iv: &Sequence, cryptoPrimitives: &Object) -> () { let mut _set___i_wrappingKey: bool = false; let mut _set___i_iv: bool = false; @@ -122697,19 +123896,19 @@ pub mod _RawAESKeyring_Compile { update_field_uninit_object!(this.clone(), __i_cryptoPrimitives, _set___i_cryptoPrimitives, cryptoPrimitives.clone()); return (); } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawAESKeyring.dfy(632,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawAESKeyring.dfy(679,5) pub fn wrappingKey(&self) -> Sequence { self.__i_wrappingKey.clone() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawAESKeyring.dfy(634,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawAESKeyring.dfy(681,5) pub fn iv(&self) -> Sequence { self.__i_iv.clone() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawAESKeyring.dfy(633,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawAESKeyring.dfy(680,5) pub fn wrappingAlgorithm(&self) -> Arc { self.__i_wrappingAlgorithm.clone() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawAESKeyring.dfy(635,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawAESKeyring.dfy(682,5) pub fn cryptoPrimitives(&self) -> Object { self.__i_cryptoPrimitives.clone() } @@ -122738,7 +123937,7 @@ pub mod _RawAESKeyring_Compile { impl Action, Arc>>, Arc>>> for AesUnwrapKeyMaterial { - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawAESKeyring.dfy(699,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawAESKeyring.dfy(746,5) fn Invoke(&self, input: &Arc) -> Arc>>, Arc>> { let mut res = MaybePlacebo::>>, Arc>>>::new(); let mut valueOrError0: Arc, Arc>> = crate::implementation_from_dafny::_CanonicalEncryptionContext_Compile::_default::EncryptionContextToAAD(input.encryptionContext()); @@ -122747,14 +123946,14 @@ pub mod _RawAESKeyring_Compile { return res.read(); }; let mut aad: Sequence = valueOrError0.Extract(); - let mut valueOrError1: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(int!(self.wrappingAlgorithm().clone().tagLength().clone()) <= input.wrappedMaterial().cardinality(), &Arc::new(crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::Error::AwsCryptographicMaterialProvidersException { + let mut valueOrError1: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>((self.wrappingAlgorithm().clone().tagLength().clone() as u64) <= truncate!(input.wrappedMaterial().cardinality(), u64), &Arc::new(crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::Error::AwsCryptographicMaterialProvidersException { message: string_utf16_of("Insufficient data to decrypt.") })); if valueOrError1.IsFailure() { res = MaybePlacebo::from(valueOrError1.PropagateFailure::>>>()); return res.read(); }; - let mut encryptionOutput: Arc = _default::DeserializeEDKCiphertext(input.wrappedMaterial(), &int!(self.wrappingAlgorithm().clone().tagLength().clone())); + let mut encryptionOutput: Arc = _default::DeserializeEDKCiphertext(input.wrappedMaterial(), self.wrappingAlgorithm().clone().tagLength().clone() as u64); let mut maybePtKey: Arc, Arc>>; let mut _out0: Arc, Arc>> = IAwsCryptographicPrimitivesClient::AESDecrypt(rd!(self.cryptoPrimitives().clone()), &Arc::new(AESDecryptInput::AESDecryptInput { encAlg: self.wrappingAlgorithm().clone(), @@ -122777,7 +123976,7 @@ pub mod _RawAESKeyring_Compile { return res.read(); }; let mut ptKey: Sequence = valueOrError2.Extract(); - let mut valueOrError3: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(int!(crate::implementation_from_dafny::_AlgorithmSuites_Compile::_default::GetEncryptKeyLength(input.algorithmSuite())) == ptKey.cardinality(), &Arc::new(crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::Error::AwsCryptographicMaterialProvidersException { + let mut valueOrError3: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(crate::implementation_from_dafny::_AlgorithmSuites_Compile::_default::GetEncryptKeyLength(input.algorithmSuite()) as u64 == truncate!(ptKey.cardinality(), u64), &Arc::new(crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::Error::AwsCryptographicMaterialProvidersException { message: string_utf16_of("Plaintext Data Key is not the expected length") })); if valueOrError3.IsFailure() { @@ -122802,7 +124001,7 @@ pub mod _RawAESKeyring_Compile { /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawECDHKeyring.dfy(16,1) pub mod _RawECDHKeyring_Compile { pub use ::dafny_runtime::Sequence; - pub use ::dafny_runtime::int; + pub use ::dafny_runtime::truncate; pub use ::std::sync::Arc; pub use crate::implementation_from_dafny::software::amazon::cryptography::primitives::internaldafny::types::ECCPrivateKey; pub use crate::implementation_from_dafny::software::amazon::cryptography::primitives::internaldafny::types::ECCPublicKey; @@ -122819,7 +124018,6 @@ pub mod _RawECDHKeyring_Compile { pub use crate::implementation_from_dafny::software::amazon::cryptography::primitives::internaldafny::types::CompressPublicKeyInput; pub use crate::implementation_from_dafny::software::amazon::cryptography::primitives::internaldafny::types::DecompressPublicKeyOutput; pub use crate::implementation_from_dafny::software::amazon::cryptography::primitives::internaldafny::types::DecompressPublicKeyInput; - pub use ::dafny_runtime::truncate; pub use crate::implementation_from_dafny::software::amazon::cryptography::primitives::internaldafny::types::GenerateECCKeyPairOutput; pub use crate::implementation_from_dafny::software::amazon::cryptography::primitives::internaldafny::types::GenerateECCKeyPairInput; pub use crate::implementation_from_dafny::software::amazon::cryptography::primitives::internaldafny::types::ValidatePublicKeyOutput; @@ -122869,7 +124067,7 @@ pub mod _RawECDHKeyring_Compile { pub use crate::implementation_from_dafny::_Actions_Compile::ActionWithResult; pub use crate::implementation_from_dafny::_Materials_Compile::SealedDecryptionMaterials; pub use crate::implementation_from_dafny::_Actions_Compile::DeterministicAction; - pub use ::dafny_runtime::DafnyInt; + pub use ::dafny_runtime::int; pub use crate::implementation_from_dafny::_Materials_Compile::DecryptionMaterialsPendingPlaintextDataKey; pub use crate::implementation_from_dafny::_Actions_Compile::Action; pub use crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::PublicKeyDiscoveryInput; @@ -122884,19 +124082,22 @@ pub mod _RawECDHKeyring_Compile { pub struct _default {} impl _default { - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawECDHKeyring.dfy(41,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawECDHKeyring.dfy(42,3) pub fn ValidPublicKeyLength(p: &Sequence) -> bool { - true && (p.cardinality() == crate::implementation_from_dafny::_Constants_Compile::_default::ECDH_PUBLIC_KEY_LEN_ECC_NIST_256() || p.cardinality() == crate::implementation_from_dafny::_Constants_Compile::_default::ECDH_PUBLIC_KEY_LEN_ECC_NIST_384() || p.cardinality() == crate::implementation_from_dafny::_Constants_Compile::_default::ECDH_PUBLIC_KEY_LEN_ECC_NIST_521()) + let mut len: u64 = truncate!(p.cardinality(), u64); + true && (len == crate::implementation_from_dafny::_Constants_Compile::_default::ECDH_PUBLIC_KEY_LEN_ECC_NIST_256() || len == crate::implementation_from_dafny::_Constants_Compile::_default::ECDH_PUBLIC_KEY_LEN_ECC_NIST_384() || len == crate::implementation_from_dafny::_Constants_Compile::_default::ECDH_PUBLIC_KEY_LEN_ECC_NIST_521()) } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawECDHKeyring.dfy(48,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawECDHKeyring.dfy(51,3) pub fn ValidCompressedPublicKeyLength(p: &Sequence) -> bool { - true && (p.cardinality() == crate::implementation_from_dafny::_Constants_Compile::_default::ECDH_PUBLIC_KEY_COMPRESSED_LEN_ECC_NIST_256() || p.cardinality() == crate::implementation_from_dafny::_Constants_Compile::_default::ECDH_PUBLIC_KEY_COMPRESSED_LEN_ECC_NIST_384() || p.cardinality() == crate::implementation_from_dafny::_Constants_Compile::_default::ECDH_PUBLIC_KEY_COMPRESSED_LEN_ECC_NIST_521()) + let mut len: u64 = truncate!(p.cardinality(), u64); + true && (len == crate::implementation_from_dafny::_Constants_Compile::_default::ECDH_PUBLIC_KEY_COMPRESSED_LEN_ECC_NIST_256() || len == crate::implementation_from_dafny::_Constants_Compile::_default::ECDH_PUBLIC_KEY_COMPRESSED_LEN_ECC_NIST_384() || len == crate::implementation_from_dafny::_Constants_Compile::_default::ECDH_PUBLIC_KEY_COMPRESSED_LEN_ECC_NIST_521()) } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawECDHKeyring.dfy(55,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawECDHKeyring.dfy(60,3) pub fn ValidProviderInfoLength(p: &Sequence) -> bool { - p.cardinality() == int!(crate::implementation_from_dafny::_Constants_Compile::_default::ECDH_PROVIDER_INFO_256_LEN()) || p.cardinality() == int!(crate::implementation_from_dafny::_Constants_Compile::_default::ECDH_PROVIDER_INFO_384_LEN()) || p.cardinality() == int!(crate::implementation_from_dafny::_Constants_Compile::_default::ECDH_PROVIDER_INFO_521_LEN()) + let mut len: u64 = truncate!(p.cardinality(), u64); + len == crate::implementation_from_dafny::_Constants_Compile::_default::ECDH_PROVIDER_INFO_256_LEN() as u64 || len == crate::implementation_from_dafny::_Constants_Compile::_default::ECDH_PROVIDER_INFO_384_LEN() as u64 || len == crate::implementation_from_dafny::_Constants_Compile::_default::ECDH_PROVIDER_INFO_521_LEN() as u64 } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawECDHKeyring.dfy(674,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawECDHKeyring.dfy(719,3) pub fn LocalDeriveSharedSecret(senderPrivateKey: &Arc, recipientPublicKey: &Arc, curveSpec: &Arc, crypto: &Object) -> Arc, Arc>> { let mut res = MaybePlacebo::, Arc>>>::new(); let mut maybeSharedSecret: Arc, Arc>>; @@ -122923,7 +124124,7 @@ pub mod _RawECDHKeyring_Compile { })); return res.read(); } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawECDHKeyring.dfy(708,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawECDHKeyring.dfy(753,3) pub fn CompressPublicKey(publicKey: &Arc, curveSpec: &Arc, crypto: &Object) -> Arc, Arc>> { let mut res = MaybePlacebo::, Arc>>>::new(); let mut maybeCompressedPublicKey: Arc, Arc>>; @@ -122943,13 +124144,13 @@ pub mod _RawECDHKeyring_Compile { res = MaybePlacebo::from(valueOrError0.PropagateFailure::>()); return res.read(); }; - let mut compresedPublicKey: Arc = valueOrError0.Extract(); + let mut compressedPublicKey: Arc = valueOrError0.Extract(); res = MaybePlacebo::from(Arc::new(Result::, Arc>::Success { - value: compresedPublicKey.compressedPublicKey().clone() + value: compressedPublicKey.compressedPublicKey().clone() })); return res.read(); } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawECDHKeyring.dfy(739,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawECDHKeyring.dfy(784,3) pub fn DecompressPublicKey(publicKey: &Sequence, curveSpec: &Arc, crypto: &Object) -> Arc, Arc>> { let mut res = MaybePlacebo::, Arc>>>::new(); let mut maybePublicKey: Arc, Arc>>; @@ -122975,11 +124176,11 @@ pub mod _RawECDHKeyring_Compile { })); return res.read(); } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawECDHKeyring.dfy(770,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawECDHKeyring.dfy(815,3) pub fn SerializeProviderInfo(senderPublicKey: &Sequence, recipientPublicKey: &Sequence) -> Sequence { _default::RAW_ECDH_KEYRING_VERSION().concat(&crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default::UInt32ToSeq(truncate!(recipientPublicKey.cardinality(), u32))).concat(recipientPublicKey).concat(&crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default::UInt32ToSeq(truncate!(senderPublicKey.cardinality(), u32))).concat(senderPublicKey) } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawECDHKeyring.dfy(790,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawECDHKeyring.dfy(835,3) pub fn GenerateEphemeralEccKeyPair(curveSpec: &Arc, crypto: &Object) -> Arc, Arc>> { let mut res = MaybePlacebo::, Arc>>>::new(); let mut maybeKeyPair: Arc, Arc>>; @@ -123004,7 +124205,7 @@ pub mod _RawECDHKeyring_Compile { })); return res.read(); } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawECDHKeyring.dfy(815,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawECDHKeyring.dfy(860,3) pub fn ValidatePublicKey(crypto: &Object, curveSpec: &Arc, publicKey: &Sequence) -> Arc>> { let mut res = MaybePlacebo::>>>::new(); let mut maybeValidate: Arc, Arc>>; @@ -123030,7 +124231,7 @@ pub mod _RawECDHKeyring_Compile { })); return res.read(); } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawECDHKeyring.dfy(843,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawECDHKeyring.dfy(888,3) pub fn CurveSpecTypeToString(c: &Arc) -> Sequence { let mut _source0: Arc = c.clone(); if matches!((&_source0).as_ref(), ECC_NIST_P256{ .. }) { @@ -123047,19 +124248,19 @@ pub mod _RawECDHKeyring_Compile { } } } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawECDHKeyring.dfy(853,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawECDHKeyring.dfy(898,3) pub fn E(s: &Sequence) -> Arc { Arc::new(crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::Error::AwsCryptographicMaterialProvidersException { message: s.clone() }) } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawECDHKeyring.dfy(39,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawECDHKeyring.dfy(40,3) pub fn RAW_ECDH_KEYRING_VERSION() -> Sequence { seq![1] } } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawECDHKeyring.dfy(66,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawECDHKeyring.dfy(73,3) pub struct RawEcdhKeyring { pub __i_cryptoPrimitives: Object, pub __i_keyAgreementScheme: Arc, @@ -123076,7 +124277,7 @@ pub mod _RawECDHKeyring_Compile { pub fn _allocate_object() -> Object { allocate_object::() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawECDHKeyring.dfy(87,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawECDHKeyring.dfy(94,5) pub fn _ctor(this: &Object, keyAgreementScheme: &Arc, curveSpec: &Arc, senderPrivateKey: &Arc>>, senderPublicKey: &Arc>>, recipientPublicKey: &Sequence, compressedSenderPublicKey: &Arc>>, compressedRecipientPublicKey: &Sequence, cryptoPrimitives: &Object) -> () { let mut _set___i_cryptoPrimitives: bool = false; let mut _set___i_keyAgreementScheme: bool = false; @@ -123115,35 +124316,35 @@ pub mod _RawECDHKeyring_Compile { update_field_if_uninit_object!(this, __i_compressedSenderPublicKey, _set___i_compressedSenderPublicKey, as Default>::default()); return (); } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawECDHKeyring.dfy(76,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawECDHKeyring.dfy(83,5) pub fn cryptoPrimitives(&self) -> Object { self.__i_cryptoPrimitives.clone() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawECDHKeyring.dfy(74,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawECDHKeyring.dfy(81,5) pub fn keyAgreementScheme(&self) -> Arc { self.__i_keyAgreementScheme.clone() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawECDHKeyring.dfy(75,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawECDHKeyring.dfy(82,5) pub fn curveSpec(&self) -> Arc { self.__i_curveSpec.clone() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawECDHKeyring.dfy(71,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawECDHKeyring.dfy(78,5) pub fn recipientPublicKey(&self) -> Arc { self.__i_recipientPublicKey.clone() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawECDHKeyring.dfy(73,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawECDHKeyring.dfy(80,5) pub fn compressedRecipientPublicKey(&self) -> Sequence { self.__i_compressedRecipientPublicKey.clone() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawECDHKeyring.dfy(70,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawECDHKeyring.dfy(77,5) pub fn senderPublicKey(&self) -> Arc { self.__i_senderPublicKey.clone() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawECDHKeyring.dfy(69,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawECDHKeyring.dfy(76,5) pub fn senderPrivateKey(&self) -> Arc { self.__i_senderPrivateKey.clone() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawECDHKeyring.dfy(72,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawECDHKeyring.dfy(79,5) pub fn compressedSenderPublicKey(&self) -> Sequence { self.__i_compressedSenderPublicKey.clone() } @@ -123164,7 +124365,7 @@ pub mod _RawECDHKeyring_Compile { impl IKeyring for RawEcdhKeyring { - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawECDHKeyring.dfy(141,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawECDHKeyring.dfy(169,5) fn _OnEncrypt_k(&self, input: &Arc) -> Arc, Arc>> { let mut res = MaybePlacebo::, Arc>>>::new(); if matches!((&self.keyAgreementScheme().clone()).as_ref(), PublicKeyDiscovery{ .. }) { @@ -123293,7 +124494,7 @@ pub mod _RawECDHKeyring_Compile { }; return res.read(); } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawECDHKeyring.dfy(293,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawECDHKeyring.dfy(332,5) fn _OnDecrypt_k(&self, input: &Arc) -> Arc, Arc>> { let mut res = MaybePlacebo::, Arc>>>::new(); if matches!((&self.keyAgreementScheme().clone()).as_ref(), EphemeralPrivateKeyToStaticPublicKey{ .. }) { @@ -123331,7 +124532,7 @@ pub mod _RawECDHKeyring_Compile { return res.read(); }; let mut edksToAttempt: Sequence> = valueOrError1.Extract(); - if int!(0) == edksToAttempt.cardinality() { + if 0 == truncate!(edksToAttempt.cardinality(), u64) { let mut valueOrError2: Arc, Arc>> = crate::implementation_from_dafny::_ErrorMessages_Compile::_default::IncorrectDataKeys(input.encryptedDataKeys(), input.materials().algorithmSuite(), &string_utf16_of("")); if valueOrError2.IsFailure() { res = MaybePlacebo::from(valueOrError2.PropagateFailure::>()); @@ -123377,7 +124578,7 @@ pub mod _RawECDHKeyring_Compile { UpcastObjectFn!(dyn IKeyring); } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawECDHKeyring.dfy(384,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawECDHKeyring.dfy(424,3) pub struct OnDecryptEcdhDataKeyFilter { pub __i_keyAgreementScheme: Arc, pub __i_compressedRecipientPublicKey: Sequence, @@ -123389,7 +124590,7 @@ pub mod _RawECDHKeyring_Compile { pub fn _allocate_object() -> Object { allocate_object::() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawECDHKeyring.dfy(391,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawECDHKeyring.dfy(431,5) pub fn _ctor(this: &Object, keyAgreementScheme: &Arc, compressedRecipientPublicKey: &Sequence, compressedSenderPublicKey: &Arc>>) -> () { let mut _set___i_keyAgreementScheme: bool = false; let mut _set___i_compressedRecipientPublicKey: bool = false; @@ -123404,15 +124605,15 @@ pub mod _RawECDHKeyring_Compile { update_field_if_uninit_object!(this, __i_compressedSenderPublicKey, _set___i_compressedSenderPublicKey, as Default>::default()); return (); } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawECDHKeyring.dfy(387,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawECDHKeyring.dfy(427,5) pub fn keyAgreementScheme(&self) -> Arc { self.__i_keyAgreementScheme.clone() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawECDHKeyring.dfy(388,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawECDHKeyring.dfy(428,5) pub fn compressedRecipientPublicKey(&self) -> Sequence { self.__i_compressedRecipientPublicKey.clone() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawECDHKeyring.dfy(389,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawECDHKeyring.dfy(429,5) pub fn compressedSenderPublicKey(&self) -> Sequence { self.__i_compressedSenderPublicKey.clone() } @@ -123433,7 +124634,7 @@ pub mod _RawECDHKeyring_Compile { impl DeterministicAction, Arc>>> for OnDecryptEcdhDataKeyFilter { - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawECDHKeyring.dfy(419,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawECDHKeyring.dfy(460,5) fn Invoke(&self, edk: &Arc) -> Arc>> { let mut res = MaybePlacebo::>>>::new(); let mut providerInfo: Sequence = edk.keyProviderInfo().clone(); @@ -123444,27 +124645,27 @@ pub mod _RawECDHKeyring_Compile { })); return res.read(); }; - let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(providerInfo.cardinality() <= int!(crate::implementation_from_dafny::_Constants_Compile::_default::ECDH_PROVIDER_INFO_521_LEN()) && _default::ValidProviderInfoLength(&providerInfo), &_default::E(&string_utf16_of("EDK ProviderInfo longer than expected"))); + let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(truncate!(providerInfo.cardinality(), u64) <= crate::implementation_from_dafny::_Constants_Compile::_default::ECDH_PROVIDER_INFO_521_LEN() as u64 && _default::ValidProviderInfoLength(&providerInfo), &_default::E(&string_utf16_of("EDK ProviderInfo longer than expected"))); if valueOrError0.IsFailure() { res = MaybePlacebo::from(valueOrError0.PropagateFailure::()); return res.read(); }; - let mut keyringVersion: u8 = providerInfo.get(&int!(0)); + let mut keyringVersion: u8 = providerInfo.get(&int!((&truncate!((&int!(0)).clone(), u32)).clone())); let mut valueOrError1: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(seq![keyringVersion] == _default::RAW_ECDH_KEYRING_VERSION(), &_default::E(&string_utf16_of("Incorrect Keyring version found in provider info."))); if valueOrError1.IsFailure() { res = MaybePlacebo::from(valueOrError1.PropagateFailure::()); return res.read(); }; - let mut recipientPublicKeyLength: DafnyInt = int!(crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default::SeqToUInt32(&providerInfo.slice(&int!((&crate::implementation_from_dafny::_Constants_Compile::_default::ECDH_PROVIDER_INFO_RPL_INDEX()).clone()), &int!((&crate::implementation_from_dafny::_Constants_Compile::_default::ECDH_PROVIDER_INFO_RPK_INDEX()).clone())))); - let mut recipientPublicKeyLengthIndex: DafnyInt = int!(crate::implementation_from_dafny::_Constants_Compile::_default::ECDH_PROVIDER_INFO_RPK_INDEX()) + recipientPublicKeyLength.clone(); - let mut senderPublicKeyIndex: DafnyInt = recipientPublicKeyLengthIndex.clone() + crate::implementation_from_dafny::_Constants_Compile::_default::ECDH_PROVIDER_INFO_PUBLIC_KEY_LEN(); - let mut valueOrError2: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(recipientPublicKeyLengthIndex.clone() + int!(4) < providerInfo.cardinality(), &_default::E(&string_utf16_of("Key Provider Info Serialization Error. Serialized length less than expected."))); + let mut recipientPublicKeyLength: u32 = crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default::SeqToUInt32(&providerInfo.slice(&int!((&crate::implementation_from_dafny::_Constants_Compile::_default::ECDH_PROVIDER_INFO_RPL_INDEX()).clone()), &int!((&crate::implementation_from_dafny::_Constants_Compile::_default::ECDH_PROVIDER_INFO_RPK_INDEX()).clone()))); + let mut recipientPublicKeyLengthIndex: u64 = crate::implementation_from_dafny::_Constants_Compile::_default::ECDH_PROVIDER_INFO_RPK_INDEX() as u64 + recipientPublicKeyLength as u64; + let mut senderPublicKeyIndex: u64 = recipientPublicKeyLengthIndex + crate::implementation_from_dafny::_Constants_Compile::_default::ECDH_PROVIDER_INFO_PUBLIC_KEY_LEN(); + let mut valueOrError2: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(recipientPublicKeyLengthIndex + 4 < truncate!(providerInfo.cardinality(), u64), &_default::E(&string_utf16_of("Key Provider Info Serialization Error. Serialized length less than expected."))); if valueOrError2.IsFailure() { res = MaybePlacebo::from(valueOrError2.PropagateFailure::()); return res.read(); }; - let mut providerInfoRecipientPublicKey: Sequence = providerInfo.slice(&int!((&crate::implementation_from_dafny::_Constants_Compile::_default::ECDH_PROVIDER_INFO_RPK_INDEX()).clone()), &recipientPublicKeyLengthIndex); - let mut providerInfoSenderPublicKey: Sequence = providerInfo.drop(&senderPublicKeyIndex); + let mut providerInfoRecipientPublicKey: Sequence = providerInfo.slice(&int!((&crate::implementation_from_dafny::_Constants_Compile::_default::ECDH_PROVIDER_INFO_RPK_INDEX()).clone()), &int!((&recipientPublicKeyLengthIndex).clone())); + let mut providerInfoSenderPublicKey: Sequence = providerInfo.drop(&int!((&senderPublicKeyIndex).clone())); if matches!((&self.keyAgreementScheme().clone()).as_ref(), PublicKeyDiscovery{ .. }) { res = MaybePlacebo::from(Arc::new(Result::>::Success { value: self.compressedRecipientPublicKey().clone() == providerInfoRecipientPublicKey.clone() @@ -123485,7 +124686,7 @@ pub mod _RawECDHKeyring_Compile { UpcastObjectFn!(dyn DeterministicAction, Arc>>>); } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawECDHKeyring.dfy(478,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawECDHKeyring.dfy(520,3) pub struct DecryptSingleEncryptedDataKey { pub __i_materials: DecryptionMaterialsPendingPlaintextDataKey, pub __i_cryptoPrimitives: Object, @@ -123500,7 +124701,7 @@ pub mod _RawECDHKeyring_Compile { pub fn _allocate_object() -> Object { allocate_object::() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawECDHKeyring.dfy(491,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawECDHKeyring.dfy(533,5) pub fn _ctor(this: &Object, materials: &DecryptionMaterialsPendingPlaintextDataKey, cryptoPrimitives: &Object, senderPublicKey: &Sequence, recipientPublicKey: &Sequence, keyAgreementScheme: &Arc, curveSpec: &Arc) -> () { let mut _set___i_materials: bool = false; let mut _set___i_cryptoPrimitives: bool = false; @@ -123516,27 +124717,27 @@ pub mod _RawECDHKeyring_Compile { update_field_uninit_object!(this.clone(), __i_curveSpec, _set___i_curveSpec, curveSpec.clone()); return (); } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawECDHKeyring.dfy(484,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawECDHKeyring.dfy(526,5) pub fn materials(&self) -> DecryptionMaterialsPendingPlaintextDataKey { self.__i_materials.clone() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawECDHKeyring.dfy(485,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawECDHKeyring.dfy(527,5) pub fn cryptoPrimitives(&self) -> Object { self.__i_cryptoPrimitives.clone() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawECDHKeyring.dfy(487,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawECDHKeyring.dfy(529,5) pub fn recipientPublicKey(&self) -> Sequence { self.__i_recipientPublicKey.clone() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawECDHKeyring.dfy(486,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawECDHKeyring.dfy(528,5) pub fn senderPublicKey(&self) -> Sequence { self.__i_senderPublicKey.clone() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawECDHKeyring.dfy(488,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawECDHKeyring.dfy(530,5) pub fn keyAgreementScheme(&self) -> Arc { self.__i_keyAgreementScheme.clone() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawECDHKeyring.dfy(489,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawECDHKeyring.dfy(531,5) pub fn curveSpec(&self) -> Arc { self.__i_curveSpec.clone() } @@ -123557,79 +124758,72 @@ pub mod _RawECDHKeyring_Compile { impl Action, Arc>>> for DecryptSingleEncryptedDataKey { - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawECDHKeyring.dfy(543,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawECDHKeyring.dfy(590,5) fn Invoke(&self, edk: &Arc) -> Arc>> { let mut res = MaybePlacebo::>>>::new(); - let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(crate::implementation_from_dafny::UTF8::_default::ValidUTF8Seq(edk.keyProviderId()), &Arc::new(crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::Error::AwsCryptographicMaterialProvidersException { - message: string_utf16_of("Received invalid EDK provider id for AWS KMS ECDH Keyring") - })); - if valueOrError0.IsFailure() { - res = MaybePlacebo::from(valueOrError0.PropagateFailure::()); - return res.read(); - }; let mut suite: Arc = self.materials().clone().algorithmSuite().clone(); let mut keyProviderId: ValidUTF8Bytes = edk.keyProviderId().clone(); let mut providerInfo: Sequence = edk.keyProviderInfo().clone(); let mut ciphertext: Sequence = edk.ciphertext().clone(); - let mut valueOrError1: Arc, Arc>> = crate::implementation_from_dafny::_EdkWrapping_Compile::_default::GetProviderWrappedMaterial(&ciphertext, &suite); + let mut valueOrError0: Arc, Arc>> = crate::implementation_from_dafny::_EdkWrapping_Compile::_default::GetProviderWrappedMaterial(&ciphertext, &suite); + if valueOrError0.IsFailure() { + res = MaybePlacebo::from(valueOrError0.PropagateFailure::()); + return res.read(); + }; + let mut providerWrappedMaterial: Sequence = valueOrError0.Extract(); + let mut valueOrError1: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(truncate!(providerInfo.cardinality(), u64) <= crate::implementation_from_dafny::_Constants_Compile::_default::ECDH_PROVIDER_INFO_521_LEN() as u64 && _default::ValidProviderInfoLength(&providerInfo), &_default::E(&string_utf16_of("EDK ProviderInfo longer than expected"))); if valueOrError1.IsFailure() { res = MaybePlacebo::from(valueOrError1.PropagateFailure::()); return res.read(); }; - let mut providerWrappedMaterial: Sequence = valueOrError1.Extract(); - let mut valueOrError2: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(providerInfo.cardinality() <= int!(crate::implementation_from_dafny::_Constants_Compile::_default::ECDH_PROVIDER_INFO_521_LEN()) && _default::ValidProviderInfoLength(&providerInfo), &_default::E(&string_utf16_of("EDK ProviderInfo longer than expected"))); + let mut keyringVersion: u8 = providerInfo.get(&int!((&truncate!((&int!(0)).clone(), u32)).clone())); + let mut valueOrError2: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(seq![keyringVersion] == _default::RAW_ECDH_KEYRING_VERSION(), &_default::E(&string_utf16_of("Incorrect Keyring version found in provider info."))); if valueOrError2.IsFailure() { res = MaybePlacebo::from(valueOrError2.PropagateFailure::()); return res.read(); }; - let mut keyringVersion: u8 = providerInfo.get(&int!(0)); - let mut valueOrError3: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(seq![keyringVersion] == _default::RAW_ECDH_KEYRING_VERSION(), &_default::E(&string_utf16_of("Incorrect Keyring version found in provider info."))); + let mut recipientPublicKeyLength: u32 = crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default::SeqToUInt32(&providerInfo.slice(&int!((&crate::implementation_from_dafny::_Constants_Compile::_default::ECDH_PROVIDER_INFO_RPL_INDEX()).clone()), &int!((&crate::implementation_from_dafny::_Constants_Compile::_default::ECDH_PROVIDER_INFO_RPK_INDEX()).clone()))); + let mut recipientPublicKeyLengthIndex: u64 = crate::implementation_from_dafny::_Constants_Compile::_default::ECDH_PROVIDER_INFO_RPK_INDEX() as u64 + recipientPublicKeyLength as u64; + let mut senderPublicKeyIndex: u64 = recipientPublicKeyLengthIndex + crate::implementation_from_dafny::_Constants_Compile::_default::ECDH_PROVIDER_INFO_PUBLIC_KEY_LEN(); + let mut valueOrError3: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(recipientPublicKeyLengthIndex + 4 < truncate!(providerInfo.cardinality(), u64), &_default::E(&string_utf16_of("Key Provider Info Serialization Error. Serialized length less than expected."))); if valueOrError3.IsFailure() { res = MaybePlacebo::from(valueOrError3.PropagateFailure::()); return res.read(); }; - let mut recipientPublicKeyLength: DafnyInt = int!(crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default::SeqToUInt32(&providerInfo.slice(&int!((&crate::implementation_from_dafny::_Constants_Compile::_default::ECDH_PROVIDER_INFO_RPL_INDEX()).clone()), &int!((&crate::implementation_from_dafny::_Constants_Compile::_default::ECDH_PROVIDER_INFO_RPK_INDEX()).clone())))); - let mut recipientPublicKeyLengthIndex: DafnyInt = int!(crate::implementation_from_dafny::_Constants_Compile::_default::ECDH_PROVIDER_INFO_RPK_INDEX()) + recipientPublicKeyLength.clone(); - let mut senderPublicKeyIndex: DafnyInt = recipientPublicKeyLengthIndex.clone() + crate::implementation_from_dafny::_Constants_Compile::_default::ECDH_PROVIDER_INFO_PUBLIC_KEY_LEN(); - let mut valueOrError4: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(recipientPublicKeyLengthIndex.clone() + int!(4) < providerInfo.cardinality(), &_default::E(&string_utf16_of("Key Provider Info Serialization Error. Serialized length less than expected."))); + let mut providerInfoRecipientPublicKey: Sequence = providerInfo.slice(&int!((&crate::implementation_from_dafny::_Constants_Compile::_default::ECDH_PROVIDER_INFO_RPK_INDEX()).clone()), &int!((&recipientPublicKeyLengthIndex).clone())); + let mut providerInfoSenderPublicKey: Sequence = providerInfo.drop(&int!((&senderPublicKeyIndex).clone())); + let mut valueOrError4: Arc, Arc>>; + let mut _out0: Arc, Arc>> = _default::DecompressPublicKey(&providerInfoSenderPublicKey, &self.curveSpec().clone(), &self.cryptoPrimitives().clone()); + valueOrError4 = _out0.clone(); if valueOrError4.IsFailure() { res = MaybePlacebo::from(valueOrError4.PropagateFailure::()); return res.read(); }; - let mut providerInfoRecipientPublicKey: Sequence = providerInfo.slice(&int!((&crate::implementation_from_dafny::_Constants_Compile::_default::ECDH_PROVIDER_INFO_RPK_INDEX()).clone()), &recipientPublicKeyLengthIndex); - let mut providerInfoSenderPublicKey: Sequence = providerInfo.drop(&senderPublicKeyIndex); + let mut senderPublicKey: Sequence = valueOrError4.Extract(); let mut valueOrError5: Arc, Arc>>; - let mut _out0: Arc, Arc>> = _default::DecompressPublicKey(&providerInfoSenderPublicKey, &self.curveSpec().clone(), &self.cryptoPrimitives().clone()); - valueOrError5 = _out0.clone(); + let mut _out1: Arc, Arc>> = _default::DecompressPublicKey(&providerInfoRecipientPublicKey, &self.curveSpec().clone(), &self.cryptoPrimitives().clone()); + valueOrError5 = _out1.clone(); if valueOrError5.IsFailure() { res = MaybePlacebo::from(valueOrError5.PropagateFailure::()); return res.read(); }; - let mut senderPublicKey: Sequence = valueOrError5.Extract(); - let mut valueOrError6: Arc, Arc>>; - let mut _out1: Arc, Arc>> = _default::DecompressPublicKey(&providerInfoRecipientPublicKey, &self.curveSpec().clone(), &self.cryptoPrimitives().clone()); - valueOrError6 = _out1.clone(); + let mut recipientPublicKey: Sequence = valueOrError5.Extract(); + let mut valueOrError6: Arc>>; + let mut _out2: Arc>> = _default::ValidatePublicKey(&self.cryptoPrimitives().clone(), &self.curveSpec().clone(), &senderPublicKey); + valueOrError6 = _out2.clone(); if valueOrError6.IsFailure() { res = MaybePlacebo::from(valueOrError6.PropagateFailure::()); return res.read(); }; - let mut recipientPublicKey: Sequence = valueOrError6.Extract(); + let mut _v0: bool = valueOrError6.Extract(); let mut valueOrError7: Arc>>; - let mut _out2: Arc>> = _default::ValidatePublicKey(&self.cryptoPrimitives().clone(), &self.curveSpec().clone(), &senderPublicKey); - valueOrError7 = _out2.clone(); + let mut _out3: Arc>> = _default::ValidatePublicKey(&self.cryptoPrimitives().clone(), &self.curveSpec().clone(), &recipientPublicKey); + valueOrError7 = _out3.clone(); if valueOrError7.IsFailure() { res = MaybePlacebo::from(valueOrError7.PropagateFailure::()); return res.read(); }; - let mut _v0: bool = valueOrError7.Extract(); - let mut valueOrError8: Arc>>; - let mut _out3: Arc>> = _default::ValidatePublicKey(&self.cryptoPrimitives().clone(), &self.curveSpec().clone(), &recipientPublicKey); - valueOrError8 = _out3.clone(); - if valueOrError8.IsFailure() { - res = MaybePlacebo::from(valueOrError8.PropagateFailure::()); - return res.read(); - }; - let mut _v1: bool = valueOrError8.Extract(); + let mut _v1: bool = valueOrError7.Extract(); let mut sharedSecretPublicKey = MaybePlacebo::>::new(); let mut sharedSecretPrivateKey = MaybePlacebo::>::new(); let mut _source0: Arc = self.keyAgreementScheme().clone(); @@ -123656,26 +124850,26 @@ pub mod _RawECDHKeyring_Compile { return res.read(); } }; - let mut valueOrError9: Arc>>; + let mut valueOrError8: Arc>>; let mut _out4: Arc>> = _default::ValidatePublicKey(&self.cryptoPrimitives().clone(), &self.curveSpec().clone(), &sharedSecretPublicKey.read()); - valueOrError9 = _out4.clone(); - if valueOrError9.IsFailure() { - res = MaybePlacebo::from(valueOrError9.PropagateFailure::()); + valueOrError8 = _out4.clone(); + if valueOrError8.IsFailure() { + res = MaybePlacebo::from(valueOrError8.PropagateFailure::()); return res.read(); }; - let mut _v3: bool = valueOrError9.Extract(); - let mut valueOrError10: Arc, Arc>>; + let mut _v3: bool = valueOrError8.Extract(); + let mut valueOrError9: Arc, Arc>>; let mut _out5: Arc, Arc>> = _default::LocalDeriveSharedSecret(&Arc::new(ECCPrivateKey::ECCPrivateKey { pem: sharedSecretPrivateKey.read() }), &Arc::new(ECCPublicKey::ECCPublicKey { der: sharedSecretPublicKey.read() }), &self.curveSpec().clone(), &self.cryptoPrimitives().clone()); - valueOrError10 = _out5.clone(); - if valueOrError10.IsFailure() { - res = MaybePlacebo::from(valueOrError10.PropagateFailure::()); + valueOrError9 = _out5.clone(); + if valueOrError9.IsFailure() { + res = MaybePlacebo::from(valueOrError9.PropagateFailure::()); return res.read(); }; - let mut sharedSecret: Sequence = valueOrError10.Extract(); + let mut sharedSecret: Sequence = valueOrError9.Extract(); let mut ecdhUnwrap: Object; let mut _nw0: Object = EcdhUnwrap::_allocate_object(); EcdhUnwrap::_ctor(&_nw0, &providerInfoSenderPublicKey, &providerInfoRecipientPublicKey, &sharedSecret, &_default::RAW_ECDH_KEYRING_VERSION(), &self.curveSpec().clone(), &self.cryptoPrimitives().clone()); @@ -123683,18 +124877,18 @@ pub mod _RawECDHKeyring_Compile { let mut unwrapOutputRes: Arc>>, Arc>>; let mut _out6: Arc>>, Arc>> = crate::implementation_from_dafny::_EdkWrapping_Compile::_default::UnwrapEdkMaterial::>(edk.ciphertext(), &self.materials().clone(), &upcast_object::>>()(ecdhUnwrap.clone())); unwrapOutputRes = _out6.clone(); - let mut valueOrError11: Arc>>, Arc>> = unwrapOutputRes.clone(); - if valueOrError11.IsFailure() { - res = MaybePlacebo::from(valueOrError11.PropagateFailure::()); + let mut valueOrError10: Arc>>, Arc>> = unwrapOutputRes.clone(); + if valueOrError10.IsFailure() { + res = MaybePlacebo::from(valueOrError10.PropagateFailure::()); return res.read(); }; - let mut unwrapOutput: Arc>> = valueOrError11.Extract(); - let mut valueOrError12: Arc, Arc>> = crate::implementation_from_dafny::_Materials_Compile::_default::DecryptionMaterialsAddDataKey(&self.materials().clone(), unwrapOutput.plaintextDataKey(), unwrapOutput.symmetricSigningKey()); - if valueOrError12.IsFailure() { - res = MaybePlacebo::from(valueOrError12.PropagateFailure::()); + let mut unwrapOutput: Arc>> = valueOrError10.Extract(); + let mut valueOrError11: Arc, Arc>> = crate::implementation_from_dafny::_Materials_Compile::_default::DecryptionMaterialsAddDataKey(&self.materials().clone(), unwrapOutput.plaintextDataKey(), unwrapOutput.symmetricSigningKey()); + if valueOrError11.IsFailure() { + res = MaybePlacebo::from(valueOrError11.PropagateFailure::()); return res.read(); }; - let mut result: Arc = valueOrError12.Extract(); + let mut result: Arc = valueOrError11.Extract(); res = MaybePlacebo::from(Arc::new(Result::, Arc>::Success { value: result.clone() })); @@ -123718,8 +124912,9 @@ pub mod _RawRSAKeyring_Compile { pub use crate::implementation_from_dafny::software::amazon::cryptography::primitives::internaldafny::types::RSAPaddingMode; pub use crate::implementation_from_dafny::software::amazon::cryptography::primitives::internaldafny::AtomicPrimitivesClient; pub use ::dafny_runtime::update_field_uninit_object; + pub use crate::implementation_from_dafny::_Wrappers_Compile::Option::Some; + pub use ::dafny_runtime::truncate; pub use crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::EncryptedDataKey; - pub use ::dafny_runtime::int; pub use ::dafny_runtime::UpcastObject; pub use ::dafny_runtime::DynAny; pub use ::dafny_runtime::UpcastObjectFn; @@ -123729,7 +124924,6 @@ pub mod _RawRSAKeyring_Compile { pub use crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::OnEncryptOutput; pub use ::dafny_runtime::MaybePlacebo; pub use crate::implementation_from_dafny::_Wrappers_Compile::Outcome; - pub use crate::implementation_from_dafny::_Wrappers_Compile::Option::Some; pub use ::dafny_runtime::string_utf16_of; pub use crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::EncryptionMaterials; pub use crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::AlgorithmSuiteInfo; @@ -123743,8 +124937,9 @@ pub mod _RawRSAKeyring_Compile { pub use crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::OnDecryptInput; pub use crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::OnDecryptOutput; pub use crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::DecryptionMaterials; - pub use ::dafny_runtime::DafnyInt; pub use ::dafny_runtime::integer_range; + pub use ::std::convert::Into; + pub use ::dafny_runtime::int; pub use crate::implementation_from_dafny::_EdkWrapping_Compile::UnwrapEdkMaterialOutput; pub use crate::implementation_from_dafny::_MaterialWrapping_Compile::UnwrapMaterial; pub use crate::implementation_from_dafny::_Wrappers_Compile::Result::Success; @@ -123773,14 +124968,16 @@ pub mod _RawRSAKeyring_Compile { pub use ::dafny_runtime::Map; pub use crate::implementation_from_dafny::software::amazon::cryptography::primitives::internaldafny::types::RSADecryptInput; - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawRSAKeyring.dfy(40,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawRSAKeyring.dfy(41,3) pub struct RawRSAKeyring { pub __i_cryptoPrimitives: Object, + pub __i_privateKeyMaterial: Arc>>, + pub __i_publicKeyMaterial: Arc>>, + pub __i_publicKey: Arc>>, + pub __i_privateKey: Arc>>, pub __i_keyNamespace: ValidUTF8Bytes, pub __i_keyName: ValidUTF8Bytes, - pub __i_paddingScheme: Arc, - pub __i_publicKey: Arc>>, - pub __i_privateKey: Arc>> + pub __i_paddingScheme: Arc } impl RawRSAKeyring { @@ -123788,20 +124985,50 @@ pub mod _RawRSAKeyring_Compile { pub fn _allocate_object() -> Object { allocate_object::() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawRSAKeyring.dfy(67,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawRSAKeyring.dfy(76,5) pub fn _ctor(this: &Object, namespace: &ValidUTF8Bytes, name: &ValidUTF8Bytes, publicKey: &Arc>>, privateKey: &Arc>>, paddingScheme: &Arc, cryptoPrimitives: &Object) -> () { let mut _set___i_cryptoPrimitives: bool = false; + let mut _set___i_privateKeyMaterial: bool = false; + let mut _set___i_publicKeyMaterial: bool = false; + let mut _set___i_publicKey: bool = false; + let mut _set___i_privateKey: bool = false; let mut _set___i_keyNamespace: bool = false; let mut _set___i_keyName: bool = false; let mut _set___i_paddingScheme: bool = false; - let mut _set___i_publicKey: bool = false; - let mut _set___i_privateKey: bool = false; update_field_uninit_object!(this.clone(), __i_keyNamespace, _set___i_keyNamespace, namespace.clone()); update_field_uninit_object!(this.clone(), __i_keyName, _set___i_keyName, name.clone()); update_field_uninit_object!(this.clone(), __i_paddingScheme, _set___i_paddingScheme, paddingScheme.clone()); update_field_uninit_object!(this.clone(), __i_publicKey, _set___i_publicKey, publicKey.clone()); update_field_uninit_object!(this.clone(), __i_privateKey, _set___i_privateKey, privateKey.clone()); update_field_uninit_object!(this.clone(), __i_cryptoPrimitives, _set___i_cryptoPrimitives, cryptoPrimitives.clone()); + let mut localPrivateKeyMaterial: Arc>> = Arc::new(Option::>::None {}); + if matches!(privateKey.as_ref(), Some{ .. }) { + let mut extract: Sequence = privateKey.Extract(); + if 0 < truncate!(extract.cardinality(), u64) { + let mut unwrap: Object; + let mut _nw0: Object = RsaUnwrapKeyMaterial::_allocate_object(); + RsaUnwrapKeyMaterial::_ctor(&_nw0, &extract, paddingScheme, cryptoPrimitives); + unwrap = _nw0.clone(); + localPrivateKeyMaterial = Arc::new(Option::>::Some { + value: unwrap.clone() + }); + } + }; + let mut localPublicKeyMaterial: Arc>> = Arc::new(Option::>::None {}); + if matches!(publicKey.as_ref(), Some{ .. }) { + let mut extract: Sequence = publicKey.Extract(); + if 0 < truncate!(extract.cardinality(), u64) { + let mut wrap: Object; + let mut _nw1: Object = RsaWrapKeyMaterial::_allocate_object(); + RsaWrapKeyMaterial::_ctor(&_nw1, &extract, paddingScheme, cryptoPrimitives); + wrap = _nw1.clone(); + localPublicKeyMaterial = Arc::new(Option::>::Some { + value: wrap.clone() + }); + } + }; + update_field_uninit_object!(this.clone(), __i_publicKeyMaterial, _set___i_publicKeyMaterial, localPublicKeyMaterial.clone()); + update_field_uninit_object!(this.clone(), __i_privateKeyMaterial, _set___i_privateKeyMaterial, localPrivateKeyMaterial.clone()); return (); } /// = aws-encryption-sdk-specification/framework/raw-rsa-keyring.md#ondecrypt @@ -123809,34 +125036,42 @@ pub mod _RawRSAKeyring_Compile { /// # For each encrypted data key, the keyring MUST attempt to decrypt the /// # encrypted data key into plaintext using RSA if and only if the /// # following is true: - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawRSAKeyring.dfy(375,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawRSAKeyring.dfy(437,5) pub fn ShouldDecryptEDK(&self, edk: &Arc) -> bool { - crate::implementation_from_dafny::UTF8::_default::ValidUTF8Seq(edk.keyProviderInfo()) && edk.keyProviderInfo().clone() == self.keyName().clone() && edk.keyProviderId().clone() == self.keyNamespace().clone() && int!(0) < edk.ciphertext().cardinality() + crate::implementation_from_dafny::UTF8::_default::ValidUTF8Seq(edk.keyProviderInfo()) && edk.keyProviderInfo().clone() == self.keyName().clone() && edk.keyProviderId().clone() == self.keyNamespace().clone() && 0 < truncate!(edk.ciphertext().cardinality(), u64) } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawRSAKeyring.dfy(43,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawRSAKeyring.dfy(60,5) pub fn cryptoPrimitives(&self) -> Object { self.__i_cryptoPrimitives.clone() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawRSAKeyring.dfy(54,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawRSAKeyring.dfy(65,5) + pub fn privateKeyMaterial(&self) -> Arc>> { + self.__i_privateKeyMaterial.clone() + } + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawRSAKeyring.dfy(66,5) + pub fn publicKeyMaterial(&self) -> Arc>> { + self.__i_publicKeyMaterial.clone() + } + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawRSAKeyring.dfy(63,5) + pub fn publicKey(&self) -> Arc>> { + self.__i_publicKey.clone() + } + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawRSAKeyring.dfy(64,5) + pub fn privateKey(&self) -> Arc>> { + self.__i_privateKey.clone() + } + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawRSAKeyring.dfy(61,5) pub fn keyNamespace(&self) -> ValidUTF8Bytes { self.__i_keyNamespace.clone() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawRSAKeyring.dfy(55,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawRSAKeyring.dfy(62,5) pub fn keyName(&self) -> ValidUTF8Bytes { self.__i_keyName.clone() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawRSAKeyring.dfy(58,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawRSAKeyring.dfy(67,5) pub fn paddingScheme(&self) -> Arc { self.__i_paddingScheme.clone() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawRSAKeyring.dfy(56,5) - pub fn publicKey(&self) -> Arc>> { - self.__i_publicKey.clone() - } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawRSAKeyring.dfy(57,5) - pub fn privateKey(&self) -> Arc>> { - self.__i_privateKey.clone() - } } impl UpcastObject @@ -123854,10 +125089,10 @@ pub mod _RawRSAKeyring_Compile { impl IKeyring for RawRSAKeyring { - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawRSAKeyring.dfy(131,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawRSAKeyring.dfy(192,5) fn _OnEncrypt_k(&self, input: &Arc) -> Arc, Arc>> { let mut output = MaybePlacebo::, Arc>>>::new(); - let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(matches!((&self.publicKey().clone()).as_ref(), Some{ .. }) && int!(0) < self.publicKey().clone().Extract().cardinality(), &Arc::new(crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::Error::AwsCryptographicMaterialProvidersException { + let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(matches!((&self.publicKeyMaterial().clone()).as_ref(), Some{ .. }), &Arc::new(crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::Error::AwsCryptographicMaterialProvidersException { message: string_utf16_of("A RawRSAKeyring without a public key cannot provide OnEncrypt") })); if valueOrError0.IsFailure() { @@ -123866,16 +125101,12 @@ pub mod _RawRSAKeyring_Compile { }; let mut materials: Arc = input.materials().clone(); let mut suite: Arc = materials.algorithmSuite().clone(); - let mut wrap: Object; - let mut _nw0: Object = RsaWrapKeyMaterial::_allocate_object(); - RsaWrapKeyMaterial::_ctor(&_nw0, self.publicKey().clone().value(), &self.paddingScheme().clone(), &self.cryptoPrimitives().clone()); - wrap = _nw0.clone(); let mut generateAndWrap: Object; - let mut _nw1: Object = RsaGenerateAndWrapKeyMaterial::_allocate_object(); - RsaGenerateAndWrapKeyMaterial::_ctor(&_nw1, self.publicKey().clone().value(), &self.paddingScheme().clone(), &self.cryptoPrimitives().clone()); - generateAndWrap = _nw1.clone(); + let mut _nw0: Object = RsaGenerateAndWrapKeyMaterial::_allocate_object(); + RsaGenerateAndWrapKeyMaterial::_ctor(&_nw0, self.publicKey().clone().value(), &self.paddingScheme().clone(), &self.cryptoPrimitives().clone()); + generateAndWrap = _nw0.clone(); let mut valueOrError1: Arc>>, Arc>>; - let mut _out0: Arc>>, Arc>> = crate::implementation_from_dafny::_EdkWrapping_Compile::_default::WrapEdkMaterial::>(&materials, &upcast_object::>>()(wrap.clone()), &upcast_object::>>()(generateAndWrap.clone())); + let mut _out0: Arc>>, Arc>> = crate::implementation_from_dafny::_EdkWrapping_Compile::_default::WrapEdkMaterial::>(&materials, &upcast_object::>>()(self.publicKeyMaterial().clone().value().clone()), &upcast_object::>>()(generateAndWrap.clone())); valueOrError1 = _out0.clone(); if valueOrError1.IsFailure() { output = MaybePlacebo::from(valueOrError1.PropagateFailure::>()); @@ -123926,10 +125157,10 @@ pub mod _RawRSAKeyring_Compile { }; return output.read(); } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawRSAKeyring.dfy(273,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawRSAKeyring.dfy(339,5) fn _OnDecrypt_k(&self, input: &Arc) -> Arc, Arc>> { let mut output = MaybePlacebo::, Arc>>>::new(); - let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(matches!((&self.privateKey().clone()).as_ref(), Some{ .. }) && int!(0) < self.privateKey().clone().Extract().cardinality(), &Arc::new(crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::Error::AwsCryptographicMaterialProvidersException { + let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(matches!((&self.privateKeyMaterial().clone()).as_ref(), Some{ .. }), &Arc::new(crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::Error::AwsCryptographicMaterialProvidersException { message: string_utf16_of("A RawRSAKeyring without a private key cannot provide OnEncrypt") })); if valueOrError0.IsFailure() { @@ -123945,16 +125176,12 @@ pub mod _RawRSAKeyring_Compile { return output.read(); }; let mut errors: Sequence> = seq![] as Sequence>; - let mut _hi0: DafnyInt = input.encryptedDataKeys().cardinality(); - for i in integer_range(int!(0), _hi0.clone()) { - if self.ShouldDecryptEDK(&input.encryptedDataKeys().get(&i)) { - let mut edk: Arc = input.encryptedDataKeys().get(&i); - let mut unwrap: Object; - let mut _nw0: Object = RsaUnwrapKeyMaterial::_allocate_object(); - RsaUnwrapKeyMaterial::_ctor(&_nw0, &self.privateKey().clone().Extract(), &self.paddingScheme().clone(), &self.cryptoPrimitives().clone()); - unwrap = _nw0.clone(); + let mut _hi0: u64 = truncate!(input.encryptedDataKeys().cardinality(), u64); + for i in integer_range(0, _hi0).map(Into::::into) { + if self.ShouldDecryptEDK(&input.encryptedDataKeys().get(&int!((&i).clone()))) { + let mut edk: Arc = input.encryptedDataKeys().get(&int!((&i).clone())); let mut unwrapOutput: Arc>>, Arc>>; - let mut _out0: Arc>>, Arc>> = crate::implementation_from_dafny::_EdkWrapping_Compile::_default::UnwrapEdkMaterial::>(edk.ciphertext(), &materials, &upcast_object::>>()(unwrap.clone())); + let mut _out0: Arc>>, Arc>> = crate::implementation_from_dafny::_EdkWrapping_Compile::_default::UnwrapEdkMaterial::>(edk.ciphertext(), &materials, &upcast_object::>>()(self.privateKeyMaterial().clone().value().clone())); unwrapOutput = _out0.clone(); if matches!((&unwrapOutput).as_ref(), Success{ .. }) { let mut valueOrError2: Arc, Arc>> = crate::implementation_from_dafny::_Materials_Compile::_default::DecryptionMaterialsAddDataKey(&materials, unwrapOutput.value().plaintextDataKey(), unwrapOutput.value().symmetricSigningKey()); @@ -123973,7 +125200,7 @@ pub mod _RawRSAKeyring_Compile { errors = errors.concat(&seq![unwrapOutput.error().clone()]); } } else { - let mut valueOrError3: Arc, Arc>> = crate::implementation_from_dafny::UTF8::_default::Decode(input.encryptedDataKeys().get(&i).keyProviderId()).MapFailure::>(&({ + let mut valueOrError3: Arc, Arc>> = crate::implementation_from_dafny::UTF8::_default::Decode(input.encryptedDataKeys().get(&int!((&i).clone())).keyProviderId()).MapFailure::>(&({ Arc::new(move |e: &Sequence| -> Arc{ Arc::new(crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::Error::AwsCryptographicMaterialProvidersException { message: e.clone() @@ -123986,14 +125213,14 @@ pub mod _RawRSAKeyring_Compile { }; let mut extractedKeyProviderId: Sequence = valueOrError3.Extract(); errors = errors.concat(&seq![Arc::new(crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::Error::AwsCryptographicMaterialProvidersException { - message: crate::implementation_from_dafny::_ErrorMessages_Compile::_default::IncorrectRawDataKeys(&crate::implementation_from_dafny::_StandardLibrary_Compile::_String_Compile::_default::Base10Int2String(&i), &string_utf16_of("RSAKeyring"), &extractedKeyProviderId) + message: crate::implementation_from_dafny::_ErrorMessages_Compile::_default::IncorrectRawDataKeys(&crate::implementation_from_dafny::_StandardLibrary_Compile::_String_Compile::_default::Base10Int2String(&int!((&i).clone())), &string_utf16_of("RSAKeyring"), &extractedKeyProviderId) })]); } } output = MaybePlacebo::from(Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::, Arc>::Failure { error: Arc::new(crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::Error::CollectionOfErrors { list: errors.clone(), - message: string_utf16_of("Raw RSA Key was unable to decrypt any encrypted data key. The list of encountered Exceptions is avaible via `list`.") + message: string_utf16_of("Raw RSA Key was unable to decrypt any encrypted data key. The list of encountered Exceptions is available via `list`.") }) })); return output.read(); @@ -124005,7 +125232,7 @@ pub mod _RawRSAKeyring_Compile { UpcastObjectFn!(dyn IKeyring); } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawRSAKeyring.dfy(407,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawRSAKeyring.dfy(470,3) #[derive(PartialEq, Clone)] pub enum RsaUnwrapInfo { RsaUnwrapInfo {} @@ -124067,7 +125294,7 @@ pub mod _RawRSAKeyring_Compile { } } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawRSAKeyring.dfy(409,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawRSAKeyring.dfy(472,3) #[derive(PartialEq, Clone)] pub enum RsaWrapInfo { RsaWrapInfo {} @@ -124129,7 +125356,7 @@ pub mod _RawRSAKeyring_Compile { } } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawRSAKeyring.dfy(411,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawRSAKeyring.dfy(474,3) pub struct RsaGenerateAndWrapKeyMaterial { pub __i_publicKey: Sequence, pub __i_paddingScheme: Arc, @@ -124141,7 +125368,7 @@ pub mod _RawRSAKeyring_Compile { pub fn _allocate_object() -> Object { allocate_object::() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawRSAKeyring.dfy(418,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawRSAKeyring.dfy(481,5) pub fn _ctor(this: &Object, publicKey: &Sequence, paddingScheme: &Arc, cryptoPrimitives: &Object) -> () { let mut _set___i_publicKey: bool = false; let mut _set___i_paddingScheme: bool = false; @@ -124151,15 +125378,15 @@ pub mod _RawRSAKeyring_Compile { update_field_uninit_object!(this.clone(), __i_cryptoPrimitives, _set___i_cryptoPrimitives, cryptoPrimitives.clone()); return (); } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawRSAKeyring.dfy(414,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawRSAKeyring.dfy(477,5) pub fn publicKey(&self) -> Sequence { self.__i_publicKey.clone() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawRSAKeyring.dfy(415,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawRSAKeyring.dfy(478,5) pub fn paddingScheme(&self) -> Arc { self.__i_paddingScheme.clone() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawRSAKeyring.dfy(416,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawRSAKeyring.dfy(479,5) pub fn cryptoPrimitives(&self) -> Object { self.__i_cryptoPrimitives.clone() } @@ -124188,7 +125415,7 @@ pub mod _RawRSAKeyring_Compile { impl Action, Arc>>, Arc>>> for RsaGenerateAndWrapKeyMaterial { - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawRSAKeyring.dfy(457,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawRSAKeyring.dfy(520,5) fn Invoke(&self, input: &Arc) -> Arc>>, Arc>> { let mut res = MaybePlacebo::>>, Arc>>>::new(); let mut generateBytesResult: Arc, Arc>>; @@ -124216,7 +125443,8 @@ pub mod _RawRSAKeyring_Compile { let mut _out1: Arc>>, Arc>> = Action::, Arc>>, Arc>>>::Invoke(rd!(wrap.clone()), &Arc::new(WrapInput::WrapInput { plaintextMaterial: plaintextMaterial.clone(), algorithmSuite: input.algorithmSuite().clone(), - encryptionContext: input.encryptionContext().clone() + encryptionContext: input.encryptionContext().clone(), + serializedEC: input.serializedEC().clone() })); valueOrError1 = _out1.clone(); if valueOrError1.IsFailure() { @@ -124241,11 +125469,11 @@ pub mod _RawRSAKeyring_Compile { UpcastObjectFn!(dyn Action, Arc>>, Arc>>>); } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawRSAKeyring.dfy(505,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawRSAKeyring.dfy(569,3) pub struct RsaWrapKeyMaterial { + pub __i_cryptoPrimitives: Object, pub __i_publicKey: Sequence, - pub __i_paddingScheme: Arc, - pub __i_cryptoPrimitives: Object + pub __i_paddingScheme: Arc } impl RsaWrapKeyMaterial { @@ -124253,28 +125481,28 @@ pub mod _RawRSAKeyring_Compile { pub fn _allocate_object() -> Object { allocate_object::() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawRSAKeyring.dfy(512,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawRSAKeyring.dfy(576,5) pub fn _ctor(this: &Object, publicKey: &Sequence, paddingScheme: &Arc, cryptoPrimitives: &Object) -> () { + let mut _set___i_cryptoPrimitives: bool = false; let mut _set___i_publicKey: bool = false; let mut _set___i_paddingScheme: bool = false; - let mut _set___i_cryptoPrimitives: bool = false; update_field_uninit_object!(this.clone(), __i_publicKey, _set___i_publicKey, publicKey.clone()); update_field_uninit_object!(this.clone(), __i_paddingScheme, _set___i_paddingScheme, paddingScheme.clone()); update_field_uninit_object!(this.clone(), __i_cryptoPrimitives, _set___i_cryptoPrimitives, cryptoPrimitives.clone()); return (); } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawRSAKeyring.dfy(508,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawRSAKeyring.dfy(574,5) + pub fn cryptoPrimitives(&self) -> Object { + self.__i_cryptoPrimitives.clone() + } + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawRSAKeyring.dfy(572,5) pub fn publicKey(&self) -> Sequence { self.__i_publicKey.clone() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawRSAKeyring.dfy(509,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawRSAKeyring.dfy(573,5) pub fn paddingScheme(&self) -> Arc { self.__i_paddingScheme.clone() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawRSAKeyring.dfy(510,5) - pub fn cryptoPrimitives(&self) -> Object { - self.__i_cryptoPrimitives.clone() - } } impl UpcastObject @@ -124300,7 +125528,7 @@ pub mod _RawRSAKeyring_Compile { impl Action, Arc>>, Arc>>> for RsaWrapKeyMaterial { - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawRSAKeyring.dfy(560,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawRSAKeyring.dfy(623,5) fn Invoke(&self, input: &Arc) -> Arc>>, Arc>> { let mut res = MaybePlacebo::>>, Arc>>>::new(); let mut RSAEncryptOutput: Arc, Arc>>; @@ -124338,11 +125566,11 @@ pub mod _RawRSAKeyring_Compile { UpcastObjectFn!(dyn Action, Arc>>, Arc>>>); } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawRSAKeyring.dfy(601,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawRSAKeyring.dfy(664,3) pub struct RsaUnwrapKeyMaterial { + pub __i_cryptoPrimitives: Object, pub __i_privateKey: Sequence, - pub __i_paddingScheme: Arc, - pub __i_cryptoPrimitives: Object + pub __i_paddingScheme: Arc } impl RsaUnwrapKeyMaterial { @@ -124350,28 +125578,28 @@ pub mod _RawRSAKeyring_Compile { pub fn _allocate_object() -> Object { allocate_object::() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawRSAKeyring.dfy(608,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawRSAKeyring.dfy(671,5) pub fn _ctor(this: &Object, privateKey: &Sequence, paddingScheme: &Arc, cryptoPrimitives: &Object) -> () { + let mut _set___i_cryptoPrimitives: bool = false; let mut _set___i_privateKey: bool = false; let mut _set___i_paddingScheme: bool = false; - let mut _set___i_cryptoPrimitives: bool = false; update_field_uninit_object!(this.clone(), __i_privateKey, _set___i_privateKey, privateKey.clone()); update_field_uninit_object!(this.clone(), __i_paddingScheme, _set___i_paddingScheme, paddingScheme.clone()); update_field_uninit_object!(this.clone(), __i_cryptoPrimitives, _set___i_cryptoPrimitives, cryptoPrimitives.clone()); return (); } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawRSAKeyring.dfy(604,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawRSAKeyring.dfy(669,5) + pub fn cryptoPrimitives(&self) -> Object { + self.__i_cryptoPrimitives.clone() + } + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawRSAKeyring.dfy(667,5) pub fn privateKey(&self) -> Sequence { self.__i_privateKey.clone() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawRSAKeyring.dfy(605,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawRSAKeyring.dfy(668,5) pub fn paddingScheme(&self) -> Arc { self.__i_paddingScheme.clone() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawRSAKeyring.dfy(606,5) - pub fn cryptoPrimitives(&self) -> Object { - self.__i_cryptoPrimitives.clone() - } } impl UpcastObject @@ -124397,7 +125625,7 @@ pub mod _RawRSAKeyring_Compile { impl Action, Arc>>, Arc>>> for RsaUnwrapKeyMaterial { - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawRSAKeyring.dfy(655,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/RawRSAKeyring.dfy(717,5) fn Invoke(&self, input: &Arc) -> Arc>>, Arc>> { let mut res = MaybePlacebo::>>, Arc>>>::new(); let mut suite: Arc = input.algorithmSuite().clone(); @@ -124422,7 +125650,7 @@ pub mod _RawRSAKeyring_Compile { return res.read(); }; let mut decryptResult: Sequence = valueOrError0.Extract(); - let mut valueOrError1: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(decryptResult.cardinality() == int!(crate::implementation_from_dafny::_AlgorithmSuites_Compile::_default::GetEncryptKeyLength(&suite)), &Arc::new(crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::Error::AwsCryptographicMaterialProvidersException { + let mut valueOrError1: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(truncate!(decryptResult.cardinality(), u64) == crate::implementation_from_dafny::_AlgorithmSuites_Compile::_default::GetEncryptKeyLength(&suite) as u64, &Arc::new(crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::Error::AwsCryptographicMaterialProvidersException { message: string_utf16_of("Invalid plaintext length.") })); if valueOrError1.IsFailure() { @@ -124453,7 +125681,7 @@ pub mod _RawRSAKeyring_Compile { pub mod _Relations_Compile { } -/// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/CMMs/RequiredEncryptionContextCMM.dfy(11,1) +/// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/CMMs/RequiredEncryptionContextCMM.dfy(12,1) pub mod _RequiredEncryptionContextCMM_Compile { pub use ::dafny_runtime::Object; pub use ::dafny_runtime::allocate_object; @@ -124478,11 +125706,12 @@ pub mod _RequiredEncryptionContextCMM_Compile { pub use ::dafny_runtime::string_utf16_of; pub use crate::implementation_from_dafny::_Wrappers_Compile::Option; pub use ::dafny_runtime::seq; + pub use crate::implementation_from_dafny::_DefaultCMM_Compile::DefaultCMM; pub use crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::DecryptMaterialsInput; pub use crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::DecryptMaterialsOutput; pub use crate::implementation_from_dafny::_Wrappers_Compile::Option::Some; - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/CMMs/RequiredEncryptionContextCMM.dfy(21,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/CMMs/RequiredEncryptionContextCMM.dfy(24,3) pub struct RequiredEncryptionContextCMM { pub __i_underlyingCMM: Object, pub __i_requiredEncryptionContextKeys: Sequence @@ -124493,7 +125722,7 @@ pub mod _RequiredEncryptionContextCMM_Compile { pub fn _allocate_object() -> Object { allocate_object::() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/CMMs/RequiredEncryptionContextCMM.dfy(36,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/CMMs/RequiredEncryptionContextCMM.dfy(39,5) pub fn _ctor(this: &Object, inputCMM: &Object, inputKeys: &Set) -> () { let mut _set___i_underlyingCMM: bool = false; let mut _set___i_requiredEncryptionContextKeys: bool = false; @@ -124505,11 +125734,11 @@ pub mod _RequiredEncryptionContextCMM_Compile { update_field_uninit_object!(this.clone(), __i_requiredEncryptionContextKeys, _set___i_requiredEncryptionContextKeys, keySeq.clone()); return (); } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/CMMs/RequiredEncryptionContextCMM.dfy(24,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/CMMs/RequiredEncryptionContextCMM.dfy(27,5) pub fn underlyingCMM(&self) -> Object { self.__i_underlyingCMM.clone() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/CMMs/RequiredEncryptionContextCMM.dfy(25,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/CMMs/RequiredEncryptionContextCMM.dfy(28,5) pub fn requiredEncryptionContextKeys(&self) -> Sequence { self.__i_requiredEncryptionContextKeys.clone() } @@ -124530,7 +125759,7 @@ pub mod _RequiredEncryptionContextCMM_Compile { impl ICryptographicMaterialsManager for RequiredEncryptionContextCMM { - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/CMMs/RequiredEncryptionContextCMM.dfy(70,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/CMMs/RequiredEncryptionContextCMM.dfy(85,5) fn _GetEncryptionMaterials_k(&self, input: &Arc) -> Arc, Arc>> { let mut output = MaybePlacebo::, Arc>>>::new(); let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(Itertools::unique((&self.requiredEncryptionContextKeys().clone()).iter()).all(({ @@ -124556,15 +125785,15 @@ pub mod _RequiredEncryptionContextCMM_Compile { }; let mut valueOrError1: Arc, Arc>>; let mut _out0: Arc, Arc>> = ICryptographicMaterialsManager::GetEncryptionMaterials(rd!(self.underlyingCMM().clone()), &({ - let __pat_let51_0: Arc = input.clone(); + let __pat_let66_0: Arc = input.clone(); { - let _dt__update__tmp_h0: Arc = __pat_let51_0.clone(); + let _dt__update__tmp_h0: Arc = __pat_let66_0.clone(); { - let __pat_let52_0: Arc>> = Arc::new(Option::>::Some { + let __pat_let67_0: Arc>> = Arc::new(Option::>::Some { value: input.requiredEncryptionContextKeys().UnwrapOr(&(seq![] as Sequence)).concat(&self.requiredEncryptionContextKeys().clone()) }); { - let _dt__update_hrequiredEncryptionContextKeys_h0: Arc>> = __pat_let52_0.clone(); + let _dt__update_hrequiredEncryptionContextKeys_h0: Arc>> = __pat_let67_0.clone(); Arc::new(GetEncryptionMaterialsInput::GetEncryptionMaterialsInput { encryptionContext: _dt__update__tmp_h0.encryptionContext().clone(), commitmentPolicy: _dt__update__tmp_h0.commitmentPolicy().clone(), @@ -124582,47 +125811,55 @@ pub mod _RequiredEncryptionContextCMM_Compile { return output.read(); }; let mut result: Arc = valueOrError1.Extract(); - let mut valueOrError2: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(Itertools::unique((&self.requiredEncryptionContextKeys().clone()).iter()).all(({ - let mut _this = Object::<_>::from_ref(self); - let mut result = result.clone(); - Arc::new(move |__forall_var_1: ValidUTF8Bytes| -> bool{ - let mut k: ValidUTF8Bytes = __forall_var_1.clone(); - if { - let i: Sequence = k.clone(); - crate::implementation_from_dafny::UTF8::_default::ValidUTF8Seq(&i) - } { - !rd!(_this.clone()).requiredEncryptionContextKeys().clone().contains(&k) || result.encryptionMaterials().requiredEncryptionContextKeys().contains(&k) - } else { - true - } - }) - }).as_ref()), &Arc::new(Error::AwsCryptographicMaterialProvidersException { - message: string_utf16_of("Expected encryption context keys do not exist in keys to only authenticate.") - })); - if valueOrError2.IsFailure() { - output = MaybePlacebo::from(valueOrError2.PropagateFailure::>()); - return output.read(); - }; - let mut valueOrError3: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(crate::implementation_from_dafny::_Materials_Compile::_default::EncryptionMaterialsHasPlaintextDataKey(result.encryptionMaterials()), &Arc::new(Error::AwsCryptographicMaterialProvidersException { - message: string_utf16_of("Could not retrieve materials required for encryption") - })); - if valueOrError3.IsFailure() { - output = MaybePlacebo::from(valueOrError3.PropagateFailure::>()); - return output.read(); - }; - let mut valueOrError4: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(crate::implementation_from_dafny::_CMM_Compile::_default::_RequiredEncryptionContextKeys_q(input.requiredEncryptionContextKeys(), result.encryptionMaterials()), &Arc::new(Error::AwsCryptographicMaterialProvidersException { - message: string_utf16_of("Keyring returned an invalid response") - })); - if valueOrError4.IsFailure() { - output = MaybePlacebo::from(valueOrError4.PropagateFailure::>()); - return output.read(); + if !(({ + let __is_68: Object = self.underlyingCMM().clone(); + __is_68.clone().is_instance_of::() + }) || ({ + let __is_69: Object = self.underlyingCMM().clone(); + __is_69.clone().is_instance_of::() + })) { + let mut valueOrError2: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(Itertools::unique((&self.requiredEncryptionContextKeys().clone()).iter()).all(({ + let mut _this = Object::<_>::from_ref(self); + let mut result = result.clone(); + Arc::new(move |__forall_var_1: ValidUTF8Bytes| -> bool{ + let mut k: ValidUTF8Bytes = __forall_var_1.clone(); + if { + let i: Sequence = k.clone(); + crate::implementation_from_dafny::UTF8::_default::ValidUTF8Seq(&i) + } { + !rd!(_this.clone()).requiredEncryptionContextKeys().clone().contains(&k) || result.encryptionMaterials().requiredEncryptionContextKeys().contains(&k) + } else { + true + } + }) + }).as_ref()), &Arc::new(Error::AwsCryptographicMaterialProvidersException { + message: string_utf16_of("Expected encryption context keys do not exist in keys to only authenticate.") + })); + if valueOrError2.IsFailure() { + output = MaybePlacebo::from(valueOrError2.PropagateFailure::>()); + return output.read(); + }; + let mut valueOrError3: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(crate::implementation_from_dafny::_Materials_Compile::_default::EncryptionMaterialsHasPlaintextDataKey(result.encryptionMaterials()), &Arc::new(Error::AwsCryptographicMaterialProvidersException { + message: string_utf16_of("Could not retrieve materials required for encryption") + })); + if valueOrError3.IsFailure() { + output = MaybePlacebo::from(valueOrError3.PropagateFailure::>()); + return output.read(); + }; + let mut valueOrError4: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(crate::implementation_from_dafny::_CMM_Compile::_default::_RequiredEncryptionContextKeys_q(input.requiredEncryptionContextKeys(), result.encryptionMaterials()), &Arc::new(Error::AwsCryptographicMaterialProvidersException { + message: string_utf16_of("Keyring returned an invalid response") + })); + if valueOrError4.IsFailure() { + output = MaybePlacebo::from(valueOrError4.PropagateFailure::>()); + return output.read(); + } }; output = MaybePlacebo::from(Arc::new(Result::, Arc>::Success { value: result.clone() })); return output.read(); } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/CMMs/RequiredEncryptionContextCMM.dfy(192,5) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/CMMs/RequiredEncryptionContextCMM.dfy(241,5) fn _DecryptMaterials_k(&self, input: &Arc) -> Arc, Arc>> { let mut output = MaybePlacebo::, Arc>>>::new(); let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(matches!(input.reproducedEncryptionContext().as_ref(), Some{ .. }), &Arc::new(Error::AwsCryptographicMaterialProvidersException { @@ -124668,40 +125905,48 @@ pub mod _RequiredEncryptionContextCMM_Compile { return output.read(); }; let mut result: Arc = valueOrError3.Extract(); - let mut valueOrError4: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(Itertools::unique((&self.requiredEncryptionContextKeys().clone()).iter()).all(({ - let mut _this = Object::<_>::from_ref(self); - let mut result = result.clone(); - Arc::new(move |__forall_var_1: ValidUTF8Bytes| -> bool{ - let mut k: ValidUTF8Bytes = __forall_var_1.clone(); - if { - let i: Sequence = k.clone(); - crate::implementation_from_dafny::UTF8::_default::ValidUTF8Seq(&i) - } { - !rd!(_this.clone()).requiredEncryptionContextKeys().clone().contains(&k) || result.decryptionMaterials().encryptionContext().contains(&k) - } else { - true - } - }) - }).as_ref()), &Arc::new(Error::AwsCryptographicMaterialProvidersException { - message: string_utf16_of("Final encryption context missing required keys.") - })); - if valueOrError4.IsFailure() { - output = MaybePlacebo::from(valueOrError4.PropagateFailure::>()); - return output.read(); - }; - let mut valueOrError5: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(crate::implementation_from_dafny::_CMM_Compile::_default::EncryptionContextComplete(input, result.decryptionMaterials()), &Arc::new(Error::AwsCryptographicMaterialProvidersException { - message: string_utf16_of("Reproduced encryption context missing from encryption context.") - })); - if valueOrError5.IsFailure() { - output = MaybePlacebo::from(valueOrError5.PropagateFailure::>()); - return output.read(); - }; - let mut valueOrError6: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(crate::implementation_from_dafny::_Materials_Compile::_default::DecryptionMaterialsWithPlaintextDataKey(result.decryptionMaterials()), &Arc::new(Error::AwsCryptographicMaterialProvidersException { - message: string_utf16_of("Keyring.OnDecrypt failed to decrypt the plaintext data key.") - })); - if valueOrError6.IsFailure() { - output = MaybePlacebo::from(valueOrError6.PropagateFailure::>()); - return output.read(); + if !(({ + let __is_70: Object = self.underlyingCMM().clone(); + __is_70.clone().is_instance_of::() + }) || ({ + let __is_71: Object = self.underlyingCMM().clone(); + __is_71.clone().is_instance_of::() + })) { + let mut valueOrError4: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(Itertools::unique((&self.requiredEncryptionContextKeys().clone()).iter()).all(({ + let mut _this = Object::<_>::from_ref(self); + let mut result = result.clone(); + Arc::new(move |__forall_var_1: ValidUTF8Bytes| -> bool{ + let mut k: ValidUTF8Bytes = __forall_var_1.clone(); + if { + let i: Sequence = k.clone(); + crate::implementation_from_dafny::UTF8::_default::ValidUTF8Seq(&i) + } { + !rd!(_this.clone()).requiredEncryptionContextKeys().clone().contains(&k) || result.decryptionMaterials().encryptionContext().contains(&k) + } else { + true + } + }) + }).as_ref()), &Arc::new(Error::AwsCryptographicMaterialProvidersException { + message: string_utf16_of("Final encryption context missing required keys.") + })); + if valueOrError4.IsFailure() { + output = MaybePlacebo::from(valueOrError4.PropagateFailure::>()); + return output.read(); + }; + let mut valueOrError5: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(crate::implementation_from_dafny::_CMM_Compile::_default::EncryptionContextComplete(input, result.decryptionMaterials()), &Arc::new(Error::AwsCryptographicMaterialProvidersException { + message: string_utf16_of("Reproduced encryption context missing from encryption context.") + })); + if valueOrError5.IsFailure() { + output = MaybePlacebo::from(valueOrError5.PropagateFailure::>()); + return output.read(); + }; + let mut valueOrError6: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(crate::implementation_from_dafny::_Materials_Compile::_default::DecryptionMaterialsWithPlaintextDataKey(result.decryptionMaterials()), &Arc::new(Error::AwsCryptographicMaterialProvidersException { + message: string_utf16_of("Keyring.OnDecrypt failed to decrypt the plaintext data key.") + })); + if valueOrError6.IsFailure() { + output = MaybePlacebo::from(valueOrError6.PropagateFailure::>()); + return output.read(); + } }; output = MaybePlacebo::from(Arc::new(Result::, Arc>::Success { value: result.clone() @@ -125087,7 +126332,7 @@ pub mod _SearchConfigToInfo_Compile { pub use crate::implementation_from_dafny::_CompoundBeacon_Compile::BeaconPart::Signed; pub use crate::implementation_from_dafny::_CompoundBeacon_Compile::BeaconPart::Encrypted; pub use crate::implementation_from_dafny::_CompoundBeacon_Compile::ValidCompoundBeacon; - pub use ::dafny_runtime::DafnyInt; + pub use ::dafny_runtime::truncate; pub use crate::implementation_from_dafny::_BaseBeacon_Compile::BeaconBase; pub use crate::implementation_from_dafny::_SearchableEncryptionInfo_Compile::Beacon::Compound; pub use ::std::fmt::Debug; @@ -125102,7 +126347,7 @@ pub mod _SearchConfigToInfo_Compile { pub struct _default {} impl _default { - /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(38,3) + /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(39,3) pub fn Convert(outer: &Arc) -> Arc>, Arc>> { let mut output = MaybePlacebo::>, Arc>>>::new(); if matches!(outer.search().as_ref(), None{ .. }) { @@ -125140,7 +126385,7 @@ pub mod _SearchConfigToInfo_Compile { }; return output.read(); } - /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(95,3) + /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(96,3) pub fn ShouldDeleteKeyField(outer: &Arc, keyFieldName: &Sequence) -> Arc>> { if !outer.attributeActionsOnEncrypt().contains(keyFieldName) { Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::>::Success { @@ -125171,7 +126416,7 @@ pub mod _SearchConfigToInfo_Compile { } } } - /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(113,3) + /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(114,3) pub fn MakeKeySource(outer: &Arc, keyStore: &ValidStore, config: &Arc, client: &Object) -> Arc, Arc>> { let mut output = MaybePlacebo::, Arc>>>::new(); let mut mplR: Arc, Arc>>; @@ -125349,7 +126594,7 @@ pub mod _SearchConfigToInfo_Compile { }; return output.read(); } - /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(238,3) + /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(239,3) pub fn ConvertVersion(outer: &Arc, config: &Arc) -> Arc>> { let mut output = MaybePlacebo::>>>::new(); let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(config.version().clone() == 1, &crate::implementation_from_dafny::_DynamoDbEncryptionUtil_Compile::_default::E(&string_utf16_of("Version number in BeaconVersion must be '1'."))); @@ -125389,7 +126634,7 @@ pub mod _SearchConfigToInfo_Compile { output = MaybePlacebo::from(_out2.clone()); return output.read(); } - /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(269,3) + /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(270,3) pub fn ConvertVersionWithSource(outer: &Arc, config: &Arc, source: &Arc) -> Arc>> { let mut output = MaybePlacebo::>>>::new(); let mut valueOrError0: Arc>> = _default::ConvertVirtualFields(outer, config.virtualFields()); @@ -125476,7 +126721,7 @@ pub mod _SearchConfigToInfo_Compile { output = MaybePlacebo::from(crate::implementation_from_dafny::_SearchableEncryptionInfo_Compile::_default::MakeBeaconVersion(config.version().clone() as u8, source, &beacons, &virtualFields, outer.attributeActionsOnEncrypt())); return output.read(); } - /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(327,3) + /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(328,3) pub fn ConvertVirtualFields(outer: &Arc, vf: &Arc>) -> Arc>> { if matches!(vf.as_ref(), None{ .. }) { Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::, ValidVirtualField>, Arc>::Success { @@ -125486,37 +126731,37 @@ pub mod _SearchConfigToInfo_Compile { _default::AddVirtualFields(vf.value(), outer, &map![]) } } - /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(337,3) + /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(338,3) pub fn IsSigned(outer: &Arc, loc: &TermLoc) -> bool { true && ({ - let __pat_let53_0: Sequence = loc.get(&int!(0)).key().clone(); + let __pat_let72_0: Sequence = loc.get(&int!(0)).key().clone(); { - let name: Sequence = __pat_let53_0.clone(); + let name: Sequence = __pat_let72_0.clone(); outer.attributeActionsOnEncrypt().contains(&name) && outer.attributeActionsOnEncrypt().get(&name) != Arc::new(CryptoAction::DO_NOTHING {}) } }) } - /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(345,3) + /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(346,3) pub fn IsSignOnly(outer: &Arc, loc: &TermLoc) -> bool { true && ({ - let __pat_let54_0: Sequence = loc.get(&int!(0)).key().clone(); + let __pat_let73_0: Sequence = loc.get(&int!(0)).key().clone(); { - let name: Sequence = __pat_let54_0.clone(); + let name: Sequence = __pat_let73_0.clone(); outer.attributeActionsOnEncrypt().contains(&name) && (outer.attributeActionsOnEncrypt().get(&name) == Arc::new(CryptoAction::SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT {}) || outer.attributeActionsOnEncrypt().get(&name) == Arc::new(CryptoAction::SIGN_ONLY {})) } }) } - /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(356,3) + /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(357,3) pub fn IsEncrypted(outer: &Arc, loc: &TermLoc) -> bool { true && ({ - let __pat_let55_0: Sequence = loc.get(&int!(0)).key().clone(); + let __pat_let74_0: Sequence = loc.get(&int!(0)).key().clone(); { - let name: Sequence = __pat_let55_0.clone(); + let name: Sequence = __pat_let74_0.clone(); outer.attributeActionsOnEncrypt().contains(&name) && outer.attributeActionsOnEncrypt().get(&name) == Arc::new(CryptoAction::ENCRYPT_AND_SIGN {}) } }) } - /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(364,3) + /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(365,3) pub fn IsEncryptedV(outer: &Arc, virtualFields: &VirtualFieldMap, loc: &TermLoc) -> bool { _default::IsEncrypted(outer, loc) || virtualFields.contains(loc.get(&int!(0)).key()) && VirtField::examine(&virtualFields.get(loc.get(&int!(0)).key()), { let outer: Arc = outer.clone(); @@ -125528,7 +126773,7 @@ pub mod _SearchConfigToInfo_Compile { }) }) } - /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(371,3) + /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(372,3) pub fn BeaconNameAllowed(outer: &Arc, virtualFields: &VirtualFieldMap, name: &Sequence, context: &Sequence, isSignedBeacon: bool) -> Arc>> { if outer.attributeActionsOnEncrypt().contains(name) && outer.attributeActionsOnEncrypt().get(name) != Arc::new(CryptoAction::ENCRYPT_AND_SIGN {}) { Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::>::Failure { @@ -125564,7 +126809,7 @@ pub mod _SearchConfigToInfo_Compile { } } } - /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(395,3) + /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(396,3) pub fn VirtualFieldNameAllowed(outer: &Arc, name: &Sequence) -> Arc>> { if outer.attributeActionsOnEncrypt().contains(name) { Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::>::Failure { @@ -125594,7 +126839,7 @@ pub mod _SearchConfigToInfo_Compile { } } } - /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(410,3) + /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(411,3) pub fn FindVirtualFieldWithThisLocation(fields: &VirtualFieldMap, locs: &Set) -> Arc>> { let mut badNames: Set> = (&({ let mut locs = locs.clone(); @@ -125619,7 +126864,7 @@ pub mod _SearchConfigToInfo_Compile { }) } } - /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(421,3) + /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(422,3) pub fn ExistsConstructorWithTheseRequired(cons: &Sequence>, locs: &Set>) -> bool { int!(0) < _default::SeqCount::>({ let locs: Set> = locs.clone(); @@ -125631,7 +126876,7 @@ pub mod _SearchConfigToInfo_Compile { }) }, cons) } - /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(426,3) + /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(427,3) pub fn getPartsString(c: &Arc) -> Sequence { let mut req: Sequence> = crate::implementation_from_dafny::_Seq_Compile::_default::Filter::>(&({ Arc::new(move |p: &Arc| -> bool{ @@ -125653,7 +126898,7 @@ pub mod _SearchConfigToInfo_Compile { /// = type=implication /// # Initialization MUST fail if the name of any [virtual fields](virtual.md#virtual-field) matches that /// # of any [configured field](#configured-field). - /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(436,3) + /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(437,3) pub fn AddVirtualFields(vf: &Sequence>, outer: &Arc, converted: &VirtualFieldMap) -> Arc>> { let mut _r0 = vf.clone(); let mut _r1 = outer.clone(); @@ -125714,7 +126959,7 @@ pub mod _SearchConfigToInfo_Compile { } } } - /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(482,3) + /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(483,3) pub fn FindBeaconWithThisLocation(beacons: &BeaconMap, loc: &TermLoc) -> Arc>> { let mut badNames: Set> = (&({ let mut loc = loc.clone(); @@ -125739,7 +126984,7 @@ pub mod _SearchConfigToInfo_Compile { }) } } - /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(493,3) + /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(494,3) pub fn IsValidShare(converted: &BeaconMap, name: &Sequence, length: u8, share: &Sequence) -> Arc>> { if converted.contains(share) { let mut tb: Arc = converted.get(share); @@ -125776,7 +127021,7 @@ pub mod _SearchConfigToInfo_Compile { }) } } - /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(521,3) + /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(522,3) pub fn AddStandardBeacons(beacons: &Sequence>, outer: &Arc, client: &Object, virtualFields: &VirtualFieldMap, converted: &BeaconMap) -> Arc>> { let mut output = MaybePlacebo::>>>::new(); if beacons.cardinality() == int!(0) { @@ -125860,7 +127105,7 @@ pub mod _SearchConfigToInfo_Compile { output = MaybePlacebo::from(_out0.clone()); return output.read(); } - /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(607,3) + /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(608,3) pub fn GetLoc(name: &Sequence, loc: &Arc>>) -> Arc>> { if matches!(loc.as_ref(), None{ .. }) { Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::>::Success { @@ -125870,7 +127115,7 @@ pub mod _SearchConfigToInfo_Compile { crate::implementation_from_dafny::_TermLoc_Compile::_default::MakeTermLoc(loc.value()) } } - /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(616,3) + /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(617,3) pub fn GetLocStr(name: &Sequence, loc: &Arc>>) -> Sequence { if matches!(loc.as_ref(), None{ .. }) { name.clone() @@ -125878,7 +127123,7 @@ pub mod _SearchConfigToInfo_Compile { loc.value().clone() } } - /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(670,3) + /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(671,3) pub fn GetSignedParts(parts: &Sequence>, outer: &Arc, name: &Sequence, converted: &Arc) -> Arc, Arc>> { let mut _r0 = parts.clone(); let mut _r1 = outer.clone(); @@ -125928,7 +127173,7 @@ pub mod _SearchConfigToInfo_Compile { } } } - /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(720,3) + /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(721,3) pub fn GetEncryptedParts(parts: &Sequence>, std: &BeaconMap, name: &Sequence, converted: &Arc) -> Arc, Arc>> { let mut _r0 = parts.clone(); let mut _r1 = std.clone(); @@ -125978,7 +127223,7 @@ pub mod _SearchConfigToInfo_Compile { } } } - /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(757,3) + /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(758,3) pub fn MakeDefaultConstructor(parts: &Sequence>, converted: &Sequence>) -> Arc>, Arc>> { let mut _r0 = parts.clone(); let mut _r1 = converted.clone(); @@ -126003,7 +127248,7 @@ pub mod _SearchConfigToInfo_Compile { } } } - /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(791,3) + /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(792,3) pub fn MyFilter<_T: DafnyType>(f: &Arc bool + Sync + Send>, xs: &Sequence<_T>) -> Sequence<_T> { let mut _accumulator: Sequence<_T> = seq![] as Sequence<_T>; let mut _r0 = f.clone(); @@ -126027,7 +127272,7 @@ pub mod _SearchConfigToInfo_Compile { } } } - /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(802,3) + /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(803,3) pub fn SeqCount<_T: DafnyType>(f: &Arc bool + Sync + Send>, xs: &Sequence<_T>) -> nat { let mut _accumulator: nat = int!(0); let mut _r0 = f.clone(); @@ -126051,7 +127296,7 @@ pub mod _SearchConfigToInfo_Compile { } } } - /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(812,3) + /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(813,3) pub fn MakeConstructor2(c: &Sequence>, parts: &Sequence>, origSize: &nat, converted: &Sequence>) -> Arc>, Arc>> { let mut _r0 = c.clone(); let mut _r1 = parts.clone(); @@ -126097,7 +127342,7 @@ pub mod _SearchConfigToInfo_Compile { } } } - /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(839,3) + /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(840,3) pub fn MakeConstructor(c: &Arc, parts: &Sequence>) -> Arc, Arc>> { let mut valueOrError0: Arc>, Arc>> = _default::MakeConstructor2(c.parts(), parts, &c.parts().cardinality(), &(seq![] as Sequence>)); if valueOrError0.IsFailure() { @@ -126111,7 +127356,7 @@ pub mod _SearchConfigToInfo_Compile { }) } } - /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(850,3) + /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(851,3) pub fn AddConstructors2(constructors: &Sequence>, name: &Sequence, parts: &Sequence>, origSize: &nat, converted: &Sequence>) -> Arc>, Arc>> { let mut _r0 = constructors.clone(); let mut _r1 = name.clone(); @@ -126170,7 +127415,7 @@ pub mod _SearchConfigToInfo_Compile { } } } - /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(886,3) + /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(887,3) pub fn AddConstructors(constructors: &Arc>, name: &Sequence, parts: &Sequence>) -> Arc>, Arc>> { if matches!(constructors.as_ref(), None{ .. }) { _default::MakeDefaultConstructor(parts, &(seq![] as Sequence>)) @@ -126178,7 +127423,7 @@ pub mod _SearchConfigToInfo_Compile { _default::AddConstructors2(constructors.value(), name, parts, &constructors.value().cardinality(), &(seq![] as Sequence>)) } } - /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(913,3) + /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(914,3) pub fn GetGlobalPartsFrom(cons: &Sequence>, globalParts: &Arc, signed: bool, parts: &Arc) -> Arc, Arc>> { let mut _r0 = cons.clone(); let mut _r1 = globalParts.clone(); @@ -126225,7 +127470,7 @@ pub mod _SearchConfigToInfo_Compile { } } } - /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(929,3) + /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(930,3) pub fn GetGlobalParts(cons: &Sequence>, globalParts: &Arc, signed: bool, parts: &Arc) -> Arc, Arc>> { let mut _r0 = cons.clone(); let mut _r1 = globalParts.clone(); @@ -126259,7 +127504,7 @@ pub mod _SearchConfigToInfo_Compile { } } } - /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(941,3) + /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(942,3) pub fn GetAllEncryptedParts(parts: &Sequence>, cons: &Sequence>, globalEncryptedParts: &Arc, name: &Sequence, std: &BeaconMap) -> Arc>, Arc>> { let mut valueOrError0: Arc, Arc>> = _default::GetEncryptedParts(parts, std, &string_utf16_of("Compound beacon ").concat(name), &Arc::new(PartSet::PartSet { parts: seq![] as Sequence>, @@ -126291,7 +127536,7 @@ pub mod _SearchConfigToInfo_Compile { } } } - /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(957,3) + /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(958,3) pub fn IsSignedPart(part: &Arc, signed: bool) -> bool { if signed { matches!(part.as_ref(), Signed{ .. }) @@ -126299,7 +127544,7 @@ pub mod _SearchConfigToInfo_Compile { matches!(part.as_ref(), Encrypted{ .. }) } } - /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(965,3) + /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(966,3) pub fn FindGlobalPart(globalParts: &Sequence>, cons: &Arc, signed: bool) -> Arc>> { let mut _r0 = globalParts.clone(); let mut _r1 = cons.clone(); @@ -126327,7 +127572,7 @@ pub mod _SearchConfigToInfo_Compile { } } } - /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(978,3) + /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(979,3) pub fn GetAllSignedParts(parts: &Sequence>, cons: &Sequence>, globalSignedParts: &Arc, name: &Sequence, outer: &Arc) -> Arc>, Arc>> { let mut valueOrError0: Arc, Arc>> = _default::GetSignedParts(parts, outer, name, &Arc::new(PartSet::PartSet { parts: seq![] as Sequence>, @@ -126359,7 +127604,7 @@ pub mod _SearchConfigToInfo_Compile { } } } - /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(994,3) + /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(995,3) pub fn CheckSignedParts(parts: &Sequence>, globals: &Arc, name: &Sequence) -> Arc>> { let mut _r0 = parts.clone(); let mut _r1 = globals.clone(); @@ -126395,7 +127640,7 @@ pub mod _SearchConfigToInfo_Compile { } } } - /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(1006,3) + /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(1007,3) pub fn CheckEncryptedParts(parts: &Sequence>, globals: &Arc, name: &Sequence) -> Arc>> { let mut _r0 = parts.clone(); let mut _r1 = globals.clone(); @@ -126431,7 +127676,7 @@ pub mod _SearchConfigToInfo_Compile { } } } - /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(1019,3) + /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(1020,3) pub fn CreateCompoundBeacon(beacon: &Arc, outer: &Arc, client: &Object, virtualFields: &VirtualFieldMap, converted: &BeaconMap, globalSignedParts: &Arc, globalEncryptedParts: &Arc) -> Arc>> { let mut signedParts: Sequence> = if matches!(beacon.signed().as_ref(), Some{ .. }) { beacon.signed().value().clone() @@ -126485,7 +127730,7 @@ pub mod _SearchConfigToInfo_Compile { if valueOrError7.IsFailure() { valueOrError7.PropagateFailure::() } else { - let mut numNon: DafnyInt = signed.cardinality(); + let mut numNon: u64 = truncate!(signed.cardinality(), u64); let mut allParts: Sequence> = signed.concat(&encrypted); let mut isSignedBeacon: bool = encrypted.cardinality() == int!(0); let mut valueOrError8: Arc>> = _default::BeaconNameAllowed(outer, virtualFields, beacon.name(), &string_utf16_of("CompoundBeacon"), isSignedBeacon); @@ -126515,7 +127760,7 @@ pub mod _SearchConfigToInfo_Compile { client: client.clone(), name: beacon.name().clone(), beaconName: beaconName.clone() - }), &beacon.split().get(&int!(0)), &allParts, &numNon, &constructors) + }), &beacon.split().get(&int!(0)), &allParts, &int!((&numNon).clone()), &constructors) } } } @@ -126529,7 +127774,7 @@ pub mod _SearchConfigToInfo_Compile { } } } - /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(1095,3) + /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(1097,3) pub fn AddCompoundBeacons(beacons: &Sequence>, outer: &Arc, client: &Object, virtualFields: &VirtualFieldMap, converted: &BeaconMap, globalSignedParts: &Arc, globalEncryptedParts: &Arc) -> Arc>> { let mut output = MaybePlacebo::>>>::new(); if beacons.cardinality() == int!(0) { @@ -126550,7 +127795,7 @@ pub mod _SearchConfigToInfo_Compile { output = MaybePlacebo::from(_out0.clone()); return output.read(); } - /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(1136,3) + /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(1138,3) pub fn ExistsInCompound(names: &Sequence>, name: &Sequence, data: &BeaconMap) -> bool { let mut _r0 = names.clone(); let mut _r1 = name.clone(); @@ -126577,7 +127822,7 @@ pub mod _SearchConfigToInfo_Compile { } } } - /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(1151,3) + /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(1153,3) pub fn CheckAllBeacons(names: &Sequence>, allNames: &Sequence>, data: &BeaconMap) -> Arc>> { let mut _r0 = names.clone(); let mut _r1 = allNames.clone(); @@ -126624,14 +127869,14 @@ pub mod _SearchConfigToInfo_Compile { } } } - /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(1187,3) + /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(1189,3) pub fn CheckBeacons(data: &BeaconMap) -> Arc>> { let mut beaconNames: Sequence> = crate::implementation_from_dafny::SortedSets::_default::SetToOrderedSequence2::(&data.keys(), &(Arc::new(move |x0: &DafnyCharUTF16,x1: &DafnyCharUTF16| crate::implementation_from_dafny::_DynamoDbEncryptionUtil_Compile::_default::CharLess(x0, x1)) as Arc _ + Sync + Send>)); _default::CheckAllBeacons(&beaconNames, &beaconNames, data) } } - /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(625,3) + /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(626,3) #[derive(PartialEq, Clone)] pub enum PartSet { PartSet { @@ -126642,7 +127887,7 @@ pub mod _SearchConfigToInfo_Compile { } impl PartSet { - /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(630,5) + /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(631,5) pub fn add(self: &Arc, part: &Arc, name: &Sequence) -> Arc, Arc>> { if self.names().contains(&part.getName()) { Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::, Arc>::Failure { @@ -126664,12 +127909,12 @@ pub mod _SearchConfigToInfo_Compile { } } } - /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(644,5) + /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(645,5) pub fn GetSetAsString(self: &Arc, strings: &Set>) -> Sequence { let mut names: Sequence> = crate::implementation_from_dafny::SortedSets::_default::SetToOrderedSequence2::(strings, &(Arc::new(move |x0: &DafnyCharUTF16,x1: &DafnyCharUTF16| crate::implementation_from_dafny::_DynamoDbEncryptionUtil_Compile::_default::CharLess(x0, x1)) as Arc _ + Sync + Send>)); crate::implementation_from_dafny::_StandardLibrary_Compile::_default::Join::(&names, &string_utf16_of(", ")) } - /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(651,5) + /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(652,5) pub fn combine(self: &Arc, other: &Arc, name: &Sequence, otherName: &Sequence) -> Arc, Arc>> { if self.names().intersect(other.names()).cardinality() != int!(0) { let mut tags: Sequence = self.GetSetAsString(&self.names().intersect(other.names())); @@ -126826,6 +128071,7 @@ pub mod _SearchableEncryptionInfo_Compile { pub use crate::implementation_from_dafny::_SearchableEncryptionInfo_Compile::KeyLocation::LiteralLoc; pub use crate::implementation_from_dafny::_DynamoDbEncryptionUtil_Compile::MaybeKeyId::ShouldHaveKeyId; pub use crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::PositiveLong; + pub use ::dafny_runtime::truncate; pub use crate::implementation_from_dafny::software::amazon::cryptography::primitives::internaldafny::types::DigestInput; pub use crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::GetCacheEntryInput; pub use crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::GetCacheEntryOutput; @@ -126959,18 +128205,18 @@ pub mod _SearchableEncryptionInfo_Compile { }))); return output.read(); } - /// dafny/DynamoDbEncryption/src/SearchInfo.dfy(460,3) + /// dafny/DynamoDbEncryption/src/SearchInfo.dfy(481,3) pub fn MakeSearchInfo(version: &ValidBeaconVersion) -> ValidSearchInfo { Arc::new(SearchInfo::SearchInfo { versions: seq![version.clone()], currWrite: int!(0) }) } - /// dafny/DynamoDbEncryption/src/SearchInfo.dfy(633,3) + /// dafny/DynamoDbEncryption/src/SearchInfo.dfy(654,3) pub fn IsPartOnly(b: &Arc) -> bool { matches!(b.as_ref(), Standard{ .. }) && b.std().partOnly().clone() } - /// dafny/DynamoDbEncryption/src/SearchInfo.dfy(637,3) + /// dafny/DynamoDbEncryption/src/SearchInfo.dfy(658,3) pub fn IsBeaconOfType(b: &Arc, t: &Arc) -> bool { let mut _source0: Arc = t.clone(); if matches!((&_source0).as_ref(), AnyBeacon{ .. }) { @@ -126983,7 +128229,7 @@ pub mod _SearchableEncryptionInfo_Compile { } } } - /// dafny/DynamoDbEncryption/src/SearchInfo.dfy(698,3) + /// dafny/DynamoDbEncryption/src/SearchInfo.dfy(719,3) pub fn MakeBeaconVersion(version: u8, keySource: &Arc, beacons: &BeaconMap, virtualFields: &VirtualFieldMap, actions: &Map, Arc>) -> Arc>> { let mut beaconNames: Sequence> = crate::implementation_from_dafny::SortedSets::_default::SetToOrderedSequence2::(&beacons.keys(), &(Arc::new(move |x0: &DafnyCharUTF16,x1: &DafnyCharUTF16| crate::implementation_from_dafny::_DynamoDbEncryptionUtil_Compile::_default::CharLess(x0, x1)) as Arc _ + Sync + Send>)); let mut stdKeys: Sequence> = crate::implementation_from_dafny::_Seq_Compile::_default::Filter::>({ @@ -127351,11 +128597,31 @@ pub mod _SearchableEncryptionInfo_Compile { }); return output.clone(); } - /// dafny/DynamoDbEncryption/src/SearchInfo.dfy(229,5) + /// dafny/DynamoDbEncryption/src/SearchInfo.dfy(226,5) + pub fn PosLongAdd(self: &Arc, x: PositiveLong, y: PositiveLong) -> PositiveLong { + if int!(x) + int!(y) < crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default::INT64_MAX_LIMIT() { + x + y + } else { + truncate!(crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default::INT64_MAX_LIMIT(), i64) + } + } + /// dafny/DynamoDbEncryption/src/SearchInfo.dfy(235,5) + pub fn PosLongSub(self: &Arc, x: PositiveLong, y: PositiveLong) -> PositiveLong { + if x <= y { + 0 + } else { + x - y + } + } + /// dafny/DynamoDbEncryption/src/SearchInfo.dfy(248,5) pub fn cacheEntryWithinLimits(self: &Arc, creationTime: PositiveLong, now: PositiveLong, ttlSeconds: PositiveLong) -> bool { - now - creationTime <= ttlSeconds + if now <= creationTime { + true + } else { + self.PosLongSub(now, creationTime) <= ttlSeconds + } } - /// dafny/DynamoDbEncryption/src/SearchInfo.dfy(238,5) + /// dafny/DynamoDbEncryption/src/SearchInfo.dfy(260,5) pub fn getKeysCache(self: &Arc, client: &Object, stdNames: &Sequence>, keyId: &Sequence, cacheTTL: PositiveLong, partitionIdBytes: &Sequence, logicalKeyStoreNameBytes: &Sequence, now: PositiveLong) -> Arc, Sequence>, Arc>> { let mut output = MaybePlacebo::, Sequence>, Arc>>>::new(); let mut resourceId: Sequence = crate::implementation_from_dafny::_CacheConstants_Compile::_default::RESOURCE_ID_HIERARCHICAL_KEYRING(); @@ -127452,16 +128718,13 @@ pub mod _SearchableEncryptionInfo_Compile { beaconKey: _dt__update_hbeaconKey_h0.clone(), hmacKeys: _dt__update_hhmacKeys_h0.clone() }); - if !(now < crate::implementation_from_dafny::_BoundedInts_Compile::_default::INT64_MAX() - cacheTTL) { - panic!("Halt") - }; let mut putCacheEntryInput: Arc = Arc::new(PutCacheEntryInput::PutCacheEntryInput { identifier: cacheDigest.clone(), materials: Arc::new(Materials::BeaconKey { BeaconKey: beaconKeyMaterials.clone() }), creationTime: now, - expiryTime: now + cacheTTL, + expiryTime: self.PosLongAdd(now, cacheTTL), messagesUsed: Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Option::::None {}), bytesUsed: Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Option::::None {}) }); @@ -127493,7 +128756,7 @@ pub mod _SearchableEncryptionInfo_Compile { }; return output.read(); } - /// dafny/DynamoDbEncryption/src/SearchInfo.dfy(449,5) + /// dafny/DynamoDbEncryption/src/SearchInfo.dfy(470,5) pub fn getAllKeys(self: &Arc, stdNames: &Sequence>, key: &Sequence) -> Arc, Sequence>, Arc>> { let mut output: Arc, Sequence>, Arc>>; let mut _out0: Arc, Sequence>, Arc>> = _default::GetAllKeys(self.client(), stdNames, key); @@ -127619,7 +128882,7 @@ pub mod _SearchableEncryptionInfo_Compile { } } - /// dafny/DynamoDbEncryption/src/SearchInfo.dfy(465,3) + /// dafny/DynamoDbEncryption/src/SearchInfo.dfy(486,3) #[derive(PartialEq, Clone)] pub enum SearchInfo { SearchInfo { @@ -127629,33 +128892,33 @@ pub mod _SearchableEncryptionInfo_Compile { } impl SearchInfo { - /// dafny/DynamoDbEncryption/src/SearchInfo.dfy(482,5) + /// dafny/DynamoDbEncryption/src/SearchInfo.dfy(503,5) pub fn curr(self: &Arc) -> Arc { self.versions().get(self.currWrite()) } - /// dafny/DynamoDbEncryption/src/SearchInfo.dfy(488,5) + /// dafny/DynamoDbEncryption/src/SearchInfo.dfy(509,5) pub fn IsBeacon(self: &Arc, field: &Sequence) -> bool { self.versions().get(self.currWrite()).IsBeacon(field) } - /// dafny/DynamoDbEncryption/src/SearchInfo.dfy(494,5) + /// dafny/DynamoDbEncryption/src/SearchInfo.dfy(515,5) pub fn IsVirtualField(self: &Arc, field: &Sequence) -> bool { self.versions().get(self.currWrite()).IsVirtualField(field) } - /// dafny/DynamoDbEncryption/src/SearchInfo.dfy(500,5) + /// dafny/DynamoDbEncryption/src/SearchInfo.dfy(521,5) pub fn GeneratePlainBeacons(self: &Arc, item: &Map, Arc>) -> Arc, Arc>, Arc>> { let mut output: Arc, Arc>, Arc>>; let mut _out0: Arc, Arc>, Arc>> = self.versions().get(self.currWrite()).GeneratePlainBeacons(item); output = _out0.clone(); return output.clone(); } - /// dafny/DynamoDbEncryption/src/SearchInfo.dfy(506,5) + /// dafny/DynamoDbEncryption/src/SearchInfo.dfy(527,5) pub fn GenerateSignedBeacons(self: &Arc, item: &Map, Arc>) -> Arc, Arc>, Arc>> { let mut output: Arc, Arc>, Arc>>; let mut _out0: Arc, Arc>, Arc>> = self.versions().get(self.currWrite()).GenerateSignedBeacons(item); output = _out0.clone(); return output.clone(); } - /// dafny/DynamoDbEncryption/src/SearchInfo.dfy(513,5) + /// dafny/DynamoDbEncryption/src/SearchInfo.dfy(534,5) pub fn GenerateEncryptedBeacons(self: &Arc, item: &Map, Arc>, keyId: &Arc) -> Arc, Arc>, Arc>> { let mut output: Arc, Arc>, Arc>>; let mut _out0: Arc, Arc>, Arc>> = self.versions().get(self.currWrite()).GenerateEncryptedBeacons(item, keyId); @@ -127731,7 +128994,7 @@ pub mod _SearchableEncryptionInfo_Compile { } } - /// dafny/DynamoDbEncryption/src/SearchInfo.dfy(522,3) + /// dafny/DynamoDbEncryption/src/SearchInfo.dfy(543,3) #[derive(PartialEq, Clone)] pub enum Beacon { Standard { @@ -127743,7 +129006,7 @@ pub mod _SearchableEncryptionInfo_Compile { } impl Beacon { - /// dafny/DynamoDbEncryption/src/SearchInfo.dfy(526,5) + /// dafny/DynamoDbEncryption/src/SearchInfo.dfy(547,5) pub fn isEncrypted(self: &Arc) -> bool { if matches!(self.as_ref(), Standard{ .. }) { true @@ -127751,7 +129014,7 @@ pub mod _SearchableEncryptionInfo_Compile { CompoundBeacon::isEncrypted(self.cmp()) } } - /// dafny/DynamoDbEncryption/src/SearchInfo.dfy(533,5) + /// dafny/DynamoDbEncryption/src/SearchInfo.dfy(554,5) pub fn hash(self: &Arc, item: &Map, Arc>, vf: &VirtualFieldMap, keys: &Arc) -> Arc>>, Arc>> { if matches!(self.as_ref(), Standard{ .. }) { let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(matches!(keys.as_ref(), Keys{ .. }), &crate::implementation_from_dafny::_DynamoDbEncryptionUtil_Compile::_default::E(&string_utf16_of("Need key for beacon ").concat(&StandardBeacon::keyName(self.std())).concat(&string_utf16_of(" but no keyId found in query.")))); @@ -127788,7 +129051,7 @@ pub mod _SearchableEncryptionInfo_Compile { } } } - /// dafny/DynamoDbEncryption/src/SearchInfo.dfy(556,5) + /// dafny/DynamoDbEncryption/src/SearchInfo.dfy(577,5) pub fn naked(self: &Arc, item: &Map, Arc>, vf: &VirtualFieldMap) -> Arc>>, Arc>> { if matches!(self.as_ref(), Standard{ .. }) { StandardBeacon::getNaked(self.std(), item, vf) @@ -127812,7 +129075,7 @@ pub mod _SearchableEncryptionInfo_Compile { } } } - /// dafny/DynamoDbEncryption/src/SearchInfo.dfy(567,5) + /// dafny/DynamoDbEncryption/src/SearchInfo.dfy(588,5) pub fn attrHash(self: &Arc, item: &Map, Arc>, vf: &VirtualFieldMap, keys: &Arc) -> Arc>>, Arc>> { if matches!(keys.as_ref(), DontUseKeys{ .. }) { self.naked(item, vf) @@ -127820,7 +129083,7 @@ pub mod _SearchableEncryptionInfo_Compile { self.hash(item, vf, keys) } } - /// dafny/DynamoDbEncryption/src/SearchInfo.dfy(574,5) + /// dafny/DynamoDbEncryption/src/SearchInfo.dfy(595,5) pub fn getName(self: &Arc) -> Sequence { if matches!(self.as_ref(), Standard{ .. }) { self.std().base().name().clone() @@ -127828,7 +129091,7 @@ pub mod _SearchableEncryptionInfo_Compile { self.cmp().base().name().clone() } } - /// dafny/DynamoDbEncryption/src/SearchInfo.dfy(581,5) + /// dafny/DynamoDbEncryption/src/SearchInfo.dfy(602,5) pub fn getBeaconName(self: &Arc) -> Sequence { if matches!(self.as_ref(), Standard{ .. }) { self.std().base().beaconName().clone() @@ -127836,7 +129099,7 @@ pub mod _SearchableEncryptionInfo_Compile { self.cmp().base().beaconName().clone() } } - /// dafny/DynamoDbEncryption/src/SearchInfo.dfy(588,5) + /// dafny/DynamoDbEncryption/src/SearchInfo.dfy(609,5) pub fn GetFields(self: &Arc, virtualFields: &VirtualFieldMap) -> Sequence> { if matches!(self.as_ref(), Standard{ .. }) { StandardBeacon::GetFields(self.std(), virtualFields) @@ -127844,7 +129107,7 @@ pub mod _SearchableEncryptionInfo_Compile { CompoundBeacon::GetFields(self.cmp(), virtualFields) } } - /// dafny/DynamoDbEncryption/src/SearchInfo.dfy(596,5) + /// dafny/DynamoDbEncryption/src/SearchInfo.dfy(617,5) pub fn GetBeaconValue(self: &Arc, value: &Arc, keys: &Arc, forEquality: bool, forContains: bool) -> Arc, Arc>> { if matches!(keys.as_ref(), DontUseKeys{ .. }) { Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::, Arc>::Success { @@ -127946,10 +129209,10 @@ pub mod _SearchableEncryptionInfo_Compile { } } - /// dafny/DynamoDbEncryption/src/SearchInfo.dfy(621,3) + /// dafny/DynamoDbEncryption/src/SearchInfo.dfy(642,3) pub type BeaconMap = Map, Arc>; - /// dafny/DynamoDbEncryption/src/SearchInfo.dfy(628,3) + /// dafny/DynamoDbEncryption/src/SearchInfo.dfy(649,3) #[derive(PartialEq, Clone)] pub enum BeaconType { AnyBeacon {}, @@ -128027,10 +129290,10 @@ pub mod _SearchableEncryptionInfo_Compile { } } - /// dafny/DynamoDbEncryption/src/SearchInfo.dfy(719,3) + /// dafny/DynamoDbEncryption/src/SearchInfo.dfy(740,3) pub type ValidBeaconVersion = Arc; - /// dafny/DynamoDbEncryption/src/SearchInfo.dfy(721,3) + /// dafny/DynamoDbEncryption/src/SearchInfo.dfy(742,3) #[derive(PartialEq, Clone)] pub enum BeaconVersion { BeaconVersion { @@ -128045,15 +129308,15 @@ pub mod _SearchableEncryptionInfo_Compile { } impl BeaconVersion { - /// dafny/DynamoDbEncryption/src/SearchInfo.dfy(748,5) + /// dafny/DynamoDbEncryption/src/SearchInfo.dfy(769,5) pub fn IsBeacon(self: &Arc, field: &Sequence) -> bool { self.beacons().contains(field) } - /// dafny/DynamoDbEncryption/src/SearchInfo.dfy(753,5) + /// dafny/DynamoDbEncryption/src/SearchInfo.dfy(774,5) pub fn IsVirtualField(self: &Arc, field: &Sequence) -> bool { self.virtualFields().contains(field) } - /// dafny/DynamoDbEncryption/src/SearchInfo.dfy(758,5) + /// dafny/DynamoDbEncryption/src/SearchInfo.dfy(779,5) pub fn GetFields(self: &Arc, field: &Sequence) -> Sequence> { if self.IsBeacon(field) { self.beacons().get(field).GetFields(self.virtualFields()).concat(&seq![string_utf16_of("aws_dbe_b_").concat(field)]) @@ -128061,14 +129324,14 @@ pub mod _SearchableEncryptionInfo_Compile { seq![field.clone()] } } - /// dafny/DynamoDbEncryption/src/SearchInfo.dfy(766,5) + /// dafny/DynamoDbEncryption/src/SearchInfo.dfy(787,5) pub fn getKeyMap(self: &Arc, keyId: &Arc) -> Arc, Arc>> { let mut output: Arc, Arc>>; let mut _out0: Arc, Arc>> = self.keySource().getKeyMap(self.stdNames(), keyId); output = _out0.clone(); return output.clone(); } - /// dafny/DynamoDbEncryption/src/SearchInfo.dfy(774,5) + /// dafny/DynamoDbEncryption/src/SearchInfo.dfy(795,5) pub fn ListSignedBeacons(self: &Arc) -> Sequence> { crate::implementation_from_dafny::_Seq_Compile::_default::Filter::>(&({ let mut _this = self.clone(); @@ -128077,17 +129340,17 @@ pub mod _SearchableEncryptionInfo_Compile { }) }), self.beaconNames()) } - /// dafny/DynamoDbEncryption/src/SearchInfo.dfy(782,5) + /// dafny/DynamoDbEncryption/src/SearchInfo.dfy(803,5) pub fn GeneratePlainBeacons(self: &Arc, item: &Map, Arc>) -> Arc, Arc>, Arc>> { let mut output: Arc, Arc>, Arc>> = self.GenerateBeacons2(self.beaconNames(), item, &Arc::new(MaybeKeyMap::DontUseKeys {}), &Arc::new(BeaconType::AnyBeacon {}), &map![]); return output.clone(); } - /// dafny/DynamoDbEncryption/src/SearchInfo.dfy(790,5) + /// dafny/DynamoDbEncryption/src/SearchInfo.dfy(811,5) pub fn GenerateSignedBeacons(self: &Arc, item: &Map, Arc>) -> Arc, Arc>, Arc>> { let mut output: Arc, Arc>, Arc>> = self.GenerateBeacons2(self.beaconNames(), item, &Arc::new(MaybeKeyMap::DontUseKeys {}), &Arc::new(BeaconType::SignedBeacon {}), &map![]); return output.clone(); } - /// dafny/DynamoDbEncryption/src/SearchInfo.dfy(813,5) + /// dafny/DynamoDbEncryption/src/SearchInfo.dfy(834,5) pub fn GenerateEncryptedBeacons(self: &Arc, item: &Map, Arc>, keyId: &Arc) -> Arc, Arc>, Arc>> { let mut output = MaybePlacebo::, Arc>, Arc>>>::new(); let mut valueOrError0: Arc, Arc>>; @@ -128101,11 +129364,11 @@ pub mod _SearchableEncryptionInfo_Compile { output = MaybePlacebo::from(self.GenerateBeacons2(self.beaconNames(), item, &hmacKeys, &Arc::new(BeaconType::EncryptedBeacon {}), &map![])); return output.read(); } - /// dafny/DynamoDbEncryption/src/SearchInfo.dfy(850,5) + /// dafny/DynamoDbEncryption/src/SearchInfo.dfy(871,5) pub fn GenerateBeacon(self: &Arc, name: &Sequence, item: &Map, Arc>, keys: &Arc) -> Arc>>, Arc>> { self.beacons().get(name).attrHash(item, self.virtualFields(), keys) } - /// dafny/DynamoDbEncryption/src/SearchInfo.dfy(856,5) + /// dafny/DynamoDbEncryption/src/SearchInfo.dfy(877,5) pub fn GenerateBeacons2(self: &Arc, names: &Sequence>, item: &Map, Arc>, keys: &Arc, bType: &Arc, acc: &Map, Arc>) -> Arc, Arc>, Arc>> { let mut _this = self.clone(); let mut _r0 = names.clone(); @@ -128822,7 +130085,7 @@ pub mod _Sets_Compile { pub fn ExtractFromSingleton<_T: DafnyTypeEq>(s: &Set<_T>) -> _T { (&({ let mut s = s.clone(); - Arc::new(move |__let_dummy_56: &DafnyInt| -> _T{ + Arc::new(move |__let_dummy_75: &DafnyInt| -> _T{ let mut x = MaybePlacebo::<_T>::new(); 'label_goto__ASSIGN_SUCH_THAT_0: loop { for __assign_such_that_0 in (&s).iter().cloned() { @@ -128905,14 +130168,13 @@ pub mod Signature { pub use ::std::sync::Arc; pub use crate::implementation_from_dafny::software::amazon::cryptography::primitives::internaldafny::types::ECDSASignatureAlgorithm; pub use crate::implementation_from_dafny::software::amazon::cryptography::primitives::internaldafny::types::ECDSASignatureAlgorithm::ECDSA_P384; - pub use ::dafny_runtime::_System::nat; - pub use ::dafny_runtime::int; pub use crate::implementation_from_dafny::software::amazon::cryptography::primitives::internaldafny::types::GenerateECDSASignatureKeyInput; pub use crate::implementation_from_dafny::software::amazon::cryptography::primitives::internaldafny::types::GenerateECDSASignatureKeyOutput; pub use crate::implementation_from_dafny::software::amazon::cryptography::primitives::internaldafny::types::Error; pub use ::dafny_runtime::MaybePlacebo; pub use crate::implementation_from_dafny::_dafny_externs::Signature::ECDSA; pub use crate::implementation_from_dafny::_Wrappers_Compile::Outcome; + pub use ::dafny_runtime::truncate; pub use ::dafny_runtime::string_utf16_of; pub use ::dafny_runtime::Sequence; pub use ::std::fmt::Debug; @@ -128927,7 +130189,7 @@ pub mod Signature { pub struct _default {} impl _default { - /// ../submodules/MaterialProviders/AwsCryptographyPrimitives/src/Signature.dfy(16,3) + /// ../submodules/MaterialProviders/AwsCryptographyPrimitives/src/Signature.dfy(17,3) pub fn SignatureLength(signatureAlgorithm: &Arc) -> u16 { let mut _source0: Arc = signatureAlgorithm.clone(); if matches!((&_source0).as_ref(), ECDSA_P384{ .. }) { @@ -128936,16 +130198,16 @@ pub mod Signature { 71 } } - /// ../submodules/MaterialProviders/AwsCryptographyPrimitives/src/Signature.dfy(22,3) - pub fn FieldSize(signatureAlgorithm: &Arc) -> nat { + /// ../submodules/MaterialProviders/AwsCryptographyPrimitives/src/Signature.dfy(23,3) + pub fn FieldSize(signatureAlgorithm: &Arc) -> u64 { let mut _source0: Arc = signatureAlgorithm.clone(); if matches!((&_source0).as_ref(), ECDSA_P384{ .. }) { - int!(49) + 49 } else { - int!(33) + 33 } } - /// ../submodules/MaterialProviders/AwsCryptographyPrimitives/src/Signature.dfy(30,3) + /// ../submodules/MaterialProviders/AwsCryptographyPrimitives/src/Signature.dfy(31,3) pub fn KeyGen(input: &Arc) -> Arc, Arc>> { let mut res = MaybePlacebo::, Arc>>>::new(); let mut valueOrError0: Arc, Arc>>; @@ -128956,7 +130218,7 @@ pub mod Signature { return res.read(); }; let mut sigKeyPair: Arc = valueOrError0.Extract(); - let mut valueOrError1: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(sigKeyPair.verificationKey().cardinality() == _default::FieldSize(input.signatureAlgorithm()), &Arc::new(Error::AwsCryptographicPrimitivesError { + let mut valueOrError1: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(truncate!(sigKeyPair.verificationKey().cardinality(), u64) == _default::FieldSize(input.signatureAlgorithm()), &Arc::new(Error::AwsCryptographicPrimitivesError { message: string_utf16_of("Incorrect verification-key length from ExternKeyGen.") })); if valueOrError1.IsFailure() { @@ -128972,37 +130234,37 @@ pub mod Signature { })); return res.read(); } - /// ../submodules/MaterialProviders/AwsCryptographyPrimitives/src/Signature.dfy(91,3) + /// ../submodules/MaterialProviders/AwsCryptographyPrimitives/src/Signature.dfy(93,3) pub fn CreateExternKeyGenSuccess(output: &Arc) -> Arc, Arc>> { Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::, Arc>::Success { value: output.clone() }) } - /// ../submodules/MaterialProviders/AwsCryptographyPrimitives/src/Signature.dfy(95,3) + /// ../submodules/MaterialProviders/AwsCryptographyPrimitives/src/Signature.dfy(97,3) pub fn CreateExternKeyGenFailure(error: &Arc) -> Arc, Arc>> { Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::, Arc>::Failure { error: error.clone() }) } - /// ../submodules/MaterialProviders/AwsCryptographyPrimitives/src/Signature.dfy(99,3) + /// ../submodules/MaterialProviders/AwsCryptographyPrimitives/src/Signature.dfy(101,3) pub fn CreateSignSuccess(bytes: &Sequence) -> Arc, Arc>> { Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::, Arc>::Success { value: bytes.clone() }) } - /// ../submodules/MaterialProviders/AwsCryptographyPrimitives/src/Signature.dfy(103,3) + /// ../submodules/MaterialProviders/AwsCryptographyPrimitives/src/Signature.dfy(105,3) pub fn CreateSignFailure(error: &Arc) -> Arc, Arc>> { Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::, Arc>::Failure { error: error.clone() }) } - /// ../submodules/MaterialProviders/AwsCryptographyPrimitives/src/Signature.dfy(107,3) + /// ../submodules/MaterialProviders/AwsCryptographyPrimitives/src/Signature.dfy(109,3) pub fn CreateVerifySuccess(b: bool) -> Arc>> { Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::>::Success { value: b }) } - /// ../submodules/MaterialProviders/AwsCryptographyPrimitives/src/Signature.dfy(111,3) + /// ../submodules/MaterialProviders/AwsCryptographyPrimitives/src/Signature.dfy(113,3) pub fn CreateVerifyFailure(error: &Arc) -> Arc>> { Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::>::Failure { error: error.clone() @@ -129010,7 +130272,7 @@ pub mod Signature { } } - /// ../submodules/MaterialProviders/AwsCryptographyPrimitives/src/Signature.dfy(12,3) + /// ../submodules/MaterialProviders/AwsCryptographyPrimitives/src/Signature.dfy(13,3) #[derive(PartialEq, Clone)] pub enum SignatureKeyPair { SignatureKeyPair { @@ -129089,12 +130351,17 @@ pub mod Signature { } } } -/// dafny/StructuredEncryption/src/SortCanon.dfy(7,1) +/// dafny/StructuredEncryption/src/SortCanon.dfy(8,1) pub mod _SortCanon_Compile { pub use ::std::sync::Arc; pub use crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::CanonAuthItem; pub use crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::CanonCryptoItem; pub use ::dafny_runtime::Sequence; + pub use ::std::default::Default; + pub use crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::seq64; + pub use ::dafny_runtime::truncate; + pub use ::dafny_runtime::integer_range; + pub use ::std::convert::Into; pub use ::dafny_runtime::int; pub use ::std::marker::Sync; pub use ::std::marker::Send; @@ -129102,27 +130369,62 @@ pub mod _SortCanon_Compile { pub struct _default {} impl _default { - /// dafny/StructuredEncryption/src/SortCanon.dfy(26,3) + /// dafny/StructuredEncryption/src/SortCanon.dfy(29,3) pub fn AuthBelow(x: &Arc, y: &Arc) -> bool { _default::Below(x.key(), y.key()) } - /// dafny/StructuredEncryption/src/SortCanon.dfy(30,3) + /// dafny/StructuredEncryption/src/SortCanon.dfy(33,3) pub fn CryptoBelow(x: &Arc, y: &Arc) -> bool { _default::Below(x.key(), y.key()) } - /// dafny/StructuredEncryption/src/SortCanon.dfy(151,3) + /// dafny/StructuredEncryption/src/SortCanon.dfy(154,3) pub fn Below(x: &Sequence, y: &Sequence) -> bool { - !(x.cardinality() != int!(0)) || y.cardinality() != int!(0) && x.get(&int!(0)) <= y.get(&int!(0)) && (!(x.get(&int!(0)) == y.get(&int!(0))) || _default::Below(&x.drop(&int!(1)), &y.drop(&int!(1)))) + let mut _hresult: bool = ::default(); + _hresult = _default::BoundedBelow(x, y); + return _hresult; + } + /// dafny/StructuredEncryption/src/SortCanon.dfy(165,3) + pub fn BoundedBelow(x: &seq64, y: &seq64) -> bool { + let mut _hresult: bool = ::default(); + let mut xLength: u64 = truncate!(x.cardinality(), u64); + let mut yLength: u64 = truncate!(y.cardinality(), u64); + if xLength == 0 { + _hresult = true; + return _hresult; + }; + if yLength == 0 { + _hresult = false; + return _hresult; + }; + let mut _hi0: u64 = xLength; + for i in integer_range(0, _hi0).map(Into::::into) { + if yLength <= i { + _hresult = false; + return _hresult; + } else { + if y.get(&int!((&i).clone())) < x.get(&int!((&i).clone())) { + _hresult = false; + return _hresult; + } else { + if x.get(&int!((&i).clone())) < y.get(&int!((&i).clone())) { + _hresult = true; + return _hresult; + } + } + } + } + _hresult = true; + return _hresult; } - /// dafny/StructuredEncryption/src/SortCanon.dfy(220,3) + /// dafny/StructuredEncryption/src/SortCanon.dfy(264,3) pub fn AuthSort(x: &Sequence>) -> Sequence> { - let mut ret: Sequence> = crate::implementation_from_dafny::_Seq_Compile::_MergeSort_Compile::_default::MergeSortBy::>(x, &(Arc::new(move |x0: &Arc,x1: &Arc| _default::AuthBelow(x0, x1)) as Arc _ + Sync + Send>)); - ret.clone() + let mut result: Sequence> = crate::implementation_from_dafny::_OptimizedMergeSort_Compile::_default::MergeSortNat::>(x, &(Arc::new(move |x0: &Arc,x1: &Arc| _default::AuthBelow(x0, x1)) as Arc _ + Sync + Send>)); + return result.clone(); } - /// dafny/StructuredEncryption/src/SortCanon.dfy(234,3) + /// dafny/StructuredEncryption/src/SortCanon.dfy(283,3) pub fn CryptoSort(x: &Sequence>) -> Sequence> { - let mut ret: Sequence> = crate::implementation_from_dafny::_Seq_Compile::_MergeSort_Compile::_default::MergeSortBy::>(x, &(Arc::new(move |x0: &Arc,x1: &Arc| _default::CryptoBelow(x0, x1)) as Arc _ + Sync + Send>)); - ret.clone() + let mut result: Sequence> = crate::implementation_from_dafny::_OptimizedMergeSort_Compile::_default::MergeSortNat::>(x, &(Arc::new(move |x0: &Arc,x1: &Arc| _default::CryptoBelow(x0, x1)) as Arc _ + Sync + Send>)); + return result.clone(); } } } @@ -129195,51 +130497,44 @@ pub mod _Sorting_Compile { pub mod _StandardLibrary_Compile { pub use ::dafny_runtime::DafnyType; pub use ::dafny_runtime::Sequence; - pub use ::dafny_runtime::seq; + pub use ::dafny_runtime::MaybePlacebo; + pub use ::dafny_runtime::truncate; pub use ::dafny_runtime::int; pub use ::dafny_runtime::DafnyTypeEq; + pub use ::dafny_runtime::seq; pub use ::std::sync::Arc; pub use crate::implementation_from_dafny::_Wrappers_Compile::Option; - pub use ::dafny_runtime::_System::nat; pub use crate::implementation_from_dafny::_Wrappers_Compile::Option::Some; pub use ::std::marker::Sync; pub use ::std::marker::Send; pub use ::dafny_runtime::DafnyInt; + pub use ::dafny_runtime::_System::nat; pub use ::dafny_runtime::integer_range; pub use ::dafny_runtime::Zero; pub use ::dafny_runtime::Object; - pub use ::dafny_runtime::MaybePlacebo; pub use ::std::mem::MaybeUninit; pub use ::dafny_runtime::array; pub use ::dafny_runtime::DafnyUsize; pub use ::dafny_runtime::rd; pub use ::dafny_runtime::Set; - pub use ::dafny_runtime::set; pub struct _default {} impl _default { - /// ../submodules/MaterialProviders/StandardLibrary/src/StandardLibrary.dfy(16,3) + /// ../submodules/MaterialProviders/StandardLibrary/src/StandardLibrary.dfy(17,3) pub fn Join<_T: DafnyType>(ss: &Sequence>, joiner: &Sequence<_T>) -> Sequence<_T> { - let mut _accumulator: Sequence<_T> = seq![] as Sequence<_T>; - let mut _r0 = ss.clone(); - let mut _r1 = joiner.clone(); - 'TAIL_CALL_START: loop { - let ss = _r0; - let joiner = _r1; - if ss.cardinality() == int!(1) { - return _accumulator.concat(&ss.get(&int!(0))); - } else { - _accumulator = _accumulator.concat(&ss.get(&int!(0)).concat(&joiner)); - let mut _in0: Sequence> = ss.drop(&int!(1)); - let mut _in1: Sequence<_T> = joiner.clone(); - _r0 = _in0.clone(); - _r1 = _in1.clone(); - continue 'TAIL_CALL_START; - } - } - } - /// ../submodules/MaterialProviders/StandardLibrary/src/StandardLibrary.dfy(22,3) + let mut s = MaybePlacebo::>::new(); + let mut size: u64 = truncate!(ss.cardinality(), u64); + let mut result: Sequence<_T> = ss.get(&int!((&(size - 1)).clone())); + let mut i: u64 = size - 1; + while 0 < i { + i = i - 1; + result = ss.get(&int!((&i).clone())).concat(joiner).concat(&result); + }; + s = MaybePlacebo::from(result.clone()); + return s.read(); + } + /// ../submodules/MaterialProviders/StandardLibrary/src/StandardLibrary.dfy(37,3) pub fn Split<_T: DafnyTypeEq>(s: &Sequence<_T>, delim: &_T) -> Sequence> { let mut _accumulator: Sequence> = seq![] as Sequence>; let mut _r0 = s.clone(); @@ -129247,10 +130542,10 @@ pub mod _StandardLibrary_Compile { 'TAIL_CALL_START: loop { let s = _r0; let delim = _r1; - let mut i: Arc> = _default::FindIndexMatching::<_T>(&s, &delim, &int!(0)); + let mut i: Arc> = _default::FindIndexMatching::<_T>(&s, &delim, 0); if matches!((&i).as_ref(), Some{ .. }) { - _accumulator = _accumulator.concat(&seq![s.take(i.value())]); - let mut _in0: Sequence<_T> = s.drop(&(i.value().clone() + int!(1))); + _accumulator = _accumulator.concat(&seq![s.take(&int!(i.value().clone()))]); + let mut _in0: Sequence<_T> = s.drop(&int!((&crate::implementation_from_dafny::_StandardLibrary_Compile::_MemoryMath_Compile::_default::Add(i.value().clone(), 1)).clone())); let mut _in1: _T = delim.clone(); _r0 = _in0.clone(); _r1 = _in1.clone(); @@ -129260,31 +130555,31 @@ pub mod _StandardLibrary_Compile { } } } - /// ../submodules/MaterialProviders/StandardLibrary/src/StandardLibrary.dfy(35,3) + /// ../submodules/MaterialProviders/StandardLibrary/src/StandardLibrary.dfy(50,3) pub fn SplitOnce<_T: DafnyTypeEq>(s: &Sequence<_T>, delim: &_T) -> (Sequence<_T>, Sequence<_T>) { - let mut i: Arc> = _default::FindIndexMatching::<_T>(s, delim, &int!(0)); + let mut i: Arc> = _default::FindIndexMatching::<_T>(s, delim, 0); ( - s.take(i.value()), - s.drop(&(i.value().clone() + int!(1))) + s.take(&int!(i.value().clone())), + s.drop(&int!((&crate::implementation_from_dafny::_StandardLibrary_Compile::_MemoryMath_Compile::_default::Add(i.value().clone(), 1)).clone())) ) } - /// ../submodules/MaterialProviders/StandardLibrary/src/StandardLibrary.dfy(46,3) + /// ../submodules/MaterialProviders/StandardLibrary/src/StandardLibrary.dfy(61,3) pub fn _SplitOnce_q<_T: DafnyTypeEq>(s: &Sequence<_T>, delim: &_T) -> Arc, Sequence<_T>)>> { - let mut valueOrError0: Arc> = _default::FindIndexMatching::<_T>(s, delim, &int!(0)); + let mut valueOrError0: Arc> = _default::FindIndexMatching::<_T>(s, delim, 0); if valueOrError0.IsFailure() { valueOrError0.PropagateFailure::<(Sequence<_T>, Sequence<_T>)>() } else { - let mut i: nat = valueOrError0.Extract(); + let mut i: u64 = valueOrError0.Extract(); Arc::new(Option::<(Sequence<_T>, Sequence<_T>)>::Some { value: ( - s.take(&i), - s.drop(&(i.clone() + int!(1))) + s.take(&int!((&i).clone())), + s.drop(&int!((&crate::implementation_from_dafny::_StandardLibrary_Compile::_MemoryMath_Compile::_default::Add(i, 1)).clone())) ) }) } } - /// ../submodules/MaterialProviders/StandardLibrary/src/StandardLibrary.dfy(95,3) - pub fn FindIndexMatching<_T: DafnyTypeEq>(s: &Sequence<_T>, c: &_T, i: &nat) -> Arc> { + /// ../submodules/MaterialProviders/StandardLibrary/src/StandardLibrary.dfy(111,3) + pub fn FindIndexMatching<_T: DafnyTypeEq>(s: &Sequence<_T>, c: &_T, i: u64) -> Arc> { _default::FindIndex::<_T>(s, { let c: _T = c.clone(); &({ @@ -129295,63 +130590,49 @@ pub mod _StandardLibrary_Compile { }) }, i) } - /// ../submodules/MaterialProviders/StandardLibrary/src/StandardLibrary.dfy(104,3) - pub fn FindIndex<_T: DafnyType>(s: &Sequence<_T>, f: &Arc bool + Sync + Send>, i: &nat) -> Arc> { + /// ../submodules/MaterialProviders/StandardLibrary/src/StandardLibrary.dfy(120,3) + pub fn FindIndex<_T: DafnyType>(s: &Sequence<_T>, f: &Arc bool + Sync + Send>, i: u64) -> Arc> { let mut _r0 = s.clone(); let mut _r1 = f.clone(); - let mut _r2 = i.clone(); + let mut _r2 = i; 'TAIL_CALL_START: loop { let s = _r0; let f = _r1; let i = _r2; - if i.clone() == s.cardinality() { - return Arc::new(Option::::None {}); + if i == truncate!(s.cardinality(), u64) { + return Arc::new(Option::::None {}); } else { - if (&f)(&s.get(&i)) { - return Arc::new(Option::::Some { - value: i.clone() + if (&f)(&s.get(&int!((&i).clone()))) { + return Arc::new(Option::::Some { + value: i }); } else { let mut _in0: Sequence<_T> = s.clone(); let mut _in1: Arc bool + Sync + Send> = f.clone(); - let mut _in2: DafnyInt = i.clone() + int!(1); + let mut _in2: u64 = i + 1; _r0 = _in0.clone(); _r1 = _in1.clone(); - _r2 = _in2.clone(); + _r2 = _in2; continue 'TAIL_CALL_START; } } } } - /// ../submodules/MaterialProviders/StandardLibrary/src/StandardLibrary.dfy(115,3) + /// ../submodules/MaterialProviders/StandardLibrary/src/StandardLibrary.dfy(132,3) pub fn Filter<_T: DafnyType>(s: &Sequence<_T>, f: &Arc bool + Sync + Send>) -> Sequence<_T> { - let mut _accumulator: Sequence<_T> = seq![] as Sequence<_T>; - let mut _r0 = s.clone(); - let mut _r1 = f.clone(); - 'TAIL_CALL_START: loop { - let s = _r0; - let f = _r1; - if s.cardinality() == int!(0) { - return _accumulator.concat(&(seq![] as Sequence<_T>)); - } else { - if (&f)(&s.get(&int!(0))) { - _accumulator = _accumulator.concat(&seq![s.get(&int!(0))]); - let mut _in0: Sequence<_T> = s.drop(&int!(1)); - let mut _in1: Arc bool + Sync + Send> = f.clone(); - _r0 = _in0.clone(); - _r1 = _in1.clone(); - continue 'TAIL_CALL_START; - } else { - let mut _in2: Sequence<_T> = s.drop(&int!(1)); - let mut _in3: Arc bool + Sync + Send> = f.clone(); - _r0 = _in2.clone(); - _r1 = _in3.clone(); - continue 'TAIL_CALL_START; - } + let mut res = MaybePlacebo::>::new(); + let mut result: Sequence<_T> = seq![] as Sequence<_T>; + let mut i: u64 = truncate!(s.cardinality(), u64); + while 0 < i { + i = i - 1; + if f(&s.get(&int!((&i).clone()))) { + result = seq![s.get(&int!((&i).clone()))].concat(&result); } - } + }; + res = MaybePlacebo::from(result.clone()); + return res.read(); } - /// ../submodules/MaterialProviders/StandardLibrary/src/StandardLibrary.dfy(151,3) + /// ../submodules/MaterialProviders/StandardLibrary/src/StandardLibrary.dfy(183,3) pub fn Min(a: &DafnyInt, b: &DafnyInt) -> DafnyInt { if a.clone() < b.clone() { a.clone() @@ -129359,7 +130640,7 @@ pub mod _StandardLibrary_Compile { b.clone() } } - /// ../submodules/MaterialProviders/StandardLibrary/src/StandardLibrary.dfy(155,3) + /// ../submodules/MaterialProviders/StandardLibrary/src/StandardLibrary.dfy(188,3) pub fn Fill<_T: DafnyType>(value: &_T, n: &nat) -> Sequence<_T> { { let _initializer = { @@ -129375,7 +130656,7 @@ pub mod _StandardLibrary_Compile { } } /// "Fresh" expressions require editing memory - /// ../submodules/MaterialProviders/StandardLibrary/src/StandardLibrary.dfy(162,3) + /// ../submodules/MaterialProviders/StandardLibrary/src/StandardLibrary.dfy(195,3) pub fn SeqToArray<_T: DafnyType>(s: &Sequence<_T>) -> Object<[_T]> { let mut a = MaybePlacebo::>::new(); let mut _init0: Arc _T + Sync + Send> = { @@ -129397,7 +130678,7 @@ pub mod _StandardLibrary_Compile { a = MaybePlacebo::from(array::construct_object(_nw0.clone())); return a.read(); } - /// ../submodules/MaterialProviders/StandardLibrary/src/StandardLibrary.dfy(191,3) + /// ../submodules/MaterialProviders/StandardLibrary/src/StandardLibrary.dfy(226,3) pub fn LexicographicLessOrEqual<_T: DafnyTypeEq>(a: &Sequence<_T>, b: &Sequence<_T>, less: &Arc bool + Sync + Send>) -> bool { integer_range(int!(0), a.cardinality() + int!(1)).any(({ let mut a = a.clone(); @@ -129409,7 +130690,7 @@ pub mod _StandardLibrary_Compile { }) }).as_ref()) } - /// ../submodules/MaterialProviders/StandardLibrary/src/StandardLibrary.dfy(195,3) + /// ../submodules/MaterialProviders/StandardLibrary/src/StandardLibrary.dfy(230,3) pub fn LexicographicLessOrEqualAux<_T: DafnyTypeEq>(a: &Sequence<_T>, b: &Sequence<_T>, less: &Arc bool + Sync + Send>, lengthOfCommonPrefix: &nat) -> bool { lengthOfCommonPrefix.clone() <= b.cardinality() && integer_range(int!(0), lengthOfCommonPrefix.clone()).all(({ let mut lengthOfCommonPrefix = lengthOfCommonPrefix.clone(); @@ -129421,39 +130702,7 @@ pub mod _StandardLibrary_Compile { }) }).as_ref()) && (lengthOfCommonPrefix.clone() == a.cardinality() || lengthOfCommonPrefix.clone() < b.cardinality() && less(&a.get(lengthOfCommonPrefix), &b.get(lengthOfCommonPrefix))) } - /// ../submodules/MaterialProviders/StandardLibrary/src/StandardLibrary.dfy(338,3) - pub fn SetToOrderedSequence<_T: DafnyTypeEq>(s: &Set>, less: &Arc bool + Sync + Send>) -> Sequence> { - let mut _accumulator: Sequence> = seq![] as Sequence>; - let mut _r0 = s.clone(); - let mut _r1 = less.clone(); - 'TAIL_CALL_START: loop { - let s = _r0; - let less = _r1; - if s.clone() == set!{} { - return _accumulator.concat(&(seq![] as Sequence>)); - } else { - return (&({ - let mut s = s.clone(); - let mut less = less.clone(); - Arc::new(move |__let_dummy_57: &DafnyInt| -> Sequence>{ - let mut a = MaybePlacebo::>::new(); - 'label_goto__ASSIGN_SUCH_THAT_0: loop { - for __assign_such_that_0 in (&s).iter().cloned() { - a = MaybePlacebo::from(__assign_such_that_0.clone()); - if s.contains(&a.read()) && _default::IsMinimum::<_T>(&a.read(), &s, &less) { - break 'label_goto__ASSIGN_SUCH_THAT_0; - } - } - panic!("Halt"); - break; - }; - seq![a.read()].concat(&_default::SetToOrderedSequence::<_T>(&s.subtract(&set!{a.read()}), &less)) - }) - }))(&int!(0)); - } - } - } - /// ../submodules/MaterialProviders/StandardLibrary/src/StandardLibrary.dfy(373,3) + /// ../submodules/MaterialProviders/StandardLibrary/src/StandardLibrary.dfy(409,3) pub fn IsMinimum<_T: DafnyTypeEq>(a: &Sequence<_T>, s: &Set>, less: &Arc bool + Sync + Send>) -> bool { s.contains(a) && s.iter().all(({ let mut a = a.clone(); @@ -129467,30 +130716,108 @@ pub mod _StandardLibrary_Compile { } } - /// ../submodules/MaterialProviders/StandardLibrary/src/Sequence.dfy(6,1) + /// ../submodules/MaterialProviders/StandardLibrary/src/MemoryMath.dfy(12,1) + pub mod _MemoryMath_Compile { + pub struct _default {} + + impl _default { + /// ../submodules/MaterialProviders/StandardLibrary/src/MemoryMath.dfy(60,3) + pub fn Add(x: u64, y: u64) -> u64 { + x + y + } + /// ../submodules/MaterialProviders/StandardLibrary/src/MemoryMath.dfy(67,3) + pub fn Add3(x: u64, y: u64, z: u64) -> u64 { + x + y + z + } + /// ../submodules/MaterialProviders/StandardLibrary/src/MemoryMath.dfy(74,3) + pub fn Add4(w: u64, x: u64, y: u64, z: u64) -> u64 { + w + x + y + z + } + } + } + + /// ../submodules/MaterialProviders/StandardLibrary/src/Sequence.dfy(7,1) pub mod _Sequence_Compile { - pub use ::dafny_runtime::DafnyTypeEq; + pub use ::dafny_runtime::DafnyType; + pub use ::std::sync::Arc; + pub use crate::implementation_from_dafny::_Wrappers_Compile::Result; + pub use ::std::marker::Sync; + pub use ::std::marker::Send; pub use ::dafny_runtime::Sequence; - pub use ::dafny_runtime::_System::nat; pub use ::dafny_runtime::truncate; + pub use ::dafny_runtime::int; + pub use ::dafny_runtime::seq; + pub use ::dafny_runtime::DafnyTypeEq; + pub use ::dafny_runtime::_System::nat; pub use crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::seq64; pub use ::std::default::Default; pub use ::dafny_runtime::integer_range; pub use ::std::convert::Into; - pub use ::dafny_runtime::int; pub struct _default {} impl _default { - /// ../submodules/MaterialProviders/StandardLibrary/src/Sequence.dfy(10,3) - pub fn SequenceEqualNat<_T: DafnyTypeEq>(seq1: &Sequence<_T>, seq2: &Sequence<_T>, start1: &nat, start2: &nat, size: &nat) -> bool { - if crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default::UINT64_MAX_LIMIT() < seq1.cardinality() || crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default::UINT64_MAX_LIMIT() < seq2.cardinality() { - seq1.slice(start1, &(start1.clone() + size.clone())) == seq2.slice(start2, &(start2.clone() + size.clone())) - } else { - crate::implementation_from_dafny::_StandardLibrary_Compile::_Sequence_Compile::_default::SequenceEqual::<_T>(seq1, seq2, truncate!(start1.clone(), u64), truncate!(start2.clone(), u64), truncate!(size.clone(), u64)) + /// ../submodules/MaterialProviders/StandardLibrary/src/Sequence.dfy(14,3) + pub fn MapWithResult<_T: DafnyType, _R: DafnyType, _E: DafnyType>(f: &Arc Arc> + Sync + Send>, xs: &Sequence<_T>, pos: u64, acc: &Sequence<_R>) -> Arc, _E>> { + let mut _r0 = f.clone(); + let mut _r1 = xs.clone(); + let mut _r2 = pos; + let mut _r3 = acc.clone(); + 'TAIL_CALL_START: loop { + let f = _r0; + let xs = _r1; + let pos = _r2; + let acc = _r3; + if truncate!(xs.cardinality(), u64) == pos { + return Arc::new(Result::, _E>::Success { + value: acc.clone() + }); + } else { + let mut valueOrError0: Arc> = (&f)(&xs.get(&int!((&pos).clone()))); + if valueOrError0.IsFailure() { + return valueOrError0.PropagateFailure::>(); + } else { + let mut head: _R = valueOrError0.Extract(); + let mut _in0: Arc Arc> + Sync + Send> = f.clone(); + let mut _in1: Sequence<_T> = xs.clone(); + let mut _in2: u64 = pos + truncate!(int!(1), u64); + let mut _in3: Sequence<_R> = acc.concat(&seq![head.clone()]); + _r0 = _in0.clone(); + _r1 = _in1.clone(); + _r2 = _in2; + _r3 = _in3.clone(); + continue 'TAIL_CALL_START; + } + } + } + } + /// ../submodules/MaterialProviders/StandardLibrary/src/Sequence.dfy(42,3) + pub fn Flatten<_T: DafnyType>(xs: &Sequence>, pos: u64, acc: &Sequence<_T>) -> Sequence<_T> { + let mut _r0 = xs.clone(); + let mut _r1 = pos; + let mut _r2 = acc.clone(); + 'TAIL_CALL_START: loop { + let xs = _r0; + let pos = _r1; + let acc = _r2; + if truncate!(xs.cardinality(), u64) == pos { + return acc.clone(); + } else { + let mut _in0: Sequence> = xs.clone(); + let mut _in1: u64 = pos + truncate!(int!(1), u64); + let mut _in2: Sequence<_T> = acc.concat(&xs.get(&int!((&pos).clone()))); + _r0 = _in0.clone(); + _r1 = _in1; + _r2 = _in2.clone(); + continue 'TAIL_CALL_START; + } } } - /// ../submodules/MaterialProviders/StandardLibrary/src/Sequence.dfy(22,3) + /// ../submodules/MaterialProviders/StandardLibrary/src/Sequence.dfy(53,3) + pub fn SequenceEqualNat<_T: DafnyTypeEq>(seq1: &Sequence<_T>, seq2: &Sequence<_T>, start1: &nat, start2: &nat, size: &nat) -> bool { + crate::implementation_from_dafny::_StandardLibrary_Compile::_Sequence_Compile::_default::SequenceEqual::<_T>(seq1, seq2, truncate!(start1.clone(), u64), truncate!(start2.clone(), u64), truncate!(size.clone(), u64)) + } + /// ../submodules/MaterialProviders/StandardLibrary/src/Sequence.dfy(63,3) pub fn SequenceEqual<_T: DafnyTypeEq>(seq1: &seq64<_T>, seq2: &seq64<_T>, start1: u64, start2: u64, size: u64) -> bool { let mut ret: bool = ::default(); let mut j: u64 = start2; @@ -129621,6 +130948,7 @@ pub mod _StandardLibrary_Compile { pub mod _UInt_Compile { pub use ::dafny_runtime::DafnyType; pub use ::dafny_runtime::Sequence; + pub use ::dafny_runtime::_System::nat; pub use ::dafny_runtime::truncate; pub use ::dafny_runtime::int; pub use ::dafny_runtime::seq; @@ -129646,17 +130974,53 @@ pub mod _StandardLibrary_Compile { s.cardinality() < crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default::UINT64_LIMIT() } /// ../submodules/MaterialProviders/StandardLibrary/src/UInt.dfy(44,3) + pub fn HasUint16Size(s: &nat) -> bool { + s.clone() < crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default::UINT16_LIMIT() + } + /// ../submodules/MaterialProviders/StandardLibrary/src/UInt.dfy(47,3) + pub fn HasUint32Size(s: &nat) -> bool { + s.clone() < crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default::UINT32_LIMIT() + } + /// ../submodules/MaterialProviders/StandardLibrary/src/UInt.dfy(50,3) + pub fn HasUint64Size(s: &nat) -> bool { + s.clone() < crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default::UINT64_LIMIT() + } + /// ../submodules/MaterialProviders/StandardLibrary/src/UInt.dfy(54,3) pub fn UInt16ToSeq(x: u16) -> Sequence { let mut b0: u8 = (x / truncate!(int!(256), u16)) as u8; let mut b1: u8 = (x % truncate!(int!(256), u16)) as u8; seq![b0, b1] } - /// ../submodules/MaterialProviders/StandardLibrary/src/UInt.dfy(53,3) + /// ../submodules/MaterialProviders/StandardLibrary/src/UInt.dfy(63,3) pub fn SeqToUInt16(s: &Sequence) -> u16 { - let mut x0: u16 = s.get(&int!(0)) as u16 * truncate!(int!(256), u16); - x0 + s.get(&int!(1)) as u16 + let mut x0: u16 = s.get(&int!((&truncate!((&int!(0)).clone(), u32)).clone())) as u16 * truncate!(int!(256), u16); + x0 + s.get(&int!((&truncate!((&int!(1)).clone(), u32)).clone())) as u16 + } + /// ../submodules/MaterialProviders/StandardLibrary/src/UInt.dfy(72,3) + pub fn SeqPosToUInt16(s: &Sequence, pos: u64) -> u16 { + let mut x0: u16 = s.get(&int!((&pos).clone())) as u16 * truncate!(int!(256), u16); + x0 + s.get(&int!((&(pos + truncate!(int!(1), u64))).clone())) as u16 + } + /// ../submodules/MaterialProviders/StandardLibrary/src/UInt.dfy(82,3) + pub fn SeqPosToUInt32(s: &Sequence, pos: u64) -> u32 { + let mut x0: u32 = s.get(&int!((&pos).clone())) as u32 * truncate!(int!(b"16777216"), u32); + let mut x1: u32 = x0 + s.get(&int!((&(pos + truncate!(int!(1), u64))).clone())) as u32 * truncate!(int!(b"65536"), u32); + let mut x2: u32 = x1 + s.get(&int!((&(pos + truncate!(int!(2), u64))).clone())) as u32 * truncate!(int!(256), u32); + x2 + s.get(&int!((&(pos + truncate!(int!(3), u64))).clone())) as u32 + } + /// ../submodules/MaterialProviders/StandardLibrary/src/UInt.dfy(93,3) + pub fn SeqPosToUInt64(s: &Sequence, pos: u64) -> u64 { + let mut x0: u64 = s.get(&int!((&pos).clone())) as u64 * truncate!(int!(b"72057594037927936"), u64); + let mut x1: u64 = x0 + s.get(&int!((&(pos + truncate!(int!(1), u64))).clone())) as u64 * truncate!(int!(b"281474976710656"), u64); + let mut x2: u64 = x1 + s.get(&int!((&(pos + truncate!(int!(2), u64))).clone())) as u64 * truncate!(int!(b"1099511627776"), u64); + let mut x3: u64 = x2 + s.get(&int!((&(pos + truncate!(int!(3), u64))).clone())) as u64 * truncate!(int!(b"4294967296"), u64); + let mut x4: u64 = x3 + s.get(&int!((&(pos + truncate!(int!(4), u64))).clone())) as u64 * truncate!(int!(b"16777216"), u64); + let mut x5: u64 = x4 + s.get(&int!((&(pos + truncate!(int!(5), u64))).clone())) as u64 * truncate!(int!(b"65536"), u64); + let mut x6: u64 = x5 + s.get(&int!((&(pos + truncate!(int!(6), u64))).clone())) as u64 * truncate!(int!(256), u64); + let mut x: u64 = x6 + s.get(&int!((&(pos + truncate!(int!(7), u64))).clone())) as u64; + x } - /// ../submodules/MaterialProviders/StandardLibrary/src/UInt.dfy(71,3) + /// ../submodules/MaterialProviders/StandardLibrary/src/UInt.dfy(140,3) pub fn UInt32ToSeq(x: u32) -> Sequence { let mut b0: u8 = (x / truncate!(int!(b"16777216"), u32)) as u8; let mut x0: u32 = x - b0 as u32 * truncate!(int!(b"16777216"), u32); @@ -129666,14 +131030,14 @@ pub mod _StandardLibrary_Compile { let mut b3: u8 = (x1 % truncate!(int!(256), u32)) as u8; seq![b0, b1, b2, b3] } - /// ../submodules/MaterialProviders/StandardLibrary/src/UInt.dfy(86,3) + /// ../submodules/MaterialProviders/StandardLibrary/src/UInt.dfy(155,3) pub fn SeqToUInt32(s: &Sequence) -> u32 { - let mut x0: u32 = s.get(&int!(0)) as u32 * truncate!(int!(b"16777216"), u32); - let mut x1: u32 = x0 + s.get(&int!(1)) as u32 * truncate!(int!(b"65536"), u32); - let mut x2: u32 = x1 + s.get(&int!(2)) as u32 * truncate!(int!(256), u32); - x2 + s.get(&int!(3)) as u32 + let mut x0: u32 = s.get(&int!((&truncate!((&int!(0)).clone(), u32)).clone())) as u32 * truncate!(int!(b"16777216"), u32); + let mut x1: u32 = x0 + s.get(&int!((&truncate!((&int!(1)).clone(), u32)).clone())) as u32 * truncate!(int!(b"65536"), u32); + let mut x2: u32 = x1 + s.get(&int!((&truncate!((&int!(2)).clone(), u32)).clone())) as u32 * truncate!(int!(256), u32); + x2 + s.get(&int!((&truncate!((&int!(3)).clone(), u32)).clone())) as u32 } - /// ../submodules/MaterialProviders/StandardLibrary/src/UInt.dfy(105,3) + /// ../submodules/MaterialProviders/StandardLibrary/src/UInt.dfy(174,3) pub fn UInt64ToSeq(x: u64) -> Sequence { let mut b0: u8 = (x / truncate!(int!(b"72057594037927936"), u64)) as u8; let mut x0: u64 = x - b0 as u64 * truncate!(int!(b"72057594037927936"), u64); @@ -129691,16 +131055,16 @@ pub mod _StandardLibrary_Compile { let mut b7: u8 = (x5 % truncate!(int!(256), u64)) as u8; seq![b0, b1, b2, b3, b4, b5, b6, b7] } - /// ../submodules/MaterialProviders/StandardLibrary/src/UInt.dfy(134,3) + /// ../submodules/MaterialProviders/StandardLibrary/src/UInt.dfy(203,3) pub fn SeqToUInt64(s: &Sequence) -> u64 { - let mut x0: u64 = s.get(&int!(0)) as u64 * truncate!(int!(b"72057594037927936"), u64); - let mut x1: u64 = x0 + s.get(&int!(1)) as u64 * truncate!(int!(b"281474976710656"), u64); - let mut x2: u64 = x1 + s.get(&int!(2)) as u64 * truncate!(int!(b"1099511627776"), u64); - let mut x3: u64 = x2 + s.get(&int!(3)) as u64 * truncate!(int!(b"4294967296"), u64); - let mut x4: u64 = x3 + s.get(&int!(4)) as u64 * truncate!(int!(b"16777216"), u64); - let mut x5: u64 = x4 + s.get(&int!(5)) as u64 * truncate!(int!(b"65536"), u64); - let mut x6: u64 = x5 + s.get(&int!(6)) as u64 * truncate!(int!(256), u64); - let mut x: u64 = x6 + s.get(&int!(7)) as u64; + let mut x0: u64 = s.get(&int!((&truncate!((&int!(0)).clone(), u32)).clone())) as u64 * truncate!(int!(b"72057594037927936"), u64); + let mut x1: u64 = x0 + s.get(&int!((&truncate!((&int!(1)).clone(), u32)).clone())) as u64 * truncate!(int!(b"281474976710656"), u64); + let mut x2: u64 = x1 + s.get(&int!((&truncate!((&int!(2)).clone(), u32)).clone())) as u64 * truncate!(int!(b"1099511627776"), u64); + let mut x3: u64 = x2 + s.get(&int!((&truncate!((&int!(3)).clone(), u32)).clone())) as u64 * truncate!(int!(b"4294967296"), u64); + let mut x4: u64 = x3 + s.get(&int!((&truncate!((&int!(4)).clone(), u32)).clone())) as u64 * truncate!(int!(b"16777216"), u64); + let mut x5: u64 = x4 + s.get(&int!((&truncate!((&int!(5)).clone(), u32)).clone())) as u64 * truncate!(int!(b"65536"), u64); + let mut x6: u64 = x5 + s.get(&int!((&truncate!((&int!(6)).clone(), u32)).clone())) as u64 * truncate!(int!(256), u64); + let mut x: u64 = x6 + s.get(&int!((&truncate!((&int!(7)).clone(), u32)).clone())) as u64; x } /// ../submodules/MaterialProviders/StandardLibrary/src/UInt.dfy(14,3) @@ -129822,8 +131186,8 @@ pub mod _StormTracker_Compile { pub use ::dafny_runtime::MaybePlacebo; pub use ::dafny_runtime::modify_field; pub use ::dafny_runtime::Set; - pub use ::dafny_runtime::DafnyInt; pub use ::dafny_runtime::integer_range; + pub use ::std::convert::Into; pub use crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::GetCacheEntryInput; pub use ::dafny_runtime::euclidian_division; pub use crate::implementation_from_dafny::_Wrappers_Compile::Result::Success; @@ -130021,7 +131385,7 @@ pub mod _StormTracker_Compile { inFlightTTL = cache.inFlightTTL().clone() as i64; }; let mut _nw0: Object = LocalCMC::_allocate_object(); - LocalCMC::_ctor(&_nw0, &int!(cache.entryCapacity().clone()), &int!((&cache.entryPruningTailSize().UnwrapOr(&truncate!((&int!(1)).clone(), i32))).clone())); + LocalCMC::_ctor(&_nw0, cache.entryCapacity().clone() as u64, cache.entryPruningTailSize().UnwrapOr(&truncate!((&int!(1)).clone(), i32)) as u64); update_field_mut_uninit_object!(this.clone(), wrapped, _set_wrapped, _nw0.clone()); let mut _nw1: Object, PositiveLong>> = MutableMap::, PositiveLong>::_allocate_object(); update_field_mut_uninit_object!(this.clone(), inFlight, _set_inFlight, _nw1.clone()); @@ -130099,11 +131463,11 @@ pub mod _StormTracker_Compile { let mut keys: Sequence>; let mut _out0: Sequence> = crate::implementation_from_dafny::SortedSets::_default::SetToSequence::>(&keySet); keys = _out0.clone(); - let mut _hi0: DafnyInt = keys.cardinality(); - for i in integer_range(int!(0), _hi0.clone()) { - let mut v: PositiveLong = MutableMapTrait::, PositiveLong>::Select(rd!(read_field!(self.inFlight)), &keys.get(&i)); + let mut _hi0: u64 = truncate!(keys.cardinality(), u64); + for i in integer_range(0, _hi0).map(Into::::into) { + let mut v: PositiveLong = MutableMapTrait::, PositiveLong>::Select(rd!(read_field!(self.inFlight)), &keys.get(&int!((&i).clone()))); if now >= self.AddLong(v, read_field!(self.inFlightTTL)) { - MutableMapTrait::, PositiveLong>::Remove(rd!(read_field!(self.inFlight)), &keys.get(&i)) + MutableMapTrait::, PositiveLong>::Remove(rd!(read_field!(self.inFlight)), &keys.get(&int!((&i).clone()))) } } return (); @@ -130230,7 +131594,7 @@ pub mod _StormTracker_Compile { UpcastObjectFn!(DynAny); } } -/// ../submodules/MaterialProviders/StandardLibrary/src/Streams.dfy(6,1) +/// ../submodules/MaterialProviders/StandardLibrary/src/Streams.dfy(7,1) pub mod _Streams_Compile { pub use ::dafny_runtime::DafnyType; pub use ::dafny_runtime::Object; @@ -130239,25 +131603,24 @@ pub mod _Streams_Compile { pub use ::dafny_runtime::update_field_uninit_object; pub use ::dafny_runtime::update_field_mut_uninit_object; pub use ::dafny_runtime::int; - pub use ::dafny_runtime::_System::nat; pub use ::dafny_runtime::read_field; pub use ::dafny_runtime::modify_field; pub use ::std::sync::Arc; pub use crate::implementation_from_dafny::_Wrappers_Compile::Result; pub use ::dafny_runtime::DafnyCharUTF16; + pub use ::dafny_runtime::truncate; pub use ::dafny_runtime::string_utf16_of; pub use ::dafny_runtime::UpcastObject; pub use ::dafny_runtime::DynAny; pub use ::dafny_runtime::UpcastObjectFn; pub use ::dafny_runtime::MaybePlacebo; pub use ::dafny_runtime::rd; - pub use crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default; pub use ::std::default::Default; pub use ::dafny_runtime::seq; - /// ../submodules/MaterialProviders/StandardLibrary/src/Streams.dfy(10,3) + /// ../submodules/MaterialProviders/StandardLibrary/src/Streams.dfy(12,3) pub struct SeqReader { - pub pos: ::dafny_runtime::Field, + pub pos: ::dafny_runtime::Field, pub __i_data: Sequence } @@ -130266,25 +131629,25 @@ pub mod _Streams_Compile { pub fn _allocate_object() -> Object { allocate_object::() } - /// ../submodules/MaterialProviders/StandardLibrary/src/Streams.dfy(23,5) + /// ../submodules/MaterialProviders/StandardLibrary/src/Streams.dfy(26,5) pub fn _ctor(this: &Object>, s: &Sequence) -> () { let mut _set_pos: bool = false; let mut _set___i_data: bool = false; update_field_uninit_object!(this.clone(), __i_data, _set___i_data, s.clone()); - update_field_mut_uninit_object!(this.clone(), pos, _set_pos, int!(0)); + update_field_mut_uninit_object!(this.clone(), pos, _set_pos, 0); return (); } - /// ../submodules/MaterialProviders/StandardLibrary/src/Streams.dfy(33,5) - pub fn ReadElements(&self, n: &nat) -> Sequence { - let mut elems: Sequence = self.data().clone().drop(&read_field!(self.pos)).take(n); - modify_field!(self.pos, read_field!(self.pos) + n.clone()); + /// ../submodules/MaterialProviders/StandardLibrary/src/Streams.dfy(36,5) + pub fn ReadElements(&self, n: u64) -> Sequence { + let mut elems: Sequence = self.data().clone().drop(&int!((&read_field!(self.pos)).clone())).take(&int!((&n).clone())); + modify_field!(self.pos, crate::implementation_from_dafny::_StandardLibrary_Compile::_MemoryMath_Compile::_default::Add(read_field!(self.pos), n)); elems = elems.clone(); return elems.clone(); } - /// ../submodules/MaterialProviders/StandardLibrary/src/Streams.dfy(47,5) - pub fn ReadExact(&self, n: &nat) -> Arc, Sequence>> { + /// ../submodules/MaterialProviders/StandardLibrary/src/Streams.dfy(50,5) + pub fn ReadExact(&self, n: u64) -> Arc, Sequence>> { let mut res: Arc, Sequence>>; - if self.data().clone().cardinality() - read_field!(self.pos) < n.clone() { + if truncate!(self.data().clone().cardinality(), u64) - read_field!(self.pos) < n { res = Arc::new(Result::, Sequence>::Failure { error: string_utf16_of("IO Error: Not enough elements left on stream.") }); @@ -130300,7 +131663,7 @@ pub mod _Streams_Compile { }; return res.clone(); } - /// ../submodules/MaterialProviders/StandardLibrary/src/Streams.dfy(12,5) + /// ../submodules/MaterialProviders/StandardLibrary/src/Streams.dfy(14,5) pub fn data(&self) -> Sequence { self.__i_data.clone() } @@ -130311,7 +131674,7 @@ pub mod _Streams_Compile { UpcastObjectFn!(DynAny); } - /// ../submodules/MaterialProviders/StandardLibrary/src/Streams.dfy(67,3) + /// ../submodules/MaterialProviders/StandardLibrary/src/Streams.dfy(71,3) pub struct ByteReader { pub __i_reader: Object> } @@ -130321,7 +131684,7 @@ pub mod _Streams_Compile { pub fn _allocate_object() -> Object { allocate_object::() } - /// ../submodules/MaterialProviders/StandardLibrary/src/Streams.dfy(79,5) + /// ../submodules/MaterialProviders/StandardLibrary/src/Streams.dfy(83,5) pub fn _ctor(this: &Object, s: &Sequence) -> () { let mut _set___i_reader: bool = false; let mut mr: Object>; @@ -130331,11 +131694,11 @@ pub mod _Streams_Compile { update_field_uninit_object!(this.clone(), __i_reader, _set___i_reader, mr.clone()); return (); } - /// ../submodules/MaterialProviders/StandardLibrary/src/Streams.dfy(89,5) + /// ../submodules/MaterialProviders/StandardLibrary/src/Streams.dfy(93,5) pub fn ReadByte(&self) -> Arc>> { let mut res = MaybePlacebo::>>>::new(); let mut valueOrError0: Arc, Sequence>>; - let mut _out0: Arc, Sequence>> = rd!(self.reader().clone()).ReadExact(&int!(1)); + let mut _out0: Arc, Sequence>> = rd!(self.reader().clone()).ReadExact(1); valueOrError0 = _out0.clone(); if valueOrError0.IsFailure() { res = MaybePlacebo::from(valueOrError0.PropagateFailure::()); @@ -130347,8 +131710,8 @@ pub mod _Streams_Compile { })); return res.read(); } - /// ../submodules/MaterialProviders/StandardLibrary/src/Streams.dfy(104,5) - pub fn ReadBytes(&self, n: &nat) -> Arc, Sequence>> { + /// ../submodules/MaterialProviders/StandardLibrary/src/Streams.dfy(108,5) + pub fn ReadBytes(&self, n: u64) -> Arc, Sequence>> { let mut res = MaybePlacebo::, Sequence>>>::new(); let mut valueOrError0: Arc, Sequence>>; let mut _out0: Arc, Sequence>> = rd!(self.reader().clone()).ReadExact(n); @@ -130363,69 +131726,70 @@ pub mod _Streams_Compile { })); return res.read(); } - /// ../submodules/MaterialProviders/StandardLibrary/src/Streams.dfy(121,5) + /// ../submodules/MaterialProviders/StandardLibrary/src/Streams.dfy(126,5) pub fn ReadUInt16(&self) -> Arc>> { let mut res = MaybePlacebo::>>>::new(); let mut valueOrError0: Arc, Sequence>>; - let mut _out0: Arc, Sequence>> = rd!(self.reader().clone()).ReadExact(&int!(2)); + let mut _out0: Arc, Sequence>> = rd!(self.reader().clone()).ReadExact(2); valueOrError0 = _out0.clone(); if valueOrError0.IsFailure() { res = MaybePlacebo::from(valueOrError0.PropagateFailure::()); return res.read(); }; let mut bytes: Sequence = valueOrError0.Extract(); - let mut n: u16 = _default::SeqToUInt16(&bytes); + let mut n: u16 = crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default::SeqToUInt16(&bytes); res = MaybePlacebo::from(Arc::new(Result::>::Success { value: n })); return res.read(); } - /// ../submodules/MaterialProviders/StandardLibrary/src/Streams.dfy(137,5) + /// ../submodules/MaterialProviders/StandardLibrary/src/Streams.dfy(142,5) pub fn ReadUInt32(&self) -> Arc>> { let mut res = MaybePlacebo::>>>::new(); let mut valueOrError0: Arc, Sequence>>; - let mut _out0: Arc, Sequence>> = rd!(self.reader().clone()).ReadExact(&int!(4)); + let mut _out0: Arc, Sequence>> = rd!(self.reader().clone()).ReadExact(4); valueOrError0 = _out0.clone(); if valueOrError0.IsFailure() { res = MaybePlacebo::from(valueOrError0.PropagateFailure::()); return res.read(); }; let mut bytes: Sequence = valueOrError0.Extract(); - let mut n: u32 = _default::SeqToUInt32(&bytes); + let mut n: u32 = crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default::SeqToUInt32(&bytes); res = MaybePlacebo::from(Arc::new(Result::>::Success { value: n })); return res.read(); } - /// ../submodules/MaterialProviders/StandardLibrary/src/Streams.dfy(153,5) + /// ../submodules/MaterialProviders/StandardLibrary/src/Streams.dfy(158,5) pub fn ReadUInt64(&self) -> Arc>> { let mut res = MaybePlacebo::>>>::new(); let mut valueOrError0: Arc, Sequence>>; - let mut _out0: Arc, Sequence>> = rd!(self.reader().clone()).ReadExact(&int!(8)); + let mut _out0: Arc, Sequence>> = rd!(self.reader().clone()).ReadExact(8); valueOrError0 = _out0.clone(); if valueOrError0.IsFailure() { res = MaybePlacebo::from(valueOrError0.PropagateFailure::()); return res.read(); }; let mut bytes: Sequence = valueOrError0.Extract(); - let mut n: u64 = _default::SeqToUInt64(&bytes); + let mut n: u64 = crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default::SeqToUInt64(&bytes); res = MaybePlacebo::from(Arc::new(Result::>::Success { value: n })); return res.read(); } - /// ../submodules/MaterialProviders/StandardLibrary/src/Streams.dfy(169,5) + /// ../submodules/MaterialProviders/StandardLibrary/src/Streams.dfy(174,5) pub fn IsDoneReading(&self) -> bool { let mut b: bool = ::default(); - b = rd!(self.reader().clone().clone()).data().clone().cardinality() == read_field!(rd!(self.reader().clone().clone()).pos); + b = truncate!(rd!(self.reader().clone().clone()).data().clone().cardinality(), u64) == read_field!(rd!(self.reader().clone().clone()).pos); return b; } - /// ../submodules/MaterialProviders/StandardLibrary/src/Streams.dfy(177,5) - pub fn GetSizeRead(&self) -> nat { - let mut n: nat = read_field!(rd!(self.reader().clone().clone()).pos); - return n.clone(); + /// ../submodules/MaterialProviders/StandardLibrary/src/Streams.dfy(183,5) + pub fn GetSizeRead(&self) -> u64 { + let mut n: u64 = ::default(); + n = read_field!(rd!(self.reader().clone().clone()).pos); + return n; } - /// ../submodules/MaterialProviders/StandardLibrary/src/Streams.dfy(69,5) + /// ../submodules/MaterialProviders/StandardLibrary/src/Streams.dfy(73,5) pub fn reader(&self) -> Object> { self.__i_reader.clone() } @@ -130436,7 +131800,7 @@ pub mod _Streams_Compile { UpcastObjectFn!(DynAny); } - /// ../submodules/MaterialProviders/StandardLibrary/src/Streams.dfy(186,3) + /// ../submodules/MaterialProviders/StandardLibrary/src/Streams.dfy(192,3) pub struct SeqWriter { pub data: ::dafny_runtime::Field> } @@ -130446,18 +131810,18 @@ pub mod _Streams_Compile { pub fn _allocate_object() -> Object { allocate_object::() } - /// ../submodules/MaterialProviders/StandardLibrary/src/Streams.dfy(197,5) + /// ../submodules/MaterialProviders/StandardLibrary/src/Streams.dfy(203,5) pub fn _ctor(this: &Object>) -> () { let mut _set_data: bool = false; update_field_mut_uninit_object!(this.clone(), data, _set_data, seq![] as Sequence); return (); } - /// ../submodules/MaterialProviders/StandardLibrary/src/Streams.dfy(205,5) - pub fn WriteElements(&self, elems: &Sequence) -> nat { - let mut n = MaybePlacebo::::new(); + /// ../submodules/MaterialProviders/StandardLibrary/src/Streams.dfy(211,5) + pub fn WriteElements(&self, elems: &Sequence) -> u64 { + let mut n: u64 = ::default(); modify_field!(self.data, read_field!(self.data).concat(elems)); - n = MaybePlacebo::from(elems.cardinality()); - return n.read(); + n = truncate!(elems.cardinality(), u64); + return n; } } @@ -130466,7 +131830,7 @@ pub mod _Streams_Compile { UpcastObjectFn!(DynAny); } - /// ../submodules/MaterialProviders/StandardLibrary/src/Streams.dfy(219,3) + /// ../submodules/MaterialProviders/StandardLibrary/src/Streams.dfy(226,3) pub struct ByteWriter { pub __i_writer: Object> } @@ -130476,7 +131840,7 @@ pub mod _Streams_Compile { pub fn _allocate_object() -> Object { allocate_object::() } - /// ../submodules/MaterialProviders/StandardLibrary/src/Streams.dfy(231,5) + /// ../submodules/MaterialProviders/StandardLibrary/src/Streams.dfy(238,5) pub fn _ctor(this: &Object) -> () { let mut _set___i_writer: bool = false; let mut mw: Object>; @@ -130486,43 +131850,43 @@ pub mod _Streams_Compile { update_field_uninit_object!(this.clone(), __i_writer, _set___i_writer, mw.clone()); return (); } - /// ../submodules/MaterialProviders/StandardLibrary/src/Streams.dfy(240,5) - pub fn WriteByte(&self, n: u8) -> nat { - let mut r: nat; - let mut _out0: nat = rd!(self.writer().clone()).WriteElements(&seq![n]); - r = _out0.clone(); - return r.clone(); - } - /// ../submodules/MaterialProviders/StandardLibrary/src/Streams.dfy(250,5) - pub fn WriteBytes(&self, s: &Sequence) -> nat { - let mut r: nat; - let mut _out0: nat = rd!(self.writer().clone()).WriteElements(s); - r = _out0.clone(); - return r.clone(); - } - /// ../submodules/MaterialProviders/StandardLibrary/src/Streams.dfy(260,5) - pub fn WriteUInt16(&self, n: u16) -> nat { - let mut r: nat; - let mut _out0: nat = rd!(self.writer().clone()).WriteElements(&_default::UInt16ToSeq(n)); - r = _out0.clone(); - return r.clone(); - } - /// ../submodules/MaterialProviders/StandardLibrary/src/Streams.dfy(270,5) - pub fn WriteUInt32(&self, n: u32) -> nat { - let mut r: nat; - let mut _out0: nat = rd!(self.writer().clone()).WriteElements(&_default::UInt32ToSeq(n)); - r = _out0.clone(); - return r.clone(); - } - /// ../submodules/MaterialProviders/StandardLibrary/src/Streams.dfy(280,5) + /// ../submodules/MaterialProviders/StandardLibrary/src/Streams.dfy(247,5) + pub fn WriteByte(&self, n: u8) -> u64 { + let mut r: u64 = ::default(); + let mut _out0: u64 = rd!(self.writer().clone()).WriteElements(&seq![n]); + r = _out0; + return r; + } + /// ../submodules/MaterialProviders/StandardLibrary/src/Streams.dfy(257,5) + pub fn WriteBytes(&self, s: &Sequence) -> u64 { + let mut r: u64 = ::default(); + let mut _out0: u64 = rd!(self.writer().clone()).WriteElements(s); + r = _out0; + return r; + } + /// ../submodules/MaterialProviders/StandardLibrary/src/Streams.dfy(267,5) + pub fn WriteUInt16(&self, n: u16) -> u64 { + let mut r: u64 = ::default(); + let mut _out0: u64 = rd!(self.writer().clone()).WriteElements(&crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default::UInt16ToSeq(n)); + r = _out0; + return r; + } + /// ../submodules/MaterialProviders/StandardLibrary/src/Streams.dfy(277,5) + pub fn WriteUInt32(&self, n: u32) -> u64 { + let mut r: u64 = ::default(); + let mut _out0: u64 = rd!(self.writer().clone()).WriteElements(&crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default::UInt32ToSeq(n)); + r = _out0; + return r; + } + /// ../submodules/MaterialProviders/StandardLibrary/src/Streams.dfy(287,5) pub fn GetDataWritten(&self) -> Sequence { read_field!(rd!(self.writer().clone().clone()).data) } - /// ../submodules/MaterialProviders/StandardLibrary/src/Streams.dfy(289,5) - pub fn GetSizeWritten(&self) -> nat { - read_field!(rd!(self.writer().clone().clone()).data).cardinality() + /// ../submodules/MaterialProviders/StandardLibrary/src/Streams.dfy(296,5) + pub fn GetSizeWritten(&self) -> u64 { + truncate!(read_field!(rd!(self.writer().clone().clone()).data).cardinality(), u64) } - /// ../submodules/MaterialProviders/StandardLibrary/src/Streams.dfy(221,5) + /// ../submodules/MaterialProviders/StandardLibrary/src/Streams.dfy(228,5) pub fn writer(&self) -> Object> { self.__i_writer.clone() } @@ -130556,8 +131920,9 @@ pub mod _StrictMultiKeyring_Compile { pub use ::dafny_runtime::rd; pub use crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::GetClientInput; pub use ::dafny_runtime::string_utf16_of; - pub use ::dafny_runtime::DafnyInt; + pub use ::dafny_runtime::truncate; pub use ::dafny_runtime::integer_range; + pub use ::std::convert::Into; pub use ::dafny_runtime::int; pub use crate::implementation_from_dafny::_Wrappers_Compile::Outcome; pub use crate::implementation_from_dafny::_Wrappers_Compile::Option::Some; @@ -130568,7 +131933,7 @@ pub mod _StrictMultiKeyring_Compile { pub struct _default {} impl _default { - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/StrictMultiKeyring.dfy(23,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographicMaterialProviders/src/Keyrings/AwsKms/StrictMultiKeyring.dfy(25,3) pub fn StrictMultiKeyring(generator: &Arc>>, awsKmsKeys: &Arc>>>, clientSupplier: &Object, grantTokens: &Arc>) -> Arc, Arc>> { let mut output = MaybePlacebo::, Arc>>>::new(); let mut allStrings: Sequence>; @@ -130625,9 +131990,9 @@ pub mod _StrictMultiKeyring_Compile { } else { let mut ___mcc_h2: Sequence> = _source2.value().clone(); let mut childIdentifiers: Sequence> = ___mcc_h2.clone(); - let mut _hi0: DafnyInt = childIdentifiers.cardinality(); - for index in integer_range(int!(0), _hi0.clone()) { - let mut childIdentifier: Sequence = childIdentifiers.get(&index); + let mut _hi0: u64 = truncate!(childIdentifiers.cardinality(), u64); + for index in integer_range(0, _hi0).map(Into::::into) { + let mut childIdentifier: Sequence = childIdentifiers.get(&int!((&index).clone())); let mut valueOrError3: Arc, Arc>> = crate::implementation_from_dafny::_AwsArnParsing_Compile::_default::IsAwsKmsIdentifierString(&childIdentifier).MapFailure::>(&(Arc::new(move |x0: &Sequence| crate::implementation_from_dafny::_AwsKmsUtils_Compile::_default::WrapStringToError(x0)) as Arc _ + Sync + Send>)); if valueOrError3.IsFailure() { output = MaybePlacebo::from(valueOrError3.PropagateFailure::>()); @@ -130652,7 +132017,7 @@ pub mod _StrictMultiKeyring_Compile { children = children.concat(&seq![keyring.clone()]); } }; - let mut valueOrError5: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(matches!((&generatorKeyring).as_ref(), Some{ .. }) || int!(0) < children.cardinality(), &Arc::new(Error::AwsCryptographicMaterialProvidersException { + let mut valueOrError5: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(matches!((&generatorKeyring).as_ref(), Some{ .. }) || 0 < truncate!(children.cardinality(), u64), &Arc::new(Error::AwsCryptographicMaterialProvidersException { message: string_utf16_of("generatorKeyring or child Keryings needed to create a multi keyring") })); if valueOrError5.IsFailure() { @@ -130675,7 +132040,7 @@ pub mod _Structure_Compile { pub use ::dafny_runtime::Map; pub use ::dafny_runtime::Sequence; pub use ::dafny_runtime::DafnyCharUTF16; - pub use ::dafny_runtime::int; + pub use ::dafny_runtime::truncate; pub use ::std::sync::Arc; pub use crate::implementation_from_dafny::software::amazon::cryptography::services::dynamodb::internaldafny::types::AttributeValue; pub use ::dafny_runtime::MapBuilder; @@ -130683,6 +132048,7 @@ pub mod _Structure_Compile { pub use crate::implementation_from_dafny::_Wrappers_Compile::Result; pub use crate::implementation_from_dafny::software::amazon::cryptography::keystore::internaldafny::types::BranchKeyMaterials; pub use crate::implementation_from_dafny::software::amazon::cryptography::keystore::internaldafny::types::Error; + pub use ::dafny_runtime::int; pub use crate::implementation_from_dafny::UTF8::ValidUTF8Bytes; pub use crate::implementation_from_dafny::software::amazon::cryptography::keystore::internaldafny::types::BeaconKeyMaterials; pub use crate::implementation_from_dafny::_Wrappers_Compile::Option; @@ -130699,9 +132065,9 @@ pub mod _Structure_Compile { pub struct _default {} impl _default { - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographyKeyStore/src/Structure.dfy(38,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographyKeyStore/src/Structure.dfy(39,3) pub fn _BranchKeyContext_q(m: &Map, Sequence>) -> bool { - m.contains(&_default::BRANCH_KEY_IDENTIFIER_FIELD()) && m.contains(&_default::TYPE_FIELD()) && m.contains(&_default::KEY_CREATE_TIME()) && m.contains(&_default::HIERARCHY_VERSION()) && m.contains(&_default::TABLE_FIELD()) && m.contains(&_default::KMS_FIELD()) && crate::implementation_from_dafny::software::amazon::cryptography::services::kms::internaldafny::types::_default::IsValid_KeyIdType(&m.get(&_default::KMS_FIELD())) && !m.keys().contains(&_default::BRANCH_KEY_FIELD()) && int!(0) < m.get(&_default::BRANCH_KEY_IDENTIFIER_FIELD()).cardinality() && int!(0) < m.get(&_default::TYPE_FIELD()).cardinality() && (&m.keys()).iter().all(({ + m.contains(&_default::BRANCH_KEY_IDENTIFIER_FIELD()) && m.contains(&_default::TYPE_FIELD()) && m.contains(&_default::KEY_CREATE_TIME()) && m.contains(&_default::HIERARCHY_VERSION()) && m.contains(&_default::TABLE_FIELD()) && m.contains(&_default::KMS_FIELD()) && crate::implementation_from_dafny::software::amazon::cryptography::services::kms::internaldafny::types::_default::IsValid_KeyIdType(&m.get(&_default::KMS_FIELD())) && !m.keys().contains(&_default::BRANCH_KEY_FIELD()) && 0 < truncate!(m.get(&_default::BRANCH_KEY_IDENTIFIER_FIELD()).cardinality(), u64) && 0 < truncate!(m.get(&_default::TYPE_FIELD()).cardinality(), u64) && (&m.keys()).iter().all(({ let mut m = m.clone(); Arc::new(move |__forall_var_0: &Sequence| -> bool{ let mut k: Sequence = __forall_var_0.clone(); @@ -130709,7 +132075,7 @@ pub mod _Structure_Compile { }) }).as_ref()) && m.contains(&_default::BRANCH_KEY_ACTIVE_VERSION_FIELD()) == (true && m.get(&_default::TYPE_FIELD()) == _default::BRANCH_KEY_ACTIVE_TYPE()) && (!m.contains(&_default::BRANCH_KEY_ACTIVE_VERSION_FIELD()) || true && _default::BRANCH_KEY_TYPE_PREFIX() < m.get(&_default::BRANCH_KEY_ACTIVE_VERSION_FIELD())) && !m.contains(&_default::BRANCH_KEY_ACTIVE_VERSION_FIELD()) == (m.get(&_default::TYPE_FIELD()) == _default::BEACON_KEY_TYPE_VALUE() || _default::BRANCH_KEY_TYPE_PREFIX() < m.get(&_default::TYPE_FIELD())) } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographyKeyStore/src/Structure.dfy(115,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographyKeyStore/src/Structure.dfy(116,3) pub fn ToAttributeMap(encryptionContext: &BranchKeyContext, encryptedKey: &Sequence) -> Map, Arc> { (&({ let mut encryptedKey = encryptedKey.clone(); @@ -130747,7 +132113,7 @@ pub mod _Structure_Compile { }) }))() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographyKeyStore/src/Structure.dfy(140,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographyKeyStore/src/Structure.dfy(141,3) pub fn ToBranchKeyContext(item: &Map, Arc>, logicalKeyStoreName: &Sequence) -> BranchKeyContext { (&({ let mut logicalKeyStoreName = logicalKeyStoreName.clone(); @@ -130775,14 +132141,14 @@ pub mod _Structure_Compile { /// = aws-encryption-sdk-specification/framework/branch-key-store.md#branch-key-materials-from-authenticated-encryption-context /// = type=implication /// # The `type` attribute MUST either be equal to `"branch:ACTIVE"` or start with `"branch:version:"`. - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographyKeyStore/src/Structure.dfy(161,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographyKeyStore/src/Structure.dfy(162,3) pub fn ToBranchKeyMaterials(encryptionContext: &BranchKeyContext, plaintextKey: &Sequence) -> Arc, Arc>> { let mut versionInformation: Sequence = if encryptionContext.contains(&_default::BRANCH_KEY_ACTIVE_VERSION_FIELD()) { encryptionContext.get(&_default::BRANCH_KEY_ACTIVE_VERSION_FIELD()) } else { encryptionContext.get(&_default::TYPE_FIELD()) }; - let mut branchKeyVersion: Sequence = versionInformation.drop(&_default::BRANCH_KEY_TYPE_PREFIX().cardinality()); + let mut branchKeyVersion: Sequence = versionInformation.drop(&int!((&truncate!((&_default::BRANCH_KEY_TYPE_PREFIX().cardinality()).clone(), u32)).clone())); let mut valueOrError0: Arc>> = crate::implementation_from_dafny::UTF8::_default::Encode(&branchKeyVersion).MapFailure::>(&({ Arc::new(move |e: &Sequence| -> Arc{ Arc::new(Error::KeyStoreException { @@ -130810,7 +132176,7 @@ pub mod _Structure_Compile { } } } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographyKeyStore/src/Structure.dfy(241,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographyKeyStore/src/Structure.dfy(242,3) pub fn ToBeaconKeyMaterials(encryptionContext: &BranchKeyContext, plaintextKey: &Sequence) -> Arc, Arc>> { let mut valueOrError0: Arc, Arc>> = _default::ExtractCustomEncryptionContext(encryptionContext); if valueOrError0.IsFailure() { @@ -130829,7 +132195,7 @@ pub mod _Structure_Compile { }) } } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographyKeyStore/src/Structure.dfy(257,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographyKeyStore/src/Structure.dfy(258,3) pub fn ExtractCustomEncryptionContext(encryptionContext: &BranchKeyContext) -> Arc, Arc>> { let mut encodedEncryptionContext: Set<(Arc>>, Arc>>)> = (&({ let mut encryptionContext = encryptionContext.clone(); @@ -130839,7 +132205,7 @@ pub mod _Structure_Compile { let mut k: Sequence = __compr_0.clone(); if encryptionContext.contains(&k) && _default::ENCRYPTION_CONTEXT_PREFIX() < k.clone() { _coll0.add(&(( - crate::implementation_from_dafny::UTF8::_default::Encode(&k.drop(&_default::ENCRYPTION_CONTEXT_PREFIX().cardinality())), + crate::implementation_from_dafny::UTF8::_default::Encode(&k.drop(&int!((&truncate!((&_default::ENCRYPTION_CONTEXT_PREFIX().cardinality()).clone(), u32)).clone()))), crate::implementation_from_dafny::UTF8::_default::Encode(&encryptionContext.get(&k)) ))) } @@ -130876,7 +132242,7 @@ pub mod _Structure_Compile { }) } } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographyKeyStore/src/Structure.dfy(304,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographyKeyStore/src/Structure.dfy(305,3) pub fn DecryptOnlyBranchKeyEncryptionContext(branchKeyId: &Sequence, branchKeyVersion: &Sequence, timestamp: &Sequence, logicalKeyStoreName: &Sequence, kmsKeyArn: &Sequence, customEncryptionContext: &Map, Sequence>) -> Map, Sequence> { map![(_default::BRANCH_KEY_IDENTIFIER_FIELD()) => (branchKeyId.clone()), (_default::TYPE_FIELD()) => (_default::BRANCH_KEY_TYPE_PREFIX().concat(branchKeyVersion)), (_default::KEY_CREATE_TIME()) => (timestamp.clone()), (_default::TABLE_FIELD()) => (logicalKeyStoreName.clone()), (_default::KMS_FIELD()) => (kmsKeyArn.clone()), (_default::HIERARCHY_VERSION()) => (string_utf16_of("1"))].merge(&(&({ let mut customEncryptionContext = customEncryptionContext.clone(); @@ -130892,21 +132258,21 @@ pub mod _Structure_Compile { }) }))()) } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographyKeyStore/src/Structure.dfy(348,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographyKeyStore/src/Structure.dfy(349,3) pub fn ActiveBranchKeyEncryptionContext(decryptOnlyEncryptionContext: &Map, Sequence>) -> Map, Sequence> { decryptOnlyEncryptionContext.merge(&map![(_default::BRANCH_KEY_ACTIVE_VERSION_FIELD()) => (decryptOnlyEncryptionContext.get(&_default::TYPE_FIELD())), (_default::TYPE_FIELD()) => (_default::BRANCH_KEY_ACTIVE_TYPE())]) } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographyKeyStore/src/Structure.dfy(364,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographyKeyStore/src/Structure.dfy(365,3) pub fn BeaconKeyEncryptionContext(decryptOnlyEncryptionContext: &Map, Sequence>) -> Map, Sequence> { decryptOnlyEncryptionContext.merge(&map![(_default::TYPE_FIELD()) => (_default::BEACON_KEY_TYPE_VALUE())]) } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographyKeyStore/src/Structure.dfy(379,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographyKeyStore/src/Structure.dfy(380,3) pub fn NewVersionFromActiveBranchKeyEncryptionContext(activeBranchKeyEncryptionContext: &Map, Sequence>, branchKeyVersion: &Sequence, timestamp: &Sequence) -> Map, Sequence> { activeBranchKeyEncryptionContext.merge(&map![(_default::TYPE_FIELD()) => (_default::BRANCH_KEY_TYPE_PREFIX().concat(branchKeyVersion)), (_default::KEY_CREATE_TIME()) => (timestamp.clone())]).subtract(&set!{_default::BRANCH_KEY_ACTIVE_VERSION_FIELD()}) } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographyKeyStore/src/Structure.dfy(409,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographyKeyStore/src/Structure.dfy(410,3) pub fn _BranchKeyItem_q(m: &Map, Arc>) -> bool { - m.contains(&_default::BRANCH_KEY_IDENTIFIER_FIELD()) && matches!((&m.get(&_default::BRANCH_KEY_IDENTIFIER_FIELD())).as_ref(), S{ .. }) && m.contains(&_default::TYPE_FIELD()) && matches!((&m.get(&_default::TYPE_FIELD())).as_ref(), S{ .. }) && m.contains(&_default::KEY_CREATE_TIME()) && matches!((&m.get(&_default::KEY_CREATE_TIME())).as_ref(), S{ .. }) && m.contains(&_default::HIERARCHY_VERSION()) && matches!((&m.get(&_default::HIERARCHY_VERSION())).as_ref(), N{ .. }) && !m.contains(&_default::TABLE_FIELD()) && m.contains(&_default::KMS_FIELD()) && matches!((&m.get(&_default::KMS_FIELD())).as_ref(), S{ .. }) && crate::implementation_from_dafny::software::amazon::cryptography::services::kms::internaldafny::types::_default::IsValid_KeyIdType(m.get(&_default::KMS_FIELD()).S()) && m.contains(&_default::BRANCH_KEY_FIELD()) && matches!((&m.get(&_default::BRANCH_KEY_FIELD())).as_ref(), B{ .. }) && int!(0) < m.get(&_default::BRANCH_KEY_IDENTIFIER_FIELD()).S().cardinality() && int!(0) < m.get(&_default::TYPE_FIELD()).S().cardinality() && (&m.keys().subtract(&set!{_default::BRANCH_KEY_FIELD(), _default::HIERARCHY_VERSION()})).iter().all(({ + m.contains(&_default::BRANCH_KEY_IDENTIFIER_FIELD()) && matches!((&m.get(&_default::BRANCH_KEY_IDENTIFIER_FIELD())).as_ref(), S{ .. }) && m.contains(&_default::TYPE_FIELD()) && matches!((&m.get(&_default::TYPE_FIELD())).as_ref(), S{ .. }) && m.contains(&_default::KEY_CREATE_TIME()) && matches!((&m.get(&_default::KEY_CREATE_TIME())).as_ref(), S{ .. }) && m.contains(&_default::HIERARCHY_VERSION()) && matches!((&m.get(&_default::HIERARCHY_VERSION())).as_ref(), N{ .. }) && !m.contains(&_default::TABLE_FIELD()) && m.contains(&_default::KMS_FIELD()) && matches!((&m.get(&_default::KMS_FIELD())).as_ref(), S{ .. }) && crate::implementation_from_dafny::software::amazon::cryptography::services::kms::internaldafny::types::_default::IsValid_KeyIdType(m.get(&_default::KMS_FIELD()).S()) && m.contains(&_default::BRANCH_KEY_FIELD()) && matches!((&m.get(&_default::BRANCH_KEY_FIELD())).as_ref(), B{ .. }) && 0 < truncate!(m.get(&_default::BRANCH_KEY_IDENTIFIER_FIELD()).S().cardinality(), u64) && 0 < truncate!(m.get(&_default::TYPE_FIELD()).S().cardinality(), u64) && (&m.keys().subtract(&set!{_default::BRANCH_KEY_FIELD(), _default::HIERARCHY_VERSION()})).iter().all(({ let mut m = m.clone(); Arc::new(move |__forall_var_0: &Sequence| -> bool{ let mut k: Sequence = __forall_var_0.clone(); @@ -130914,81 +132280,81 @@ pub mod _Structure_Compile { }) }).as_ref()) && m.contains(&_default::BRANCH_KEY_ACTIVE_VERSION_FIELD()) == (true && m.get(&_default::TYPE_FIELD()).S().clone() == _default::BRANCH_KEY_ACTIVE_TYPE()) && (!m.contains(&_default::BRANCH_KEY_ACTIVE_VERSION_FIELD()) || true && _default::BRANCH_KEY_TYPE_PREFIX() < m.get(&_default::BRANCH_KEY_ACTIVE_VERSION_FIELD()).S().clone()) && !m.contains(&_default::BRANCH_KEY_ACTIVE_VERSION_FIELD()) == (m.get(&_default::TYPE_FIELD()).S().clone() == _default::BEACON_KEY_TYPE_VALUE() || _default::BRANCH_KEY_TYPE_PREFIX() < m.get(&_default::TYPE_FIELD()).S().clone()) && crate::implementation_from_dafny::software::amazon::cryptography::services::kms::internaldafny::types::_default::IsValid_CiphertextType(m.get(&_default::BRANCH_KEY_FIELD()).B()) } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographyKeyStore/src/Structure.dfy(436,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographyKeyStore/src/Structure.dfy(437,3) pub fn _ActiveBranchKeyItem_q(m: &Map, Arc>) -> bool { _default::_BranchKeyItem_q(m) && m.get(&_default::TYPE_FIELD()).S().clone() == _default::BRANCH_KEY_ACTIVE_TYPE() && m.contains(&_default::BRANCH_KEY_ACTIVE_VERSION_FIELD()) && matches!((&m.get(&_default::BRANCH_KEY_ACTIVE_VERSION_FIELD())).as_ref(), S{ .. }) && _default::BRANCH_KEY_TYPE_PREFIX() < m.get(&_default::BRANCH_KEY_ACTIVE_VERSION_FIELD()).S().clone() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographyKeyStore/src/Structure.dfy(444,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographyKeyStore/src/Structure.dfy(445,3) pub fn _VersionBranchKeyItem_q(m: &Map, Arc>) -> bool { _default::_BranchKeyItem_q(m) && !m.contains(&_default::BRANCH_KEY_ACTIVE_VERSION_FIELD()) && _default::BRANCH_KEY_TYPE_PREFIX() < m.get(&_default::TYPE_FIELD()).S().clone() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographyKeyStore/src/Structure.dfy(451,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographyKeyStore/src/Structure.dfy(452,3) pub fn _BeaconKeyItem_q(m: &Map, Arc>) -> bool { _default::_BranchKeyItem_q(m) && !m.contains(&_default::BRANCH_KEY_ACTIVE_VERSION_FIELD()) && m.get(&_default::TYPE_FIELD()).S().clone() == _default::BEACON_KEY_TYPE_VALUE() } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographyKeyStore/src/Structure.dfy(17,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographyKeyStore/src/Structure.dfy(18,3) pub fn BRANCH_KEY_IDENTIFIER_FIELD() -> Sequence { string_utf16_of("branch-key-id") } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographyKeyStore/src/Structure.dfy(18,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographyKeyStore/src/Structure.dfy(19,3) pub fn TYPE_FIELD() -> Sequence { string_utf16_of("type") } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographyKeyStore/src/Structure.dfy(19,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographyKeyStore/src/Structure.dfy(20,3) pub fn KEY_CREATE_TIME() -> Sequence { string_utf16_of("create-time") } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographyKeyStore/src/Structure.dfy(20,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographyKeyStore/src/Structure.dfy(21,3) pub fn HIERARCHY_VERSION() -> Sequence { string_utf16_of("hierarchy-version") } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographyKeyStore/src/Structure.dfy(21,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographyKeyStore/src/Structure.dfy(22,3) pub fn TABLE_FIELD() -> Sequence { string_utf16_of("tablename") } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographyKeyStore/src/Structure.dfy(22,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographyKeyStore/src/Structure.dfy(23,3) pub fn KMS_FIELD() -> Sequence { string_utf16_of("kms-arn") } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographyKeyStore/src/Structure.dfy(24,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographyKeyStore/src/Structure.dfy(25,3) pub fn BRANCH_KEY_FIELD() -> Sequence { string_utf16_of("enc") } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographyKeyStore/src/Structure.dfy(25,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographyKeyStore/src/Structure.dfy(26,3) pub fn BRANCH_KEY_ACTIVE_VERSION_FIELD() -> Sequence { string_utf16_of("version") } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographyKeyStore/src/Structure.dfy(28,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographyKeyStore/src/Structure.dfy(29,3) pub fn BRANCH_KEY_ACTIVE_TYPE() -> Sequence { string_utf16_of("branch:ACTIVE") } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographyKeyStore/src/Structure.dfy(27,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographyKeyStore/src/Structure.dfy(28,3) pub fn BRANCH_KEY_TYPE_PREFIX() -> Sequence { string_utf16_of("branch:version:") } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographyKeyStore/src/Structure.dfy(29,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographyKeyStore/src/Structure.dfy(30,3) pub fn BEACON_KEY_TYPE_VALUE() -> Sequence { string_utf16_of("beacon:ACTIVE") } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographyKeyStore/src/Structure.dfy(30,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographyKeyStore/src/Structure.dfy(31,3) pub fn ENCRYPTION_CONTEXT_PREFIX() -> Sequence { string_utf16_of("aws-crypto-ec:") } } - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographyKeyStore/src/Structure.dfy(37,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographyKeyStore/src/Structure.dfy(38,3) pub type BranchKeyContext = Map, Sequence>; - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographyKeyStore/src/Structure.dfy(401,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographyKeyStore/src/Structure.dfy(402,3) pub type BranchKeyItem = Map, Arc>; - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographyKeyStore/src/Structure.dfy(435,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographyKeyStore/src/Structure.dfy(436,3) pub type ActiveBranchKeyItem = Map, Arc>; - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographyKeyStore/src/Structure.dfy(443,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographyKeyStore/src/Structure.dfy(444,3) pub type VersionBranchKeyItem = Map, Arc>; - /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographyKeyStore/src/Structure.dfy(450,3) + /// ../submodules/MaterialProviders/AwsCryptographicMaterialProviders/dafny/AwsCryptographyKeyStore/src/Structure.dfy(451,3) pub type BeaconKeyItem = Map, Arc>; } /// dafny/StructuredEncryption/test/StructuredDataTestFixtures.dfy(5,1) @@ -131102,10 +132468,8 @@ pub mod _StructuredEncryptionCrypt_Compile { pub use ::std::sync::Arc; pub use crate::implementation_from_dafny::_Wrappers_Compile::Result; pub use crate::implementation_from_dafny::_Wrappers_Compile::Outcome; - pub use ::dafny_runtime::int; pub use ::dafny_runtime::string_utf16_of; pub use crate::implementation_from_dafny::software::amazon::cryptography::primitives::internaldafny::types::OpaqueError; - pub use ::dafny_runtime::truncate; pub use ::dafny_runtime::seq; pub use ::dafny_runtime::Object; pub use crate::implementation_from_dafny::software::amazon::cryptography::primitives::internaldafny::AtomicPrimitivesClient; @@ -131120,8 +132484,10 @@ pub mod _StructuredEncryptionCrypt_Compile { pub use crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::CanonCryptoItem; pub use ::dafny_runtime::MaybePlacebo; pub use crate::implementation_from_dafny::_Canonize_Compile::EncryptionSelector; - pub use ::dafny_runtime::DafnyInt; + pub use ::dafny_runtime::truncate; pub use ::dafny_runtime::integer_range; + pub use ::std::convert::Into; + pub use ::dafny_runtime::int; pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::structuredencryption::internaldafny::types::CryptoAction; pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::structuredencryption::internaldafny::types::StructuredDataTerminal; pub use crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::Nonce; @@ -131133,13 +132499,13 @@ pub mod _StructuredEncryptionCrypt_Compile { pub struct _default {} impl _default { - /// dafny/StructuredEncryption/src/Crypt.dfy(32,3) + /// dafny/StructuredEncryption/src/Crypt.dfy(35,3) pub fn FieldKey(HKDFOutput: &Sequence, offset: u32) -> Arc, Arc>> { - let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(int!(offset) * int!(3) < crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default::UINT32_LIMIT(), &crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::E(&string_utf16_of("Too many encrypted fields."))); + let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(offset < _default::ONE_THIRD_MAX_INT(), &crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::E(&string_utf16_of("Too many encrypted fields."))); if valueOrError0.IsFailure() { valueOrError0.PropagateFailure::>() } else { - let mut keyR: Arc, OpaqueError>> = crate::implementation_from_dafny::AesKdfCtr::_default::AesKdfCtrStream(&_default::FieldKeyNonce(offset * 3), HKDFOutput, truncate!(crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::KeySize() + crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::NonceSize(), u32)); + let mut keyR: Arc, OpaqueError>> = crate::implementation_from_dafny::AesKdfCtr::_default::AesKdfCtrStream(&_default::FieldKeyNonce(offset * 3), HKDFOutput, (crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::KeySize64() + crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::NonceSize64()) as u32); keyR.MapFailure::>(&({ Arc::new(move |e: &OpaqueError| -> Arc{ Arc::new(crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::structuredencryption::internaldafny::types::Error::AwsCryptographyPrimitives { @@ -131149,11 +132515,11 @@ pub mod _StructuredEncryptionCrypt_Compile { })) } } - /// dafny/StructuredEncryption/src/Crypt.dfy(52,3) + /// dafny/StructuredEncryption/src/Crypt.dfy(60,3) pub fn FieldKeyNonce(offset: u32) -> Sequence { - crate::implementation_from_dafny::UTF8::_default::EncodeAscii(&string_utf16_of("AwsDbeField")).concat(&seq![truncate!(crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::KeySize() + crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::NonceSize(), u8)]).concat(&crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default::UInt32ToSeq(offset)) + _default::AwsDbeField().concat(&seq![(crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::KeySize64() + crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::NonceSize64()) as u8]).concat(&crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default::UInt32ToSeq(offset)) } - /// dafny/StructuredEncryption/src/Crypt.dfy(77,3) + /// dafny/StructuredEncryption/src/Crypt.dfy(92,3) pub fn GetCommitKey(client: &Object, alg: &Arc, key: &Key, msgID: &MessageID) -> Arc>> { let mut ret: Arc>>; let mut commitKey: Arc, Arc>>; @@ -131174,7 +132540,7 @@ pub mod _StructuredEncryptionCrypt_Compile { })); return ret.clone(); } - /// dafny/StructuredEncryption/src/Crypt.dfy(175,3) + /// dafny/StructuredEncryption/src/Crypt.dfy(190,3) pub fn Encrypt(client: &Object, alg: &Arc, key: &Key, head: &Arc, data: &Sequence>) -> Arc>, Arc>> { let mut ret = MaybePlacebo::>, Arc>>>::new(); let mut valueOrError0: Arc>, Arc>>; @@ -131190,7 +132556,7 @@ pub mod _StructuredEncryptionCrypt_Compile { })); return ret.read(); } - /// dafny/StructuredEncryption/src/Crypt.dfy(248,3) + /// dafny/StructuredEncryption/src/Crypt.dfy(263,3) pub fn Decrypt(client: &Object, alg: &Arc, key: &Key, head: &Arc, data: &Sequence>) -> Arc>, Arc>> { let mut ret = MaybePlacebo::>, Arc>>>::new(); let mut valueOrError0: Arc>, Arc>>; @@ -131206,7 +132572,7 @@ pub mod _StructuredEncryptionCrypt_Compile { })); return ret.read(); } - /// dafny/StructuredEncryption/src/Crypt.dfy(290,3) + /// dafny/StructuredEncryption/src/Crypt.dfy(305,3) pub fn Crypt(mode: &Arc, client: &Object, alg: &Arc, key: &Key, head: &Arc, data: &Sequence>) -> Arc>, Arc>> { let mut ret = MaybePlacebo::>, Arc>>>::new(); let mut fieldRootKeyR: Arc, Arc>>; @@ -131243,23 +132609,23 @@ pub mod _StructuredEncryptionCrypt_Compile { })); return ret.read(); } - /// dafny/StructuredEncryption/src/Crypt.dfy(368,3) + /// dafny/StructuredEncryption/src/Crypt.dfy(383,3) pub fn CryptList(mode: &Arc, client: &Object, alg: &Arc, fieldRootKey: &Key, data: &Sequence>) -> Arc>, Arc>> { let mut ret = MaybePlacebo::>, Arc>>>::new(); let mut result: Sequence> = seq![] as Sequence>; let mut pos: u32 = 0; - let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(data.cardinality() < crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default::UINT32_LIMIT(), &crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::E(&string_utf16_of("Too many fields."))); + let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(truncate!(data.cardinality(), u64) < truncate!(crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default::UINT32_LIMIT(), u64), &crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::E(&string_utf16_of("Too many fields."))); if valueOrError0.IsFailure() { ret = MaybePlacebo::from(valueOrError0.PropagateFailure::>>()); return ret.read(); }; - let mut _hi0: DafnyInt = data.cardinality(); - for i in integer_range(int!(0), _hi0.clone()) { - if data.get(&i).action().clone() == Arc::new(CryptoAction::ENCRYPT_AND_SIGN {}) { + let mut _hi0: u64 = truncate!(data.cardinality(), u64); + for i in integer_range(0, _hi0).map(Into::::into) { + if data.get(&int!((&i).clone())).action().clone() == Arc::new(CryptoAction::ENCRYPT_AND_SIGN {}) { let mut newTerminal: Arc; if mode.clone() == Arc::new(EncryptionSelector::DoEncrypt {}) { let mut valueOrError1: Arc, Arc>>; - let mut _out0: Arc, Arc>> = _default::EncryptTerminal(client, alg, fieldRootKey, pos, data.get(&i).key(), data.get(&i).data()); + let mut _out0: Arc, Arc>> = _default::EncryptTerminal(client, alg, fieldRootKey, pos, data.get(&int!((&i).clone())).key(), data.get(&int!((&i).clone())).data()); valueOrError1 = _out0.clone(); if valueOrError1.IsFailure() { ret = MaybePlacebo::from(valueOrError1.PropagateFailure::>>()); @@ -131268,7 +132634,7 @@ pub mod _StructuredEncryptionCrypt_Compile { newTerminal = valueOrError1.Extract(); } else { let mut valueOrError2: Arc, Arc>>; - let mut _out1: Arc, Arc>> = _default::DecryptTerminal(client, alg, fieldRootKey, pos, data.get(&i).key(), data.get(&i).data()); + let mut _out1: Arc, Arc>> = _default::DecryptTerminal(client, alg, fieldRootKey, pos, data.get(&int!((&i).clone())).key(), data.get(&int!((&i).clone())).data()); valueOrError2 = _out1.clone(); if valueOrError2.IsFailure() { ret = MaybePlacebo::from(valueOrError2.PropagateFailure::>>()); @@ -131278,7 +132644,7 @@ pub mod _StructuredEncryptionCrypt_Compile { }; pos = pos + 1; let mut newItem: Arc; - let mut _dt__update__tmp_h0: Arc = data.get(&i); + let mut _dt__update__tmp_h0: Arc = data.get(&int!((&i).clone())); let mut _dt__update_hdata_h0: Arc = newTerminal.clone(); newItem = Arc::new(CanonCryptoItem::CanonCryptoItem { key: _dt__update__tmp_h0.key().clone(), @@ -131288,7 +132654,7 @@ pub mod _StructuredEncryptionCrypt_Compile { }); result = result.concat(&seq![newItem.clone()]); } else { - result = result.concat(&seq![data.get(&i)]); + result = result.concat(&seq![data.get(&int!((&i).clone()))]); } } ret = MaybePlacebo::from(Arc::new(Result::>, Arc>::Success { @@ -131296,7 +132662,7 @@ pub mod _StructuredEncryptionCrypt_Compile { })); return ret.read(); } - /// dafny/StructuredEncryption/src/Crypt.dfy(414,3) + /// dafny/StructuredEncryption/src/Crypt.dfy(430,3) pub fn EncryptTerminal(client: &Object, alg: &Arc, fieldRootKey: &Key, offset: u32, path: &Sequence, data: &Arc) -> Arc, Arc>> { let mut ret = MaybePlacebo::, Arc>>>::new(); let mut valueOrError0: Arc, Arc>> = _default::FieldKey(fieldRootKey, offset); @@ -131305,8 +132671,8 @@ pub mod _StructuredEncryptionCrypt_Compile { return ret.read(); }; let mut fieldKey: Sequence = valueOrError0.Extract(); - let mut cipherkey: Key = fieldKey.slice(&int!(0), &crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::KeySize()); - let mut nonce: Nonce = fieldKey.drop(&crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::KeySize()); + let mut cipherkey: Key = fieldKey.take(&int!((&crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::KeySize64()).clone())); + let mut nonce: Nonce = fieldKey.drop(&int!((&crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::KeySize64()).clone())); let mut value: Sequence = data.value().clone(); let mut encInput: Arc = Arc::new(AESEncryptInput::AESEncryptInput { encAlg: alg.encrypt().AES_GCM().clone(), @@ -131330,7 +132696,7 @@ pub mod _StructuredEncryptionCrypt_Compile { return ret.read(); }; let mut encOut: Arc = valueOrError1.Extract(); - let mut valueOrError2: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(encOut.authTag().cardinality() == crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::AuthTagSize(), &crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::E(&string_utf16_of("Auth Tag Wrong Size."))); + let mut valueOrError2: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(truncate!(encOut.authTag().cardinality(), u64) == crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::AuthTagSize64(), &crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::E(&string_utf16_of("Auth Tag Wrong Size."))); if valueOrError2.IsFailure() { ret = MaybePlacebo::from(valueOrError2.PropagateFailure::>()); return ret.read(); @@ -131340,7 +132706,7 @@ pub mod _StructuredEncryptionCrypt_Compile { })); return ret.read(); } - /// dafny/StructuredEncryption/src/Crypt.dfy(502,3) + /// dafny/StructuredEncryption/src/Crypt.dfy(518,3) pub fn DecryptTerminal(client: &Object, alg: &Arc, fieldRootKey: &Key, offset: u32, path: &Sequence, data: &Arc) -> Arc, Arc>> { let mut ret = MaybePlacebo::, Arc>>>::new(); let mut valueOrError0: Arc, Arc>> = _default::FieldKey(fieldRootKey, offset); @@ -131349,10 +132715,10 @@ pub mod _StructuredEncryptionCrypt_Compile { return ret.read(); }; let mut dataKey: Sequence = valueOrError0.Extract(); - let mut encryptionKey: Key = dataKey.slice(&int!(0), &crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::KeySize()); - let mut nonce: Nonce = dataKey.drop(&crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::KeySize()); + let mut encryptionKey: Key = dataKey.take(&int!((&crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::KeySize64()).clone())); + let mut nonce: Nonce = dataKey.drop(&int!((&crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::KeySize64()).clone())); let mut value: Sequence = data.value().clone(); - let mut valueOrError1: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::AuthTagSize() + int!(2) <= value.cardinality(), &crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::E(&string_utf16_of("cipherTxt too short."))); + let mut valueOrError1: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::AuthTagSize64() + 2 <= truncate!(value.cardinality(), u64), &crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::E(&string_utf16_of("cipherTxt too short."))); if valueOrError1.IsFailure() { ret = MaybePlacebo::from(valueOrError1.PropagateFailure::>()); return ret.read(); @@ -131360,8 +132726,8 @@ pub mod _StructuredEncryptionCrypt_Compile { let mut decInput: Arc = Arc::new(AESDecryptInput::AESDecryptInput { encAlg: alg.encrypt().AES_GCM().clone(), key: encryptionKey.clone(), - cipherTxt: value.slice(&crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::TYPEID_LEN(), &(value.cardinality() - crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::AuthTagSize())), - authTag: value.drop(&(value.cardinality() - crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::AuthTagSize())), + cipherTxt: value.slice(&int!((&crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::TYPEID_LEN64()).clone()), &int!((&(truncate!(value.cardinality(), u64) - crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::AuthTagSize64())).clone())), + authTag: value.drop(&int!((&(truncate!(value.cardinality(), u64) - crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::AuthTagSize64())).clone())), iv: nonce.clone(), aad: path.clone() }); @@ -131381,17 +132747,28 @@ pub mod _StructuredEncryptionCrypt_Compile { }; let mut decOut: Sequence = valueOrError2.Extract(); ret = MaybePlacebo::from(Arc::new(Result::, Arc>::Success { - value: crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::ValueToData(&decOut, &value.take(&crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::TYPEID_LEN())) + value: crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::ValueToData(&decOut, &value.take(&int!((&crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::TYPEID_LEN64()).clone()))) })); return ret.read(); } - /// dafny/StructuredEncryption/src/Crypt.dfy(73,3) + /// dafny/StructuredEncryption/src/Crypt.dfy(33,3) + pub fn ONE_THIRD_MAX_INT() -> u32 { + 1431655765 + } + /// dafny/StructuredEncryption/src/Crypt.dfy(55,3) + pub fn AwsDbeField() -> ValidUTF8Bytes { + let mut s: Sequence = seq![65, 119, 115, 68, 98, 101, 70, 105, 101, 108, 100]; + s.clone() + } + /// dafny/StructuredEncryption/src/Crypt.dfy(81,3) pub fn LABEL_COMMITMENT_KEY() -> ValidUTF8Bytes { - crate::implementation_from_dafny::UTF8::_default::EncodeAscii(&string_utf16_of("AWS_DBE_COMMIT_KEY")) + let mut s: Sequence = seq![65, 87, 83, 95, 68, 66, 69, 95, 67, 79, 77, 77, 73, 84, 95, 75, 69, 89]; + s.clone() } - /// dafny/StructuredEncryption/src/Crypt.dfy(74,3) + /// dafny/StructuredEncryption/src/Crypt.dfy(86,3) pub fn LABEL_ENCRYPTION_KEY() -> ValidUTF8Bytes { - crate::implementation_from_dafny::UTF8::_default::EncodeAscii(&string_utf16_of("AWS_DBE_DERIVE_KEY")) + let mut s: Sequence = seq![65, 87, 83, 95, 68, 66, 69, 95, 68, 69, 82, 73, 86, 69, 95, 75, 69, 89]; + s.clone() } } } @@ -131400,30 +132777,32 @@ pub mod _StructuredEncryptionFooter_Compile { pub use ::std::sync::Arc; pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::structuredencryption::internaldafny::types::StructuredDataTerminal; pub use ::dafny_runtime::Sequence; + pub use ::dafny_runtime::truncate; pub use crate::implementation_from_dafny::_Wrappers_Compile::Outcome; - pub use ::dafny_runtime::int; pub use ::dafny_runtime::string_utf16_of; - pub use ::dafny_runtime::truncate; pub use crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::CanonCryptoItem; pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::structuredencryption::internaldafny::types::CryptoAction; - pub use crate::implementation_from_dafny::_StructuredEncryptionHeader_Compile::CMPEncryptionContext; - pub use ::dafny_runtime::seq; pub use ::dafny_runtime::MaybePlacebo; + pub use ::dafny_runtime::seq; + pub use ::dafny_runtime::int; + pub use crate::implementation_from_dafny::_Wrappers_Compile::Result::Failure; + pub use crate::implementation_from_dafny::_StructuredEncryptionHeader_Compile::CMPEncryptionContext; pub use crate::implementation_from_dafny::software::amazon::cryptography::primitives::internaldafny::types::DigestInput; pub use crate::implementation_from_dafny::software::amazon::cryptography::primitives::internaldafny::types::DigestAlgorithm; pub use ::dafny_runtime::Object; pub use crate::implementation_from_dafny::software::amazon::cryptography::primitives::internaldafny::AtomicPrimitivesClient; pub use crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::EncryptionMaterials; - pub use ::dafny_runtime::DafnyInt; pub use ::dafny_runtime::integer_range; + pub use ::std::convert::Into; pub use crate::implementation_from_dafny::software::amazon::cryptography::primitives::internaldafny::types::HMacInput; pub use crate::implementation_from_dafny::software::amazon::cryptography::primitives::internaldafny::types::IAwsCryptographicPrimitivesClient; pub use ::dafny_runtime::rd; pub use crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::SignatureAlgorithm::ECDSA; pub use crate::implementation_from_dafny::software::amazon::cryptography::primitives::internaldafny::types::ECDSASignInput; pub use crate::implementation_from_dafny::_Wrappers_Compile::Option; + pub use ::dafny_runtime::integer_range_down; pub use crate::implementation_from_dafny::_Wrappers_Compile::Option::Some; - pub use ::dafny_runtime::euclidian_modulo; + pub use crate::implementation_from_dafny::UTF8::ValidUTF8Bytes; pub use crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::DecryptionMaterials; pub use crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::EncryptedDataKey; pub use crate::implementation_from_dafny::software::amazon::cryptography::primitives::internaldafny::types::ECDSAVerifyInput; @@ -131439,51 +132818,52 @@ pub mod _StructuredEncryptionFooter_Compile { pub struct _default {} impl _default { - /// dafny/StructuredEncryption/src/Footer.dfy(144,3) + /// dafny/StructuredEncryption/src/Footer.dfy(159,3) pub fn GetCanonicalType(value: &Arc, isEncrypted: bool) -> Arc, Arc>> { + let mut value_len: u64 = truncate!(value.value().cardinality(), u64); if isEncrypted { - let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(int!(2) <= value.value().cardinality() && value.value().cardinality() < crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default::UINT64_LIMIT(), &crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::E(&string_utf16_of("Bad length."))); + let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(2 <= value_len, &crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::E(&string_utf16_of("Bad length."))); if valueOrError0.IsFailure() { valueOrError0.PropagateFailure::>() } else { Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::, Arc>::Success { - value: crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default::UInt64ToSeq(truncate!(value.value().cardinality() - int!(2), u64)).concat(&crate::implementation_from_dafny::UTF8::_default::EncodeAscii(&string_utf16_of("ENCRYPTED"))) + value: crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default::UInt64ToSeq(value_len - 2).concat(&_default::ENCRYPTED()) }) } } else { - let mut valueOrError1: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(value.value().cardinality() < crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default::UINT64_LIMIT(), &crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::E(&string_utf16_of("Bad length."))); + let mut valueOrError1: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default::HasUint64Len::(value.value()), &crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::E(&string_utf16_of("Bad length."))); if valueOrError1.IsFailure() { valueOrError1.PropagateFailure::>() } else { Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::, Arc>::Success { - value: crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default::UInt64ToSeq(truncate!(value.value().cardinality(), u64)).concat(&crate::implementation_from_dafny::UTF8::_default::EncodeAscii(&string_utf16_of("PLAINTEXT"))).concat(value.typeId()) + value: crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default::UInt64ToSeq(value_len).concat(&_default::PLAINTEXT()).concat(value.typeId()) }) } } } - /// dafny/StructuredEncryption/src/Footer.dfy(155,3) + /// dafny/StructuredEncryption/src/Footer.dfy(172,3) pub fn GetCanonicalEncryptedField(fieldName: &Sequence, value: &Arc) -> Arc, Arc>> { - let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(int!(2) <= value.value().cardinality() && value.value().cardinality() < crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default::UINT64_LIMIT(), &crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::E(&string_utf16_of("Bad length."))); + let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(2 <= truncate!(value.value().cardinality(), u64), &crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::E(&string_utf16_of("Bad length."))); if valueOrError0.IsFailure() { valueOrError0.PropagateFailure::>() } else { Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::, Arc>::Success { - value: fieldName.concat(&crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default::UInt64ToSeq(truncate!(value.value().cardinality() - int!(2), u64))).concat(&crate::implementation_from_dafny::UTF8::_default::EncodeAscii(&string_utf16_of("ENCRYPTED"))).concat(value.value()) + value: fieldName.concat(&crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default::UInt64ToSeq(truncate!(value.value().cardinality(), u64) - 2)).concat(&_default::ENCRYPTED()).concat(value.value()) }) } } - /// dafny/StructuredEncryption/src/Footer.dfy(184,3) + /// dafny/StructuredEncryption/src/Footer.dfy(203,3) pub fn GetCanonicalPlaintextField(fieldName: &Sequence, value: &Arc) -> Arc, Arc>> { - let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(value.value().cardinality() < crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default::UINT64_LIMIT(), &crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::E(&string_utf16_of("Bad length."))); + let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default::HasUint64Len::(value.value()), &crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::E(&string_utf16_of("Bad length."))); if valueOrError0.IsFailure() { valueOrError0.PropagateFailure::>() } else { Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::, Arc>::Success { - value: fieldName.concat(&crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default::UInt64ToSeq(truncate!(value.value().cardinality(), u64))).concat(&crate::implementation_from_dafny::UTF8::_default::EncodeAscii(&string_utf16_of("PLAINTEXT"))).concat(value.typeId()).concat(value.value()) + value: fieldName.concat(&crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default::UInt64ToSeq(truncate!(value.value().cardinality(), u64))).concat(&_default::PLAINTEXT()).concat(value.typeId()).concat(value.value()) }) } } - /// dafny/StructuredEncryption/src/Footer.dfy(216,3) + /// dafny/StructuredEncryption/src/Footer.dfy(235,3) pub fn GetCanonicalItem(data: &Arc) -> Arc, Arc>> { if data.action().clone() == Arc::new(CryptoAction::ENCRYPT_AND_SIGN {}) { _default::GetCanonicalEncryptedField(data.key(), data.data()) @@ -131491,49 +132871,38 @@ pub mod _StructuredEncryptionFooter_Compile { _default::GetCanonicalPlaintextField(data.key(), data.data()) } } - /// dafny/StructuredEncryption/src/Footer.dfy(225,3) - pub fn CanonContent(data: &Sequence>, canonized: &Sequence) -> Arc, Arc>> { - let mut _r0 = data.clone(); - let mut _r1 = canonized.clone(); - 'TAIL_CALL_START: loop { - let data = _r0; - let canonized = _r1; - if data.cardinality() == int!(0) { - return Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::, Arc>::Success { - value: canonized.clone() - }); - } else { - if data.get(&int!(0)).action().clone() == Arc::new(CryptoAction::DO_NOTHING {}) { - let mut _in0: Sequence> = data.drop(&int!(1)); - let mut _in1: Sequence = canonized.clone(); - _r0 = _in0.clone(); - _r1 = _in1.clone(); - continue 'TAIL_CALL_START; - } else { - let mut valueOrError0: Arc, Arc>> = _default::GetCanonicalItem(&data.get(&int!(0))); - if valueOrError0.IsFailure() { - return valueOrError0.PropagateFailure::>(); - } else { - let mut newPart: Sequence = valueOrError0.Extract(); - let mut _in2: Sequence> = data.drop(&int!(1)); - let mut _in3: Sequence = canonized.concat(&newPart); - _r0 = _in2.clone(); - _r1 = _in3.clone(); - continue 'TAIL_CALL_START; - } - } + /// dafny/StructuredEncryption/src/Footer.dfy(244,3) + pub fn CanonContent(data: &Sequence>) -> Arc, Arc>> { + let mut _hresult = MaybePlacebo::, Arc>>>::new(); + let mut i: u64 = truncate!(data.cardinality(), u64); + let mut vectors: Sequence = seq![] as Sequence; + while i != 0 { + i = i - 1; + if data.get(&int!((&i).clone())).action().clone() != Arc::new(CryptoAction::DO_NOTHING {}) { + let mut test: Arc, Arc>> = _default::GetCanonicalItem(&data.get(&int!((&i).clone()))); + if matches!((&test).as_ref(), Failure{ .. }) { + _hresult = MaybePlacebo::from(Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::, Arc>::Failure { + error: test.error().clone() + })); + return _hresult.read(); + }; + vectors = test.value().concat(&vectors); } - } + }; + _hresult = MaybePlacebo::from(Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::, Arc>::Success { + value: vectors.clone() + })); + return _hresult.read(); } - /// dafny/StructuredEncryption/src/Footer.dfy(239,3) + /// dafny/StructuredEncryption/src/Footer.dfy(285,3) pub fn CanonRecord(data: &Sequence>, header: &Sequence, enc: &CMPEncryptionContext) -> Arc, Arc>> { - let mut valueOrError0: Arc, Arc>> = _default::CanonContent(data, &(seq![] as Sequence)); + let mut valueOrError0: Arc, Arc>> = _default::CanonContent(data); if valueOrError0.IsFailure() { valueOrError0.PropagateFailure::>() } else { let mut canon: Sequence = valueOrError0.Extract(); let mut AAD: Sequence = crate::implementation_from_dafny::_StructuredEncryptionHeader_Compile::_default::SerializeContext(enc); - let mut valueOrError1: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(AAD.cardinality() < crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default::UINT64_LIMIT(), &crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::E(&string_utf16_of("AAD too long."))); + let mut valueOrError1: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default::HasUint64Len::(&AAD), &crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::E(&string_utf16_of("AAD too long."))); if valueOrError1.IsFailure() { valueOrError1.PropagateFailure::>() } else { @@ -131544,7 +132913,7 @@ pub mod _StructuredEncryptionFooter_Compile { } } } - /// dafny/StructuredEncryption/src/Footer.dfy(273,3) + /// dafny/StructuredEncryption/src/Footer.dfy(319,3) pub fn CanonHash(data: &Sequence>, header: &Sequence, enc: &CMPEncryptionContext) -> Arc, Arc>> { let mut ret = MaybePlacebo::, Arc>>>::new(); let mut valueOrError0: Arc, Arc>> = _default::CanonRecord(data, header, enc); @@ -131568,7 +132937,7 @@ pub mod _StructuredEncryptionFooter_Compile { }))); return ret.read(); } - /// dafny/StructuredEncryption/src/Footer.dfy(290,3) + /// dafny/StructuredEncryption/src/Footer.dfy(336,3) pub fn CreateFooter(client: &Object, mat: &Arc, data: &Sequence>, header: &Sequence) -> Arc, Arc>> { let mut ret = MaybePlacebo::, Arc>>>::new(); let mut valueOrError0: Arc, Arc>>; @@ -131580,11 +132949,11 @@ pub mod _StructuredEncryptionFooter_Compile { }; let mut canonicalHash: Sequence = valueOrError0.Extract(); let mut tags: Sequence = seq![] as Sequence; - let mut _hi0: DafnyInt = mat.encryptedDataKeys().cardinality(); - for i in integer_range(int!(0), _hi0.clone()) { + let mut _hi0: u64 = truncate!(mat.encryptedDataKeys().cardinality(), u64); + for i in integer_range(0, _hi0).map(Into::::into) { let mut input: Arc = Arc::new(HMacInput::HMacInput { digestAlgorithm: mat.algorithmSuite().symmetricSignature().HMAC().clone(), - key: mat.symmetricSigningKeys().value().get(&i), + key: mat.symmetricSigningKeys().value().get(&int!((&i).clone())), message: canonicalHash.clone() }); let mut hashR: Arc, Arc>> = IAwsCryptographicPrimitivesClient::HMac(rd!(client.clone()), &input); @@ -131600,7 +132969,7 @@ pub mod _StructuredEncryptionFooter_Compile { return ret.read(); }; let mut _hash: Sequence = valueOrError1.Extract(); - let mut valueOrError2: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(_hash.cardinality() == int!(48), &crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::E(&string_utf16_of("Bad hash length"))); + let mut valueOrError2: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(truncate!(_hash.cardinality(), u64) == 48, &crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::E(&string_utf16_of("Bad hash length"))); if valueOrError2.IsFailure() { ret = MaybePlacebo::from(valueOrError2.PropagateFailure::>()); return ret.read(); @@ -131628,7 +132997,7 @@ pub mod _StructuredEncryptionFooter_Compile { return ret.read(); }; let mut sig: Sequence = valueOrError3.Extract(); - let mut valueOrError4: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(sig.cardinality() == _default::SignatureSize(), &crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::E(&string_utf16_of("Signature is ").concat(&crate::implementation_from_dafny::_StandardLibrary_Compile::_String_Compile::_default::Base10Int2String(&sig.cardinality())).concat(&string_utf16_of(" bytes, should have been ")).concat(&crate::implementation_from_dafny::_StandardLibrary_Compile::_String_Compile::_default::Base10Int2String(&_default::SignatureSize())).concat(&string_utf16_of(" bytes.")))); + let mut valueOrError4: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(truncate!(sig.cardinality(), u64) == _default::SignatureSize(), &crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::E(&string_utf16_of("Signature is ").concat(&crate::implementation_from_dafny::_StandardLibrary_Compile::_String_Compile::_default::Base10Int2String(&sig.cardinality())).concat(&string_utf16_of(" bytes, should have been ")).concat(&crate::implementation_from_dafny::_StandardLibrary_Compile::_String_Compile::_default::Base10Int2String(&int!((&_default::SignatureSize()).clone()))).concat(&string_utf16_of(" bytes.")))); if valueOrError4.IsFailure() { ret = MaybePlacebo::from(valueOrError4.PropagateFailure::>()); return ret.read(); @@ -131653,23 +133022,18 @@ pub mod _StructuredEncryptionFooter_Compile { }; return ret.read(); } - /// dafny/StructuredEncryption/src/Footer.dfy(368,3) + /// dafny/StructuredEncryption/src/Footer.dfy(416,3) pub fn SerializeTags(tags: &Sequence) -> Sequence { - let mut _accumulator: Sequence = seq![] as Sequence; - let mut _r0 = tags.clone(); - 'TAIL_CALL_START: loop { - let tags = _r0; - if tags.cardinality() == int!(0) { - return _accumulator.concat(&(seq![] as Sequence)); - } else { - _accumulator = _accumulator.concat(&tags.get(&int!(0))); - let mut _in0: Sequence = tags.drop(&int!(1)); - _r0 = _in0.clone(); - continue 'TAIL_CALL_START; - } + let mut _hresult = MaybePlacebo::>::new(); + let mut result: Sequence = seq![] as Sequence; + let mut _lo0: u64 = 0; + for i in integer_range_down(truncate!(tags.cardinality(), u64), _lo0).map(Into::::into) { + result = tags.get(&int!((&i).clone())).concat(&result); } + _hresult = MaybePlacebo::from(result.clone()); + return _hresult.read(); } - /// dafny/StructuredEncryption/src/Footer.dfy(377,3) + /// dafny/StructuredEncryption/src/Footer.dfy(434,3) pub fn SerializeSig(sig: &Arc>) -> Sequence { if matches!(sig.as_ref(), Some{ .. }) { sig.value().clone() @@ -131677,49 +133041,50 @@ pub mod _StructuredEncryptionFooter_Compile { seq![] as Sequence } } - /// dafny/StructuredEncryption/src/Footer.dfy(386,3) + /// dafny/StructuredEncryption/src/Footer.dfy(443,3) pub fn GatherTags(data: &Sequence) -> Sequence { let mut _accumulator: Sequence = seq![] as Sequence; let mut _r0 = data.clone(); 'TAIL_CALL_START: loop { let data = _r0; - if data.cardinality() == int!(0) { + if truncate!(data.cardinality(), u64) == 0 { return _accumulator.concat(&(seq![] as Sequence>)); } else { - _accumulator = _accumulator.concat(&seq![data.slice(&int!(0), &_default::RecipientTagSize())]); - let mut _in0: Sequence = data.drop(&_default::RecipientTagSize()); + _accumulator = _accumulator.concat(&seq![data.slice(&int!((&truncate!((&int!(0)).clone(), u32)).clone()), &int!((&_default::RecipientTagSize()).clone()))]); + let mut _in0: Sequence = data.drop(&int!((&_default::RecipientTagSize()).clone())); _r0 = _in0.clone(); continue 'TAIL_CALL_START; } } } - /// dafny/StructuredEncryption/src/Footer.dfy(396,3) + /// dafny/StructuredEncryption/src/Footer.dfy(454,3) pub fn DeserializeFooter(data: &Sequence, hasSig: bool) -> Arc, Arc>> { + let mut data_len: u64 = truncate!(data.cardinality(), u64); if hasSig { - let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(euclidian_modulo(data.cardinality() - _default::SignatureSize(), _default::RecipientTagSize()) == int!(0), &crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::E(&string_utf16_of("Mangled signed footer has strange size"))); + let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(data_len >= _default::RecipientTagSize() + _default::SignatureSize(), &crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::E(&string_utf16_of("Footer too short."))); if valueOrError0.IsFailure() { valueOrError0.PropagateFailure::>() } else { - let mut valueOrError1: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(data.cardinality() >= _default::RecipientTagSize() + _default::SignatureSize(), &crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::E(&string_utf16_of("Footer too short."))); + let mut valueOrError1: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>((data_len - _default::SignatureSize()) % _default::RecipientTagSize() == 0, &crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::E(&string_utf16_of("Mangled signed footer has strange size"))); if valueOrError1.IsFailure() { valueOrError1.PropagateFailure::>() } else { Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::, Arc>::Success { value: Arc::new(Footer::Footer { - tags: _default::GatherTags(&data.take(&(data.cardinality() - _default::SignatureSize()))), + tags: _default::GatherTags(&data.take(&int!((&(data_len - _default::SignatureSize())).clone()))), sig: Arc::new(Option::>::Some { - value: data.drop(&(data.cardinality() - _default::SignatureSize())) + value: data.drop(&int!((&(data_len - _default::SignatureSize())).clone())) }) }) }) } } } else { - let mut valueOrError2: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(euclidian_modulo(data.cardinality(), _default::RecipientTagSize()) == int!(0), &crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::E(&string_utf16_of("Mangled unsigned footer has strange size"))); + let mut valueOrError2: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(data_len % _default::RecipientTagSize() == 0, &crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::E(&string_utf16_of("Mangled unsigned footer has strange size"))); if valueOrError2.IsFailure() { valueOrError2.PropagateFailure::>() } else { - let mut valueOrError3: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(data.cardinality() >= _default::RecipientTagSize(), &crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::E(&string_utf16_of("Footer too short."))); + let mut valueOrError3: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(data_len >= _default::RecipientTagSize(), &crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::E(&string_utf16_of("Footer too short."))); if valueOrError3.IsFailure() { valueOrError3.PropagateFailure::>() } else { @@ -131733,13 +133098,23 @@ pub mod _StructuredEncryptionFooter_Compile { } } } - /// dafny/StructuredEncryption/src/Footer.dfy(37,3) - pub fn RecipientTagSize() -> DafnyInt { - int!(48) + /// dafny/StructuredEncryption/src/Footer.dfy(146,3) + pub fn ENCRYPTED() -> ValidUTF8Bytes { + let mut s: Sequence = seq![69, 78, 67, 82, 89, 80, 84, 69, 68]; + s.clone() + } + /// dafny/StructuredEncryption/src/Footer.dfy(151,3) + pub fn PLAINTEXT() -> ValidUTF8Bytes { + let mut s: Sequence = seq![80, 76, 65, 73, 78, 84, 69, 88, 84]; + s.clone() + } + /// dafny/StructuredEncryption/src/Footer.dfy(38,3) + pub fn RecipientTagSize() -> u64 { + 48 } /// dafny/StructuredEncryption/src/Footer.dfy(39,3) - pub fn SignatureSize() -> DafnyInt { - int!(103) + pub fn SignatureSize() -> u64 { + 103 } } @@ -131773,7 +133148,7 @@ pub mod _StructuredEncryptionFooter_Compile { /// dafny/StructuredEncryption/src/Footer.dfy(74,5) pub fn validate(self: &Arc, client: &Object, mat: &Arc, edks: &Sequence>, data: &Sequence>, header: &Sequence) -> Arc>> { let mut ret = MaybePlacebo::>>>::new(); - let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(edks.cardinality() == self.tags().cardinality(), &crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::E(&string_utf16_of("There are a different number of recipient tags in the stored header than there are in the decryption materials."))); + let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(truncate!(edks.cardinality(), u64) == truncate!(self.tags().cardinality(), u64), &crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::E(&string_utf16_of("There are a different number of recipient tags in the stored header than there are in the decryption materials."))); if valueOrError0.IsFailure() { ret = MaybePlacebo::from(valueOrError0.PropagateFailure::()); return ret.read(); @@ -131804,19 +133179,19 @@ pub mod _StructuredEncryptionFooter_Compile { return ret.read(); }; let mut _hash: Sequence = valueOrError2.Extract(); - let mut valueOrError3: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(_hash.cardinality() == int!(48), &crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::E(&string_utf16_of("Bad hash length"))); + let mut valueOrError3: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(truncate!(_hash.cardinality(), u64) == 48, &crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::E(&string_utf16_of("Bad hash length"))); if valueOrError3.IsFailure() { ret = MaybePlacebo::from(valueOrError3.PropagateFailure::()); return ret.read(); }; let mut foundTag: bool = false; - 'label_goto_2: loop { - let mut _hi0: DafnyInt = self.tags().cardinality(); - for i in integer_range(int!(0), _hi0.clone()) { - 'label_continue_2: loop { - if crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::ConstantTimeEquals(&_hash, &self.tags().get(&i)) { + 'label_goto_3: loop { + let mut _hi0: u64 = truncate!(self.tags().cardinality(), u64); + for i in integer_range(0, _hi0).map(Into::::into) { + 'label_continue_3: loop { + if crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::ConstantTimeEquals(&_hash, &self.tags().get(&int!((&i).clone()))) { foundTag = true; - break 'label_goto_2; + break 'label_goto_3; }; break; } @@ -131940,7 +133315,8 @@ pub mod _StructuredEncryptionHeader_Compile { pub use ::dafny_runtime::Sequence; pub use ::std::sync::Arc; pub use crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::CanonCryptoItem; - pub use ::dafny_runtime::itertools::Itertools; + pub use ::dafny_runtime::truncate; + pub use ::dafny_runtime::int; pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::structuredencryption::internaldafny::types::CryptoAction; pub use ::dafny_runtime::seq; pub use ::dafny_runtime::Map; @@ -131954,19 +133330,16 @@ pub mod _StructuredEncryptionHeader_Compile { pub use crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::EncryptionMaterials; pub use crate::implementation_from_dafny::_Wrappers_Compile::Outcome; pub use ::dafny_runtime::string_utf16_of; - pub use ::dafny_runtime::int; + pub use ::dafny_runtime::itertools::Itertools; pub use ::dafny_runtime::MapBuilder; - pub use ::dafny_runtime::_System::nat; pub use crate::implementation_from_dafny::software::amazon::cryptography::primitives::internaldafny::types::HMacInput; pub use ::dafny_runtime::rd; - pub use ::dafny_runtime::truncate; pub use ::dafny_runtime::DafnyTypeEq; pub use ::dafny_runtime::DafnyType; pub use ::std::marker::Sync; pub use ::std::marker::Send; pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::structuredencryption::internaldafny::types::CryptoAction::ENCRYPT_AND_SIGN; pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::structuredencryption::internaldafny::types::CryptoAction::SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT; - pub use ::dafny_runtime::DafnyInt; pub use ::dafny_runtime::map; pub use crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::MaterialProvidersClient; pub use ::dafny_runtime::MaybePlacebo; @@ -131984,51 +133357,63 @@ pub mod _StructuredEncryptionHeader_Compile { pub struct _default {} impl _default { - /// dafny/StructuredEncryption/src/Header.dfy(41,3) + /// dafny/StructuredEncryption/src/Header.dfy(46,3) pub fn ValidVersion(x: u8) -> bool { x == 1 || x == 2 } - /// dafny/StructuredEncryption/src/Header.dfy(60,3) - pub fn IsVersion2Schema(data: &Sequence>) -> bool { - Itertools::unique(data.iter()).any(({ - let mut data = data.clone(); - Arc::new(move |__exists_var_0: Arc| -> bool{ - let mut x: Arc = __exists_var_0.clone(); - data.contains(&x) && x.action().clone() == Arc::new(CryptoAction::SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT {}) - }) - }).as_ref()) - } /// dafny/StructuredEncryption/src/Header.dfy(65,3) + pub fn IsVersion2Schema(data: &Sequence>, pos: u32) -> bool { + let mut _r0 = data.clone(); + let mut _r1 = pos; + 'TAIL_CALL_START: loop { + let data = _r0; + let pos = _r1; + if pos == truncate!(data.cardinality(), u32) { + return false; + } else { + if data.get(&int!((&pos).clone())).action().clone() == Arc::new(CryptoAction::SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT {}) { + return true; + } else { + let mut _in0: Sequence> = data.clone(); + let mut _in1: u32 = pos + 1; + _r0 = _in0.clone(); + _r1 = _in1; + continue 'TAIL_CALL_START; + } + } + } + } + /// dafny/StructuredEncryption/src/Header.dfy(80,3) pub fn VersionFromSchema(data: &Sequence>) -> Version { - if _default::IsVersion2Schema(data) { + if _default::IsVersion2Schema(data, 0) { 2 } else { 1 } } - /// dafny/StructuredEncryption/src/Header.dfy(83,3) + /// dafny/StructuredEncryption/src/Header.dfy(99,3) pub fn ValidFlavor(x: u8) -> bool { seq![0, 1].contains(&x) } - /// dafny/StructuredEncryption/src/Header.dfy(87,3) + /// dafny/StructuredEncryption/src/Header.dfy(103,3) pub fn ValidLegendByte(x: u8) -> bool { seq![_default::ENCRYPT_AND_SIGN_LEGEND(), _default::SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT_LEGEND(), _default::SIGN_ONLY_LEGEND()].contains(&x) } - /// dafny/StructuredEncryption/src/Header.dfy(91,3) + /// dafny/StructuredEncryption/src/Header.dfy(107,3) pub fn ValidEncryptionContext(x: &Map) -> bool { - x.cardinality() < crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default::UINT16_LIMIT() && x.keys().iter().all(({ + truncate!(x.cardinality(), u64) < truncate!(crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default::UINT16_LIMIT(), u64) && x.keys().iter().all(({ let mut x = x.clone(); Arc::new(move |__forall_var_0: &ValidUTF8Bytes| -> bool{ let mut k: Sequence = __forall_var_0.clone(); - !x.contains(&k) || k.cardinality() < crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default::UINT16_LIMIT() && x.get(&k).cardinality() < crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default::UINT16_LIMIT() + !x.contains(&k) || truncate!(k.cardinality(), u64) < truncate!(crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default::UINT16_LIMIT(), u64) && truncate!(x.get(&k).cardinality(), u64) < truncate!(crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default::UINT16_LIMIT(), u64) }) }).as_ref()) } - /// dafny/StructuredEncryption/src/Header.dfy(96,3) + /// dafny/StructuredEncryption/src/Header.dfy(123,3) pub fn ValidEncryptedDataKey(x: &Arc) -> bool { - x.keyProviderId().cardinality() < crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default::UINT16_LIMIT() && x.keyProviderInfo().cardinality() < crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default::UINT16_LIMIT() && x.ciphertext().cardinality() < crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default::UINT16_LIMIT() + truncate!(x.keyProviderId().cardinality(), u64) < truncate!(crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default::UINT16_LIMIT(), u64) && truncate!(x.keyProviderInfo().cardinality(), u64) < truncate!(crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default::UINT16_LIMIT(), u64) && truncate!(x.ciphertext().cardinality(), u64) < truncate!(crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default::UINT16_LIMIT(), u64) } - /// dafny/StructuredEncryption/src/Header.dfy(187,3) + /// dafny/StructuredEncryption/src/Header.dfy(218,3) pub fn Serialize(client: &Object, alg: &Arc, commitKey: &Sequence, PartialHeader: &Arc) -> Arc, Arc>> { let mut body: Sequence = PartialHeader.serialize(); let mut valueOrError0: Arc, Arc>> = _default::CalculateHeaderCommitment(client, alg, commitKey, &body); @@ -132046,79 +133431,84 @@ pub mod _StructuredEncryptionHeader_Compile { /// # If any [Crypto Action](./structures.md#crypto-action) is configured as /// # [SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT Crypto Action](./structures.md#sign_and_include_in_encryption_context) /// # the Version MUST be 0x02; otherwise, Version MUST be 0x01. - /// dafny/StructuredEncryption/src/Header.dfy(219,3) + /// dafny/StructuredEncryption/src/Header.dfy(250,3) pub fn Create(tableName: &Sequence, schema: &Sequence>, msgID: &MessageID, mat: &Arc) -> Arc, Arc>> { - let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(_default::ValidEncryptionContext(mat.encryptionContext()), &crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::E(&string_utf16_of("Invalid Encryption Context"))); + let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(truncate!(schema.cardinality(), u64) < truncate!(crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default::UINT32_LIMIT(), u64), &crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::E(&string_utf16_of("Unexpected large schema"))); if valueOrError0.IsFailure() { valueOrError0.PropagateFailure::>() } else { - let mut valueOrError1: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(int!(0) < mat.encryptedDataKeys().cardinality(), &crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::E(&string_utf16_of("There must be at least one data key"))); + let mut valueOrError1: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(_default::ValidEncryptionContext(mat.encryptionContext()), &crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::E(&string_utf16_of("Invalid Encryption Context"))); if valueOrError1.IsFailure() { valueOrError1.PropagateFailure::>() } else { - let mut valueOrError2: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(mat.encryptedDataKeys().cardinality() < _default::UINT8_LIMIT(), &crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::E(&string_utf16_of("Too many data keys."))); + let mut valueOrError2: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(0 < truncate!(mat.encryptedDataKeys().cardinality(), u64), &crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::E(&string_utf16_of("There must be at least one data key"))); if valueOrError2.IsFailure() { valueOrError2.PropagateFailure::>() } else { - let mut valueOrError3: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(Itertools::unique(mat.encryptedDataKeys().iter()).all(({ - let mut mat = mat.clone(); - Arc::new(move |__forall_var_0: Arc| -> bool{ - let mut x: Arc = __forall_var_0.clone(); - !mat.encryptedDataKeys().contains(&x) || _default::ValidEncryptedDataKey(&x) - }) - }).as_ref()), &crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::E(&string_utf16_of("Invalid Data Key"))); + let mut valueOrError3: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(truncate!(mat.encryptedDataKeys().cardinality(), u64) < _default::UINT8_LIMIT64(), &crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::E(&string_utf16_of("Too many data keys."))); if valueOrError3.IsFailure() { valueOrError3.PropagateFailure::>() } else { - let mut valueOrError4: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(mat.algorithmSuite().binaryId().cardinality() == int!(2), &crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::E(&string_utf16_of("Invalid Algorithm Suite Binary ID"))); + let mut valueOrError4: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(Itertools::unique(mat.encryptedDataKeys().iter()).all(({ + let mut mat = mat.clone(); + Arc::new(move |__forall_var_0: Arc| -> bool{ + let mut x: Arc = __forall_var_0.clone(); + !mat.encryptedDataKeys().contains(&x) || _default::ValidEncryptedDataKey(&x) + }) + }).as_ref()), &crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::E(&string_utf16_of("Invalid Data Key"))); if valueOrError4.IsFailure() { valueOrError4.PropagateFailure::>() } else { - let mut valueOrError5: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(mat.algorithmSuite().binaryId().get(&int!(0)) == crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::DbeAlgorithmFamily(), &crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::E(&string_utf16_of("Algorithm Suite not suitable for structured encryption."))); + let mut valueOrError5: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(truncate!(mat.algorithmSuite().binaryId().cardinality(), u64) == 2, &crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::E(&string_utf16_of("Invalid Algorithm Suite Binary ID"))); if valueOrError5.IsFailure() { valueOrError5.PropagateFailure::>() } else { - let mut valueOrError6: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(_default::ValidFlavor(mat.algorithmSuite().binaryId().get(&int!(1))), &crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::E(&string_utf16_of("Algorithm Suite has unexpected flavor."))); + let mut valueOrError6: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(mat.algorithmSuite().binaryId().get(&int!((&truncate!((&int!(0)).clone(), u32)).clone())) == crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::DbeAlgorithmFamily(), &crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::E(&string_utf16_of("Algorithm Suite not suitable for structured encryption."))); if valueOrError6.IsFailure() { valueOrError6.PropagateFailure::>() } else { - let mut valueOrError7: Arc>> = _default::MakeLegend(schema); + let mut valueOrError7: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(_default::ValidFlavor(mat.algorithmSuite().binaryId().get(&int!((&truncate!((&int!(1)).clone(), u32)).clone()))), &crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::E(&string_utf16_of("Algorithm Suite has unexpected flavor."))); if valueOrError7.IsFailure() { valueOrError7.PropagateFailure::>() } else { - let mut legend: Legend = valueOrError7.Extract(); - let mut storedEC: Map = (&({ - let mut mat = mat.clone(); - Arc::new(move || -> Map{ - let mut _coll0: MapBuilder = MapBuilder::::new(); - for __compr_0 in mat.encryptionContext().keys().iter().cloned() { - let mut k: ValidUTF8Bytes = __compr_0.clone(); - if { - let i: Sequence = k.clone(); - crate::implementation_from_dafny::UTF8::_default::ValidUTF8Seq(&i) - } { - if mat.encryptionContext().contains(&k) && !mat.requiredEncryptionContextKeys().contains(&k) { - _coll0.add(&k, &mat.encryptionContext().get(&k)) - } - } - } - _coll0.build() - }) - }))(); - let mut valueOrError8: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(_default::ValidEncryptionContext(&storedEC), &crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::E(&string_utf16_of("Invalid Encryption Context"))); + let mut valueOrError8: Arc>> = _default::MakeLegend(schema); if valueOrError8.IsFailure() { valueOrError8.PropagateFailure::>() } else { - Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::, Arc>::Success { - value: Arc::new(PartialHeader::PartialHeader { - version: _default::VersionFromSchema(schema), - flavor: mat.algorithmSuite().binaryId().get(&int!(1)), - msgID: msgID.clone(), - legend: legend.clone(), - encContext: storedEC.clone(), - dataKeys: mat.encryptedDataKeys().clone() - }) - }) + let mut legend: Legend = valueOrError8.Extract(); + let mut storedEC: Map = (&({ + let mut mat = mat.clone(); + Arc::new(move || -> Map{ + let mut _coll0: MapBuilder = MapBuilder::::new(); + for __compr_0 in mat.encryptionContext().keys().iter().cloned() { + let mut k: ValidUTF8Bytes = __compr_0.clone(); + if { + let i: Sequence = k.clone(); + crate::implementation_from_dafny::UTF8::_default::ValidUTF8Seq(&i) + } { + if mat.encryptionContext().contains(&k) && !mat.requiredEncryptionContextKeys().contains(&k) { + _coll0.add(&k, &mat.encryptionContext().get(&k)) + } + } + } + _coll0.build() + }) + }))(); + let mut valueOrError9: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(_default::ValidEncryptionContext(&storedEC), &crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::E(&string_utf16_of("Invalid Encryption Context"))); + if valueOrError9.IsFailure() { + valueOrError9.PropagateFailure::>() + } else { + Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::, Arc>::Success { + value: Arc::new(PartialHeader::PartialHeader { + version: _default::VersionFromSchema(schema), + flavor: mat.algorithmSuite().binaryId().get(&int!((&truncate!((&int!(1)).clone(), u32)).clone())), + msgID: msgID.clone(), + legend: legend.clone(), + encContext: storedEC.clone(), + dataKeys: mat.encryptedDataKeys().clone() + }) + }) + } } } } @@ -132129,50 +133519,50 @@ pub mod _StructuredEncryptionHeader_Compile { } } } - /// dafny/StructuredEncryption/src/Header.dfy(262,3) + /// dafny/StructuredEncryption/src/Header.dfy(297,3) pub fn PartialDeserialize(data: &Sequence) -> Arc, Arc>> { - let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(_default::PREFIX_LEN() <= data.cardinality(), &crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::E(&string_utf16_of("Serialized PartialHeader too short."))); + let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(_default::PREFIX_LEN64() <= truncate!(data.cardinality(), u64), &crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::E(&string_utf16_of("Serialized PartialHeader too short."))); if valueOrError0.IsFailure() { valueOrError0.PropagateFailure::>() } else { - let mut version: u8 = data.get(&int!(0)); + let mut version: u8 = data.get(&int!((&truncate!((&int!(0)).clone(), u32)).clone())); let mut valueOrError1: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(_default::ValidVersion(version), &crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::E(&string_utf16_of("Invalid Version Number"))); if valueOrError1.IsFailure() { valueOrError1.PropagateFailure::>() } else { - let mut flavor: u8 = data.get(&int!(1)); + let mut flavor: u8 = data.get(&int!((&truncate!((&int!(1)).clone(), u32)).clone())); let mut valueOrError2: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(_default::ValidFlavor(flavor), &crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::E(&string_utf16_of("Invalid Flavor"))); if valueOrError2.IsFailure() { valueOrError2.PropagateFailure::>() } else { - let mut msgID: Sequence = data.slice(&int!(2), &_default::PREFIX_LEN()); - let mut legendData: Sequence = data.drop(&_default::PREFIX_LEN()); - let mut valueOrError3: Arc>> = _default::GetLegend(&legendData); + let mut msgID: Sequence = data.slice(&int!((&truncate!((&int!(2)).clone(), u32)).clone()), &int!((&_default::PREFIX_LEN64()).clone())); + let mut legendData: Sequence = data.drop(&int!((&_default::PREFIX_LEN64()).clone())); + let mut valueOrError3: Arc>> = _default::GetLegend(&legendData); if valueOrError3.IsFailure() { valueOrError3.PropagateFailure::>() } else { - let mut legendAndLen: (Legend, nat) = valueOrError3.Extract(); + let mut legendAndLen: (Legend, u64) = valueOrError3.Extract(); let mut legend: Legend = legendAndLen.0.clone(); - let mut contextData: Sequence = legendData.drop(&legendAndLen.1.clone()); - let mut valueOrError4: Arc>> = _default::GetContext(&contextData); + let mut contextData: Sequence = legendData.drop(&int!((&legendAndLen.1.clone()).clone())); + let mut valueOrError4: Arc>> = _default::GetContext(&contextData); if valueOrError4.IsFailure() { valueOrError4.PropagateFailure::>() } else { - let mut contextAndLen: (CMPEncryptionContext, nat) = valueOrError4.Extract(); + let mut contextAndLen: (CMPEncryptionContext, u64) = valueOrError4.Extract(); let mut encContext: CMPEncryptionContext = contextAndLen.0.clone(); - let mut keysData: Sequence = contextData.drop(&contextAndLen.1.clone()); - let mut valueOrError5: Arc>> = _default::GetDataKeys(&keysData); + let mut keysData: Sequence = contextData.drop(&int!((&contextAndLen.1.clone()).clone())); + let mut valueOrError5: Arc>> = _default::GetDataKeys(&keysData); if valueOrError5.IsFailure() { valueOrError5.PropagateFailure::>() } else { - let mut keysAndLen: (CMPEncryptedDataKeyList, nat) = valueOrError5.Extract(); + let mut keysAndLen: (CMPEncryptedDataKeyList, u64) = valueOrError5.Extract(); let mut dataKeys: CMPEncryptedDataKeyList = keysAndLen.0.clone(); - let mut trailingData: Sequence = keysData.drop(&keysAndLen.1.clone()); - let mut valueOrError6: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(trailingData.cardinality() >= _default::COMMITMENT_LEN(), &crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::E(&string_utf16_of("Invalid header serialization: unexpected end of data."))); + let mut trailingData: Sequence = keysData.drop(&int!((&keysAndLen.1.clone()).clone())); + let mut valueOrError6: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(truncate!(trailingData.cardinality(), u64) >= _default::COMMITMENT_LEN64(), &crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::E(&string_utf16_of("Invalid header serialization: unexpected end of data."))); if valueOrError6.IsFailure() { valueOrError6.PropagateFailure::>() } else { - let mut valueOrError7: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(trailingData.cardinality() <= _default::COMMITMENT_LEN(), &crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::E(&string_utf16_of("Invalid header serialization: unexpected bytes."))); + let mut valueOrError7: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(truncate!(trailingData.cardinality(), u64) <= _default::COMMITMENT_LEN64(), &crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::E(&string_utf16_of("Invalid header serialization: unexpected bytes."))); if valueOrError7.IsFailure() { valueOrError7.PropagateFailure::>() } else { @@ -132195,7 +133585,7 @@ pub mod _StructuredEncryptionHeader_Compile { } } } - /// dafny/StructuredEncryption/src/Header.dfy(315,3) + /// dafny/StructuredEncryption/src/Header.dfy(352,3) pub fn CalculateHeaderCommitment(client: &Object, alg: &Arc, commitKey: &Sequence, data: &Sequence) -> Arc, Arc>> { let mut input: Arc = Arc::new(HMacInput::HMacInput { digestAlgorithm: alg.commitment().HKDF().hmac().clone(), @@ -132214,29 +133604,18 @@ pub mod _StructuredEncryptionHeader_Compile { valueOrError0.PropagateFailure::>() } else { let mut output: Sequence = valueOrError0.Extract(); - if output.cardinality() < _default::COMMITMENT_LEN() { + if truncate!(output.cardinality(), u64) < _default::COMMITMENT_LEN64() { Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::, Arc>::Failure { error: crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::E(&string_utf16_of("HMAC did not produce enough bits")) }) } else { Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::, Arc>::Success { - value: output.take(&_default::COMMITMENT_LEN()) + value: output.take(&int!((&_default::COMMITMENT_LEN64()).clone())) }) } } } - /// dafny/StructuredEncryption/src/Header.dfy(352,3) - pub fn ToUInt16(x: &nat) -> Arc>> { - let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(x.clone() < crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default::UINT16_LIMIT(), &crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::E(&string_utf16_of("Value too big for 16 bits"))); - if valueOrError0.IsFailure() { - valueOrError0.PropagateFailure::() - } else { - Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::>::Success { - value: truncate!(x.clone(), u16) - }) - } - } - /// dafny/StructuredEncryption/src/Header.dfy(360,3) + /// dafny/StructuredEncryption/src/Header.dfy(398,3) pub fn MyMap<_X: DafnyTypeEq, _Y: DafnyTypeEq, _Z: DafnyType>(f: &Arc _Y + Sync + Send>, m: &Map<_X, _Z>) -> Map<_Y, _Z> { (&({ let mut f = f.clone(); @@ -132253,15 +133632,15 @@ pub mod _StructuredEncryptionHeader_Compile { }) }))() } - /// dafny/StructuredEncryption/src/Header.dfy(367,3) + /// dafny/StructuredEncryption/src/Header.dfy(405,3) pub fn MakeLegend(schema: &Sequence>) -> Arc>> { - let mut valueOrError0: Arc>> = _default::MakeLegend2(schema, &_default::EmptyLegend()); + let mut valueOrError0: Arc>> = _default::MakeLegend2(schema, 0, &_default::EmptyLegend()); if valueOrError0.IsFailure() { valueOrError0.PropagateFailure::() } else { let mut legend: Legend = valueOrError0.Extract(); - let mut authCount: nat = _default::CountAuthAttrs(schema); - let mut valueOrError1: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(authCount.clone() == legend.cardinality(), &crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::E(&string_utf16_of("Internal Error : bad legend calculation."))); + let mut authCount: u64 = _default::CountAuthAttrs(schema, 0, 0); + let mut valueOrError1: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(authCount == truncate!(legend.cardinality(), u64), &crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::E(&string_utf16_of("Internal Error : bad legend calculation."))); if valueOrError1.IsFailure() { valueOrError1.PropagateFailure::() } else { @@ -132271,41 +133650,47 @@ pub mod _StructuredEncryptionHeader_Compile { } } } - /// dafny/StructuredEncryption/src/Header.dfy(388,3) - pub fn MakeLegend2(data: &Sequence>, serialized: &Legend) -> Arc>> { + /// dafny/StructuredEncryption/src/Header.dfy(427,3) + pub fn MakeLegend2(data: &Sequence>, pos: u64, serialized: &Legend) -> Arc>> { let mut _r0 = data.clone(); - let mut _r1 = serialized.clone(); + let mut _r1 = pos; + let mut _r2 = serialized.clone(); 'TAIL_CALL_START: loop { let data = _r0; - let serialized = _r1; - if data.cardinality() == int!(0) { + let pos = _r1; + let serialized = _r2; + if truncate!(data.cardinality(), u64) == pos { return Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::>::Success { value: serialized.clone() }); } else { - if crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::IsAuthAttr(data.get(&int!(0)).action()) { - let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(serialized.cardinality() + int!(1) < crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default::UINT16_LIMIT(), &crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::E(&string_utf16_of("Legend Too Long."))); + if crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::IsAuthAttr(data.get(&int!((&pos).clone())).action()) { + let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(truncate!(serialized.cardinality(), u64) + 1 < truncate!(crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default::UINT16_LIMIT(), u64), &crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::E(&string_utf16_of("Legend Too Long."))); if valueOrError0.IsFailure() { return valueOrError0.PropagateFailure::(); } else { - let mut legendChar: u8 = _default::GetActionLegend(data.get(&int!(0)).action()); - let mut _in0: Sequence> = data.drop(&int!(1)); - let mut _in1: Sequence = serialized.concat(&seq![legendChar]); + let mut legendChar: u8 = _default::GetActionLegend(data.get(&int!((&pos).clone())).action()); + let mut _in0: Sequence> = data.clone(); + let mut _in1: u64 = pos + 1; + let mut _in2: Sequence = serialized.concat(&seq![legendChar]); _r0 = _in0.clone(); - _r1 = _in1.clone(); + _r1 = _in1; + _r2 = _in2.clone(); continue 'TAIL_CALL_START; } } else { - let mut _in2: Sequence> = data.drop(&int!(1)); - let mut _in3: Legend = serialized.clone(); - _r0 = _in2.clone(); - _r1 = _in3.clone(); + let mut _in3: Sequence> = data.clone(); + let mut _in4: u64 = pos + 1; + let mut _in5: Legend = serialized.clone(); + _r0 = _in3.clone(); + _r1 = _in4; + _r2 = _in5.clone(); continue 'TAIL_CALL_START; } } } } - /// dafny/StructuredEncryption/src/Header.dfy(405,3) + /// dafny/StructuredEncryption/src/Header.dfy(448,3) pub fn GetActionLegend(x: &Arc) -> u8 { let mut _source0: Arc = x.clone(); if matches!((&_source0).as_ref(), ENCRYPT_AND_SIGN{ .. }) { @@ -132318,23 +133703,33 @@ pub mod _StructuredEncryptionHeader_Compile { } } } - /// dafny/StructuredEncryption/src/Header.dfy(435,3) - pub fn CountAuthAttrs(data: &Sequence>) -> nat { - let mut _accumulator: nat = int!(0); + /// dafny/StructuredEncryption/src/Header.dfy(478,3) + pub fn CountAuthAttrs(data: &Sequence>, pos: u64, acc: u64) -> u64 { let mut _r0 = data.clone(); + let mut _r1 = pos; + let mut _r2 = acc; 'TAIL_CALL_START: loop { let data = _r0; - if data.cardinality() == int!(0) { - return int!(0) + _accumulator.clone(); + let pos = _r1; + let acc = _r2; + if truncate!(data.cardinality(), u64) == pos { + return acc; } else { - if crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::IsAuthAttr(data.get(&int!(0)).action()) { - _accumulator = _accumulator.clone() + int!(1); - let mut _in0: Sequence> = data.drop(&int!(1)); + if crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::IsAuthAttr(data.get(&int!((&pos).clone())).action()) { + let mut _in0: Sequence> = data.clone(); + let mut _in1: u64 = pos + 1; + let mut _in2: u64 = crate::implementation_from_dafny::_StandardLibrary_Compile::_MemoryMath_Compile::_default::Add(acc, 1); _r0 = _in0.clone(); + _r1 = _in1; + _r2 = _in2; continue 'TAIL_CALL_START; } else { - let mut _in1: Sequence> = data.drop(&int!(1)); - _r0 = _in1.clone(); + let mut _in3: Sequence> = data.clone(); + let mut _in4: u64 = pos + 1; + let mut _in5: u64 = acc; + _r0 = _in3.clone(); + _r1 = _in4; + _r2 = _in5; continue 'TAIL_CALL_START; } } @@ -132347,96 +133742,99 @@ pub mod _StructuredEncryptionHeader_Compile { /// | ----- | -------------- | -------------- | /// | Encrypt Legend Length | 2 | big endian UInt16 | /// | Encrypt Legend Bytes | Variable. Equal to the value specified in the previous 2 bytes | Bytes | - /// dafny/StructuredEncryption/src/Header.dfy(447,3) + /// dafny/StructuredEncryption/src/Header.dfy(493,3) pub fn SerializeLegend(x: &Legend) -> Sequence { crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default::UInt16ToSeq(truncate!(x.cardinality(), u16)).concat(x) } - /// dafny/StructuredEncryption/src/Header.dfy(465,3) - pub fn GetLegend(data: &Sequence) -> Arc>> { - let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(int!(2) <= data.cardinality(), &crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::E(&string_utf16_of("Unexpected end of header data."))); + /// dafny/StructuredEncryption/src/Header.dfy(511,3) + pub fn GetLegend(data: &Sequence) -> Arc>> { + let mut data_size: u64 = truncate!(data.cardinality(), u64); + let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(2 <= data_size, &crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::E(&string_utf16_of("Unexpected end of header data."))); if valueOrError0.IsFailure() { - valueOrError0.PropagateFailure::<(Sequence, DafnyInt)>() + valueOrError0.PropagateFailure::<(Sequence, u64)>() } else { - let mut len: u16 = crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default::SeqToUInt16(&data.slice(&int!(0), &int!(2))); - let mut size: DafnyInt = int!(len) + int!(2); - let mut valueOrError1: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(size.clone() <= data.cardinality(), &crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::E(&string_utf16_of("Unexpected end of header data."))); + let mut len: u64 = crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default::SeqPosToUInt16(data, 0) as u64; + let mut size: u64 = crate::implementation_from_dafny::_StandardLibrary_Compile::_MemoryMath_Compile::_default::Add(len, 2); + let mut valueOrError1: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(size <= data_size, &crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::E(&string_utf16_of("Unexpected end of header data."))); if valueOrError1.IsFailure() { - valueOrError1.PropagateFailure::<(Sequence, DafnyInt)>() + valueOrError1.PropagateFailure::<(Sequence, u64)>() } else { - let mut valueOrError2: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(Itertools::unique((&data.slice(&int!(2), &size)).iter()).all(({ - let mut data = data.clone(); - let mut size = size.clone(); + let mut legend: Sequence = data.slice(&int!((&truncate!((&int!(2)).clone(), u32)).clone()), &int!((&size).clone())); + let mut valueOrError2: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(Itertools::unique((&legend).iter()).all(({ + let mut legend = legend.clone(); Arc::new(move |__forall_var_0: u8| -> bool{ let mut x: u8 = __forall_var_0; - !data.slice(&int!(2), &size).contains(&x) || _default::ValidLegendByte(x) + !legend.contains(&x) || _default::ValidLegendByte(x) }) }).as_ref()), &crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::E(&string_utf16_of("Invalid byte in stored legend"))); if valueOrError2.IsFailure() { - valueOrError2.PropagateFailure::<(Sequence, DafnyInt)>() + valueOrError2.PropagateFailure::<(Sequence, u64)>() } else { - Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::<(Sequence, DafnyInt), Arc>::Success { + Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::<(Sequence, u64), Arc>::Success { value: ( - data.slice(&int!(2), &size), - size.clone() + legend.clone(), + size ) }) } } } } - /// dafny/StructuredEncryption/src/Header.dfy(481,3) - pub fn GetContext(data: &Sequence) -> Arc>> { - let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(int!(2) <= data.cardinality(), &crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::E(&string_utf16_of("Unexpected end of header data."))); + /// dafny/StructuredEncryption/src/Header.dfy(530,3) + pub fn GetContext(data: &Sequence) -> Arc>> { + let mut data_size: u64 = truncate!(data.cardinality(), u64); + let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(2 <= data_size, &crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::E(&string_utf16_of("Unexpected end of header data."))); if valueOrError0.IsFailure() { - valueOrError0.PropagateFailure::<(CMPEncryptionContext, nat)>() + valueOrError0.PropagateFailure::<(CMPEncryptionContext, u64)>() } else { - let mut count: nat = int!(crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default::SeqToUInt16(&data.slice(&int!(0), &int!(2)))); - let mut valueOrError1: Arc>> = _default::GetContext2(&count, data, &data.drop(&int!(2)), &(( + let mut count: u64 = crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default::SeqPosToUInt16(data, 0) as u64; + let mut valueOrError1: Arc>> = _default::GetContext2(count, data, &(( map![], - int!(2) + 2 )), &(seq![] as Sequence)); if valueOrError1.IsFailure() { - valueOrError1.PropagateFailure::<(CMPEncryptionContext, nat)>() + valueOrError1.PropagateFailure::<(CMPEncryptionContext, u64)>() } else { - let mut context: (CMPEncryptionContext, nat) = valueOrError1.Extract(); - Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::<(CMPEncryptionContext, nat), Arc>::Success { + let mut context: (CMPEncryptionContext, u64) = valueOrError1.Extract(); + Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::<(CMPEncryptionContext, u64), Arc>::Success { value: context.clone() }) } } } - /// dafny/StructuredEncryption/src/Header.dfy(497,3) - pub fn GetOneKVPair(data: &Sequence) -> Arc>> { - let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(int!(2) <= data.cardinality(), &crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::E(&string_utf16_of("Unexpected end of header data."))); + /// dafny/StructuredEncryption/src/Header.dfy(549,3) + pub fn GetOneKVPair(data: &Sequence, pos: u64) -> Arc>> { + let mut data_size: u64 = truncate!(data.cardinality(), u64); + let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(crate::implementation_from_dafny::_StandardLibrary_Compile::_MemoryMath_Compile::_default::Add(2, pos) <= data_size, &crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::E(&string_utf16_of("Unexpected end of header data."))); if valueOrError0.IsFailure() { - valueOrError0.PropagateFailure::<(Sequence, Sequence, DafnyInt)>() + valueOrError0.PropagateFailure::<(Sequence, Sequence, u64)>() } else { - let mut keyLen: nat = int!(crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default::SeqToUInt16(&data.slice(&int!(0), &int!(2)))); - let mut valueOrError1: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(keyLen.clone() + int!(4) <= data.cardinality(), &crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::E(&string_utf16_of("Unexpected end of header data."))); + let mut keyLen: u64 = crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default::SeqPosToUInt16(data, pos) as u64; + let mut valueOrError1: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(crate::implementation_from_dafny::_StandardLibrary_Compile::_MemoryMath_Compile::_default::Add3(keyLen, 4, pos) <= data_size, &crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::E(&string_utf16_of("Unexpected end of header data."))); if valueOrError1.IsFailure() { - valueOrError1.PropagateFailure::<(Sequence, Sequence, DafnyInt)>() + valueOrError1.PropagateFailure::<(Sequence, Sequence, u64)>() } else { - let mut key: Sequence = data.slice(&int!(2), &(keyLen.clone() + int!(2))); + let mut key: Sequence = data.slice(&int!((&(2 + pos)).clone()), &int!((&crate::implementation_from_dafny::_StandardLibrary_Compile::_MemoryMath_Compile::_default::Add3(keyLen, 2, pos)).clone())); let mut valueOrError2: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(crate::implementation_from_dafny::UTF8::_default::ValidUTF8Seq(&key), &crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::E(&string_utf16_of("Invalid UTF8 found in header."))); if valueOrError2.IsFailure() { - valueOrError2.PropagateFailure::<(Sequence, Sequence, DafnyInt)>() + valueOrError2.PropagateFailure::<(Sequence, Sequence, u64)>() } else { - let mut valueLen: nat = int!(crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default::SeqToUInt16(&data.slice(&(keyLen.clone() + int!(2)), &(keyLen.clone() + int!(4))))); - let mut kvLen: DafnyInt = int!(2) + keyLen.clone() + int!(2) + valueLen.clone(); - let mut valueOrError3: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(kvLen.clone() <= data.cardinality(), &crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::E(&string_utf16_of("Unexpected end of header data."))); + let mut valueLen: u64 = crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default::SeqPosToUInt16(data, crate::implementation_from_dafny::_StandardLibrary_Compile::_MemoryMath_Compile::_default::Add3(keyLen, 2, pos)) as u64; + let mut kvLen: u64 = 2 + keyLen + 2 + valueLen; + let mut valueOrError3: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(crate::implementation_from_dafny::_StandardLibrary_Compile::_MemoryMath_Compile::_default::Add(kvLen, pos) <= data_size, &crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::E(&string_utf16_of("Unexpected end of header data."))); if valueOrError3.IsFailure() { - valueOrError3.PropagateFailure::<(Sequence, Sequence, DafnyInt)>() + valueOrError3.PropagateFailure::<(Sequence, Sequence, u64)>() } else { - let mut value: Sequence = data.slice(&(keyLen.clone() + int!(4)), &kvLen); + let mut value: Sequence = data.slice(&int!((&(keyLen + 4 + pos)).clone()), &int!((&(kvLen + pos)).clone())); let mut valueOrError4: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(crate::implementation_from_dafny::UTF8::_default::ValidUTF8Seq(&value), &crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::E(&string_utf16_of("Invalid UTF8 found in header."))); if valueOrError4.IsFailure() { - valueOrError4.PropagateFailure::<(Sequence, Sequence, DafnyInt)>() + valueOrError4.PropagateFailure::<(Sequence, Sequence, u64)>() } else { - Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::<(Sequence, Sequence, DafnyInt), Arc>::Success { + Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::<(Sequence, Sequence, u64), Arc>::Success { value: ( key.clone(), value.clone(), - kvLen.clone() + kvLen ) }) } @@ -132445,29 +133843,33 @@ pub mod _StructuredEncryptionHeader_Compile { } } } - /// dafny/StructuredEncryption/src/Header.dfy(525,3) - pub fn BytesLess(a: &Sequence, b: &Sequence) -> bool { + /// dafny/StructuredEncryption/src/Header.dfy(584,3) + pub fn BytesLess(a: &Sequence, b: &Sequence, pos: u64) -> bool { let mut _r0 = a.clone(); let mut _r1 = b.clone(); + let mut _r2 = pos; 'TAIL_CALL_START: loop { let a = _r0; let b = _r1; + let pos = _r2; if a.clone() == b.clone() { return false; } else { - if a.cardinality() == int!(0) { + if truncate!(a.cardinality(), u64) == pos { return true; } else { - if b.cardinality() == int!(0) { + if truncate!(b.cardinality(), u64) == pos { return false; } else { - if a.get(&int!(0)) != b.get(&int!(0)) { - return a.get(&int!(0)) < b.get(&int!(0)); + if a.get(&int!((&pos).clone())) != b.get(&int!((&pos).clone())) { + return a.get(&int!((&pos).clone())) < b.get(&int!((&pos).clone())); } else { - let mut _in0: Sequence = a.drop(&int!(1)); - let mut _in1: Sequence = b.drop(&int!(1)); + let mut _in0: Sequence = a.clone(); + let mut _in1: Sequence = b.clone(); + let mut _in2: u64 = pos + 1; _r0 = _in0.clone(); _r1 = _in1.clone(); + _r2 = _in2; continue 'TAIL_CALL_START; } } @@ -132475,50 +133877,46 @@ pub mod _StructuredEncryptionHeader_Compile { } } } - /// dafny/StructuredEncryption/src/Header.dfy(539,3) - pub fn GetContext2(count: &nat, origData: &Sequence, data: &Sequence, deserialized: &(CMPEncryptionContext, nat), prevKey: &CMPUtf8Bytes) -> Arc>> { - let mut _r0 = count.clone(); - let mut _r1 = origData.clone(); - let mut _r2 = data.clone(); - let mut _r3 = deserialized.clone(); - let mut _r4 = prevKey.clone(); + /// dafny/StructuredEncryption/src/Header.dfy(604,3) + pub fn GetContext2(count: u64, data: &Sequence, deserialized: &(CMPEncryptionContext, u64), prevKey: &CMPUtf8Bytes) -> Arc>> { + let mut _r0 = count; + let mut _r1 = data.clone(); + let mut _r2 = deserialized.clone(); + let mut _r3 = prevKey.clone(); 'TAIL_CALL_START: loop { let count = _r0; - let origData = _r1; - let data = _r2; - let deserialized = _r3; - let prevKey = _r4; - if count.clone() == int!(0) { - return Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::<(CMPEncryptionContext, nat), Arc>::Success { + let data = _r1; + let deserialized = _r2; + let prevKey = _r3; + if count == 0 { + return Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::<(CMPEncryptionContext, u64), Arc>::Success { value: deserialized.clone() }); } else { - let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(deserialized.0.clone().cardinality() + int!(1) < crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default::UINT16_LIMIT(), &crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::E(&string_utf16_of("Too much context"))); + let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(truncate!(deserialized.0.clone().cardinality(), u64) + 1 < truncate!(crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default::UINT16_LIMIT(), u64), &crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::E(&string_utf16_of("Too much context"))); if valueOrError0.IsFailure() { - return valueOrError0.PropagateFailure::<(CMPEncryptionContext, nat)>(); + return valueOrError0.PropagateFailure::<(CMPEncryptionContext, u64)>(); } else { - let mut valueOrError1: Arc>> = _default::GetOneKVPair(&data); + let mut valueOrError1: Arc>> = _default::GetOneKVPair(&data, deserialized.1.clone()); if valueOrError1.IsFailure() { - return valueOrError1.PropagateFailure::<(CMPEncryptionContext, nat)>(); + return valueOrError1.PropagateFailure::<(CMPEncryptionContext, u64)>(); } else { - let mut kv: (CMPUtf8Bytes, CMPUtf8Bytes, nat) = valueOrError1.Extract(); - let mut valueOrError2: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(_default::BytesLess(&prevKey, &kv.0.clone()), &crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::E(&string_utf16_of("Context keys out of order."))); + let mut kv: (CMPUtf8Bytes, CMPUtf8Bytes, u64) = valueOrError1.Extract(); + let mut valueOrError2: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(_default::BytesLess(&prevKey, &kv.0.clone(), 0), &crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::E(&string_utf16_of("Context keys out of order."))); if valueOrError2.IsFailure() { - return valueOrError2.PropagateFailure::<(CMPEncryptionContext, nat)>(); + return valueOrError2.PropagateFailure::<(CMPEncryptionContext, u64)>(); } else { - let mut _in0: DafnyInt = count.clone() - int!(1); - let mut _in1: Sequence = origData.clone(); - let mut _in2: Sequence = data.drop(&(int!(2) + kv.0.clone().cardinality() + int!(2) + kv.1.clone().cardinality())); - let mut _in3: (Map, DafnyInt) = ( + let mut _in0: u64 = count - 1; + let mut _in1: Sequence = data.clone(); + let mut _in2: (Map, u64) = ( deserialized.0.clone().update_index(&kv.0.clone(), &kv.1.clone()), - deserialized.1.clone() + kv.2.clone() + crate::implementation_from_dafny::_StandardLibrary_Compile::_MemoryMath_Compile::_default::Add(deserialized.1.clone(), kv.2.clone()) ); - let mut _in4: CMPUtf8Bytes = kv.0.clone(); - _r0 = _in0.clone(); + let mut _in3: CMPUtf8Bytes = kv.0.clone(); + _r0 = _in0; _r1 = _in1.clone(); _r2 = _in2.clone(); _r3 = _in3.clone(); - _r4 = _in4.clone(); continue 'TAIL_CALL_START; } } @@ -132526,10 +133924,10 @@ pub mod _StructuredEncryptionHeader_Compile { } } } - /// dafny/StructuredEncryption/src/Header.dfy(570,3) + /// dafny/StructuredEncryption/src/Header.dfy(633,3) pub fn SerializeContext(x: &CMPEncryptionContext) -> Sequence { let mut keys: Sequence> = crate::implementation_from_dafny::SortedSets::_default::SetToOrderedSequence2::(&x.keys(), &(Arc::new(move |x0: &u8,x1: &u8| crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::ByteLess(x0.clone(), x1.clone())) as Arc _ + Sync + Send>)); - crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default::UInt16ToSeq(truncate!(x.cardinality(), u16)).concat(&_default::SerializeContext2(&keys, x)) + crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default::UInt16ToSeq(truncate!(x.cardinality(), u16)).concat(&_default::SerializeContext2(&keys, x, 0, &(seq![] as Sequence))) } /// = specification/structured-encryption/header.md#key-value-pair-entries /// = type=implication @@ -132540,7 +133938,7 @@ pub mod _StructuredEncryptionHeader_Compile { /// | Key | Variable. Equal to the value specified in the previous 2 bytes (Key Length). | UTF-8 encoded bytes | /// | Value Length | 2 | big endian UInt16 | /// | Value | Variable. Equal to the value specified in the previous 2 bytes (Value Length). | UTF-8 encoded bytes | - /// dafny/StructuredEncryption/src/Header.dfy(592,3) + /// dafny/StructuredEncryption/src/Header.dfy(655,3) pub fn SerializeOneKVPair(key: &CMPUtf8Bytes, value: &CMPUtf8Bytes) -> Sequence { crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default::UInt16ToSeq(truncate!(key.cardinality(), u16)).concat(key).concat(&crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default::UInt16ToSeq(truncate!(value.cardinality(), u16))).concat(value) } @@ -132555,58 +133953,59 @@ pub mod _StructuredEncryptionHeader_Compile { /// | Key Provider Information | Variable. Equal to the value specified in the previous 2 bytes (Key Provider Information Length). | Bytes | /// | Encrypted Data Key Length | 2 | big endian UInt16 | /// | Encrypted Data Key | Variable. Equal to the value specified in the previous 2 bytes (Encrypted Data Key Length). | Bytes | - /// dafny/StructuredEncryption/src/Header.dfy(609,3) + /// dafny/StructuredEncryption/src/Header.dfy(672,3) pub fn SerializeOneDataKey(k: &CMPEncryptedDataKey) -> Sequence { crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default::UInt16ToSeq(truncate!(k.keyProviderId().cardinality(), u16)).concat(k.keyProviderId()).concat(&crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default::UInt16ToSeq(truncate!(k.keyProviderInfo().cardinality(), u16))).concat(k.keyProviderInfo()).concat(&crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default::UInt16ToSeq(truncate!(k.ciphertext().cardinality(), u16))).concat(k.ciphertext()) } - /// dafny/StructuredEncryption/src/Header.dfy(644,3) - pub fn GetOneDataKey(data: &Sequence) -> Arc>> { - let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(int!(2) < data.cardinality(), &crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::E(&string_utf16_of("Unexpected end of header data."))); + /// dafny/StructuredEncryption/src/Header.dfy(707,3) + pub fn GetOneDataKey(data: &Sequence, pos: u64) -> Arc>> { + let mut data_size: u64 = truncate!(data.cardinality(), u64); + let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(crate::implementation_from_dafny::_StandardLibrary_Compile::_MemoryMath_Compile::_default::Add(2, pos) < data_size, &crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::E(&string_utf16_of("Unexpected end of header data."))); if valueOrError0.IsFailure() { - valueOrError0.PropagateFailure::<(Arc, DafnyInt)>() + valueOrError0.PropagateFailure::<(CMPEncryptedDataKey, u64)>() } else { - let mut provIdSize: nat = int!(crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default::SeqToUInt16(&data.slice(&int!(0), &int!(2)))); - let mut valueOrError1: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(provIdSize.clone() + int!(2) < data.cardinality(), &crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::E(&string_utf16_of("Unexpected end of header data."))); + let mut provIdSize: u64 = crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default::SeqPosToUInt16(data, pos) as u64; + let mut valueOrError1: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(crate::implementation_from_dafny::_StandardLibrary_Compile::_MemoryMath_Compile::_default::Add3(provIdSize, 2, pos) < data_size, &crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::E(&string_utf16_of("Unexpected end of header data."))); if valueOrError1.IsFailure() { - valueOrError1.PropagateFailure::<(Arc, DafnyInt)>() + valueOrError1.PropagateFailure::<(CMPEncryptedDataKey, u64)>() } else { - let mut provId: Sequence = data.slice(&int!(2), &(int!(2) + provIdSize.clone())); + let mut provId: Sequence = data.slice(&int!((&(pos + 2)).clone()), &int!((&(pos + 2 + provIdSize)).clone())); let mut valueOrError2: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(crate::implementation_from_dafny::UTF8::_default::ValidUTF8Seq(&provId), &crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::E(&string_utf16_of("Invalid UTF8 found in header."))); if valueOrError2.IsFailure() { - valueOrError2.PropagateFailure::<(Arc, DafnyInt)>() + valueOrError2.PropagateFailure::<(CMPEncryptedDataKey, u64)>() } else { - let mut part1Size: DafnyInt = int!(2) + provIdSize.clone(); - let mut valueOrError3: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(part1Size.clone() + int!(2) <= data.cardinality(), &crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::E(&string_utf16_of("Unexpected end of header data."))); + let mut part1Size: u64 = 2 + provIdSize; + let mut valueOrError3: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(crate::implementation_from_dafny::_StandardLibrary_Compile::_MemoryMath_Compile::_default::Add3(part1Size, 2, pos) <= data_size, &crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::E(&string_utf16_of("Unexpected end of header data."))); if valueOrError3.IsFailure() { - valueOrError3.PropagateFailure::<(Arc, DafnyInt)>() + valueOrError3.PropagateFailure::<(CMPEncryptedDataKey, u64)>() } else { - let mut provInfoSize: nat = int!(crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default::SeqToUInt16(&data.slice(&part1Size, &(part1Size.clone() + int!(2))))); - let mut valueOrError4: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(part1Size.clone() + provInfoSize.clone() + int!(2) < data.cardinality(), &crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::E(&string_utf16_of("Unexpected end of header data."))); + let mut provInfoSize: u64 = crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default::SeqPosToUInt16(data, pos + part1Size) as u64; + let mut part2Size: u64 = part1Size + 2 + provInfoSize; + let mut valueOrError4: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(crate::implementation_from_dafny::_StandardLibrary_Compile::_MemoryMath_Compile::_default::Add(part2Size, pos) < data_size, &crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::E(&string_utf16_of("Unexpected end of header data."))); if valueOrError4.IsFailure() { - valueOrError4.PropagateFailure::<(Arc, DafnyInt)>() + valueOrError4.PropagateFailure::<(CMPEncryptedDataKey, u64)>() } else { - let mut provInfo: Sequence = data.slice(&(part1Size.clone() + int!(2)), &(part1Size.clone() + int!(2) + provInfoSize.clone())); - let mut part2Size: DafnyInt = part1Size.clone() + int!(2) + provInfoSize.clone(); - let mut valueOrError5: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(part2Size.clone() + int!(2) <= data.cardinality(), &crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::E(&string_utf16_of("Unexpected end of header data."))); + let mut provInfo: Sequence = data.slice(&int!((&(pos + part1Size + 2)).clone()), &int!((&(pos + part2Size)).clone())); + let mut valueOrError5: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(crate::implementation_from_dafny::_StandardLibrary_Compile::_MemoryMath_Compile::_default::Add3(part2Size, 2, pos) <= data_size, &crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::E(&string_utf16_of("Unexpected end of header data."))); if valueOrError5.IsFailure() { - valueOrError5.PropagateFailure::<(Arc, DafnyInt)>() + valueOrError5.PropagateFailure::<(CMPEncryptedDataKey, u64)>() } else { - let mut cipherSize: nat = int!(crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default::SeqToUInt16(&data.slice(&part2Size, &(part2Size.clone() + int!(2))))); - let mut valueOrError6: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(part2Size.clone() + cipherSize.clone() + int!(2) <= data.cardinality(), &crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::E(&string_utf16_of("Unexpected end of header data."))); + let mut cipherSize: u64 = crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default::SeqPosToUInt16(data, pos + part2Size) as u64; + let mut part3Size: u64 = part2Size + 2 + cipherSize; + let mut valueOrError6: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(crate::implementation_from_dafny::_StandardLibrary_Compile::_MemoryMath_Compile::_default::Add(part3Size, pos) <= data_size, &crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::E(&string_utf16_of("Unexpected end of header data."))); if valueOrError6.IsFailure() { - valueOrError6.PropagateFailure::<(Arc, DafnyInt)>() + valueOrError6.PropagateFailure::<(CMPEncryptedDataKey, u64)>() } else { - let mut cipher: Sequence = data.slice(&(part2Size.clone() + int!(2)), &(part2Size.clone() + int!(2) + cipherSize.clone())); - let mut part3Size: DafnyInt = part2Size.clone() + int!(2) + cipherSize.clone(); - let mut edk: Arc = Arc::new(EncryptedDataKey::EncryptedDataKey { + let mut cipher: Sequence = data.slice(&int!((&(pos + part2Size + 2)).clone()), &int!((&(pos + part3Size)).clone())); + let mut edk: CMPEncryptedDataKey = Arc::new(EncryptedDataKey::EncryptedDataKey { keyProviderId: provId.clone(), keyProviderInfo: provInfo.clone(), ciphertext: cipher.clone() }); - Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::<(Arc, DafnyInt), Arc>::Success { + Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::<(CMPEncryptedDataKey, u64), Arc>::Success { value: ( edk.clone(), - part3Size.clone() + part3Size ) }) } @@ -132617,22 +134016,28 @@ pub mod _StructuredEncryptionHeader_Compile { } } } - /// dafny/StructuredEncryption/src/Header.dfy(675,3) - pub fn SerializeContext2(keys: &Sequence, x: &CMPEncryptionContext) -> Sequence { - let mut _accumulator: Sequence = seq![] as Sequence; + /// dafny/StructuredEncryption/src/Header.dfy(750,3) + pub fn SerializeContext2(keys: &Sequence, x: &CMPEncryptionContext, pos: u64, acc: &Sequence) -> Sequence { let mut _r0 = keys.clone(); let mut _r1 = x.clone(); + let mut _r2 = pos; + let mut _r3 = acc.clone(); 'TAIL_CALL_START: loop { let keys = _r0; let x = _r1; - if keys.cardinality() == int!(0) { - return _accumulator.concat(&(seq![] as Sequence)); + let pos = _r2; + let acc = _r3; + if truncate!(keys.cardinality(), u64) == pos { + return acc.clone(); } else { - _accumulator = _accumulator.concat(&_default::SerializeOneKVPair(&keys.get(&int!(0)), &x.get(&keys.get(&int!(0))))); - let mut _in0: Sequence = keys.drop(&int!(1)); + let mut _in0: Sequence = keys.clone(); let mut _in1: CMPEncryptionContext = x.clone(); + let mut _in2: u64 = pos + 1; + let mut _in3: Sequence = acc.concat(&_default::SerializeOneKVPair(&keys.get(&int!((&pos).clone())), &x.get(&keys.get(&int!((&pos).clone()))))); _r0 = _in0.clone(); _r1 = _in1.clone(); + _r2 = _in2; + _r3 = _in3.clone(); continue 'TAIL_CALL_START; } } @@ -132644,140 +134049,142 @@ pub mod _StructuredEncryptionHeader_Compile { /// | ----- | -------------- | -------------- | /// | Encrypted Data Key Count | 1 | big endian UInt16 | /// | [Encrypted Data Key Entries | Variable. Determined by the count and length of each key-value pair. | Encrypted Data Key Entries | - /// dafny/StructuredEncryption/src/Header.dfy(686,3) + /// dafny/StructuredEncryption/src/Header.dfy(769,3) pub fn SerializeDataKeys(x: &CMPEncryptedDataKeyList) -> Sequence { - let mut body: Sequence = _default::SerializeDataKeys2(x); + let mut body: Sequence = _default::SerializeDataKeys2(x, 0, &(seq![] as Sequence)); seq![truncate!(x.cardinality(), u8)].concat(&body) } - /// dafny/StructuredEncryption/src/Header.dfy(705,3) - pub fn SerializeDataKeys2(x: &CMPEncryptedDataKeyListEmptyOK) -> Sequence { - let mut _accumulator: Sequence = seq![] as Sequence; + /// dafny/StructuredEncryption/src/Header.dfy(788,3) + pub fn SerializeDataKeys2(x: &CMPEncryptedDataKeyListEmptyOK, pos: u64, acc: &Sequence) -> Sequence { let mut _r0 = x.clone(); + let mut _r1 = pos; + let mut _r2 = acc.clone(); 'TAIL_CALL_START: loop { let x = _r0; - if x.cardinality() == int!(0) { - return _accumulator.concat(&(seq![] as Sequence)); + let pos = _r1; + let acc = _r2; + if truncate!(x.cardinality(), u64) == pos { + return acc.clone(); } else { - _accumulator = _accumulator.concat(&_default::SerializeOneDataKey(&x.get(&int!(0)))); - let mut _in0: Sequence = x.drop(&int!(1)); + let mut _in0: CMPEncryptedDataKeyListEmptyOK = x.clone(); + let mut _in1: u64 = pos + 1; + let mut _in2: Sequence = acc.concat(&_default::SerializeOneDataKey(&x.get(&int!((&pos).clone())))); _r0 = _in0.clone(); + _r1 = _in1; + _r2 = _in2.clone(); continue 'TAIL_CALL_START; } } } - /// dafny/StructuredEncryption/src/Header.dfy(715,3) - pub fn GetDataKeys(data: &Sequence) -> Arc>> { - let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(int!(1) <= data.cardinality(), &crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::E(&string_utf16_of("Unexpected end of header data."))); + /// dafny/StructuredEncryption/src/Header.dfy(805,3) + pub fn GetDataKeys(data: &Sequence) -> Arc>> { + let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(1 <= truncate!(data.cardinality(), u64), &crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::E(&string_utf16_of("Unexpected end of header data."))); if valueOrError0.IsFailure() { - valueOrError0.PropagateFailure::<(CMPEncryptedDataKeyListEmptyOK, nat)>() + valueOrError0.PropagateFailure::<(CMPEncryptedDataKeyListEmptyOK, u64)>() } else { - let mut count: nat = int!(data.get(&int!(0))); - let mut valueOrError1: Arc>> = _default::GetDataKeys2(&count, &count, data, &data.drop(&int!(1)), &(( + let mut count: u64 = data.get(&int!((&truncate!((&int!(0)).clone(), u32)).clone())) as u64; + let mut valueOrError1: Arc>> = _default::GetDataKeys2(count, count, data, &(( seq![] as Sequence, - int!(1) + 1 ))); if valueOrError1.IsFailure() { - valueOrError1.PropagateFailure::<(CMPEncryptedDataKeyListEmptyOK, nat)>() + valueOrError1.PropagateFailure::<(CMPEncryptedDataKeyListEmptyOK, u64)>() } else { - let mut keys: (CMPEncryptedDataKeyListEmptyOK, nat) = valueOrError1.Extract(); - if keys.0.clone().cardinality() == int!(0) { - Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::<(CMPEncryptedDataKeyListEmptyOK, nat), Arc>::Failure { + let mut keys: (CMPEncryptedDataKeyListEmptyOK, u64) = valueOrError1.Extract(); + if truncate!(keys.0.clone().cardinality(), u64) == 0 { + Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::<(CMPEncryptedDataKeyListEmptyOK, u64), Arc>::Failure { error: crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::E(&string_utf16_of("At least one Data Key required")) }) } else { - Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::<(CMPEncryptedDataKeyListEmptyOK, nat), Arc>::Success { + Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::<(CMPEncryptedDataKeyListEmptyOK, u64), Arc>::Success { value: keys.clone() }) } } } } - /// dafny/StructuredEncryption/src/Header.dfy(734,3) - pub fn GetDataKeys2(count: &nat, origCount: &nat, origData: &Sequence, data: &Sequence, deserialized: &(CMPEncryptedDataKeyListEmptyOK, nat)) -> Arc>> { - let mut _r0 = count.clone(); - let mut _r1 = origCount.clone(); - let mut _r2 = origData.clone(); - let mut _r3 = data.clone(); - let mut _r4 = deserialized.clone(); + /// dafny/StructuredEncryption/src/Header.dfy(825,3) + pub fn GetDataKeys2(count: u64, origCount: u64, data: &Sequence, deserialized: &(CMPEncryptedDataKeyListEmptyOK, u64)) -> Arc>> { + let mut _r0 = count; + let mut _r1 = origCount; + let mut _r2 = data.clone(); + let mut _r3 = deserialized.clone(); 'TAIL_CALL_START: loop { let count = _r0; let origCount = _r1; - let origData = _r2; - let data = _r3; - let deserialized = _r4; - if count.clone() == int!(0) { - return Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::<(CMPEncryptedDataKeyListEmptyOK, nat), Arc>::Success { + let data = _r2; + let deserialized = _r3; + if count == 0 { + return Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::<(CMPEncryptedDataKeyListEmptyOK, u64), Arc>::Success { value: deserialized.clone() }); } else { - if deserialized.0.clone().cardinality() >= int!(255) { - return Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::<(CMPEncryptedDataKeyListEmptyOK, nat), Arc>::Failure { + if truncate!(deserialized.0.clone().cardinality(), u64) >= 255 { + return Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::<(CMPEncryptedDataKeyListEmptyOK, u64), Arc>::Failure { error: crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::E(&string_utf16_of("Too Many Data Keys")) }); } else { - let mut valueOrError0: Arc>> = _default::GetOneDataKey(&data); + let mut valueOrError0: Arc>> = _default::GetOneDataKey(&data, deserialized.1.clone()); if valueOrError0.IsFailure() { - return valueOrError0.PropagateFailure::<(CMPEncryptedDataKeyListEmptyOK, nat)>(); + return valueOrError0.PropagateFailure::<(CMPEncryptedDataKeyListEmptyOK, u64)>(); } else { - let mut edk: (CMPEncryptedDataKey, nat) = valueOrError0.Extract(); - let mut _in0: DafnyInt = count.clone() - int!(1); - let mut _in1: nat = origCount.clone(); - let mut _in2: Sequence = origData.clone(); - let mut _in3: Sequence = data.drop(&edk.1.clone()); - let mut _in4: (Sequence, DafnyInt) = ( + let mut edk: (CMPEncryptedDataKey, u64) = valueOrError0.Extract(); + let mut _in0: u64 = count - 1; + let mut _in1: u64 = origCount; + let mut _in2: Sequence = data.clone(); + let mut _in3: (Sequence, u64) = ( deserialized.0.clone().concat(&seq![edk.0.clone()]), deserialized.1.clone() + edk.1.clone() ); - _r0 = _in0.clone(); - _r1 = _in1.clone(); + _r0 = _in0; + _r1 = _in1; _r2 = _in2.clone(); _r3 = _in3.clone(); - _r4 = _in4.clone(); continue 'TAIL_CALL_START; } } } } } - /// dafny/StructuredEncryption/src/Header.dfy(28,3) - pub fn VERSION_LEN() -> DafnyInt { - int!(1) + /// dafny/StructuredEncryption/src/Header.dfy(32,3) + pub fn VERSION_LEN64() -> u64 { + 1 } - /// dafny/StructuredEncryption/src/Header.dfy(29,3) - pub fn FLAVOR_LEN() -> DafnyInt { - int!(1) + /// dafny/StructuredEncryption/src/Header.dfy(33,3) + pub fn FLAVOR_LEN64() -> u64 { + 1 } - /// dafny/StructuredEncryption/src/Header.dfy(31,3) - pub fn PREFIX_LEN() -> DafnyInt { - _default::VERSION_LEN() + _default::FLAVOR_LEN() + crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::MSGID_LEN() + /// dafny/StructuredEncryption/src/Header.dfy(35,3) + pub fn PREFIX_LEN64() -> u64 { + _default::VERSION_LEN64() + _default::FLAVOR_LEN64() + crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::MSGID_LEN64() } - /// dafny/StructuredEncryption/src/Header.dfy(33,3) + /// dafny/StructuredEncryption/src/Header.dfy(38,3) pub fn ENCRYPT_AND_SIGN_LEGEND() -> u8 { 101 } - /// dafny/StructuredEncryption/src/Header.dfy(34,3) + /// dafny/StructuredEncryption/src/Header.dfy(39,3) pub fn SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT_LEGEND() -> u8 { 99 } - /// dafny/StructuredEncryption/src/Header.dfy(35,3) + /// dafny/StructuredEncryption/src/Header.dfy(40,3) pub fn SIGN_ONLY_LEGEND() -> u8 { 115 } - /// dafny/StructuredEncryption/src/Header.dfy(32,3) - pub fn UINT8_LIMIT() -> DafnyInt { - int!(256) + /// dafny/StructuredEncryption/src/Header.dfy(34,3) + pub fn COMMITMENT_LEN64() -> u64 { + 32 } - /// dafny/StructuredEncryption/src/Header.dfy(30,3) - pub fn COMMITMENT_LEN() -> DafnyInt { - int!(32) + /// dafny/StructuredEncryption/src/Header.dfy(37,3) + pub fn UINT8_LIMIT64() -> u64 { + 256 } - /// dafny/StructuredEncryption/src/Header.dfy(385,3) + /// dafny/StructuredEncryption/src/Header.dfy(424,3) pub fn EmptyLegend() -> Legend { seq![] as Sequence } } - /// dafny/StructuredEncryption/src/Header.dfy(40,3) + /// dafny/StructuredEncryption/src/Header.dfy(45,3) pub type Version = u8; /// An element of Version @@ -132785,25 +134192,25 @@ pub mod _StructuredEncryptionHeader_Compile { 1 } - /// dafny/StructuredEncryption/src/Header.dfy(45,3) + /// dafny/StructuredEncryption/src/Header.dfy(50,3) pub type Flavor = u8; - /// dafny/StructuredEncryption/src/Header.dfy(50,3) + /// dafny/StructuredEncryption/src/Header.dfy(55,3) pub type CMPEncryptedDataKeyList = Sequence; - /// dafny/StructuredEncryption/src/Header.dfy(52,3) + /// dafny/StructuredEncryption/src/Header.dfy(57,3) pub type Commitment = Sequence; - /// dafny/StructuredEncryption/src/Header.dfy(53,3) + /// dafny/StructuredEncryption/src/Header.dfy(58,3) pub type CMPEncryptedDataKey = Arc; - /// dafny/StructuredEncryption/src/Header.dfy(54,3) + /// dafny/StructuredEncryption/src/Header.dfy(59,3) pub type CMPEncryptionContext = Map; - /// dafny/StructuredEncryption/src/Header.dfy(55,3) + /// dafny/StructuredEncryption/src/Header.dfy(60,3) pub type CMPEncryptedDataKeyListEmptyOK = Sequence; - /// dafny/StructuredEncryption/src/Header.dfy(56,3) + /// dafny/StructuredEncryption/src/Header.dfy(61,3) pub type LegendByte = u8; /// An element of LegendByte @@ -132811,13 +134218,13 @@ pub mod _StructuredEncryptionHeader_Compile { _default::SIGN_ONLY_LEGEND() } - /// dafny/StructuredEncryption/src/Header.dfy(57,3) + /// dafny/StructuredEncryption/src/Header.dfy(62,3) pub type Legend = Sequence; - /// dafny/StructuredEncryption/src/Header.dfy(58,3) + /// dafny/StructuredEncryption/src/Header.dfy(63,3) pub type CMPUtf8Bytes = Sequence; - /// dafny/StructuredEncryption/src/Header.dfy(104,3) + /// dafny/StructuredEncryption/src/Header.dfy(134,3) #[derive(PartialEq, Clone)] pub enum PartialHeader { PartialHeader { @@ -132831,21 +134238,21 @@ pub mod _StructuredEncryptionHeader_Compile { } impl PartialHeader { - /// dafny/StructuredEncryption/src/Header.dfy(114,5) + /// dafny/StructuredEncryption/src/Header.dfy(144,5) pub fn serialize(self: &Arc) -> Sequence { let mut context: Sequence = _default::SerializeContext(self.encContext()); let mut keys: Sequence = _default::SerializeDataKeys(self.dataKeys()); let mut leg: Sequence = _default::SerializeLegend(self.legend()); seq![self.version().clone()].concat(&seq![self.flavor().clone()]).concat(self.msgID()).concat(&leg).concat(&context).concat(&keys) } - /// dafny/StructuredEncryption/src/Header.dfy(144,5) + /// dafny/StructuredEncryption/src/Header.dfy(174,5) pub fn verifyCommitment(self: &Arc, client: &Object, alg: &Arc, commitKey: &Sequence, data: &Sequence) -> Arc>> { - let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(_default::COMMITMENT_LEN() < data.cardinality(), &crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::E(&string_utf16_of("Serialized header too short"))); + let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(_default::COMMITMENT_LEN64() < truncate!(data.cardinality(), u64), &crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::E(&string_utf16_of("Serialized header too short"))); if valueOrError0.IsFailure() { valueOrError0.PropagateFailure::() } else { - let mut storedCommitment: Sequence = data.drop(&(data.cardinality() - _default::COMMITMENT_LEN())); - let mut valueOrError1: Arc, Arc>> = _default::CalculateHeaderCommitment(client, alg, commitKey, &data.take(&(data.cardinality() - _default::COMMITMENT_LEN()))); + let mut storedCommitment: Sequence = data.drop(&int!((&(truncate!(data.cardinality(), u64) - _default::COMMITMENT_LEN64())).clone())); + let mut valueOrError1: Arc, Arc>> = _default::CalculateHeaderCommitment(client, alg, commitKey, &data.take(&int!((&(truncate!(data.cardinality(), u64) - _default::COMMITMENT_LEN64())).clone()))); if valueOrError1.IsFailure() { valueOrError1.PropagateFailure::() } else { @@ -132861,7 +134268,7 @@ pub mod _StructuredEncryptionHeader_Compile { } } } - /// dafny/StructuredEncryption/src/Header.dfy(172,5) + /// dafny/StructuredEncryption/src/Header.dfy(203,5) pub fn GetAlgorithmSuite(self: &Arc, matProv: &Object) -> Arc, Arc>> { let mut ret = MaybePlacebo::, Arc>>>::new(); let mut algorithmSuiteR: Arc, Arc>> = IAwsCryptographicMaterialProvidersClient::GetAlgorithmSuiteInfo(rd!(matProv.clone()), &seq![crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::DbeAlgorithmFamily(), self.flavor().clone()]); @@ -133000,6 +134407,7 @@ pub mod _StructuredEncryptionHeader_Compile { pub mod _StructuredEncryptionPaths_Compile { pub use ::dafny_runtime::Sequence; pub use ::std::sync::Arc; + pub use ::dafny_runtime::truncate; pub use ::dafny_runtime::int; pub use crate::implementation_from_dafny::_StructuredEncryptionPaths_Compile::Selector::Map; pub use ::dafny_runtime::DafnyCharUTF16; @@ -133009,9 +134417,11 @@ pub mod _StructuredEncryptionPaths_Compile { pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::structuredencryption::internaldafny::types::Error; pub use ::dafny_runtime::itertools::Itertools; pub use crate::implementation_from_dafny::UTF8::ValidUTF8Bytes; - pub use ::dafny_runtime::truncate; pub use crate::implementation_from_dafny::_Wrappers_Compile::Outcome; pub use ::dafny_runtime::string_utf16_of; + pub use ::dafny_runtime::MaybePlacebo; + pub use ::dafny_runtime::integer_range_down; + pub use ::std::convert::Into; pub use ::std::fmt::Debug; pub use ::std::fmt::Formatter; pub use ::dafny_runtime::DafnyPrint; @@ -133024,11 +134434,11 @@ pub mod _StructuredEncryptionPaths_Compile { pub struct _default {} impl _default { - /// dafny/StructuredEncryption/src/Paths.dfy(25,3) + /// dafny/StructuredEncryption/src/Paths.dfy(26,3) pub fn ValidTerminalSelector(s: &Sequence>) -> bool { - int!(0) < s.cardinality() && s.cardinality() < crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default::UINT64_LIMIT() && matches!((&s.get(&int!(0))).as_ref(), Map{ .. }) + 0 < truncate!(s.cardinality(), u64) && matches!((&s.get(&int!((&truncate!((&int!(0)).clone(), u32)).clone()))).as_ref(), Map{ .. }) } - /// dafny/StructuredEncryption/src/Paths.dfy(31,3) + /// dafny/StructuredEncryption/src/Paths.dfy(33,3) pub fn StringToUniPath(x: &Sequence) -> Sequence> { seq![Arc::new(PathSegment::member { member: Arc::new(StructureSegment::StructureSegment { @@ -133036,15 +134446,15 @@ pub mod _StructuredEncryptionPaths_Compile { }) })] } - /// dafny/StructuredEncryption/src/Paths.dfy(43,3) + /// dafny/StructuredEncryption/src/Paths.dfy(45,3) pub fn UniPathToString(x: &Sequence>) -> Arc, Arc>> { Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::, Arc>::Success { - value: x.get(&int!(0)).member().key().clone() + value: x.get(&int!((&truncate!((&int!(0)).clone(), u32)).clone())).member().key().clone() }) } - /// dafny/StructuredEncryption/src/Paths.dfy(49,3) + /// dafny/StructuredEncryption/src/Paths.dfy(51,3) pub fn ValidPath(path: &Sequence>) -> bool { - path.cardinality() < crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default::UINT64_LIMIT() && Itertools::unique(path.iter()).all(({ + Itertools::unique(path.iter()).all(({ let mut path = path.clone(); Arc::new(move |__forall_var_0: Arc| -> bool{ let mut x: Arc = __forall_var_0.clone(); @@ -133052,14 +134462,14 @@ pub mod _StructuredEncryptionPaths_Compile { }) }).as_ref()) } - /// dafny/StructuredEncryption/src/Paths.dfy(55,3) + /// dafny/StructuredEncryption/src/Paths.dfy(56,3) pub fn CanonPath(table: &Sequence, path: &Sequence>) -> Sequence { let mut tableName: ValidUTF8Bytes = crate::implementation_from_dafny::UTF8::_default::Encode(table).value().clone(); let mut depth: Sequence = crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default::UInt64ToSeq(truncate!(path.cardinality(), u64)); let mut path: Sequence = _default::MakeCanonicalPath(path); tableName.concat(&depth).concat(&path) } - /// dafny/StructuredEncryption/src/Paths.dfy(78,3) + /// dafny/StructuredEncryption/src/Paths.dfy(81,3) pub fn _TermLocMap_q(attr: &Sequence) -> Arc>, Arc>> { let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::ValidString(attr), &crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::E(&string_utf16_of("invalid string : ").concat(attr))); if valueOrError0.IsFailure() { @@ -133074,7 +134484,7 @@ pub mod _StructuredEncryptionPaths_Compile { }) } } - /// dafny/StructuredEncryption/src/Paths.dfy(84,3) + /// dafny/StructuredEncryption/src/Paths.dfy(87,3) pub fn TermLocMap(attr: &Sequence) -> Sequence> { seq![Arc::new(PathSegment::member { member: Arc::new(StructureSegment::StructureSegment { @@ -133082,61 +134492,56 @@ pub mod _StructuredEncryptionPaths_Compile { }) })] } - /// dafny/StructuredEncryption/src/Paths.dfy(89,3) + /// dafny/StructuredEncryption/src/Paths.dfy(92,3) pub fn SimpleCanon(table: &Sequence, attr: &Sequence) -> Sequence { _default::CanonPath(table, &_default::TermLocMap(attr)) } - /// dafny/StructuredEncryption/src/Paths.dfy(99,3) + /// dafny/StructuredEncryption/src/Paths.dfy(102,3) pub fn CanonicalPart(s: &Arc) -> Sequence { seq![_default::MAP_TAG()].concat(&crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default::UInt64ToSeq(truncate!(s.member().key().cardinality(), u64))).concat(crate::implementation_from_dafny::UTF8::_default::Encode(s.member().key()).value()) } - /// dafny/StructuredEncryption/src/Paths.dfy(113,3) + /// dafny/StructuredEncryption/src/Paths.dfy(116,3) pub fn MakeCanonicalPath(path: &Sequence>) -> Sequence { - let mut _accumulator: Sequence = seq![] as Sequence; - let mut _r0 = path.clone(); - 'TAIL_CALL_START: loop { - let path = _r0; - if path.cardinality() == int!(0) { - return _accumulator.concat(&(seq![] as Sequence)); - } else { - _accumulator = _accumulator.concat(&_default::CanonicalPart(&path.get(&int!(0)))); - let mut _in0: Sequence> = path.drop(&int!(1)); - _r0 = _in0.clone(); - continue 'TAIL_CALL_START; - } + let mut ret = MaybePlacebo::>::new(); + let mut result: Sequence = seq![] as Sequence; + let mut _lo0: u64 = 0; + for i in integer_range_down(truncate!(path.cardinality(), u64), _lo0).map(Into::::into) { + result = _default::CanonicalPart(&path.get(&int!((&i).clone()))).concat(&result); } + ret = MaybePlacebo::from(result.clone()); + return ret.read(); } - /// dafny/StructuredEncryption/src/Paths.dfy(127,3) + /// dafny/StructuredEncryption/src/Paths.dfy(158,3) pub fn PathToString(path: &Sequence>) -> Sequence { let mut _accumulator: Sequence = seq![] as Sequence; let mut _r0 = path.clone(); 'TAIL_CALL_START: loop { let path = _r0; - if path.cardinality() == int!(0) { + if truncate!(path.cardinality(), u64) == 0 { return _accumulator.concat(&string_utf16_of("")); } else { - if path.cardinality() == int!(1) { - return _accumulator.concat(path.get(&int!(0)).member().key()); + if truncate!(path.cardinality(), u64) == 1 { + return _accumulator.concat(path.get(&int!((&truncate!((&int!(0)).clone(), u32)).clone())).member().key()); } else { - _accumulator = _accumulator.concat(&path.get(&int!(0)).member().key().concat(&string_utf16_of("."))); - let mut _in0: Sequence> = path.drop(&int!(1)); + _accumulator = _accumulator.concat(&path.get(&int!((&truncate!((&int!(0)).clone(), u32)).clone())).member().key().concat(&string_utf16_of("."))); + let mut _in0: Sequence> = path.drop(&int!((&truncate!((&int!(1)).clone(), u32)).clone())); _r0 = _in0.clone(); continue 'TAIL_CALL_START; } } } } - /// dafny/StructuredEncryption/src/Paths.dfy(96,3) + /// dafny/StructuredEncryption/src/Paths.dfy(99,3) pub fn MAP_TAG() -> u8 { DafnyCharUTF16(36 as u16).0 as u8 } - /// dafny/StructuredEncryption/src/Paths.dfy(95,3) + /// dafny/StructuredEncryption/src/Paths.dfy(98,3) pub fn ARRAY_TAG() -> u8 { DafnyCharUTF16(35 as u16).0 as u8 } } - /// dafny/StructuredEncryption/src/Paths.dfy(18,3) + /// dafny/StructuredEncryption/src/Paths.dfy(19,3) #[derive(PartialEq, Clone)] pub enum Selector { List { @@ -133224,10 +134629,7 @@ pub mod _StructuredEncryptionPaths_Compile { } } - /// dafny/StructuredEncryption/src/Paths.dfy(22,3) - pub type SelectorList = Sequence>; - - /// dafny/StructuredEncryption/src/Paths.dfy(23,3) + /// dafny/StructuredEncryption/src/Paths.dfy(24,3) pub type TerminalSelector = Sequence>; } /// dafny/StructuredEncryption/src/Util.dfy(6,1) @@ -133239,6 +134641,7 @@ pub mod _StructuredEncryptionUtil_Compile { pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::structuredencryption::internaldafny::types::PathSegment; pub use ::dafny_runtime::SetBuilder; pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::structuredencryption::internaldafny::types::AuthItem; + pub use ::dafny_runtime::truncate; pub use ::dafny_runtime::DafnyCharUTF16; pub use crate::implementation_from_dafny::_Wrappers_Compile::Result::Success; pub use crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::AlgorithmSuiteInfo; @@ -133246,9 +134649,7 @@ pub mod _StructuredEncryptionUtil_Compile { pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::structuredencryption::internaldafny::types::Error; pub use ::dafny_runtime::int; pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::structuredencryption::internaldafny::types::CryptoAction; - pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::structuredencryption::internaldafny::types::CryptoAction::ENCRYPT_AND_SIGN; - pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::structuredencryption::internaldafny::types::CryptoAction::SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT; - pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::structuredencryption::internaldafny::types::CryptoAction::SIGN_ONLY; + pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::structuredencryption::internaldafny::types::CryptoAction::DO_NOTHING; pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::structuredencryption::internaldafny::types::StructuredDataTerminal; pub use ::dafny_runtime::Map; pub use crate::implementation_from_dafny::UTF8::ValidUTF8Bytes; @@ -133256,10 +134657,11 @@ pub mod _StructuredEncryptionUtil_Compile { pub use ::std::marker::Sync; pub use ::std::marker::Send; pub use ::dafny_runtime::map; - pub use ::dafny_runtime::DafnyInt; pub use ::dafny_runtime::integer_range; + pub use ::std::convert::Into; pub use ::dafny_runtime::DafnyPrintWrapper; pub use ::dafny_runtime::string_utf16_of; + pub use ::dafny_runtime::DafnyInt; pub use crate::implementation_from_dafny::_Wrappers_Compile::Outcome; pub use ::dafny_runtime::seq; pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::structuredencryption::internaldafny::types::StructureSegment; @@ -133277,7 +134679,7 @@ pub mod _StructuredEncryptionUtil_Compile { pub struct _default {} impl _default { - /// dafny/StructuredEncryption/src/Util.dfy(62,3) + /// dafny/StructuredEncryption/src/Util.dfy(88,3) pub fn CryptoListToSet(xs: &Sequence>) -> Set>> { (&({ let mut xs = xs.clone(); @@ -133293,7 +134695,7 @@ pub mod _StructuredEncryptionUtil_Compile { }) }))() } - /// dafny/StructuredEncryption/src/Util.dfy(70,3) + /// dafny/StructuredEncryption/src/Util.dfy(96,3) pub fn CanonCryptoListToSet(xs: &Sequence>) -> Set>> { (&({ let mut xs = xs.clone(); @@ -133309,7 +134711,7 @@ pub mod _StructuredEncryptionUtil_Compile { }) }))() } - /// dafny/StructuredEncryption/src/Util.dfy(78,3) + /// dafny/StructuredEncryption/src/Util.dfy(104,3) pub fn AuthListToSet(xs: &Sequence>) -> Set>> { (&({ let mut xs = xs.clone(); @@ -133325,91 +134727,95 @@ pub mod _StructuredEncryptionUtil_Compile { }) }))() } - /// dafny/StructuredEncryption/src/Util.dfy(86,3) + /// dafny/StructuredEncryption/src/Util.dfy(112,3) pub fn CryptoListHasNoDuplicatesFromSet(xs: &Sequence>) -> bool { - _default::CryptoListToSet(xs).cardinality() == xs.cardinality() + truncate!(_default::CryptoListToSet(xs).cardinality(), u64) == truncate!(xs.cardinality(), u64) } - /// dafny/StructuredEncryption/src/Util.dfy(91,3) + /// dafny/StructuredEncryption/src/Util.dfy(119,3) pub fn AuthListHasNoDuplicatesFromSet(xs: &Sequence>) -> bool { - _default::AuthListToSet(xs).cardinality() == xs.cardinality() + truncate!(_default::AuthListToSet(xs).cardinality(), u64) == truncate!(xs.cardinality(), u64) } - /// dafny/StructuredEncryption/src/Util.dfy(158,3) + /// dafny/StructuredEncryption/src/Util.dfy(193,3) pub fn ValidString(x: &Sequence) -> bool { - x.cardinality() < crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default::UINT64_LIMIT() && matches!((&crate::implementation_from_dafny::UTF8::_default::Encode(x)).as_ref(), Success{ .. }) + crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default::HasUint64Len::(x) && matches!((&crate::implementation_from_dafny::UTF8::_default::Encode(x)).as_ref(), Success{ .. }) } - /// dafny/StructuredEncryption/src/Util.dfy(165,3) + /// dafny/StructuredEncryption/src/Util.dfy(200,3) pub fn ValidSuite(alg: &Arc) -> bool { matches!(alg.id().as_ref(), DBE{ .. }) && crate::implementation_from_dafny::_AlgorithmSuites_Compile::_default::_DBEAlgorithmSuite_q(alg) } - /// dafny/StructuredEncryption/src/Util.dfy(171,3) + /// dafny/StructuredEncryption/src/Util.dfy(206,3) pub fn E(s: &Sequence) -> Arc { Arc::new(Error::StructuredEncryptionException { message: s.clone() }) } - /// dafny/StructuredEncryption/src/Util.dfy(177,3) - pub fn ConstantTimeCompare(a: &Sequence, b: &Sequence, acc: u8) -> u8 { + /// dafny/StructuredEncryption/src/Util.dfy(212,3) + pub fn ConstantTimeCompare(a: &Sequence, b: &Sequence, pos: u64, acc: u8) -> u8 { let mut _r0 = a.clone(); let mut _r1 = b.clone(); - let mut _r2 = acc; + let mut _r2 = pos; + let mut _r3 = acc; 'TAIL_CALL_START: loop { let a = _r0; let b = _r1; - let acc = _r2; - if a.cardinality() == int!(0) { + let pos = _r2; + let acc = _r3; + if truncate!(a.cardinality(), u64) == pos { return acc; } else { - let mut x: u8 = a.get(&int!(0)) as u8 ^ b.get(&int!(0)) as u8; - let mut _in0: Sequence = a.drop(&int!(1)); - let mut _in1: Sequence = b.drop(&int!(1)); - let mut _in2: u8 = x | acc; + let mut x: u8 = a.get(&int!((&pos).clone())) as u8 ^ b.get(&int!((&pos).clone())) as u8; + let mut _in0: Sequence = a.clone(); + let mut _in1: Sequence = b.clone(); + let mut _in2: u64 = pos + 1; + let mut _in3: u8 = x | acc; _r0 = _in0.clone(); _r1 = _in1.clone(); _r2 = _in2; + _r3 = _in3; continue 'TAIL_CALL_START; } } } - /// dafny/StructuredEncryption/src/Util.dfy(187,3) + /// dafny/StructuredEncryption/src/Util.dfy(225,3) pub fn ConstantTimeEquals(a: &Sequence, b: &Sequence) -> bool { - _default::ConstantTimeCompare(a, b, 0 as u8) == 0 as u8 + _default::ConstantTimeCompare(a, b, 0, 0 as u8) == 0 as u8 } - /// dafny/StructuredEncryption/src/Util.dfy(194,3) + /// dafny/StructuredEncryption/src/Util.dfy(232,3) pub fn IsAuthAttr(x: &Arc) -> bool { - matches!(x.as_ref(), ENCRYPT_AND_SIGN{ .. }) || matches!(x.as_ref(), SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT{ .. }) || matches!(x.as_ref(), SIGN_ONLY{ .. }) + !matches!(x.as_ref(), DO_NOTHING{ .. }) } - /// dafny/StructuredEncryption/src/Util.dfy(200,3) + /// dafny/StructuredEncryption/src/Util.dfy(238,3) pub fn ValueToData(value: &Sequence, typeId: &Sequence) -> Arc { Arc::new(StructuredDataTerminal::StructuredDataTerminal { value: value.clone(), typeId: typeId.clone() }) } - /// dafny/StructuredEncryption/src/Util.dfy(208,3) + /// dafny/StructuredEncryption/src/Util.dfy(246,3) pub fn GetValue(data: &Arc) -> Sequence { data.value().clone() } - /// dafny/StructuredEncryption/src/Util.dfy(213,3) + /// dafny/StructuredEncryption/src/Util.dfy(251,3) pub fn ByteLess(x: u8, y: u8) -> bool { x < y } - /// dafny/StructuredEncryption/src/Util.dfy(218,3) + /// dafny/StructuredEncryption/src/Util.dfy(256,3) pub fn CharLess(x: &DafnyCharUTF16, y: &DafnyCharUTF16) -> bool { x.clone() < y.clone() } - /// dafny/StructuredEncryption/src/Util.dfy(260,3) + /// dafny/StructuredEncryption/src/Util.dfy(298,3) pub fn EcAsString(ec: &Map) -> Map, Sequence> { let mut output = MaybePlacebo::, Sequence>>::new(); let mut keys: Sequence = crate::implementation_from_dafny::SortedSets::_default::SetToOrderedSequence2::(&ec.keys(), &(Arc::new(move |x0: &u8,x1: &u8| _default::ByteLess(x0.clone(), x1.clone())) as Arc _ + Sync + Send>)); let mut ret: Map, Sequence> = map![]; - let mut _hi0: DafnyInt = keys.cardinality(); - for i in integer_range(int!(0), _hi0.clone()) { - let mut valueOrError0: Arc, Sequence>> = crate::implementation_from_dafny::UTF8::_default::Decode(&keys.get(&i)); + let mut _hi0: u64 = truncate!(keys.cardinality(), u64); + for i in integer_range(0, _hi0).map(Into::::into) { + let mut valueOrError0: Arc, Sequence>> = crate::implementation_from_dafny::UTF8::_default::Decode(&keys.get(&int!((&i).clone()))); if !(!valueOrError0.IsFailure()) { panic!("Halt") }; let mut key: Sequence = valueOrError0.Extract(); - let mut valueOrError1: Arc, Sequence>> = crate::implementation_from_dafny::UTF8::_default::Decode(&ec.get(&keys.get(&i))); + let mut valueOrError1: Arc, Sequence>> = crate::implementation_from_dafny::UTF8::_default::Decode(&ec.get(&keys.get(&int!((&i).clone())))); if !(!valueOrError1.IsFailure()) { panic!("Halt") }; @@ -133419,7 +134825,7 @@ pub mod _StructuredEncryptionUtil_Compile { output = MaybePlacebo::from(ret.clone()); return output.read(); } - /// dafny/StructuredEncryption/src/Util.dfy(272,3) + /// dafny/StructuredEncryption/src/Util.dfy(311,3) pub fn PrintEncryptionContext(ec: &Map, name: &Sequence) -> () { let mut keys: Sequence = crate::implementation_from_dafny::SortedSets::_default::SetToOrderedSequence2::(&ec.keys(), &(Arc::new(move |x0: &u8,x1: &u8| _default::ByteLess(x0.clone(), x1.clone())) as Arc _ + Sync + Send>)); print!("{}", DafnyPrintWrapper(name)); @@ -133453,11 +134859,12 @@ pub mod _StructuredEncryptionUtil_Compile { /// # where `typeId` is the attribute's [type ID](./ddb-attribute-serialization.md#type-id) /// # and `serializedValue` is the attribute's value serialized according to /// # [Attribute Value Serialization](./ddb-attribute-serialization.md#attribute-value-serialization). - /// dafny/StructuredEncryption/src/Util.dfy(284,3) + /// dafny/StructuredEncryption/src/Util.dfy(323,3) pub fn EncodeTerminal(t: &Arc) -> ValidUTF8Bytes { - crate::implementation_from_dafny::UTF8::_default::EncodeAscii(&crate::implementation_from_dafny::_Base64_Compile::_default::Encode(&t.typeId().concat(t.value()))) + let mut base: Sequence = crate::implementation_from_dafny::_Base64_Compile::_default::Encode(&t.typeId().concat(t.value())); + crate::implementation_from_dafny::UTF8::_default::Encode(&base).value().clone() } - /// dafny/StructuredEncryption/src/Util.dfy(298,3) + /// dafny/StructuredEncryption/src/Util.dfy(338,3) pub fn DecodeTerminal(t: &ValidUTF8Bytes) -> Arc, Sequence>> { let mut valueOrError0: Arc, Sequence>> = crate::implementation_from_dafny::UTF8::_default::Decode(t); if valueOrError0.IsFailure() { @@ -133469,12 +134876,12 @@ pub mod _StructuredEncryptionUtil_Compile { valueOrError1.PropagateFailure::>() } else { let mut base64DecodedVal: Sequence = valueOrError1.Extract(); - let mut valueOrError2: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(base64DecodedVal.cardinality() >= int!(2), &string_utf16_of("Invalid serialization of DDB Attribute in encryption context.")); + let mut valueOrError2: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(truncate!(base64DecodedVal.cardinality(), u64) >= 2, &string_utf16_of("Invalid serialization of DDB Attribute in encryption context.")); if valueOrError2.IsFailure() { valueOrError2.PropagateFailure::>() } else { - let mut typeId: Sequence = base64DecodedVal.take(&int!(2)); - let mut serializedValue: Sequence = base64DecodedVal.drop(&int!(2)); + let mut typeId: Sequence = base64DecodedVal.take(&int!((&truncate!((&int!(2)).clone(), u32)).clone())); + let mut serializedValue: Sequence = base64DecodedVal.drop(&int!((&truncate!((&int!(2)).clone(), u32)).clone())); Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::, Sequence>::Success { value: Arc::new(StructuredDataTerminal::StructuredDataTerminal { value: serializedValue.clone(), @@ -133485,19 +134892,19 @@ pub mod _StructuredEncryptionUtil_Compile { } } } - /// dafny/StructuredEncryption/src/Util.dfy(21,3) + /// dafny/StructuredEncryption/src/Util.dfy(22,3) pub fn ReservedPrefix() -> Sequence { string_utf16_of("aws_dbe_") } - /// dafny/StructuredEncryption/src/Util.dfy(23,3) + /// dafny/StructuredEncryption/src/Util.dfy(24,3) pub fn HeaderField() -> Sequence { _default::ReservedPrefix().concat(&string_utf16_of("head")) } - /// dafny/StructuredEncryption/src/Util.dfy(24,3) + /// dafny/StructuredEncryption/src/Util.dfy(25,3) pub fn FooterField() -> Sequence { _default::ReservedPrefix().concat(&string_utf16_of("foot")) } - /// dafny/StructuredEncryption/src/Util.dfy(25,3) + /// dafny/StructuredEncryption/src/Util.dfy(26,3) pub fn HeaderPath() -> Sequence> { seq![Arc::new(PathSegment::member { member: Arc::new(StructureSegment::StructureSegment { @@ -133505,7 +134912,7 @@ pub mod _StructuredEncryptionUtil_Compile { }) })] } - /// dafny/StructuredEncryption/src/Util.dfy(26,3) + /// dafny/StructuredEncryption/src/Util.dfy(27,3) pub fn FooterPath() -> Sequence> { seq![Arc::new(PathSegment::member { member: Arc::new(StructureSegment::StructureSegment { @@ -133513,183 +134920,189 @@ pub mod _StructuredEncryptionUtil_Compile { }) })] } - /// dafny/StructuredEncryption/src/Util.dfy(27,3) + /// dafny/StructuredEncryption/src/Util.dfy(28,3) pub fn HeaderPaths() -> Sequence>> { seq![_default::HeaderPath(), _default::FooterPath()] } - /// dafny/StructuredEncryption/src/Util.dfy(28,3) + /// dafny/StructuredEncryption/src/Util.dfy(29,3) pub fn ReservedCryptoContextPrefixString() -> Sequence { string_utf16_of("aws-crypto-") } - /// dafny/StructuredEncryption/src/Util.dfy(29,3) + /// dafny/StructuredEncryption/src/Util.dfy(31,3) pub fn ReservedCryptoContextPrefixUTF8() -> ValidUTF8Bytes { - crate::implementation_from_dafny::UTF8::_default::EncodeAscii(&_default::ReservedCryptoContextPrefixString()) + let mut s: Sequence = seq![97, 119, 115, 45, 99, 114, 121, 112, 116, 111, 45]; + s.clone() } - /// dafny/StructuredEncryption/src/Util.dfy(31,3) + /// dafny/StructuredEncryption/src/Util.dfy(36,3) pub fn ATTR_PREFIX() -> Sequence { _default::ReservedCryptoContextPrefixString().concat(&string_utf16_of("attr.")) } - /// dafny/StructuredEncryption/src/Util.dfy(32,3) + /// dafny/StructuredEncryption/src/Util.dfy(38,3) pub fn EC_ATTR_PREFIX() -> ValidUTF8Bytes { - crate::implementation_from_dafny::UTF8::_default::EncodeAscii(&_default::ATTR_PREFIX()) + let mut s: Sequence = seq![97, 119, 115, 45, 99, 114, 121, 112, 116, 111, 45, 97, 116, 116, 114, 46]; + s.clone() } - /// dafny/StructuredEncryption/src/Util.dfy(33,3) + /// dafny/StructuredEncryption/src/Util.dfy(43,3) pub fn LEGEND() -> Sequence { _default::ReservedCryptoContextPrefixString().concat(&string_utf16_of("legend")) } - /// dafny/StructuredEncryption/src/Util.dfy(34,3) + /// dafny/StructuredEncryption/src/Util.dfy(45,3) pub fn LEGEND_UTF8() -> ValidUTF8Bytes { - crate::implementation_from_dafny::UTF8::_default::EncodeAscii(&_default::LEGEND()) + let mut s: Sequence = seq![97, 119, 115, 45, 99, 114, 121, 112, 116, 111, 45, 108, 101, 103, 101, 110, 100]; + s.clone() } - /// dafny/StructuredEncryption/src/Util.dfy(40,3) + /// dafny/StructuredEncryption/src/Util.dfy(55,3) pub fn NULL_STR() -> Sequence { string_utf16_of("null") } - /// dafny/StructuredEncryption/src/Util.dfy(41,3) + /// dafny/StructuredEncryption/src/Util.dfy(56,3) pub fn NULL_UTF8() -> ValidUTF8Bytes { - crate::implementation_from_dafny::UTF8::_default::EncodeAscii(&_default::NULL_STR()) + let mut s: Sequence = seq![110, 117, 108, 108]; + s.clone() } - /// dafny/StructuredEncryption/src/Util.dfy(42,3) + /// dafny/StructuredEncryption/src/Util.dfy(61,3) pub fn TRUE_STR() -> Sequence { string_utf16_of("true") } - /// dafny/StructuredEncryption/src/Util.dfy(43,3) + /// dafny/StructuredEncryption/src/Util.dfy(62,3) pub fn TRUE_UTF8() -> ValidUTF8Bytes { - crate::implementation_from_dafny::UTF8::_default::EncodeAscii(&_default::TRUE_STR()) + let mut s: Sequence = seq![116, 114, 117, 101]; + s.clone() } - /// dafny/StructuredEncryption/src/Util.dfy(44,3) + /// dafny/StructuredEncryption/src/Util.dfy(67,3) pub fn FALSE_STR() -> Sequence { string_utf16_of("false") } - /// dafny/StructuredEncryption/src/Util.dfy(45,3) + /// dafny/StructuredEncryption/src/Util.dfy(68,3) pub fn FALSE_UTF8() -> ValidUTF8Bytes { - crate::implementation_from_dafny::UTF8::_default::EncodeAscii(&_default::FALSE_STR()) + let mut s: Sequence = seq![102, 97, 108, 115, 101]; + s.clone() } - /// dafny/StructuredEncryption/src/Util.dfy(129,3) + /// dafny/StructuredEncryption/src/Util.dfy(160,3) pub fn BYTES_TYPE_ID() -> Sequence { seq![255, 255] } - /// dafny/StructuredEncryption/src/Util.dfy(128,3) - pub fn TYPEID_LEN() -> DafnyInt { - int!(2) - } - /// 256 bits, for 256-bit AES keys - /// dafny/StructuredEncryption/src/Util.dfy(135,3) - pub fn KeySize() -> DafnyInt { - int!(32) - } - /// dafny/StructuredEncryption/src/Util.dfy(137,3) - pub fn AuthTagSize() -> DafnyInt { - int!(16) - } - /// 96 bits, per AES-GCM nonces - /// dafny/StructuredEncryption/src/Util.dfy(136,3) - pub fn NonceSize() -> DafnyInt { - int!(12) - } - /// dafny/StructuredEncryption/src/Util.dfy(239,3) + /// dafny/StructuredEncryption/src/Util.dfy(277,3) pub fn TERM_T() -> u8 { 0 } - /// dafny/StructuredEncryption/src/Util.dfy(243,3) + /// dafny/StructuredEncryption/src/Util.dfy(281,3) pub fn NULL_T() -> u8 { 0 } - /// dafny/StructuredEncryption/src/Util.dfy(249,3) + /// dafny/StructuredEncryption/src/Util.dfy(287,3) pub fn NULL() -> TerminalTypeId { seq![_default::TERM_T(), _default::NULL_T()] } - /// dafny/StructuredEncryption/src/Util.dfy(244,3) + /// dafny/StructuredEncryption/src/Util.dfy(282,3) pub fn STRING_T() -> u8 { 1 } - /// dafny/StructuredEncryption/src/Util.dfy(250,3) + /// dafny/StructuredEncryption/src/Util.dfy(288,3) pub fn STRING() -> TerminalTypeId { seq![_default::TERM_T(), _default::STRING_T()] } - /// dafny/StructuredEncryption/src/Util.dfy(245,3) + /// dafny/StructuredEncryption/src/Util.dfy(283,3) pub fn NUMBER_T() -> u8 { 2 } - /// dafny/StructuredEncryption/src/Util.dfy(251,3) + /// dafny/StructuredEncryption/src/Util.dfy(289,3) pub fn NUMBER() -> TerminalTypeId { seq![_default::TERM_T(), _default::NUMBER_T()] } - /// dafny/StructuredEncryption/src/Util.dfy(247,3) + /// dafny/StructuredEncryption/src/Util.dfy(285,3) pub fn BOOLEAN_T() -> u8 { 4 } - /// dafny/StructuredEncryption/src/Util.dfy(253,3) + /// dafny/StructuredEncryption/src/Util.dfy(291,3) pub fn BOOLEAN() -> TerminalTypeId { seq![_default::TERM_T(), _default::BOOLEAN_T()] } - /// dafny/StructuredEncryption/src/Util.dfy(240,3) + /// dafny/StructuredEncryption/src/Util.dfy(278,3) pub fn SET_T() -> u8 { 1 } - /// dafny/StructuredEncryption/src/Util.dfy(254,3) + /// dafny/StructuredEncryption/src/Util.dfy(292,3) pub fn STRING_SET() -> TerminalTypeId { seq![_default::SET_T(), _default::STRING_T()] } - /// dafny/StructuredEncryption/src/Util.dfy(255,3) + /// dafny/StructuredEncryption/src/Util.dfy(293,3) pub fn NUMBER_SET() -> TerminalTypeId { seq![_default::SET_T(), _default::NUMBER_T()] } - /// dafny/StructuredEncryption/src/Util.dfy(246,3) + /// dafny/StructuredEncryption/src/Util.dfy(284,3) pub fn BINARY_T() -> u8 { 255 } - /// dafny/StructuredEncryption/src/Util.dfy(256,3) + /// dafny/StructuredEncryption/src/Util.dfy(294,3) pub fn BINARY_SET() -> TerminalTypeId { seq![_default::SET_T(), _default::BINARY_T()] } - /// dafny/StructuredEncryption/src/Util.dfy(241,3) + /// dafny/StructuredEncryption/src/Util.dfy(279,3) pub fn MAP_T() -> u8 { 2 } - /// dafny/StructuredEncryption/src/Util.dfy(257,3) + /// dafny/StructuredEncryption/src/Util.dfy(295,3) pub fn MAP() -> TerminalTypeId { seq![_default::MAP_T(), _default::NULL_T()] } - /// dafny/StructuredEncryption/src/Util.dfy(242,3) + /// dafny/StructuredEncryption/src/Util.dfy(280,3) pub fn LIST_T() -> u8 { 3 } - /// dafny/StructuredEncryption/src/Util.dfy(258,3) + /// dafny/StructuredEncryption/src/Util.dfy(296,3) pub fn LIST() -> TerminalTypeId { seq![_default::LIST_T(), _default::NULL_T()] } - /// dafny/StructuredEncryption/src/Util.dfy(138,3) - pub fn MSGID_LEN() -> DafnyInt { - int!(32) - } - /// dafny/StructuredEncryption/src/Util.dfy(35,3) + /// dafny/StructuredEncryption/src/Util.dfy(50,3) pub fn LEGEND_STRING() -> DafnyCharUTF16 { DafnyCharUTF16(83 as u16) } - /// dafny/StructuredEncryption/src/Util.dfy(36,3) + /// dafny/StructuredEncryption/src/Util.dfy(51,3) pub fn LEGEND_NUMBER() -> DafnyCharUTF16 { DafnyCharUTF16(78 as u16) } - /// dafny/StructuredEncryption/src/Util.dfy(37,3) + /// dafny/StructuredEncryption/src/Util.dfy(52,3) pub fn LEGEND_LITERAL() -> DafnyCharUTF16 { DafnyCharUTF16(76 as u16) } - /// dafny/StructuredEncryption/src/Util.dfy(38,3) + /// dafny/StructuredEncryption/src/Util.dfy(53,3) pub fn LEGEND_BINARY() -> DafnyCharUTF16 { DafnyCharUTF16(66 as u16) } - /// dafny/StructuredEncryption/src/Util.dfy(139,3) + /// dafny/StructuredEncryption/src/Util.dfy(159,3) + pub fn TYPEID_LEN64() -> u64 { + 2 + } + /// 256 bits, for 256-bit AES keys + /// dafny/StructuredEncryption/src/Util.dfy(170,3) + pub fn KeySize64() -> u64 { + 32 + } + /// 96 bits, per AES-GCM nonces + /// dafny/StructuredEncryption/src/Util.dfy(171,3) + pub fn NonceSize64() -> u64 { + 12 + } + /// dafny/StructuredEncryption/src/Util.dfy(172,3) + pub fn AuthTagSize64() -> u64 { + 16 + } + /// dafny/StructuredEncryption/src/Util.dfy(173,3) + pub fn MSGID_LEN64() -> u64 { + 32 + } + /// dafny/StructuredEncryption/src/Util.dfy(174,3) pub fn DbeAlgorithmFamily() -> u8 { 103 } - /// dafny/StructuredEncryption/src/Util.dfy(252,3) + /// dafny/StructuredEncryption/src/Util.dfy(290,3) pub fn BINARY() -> TerminalTypeId { seq![255, 255] } } - /// dafny/StructuredEncryption/src/Util.dfy(47,3) + /// dafny/StructuredEncryption/src/Util.dfy(73,3) #[derive(PartialEq, Clone)] pub enum CanonCryptoItem { CanonCryptoItem { @@ -133790,7 +135203,7 @@ pub mod _StructuredEncryptionUtil_Compile { } } - /// dafny/StructuredEncryption/src/Util.dfy(53,3) + /// dafny/StructuredEncryption/src/Util.dfy(79,3) #[derive(PartialEq, Clone)] pub enum CanonAuthItem { CanonAuthItem { @@ -133891,25 +135304,26 @@ pub mod _StructuredEncryptionUtil_Compile { } } - /// dafny/StructuredEncryption/src/Util.dfy(149,3) + /// dafny/StructuredEncryption/src/Util.dfy(184,3) pub type Key = Sequence; - /// dafny/StructuredEncryption/src/Util.dfy(150,3) + /// dafny/StructuredEncryption/src/Util.dfy(185,3) pub type Nonce = Sequence; - /// dafny/StructuredEncryption/src/Util.dfy(151,3) + /// dafny/StructuredEncryption/src/Util.dfy(186,3) pub type AuthTag = Sequence; - /// dafny/StructuredEncryption/src/Util.dfy(152,3) + /// dafny/StructuredEncryption/src/Util.dfy(187,3) pub type MessageID = Sequence; - /// dafny/StructuredEncryption/src/Util.dfy(157,3) + /// dafny/StructuredEncryption/src/Util.dfy(192,3) pub type GoodString = Sequence; } /// dafny/DynamoDbEncryption/src/TermLoc.dfy(23,1) pub mod _TermLoc_Compile { pub use ::dafny_runtime::Sequence; pub use ::std::sync::Arc; + pub use ::dafny_runtime::truncate; pub use ::dafny_runtime::int; pub use ::dafny_runtime::Map; pub use ::dafny_runtime::DafnyCharUTF16; @@ -133931,10 +135345,7 @@ pub mod _TermLoc_Compile { pub use crate::implementation_from_dafny::software::amazon::cryptography::services::dynamodb::internaldafny::types::AttributeValue::L; pub use crate::implementation_from_dafny::_TermLoc_Compile::Selector::List; pub use crate::implementation_from_dafny::software::amazon::cryptography::services::dynamodb::internaldafny::types::AttributeValue::NULL; - pub use ::dafny_runtime::_System::nat; - pub use ::dafny_runtime::DafnyInt; pub use crate::implementation_from_dafny::_Wrappers_Compile::Outcome; - pub use ::dafny_runtime::truncate; pub use ::std::fmt::Debug; pub use ::std::fmt::Formatter; pub use ::dafny_runtime::DafnyPrint; @@ -133949,45 +135360,45 @@ pub mod _TermLoc_Compile { impl _default { /// dafny/DynamoDbEncryption/src/TermLoc.dfy(46,3) pub fn ValidTermLoc(s: &Sequence>) -> bool { - int!(0) < s.cardinality() && s.cardinality() < crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default::UINT64_LIMIT() && matches!((&s.get(&int!(0))).as_ref(), crate::implementation_from_dafny::_TermLoc_Compile::Selector::Map{ .. }) + 0 < truncate!(s.cardinality(), u64) && matches!((&s.get(&int!((&truncate!((&int!(0)).clone(), u32)).clone()))).as_ref(), crate::implementation_from_dafny::_TermLoc_Compile::Selector::Map{ .. }) } - /// dafny/DynamoDbEncryption/src/TermLoc.dfy(52,3) + /// dafny/DynamoDbEncryption/src/TermLoc.dfy(53,3) pub fn TermLocToString(t: &TermLoc) -> Sequence { - t.get(&int!(0)).key().concat(&_default::SelectorListToString(&t.drop(&int!(1)))) + t.get(&int!((&truncate!((&int!(0)).clone(), u32)).clone())).key().concat(&_default::SelectorListToString(&t.drop(&int!((&truncate!((&int!(1)).clone(), u32)).clone())))) } - /// dafny/DynamoDbEncryption/src/TermLoc.dfy(56,3) - pub fn SelectorListToString(s: &SelectorList) -> Sequence { + /// dafny/DynamoDbEncryption/src/TermLoc.dfy(57,3) + pub fn SelectorListToString(s: &Sequence>) -> Sequence { let mut _accumulator: Sequence = seq![] as Sequence; let mut _r0 = s.clone(); 'TAIL_CALL_START: loop { let s = _r0; - if s.cardinality() == int!(0) { + if truncate!(s.cardinality(), u64) == 0 { return _accumulator.concat(&string_utf16_of("")); } else { - if matches!((&s.get(&int!(0))).as_ref(), crate::implementation_from_dafny::_TermLoc_Compile::Selector::Map{ .. }) { - _accumulator = _accumulator.concat(&string_utf16_of(".").concat(s.get(&int!(0)).key())); - let mut _in0: Sequence> = s.drop(&int!(1)); + if matches!((&s.get(&int!((&truncate!((&int!(0)).clone(), u32)).clone()))).as_ref(), crate::implementation_from_dafny::_TermLoc_Compile::Selector::Map{ .. }) { + _accumulator = _accumulator.concat(&string_utf16_of(".").concat(s.get(&int!((&truncate!((&int!(0)).clone(), u32)).clone())).key())); + let mut _in0: Sequence> = s.drop(&int!((&truncate!((&int!(1)).clone(), u32)).clone())); _r0 = _in0.clone(); continue 'TAIL_CALL_START; } else { - _accumulator = _accumulator.concat(&string_utf16_of("[").concat(&crate::implementation_from_dafny::_StandardLibrary_Compile::_String_Compile::_default::Base10Int2String(&int!(s.get(&int!(0)).pos().clone()))).concat(&string_utf16_of("]"))); - let mut _in1: Sequence> = s.drop(&int!(1)); + _accumulator = _accumulator.concat(&string_utf16_of("[").concat(&crate::implementation_from_dafny::_StandardLibrary_Compile::_String_Compile::_default::Base10Int2String(&int!(s.get(&int!((&truncate!((&int!(0)).clone(), u32)).clone())).pos().clone()))).concat(&string_utf16_of("]"))); + let mut _in1: Sequence> = s.drop(&int!((&truncate!((&int!(1)).clone(), u32)).clone())); _r0 = _in1.clone(); continue 'TAIL_CALL_START; } } } } - /// dafny/DynamoDbEncryption/src/TermLoc.dfy(67,3) + /// dafny/DynamoDbEncryption/src/TermLoc.dfy(69,3) pub fn LacksAttribute(t: &TermLoc, item: &Map, Arc>) -> bool { - !item.contains(t.get(&int!(0)).key()) + !item.contains(t.get(&int!((&truncate!((&int!(0)).clone(), u32)).clone())).key()) } - /// dafny/DynamoDbEncryption/src/TermLoc.dfy(73,3) + /// dafny/DynamoDbEncryption/src/TermLoc.dfy(75,3) pub fn TermToAttr(t: &TermLoc, item: &Map, Arc>, names: &Arc, Sequence>>>) -> Arc>> { - if !item.contains(t.get(&int!(0)).key()) { + if !item.contains(t.get(&int!((&truncate!((&int!(0)).clone(), u32)).clone())).key()) { Arc::new(Option::>::None {}) } else { - let mut res: Arc, Arc>> = _default::GetTerminal(&item.get(t.get(&int!(0)).key()), &t.drop(&int!(1)), names); + let mut res: Arc, Arc>> = _default::GetTerminal(&item.get(t.get(&int!((&truncate!((&int!(0)).clone(), u32)).clone())).key()), &t.drop(&int!((&truncate!((&int!(1)).clone(), u32)).clone())), names); if matches!((&res).as_ref(), Success{ .. }) { Arc::new(Option::>::Some { value: res.value().clone() @@ -133997,7 +135408,7 @@ pub mod _TermLoc_Compile { } } } - /// dafny/DynamoDbEncryption/src/TermLoc.dfy(87,3) + /// dafny/DynamoDbEncryption/src/TermLoc.dfy(89,3) pub fn TermToString(t: &TermLoc, item: &Map, Arc>) -> Arc>>, Arc>> { let mut part: Arc>> = _default::TermToAttr(t, item, &Arc::new(Option::, Sequence>>::None {})); if matches!((&part).as_ref(), None{ .. }) { @@ -134018,7 +135429,7 @@ pub mod _TermLoc_Compile { } } } - /// dafny/DynamoDbEncryption/src/TermLoc.dfy(99,3) + /// dafny/DynamoDbEncryption/src/TermLoc.dfy(101,3) pub fn TermToBytes(t: &TermLoc, item: &Map, Arc>) -> Arc>>, Arc>> { let mut part: Arc>> = _default::TermToAttr(t, item, &Arc::new(Option::, Sequence>>::None {})); if matches!((&part).as_ref(), None{ .. }) { @@ -134043,7 +135454,7 @@ pub mod _TermLoc_Compile { } } } - /// dafny/DynamoDbEncryption/src/TermLoc.dfy(111,3) + /// dafny/DynamoDbEncryption/src/TermLoc.dfy(113,3) pub fn GetTerminal(v: &Arc, parts: &Sequence>, names: &Arc, Sequence>>>) -> Arc, Arc>> { let mut _r0 = v.clone(); let mut _r1 = parts.clone(); @@ -134052,7 +135463,7 @@ pub mod _TermLoc_Compile { let v = _r0; let parts = _r1; let names = _r2; - if parts.cardinality() == int!(0) { + if truncate!(parts.cardinality(), u64) == 0 { return Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::, Arc>::Success { value: v.clone() }); @@ -134103,15 +135514,15 @@ pub mod _TermLoc_Compile { if matches!((&_source0).as_ref(), M{ .. }) { let mut ___mcc_h6: Map, Arc> = _source0.M().clone(); let mut m: Map, Arc> = ___mcc_h6.clone(); - if !matches!((&parts.get(&int!(0))).as_ref(), crate::implementation_from_dafny::_TermLoc_Compile::Selector::Map{ .. }) { + if !matches!((&parts.get(&int!((&truncate!((&int!(0)).clone(), u32)).clone()))).as_ref(), crate::implementation_from_dafny::_TermLoc_Compile::Selector::Map{ .. }) { return Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::, Arc>::Failure { error: crate::implementation_from_dafny::_DynamoDbEncryptionUtil_Compile::_default::E(&string_utf16_of("Tried to access map with index")) }); } else { - if !m.contains(parts.get(&int!(0)).key()) { - if matches!((&names).as_ref(), Some{ .. }) && names.value().contains(parts.get(&int!(0)).key()) && m.contains(&names.value().get(parts.get(&int!(0)).key())) { - let mut _in0: Arc = m.get(&names.value().get(parts.get(&int!(0)).key())); - let mut _in1: Sequence> = parts.drop(&int!(1)); + if !m.contains(parts.get(&int!((&truncate!((&int!(0)).clone(), u32)).clone())).key()) { + if matches!((&names).as_ref(), Some{ .. }) && names.value().contains(parts.get(&int!((&truncate!((&int!(0)).clone(), u32)).clone())).key()) && m.contains(&names.value().get(parts.get(&int!((&truncate!((&int!(0)).clone(), u32)).clone())).key())) { + let mut _in0: Arc = m.get(&names.value().get(parts.get(&int!((&truncate!((&int!(0)).clone(), u32)).clone())).key())); + let mut _in1: Sequence> = parts.drop(&int!((&truncate!((&int!(1)).clone(), u32)).clone())); let mut _in2: Arc, Sequence>>> = names.clone(); _r0 = _in0.clone(); _r1 = _in1.clone(); @@ -134119,12 +135530,12 @@ pub mod _TermLoc_Compile { continue 'TAIL_CALL_START; } else { return Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::, Arc>::Failure { - error: crate::implementation_from_dafny::_DynamoDbEncryptionUtil_Compile::_default::E(&string_utf16_of("Tried to access ").concat(parts.get(&int!(0)).key()).concat(&string_utf16_of(" which is not in the map."))) + error: crate::implementation_from_dafny::_DynamoDbEncryptionUtil_Compile::_default::E(&string_utf16_of("Tried to access ").concat(parts.get(&int!((&truncate!((&int!(0)).clone(), u32)).clone())).key()).concat(&string_utf16_of(" which is not in the map."))) }); } } else { - let mut _in3: Arc = m.get(parts.get(&int!(0)).key()); - let mut _in4: Sequence> = parts.drop(&int!(1)); + let mut _in3: Arc = m.get(parts.get(&int!((&truncate!((&int!(0)).clone(), u32)).clone())).key()); + let mut _in4: Sequence> = parts.drop(&int!((&truncate!((&int!(1)).clone(), u32)).clone())); let mut _in5: Arc, Sequence>>> = names.clone(); _r0 = _in3.clone(); _r1 = _in4.clone(); @@ -134136,18 +135547,18 @@ pub mod _TermLoc_Compile { if matches!((&_source0).as_ref(), L{ .. }) { let mut ___mcc_h7: Sequence> = _source0.L().clone(); let mut l: Sequence> = ___mcc_h7.clone(); - if !matches!((&parts.get(&int!(0))).as_ref(), List{ .. }) { + if !matches!((&parts.get(&int!((&truncate!((&int!(0)).clone(), u32)).clone()))).as_ref(), List{ .. }) { return Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::, Arc>::Failure { error: crate::implementation_from_dafny::_DynamoDbEncryptionUtil_Compile::_default::E(&string_utf16_of("Tried to access list with key")) }); } else { - if l.cardinality() <= int!(parts.get(&int!(0)).pos().clone()) { + if truncate!(l.cardinality(), u64) <= parts.get(&int!((&truncate!((&int!(0)).clone(), u32)).clone())).pos().clone() { return Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::, Arc>::Failure { error: crate::implementation_from_dafny::_DynamoDbEncryptionUtil_Compile::_default::E(&string_utf16_of("Tried to access beyond the end of the list")) }); } else { - let mut _in6: Arc = l.get(&int!(parts.get(&int!(0)).pos().clone())); - let mut _in7: Sequence> = parts.drop(&int!(1)); + let mut _in6: Arc = l.get(&int!(parts.get(&int!((&truncate!((&int!(0)).clone(), u32)).clone())).pos().clone())); + let mut _in7: Sequence> = parts.drop(&int!((&truncate!((&int!(1)).clone(), u32)).clone())); let mut _in8: Arc, Sequence>>> = names.clone(); _r0 = _in6.clone(); _r1 = _in7.clone(); @@ -134180,7 +135591,7 @@ pub mod _TermLoc_Compile { } } } - /// dafny/DynamoDbEncryption/src/TermLoc.dfy(151,3) + /// dafny/DynamoDbEncryption/src/TermLoc.dfy(155,3) pub fn AttrValueToString(v: &Arc) -> Arc, Arc>> { let mut _source0: Arc = v.clone(); if matches!((&_source0).as_ref(), S{ .. }) { @@ -134265,12 +135676,12 @@ pub mod _TermLoc_Compile { } } } - /// dafny/DynamoDbEncryption/src/TermLoc.dfy(176,3) - pub fn FindStartOfNext(s: &Sequence) -> Arc> { - let mut dot: Arc> = crate::implementation_from_dafny::_StandardLibrary_Compile::_default::FindIndexMatching::(s, &DafnyCharUTF16(46 as u16), &int!(0)); - let mut bracket: Arc> = crate::implementation_from_dafny::_StandardLibrary_Compile::_default::FindIndexMatching::(s, &DafnyCharUTF16(91 as u16), &int!(0)); + /// dafny/DynamoDbEncryption/src/TermLoc.dfy(180,3) + pub fn FindStartOfNext(s: &Sequence) -> Arc> { + let mut dot: Arc> = crate::implementation_from_dafny::_StandardLibrary_Compile::_default::FindIndexMatching::(s, &DafnyCharUTF16(46 as u16), 0); + let mut bracket: Arc> = crate::implementation_from_dafny::_StandardLibrary_Compile::_default::FindIndexMatching::(s, &DafnyCharUTF16(91 as u16), 0); if matches!((&dot).as_ref(), None{ .. }) && matches!((&bracket).as_ref(), None{ .. }) { - Arc::new(Option::::None {}) + Arc::new(Option::::None {}) } else { if matches!((&dot).as_ref(), Some{ .. }) && matches!((&bracket).as_ref(), Some{ .. }) { if dot.value().clone() < bracket.value().clone() { @@ -134287,109 +135698,109 @@ pub mod _TermLoc_Compile { } } } - /// dafny/DynamoDbEncryption/src/TermLoc.dfy(201,3) - pub fn GetNumber(s: &Sequence, acc: &nat) -> Arc>> { + /// dafny/DynamoDbEncryption/src/TermLoc.dfy(206,3) + pub fn GetNumber(s: &Sequence, acc: u64, pos: u64) -> Arc>> { let mut _r0 = s.clone(); - let mut _r1 = acc.clone(); + let mut _r1 = acc; + let mut _r2 = pos; 'TAIL_CALL_START: loop { let s = _r0; let acc = _r1; - if s.cardinality() == int!(0) { - return Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::>::Success { - value: acc.clone() + let pos = _r2; + if truncate!(s.cardinality(), u64) == pos { + return Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::>::Success { + value: acc }); } else { - if DafnyCharUTF16(48 as u16) <= s.get(&int!(0)) && s.get(&int!(0)) <= DafnyCharUTF16(57 as u16) { - let mut _in0: Sequence = s.drop(&int!(1)); - let mut _in1: DafnyInt = acc.clone() * int!(10) + int!(s.get(&int!(0)).0) - int!(DafnyCharUTF16(48 as u16).0); - _r0 = _in0.clone(); - _r1 = _in1.clone(); - continue 'TAIL_CALL_START; + if DafnyCharUTF16(48 as u16) <= s.get(&int!((&truncate!((&int!(0)).clone(), u32)).clone())) && s.get(&int!((&truncate!((&int!(0)).clone(), u32)).clone())) <= DafnyCharUTF16(57 as u16) { + if acc < 1152921504606846975 { + let mut _in0: Sequence = s.clone(); + let mut _in1: u64 = acc * 10 + s.get(&int!((&truncate!((&int!(0)).clone(), u32)).clone())).0 as u64 - DafnyCharUTF16(48 as u16).0 as u64; + let mut _in2: u64 = crate::implementation_from_dafny::_StandardLibrary_Compile::_MemoryMath_Compile::_default::Add(pos, 1); + _r0 = _in0.clone(); + _r1 = _in1; + _r2 = _in2; + continue 'TAIL_CALL_START; + } else { + return Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::>::Failure { + error: crate::implementation_from_dafny::_DynamoDbEncryptionUtil_Compile::_default::E(&string_utf16_of("Number is too big for list index : ").concat(&s)) + }); + } } else { - return Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::>::Failure { - error: crate::implementation_from_dafny::_DynamoDbEncryptionUtil_Compile::_default::E(&string_utf16_of("Unexpected character in number : ").concat(&seq![s.get(&int!(0))])) + return Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::>::Failure { + error: crate::implementation_from_dafny::_DynamoDbEncryptionUtil_Compile::_default::E(&string_utf16_of("Unexpected character in number : ").concat(&seq![s.get(&int!((&truncate!((&int!(0)).clone(), u32)).clone()))])) }); } } } } - /// dafny/DynamoDbEncryption/src/TermLoc.dfy(213,3) + /// dafny/DynamoDbEncryption/src/TermLoc.dfy(224,3) pub fn GetSelector(s: &Sequence) -> Arc, Arc>> { - if s.get(&int!(0)) == DafnyCharUTF16(46 as u16) { + if s.get(&int!((&truncate!((&int!(0)).clone(), u32)).clone())) == DafnyCharUTF16(46 as u16) { Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::, Arc>::Success { value: Arc::new(Selector::Map { - key: s.drop(&int!(1)) + key: s.drop(&int!((&truncate!((&int!(1)).clone(), u32)).clone())) }) }) } else { - if s.get(&(s.cardinality() - int!(1))) != DafnyCharUTF16(93 as u16) { + if s.get(&int!((&(truncate!(s.cardinality(), u64) - 1)).clone())) != DafnyCharUTF16(93 as u16) { Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::, Arc>::Failure { error: crate::implementation_from_dafny::_DynamoDbEncryptionUtil_Compile::_default::E(&string_utf16_of("List index must end with ]")) }) } else { - let mut valueOrError0: Arc>> = _default::GetNumber(&s.slice(&int!(1), &(s.cardinality() - int!(1))), &int!(0)); + let mut valueOrError0: Arc>> = _default::GetNumber(&s.slice(&int!((&truncate!((&int!(1)).clone(), u32)).clone()), &int!((&(truncate!(s.cardinality(), u64) - 1)).clone())), 0, 0); if valueOrError0.IsFailure() { valueOrError0.PropagateFailure::>() } else { - let mut num: nat = valueOrError0.Extract(); - let mut valueOrError1: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(num.clone() < crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default::UINT64_LIMIT(), &crate::implementation_from_dafny::_DynamoDbEncryptionUtil_Compile::_default::E(&string_utf16_of("Array selector exceeds maximum."))); - if valueOrError1.IsFailure() { - valueOrError1.PropagateFailure::>() - } else { - Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::, Arc>::Success { - value: Arc::new(Selector::List { - pos: truncate!(num.clone(), u64) - }) - }) - } + let mut num: u64 = valueOrError0.Extract(); + Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::, Arc>::Success { + value: Arc::new(Selector::List { + pos: num + }) + }) } } } } - /// dafny/DynamoDbEncryption/src/TermLoc.dfy(239,3) - pub fn GetSelectors(s: &Sequence, acc: &SelectorList) -> Arc>> { + /// dafny/DynamoDbEncryption/src/TermLoc.dfy(250,3) + pub fn GetSelectors(s: &Sequence, acc: &Sequence>) -> Arc>, Arc>> { let mut _r0 = s.clone(); let mut _r1 = acc.clone(); 'TAIL_CALL_START: loop { let s = _r0; let acc = _r1; - let mut pos: Arc> = _default::FindStartOfNext(&s.drop(&int!(1))); - let mut end: DafnyInt = if matches!((&pos).as_ref(), None{ .. }) { - s.cardinality() + let mut pos: Arc> = _default::FindStartOfNext(&s.drop(&int!((&truncate!((&int!(1)).clone(), u32)).clone()))); + let mut end: u64 = if matches!((&pos).as_ref(), None{ .. }) { + truncate!(s.cardinality(), u64) } else { - pos.value().clone() + int!(1) + crate::implementation_from_dafny::_StandardLibrary_Compile::_MemoryMath_Compile::_default::Add(pos.value().clone(), 1) }; - let mut valueOrError0: Arc, Arc>> = _default::GetSelector(&s.take(&end)); + let mut valueOrError0: Arc, Arc>> = _default::GetSelector(&s.take(&int!((&end).clone()))); if valueOrError0.IsFailure() { return valueOrError0.PropagateFailure::>>(); } else { let mut sel: Arc = valueOrError0.Extract(); - let mut valueOrError1: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(acc.cardinality() + int!(1) < crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default::UINT64_LIMIT(), &crate::implementation_from_dafny::_DynamoDbEncryptionUtil_Compile::_default::E(&string_utf16_of("Selector Overflow"))); - if valueOrError1.IsFailure() { - return valueOrError1.PropagateFailure::>>(); + if matches!((&pos).as_ref(), None{ .. }) { + return Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::>, Arc>::Success { + value: acc.concat(&seq![sel.clone()]) + }); } else { - if matches!((&pos).as_ref(), None{ .. }) { - return Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::>, Arc>::Success { - value: acc.concat(&seq![sel.clone()]) - }); - } else { - let mut _in0: Sequence = s.drop(&end); - let mut _in1: Sequence> = acc.concat(&seq![sel.clone()]); - _r0 = _in0.clone(); - _r1 = _in1.clone(); - continue 'TAIL_CALL_START; - } + let mut _in0: Sequence = s.drop(&int!((&end).clone())); + let mut _in1: Sequence> = acc.concat(&seq![sel.clone()]); + _r0 = _in0.clone(); + _r1 = _in1.clone(); + continue 'TAIL_CALL_START; } } } } - /// dafny/DynamoDbEncryption/src/TermLoc.dfy(254,3) + /// dafny/DynamoDbEncryption/src/TermLoc.dfy(265,3) pub fn MakeTermLoc(s: &Sequence) -> Arc>> { - let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(int!(0) < s.cardinality(), &crate::implementation_from_dafny::_DynamoDbEncryptionUtil_Compile::_default::E(&string_utf16_of("Path specification must not be empty."))); + let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(0 < truncate!(s.cardinality(), u64), &crate::implementation_from_dafny::_DynamoDbEncryptionUtil_Compile::_default::E(&string_utf16_of("Path specification must not be empty."))); if valueOrError0.IsFailure() { valueOrError0.PropagateFailure::>>() } else { - let mut pos: Arc> = _default::FindStartOfNext(s); + let mut pos: Arc> = _default::FindStartOfNext(s); if matches!((&pos).as_ref(), None{ .. }) { let mut m: Arc = Arc::new(Selector::Map { key: s.clone() @@ -134400,27 +135811,22 @@ pub mod _TermLoc_Compile { })] }) } else { - let mut name: Sequence = s.take(pos.value()); - let mut valueOrError1: Arc>> = _default::GetSelectors(&s.drop(pos.value()), &(seq![] as Sequence>)); + let mut name: Sequence = s.take(&int!(pos.value().clone())); + let mut valueOrError1: Arc>, Arc>> = _default::GetSelectors(&s.drop(&int!(pos.value().clone())), &(seq![] as Sequence>)); if valueOrError1.IsFailure() { valueOrError1.PropagateFailure::>>() } else { - let mut selectors: SelectorList = valueOrError1.Extract(); - let mut valueOrError2: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(selectors.cardinality() + int!(1) < crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default::UINT64_LIMIT(), &crate::implementation_from_dafny::_DynamoDbEncryptionUtil_Compile::_default::E(&string_utf16_of("Selector Overflow"))); - if valueOrError2.IsFailure() { - valueOrError2.PropagateFailure::>>() - } else { - Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::>, Arc>::Success { - value: seq![Arc::new(Selector::Map { - key: name.clone() - })].concat(&selectors) - }) - } + let mut selectors: Sequence> = valueOrError1.Extract(); + Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::>, Arc>::Success { + value: seq![Arc::new(Selector::Map { + key: name.clone() + })].concat(&selectors) + }) } } } } - /// dafny/DynamoDbEncryption/src/TermLoc.dfy(270,3) + /// dafny/DynamoDbEncryption/src/TermLoc.dfy(281,3) pub fn TermLocMap(attr: &Sequence) -> TermLoc { seq![Arc::new(Selector::Map { key: attr.clone() @@ -134428,7 +135834,7 @@ pub mod _TermLoc_Compile { } } - /// dafny/DynamoDbEncryption/src/TermLoc.dfy(34,3) + /// dafny/DynamoDbEncryption/src/TermLoc.dfy(35,3) #[derive(PartialEq, Clone)] pub enum Selector { List { @@ -134516,9 +135922,6 @@ pub mod _TermLoc_Compile { } } - /// dafny/DynamoDbEncryption/src/TermLoc.dfy(39,3) - pub type SelectorList = Sequence>; - /// dafny/DynamoDbEncryption/src/TermLoc.dfy(45,3) pub type TermLoc = Sequence>; } @@ -134580,7 +135983,7 @@ pub mod _TestBaseBeacon_Compile { pub struct _default {} impl _default { - /// dafny/DynamoDbEncryption/test/Beacon.dfy(21,3) + /// dafny/DynamoDbEncryption/test/Beacon.dfy(26,3) pub fn TestBeacon() -> () { let mut valueOrError0: Arc, Arc>>; let mut _out0: Arc, Arc>> = crate::implementation_from_dafny::software::amazon::cryptography::primitives::internaldafny::_default::AtomicPrimitives(&crate::implementation_from_dafny::software::amazon::cryptography::primitives::internaldafny::_default::DefaultCryptoConfig()); @@ -134658,7 +136061,7 @@ pub mod _TestBaseBeacon_Compile { print!("{}", DafnyPrintWrapper(&_e13)); panic!("Halt") }; - let mut valueOrError5: Arc, Arc>> = bb.getHmac(&crate::implementation_from_dafny::UTF8::_default::EncodeAscii(&string_utf16_of("123")), &seq![1, 2]); + let mut valueOrError5: Arc, Arc>> = bb.getHmac(&_default::x123(), &seq![1, 2]); if !(!valueOrError5.IsFailure()) { panic!("Halt") }; @@ -134674,7 +136077,7 @@ pub mod _TestBaseBeacon_Compile { }; return (); } - /// dafny/DynamoDbEncryption/test/Beacon.dfy(38,3) + /// dafny/DynamoDbEncryption/test/Beacon.dfy(43,3) pub fn TestBadPrefix() -> () { let mut store: ValidStore; let mut _out0: ValidStore = crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::GetKeyStore(); @@ -134710,7 +136113,7 @@ pub mod _TestBaseBeacon_Compile { crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::expect_equal::>(res.error(), &crate::implementation_from_dafny::_DynamoDbEncryptionUtil_Compile::_default::E(&string_utf16_of("Compound beacon BadPrefix defines part Title with prefix T_ which is incompatible with part TooBad which has a prefix of T."))); return (); } - /// dafny/DynamoDbEncryption/test/Beacon.dfy(58,3) + /// dafny/DynamoDbEncryption/test/Beacon.dfy(63,3) pub fn TestContainsSplit() -> () { let mut version: Arc; let mut _out0: Arc = crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::GetLotsaBeacons(); @@ -134744,7 +136147,7 @@ pub mod _TestBaseBeacon_Compile { crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::expect_equal::>(badAttrs.error(), &crate::implementation_from_dafny::_DynamoDbEncryptionUtil_Compile::_default::E(&string_utf16_of("Part Name for beacon Mixed has value 'A.B' which contains the split character .'."))); return (); } - /// dafny/DynamoDbEncryption/test/Beacon.dfy(71,3) + /// dafny/DynamoDbEncryption/test/Beacon.dfy(76,3) pub fn TestOneBeaconValue() -> () { let mut x: Sequence; let mut _out0: Sequence = _default::GetBeaconValue(&string_utf16_of("std2"), &seq![1, 2, 3, 4, 5], &string_utf16_of("1.23"), 24); @@ -134837,7 +136240,7 @@ pub mod _TestBaseBeacon_Compile { }; return (); } - /// dafny/DynamoDbEncryption/test/Beacon.dfy(91,3) + /// dafny/DynamoDbEncryption/test/Beacon.dfy(96,3) pub fn TestNumbersNormalize() -> () { let mut version: Arc; let mut _out0: Arc = crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::GetLotsaBeacons(); @@ -134897,7 +136300,7 @@ pub mod _TestBaseBeacon_Compile { }; return (); } - /// dafny/DynamoDbEncryption/test/Beacon.dfy(108,3) + /// dafny/DynamoDbEncryption/test/Beacon.dfy(113,3) pub fn TestSharedCacheBeaconsSingleKeyStoreWithSamePartitionId() -> () { let mut partitionId: Sequence = string_utf16_of("partitionId"); let mut sharedCache: Arc; @@ -134970,7 +136373,7 @@ pub mod _TestBaseBeacon_Compile { let mut badAttrsNowCached: Map, Arc> = valueOrError6.Extract(); return (); } - /// dafny/DynamoDbEncryption/test/Beacon.dfy(144,3) + /// dafny/DynamoDbEncryption/test/Beacon.dfy(149,3) pub fn TestSharedCacheBeaconsSingleKeyStoreWithDifferentPartitionId() -> () { let mut sharedCache: Arc; let mut _out0: Arc = crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::GetSharedCache(); @@ -135043,7 +136446,7 @@ pub mod _TestBaseBeacon_Compile { }; return (); } - /// dafny/DynamoDbEncryption/test/Beacon.dfy(181,3) + /// dafny/DynamoDbEncryption/test/Beacon.dfy(186,3) pub fn TestSharedCacheBeaconsSingleKeyStoreWithUnspecifiedPartitionId() -> () { let mut sharedCache: Arc; let mut _out0: Arc = crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::GetSharedCache(); @@ -135110,7 +136513,7 @@ pub mod _TestBaseBeacon_Compile { }; return (); } - /// dafny/DynamoDbEncryption/test/Beacon.dfy(217,3) + /// dafny/DynamoDbEncryption/test/Beacon.dfy(222,3) pub fn TestSharedCacheBeaconsMultiKeyStoreWithSamePartitionId() -> () { let mut partitionId: Sequence = string_utf16_of("partitionId"); let mut sharedCache: Arc; @@ -135189,7 +136592,7 @@ pub mod _TestBaseBeacon_Compile { let mut badAttrsNowCached: Map, Arc> = valueOrError6.Extract(); return (); } - /// dafny/DynamoDbEncryption/test/Beacon.dfy(254,3) + /// dafny/DynamoDbEncryption/test/Beacon.dfy(259,3) pub fn TestSharedCacheBeaconsMultiKeyStoreWithDifferentPartitionId() -> () { let mut sharedCache: Arc; let mut _out0: Arc = crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::GetSharedCache(); @@ -135268,7 +136671,7 @@ pub mod _TestBaseBeacon_Compile { }; return (); } - /// dafny/DynamoDbEncryption/test/Beacon.dfy(294,3) + /// dafny/DynamoDbEncryption/test/Beacon.dfy(299,3) pub fn TestSharedCacheBeaconsMultiKeyStoreWithUnspecifiedPartitionId() -> () { let mut sharedCache: Arc; let mut _out0: Arc = crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::GetSharedCache(); @@ -135341,7 +136744,7 @@ pub mod _TestBaseBeacon_Compile { }; return (); } - /// dafny/DynamoDbEncryption/test/Beacon.dfy(333,3) + /// dafny/DynamoDbEncryption/test/Beacon.dfy(338,3) pub fn TestBeaconValues() -> () { let mut version: Arc; let mut _out0: Arc = crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::GetLotsaBeacons(); @@ -135410,7 +136813,7 @@ pub mod _TestBaseBeacon_Compile { }; return (); } - /// dafny/DynamoDbEncryption/test/Beacon.dfy(363,3) + /// dafny/DynamoDbEncryption/test/Beacon.dfy(368,3) pub fn GetBeaconValue(name: &Sequence, key: &Sequence, value: &Sequence, length: u8) -> Sequence { let mut output = MaybePlacebo::>::new(); let mut valueOrError0: Arc>> = crate::implementation_from_dafny::UTF8::_default::Encode(&string_utf16_of("AWS_DBE_SCAN_BEACON").concat(name)); @@ -135457,7 +136860,7 @@ pub mod _TestBaseBeacon_Compile { output = MaybePlacebo::from(crate::implementation_from_dafny::_BaseBeacon_Compile::_default::BytesToHex(&hmac8, length)); return output.read(); } - /// dafny/DynamoDbEncryption/test/Beacon.dfy(388,3) + /// dafny/DynamoDbEncryption/test/Beacon.dfy(393,3) pub fn TestCompoundQueries() -> () { let mut context: Arc = Arc::new(ExprContext::ExprContext { keyExpr: Arc::new(Option::>::None {}), @@ -135675,7 +137078,7 @@ pub mod _TestBaseBeacon_Compile { }; return (); } - /// dafny/DynamoDbEncryption/test/Beacon.dfy(428,3) + /// dafny/DynamoDbEncryption/test/Beacon.dfy(433,3) pub fn TestQueryBeacons() -> () { let mut context: Arc = Arc::new(ExprContext::ExprContext { keyExpr: Arc::new(Option::>::None {}), @@ -135767,7 +137170,7 @@ pub mod _TestBaseBeacon_Compile { }; return (); } - /// dafny/DynamoDbEncryption/test/Beacon.dfy(472,3) + /// dafny/DynamoDbEncryption/test/Beacon.dfy(477,3) pub fn TestUnusedPartOnly() -> () { let mut version: Arc; let mut _out0: Arc = crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::GetLotsaBeacons(); @@ -135831,7 +137234,7 @@ pub mod _TestBaseBeacon_Compile { }; return (); } - /// dafny/DynamoDbEncryption/test/Beacon.dfy(487,3) + /// dafny/DynamoDbEncryption/test/Beacon.dfy(492,3) pub fn TestCompoundWithUnknown() -> () { let mut Unknown: Arc = Arc::new(EncryptedPart::EncryptedPart { name: string_utf16_of("Unknown"), @@ -135886,7 +137289,7 @@ pub mod _TestBaseBeacon_Compile { }; return (); } - /// dafny/DynamoDbEncryption/test/Beacon.dfy(507,3) + /// dafny/DynamoDbEncryption/test/Beacon.dfy(512,3) pub fn TesSetInCompound() -> () { let mut version: Arc; let mut _out0: Arc = crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::GetLotsaBeacons(); @@ -135968,7 +137371,7 @@ pub mod _TestBaseBeacon_Compile { }; return (); } - /// dafny/DynamoDbEncryption/test/Beacon.dfy(532,3) + /// dafny/DynamoDbEncryption/test/Beacon.dfy(537,3) pub fn SharedBadReferenceToCompound() -> () { let mut version: Arc; let mut _out0: Arc = crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::GetLotsaBeacons(); @@ -136034,7 +137437,7 @@ pub mod _TestBaseBeacon_Compile { }; return (); } - /// dafny/DynamoDbEncryption/test/Beacon.dfy(548,3) + /// dafny/DynamoDbEncryption/test/Beacon.dfy(553,3) pub fn ChainedShare() -> () { let mut version: Arc; let mut _out0: Arc = crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::GetLotsaBeacons(); @@ -136113,7 +137516,7 @@ pub mod _TestBaseBeacon_Compile { }; return (); } - /// dafny/DynamoDbEncryption/test/Beacon.dfy(568,3) + /// dafny/DynamoDbEncryption/test/Beacon.dfy(573,3) pub fn SelfShare() -> () { let mut version: Arc; let mut _out0: Arc = crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::GetLotsaBeacons(); @@ -136180,7 +137583,7 @@ pub mod _TestBaseBeacon_Compile { }; return (); } - /// dafny/DynamoDbEncryption/test/Beacon.dfy(584,3) + /// dafny/DynamoDbEncryption/test/Beacon.dfy(589,3) pub fn SharedBadReferenceNonExistent() -> () { let mut version: Arc; let mut _out0: Arc = crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::GetLotsaBeacons(); @@ -136246,7 +137649,7 @@ pub mod _TestBaseBeacon_Compile { }; return (); } - /// dafny/DynamoDbEncryption/test/Beacon.dfy(601,3) + /// dafny/DynamoDbEncryption/test/Beacon.dfy(606,3) pub fn SharedBadLength() -> () { let mut version: Arc; let mut _out0: Arc = crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::GetLotsaBeacons(); @@ -136312,7 +137715,7 @@ pub mod _TestBaseBeacon_Compile { }; return (); } - /// dafny/DynamoDbEncryption/test/Beacon.dfy(617,3) + /// dafny/DynamoDbEncryption/test/Beacon.dfy(622,3) pub fn TestPartOnlyNotStored() -> () { let mut MyItem: Map, Arc> = map![(string_utf16_of("std2")) => (Arc::new(AttributeValue::S { S: string_utf16_of("abc") @@ -136495,7 +137898,7 @@ pub mod _TestBaseBeacon_Compile { }; return (); } - /// dafny/DynamoDbEncryption/test/Beacon.dfy(686,3) + /// dafny/DynamoDbEncryption/test/Beacon.dfy(691,3) pub fn TestShareSameBeacon() -> () { let mut MyItem: Map, Arc> = map![(string_utf16_of("std2")) => (Arc::new(AttributeValue::S { S: string_utf16_of("abc") @@ -136663,7 +138066,7 @@ pub mod _TestBaseBeacon_Compile { }; return (); } - /// dafny/DynamoDbEncryption/test/Beacon.dfy(740,3) + /// dafny/DynamoDbEncryption/test/Beacon.dfy(745,3) pub fn TestBeaconSetQuery() -> () { let mut context: Arc = Arc::new(ExprContext::ExprContext { keyExpr: Arc::new(Option::>::None {}), @@ -136798,7 +138201,7 @@ pub mod _TestBaseBeacon_Compile { }; return (); } - /// dafny/DynamoDbEncryption/test/Beacon.dfy(785,3) + /// dafny/DynamoDbEncryption/test/Beacon.dfy(790,3) pub fn TestSetNotSet() -> () { let mut MyItem: Map, Arc> = map![(string_utf16_of("std2")) => (Arc::new(AttributeValue::S { S: string_utf16_of("abc") @@ -136911,7 +138314,7 @@ pub mod _TestBaseBeacon_Compile { }; return (); } - /// dafny/DynamoDbEncryption/test/Beacon.dfy(831,3) + /// dafny/DynamoDbEncryption/test/Beacon.dfy(836,3) pub fn TestSharedSet() -> () { let mut MyItem: Map, Arc> = map![(string_utf16_of("std2")) => (Arc::new(AttributeValue::S { S: string_utf16_of("abc") @@ -137008,7 +138411,7 @@ pub mod _TestBaseBeacon_Compile { }; return (); } - /// dafny/DynamoDbEncryption/test/Beacon.dfy(868,3) + /// dafny/DynamoDbEncryption/test/Beacon.dfy(873,3) pub fn GlobalPartNotExist() -> () { let mut version: Arc; let mut _out0: Arc = crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::GetLotsaBeacons(); @@ -137051,7 +138454,7 @@ pub mod _TestBaseBeacon_Compile { }; return (); } - /// dafny/DynamoDbEncryption/test/Beacon.dfy(880,3) + /// dafny/DynamoDbEncryption/test/Beacon.dfy(885,3) pub fn DuplicateGlobalSigned() -> () { let mut version: Arc; let mut _out0: Arc = crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::GetLotsaBeacons(); @@ -137091,7 +138494,7 @@ pub mod _TestBaseBeacon_Compile { }; return (); } - /// dafny/DynamoDbEncryption/test/Beacon.dfy(890,3) + /// dafny/DynamoDbEncryption/test/Beacon.dfy(895,3) pub fn DuplicateGlobalEncrypted() -> () { let mut version: Arc; let mut _out0: Arc = crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::GetLotsaBeacons(); @@ -137131,7 +138534,7 @@ pub mod _TestBaseBeacon_Compile { }; return (); } - /// dafny/DynamoDbEncryption/test/Beacon.dfy(900,3) + /// dafny/DynamoDbEncryption/test/Beacon.dfy(905,3) pub fn DuplicateGlobalPrefix() -> () { let mut version: Arc; let mut _out0: Arc = crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::GetLotsaBeacons(); @@ -137175,7 +138578,7 @@ pub mod _TestBaseBeacon_Compile { }; return (); } - /// dafny/DynamoDbEncryption/test/Beacon.dfy(911,3) + /// dafny/DynamoDbEncryption/test/Beacon.dfy(916,3) pub fn DuplicateGlobalVsLocalEncrypted() -> () { let mut version: Arc; let mut _out0: Arc = crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::GetLotsaBeacons(); @@ -137214,7 +138617,7 @@ pub mod _TestBaseBeacon_Compile { }; return (); } - /// dafny/DynamoDbEncryption/test/Beacon.dfy(921,3) + /// dafny/DynamoDbEncryption/test/Beacon.dfy(926,3) pub fn DuplicateGlobalVsLocalSigned() -> () { let mut version: Arc; let mut _out0: Arc = crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::GetLotsaBeacons(); @@ -137253,7 +138656,7 @@ pub mod _TestBaseBeacon_Compile { }; return (); } - /// dafny/DynamoDbEncryption/test/Beacon.dfy(931,3) + /// dafny/DynamoDbEncryption/test/Beacon.dfy(936,3) pub fn CompoundNoConstructor() -> () { let mut compoundDefault: Arc = Arc::new(CompoundBeacon::CompoundBeacon { name: string_utf16_of("compoundDefault"), @@ -137305,7 +138708,7 @@ pub mod _TestBaseBeacon_Compile { }; return (); } - /// dafny/DynamoDbEncryption/test/Beacon.dfy(949,3) + /// dafny/DynamoDbEncryption/test/Beacon.dfy(954,3) pub fn CompoundMixed() -> () { let mut Mixed: Arc = Arc::new(CompoundBeacon::CompoundBeacon { name: string_utf16_of("Mixed"), @@ -137371,7 +138774,7 @@ pub mod _TestBaseBeacon_Compile { let mut bv: ValidBeaconVersion = valueOrError0.Extract(); return (); } - /// dafny/DynamoDbEncryption/test/Beacon.dfy(968,3) + /// dafny/DynamoDbEncryption/test/Beacon.dfy(973,3) pub fn CheckBytesToHex() -> () { let mut bytes: Sequence = seq![1, 2, 3, 4, 5, 6, 7, 183]; let mut _e00: Sequence = crate::implementation_from_dafny::_BaseBeacon_Compile::_default::BytesToHex(&bytes, 1); @@ -137448,219 +138851,224 @@ pub mod _TestBaseBeacon_Compile { }; return (); } + /// dafny/DynamoDbEncryption/test/Beacon.dfy(21,3) + pub fn x123() -> ValidUTF8Bytes { + let mut s: Sequence = seq![49, 50, 51]; + s.clone() + } } - /// dafny/DynamoDbEncryption/test/Beacon.dfy(21,3) + /// dafny/DynamoDbEncryption/test/Beacon.dfy(26,3) #[test] pub fn TestBeacon() { _default::TestBeacon() } - /// dafny/DynamoDbEncryption/test/Beacon.dfy(38,3) + /// dafny/DynamoDbEncryption/test/Beacon.dfy(43,3) #[test] pub fn TestBadPrefix() { _default::TestBadPrefix() } - /// dafny/DynamoDbEncryption/test/Beacon.dfy(58,3) + /// dafny/DynamoDbEncryption/test/Beacon.dfy(63,3) #[test] pub fn TestContainsSplit() { _default::TestContainsSplit() } - /// dafny/DynamoDbEncryption/test/Beacon.dfy(71,3) + /// dafny/DynamoDbEncryption/test/Beacon.dfy(76,3) #[test] pub fn TestOneBeaconValue() { _default::TestOneBeaconValue() } - /// dafny/DynamoDbEncryption/test/Beacon.dfy(91,3) + /// dafny/DynamoDbEncryption/test/Beacon.dfy(96,3) #[test] pub fn TestNumbersNormalize() { _default::TestNumbersNormalize() } - /// dafny/DynamoDbEncryption/test/Beacon.dfy(108,3) + /// dafny/DynamoDbEncryption/test/Beacon.dfy(113,3) #[test] pub fn TestSharedCacheBeaconsSingleKeyStoreWithSamePartitionId() { _default::TestSharedCacheBeaconsSingleKeyStoreWithSamePartitionId() } - /// dafny/DynamoDbEncryption/test/Beacon.dfy(144,3) + /// dafny/DynamoDbEncryption/test/Beacon.dfy(149,3) #[test] pub fn TestSharedCacheBeaconsSingleKeyStoreWithDifferentPartitionId() { _default::TestSharedCacheBeaconsSingleKeyStoreWithDifferentPartitionId() } - /// dafny/DynamoDbEncryption/test/Beacon.dfy(181,3) + /// dafny/DynamoDbEncryption/test/Beacon.dfy(186,3) #[test] pub fn TestSharedCacheBeaconsSingleKeyStoreWithUnspecifiedPartitionId() { _default::TestSharedCacheBeaconsSingleKeyStoreWithUnspecifiedPartitionId() } - /// dafny/DynamoDbEncryption/test/Beacon.dfy(217,3) + /// dafny/DynamoDbEncryption/test/Beacon.dfy(222,3) #[test] pub fn TestSharedCacheBeaconsMultiKeyStoreWithSamePartitionId() { _default::TestSharedCacheBeaconsMultiKeyStoreWithSamePartitionId() } - /// dafny/DynamoDbEncryption/test/Beacon.dfy(254,3) + /// dafny/DynamoDbEncryption/test/Beacon.dfy(259,3) #[test] pub fn TestSharedCacheBeaconsMultiKeyStoreWithDifferentPartitionId() { _default::TestSharedCacheBeaconsMultiKeyStoreWithDifferentPartitionId() } - /// dafny/DynamoDbEncryption/test/Beacon.dfy(294,3) + /// dafny/DynamoDbEncryption/test/Beacon.dfy(299,3) #[test] pub fn TestSharedCacheBeaconsMultiKeyStoreWithUnspecifiedPartitionId() { _default::TestSharedCacheBeaconsMultiKeyStoreWithUnspecifiedPartitionId() } - /// dafny/DynamoDbEncryption/test/Beacon.dfy(333,3) + /// dafny/DynamoDbEncryption/test/Beacon.dfy(338,3) #[test] pub fn TestBeaconValues() { _default::TestBeaconValues() } - /// dafny/DynamoDbEncryption/test/Beacon.dfy(388,3) + /// dafny/DynamoDbEncryption/test/Beacon.dfy(393,3) #[test] pub fn TestCompoundQueries() { _default::TestCompoundQueries() } - /// dafny/DynamoDbEncryption/test/Beacon.dfy(428,3) + /// dafny/DynamoDbEncryption/test/Beacon.dfy(433,3) #[test] pub fn TestQueryBeacons() { _default::TestQueryBeacons() } - /// dafny/DynamoDbEncryption/test/Beacon.dfy(472,3) + /// dafny/DynamoDbEncryption/test/Beacon.dfy(477,3) #[test] pub fn TestUnusedPartOnly() { _default::TestUnusedPartOnly() } - /// dafny/DynamoDbEncryption/test/Beacon.dfy(487,3) + /// dafny/DynamoDbEncryption/test/Beacon.dfy(492,3) #[test] pub fn TestCompoundWithUnknown() { _default::TestCompoundWithUnknown() } - /// dafny/DynamoDbEncryption/test/Beacon.dfy(507,3) + /// dafny/DynamoDbEncryption/test/Beacon.dfy(512,3) #[test] pub fn TesSetInCompound() { _default::TesSetInCompound() } - /// dafny/DynamoDbEncryption/test/Beacon.dfy(532,3) + /// dafny/DynamoDbEncryption/test/Beacon.dfy(537,3) #[test] pub fn SharedBadReferenceToCompound() { _default::SharedBadReferenceToCompound() } - /// dafny/DynamoDbEncryption/test/Beacon.dfy(548,3) + /// dafny/DynamoDbEncryption/test/Beacon.dfy(553,3) #[test] pub fn ChainedShare() { _default::ChainedShare() } - /// dafny/DynamoDbEncryption/test/Beacon.dfy(568,3) + /// dafny/DynamoDbEncryption/test/Beacon.dfy(573,3) #[test] pub fn SelfShare() { _default::SelfShare() } - /// dafny/DynamoDbEncryption/test/Beacon.dfy(584,3) + /// dafny/DynamoDbEncryption/test/Beacon.dfy(589,3) #[test] pub fn SharedBadReferenceNonExistent() { _default::SharedBadReferenceNonExistent() } - /// dafny/DynamoDbEncryption/test/Beacon.dfy(601,3) + /// dafny/DynamoDbEncryption/test/Beacon.dfy(606,3) #[test] pub fn SharedBadLength() { _default::SharedBadLength() } - /// dafny/DynamoDbEncryption/test/Beacon.dfy(617,3) + /// dafny/DynamoDbEncryption/test/Beacon.dfy(622,3) #[test] pub fn TestPartOnlyNotStored() { _default::TestPartOnlyNotStored() } - /// dafny/DynamoDbEncryption/test/Beacon.dfy(686,3) + /// dafny/DynamoDbEncryption/test/Beacon.dfy(691,3) #[test] pub fn TestShareSameBeacon() { _default::TestShareSameBeacon() } - /// dafny/DynamoDbEncryption/test/Beacon.dfy(740,3) + /// dafny/DynamoDbEncryption/test/Beacon.dfy(745,3) #[test] pub fn TestBeaconSetQuery() { _default::TestBeaconSetQuery() } - /// dafny/DynamoDbEncryption/test/Beacon.dfy(785,3) + /// dafny/DynamoDbEncryption/test/Beacon.dfy(790,3) #[test] pub fn TestSetNotSet() { _default::TestSetNotSet() } - /// dafny/DynamoDbEncryption/test/Beacon.dfy(831,3) + /// dafny/DynamoDbEncryption/test/Beacon.dfy(836,3) #[test] pub fn TestSharedSet() { _default::TestSharedSet() } - /// dafny/DynamoDbEncryption/test/Beacon.dfy(868,3) + /// dafny/DynamoDbEncryption/test/Beacon.dfy(873,3) #[test] pub fn GlobalPartNotExist() { _default::GlobalPartNotExist() } - /// dafny/DynamoDbEncryption/test/Beacon.dfy(880,3) + /// dafny/DynamoDbEncryption/test/Beacon.dfy(885,3) #[test] pub fn DuplicateGlobalSigned() { _default::DuplicateGlobalSigned() } - /// dafny/DynamoDbEncryption/test/Beacon.dfy(890,3) + /// dafny/DynamoDbEncryption/test/Beacon.dfy(895,3) #[test] pub fn DuplicateGlobalEncrypted() { _default::DuplicateGlobalEncrypted() } - /// dafny/DynamoDbEncryption/test/Beacon.dfy(900,3) + /// dafny/DynamoDbEncryption/test/Beacon.dfy(905,3) #[test] pub fn DuplicateGlobalPrefix() { _default::DuplicateGlobalPrefix() } - /// dafny/DynamoDbEncryption/test/Beacon.dfy(911,3) + /// dafny/DynamoDbEncryption/test/Beacon.dfy(916,3) #[test] pub fn DuplicateGlobalVsLocalEncrypted() { _default::DuplicateGlobalVsLocalEncrypted() } - /// dafny/DynamoDbEncryption/test/Beacon.dfy(921,3) + /// dafny/DynamoDbEncryption/test/Beacon.dfy(926,3) #[test] pub fn DuplicateGlobalVsLocalSigned() { _default::DuplicateGlobalVsLocalSigned() } - /// dafny/DynamoDbEncryption/test/Beacon.dfy(931,3) + /// dafny/DynamoDbEncryption/test/Beacon.dfy(936,3) #[test] pub fn CompoundNoConstructor() { _default::CompoundNoConstructor() } - /// dafny/DynamoDbEncryption/test/Beacon.dfy(949,3) + /// dafny/DynamoDbEncryption/test/Beacon.dfy(954,3) #[test] pub fn CompoundMixed() { _default::CompoundMixed() } - /// dafny/DynamoDbEncryption/test/Beacon.dfy(968,3) + /// dafny/DynamoDbEncryption/test/Beacon.dfy(973,3) #[test] pub fn CheckBytesToHex() { _default::CheckBytesToHex() @@ -139089,10 +140497,10 @@ pub mod _TestDynamoDBFilterExpr_Compile { for i in integer_range(int!(0), _hi0.clone()) { let mut _hi1: DafnyInt = strs.cardinality(); for j in integer_range(int!(0), _hi1.clone()) { - if !((i.clone() < j.clone()) == crate::implementation_from_dafny::_DynamoDBFilterExpr_Compile::_default::UnicodeLess(&strs.get(&i), &strs.get(&j))) { + if !((i.clone() < j.clone()) == crate::implementation_from_dafny::_DynamoDBFilterExpr_Compile::_default::UnicodeLess(&strs.get(&i), &strs.get(&j), &int!(0))) { panic!("Halt") }; - if !((i.clone() <= j.clone()) == !crate::implementation_from_dafny::_DynamoDBFilterExpr_Compile::_default::UnicodeLess(&strs.get(&j), &strs.get(&i))) { + if !((i.clone() <= j.clone()) == !crate::implementation_from_dafny::_DynamoDBFilterExpr_Compile::_default::UnicodeLess(&strs.get(&j), &strs.get(&i), &int!(0))) { panic!("Halt") } } @@ -141397,7 +142805,7 @@ pub mod _TestFixtures_Compile { output = MaybePlacebo::from(s.clone()); return output.read(); } - /// dafny/DynamoDbEncryptionTransforms/test/TestFixtures.dfy(26,3) + /// dafny/DynamoDbEncryptionTransforms/test/TestFixtures.dfy(27,3) pub fn GetAttrName(s: &Sequence) -> Sequence { if crate::implementation_from_dafny::software::amazon::cryptography::services::dynamodb::internaldafny::types::_default::IsValid_AttributeName(s) { s.clone() @@ -141405,7 +142813,7 @@ pub mod _TestFixtures_Compile { string_utf16_of("abc") } } - /// dafny/DynamoDbEncryptionTransforms/test/TestFixtures.dfy(33,3) + /// dafny/DynamoDbEncryptionTransforms/test/TestFixtures.dfy(34,3) pub fn GetStatement(s: &Sequence) -> Sequence { let mut output = MaybePlacebo::>::new(); if !crate::implementation_from_dafny::software::amazon::cryptography::services::dynamodb::internaldafny::types::_default::IsValid_PartiQLStatement(s) { @@ -141414,7 +142822,7 @@ pub mod _TestFixtures_Compile { output = MaybePlacebo::from(s.clone()); return output.read(); } - /// dafny/DynamoDbEncryptionTransforms/test/TestFixtures.dfy(38,3) + /// dafny/DynamoDbEncryptionTransforms/test/TestFixtures.dfy(39,3) pub fn GetPStatements(s: &Sequence>) -> ParameterizedStatements { let mut output = MaybePlacebo::::new(); if !crate::implementation_from_dafny::software::amazon::cryptography::services::dynamodb::internaldafny::types::_default::IsValid_ParameterizedStatements(s) { @@ -141423,7 +142831,7 @@ pub mod _TestFixtures_Compile { output = MaybePlacebo::from(s.clone()); return output.read(); } - /// dafny/DynamoDbEncryptionTransforms/test/TestFixtures.dfy(44,3) + /// dafny/DynamoDbEncryptionTransforms/test/TestFixtures.dfy(45,3) pub fn GetTransactWriteItemList(s: &Sequence>) -> TransactWriteItemList { let mut output = MaybePlacebo::::new(); if !crate::implementation_from_dafny::software::amazon::cryptography::services::dynamodb::internaldafny::types::_default::IsValid_TransactWriteItemList(s) { @@ -141432,7 +142840,7 @@ pub mod _TestFixtures_Compile { output = MaybePlacebo::from(s.clone()); return output.read(); } - /// dafny/DynamoDbEncryptionTransforms/test/TestFixtures.dfy(49,3) + /// dafny/DynamoDbEncryptionTransforms/test/TestFixtures.dfy(50,3) pub fn GetBatchWriteItemRequestMap(s: &Map, WriteRequests>) -> BatchWriteItemRequestMap { let mut output = MaybePlacebo::::new(); if !crate::implementation_from_dafny::software::amazon::cryptography::services::dynamodb::internaldafny::types::_default::IsValid_BatchWriteItemRequestMap(s) { @@ -141441,7 +142849,7 @@ pub mod _TestFixtures_Compile { output = MaybePlacebo::from(s.clone()); return output.read(); } - /// dafny/DynamoDbEncryptionTransforms/test/TestFixtures.dfy(54,3) + /// dafny/DynamoDbEncryptionTransforms/test/TestFixtures.dfy(55,3) pub fn GetWriteRequests(s: &Sequence>) -> WriteRequests { let mut output = MaybePlacebo::::new(); if !crate::implementation_from_dafny::software::amazon::cryptography::services::dynamodb::internaldafny::types::_default::IsValid_WriteRequests(s) { @@ -141450,7 +142858,7 @@ pub mod _TestFixtures_Compile { output = MaybePlacebo::from(s.clone()); return output.read(); } - /// dafny/DynamoDbEncryptionTransforms/test/TestFixtures.dfy(59,3) + /// dafny/DynamoDbEncryptionTransforms/test/TestFixtures.dfy(60,3) pub fn GetBatchGetRequestMap(s: &Map, Arc>) -> BatchGetRequestMap { let mut output = MaybePlacebo::::new(); if !crate::implementation_from_dafny::software::amazon::cryptography::services::dynamodb::internaldafny::types::_default::IsValid_BatchGetRequestMap(s) { @@ -141459,7 +142867,7 @@ pub mod _TestFixtures_Compile { output = MaybePlacebo::from(s.clone()); return output.read(); } - /// dafny/DynamoDbEncryptionTransforms/test/TestFixtures.dfy(64,3) + /// dafny/DynamoDbEncryptionTransforms/test/TestFixtures.dfy(65,3) pub fn GetKeyList(s: &Sequence, Arc>>) -> KeyList { let mut output = MaybePlacebo::::new(); if !crate::implementation_from_dafny::software::amazon::cryptography::services::dynamodb::internaldafny::types::_default::IsValid_KeyList(s) { @@ -141468,7 +142876,7 @@ pub mod _TestFixtures_Compile { output = MaybePlacebo::from(s.clone()); return output.read(); } - /// dafny/DynamoDbEncryptionTransforms/test/TestFixtures.dfy(69,3) + /// dafny/DynamoDbEncryptionTransforms/test/TestFixtures.dfy(70,3) pub fn GetTransactGetItemList(s: &Sequence>) -> TransactGetItemList { let mut output = MaybePlacebo::::new(); if !crate::implementation_from_dafny::software::amazon::cryptography::services::dynamodb::internaldafny::types::_default::IsValid_TransactGetItemList(s) { @@ -141477,7 +142885,7 @@ pub mod _TestFixtures_Compile { output = MaybePlacebo::from(s.clone()); return output.read(); } - /// dafny/DynamoDbEncryptionTransforms/test/TestFixtures.dfy(74,3) + /// dafny/DynamoDbEncryptionTransforms/test/TestFixtures.dfy(75,3) pub fn GetPartiQLBatchRequest(s: &Sequence>) -> PartiQLBatchRequest { let mut output = MaybePlacebo::::new(); if !crate::implementation_from_dafny::software::amazon::cryptography::services::dynamodb::internaldafny::types::_default::IsValid_PartiQLBatchRequest(s) { @@ -141486,19 +142894,19 @@ pub mod _TestFixtures_Compile { output = MaybePlacebo::from(s.clone()); return output.read(); } - /// dafny/DynamoDbEncryptionTransforms/test/TestFixtures.dfy(82,3) + /// dafny/DynamoDbEncryptionTransforms/test/TestFixtures.dfy(83,3) pub fn GetAttributeActions() -> Map, Arc> { map![(string_utf16_of("bar")) => (Arc::new(CryptoAction::SIGN_ONLY {})), (string_utf16_of("encrypt")) => (Arc::new(CryptoAction::ENCRYPT_AND_SIGN {})), (string_utf16_of("sign")) => (Arc::new(CryptoAction::SIGN_ONLY {})), (string_utf16_of("nothing")) => (Arc::new(CryptoAction::DO_NOTHING {}))] } - /// dafny/DynamoDbEncryptionTransforms/test/TestFixtures.dfy(85,3) + /// dafny/DynamoDbEncryptionTransforms/test/TestFixtures.dfy(86,3) pub fn GetV2AttributeActions() -> Map, Arc> { map![(string_utf16_of("bar")) => (Arc::new(CryptoAction::SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT {})), (string_utf16_of("encrypt")) => (Arc::new(CryptoAction::ENCRYPT_AND_SIGN {})), (string_utf16_of("sign")) => (Arc::new(CryptoAction::SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT {})), (string_utf16_of("nothing")) => (Arc::new(CryptoAction::DO_NOTHING {}))] } - /// dafny/DynamoDbEncryptionTransforms/test/TestFixtures.dfy(89,3) + /// dafny/DynamoDbEncryptionTransforms/test/TestFixtures.dfy(90,3) pub fn GetSignedAttributeActions() -> Map, Arc> { map![(string_utf16_of("bar")) => (Arc::new(CryptoAction::SIGN_ONLY {})), (string_utf16_of("encrypt")) => (Arc::new(CryptoAction::ENCRYPT_AND_SIGN {})), (string_utf16_of("sign")) => (Arc::new(CryptoAction::SIGN_ONLY {}))] } - /// dafny/DynamoDbEncryptionTransforms/test/TestFixtures.dfy(93,3) + /// dafny/DynamoDbEncryptionTransforms/test/TestFixtures.dfy(94,3) pub fn GetEncryptorConfigFromActions(actions: &Map, Arc>, sortKeyName: &Arc>>) -> Arc { let mut output: Arc; let mut keyring: Object; @@ -141526,14 +142934,14 @@ pub mod _TestFixtures_Compile { }); return output.clone(); } - /// dafny/DynamoDbEncryptionTransforms/test/TestFixtures.dfy(111,3) + /// dafny/DynamoDbEncryptionTransforms/test/TestFixtures.dfy(112,3) pub fn GetEncryptorConfig() -> Arc { let mut output: Arc; let mut _out0: Arc = _default::GetEncryptorConfigFromActions(&_default::GetAttributeActions(), &Arc::new(Option::>::None {})); output = _out0.clone(); return output.clone(); } - /// dafny/DynamoDbEncryptionTransforms/test/TestFixtures.dfy(115,3) + /// dafny/DynamoDbEncryptionTransforms/test/TestFixtures.dfy(116,3) pub fn GetDynamoDbItemEncryptorFrom(config: &Arc) -> Object { let mut encryptor = MaybePlacebo::>::new(); let mut keyring: Object; @@ -141564,7 +142972,7 @@ pub mod _TestFixtures_Compile { encryptor = MaybePlacebo::from(cast_object!(encryptor2.clone(), DynamoDbItemEncryptorClient)); return encryptor.read(); } - /// dafny/DynamoDbEncryptionTransforms/test/TestFixtures.dfy(136,3) + /// dafny/DynamoDbEncryptionTransforms/test/TestFixtures.dfy(137,3) pub fn GetDynamoDbItemEncryptor() -> Object { let mut encryptor: Object; let mut config: Arc; @@ -141574,7 +142982,7 @@ pub mod _TestFixtures_Compile { encryptor = _out1.clone(); return encryptor.clone(); } - /// dafny/DynamoDbEncryptionTransforms/test/TestFixtures.dfy(147,3) + /// dafny/DynamoDbEncryptionTransforms/test/TestFixtures.dfy(148,3) pub fn expect_ok<_X: DafnyType>(tag: &Sequence, actual: &Arc>>) -> () { if matches!(actual.as_ref(), Failure{ .. }) { print!("{}", DafnyPrintWrapper(tag)); @@ -141586,7 +142994,7 @@ pub mod _TestFixtures_Compile { }; return (); } - /// dafny/DynamoDbEncryptionTransforms/test/TestFixtures.dfy(155,3) + /// dafny/DynamoDbEncryptionTransforms/test/TestFixtures.dfy(156,3) pub fn expect_equal<_X: DafnyTypeEq>(tag: &Sequence, actual: &_X, expected: &_X) -> () { if actual.clone() != expected.clone() { print!("{}", DafnyPrintWrapper(tag)); @@ -141607,7 +143015,7 @@ pub mod _TestFixtures_Compile { }; return (); } - /// dafny/DynamoDbEncryptionTransforms/test/TestFixtures.dfy(163,3) + /// dafny/DynamoDbEncryptionTransforms/test/TestFixtures.dfy(164,3) pub fn ExpectFailure<_X: DafnyType>(ret: &Arc>>, s: &Sequence) -> () { if !matches!(ret.as_ref(), Failure{ .. }) { print!("{}", DafnyPrintWrapper(&string_utf16_of("Got Success when expected failure "))); @@ -141643,7 +143051,7 @@ pub mod _TestFixtures_Compile { }; return (); } - /// dafny/DynamoDbEncryptionTransforms/test/TestFixtures.dfy(179,3) + /// dafny/DynamoDbEncryptionTransforms/test/TestFixtures.dfy(180,3) pub fn GetKmsKeyring() -> Object { let mut keyring = MaybePlacebo::>::new(); let mut valueOrError0: Arc, Arc>>; @@ -141670,7 +143078,7 @@ pub mod _TestFixtures_Compile { keyring = MaybePlacebo::from(valueOrError1.Extract()); return keyring.read(); } - /// dafny/DynamoDbEncryptionTransforms/test/TestFixtures.dfy(192,3) + /// dafny/DynamoDbEncryptionTransforms/test/TestFixtures.dfy(193,3) pub fn GetStaticKeyring() -> Object { let mut keyring = MaybePlacebo::>::new(); let mut valueOrError0: Arc, Arc>>; @@ -141701,7 +143109,7 @@ pub mod _TestFixtures_Compile { keyring = MaybePlacebo::from(valueOrError1.Extract()); return keyring.read(); } - /// dafny/DynamoDbEncryptionTransforms/test/TestFixtures.dfy(209,3) + /// dafny/DynamoDbEncryptionTransforms/test/TestFixtures.dfy(210,3) pub fn GetDynamoDbEncryptionTransforms() -> Object { let mut encryption = MaybePlacebo::>::new(); let mut keyring: Object; @@ -141735,7 +143143,46 @@ pub mod _TestFixtures_Compile { encryption = MaybePlacebo::from(valueOrError0.Extract()); return encryption.read(); } - /// dafny/DynamoDbEncryptionTransforms/test/TestFixtures.dfy(282,3) + /// dafny/DynamoDbEncryptionTransforms/test/TestFixtures.dfy(241,3) + pub fn GetDynamoDbEncryptionTransforms2() -> Object { + let mut encryption = MaybePlacebo::>::new(); + if !crate::implementation_from_dafny::software::amazon::cryptography::services::dynamodb::internaldafny::types::_default::IsValid_TableName(&string_utf16_of("foo")) { + panic!("Halt") + }; + let mut keyring: Object; + let mut _out0: Object = _default::GetKmsKeyring(); + keyring = _out0.clone(); + let mut valueOrError0: Arc, Arc>>; + let mut _out1: Arc, Arc>> = crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::transforms::internaldafny::_default::DynamoDbEncryptionTransforms(&Arc::new(DynamoDbTablesEncryptionConfig::DynamoDbTablesEncryptionConfig { + tableEncryptionConfigs: map![(string_utf16_of("foo")) => (Arc::new(DynamoDbTableEncryptionConfig::DynamoDbTableEncryptionConfig { + logicalTableName: string_utf16_of("foo"), + partitionKeyName: string_utf16_of("bar"), + sortKeyName: Arc::new(Option::>::Some { + value: string_utf16_of("sign") + }), + search: Arc::new(Option::>::None {}), + attributeActionsOnEncrypt: map![(string_utf16_of("bar")) => (Arc::new(CryptoAction::SIGN_ONLY {})), (string_utf16_of("sign")) => (Arc::new(CryptoAction::SIGN_ONLY {})), (string_utf16_of("encrypt")) => (Arc::new(CryptoAction::ENCRYPT_AND_SIGN {})), (string_utf16_of("plain")) => (Arc::new(CryptoAction::DO_NOTHING {}))], + allowedUnsignedAttributes: Arc::new(Option::>>::Some { + value: seq![string_utf16_of("plain")] + }), + allowedUnsignedAttributePrefix: Arc::new(Option::>::None {}), + algorithmSuiteId: Arc::new(Option::>::None {}), + keyring: Arc::new(Option::>::Some { + value: keyring.clone() + }), + cmm: Arc::new(Option::>::None {}), + legacyOverride: Arc::new(Option::>::None {}), + plaintextOverride: Arc::new(Option::>::None {}) + }))] + })); + valueOrError0 = _out1.clone(); + if !(!valueOrError0.IsFailure()) { + panic!("Halt") + }; + encryption = MaybePlacebo::from(valueOrError0.Extract()); + return encryption.read(); + } + /// dafny/DynamoDbEncryptionTransforms/test/TestFixtures.dfy(289,3) pub fn GetDynamoDbEncryptionTransformsMulti(plaintextOverride: &Arc>>) -> Object { let mut encryption = MaybePlacebo::>::new(); let mut keyring: Object; @@ -141778,11 +143225,11 @@ pub mod _TestFixtures_Compile { encryption = MaybePlacebo::from(valueOrError0.Extract()); return encryption.read(); } - /// dafny/DynamoDbEncryptionTransforms/test/TestFixtures.dfy(80,3) + /// dafny/DynamoDbEncryptionTransforms/test/TestFixtures.dfy(81,3) pub fn PUBLIC_US_WEST_2_KMS_TEST_KEY() -> Sequence { string_utf16_of("arn:aws:kms:us-west-2:658956600833:key/b3537ef1-d8dc-4780-9f5a-55776cbb2f7f") } - /// dafny/DynamoDbEncryptionTransforms/test/TestFixtures.dfy(268,3) + /// dafny/DynamoDbEncryptionTransforms/test/TestFixtures.dfy(275,3) pub fn MultiActions() -> Map, Arc> { map![(string_utf16_of("bar")) => (Arc::new(CryptoAction::SIGN_ONLY {})), (string_utf16_of("std2")) => (Arc::new(CryptoAction::ENCRYPT_AND_SIGN {})), (string_utf16_of("std4")) => (Arc::new(CryptoAction::ENCRYPT_AND_SIGN {})), (string_utf16_of("std6")) => (Arc::new(CryptoAction::ENCRYPT_AND_SIGN {})), (string_utf16_of("Name")) => (Arc::new(CryptoAction::ENCRYPT_AND_SIGN {})), (string_utf16_of("Title")) => (Arc::new(CryptoAction::ENCRYPT_AND_SIGN {})), (string_utf16_of("TooBad")) => (Arc::new(CryptoAction::ENCRYPT_AND_SIGN {})), (string_utf16_of("Year")) => (Arc::new(CryptoAction::SIGN_ONLY {})), (string_utf16_of("Date")) => (Arc::new(CryptoAction::SIGN_ONLY {})), (string_utf16_of("TheKeyField")) => (Arc::new(CryptoAction::SIGN_ONLY {}))] } @@ -141794,11 +143241,11 @@ pub mod _TestHeader_Compile { pub use crate::implementation_from_dafny::_StructuredEncryptionHeader_Compile::PartialHeader; pub use ::dafny_runtime::seq; pub use ::dafny_runtime::map; - pub use ::dafny_runtime::string_utf16_of; pub use crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::EncryptedDataKey; pub use ::dafny_runtime::Sequence; pub use crate::implementation_from_dafny::_Wrappers_Compile::Result; pub use ::dafny_runtime::DafnyPrintWrapper; + pub use ::dafny_runtime::string_utf16_of; pub use ::dafny_runtime::Object; pub use crate::implementation_from_dafny::software::amazon::cryptography::primitives::internaldafny::AtomicPrimitivesClient; pub use crate::implementation_from_dafny::_AlgorithmSuites_Compile::AlgorithmSuite; @@ -141807,29 +143254,29 @@ pub mod _TestHeader_Compile { pub use ::dafny_runtime::int; pub use crate::implementation_from_dafny::_Wrappers_Compile::Result::Failure; pub use crate::implementation_from_dafny::_StructuredEncryptionHeader_Compile::CMPEncryptionContext; - pub use ::dafny_runtime::_System::nat; pub use crate::implementation_from_dafny::_Wrappers_Compile::Result::Success; - pub use ::dafny_runtime::DafnyInt; + pub use ::dafny_runtime::truncate; pub use ::dafny_runtime::DafnyCharUTF16; pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::structuredencryption::internaldafny::types::CryptoAction; pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::structuredencryption::internaldafny::types::CryptoItem; pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::structuredencryption::internaldafny::types::StructuredDataTerminal; pub use crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::CanonCryptoItem; pub use crate::implementation_from_dafny::_StructuredEncryptionHeader_Compile::Legend; + pub use crate::implementation_from_dafny::UTF8::ValidUTF8Bytes; pub struct _default {} impl _default { - /// dafny/StructuredEncryption/test/Header.dfy(24,3) + /// dafny/StructuredEncryption/test/Header.dfy(50,3) pub fn TestRoundTrip() -> () { let mut head: Arc = Arc::new(PartialHeader::PartialHeader { version: 1, flavor: 1, msgID: seq![1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32], legend: seq![101, 115], - encContext: map![(crate::implementation_from_dafny::UTF8::_default::EncodeAscii(&string_utf16_of("abc"))) => (crate::implementation_from_dafny::UTF8::_default::EncodeAscii(&string_utf16_of("def")))], + encContext: map![(_default::abc()) => (_default::def())], dataKeys: seq![Arc::new(EncryptedDataKey::EncryptedDataKey { - keyProviderId: crate::implementation_from_dafny::UTF8::_default::EncodeAscii(&string_utf16_of("provID")), + keyProviderId: _default::provID(), keyProviderInfo: seq![1, 2, 3, 4, 5], ciphertext: seq![6, 7, 8, 9] })] @@ -141851,7 +143298,7 @@ pub mod _TestHeader_Compile { }; return (); } - /// dafny/StructuredEncryption/test/Header.dfy(41,3) + /// dafny/StructuredEncryption/test/Header.dfy(67,3) pub fn TestRoundTripWithCommit() -> () { let mut valueOrError0: Arc, Arc>>; let mut _out0: Arc, Arc>> = crate::implementation_from_dafny::software::amazon::cryptography::primitives::internaldafny::_default::AtomicPrimitives(&crate::implementation_from_dafny::software::amazon::cryptography::primitives::internaldafny::_default::DefaultCryptoConfig()); @@ -141865,9 +143312,9 @@ pub mod _TestHeader_Compile { flavor: 1, msgID: seq![1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32], legend: seq![101, 115], - encContext: map![(crate::implementation_from_dafny::UTF8::_default::EncodeAscii(&string_utf16_of("abc"))) => (crate::implementation_from_dafny::UTF8::_default::EncodeAscii(&string_utf16_of("def")))], + encContext: map![(_default::abc()) => (_default::def())], dataKeys: seq![Arc::new(EncryptedDataKey::EncryptedDataKey { - keyProviderId: crate::implementation_from_dafny::UTF8::_default::EncodeAscii(&string_utf16_of("provID")), + keyProviderId: _default::provID(), keyProviderInfo: seq![1, 2, 3, 4, 5], ciphertext: seq![6, 7, 8, 9] })] @@ -141935,9 +143382,9 @@ pub mod _TestHeader_Compile { }; return (); } - /// dafny/StructuredEncryption/test/Header.dfy(78,3) + /// dafny/StructuredEncryption/test/Header.dfy(104,3) pub fn TestDuplicateContext() -> () { - let mut cont: CMPEncryptionContext = map![(crate::implementation_from_dafny::UTF8::_default::EncodeAscii(&string_utf16_of("abc"))) => (crate::implementation_from_dafny::UTF8::_default::EncodeAscii(&string_utf16_of("def"))), (crate::implementation_from_dafny::UTF8::_default::EncodeAscii(&string_utf16_of("cba"))) => (crate::implementation_from_dafny::UTF8::_default::EncodeAscii(&string_utf16_of("fed")))]; + let mut cont: CMPEncryptionContext = map![(_default::abc()) => (_default::def()), (_default::cba()) => (_default::fed())]; let mut serCont: Sequence = crate::implementation_from_dafny::_StructuredEncryptionHeader_Compile::_default::SerializeContext(&cont); let mut _e00: Sequence = serCont.clone(); let mut _e10: Sequence = seq![0, 2, 0, 3, _default::a(), _default::b(), _default::c(), 0, 3, _default::d(), _default::e(), _default::f(), 0, 3, _default::c(), _default::b(), _default::a(), 0, 3, _default::f(), _default::e(), _default::d()]; @@ -141948,7 +143395,7 @@ pub mod _TestHeader_Compile { print!("{}", DafnyPrintWrapper(&_e10)); panic!("Halt") }; - let mut newCont: Arc>> = crate::implementation_from_dafny::_StructuredEncryptionHeader_Compile::_default::GetContext(&serCont); + let mut newCont: Arc>> = crate::implementation_from_dafny::_StructuredEncryptionHeader_Compile::_default::GetContext(&serCont); if !matches!((&newCont).as_ref(), Success{ .. }) { panic!("Halt") }; @@ -141961,9 +143408,9 @@ pub mod _TestHeader_Compile { print!("{}", DafnyPrintWrapper(&_e11)); panic!("Halt") }; - let mut _e02: nat = newCont.value().1.clone(); - let mut _e12: DafnyInt = serCont.cardinality(); - if !(_e02.clone() == _e12.clone()) { + let mut _e02: u64 = newCont.value().1.clone(); + let mut _e12: u64 = truncate!(serCont.cardinality(), u64); + if !(_e02 == _e12) { print!("{}", DafnyPrintWrapper(&string_utf16_of("\nLeft:\n"))); print!("{}", DafnyPrintWrapper(&_e02)); print!("{}", DafnyPrintWrapper(&string_utf16_of("\nRight:\n"))); @@ -141971,9 +143418,9 @@ pub mod _TestHeader_Compile { panic!("Halt") }; let mut badSerCont: Sequence = seq![0, 3, 0, 3, _default::a(), _default::b(), _default::c(), 0, 3, _default::d(), _default::e(), _default::f(), 0, 3, _default::c(), _default::b(), _default::a(), 0, 3, _default::f(), _default::e(), _default::d(), 0, 3, _default::a(), _default::b(), _default::c(), 0, 3, _default::e(), _default::d(), _default::f()]; - let mut newBadCont: Arc>> = crate::implementation_from_dafny::_StructuredEncryptionHeader_Compile::_default::GetContext(&badSerCont); - let mut _e03: Arc>> = newBadCont.clone(); - let mut _e13: Arc>> = Arc::new(Result::<(CMPEncryptionContext, nat), Arc>::Failure { + let mut newBadCont: Arc>> = crate::implementation_from_dafny::_StructuredEncryptionHeader_Compile::_default::GetContext(&badSerCont); + let mut _e03: Arc>> = newBadCont.clone(); + let mut _e13: Arc>> = Arc::new(Result::<(CMPEncryptionContext, u64), Arc>::Failure { error: crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::E(&string_utf16_of("Context keys out of order.")) }); if !(_e03.clone() == _e13.clone()) { @@ -141985,12 +143432,12 @@ pub mod _TestHeader_Compile { }; return (); } - /// dafny/StructuredEncryption/test/Header.dfy(109,3) + /// dafny/StructuredEncryption/test/Header.dfy(135,3) pub fn TestOutOfOrderContext() -> () { let mut badSerCont: Sequence = seq![0, 2, 0, 3, _default::c(), _default::b(), _default::a(), 0, 3, _default::f(), _default::e(), _default::d(), 0, 3, _default::a(), _default::b(), _default::c(), 0, 3, _default::d(), _default::e(), _default::f()]; - let mut newBadCont: Arc>> = crate::implementation_from_dafny::_StructuredEncryptionHeader_Compile::_default::GetContext(&badSerCont); - let mut _e00: Arc>> = newBadCont.clone(); - let mut _e10: Arc>> = Arc::new(Result::<(CMPEncryptionContext, nat), Arc>::Failure { + let mut newBadCont: Arc>> = crate::implementation_from_dafny::_StructuredEncryptionHeader_Compile::_default::GetContext(&badSerCont); + let mut _e00: Arc>> = newBadCont.clone(); + let mut _e10: Arc>> = Arc::new(Result::<(CMPEncryptionContext, u64), Arc>::Failure { error: crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::E(&string_utf16_of("Context keys out of order.")) }); if !(_e00.clone() == _e10.clone()) { @@ -142002,7 +143449,7 @@ pub mod _TestHeader_Compile { }; return (); } - /// dafny/StructuredEncryption/test/Header.dfy(125,3) + /// dafny/StructuredEncryption/test/Header.dfy(151,3) pub fn MakeCrypto(s: &Sequence, a: &Arc) -> Arc { Arc::new(CryptoItem::CryptoItem { key: crate::implementation_from_dafny::_StructuredEncryptionPaths_Compile::_default::StringToUniPath(s), @@ -142013,7 +143460,7 @@ pub mod _TestHeader_Compile { action: a.clone() }) } - /// dafny/StructuredEncryption/test/Header.dfy(130,3) + /// dafny/StructuredEncryption/test/Header.dfy(156,3) pub fn TestSchemaOrderAlpha() -> () { let mut schemaMap: Sequence> = seq![_default::MakeCrypto(&string_utf16_of("abc"), &Arc::new(CryptoAction::ENCRYPT_AND_SIGN {})), _default::MakeCrypto(&string_utf16_of("def"), &Arc::new(CryptoAction::SIGN_ONLY {})), _default::MakeCrypto(&string_utf16_of("ghi"), &Arc::new(CryptoAction::DO_NOTHING {})), _default::MakeCrypto(&string_utf16_of("jkl"), &Arc::new(CryptoAction::ENCRYPT_AND_SIGN {})), _default::MakeCrypto(&string_utf16_of("mno"), &Arc::new(CryptoAction::SIGN_ONLY {})), _default::MakeCrypto(&string_utf16_of("pqr"), &Arc::new(CryptoAction::DO_NOTHING {}))]; let mut tableName: Sequence = string_utf16_of("name"); @@ -142038,7 +143485,7 @@ pub mod _TestHeader_Compile { }; return (); } - /// dafny/StructuredEncryption/test/Header.dfy(152,3) + /// dafny/StructuredEncryption/test/Header.dfy(178,3) pub fn TestSchemaOrderLength() -> () { let mut schemaMap: Sequence> = seq![_default::MakeCrypto(&string_utf16_of("aa"), &Arc::new(CryptoAction::ENCRYPT_AND_SIGN {})), _default::MakeCrypto(&string_utf16_of("zz"), &Arc::new(CryptoAction::SIGN_ONLY {})), _default::MakeCrypto(&string_utf16_of("aaa"), &Arc::new(CryptoAction::DO_NOTHING {})), _default::MakeCrypto(&string_utf16_of("zzz"), &Arc::new(CryptoAction::ENCRYPT_AND_SIGN {})), _default::MakeCrypto(&string_utf16_of("aaaa"), &Arc::new(CryptoAction::SIGN_ONLY {})), _default::MakeCrypto(&string_utf16_of("zzzz"), &Arc::new(CryptoAction::DO_NOTHING {}))]; let mut tableName: Sequence = string_utf16_of("name"); @@ -142063,7 +143510,7 @@ pub mod _TestHeader_Compile { }; return (); } - /// dafny/StructuredEncryption/test/Header.dfy(174,3) + /// dafny/StructuredEncryption/test/Header.dfy(200,3) pub fn TestSchemaOrderLength2() -> () { let mut schemaMap: Sequence> = seq![_default::MakeCrypto(&string_utf16_of("aa"), &Arc::new(CryptoAction::ENCRYPT_AND_SIGN {})), _default::MakeCrypto(&string_utf16_of("zzz"), &Arc::new(CryptoAction::ENCRYPT_AND_SIGN {})), _default::MakeCrypto(&string_utf16_of("zzzz"), &Arc::new(CryptoAction::DO_NOTHING {})), _default::MakeCrypto(&string_utf16_of("aaa"), &Arc::new(CryptoAction::DO_NOTHING {})), _default::MakeCrypto(&string_utf16_of("zz"), &Arc::new(CryptoAction::SIGN_ONLY {})), _default::MakeCrypto(&string_utf16_of("aaaa"), &Arc::new(CryptoAction::SIGN_ONLY {}))]; let mut tableName: Sequence = string_utf16_of("name"); @@ -142088,69 +143535,94 @@ pub mod _TestHeader_Compile { }; return (); } - /// dafny/StructuredEncryption/test/Header.dfy(72,3) + /// dafny/StructuredEncryption/test/Header.dfy(24,3) + pub fn abc() -> ValidUTF8Bytes { + let mut s: Sequence = seq![97, 98, 99]; + s.clone() + } + /// dafny/StructuredEncryption/test/Header.dfy(29,3) + pub fn def() -> ValidUTF8Bytes { + let mut s: Sequence = seq![100, 101, 102]; + s.clone() + } + /// dafny/StructuredEncryption/test/Header.dfy(44,3) + pub fn provID() -> ValidUTF8Bytes { + let mut s: Sequence = seq![112, 114, 111, 118, 73, 68]; + s.clone() + } + /// dafny/StructuredEncryption/test/Header.dfy(34,3) + pub fn cba() -> ValidUTF8Bytes { + let mut s: Sequence = seq![99, 98, 97]; + s.clone() + } + /// dafny/StructuredEncryption/test/Header.dfy(39,3) + pub fn fed() -> ValidUTF8Bytes { + let mut s: Sequence = seq![102, 101, 100]; + s.clone() + } + /// dafny/StructuredEncryption/test/Header.dfy(98,3) pub fn a() -> u8 { DafnyCharUTF16(97 as u16).0 as u8 } - /// dafny/StructuredEncryption/test/Header.dfy(73,3) + /// dafny/StructuredEncryption/test/Header.dfy(99,3) pub fn b() -> u8 { DafnyCharUTF16(98 as u16).0 as u8 } - /// dafny/StructuredEncryption/test/Header.dfy(74,3) + /// dafny/StructuredEncryption/test/Header.dfy(100,3) pub fn c() -> u8 { DafnyCharUTF16(99 as u16).0 as u8 } - /// dafny/StructuredEncryption/test/Header.dfy(75,3) + /// dafny/StructuredEncryption/test/Header.dfy(101,3) pub fn d() -> u8 { DafnyCharUTF16(100 as u16).0 as u8 } - /// dafny/StructuredEncryption/test/Header.dfy(76,3) + /// dafny/StructuredEncryption/test/Header.dfy(102,3) pub fn e() -> u8 { DafnyCharUTF16(101 as u16).0 as u8 } - /// dafny/StructuredEncryption/test/Header.dfy(77,3) + /// dafny/StructuredEncryption/test/Header.dfy(103,3) pub fn f() -> u8 { DafnyCharUTF16(102 as u16).0 as u8 } } - /// dafny/StructuredEncryption/test/Header.dfy(24,3) + /// dafny/StructuredEncryption/test/Header.dfy(50,3) #[test] pub fn TestRoundTrip() { _default::TestRoundTrip() } - /// dafny/StructuredEncryption/test/Header.dfy(41,3) + /// dafny/StructuredEncryption/test/Header.dfy(67,3) #[test] pub fn TestRoundTripWithCommit() { _default::TestRoundTripWithCommit() } - /// dafny/StructuredEncryption/test/Header.dfy(78,3) + /// dafny/StructuredEncryption/test/Header.dfy(104,3) #[test] pub fn TestDuplicateContext() { _default::TestDuplicateContext() } - /// dafny/StructuredEncryption/test/Header.dfy(109,3) + /// dafny/StructuredEncryption/test/Header.dfy(135,3) #[test] pub fn TestOutOfOrderContext() { _default::TestOutOfOrderContext() } - /// dafny/StructuredEncryption/test/Header.dfy(130,3) + /// dafny/StructuredEncryption/test/Header.dfy(156,3) #[test] pub fn TestSchemaOrderAlpha() { _default::TestSchemaOrderAlpha() } - /// dafny/StructuredEncryption/test/Header.dfy(152,3) + /// dafny/StructuredEncryption/test/Header.dfy(178,3) #[test] pub fn TestSchemaOrderLength() { _default::TestSchemaOrderLength() } - /// dafny/StructuredEncryption/test/Header.dfy(174,3) + /// dafny/StructuredEncryption/test/Header.dfy(200,3) #[test] pub fn TestSchemaOrderLength2() { _default::TestSchemaOrderLength2() @@ -142445,6 +143917,7 @@ pub mod _TestStructuredEncryptionCrypt_Compile { pub use ::dafny_runtime::DafnyCharUTF16; pub use ::dafny_runtime::DafnyPrintWrapper; pub use ::dafny_runtime::string_utf16_of; + pub use ::dafny_runtime::_System::nat; pub use ::std::sync::Arc; pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::structuredencryption::internaldafny::types::Error; pub use ::dafny_runtime::seq; @@ -142478,7 +143951,7 @@ pub mod _TestStructuredEncryptionCrypt_Compile { panic!("Halt") }; let mut _e01: DafnyInt = input.cardinality(); - let mut _e11: DafnyInt = crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::KeySize(); + let mut _e11: nat = int!(crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::KeySize64()); if !(_e01.clone() == _e11.clone()) { print!("{}", DafnyPrintWrapper(&string_utf16_of("\nLeft:\n"))); print!("{}", DafnyPrintWrapper(&_e01)); @@ -142843,7 +144316,7 @@ pub mod _TestUpdateExpr_Compile { _default::TestExamples() } } -/// ../submodules/MaterialProviders/StandardLibrary/src/Time.dfy(9,1) +/// ../submodules/MaterialProviders/StandardLibrary/src/Time.dfy(11,1) pub mod Time { pub use ::dafny_runtime::Sequence; pub use ::dafny_runtime::DafnyCharUTF16; @@ -142851,6 +144324,10 @@ pub mod Time { pub use ::dafny_runtime::string_utf16_of; pub use ::std::sync::Arc; pub use ::dafny_runtime::DafnyPrintWrapper; + pub use crate::implementation_from_dafny::_Wrappers_Compile::Option; + pub use crate::implementation_from_dafny::_Wrappers_Compile::Option::Some; + pub use crate::implementation_from_dafny::UTF8::ValidUTF8Bytes; + pub use crate::implementation_from_dafny::_Wrappers_Compile::Result::Success; pub use ::std::fmt::Debug; pub use ::std::fmt::Formatter; pub use ::dafny_runtime::DafnyPrint; @@ -142863,7 +144340,7 @@ pub mod Time { pub struct _default {} impl _default { - /// ../submodules/MaterialProviders/StandardLibrary/src/Time.dfy(53,3) + /// ../submodules/MaterialProviders/StandardLibrary/src/Time.dfy(57,3) pub fn FormatMilli(diff: u64) -> Sequence { let mut whole: Sequence = crate::implementation_from_dafny::_StandardLibrary_Compile::_String_Compile::_default::Base10Int2String(&int!((&(diff / 1000)).clone())); let mut frac: Sequence = crate::implementation_from_dafny::_StandardLibrary_Compile::_String_Compile::_default::Base10Int2String(&int!((&(diff % 1000)).clone())); @@ -142877,7 +144354,7 @@ pub mod Time { } } } - /// ../submodules/MaterialProviders/StandardLibrary/src/Time.dfy(65,3) + /// ../submodules/MaterialProviders/StandardLibrary/src/Time.dfy(69,3) pub fn FormatMilliDiff(start: i64, end: i64) -> Sequence { if start <= end { _default::FormatMilli((end - start) as u64) @@ -142885,7 +144362,7 @@ pub mod Time { string_utf16_of("-").concat(&_default::FormatMilli((start - end) as u64)) } } - /// ../submodules/MaterialProviders/StandardLibrary/src/Time.dfy(83,3) + /// ../submodules/MaterialProviders/StandardLibrary/src/Time.dfy(87,3) pub fn GetAbsoluteTime() -> Arc { let mut output: Arc; let mut ClockTime: i64; @@ -142900,7 +144377,7 @@ pub mod Time { }); return output.clone(); } - /// ../submodules/MaterialProviders/StandardLibrary/src/Time.dfy(93,3) + /// ../submodules/MaterialProviders/StandardLibrary/src/Time.dfy(97,3) pub fn PrintTimeSince(start: &Arc) -> () { let mut t: Arc; let mut _out0: Arc = _default::TimeSince(start); @@ -142908,7 +144385,7 @@ pub mod Time { _default::PrintTime(&t); return (); } - /// ../submodules/MaterialProviders/StandardLibrary/src/Time.dfy(99,3) + /// ../submodules/MaterialProviders/StandardLibrary/src/Time.dfy(103,3) pub fn PrintTimeSinceShort(start: &Arc) -> () { let mut t: Arc; let mut _out0: Arc = _default::TimeSince(start); @@ -142916,7 +144393,7 @@ pub mod Time { _default::PrintTimeShort(&t); return (); } - /// ../submodules/MaterialProviders/StandardLibrary/src/Time.dfy(105,3) + /// ../submodules/MaterialProviders/StandardLibrary/src/Time.dfy(109,3) pub fn PrintTimeSinceShortChained(start: &Arc) -> Arc { let mut x: Arc; let mut end: Arc; @@ -142926,7 +144403,7 @@ pub mod Time { x = end.clone(); return x.clone(); } - /// ../submodules/MaterialProviders/StandardLibrary/src/Time.dfy(112,3) + /// ../submodules/MaterialProviders/StandardLibrary/src/Time.dfy(116,3) pub fn TimeDiff(start: &Arc, end: &Arc) -> Arc { if start.ClockTime().clone() <= end.ClockTime().clone() && start.CpuTime().clone() <= end.CpuTime().clone() { Arc::new(RelativeTime::RelativeTime { @@ -142940,7 +144417,7 @@ pub mod Time { }) } } - /// ../submodules/MaterialProviders/StandardLibrary/src/Time.dfy(126,3) + /// ../submodules/MaterialProviders/StandardLibrary/src/Time.dfy(130,3) pub fn TimeSince(start: &Arc) -> Arc { let mut output: Arc; let mut end: Arc; @@ -142949,7 +144426,7 @@ pub mod Time { output = _default::TimeDiff(start, &end); return output.clone(); } - /// ../submodules/MaterialProviders/StandardLibrary/src/Time.dfy(132,3) + /// ../submodules/MaterialProviders/StandardLibrary/src/Time.dfy(136,3) pub fn PrintTime(time: &Arc) -> () { print!("{}", DafnyPrintWrapper(&string_utf16_of("Clock Time : "))); print!("{}", DafnyPrintWrapper(&_default::FormatMilli(time.ClockTime().clone()))); @@ -142958,34 +144435,42 @@ pub mod Time { print!("{}", DafnyPrintWrapper(&string_utf16_of("\n"))); return (); } - /// ../submodules/MaterialProviders/StandardLibrary/src/Time.dfy(137,3) - pub fn PrintTimeLong(time: &Arc, tag: &Sequence) -> () { - print!("{}", DafnyPrintWrapper(tag)); - print!("{}", DafnyPrintWrapper(&string_utf16_of(" "))); - print!("{}", DafnyPrintWrapper(&crate::implementation_from_dafny::OsLang::_default::GetOsLong())); - print!("{}", DafnyPrintWrapper(&string_utf16_of(" "))); - print!("{}", DafnyPrintWrapper(&crate::implementation_from_dafny::OsLang::_default::GetLanguageLong())); - print!("{}", DafnyPrintWrapper(&string_utf16_of(" Clock Time : "))); - print!("{}", DafnyPrintWrapper(&_default::FormatMilli(time.ClockTime().clone()))); - print!("{}", DafnyPrintWrapper(&string_utf16_of(" CPU Time : "))); - print!("{}", DafnyPrintWrapper(&_default::FormatMilli(time.CpuTime().clone()))); - print!("{}", DafnyPrintWrapper(&string_utf16_of("\n"))); + /// ../submodules/MaterialProviders/StandardLibrary/src/Time.dfy(141,3) + pub fn PrintTimeSinceLong(start: &Arc, tag: &Sequence, file: &Arc>>) -> () { + let mut t: Arc; + let mut _out0: Arc = _default::TimeSince(start); + t = _out0.clone(); + _default::PrintTimeLong(&t, tag, file); + return (); + } + /// ../submodules/MaterialProviders/StandardLibrary/src/Time.dfy(147,3) + pub fn PrintTimeLong(time: &Arc, tag: &Sequence, file: &Arc>>) -> () { + let mut val: Sequence = tag.concat(&string_utf16_of(" ")).concat(&crate::implementation_from_dafny::OsLang::_default::GetOsShort()).concat(&string_utf16_of(" ")).concat(&crate::implementation_from_dafny::OsLang::_default::GetLanguageShort()).concat(&string_utf16_of(" ")).concat(&_default::FormatMilli(time.ClockTime().clone())).concat(&string_utf16_of(" ")).concat(&_default::FormatMilli(time.CpuTime().clone())).concat(&string_utf16_of("\n")); + print!("{}", DafnyPrintWrapper(&val)); + if matches!(file.as_ref(), Some{ .. }) { + let mut utf8_val: Arc>> = crate::implementation_from_dafny::UTF8::_default::Encode(&val); + if matches!((&utf8_val).as_ref(), Success{ .. }) { + let mut _v0: Arc>>; + let mut _out0: Arc>> = crate::implementation_from_dafny::_FileIO_Compile::_default::AppendBytesToFile(file.value(), utf8_val.value()); + _v0 = _out0.clone(); + } + }; return (); } - /// ../submodules/MaterialProviders/StandardLibrary/src/Time.dfy(142,3) + /// ../submodules/MaterialProviders/StandardLibrary/src/Time.dfy(159,3) pub fn PrintTimeShort(time: &Arc) -> () { print!("{}", DafnyPrintWrapper(&string_utf16_of("CPU:"))); print!("{}", DafnyPrintWrapper(&_default::FormatMilli(time.CpuTime().clone()))); print!("{}", DafnyPrintWrapper(&string_utf16_of(" "))); return (); } - /// ../submodules/MaterialProviders/StandardLibrary/src/Time.dfy(152,3) + /// ../submodules/MaterialProviders/StandardLibrary/src/Time.dfy(169,3) pub fn CreateGetCurrentTimeStampSuccess(value: &Sequence) -> Arc, Sequence>> { Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::, Sequence>::Success { value: value.clone() }) } - /// ../submodules/MaterialProviders/StandardLibrary/src/Time.dfy(156,3) + /// ../submodules/MaterialProviders/StandardLibrary/src/Time.dfy(173,3) pub fn CreateGetCurrentTimeStampFailure(error: &Sequence) -> Arc, Sequence>> { Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::, Sequence>::Failure { error: error.clone() @@ -142993,7 +144478,7 @@ pub mod Time { } } - /// ../submodules/MaterialProviders/StandardLibrary/src/Time.dfy(75,3) + /// ../submodules/MaterialProviders/StandardLibrary/src/Time.dfy(79,3) #[derive(PartialEq, Clone)] pub enum AbsoluteTime { AbsoluteTime { @@ -143072,7 +144557,7 @@ pub mod Time { } } - /// ../submodules/MaterialProviders/StandardLibrary/src/Time.dfy(79,3) + /// ../submodules/MaterialProviders/StandardLibrary/src/Time.dfy(83,3) #[derive(PartialEq, Clone)] pub enum RelativeTime { RelativeTime { @@ -143249,15 +144734,15 @@ pub mod _TransactGetItemsTransform_Compile { output = MaybePlacebo::from(Arc::new(Result::, Arc>::Success { value: Arc::new(TransactGetItemsOutputTransformOutput::TransactGetItemsOutputTransformOutput { transformedOutput: { - let __pat_let58_0: Arc = input.sdkOutput().clone(); + let __pat_let76_0: Arc = input.sdkOutput().clone(); { - let _dt__update__tmp_h0: Arc = __pat_let58_0.clone(); + let _dt__update__tmp_h0: Arc = __pat_let76_0.clone(); { - let __pat_let59_0: Arc>>> = Arc::new(Option::>>::Some { + let __pat_let77_0: Arc>>> = Arc::new(Option::>>::Some { value: decryptedItems.clone() }); { - let _dt__update_hResponses_h0: Arc> = __pat_let59_0.clone(); + let _dt__update_hResponses_h0: Arc> = __pat_let77_0.clone(); Arc::new(TransactGetItemsOutput::TransactGetItemsOutput { ConsumedCapacity: _dt__update__tmp_h0.ConsumedCapacity().clone(), Responses: _dt__update_hResponses_h0.clone() @@ -143486,7 +144971,9 @@ pub mod _TransactWriteItemsTransform_Compile { }; if matches!(item.Put().as_ref(), Some{ .. }) && !crate::implementation_from_dafny::_DdbMiddlewareConfig_Compile::_default::IsPlainWrite(config, item.Put().value().TableName()) { let mut tableConfig: Arc = config.tableEncryptionConfigs().get(item.Put().value().TableName()); - let mut valueOrError5: Arc>> = crate::implementation_from_dafny::_DynamoDbMiddlewareSupport_Compile::_default::IsWriteable(&tableConfig, item.Put().value().Item()); + let mut valueOrError5: Arc>>; + let mut _out0: Arc>> = crate::implementation_from_dafny::_DynamoDbMiddlewareSupport_Compile::_default::IsWriteable(&tableConfig, item.Put().value().Item()); + valueOrError5 = _out0.clone(); if valueOrError5.IsFailure() { output = MaybePlacebo::from(valueOrError5.PropagateFailure::>()); return output.read(); @@ -143499,18 +144986,18 @@ pub mod _TransactWriteItemsTransform_Compile { }; let mut _v5: bool = valueOrError6.Extract(); let mut valueOrError7: Arc, Arc>, Arc>>; - let mut _out0: Arc, Arc>, Arc>> = crate::implementation_from_dafny::_DynamoDbMiddlewareSupport_Compile::_default::AddSignedBeacons(&tableConfig, item.Put().value().Item()); - valueOrError7 = _out0.clone(); + let mut _out1: Arc, Arc>, Arc>> = crate::implementation_from_dafny::_DynamoDbMiddlewareSupport_Compile::_default::AddSignedBeacons(&tableConfig, item.Put().value().Item()); + valueOrError7 = _out1.clone(); if valueOrError7.IsFailure() { output = MaybePlacebo::from(valueOrError7.PropagateFailure::>()); return output.read(); }; let mut beaconItem: Map, Arc> = valueOrError7.Extract(); let mut encryptRes: Arc, Arc>>; - let mut _out1: Arc, Arc>> = IDynamoDbItemEncryptorClient::EncryptItem(rd!(tableConfig.itemEncryptor().clone()), &Arc::new(EncryptItemInput::EncryptItemInput { + let mut _out2: Arc, Arc>> = IDynamoDbItemEncryptorClient::EncryptItem(rd!(tableConfig.itemEncryptor().clone()), &Arc::new(EncryptItemInput::EncryptItemInput { plaintextItem: beaconItem.clone() })); - encryptRes = _out1.clone(); + encryptRes = _out2.clone(); let mut valueOrError8: Arc, Arc>> = crate::implementation_from_dafny::_DdbMiddlewareConfig_Compile::_default::MapError::>(&encryptRes); if valueOrError8.IsFailure() { output = MaybePlacebo::from(valueOrError8.PropagateFailure::>()); @@ -143524,8 +145011,8 @@ pub mod _TransactWriteItemsTransform_Compile { }; let mut keyId: Arc>> = valueOrError9.Extract(); let mut valueOrError10: Arc, Arc>, Arc>>; - let mut _out2: Arc, Arc>, Arc>> = crate::implementation_from_dafny::_DynamoDbMiddlewareSupport_Compile::_default::GetEncryptedBeacons(&tableConfig, item.Put().value().Item(), &crate::implementation_from_dafny::_DynamoDbEncryptionUtil_Compile::_default::MaybeFromOptionKeyId(&keyId)); - valueOrError10 = _out2.clone(); + let mut _out3: Arc, Arc>, Arc>> = crate::implementation_from_dafny::_DynamoDbMiddlewareSupport_Compile::_default::GetEncryptedBeacons(&tableConfig, item.Put().value().Item(), &crate::implementation_from_dafny::_DynamoDbEncryptionUtil_Compile::_default::MaybeFromOptionKeyId(&keyId)); + valueOrError10 = _out3.clone(); if valueOrError10.IsFailure() { output = MaybePlacebo::from(valueOrError10.PropagateFailure::>()); return output.read(); @@ -143533,13 +145020,13 @@ pub mod _TransactWriteItemsTransform_Compile { let mut beaconAttrs: Map, Arc> = valueOrError10.Extract(); let mut put: Arc>> = Arc::new(Option::>::Some { value: { - let __pat_let60_0: Arc = item.Put().value().clone(); + let __pat_let78_0: Arc = item.Put().value().clone(); { - let _dt__update__tmp_h0: Arc = __pat_let60_0.clone(); + let _dt__update__tmp_h0: Arc = __pat_let78_0.clone(); { - let __pat_let61_0: Map, Arc> = encrypted.encryptedItem().merge(&beaconAttrs); + let __pat_let79_0: Map, Arc> = encrypted.encryptedItem().merge(&beaconAttrs); { - let _dt__update_hItem_h0: Map, Arc> = __pat_let61_0.clone(); + let _dt__update_hItem_h0: Map, Arc> = __pat_let79_0.clone(); Arc::new(Put::Put { Item: _dt__update_hItem_h0.clone(), TableName: _dt__update__tmp_h0.TableName().clone(), @@ -143575,13 +145062,13 @@ pub mod _TransactWriteItemsTransform_Compile { output = MaybePlacebo::from(Arc::new(Result::, Arc>::Success { value: Arc::new(TransactWriteItemsInputTransformOutput::TransactWriteItemsInputTransformOutput { transformedInput: { - let __pat_let62_0: Arc = input.sdkInput().clone(); + let __pat_let80_0: Arc = input.sdkInput().clone(); { - let _dt__update__tmp_h2: Arc = __pat_let62_0.clone(); + let _dt__update__tmp_h2: Arc = __pat_let80_0.clone(); { - let __pat_let63_0: Sequence> = result.clone(); + let __pat_let81_0: Sequence> = result.clone(); { - let _dt__update_hTransactItems_h0: TransactWriteItemList = __pat_let63_0.clone(); + let _dt__update_hTransactItems_h0: TransactWriteItemList = __pat_let81_0.clone(); Arc::new(TransactWriteItemsInput::TransactWriteItemsInput { TransactItems: _dt__update_hTransactItems_h0.clone(), ReturnConsumedCapacity: _dt__update__tmp_h2.ReturnConsumedCapacity().clone(), @@ -143782,8 +145269,11 @@ pub mod UTF8 { pub use ::dafny_runtime::integer_range; pub use ::dafny_runtime::int; pub use ::dafny_runtime::DafnyInt; - pub use ::dafny_runtime::seq; pub use ::dafny_runtime::_System::nat; + pub use ::std::default::Default; + pub use ::dafny_runtime::truncate; + pub use crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::seq64; + pub use ::dafny_runtime::seq; pub struct _default {} @@ -143822,97 +145312,89 @@ pub mod UTF8 { }) }).as_ref()) } - /// ../submodules/MaterialProviders/StandardLibrary/src/UTF8.dfy(62,3) - pub fn EncodeAscii(s: &Sequence) -> ValidUTF8Bytes { - let mut _accumulator: ValidUTF8Bytes = seq![] as Sequence; - let mut _r0 = s.clone(); - 'TAIL_CALL_START: loop { - let s = _r0; - if s.cardinality() == int!(0) { - return _accumulator.concat(&(seq![] as Sequence)); - } else { - let mut x: Sequence = seq![s.get(&int!(0)).0 as u8]; - _accumulator = _accumulator.concat(&x); - let mut _in0: Sequence = s.drop(&int!(1)); - _r0 = _in0.clone(); - continue 'TAIL_CALL_START; - } - } - } - /// ../submodules/MaterialProviders/StandardLibrary/src/UTF8.dfy(105,3) + /// ../submodules/MaterialProviders/StandardLibrary/src/UTF8.dfy(108,3) pub fn Uses1Byte(s: &Sequence) -> bool { 0 <= s.get(&int!(0)) && s.get(&int!(0)) <= 127 } - /// ../submodules/MaterialProviders/StandardLibrary/src/UTF8.dfy(112,3) + /// ../submodules/MaterialProviders/StandardLibrary/src/UTF8.dfy(115,3) pub fn Uses2Bytes(s: &Sequence) -> bool { 194 <= s.get(&int!(0)) && s.get(&int!(0)) <= 223 && (128 <= s.get(&int!(1)) && s.get(&int!(1)) <= 191) } - /// ../submodules/MaterialProviders/StandardLibrary/src/UTF8.dfy(119,3) + /// ../submodules/MaterialProviders/StandardLibrary/src/UTF8.dfy(122,3) pub fn Uses3Bytes(s: &Sequence) -> bool { s.get(&int!(0)) == 224 && (160 <= s.get(&int!(1)) && s.get(&int!(1)) <= 191) && (128 <= s.get(&int!(2)) && s.get(&int!(2)) <= 191) || 225 <= s.get(&int!(0)) && s.get(&int!(0)) <= 236 && (128 <= s.get(&int!(1)) && s.get(&int!(1)) <= 191) && (128 <= s.get(&int!(2)) && s.get(&int!(2)) <= 191) || s.get(&int!(0)) == 237 && (128 <= s.get(&int!(1)) && s.get(&int!(1)) <= 159) && (128 <= s.get(&int!(2)) && s.get(&int!(2)) <= 191) || 238 <= s.get(&int!(0)) && s.get(&int!(0)) <= 239 && (128 <= s.get(&int!(1)) && s.get(&int!(1)) <= 191) && (128 <= s.get(&int!(2)) && s.get(&int!(2)) <= 191) } - /// ../submodules/MaterialProviders/StandardLibrary/src/UTF8.dfy(129,3) + /// ../submodules/MaterialProviders/StandardLibrary/src/UTF8.dfy(132,3) pub fn Uses4Bytes(s: &Sequence) -> bool { s.get(&int!(0)) == 240 && (144 <= s.get(&int!(1)) && s.get(&int!(1)) <= 191) && (128 <= s.get(&int!(2)) && s.get(&int!(2)) <= 191) && (128 <= s.get(&int!(3)) && s.get(&int!(3)) <= 191) || 241 <= s.get(&int!(0)) && s.get(&int!(0)) <= 243 && (128 <= s.get(&int!(1)) && s.get(&int!(1)) <= 191) && (128 <= s.get(&int!(2)) && s.get(&int!(2)) <= 191) && (128 <= s.get(&int!(3)) && s.get(&int!(3)) <= 191) || s.get(&int!(0)) == 244 && (128 <= s.get(&int!(1)) && s.get(&int!(1)) <= 143) && (128 <= s.get(&int!(2)) && s.get(&int!(2)) <= 191) && (128 <= s.get(&int!(3)) && s.get(&int!(3)) <= 191) } - /// ../submodules/MaterialProviders/StandardLibrary/src/UTF8.dfy(138,3) + /// ../submodules/MaterialProviders/StandardLibrary/src/UTF8.dfy(141,3) pub fn ValidUTF8Range(a: &Sequence, lo: &nat, hi: &nat) -> bool { - let mut _r0 = a.clone(); - let mut _r1 = lo.clone(); - let mut _r2 = hi.clone(); - 'TAIL_CALL_START: loop { - let a = _r0; - let lo = _r1; - let hi = _r2; - if lo.clone() == hi.clone() { - return true; + let mut _hresult: bool = ::default(); + if crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default::HasUint64Len::(a) { + _hresult = _default::BoundedValidUTF8Range(a, truncate!(lo.clone(), u64), truncate!(hi.clone(), u64)); + return _hresult; + }; + if lo.clone() == hi.clone() { + _hresult = true; + return _hresult; + }; + let mut i: DafnyInt = lo.clone(); + while i.clone() < hi.clone() { + if i.clone() < hi.clone() && (0 <= a.get(&i) && a.get(&i) <= 127) { + i = i.clone() + int!(1); } else { - let mut r: Sequence = a.slice(&lo, &hi); - if _default::Uses1Byte(&r) { - let mut _in0: Sequence = a.clone(); - let mut _in1: DafnyInt = lo.clone() + int!(1); - let mut _in2: nat = hi.clone(); - _r0 = _in0.clone(); - _r1 = _in1.clone(); - _r2 = _in2.clone(); - continue 'TAIL_CALL_START; + if i.clone() + int!(1) < hi.clone() && (194 <= a.get(&i) && a.get(&i) <= 223) && (128 <= a.get(&(i.clone() + int!(1))) && a.get(&(i.clone() + int!(1))) <= 191) { + i = i.clone() + int!(2); } else { - if int!(2) <= r.cardinality() && _default::Uses2Bytes(&r) { - let mut _in3: Sequence = a.clone(); - let mut _in4: DafnyInt = lo.clone() + int!(2); - let mut _in5: nat = hi.clone(); - _r0 = _in3.clone(); - _r1 = _in4.clone(); - _r2 = _in5.clone(); - continue 'TAIL_CALL_START; + if i.clone() + int!(2) < hi.clone() && (a.get(&i) == 224 && (160 <= a.get(&(i.clone() + int!(1))) && a.get(&(i.clone() + int!(1))) <= 191) && (128 <= a.get(&(i.clone() + int!(2))) && a.get(&(i.clone() + int!(2))) <= 191) || 225 <= a.get(&i) && a.get(&i) <= 236 && (128 <= a.get(&(i.clone() + int!(1))) && a.get(&(i.clone() + int!(1))) <= 191) && (128 <= a.get(&(i.clone() + int!(2))) && a.get(&(i.clone() + int!(2))) <= 191) || a.get(&i) == 237 && (128 <= a.get(&(i.clone() + int!(1))) && a.get(&(i.clone() + int!(1))) <= 159) && (128 <= a.get(&(i.clone() + int!(2))) && a.get(&(i.clone() + int!(2))) <= 191) || 238 <= a.get(&i) && a.get(&i) <= 239 && (128 <= a.get(&(i.clone() + int!(1))) && a.get(&(i.clone() + int!(1))) <= 191) && (128 <= a.get(&(i.clone() + int!(2))) && a.get(&(i.clone() + int!(2))) <= 191)) { + i = i.clone() + int!(3); } else { - if int!(3) <= r.cardinality() && _default::Uses3Bytes(&r) { - let mut _in6: Sequence = a.clone(); - let mut _in7: DafnyInt = lo.clone() + int!(3); - let mut _in8: nat = hi.clone(); - _r0 = _in6.clone(); - _r1 = _in7.clone(); - _r2 = _in8.clone(); - continue 'TAIL_CALL_START; + if i.clone() + int!(3) < hi.clone() && (a.get(&i) == 240 && (144 <= a.get(&(i.clone() + int!(1))) && a.get(&(i.clone() + int!(1))) <= 191) && (128 <= a.get(&(i.clone() + int!(2))) && a.get(&(i.clone() + int!(2))) <= 191) && (128 <= a.get(&(i.clone() + int!(3))) && a.get(&(i.clone() + int!(3))) <= 191) || 241 <= a.get(&i) && a.get(&i) <= 243 && (128 <= a.get(&(i.clone() + int!(1))) && a.get(&(i.clone() + int!(1))) <= 191) && (128 <= a.get(&(i.clone() + int!(2))) && a.get(&(i.clone() + int!(2))) <= 191) && (128 <= a.get(&(i.clone() + int!(3))) && a.get(&(i.clone() + int!(3))) <= 191) || a.get(&i) == 244 && (128 <= a.get(&(i.clone() + int!(1))) && a.get(&(i.clone() + int!(1))) <= 143) && (128 <= a.get(&(i.clone() + int!(2))) && a.get(&(i.clone() + int!(2))) <= 191) && (128 <= a.get(&(i.clone() + int!(3))) && a.get(&(i.clone() + int!(3))) <= 191)) { + i = i.clone() + int!(4); } else { - if int!(4) <= r.cardinality() && _default::Uses4Bytes(&r) { - let mut _in9: Sequence = a.clone(); - let mut _in10: DafnyInt = lo.clone() + int!(4); - let mut _in11: nat = hi.clone(); - _r0 = _in9.clone(); - _r1 = _in10.clone(); - _r2 = _in11.clone(); - continue 'TAIL_CALL_START; - } else { - return false; - } + _hresult = false; + return _hresult; } } } } - } + }; + _hresult = true; + return _hresult; } - /// ../submodules/MaterialProviders/StandardLibrary/src/UTF8.dfy(180,3) + /// ../submodules/MaterialProviders/StandardLibrary/src/UTF8.dfy(223,3) + pub fn BoundedValidUTF8Range(a: &seq64, lo: u64, hi: u64) -> bool { + let mut _hresult: bool = ::default(); + if lo == hi { + _hresult = true; + return _hresult; + }; + let mut i: u64 = lo; + while i < hi { + if i < hi && (0 <= a.get(&int!((&i).clone())) && a.get(&int!((&i).clone())) <= 127) { + i = i + 1; + } else { + if i < hi - 1 && (194 <= a.get(&int!((&i).clone())) && a.get(&int!((&i).clone())) <= 223) && (128 <= a.get(&int!((&(i + 1)).clone())) && a.get(&int!((&(i + 1)).clone())) <= 191) { + i = i + 2; + } else { + if 2 <= hi && i < hi - 2 && (a.get(&int!((&i).clone())) == 224 && (160 <= a.get(&int!((&(i + 1)).clone())) && a.get(&int!((&(i + 1)).clone())) <= 191) && (128 <= a.get(&int!((&(i + 2)).clone())) && a.get(&int!((&(i + 2)).clone())) <= 191) || 225 <= a.get(&int!((&i).clone())) && a.get(&int!((&i).clone())) <= 236 && (128 <= a.get(&int!((&(i + 1)).clone())) && a.get(&int!((&(i + 1)).clone())) <= 191) && (128 <= a.get(&int!((&(i + 2)).clone())) && a.get(&int!((&(i + 2)).clone())) <= 191) || a.get(&int!((&i).clone())) == 237 && (128 <= a.get(&int!((&(i + 1)).clone())) && a.get(&int!((&(i + 1)).clone())) <= 159) && (128 <= a.get(&int!((&(i + 2)).clone())) && a.get(&int!((&(i + 2)).clone())) <= 191) || 238 <= a.get(&int!((&i).clone())) && a.get(&int!((&i).clone())) <= 239 && (128 <= a.get(&int!((&(i + 1)).clone())) && a.get(&int!((&(i + 1)).clone())) <= 191) && (128 <= a.get(&int!((&(i + 2)).clone())) && a.get(&int!((&(i + 2)).clone())) <= 191)) { + i = i + 3; + } else { + if 3 <= hi && i < hi - 3 && (a.get(&int!((&i).clone())) == 240 && (144 <= a.get(&int!((&(i + 1)).clone())) && a.get(&int!((&(i + 1)).clone())) <= 191) && (128 <= a.get(&int!((&(i + 2)).clone())) && a.get(&int!((&(i + 2)).clone())) <= 191) && (128 <= a.get(&int!((&(i + 3)).clone())) && a.get(&int!((&(i + 3)).clone())) <= 191) || 241 <= a.get(&int!((&i).clone())) && a.get(&int!((&i).clone())) <= 243 && (128 <= a.get(&int!((&(i + 1)).clone())) && a.get(&int!((&(i + 1)).clone())) <= 191) && (128 <= a.get(&int!((&(i + 2)).clone())) && a.get(&int!((&(i + 2)).clone())) <= 191) && (128 <= a.get(&int!((&(i + 3)).clone())) && a.get(&int!((&(i + 3)).clone())) <= 191) || a.get(&int!((&i).clone())) == 244 && (128 <= a.get(&int!((&(i + 1)).clone())) && a.get(&int!((&(i + 1)).clone())) <= 143) && (128 <= a.get(&int!((&(i + 2)).clone())) && a.get(&int!((&(i + 2)).clone())) <= 191) && (128 <= a.get(&int!((&(i + 3)).clone())) && a.get(&int!((&(i + 3)).clone())) <= 191)) { + i = i + 4; + } else { + _hresult = false; + return _hresult; + } + } + } + } + }; + _hresult = true; + return _hresult; + } + /// ../submodules/MaterialProviders/StandardLibrary/src/UTF8.dfy(303,3) pub fn ValidUTF8Seq(s: &Sequence) -> bool { _default::ValidUTF8Range(s, &int!(0), &s.cardinality()) } @@ -144274,15 +145756,15 @@ pub mod _UpdateItemTransform_Compile { output = MaybePlacebo::from(Arc::new(Result::, Arc>::Success { value: Arc::new(UpdateItemOutputTransformOutput::UpdateItemOutputTransformOutput { transformedOutput: { - let __pat_let64_0: Arc = input.sdkOutput().clone(); + let __pat_let82_0: Arc = input.sdkOutput().clone(); { - let _dt__update__tmp_h0: Arc = __pat_let64_0.clone(); + let _dt__update__tmp_h0: Arc = __pat_let82_0.clone(); { - let __pat_let65_0: Arc, Arc>>> = Arc::new(Option::, Arc>>::Some { + let __pat_let83_0: Arc, Arc>>> = Arc::new(Option::, Arc>>::Some { value: item.clone() }); { - let _dt__update_hAttributes_h0: Arc, Arc>>> = __pat_let65_0.clone(); + let _dt__update_hAttributes_h0: Arc, Arc>>> = __pat_let83_0.clone(); Arc::new(UpdateItemOutput::UpdateItemOutput { Attributes: _dt__update_hAttributes_h0.clone(), ConsumedCapacity: _dt__update__tmp_h0.ConsumedCapacity().clone(), @@ -144317,6 +145799,7 @@ pub mod _UpdateItemTransformTest_Compile { pub use crate::implementation_from_dafny::software::amazon::cryptography::services::dynamodb::internaldafny::types::ReturnConsumedCapacity; pub use crate::implementation_from_dafny::software::amazon::cryptography::services::dynamodb::internaldafny::types::ReturnItemCollectionMetrics; pub use crate::implementation_from_dafny::software::amazon::cryptography::services::dynamodb::internaldafny::types::AttributeValue; + pub use crate::implementation_from_dafny::software::amazon::cryptography::services::dynamodb::internaldafny::types::ReturnValuesOnConditionCheckFailure; pub use crate::implementation_from_dafny::_Wrappers_Compile::Result; pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::transforms::internaldafny::types::UpdateItemInputTransformOutput; pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::transforms::internaldafny::types::Error; @@ -144352,7 +145835,8 @@ pub mod _UpdateItemTransformTest_Compile { UpdateExpression: Arc::new(Option::>::None {}), ConditionExpression: Arc::new(Option::>::None {}), ExpressionAttributeNames: Arc::new(Option::, Sequence>>::None {}), - ExpressionAttributeValues: Arc::new(Option::, Arc>>::None {}) + ExpressionAttributeValues: Arc::new(Option::, Arc>>::None {}), + ReturnValuesOnConditionCheckFailure: Arc::new(Option::>::None {}) }); let mut transformed: Arc, Arc>>; let mut _out2: Arc, Arc>> = IDynamoDbEncryptionTransformsClient::UpdateItemInputTransform(rd!(middlewareUnderTest.clone()), &Arc::new(UpdateItemInputTransformInput::UpdateItemInputTransformInput { @@ -144385,7 +145869,8 @@ pub mod _UpdateItemTransformTest_Compile { }), ConditionExpression: Arc::new(Option::>::None {}), ExpressionAttributeNames: Arc::new(Option::, Sequence>>::None {}), - ExpressionAttributeValues: Arc::new(Option::, Arc>>::None {}) + ExpressionAttributeValues: Arc::new(Option::, Arc>>::None {}), + ReturnValuesOnConditionCheckFailure: Arc::new(Option::>::None {}) }); let mut transformed: Arc, Arc>>; let mut _out2: Arc, Arc>> = IDynamoDbEncryptionTransformsClient::UpdateItemInputTransform(rd!(middlewareUnderTest.clone()), &Arc::new(UpdateItemInputTransformInput::UpdateItemInputTransformInput { @@ -144417,7 +145902,8 @@ pub mod _UpdateItemTransformTest_Compile { }), ConditionExpression: Arc::new(Option::>::None {}), ExpressionAttributeNames: Arc::new(Option::, Sequence>>::None {}), - ExpressionAttributeValues: Arc::new(Option::, Arc>>::None {}) + ExpressionAttributeValues: Arc::new(Option::, Arc>>::None {}), + ReturnValuesOnConditionCheckFailure: Arc::new(Option::>::None {}) }); let mut transformed: Arc, Arc>>; let mut _out2: Arc, Arc>> = IDynamoDbEncryptionTransformsClient::UpdateItemInputTransform(rd!(middlewareUnderTest.clone()), &Arc::new(UpdateItemInputTransformInput::UpdateItemInputTransformInput { @@ -144449,7 +145935,8 @@ pub mod _UpdateItemTransformTest_Compile { }), ConditionExpression: Arc::new(Option::>::None {}), ExpressionAttributeNames: Arc::new(Option::, Sequence>>::None {}), - ExpressionAttributeValues: Arc::new(Option::, Arc>>::None {}) + ExpressionAttributeValues: Arc::new(Option::, Arc>>::None {}), + ReturnValuesOnConditionCheckFailure: Arc::new(Option::>::None {}) }); let mut transformed: Arc, Arc>>; let mut _out2: Arc, Arc>> = IDynamoDbEncryptionTransformsClient::UpdateItemInputTransform(rd!(middlewareUnderTest.clone()), &Arc::new(UpdateItemInputTransformInput::UpdateItemInputTransformInput { @@ -144485,7 +145972,8 @@ pub mod _UpdateItemTransformTest_Compile { UpdateExpression: Arc::new(Option::>::None {}), ConditionExpression: Arc::new(Option::>::None {}), ExpressionAttributeNames: Arc::new(Option::, Sequence>>::None {}), - ExpressionAttributeValues: Arc::new(Option::, Arc>>::None {}) + ExpressionAttributeValues: Arc::new(Option::, Arc>>::None {}), + ReturnValuesOnConditionCheckFailure: Arc::new(Option::>::None {}) }); let mut transformed: Arc, Arc>>; let mut _out2: Arc, Arc>> = IDynamoDbEncryptionTransformsClient::UpdateItemOutputTransform(rd!(middlewareUnderTest.clone()), &Arc::new(UpdateItemOutputTransformInput::UpdateItemOutputTransformInput { @@ -145073,13 +146561,13 @@ pub mod _WrappedHKDF_Compile { pub use ::dafny_runtime::MaybePlacebo; pub use crate::implementation_from_dafny::_Wrappers_Compile::Outcome; pub use crate::implementation_from_dafny::_Wrappers_Compile::Option::None; - pub use ::dafny_runtime::int; + pub use ::dafny_runtime::truncate; pub use ::dafny_runtime::string_utf16_of; pub use crate::implementation_from_dafny::software::amazon::cryptography::primitives::internaldafny::types::DigestAlgorithm; pub use crate::implementation_from_dafny::_Wrappers_Compile::Option; pub use ::dafny_runtime::Object; pub use crate::implementation_from_dafny::HMAC::HMac; - pub use ::dafny_runtime::truncate; + pub use ::dafny_runtime::int; pub use crate::implementation_from_dafny::software::amazon::cryptography::primitives::internaldafny::types::HkdfExpandInput; pub use crate::implementation_from_dafny::software::amazon::cryptography::primitives::internaldafny::types::PositiveInteger; pub use crate::implementation_from_dafny::software::amazon::cryptography::primitives::internaldafny::types::HkdfInput; @@ -145087,10 +146575,10 @@ pub mod _WrappedHKDF_Compile { pub struct _default {} impl _default { - /// ../submodules/MaterialProviders/AwsCryptographyPrimitives/src/WrappedHKDF.dfy(21,3) + /// ../submodules/MaterialProviders/AwsCryptographyPrimitives/src/WrappedHKDF.dfy(22,3) pub fn Extract(input: &Arc) -> Arc, Arc>> { let mut output = MaybePlacebo::, Arc>>>::new(); - let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>((matches!(input.salt().as_ref(), None{ .. }) || input.salt().value().cardinality() != int!(0)) && input.ikm().cardinality() < crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default::INT32_MAX_LIMIT(), &Arc::new(Error::AwsCryptographicPrimitivesError { + let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>((matches!(input.salt().as_ref(), None{ .. }) || truncate!(input.salt().value().cardinality(), u64) != 0) && truncate!(input.ikm().cardinality(), u64) < truncate!(crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default::INT32_MAX_LIMIT(), u64), &Arc::new(Error::AwsCryptographicPrimitivesError { message: string_utf16_of("HKDF Extract needs a salt and reasonable ikm.") })); if valueOrError0.IsFailure() { @@ -145110,17 +146598,17 @@ pub mod _WrappedHKDF_Compile { }; let mut hmac: Object = valueOrError1.Extract(); let mut prk: Sequence; - let mut _out1: Sequence = crate::implementation_from_dafny::_HKDF_Compile::_default::Extract(&hmac, &salt.UnwrapOr(&crate::implementation_from_dafny::_StandardLibrary_Compile::_default::Fill::(&truncate!((&int!(0)).clone(), u8), &crate::implementation_from_dafny::_Digest_Compile::_default::Length(&digestAlgorithm))), &ikm); + let mut _out1: Sequence = crate::implementation_from_dafny::_HKDF_Compile::_default::Extract(&hmac, &salt.UnwrapOr(&crate::implementation_from_dafny::_StandardLibrary_Compile::_default::Fill::(&truncate!((&int!(0)).clone(), u8), &int!((&crate::implementation_from_dafny::_Digest_Compile::_default::Length(&digestAlgorithm)).clone()))), &ikm); prk = _out1.clone(); output = MaybePlacebo::from(Arc::new(Result::, Arc>::Success { value: prk.clone() })); return output.read(); } - /// ../submodules/MaterialProviders/AwsCryptographyPrimitives/src/WrappedHKDF.dfy(44,3) + /// ../submodules/MaterialProviders/AwsCryptographyPrimitives/src/WrappedHKDF.dfy(46,3) pub fn Expand(input: &Arc) -> Arc, Arc>> { let mut output = MaybePlacebo::, Arc>>>::new(); - let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(int!(1) <= int!(input.expectedLength().clone()) && int!(input.expectedLength().clone()) <= int!(255) * crate::implementation_from_dafny::_Digest_Compile::_default::Length(input.digestAlgorithm()) && input.info().cardinality() < crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default::INT32_MAX_LIMIT() && crate::implementation_from_dafny::_Digest_Compile::_default::Length(input.digestAlgorithm()) == input.prk().cardinality(), &Arc::new(Error::AwsCryptographicPrimitivesError { + let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(1 <= input.expectedLength().clone() as u64 && (input.expectedLength().clone() as u64) <= (255 * crate::implementation_from_dafny::_Digest_Compile::_default::Length(input.digestAlgorithm())) && truncate!(input.info().cardinality(), u64) < truncate!(crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default::INT32_MAX_LIMIT(), u64) && crate::implementation_from_dafny::_Digest_Compile::_default::Length(input.digestAlgorithm()) == truncate!(input.prk().cardinality(), u64), &Arc::new(Error::AwsCryptographicPrimitivesError { message: string_utf16_of("HKDF Expand needs valid input.") })); if valueOrError0.IsFailure() { @@ -145141,17 +146629,17 @@ pub mod _WrappedHKDF_Compile { }; let mut hmac: Object = valueOrError1.Extract(); let mut omk: Sequence; - let mut _out1: Sequence = crate::implementation_from_dafny::_HKDF_Compile::_default::Expand(&hmac, &prk, &info, &int!((&expectedLength).clone()), &digestAlgorithm); + let mut _out1: Sequence = crate::implementation_from_dafny::_HKDF_Compile::_default::Expand(&hmac, &prk, &info, expectedLength as u64, &digestAlgorithm); omk = _out1.clone(); output = MaybePlacebo::from(Arc::new(Result::, Arc>::Success { value: omk.clone() })); return output.read(); } - /// ../submodules/MaterialProviders/AwsCryptographyPrimitives/src/WrappedHKDF.dfy(72,3) + /// ../submodules/MaterialProviders/AwsCryptographyPrimitives/src/WrappedHKDF.dfy(75,3) pub fn Hkdf(input: &Arc) -> Arc, Arc>> { let mut output = MaybePlacebo::, Arc>>>::new(); - let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(int!(1) <= int!(input.expectedLength().clone()) && int!(input.expectedLength().clone()) <= int!(255) * crate::implementation_from_dafny::_Digest_Compile::_default::Length(input.digestAlgorithm()) && (matches!(input.salt().as_ref(), None{ .. }) || input.salt().value().cardinality() != int!(0)) && input.info().cardinality() < crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default::INT32_MAX_LIMIT() && input.ikm().cardinality() < crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default::INT32_MAX_LIMIT(), &Arc::new(Error::AwsCryptographicPrimitivesError { + let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(1 <= input.expectedLength().clone() as u64 && (input.expectedLength().clone() as u64) <= (255 * crate::implementation_from_dafny::_Digest_Compile::_default::Length(input.digestAlgorithm())) && (matches!(input.salt().as_ref(), None{ .. }) || truncate!(input.salt().value().cardinality(), u64) != 0) && truncate!(input.info().cardinality(), u64) < truncate!(crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default::INT32_MAX_LIMIT(), u64) && truncate!(input.ikm().cardinality(), u64) < truncate!(crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default::INT32_MAX_LIMIT(), u64), &Arc::new(Error::AwsCryptographicPrimitivesError { message: string_utf16_of("Wrapped Hkdf input is invalid.") })); if valueOrError0.IsFailure() { @@ -145165,7 +146653,7 @@ pub mod _WrappedHKDF_Compile { let mut info: Sequence = __let_tmp_rhs0.info().clone(); let mut expectedLength: PositiveInteger = __let_tmp_rhs0.expectedLength().clone(); let mut okm: Sequence; - let mut _out0: Sequence = crate::implementation_from_dafny::_HKDF_Compile::_default::Hkdf(&digest, &salt, &ikm, &info, &int!((&expectedLength).clone())); + let mut _out0: Sequence = crate::implementation_from_dafny::_HKDF_Compile::_default::Hkdf(&digest, &salt, &ikm, &info, expectedLength as u64); okm = _out0.clone(); output = MaybePlacebo::from(Arc::new(Result::, Arc>::Success { value: okm.clone() @@ -145182,21 +146670,21 @@ pub mod _WrappedHMAC_Compile { pub use ::dafny_runtime::Sequence; pub use crate::implementation_from_dafny::software::amazon::cryptography::primitives::internaldafny::types::Error; pub use crate::implementation_from_dafny::_Wrappers_Compile::Outcome; - pub use ::dafny_runtime::int; + pub use ::dafny_runtime::truncate; pub use ::dafny_runtime::string_utf16_of; pub struct _default {} impl _default { - /// ../submodules/MaterialProviders/AwsCryptographyPrimitives/src/WrappedHMAC.dfy(14,3) + /// ../submodules/MaterialProviders/AwsCryptographyPrimitives/src/WrappedHMAC.dfy(15,3) pub fn Digest(input: &Arc) -> Arc, Arc>> { - let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(int!(0) < input.key().cardinality(), &Arc::new(Error::AwsCryptographicPrimitivesError { + let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(0 < truncate!(input.key().cardinality(), u64), &Arc::new(Error::AwsCryptographicPrimitivesError { message: string_utf16_of("Key MUST NOT be 0 bytes.") })); if valueOrError0.IsFailure() { valueOrError0.PropagateFailure::>() } else { - let mut valueOrError1: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(input.message().cardinality() < crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default::INT32_MAX_LIMIT(), &Arc::new(Error::AwsCryptographicPrimitivesError { + let mut valueOrError1: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(truncate!(input.message().cardinality(), u64) < truncate!(crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default::INT32_MAX_LIMIT(), u64), &Arc::new(Error::AwsCryptographicPrimitivesError { message: string_utf16_of("Message over INT32_MAX_LIMIT") })); if valueOrError1.IsFailure() { @@ -145224,6 +146712,8 @@ pub mod _WrappedHMAC_Compile { pub mod _Wrappers_Compile { pub use ::dafny_runtime::DafnyType; pub use ::std::sync::Arc; + pub use ::std::marker::Sync; + pub use ::std::marker::Send; pub use ::dafny_runtime::Sequence; pub use ::dafny_runtime::DafnyCharUTF16; pub use crate::implementation_from_dafny::_Wrappers_Compile::Option::None; @@ -145238,8 +146728,6 @@ pub mod _Wrappers_Compile { pub use ::std::convert::AsRef; pub use crate::implementation_from_dafny::_Wrappers_Compile::Result::Success; pub use crate::implementation_from_dafny::_Wrappers_Compile::Result::Failure; - pub use ::std::marker::Sync; - pub use ::std::marker::Send; pub use crate::implementation_from_dafny::_Wrappers_Compile::Outcome::Fail; pub struct _default {} @@ -145255,6 +146743,16 @@ pub mod _Wrappers_Compile { }) } } + /// ../submodules/MaterialProviders/libraries/src/Wrappers.dfy(111,3) + pub fn FNeed<_E: DafnyType>(condition: bool, error: &Arc _E + Sync + Send>) -> Arc> { + if condition { + Arc::new(Outcome::<_E>::Pass {}) + } else { + Arc::new(Outcome::<_E>::Fail { + error: error() + }) + } + } } /// ../submodules/MaterialProviders/libraries/src/Wrappers.dfy(10,3) diff --git a/releases/rust/db_esdk/src/intercept.rs b/releases/rust/db_esdk/src/intercept.rs index f45942135..d7fe278b6 100644 --- a/releases/rust/db_esdk/src/intercept.rs +++ b/releases/rust/db_esdk/src/intercept.rs @@ -91,9 +91,6 @@ impl DbEsdkInterceptor { } } -unsafe impl Sync for DbEsdkInterceptor {} -unsafe impl Send for DbEsdkInterceptor {} - #[derive(Debug)] struct OriginalRequest(Input); diff --git a/releases/rust/db_esdk/src/random.rs b/releases/rust/db_esdk/src/random.rs index ae8edf95a..0aedbbae8 100644 --- a/releases/rust/db_esdk/src/random.rs +++ b/releases/rust/db_esdk/src/random.rs @@ -25,7 +25,7 @@ impl crate::ExternRandom::_default { Ok(_) => { ::dafny_runtime::Rc::new( _Wrappers_Compile::Result::Success{value : - dafny_runtime::dafny_runtime_conversions::vec_to_dafny_sequence(&rand_bytes, |x| *x) + dafny_runtime::Sequence::from_array_owned(rand_bytes) } ) } diff --git a/releases/rust/db_esdk/src/rsa.rs b/releases/rust/db_esdk/src/rsa.rs index 5edfda2a6..72bd24ca9 100644 --- a/releases/rust/db_esdk/src/rsa.rs +++ b/releases/rust/db_esdk/src/rsa.rs @@ -71,7 +71,10 @@ pub mod RSAEncryption { length_bits: i32, ) -> (::dafny_runtime::Sequence, ::dafny_runtime::Sequence) { match generate_key_pair(length_bits) { - Ok(x) => (x.0.iter().cloned().collect(), x.1.iter().cloned().collect()), + Ok(x) => ( + dafny_runtime::Sequence::from_array_owned(x.0), + dafny_runtime::Sequence::from_array_owned(x.1), + ), Err(e) => { panic!("Unexpected error generating RSA Key Pair{}", e); } @@ -102,8 +105,8 @@ pub mod RSAEncryption { pub fn GetRSAKeyModulusLengthExtern( public_key: &::dafny_runtime::Sequence, ) -> Rc>> { - let public_key: Vec = public_key.iter().collect(); - match get_modulus(&public_key) { + let public_key = &public_key.to_array(); + match get_modulus(public_key) { Ok(v) => Rc::new(Wrappers::Result::Success { value: v }), Err(e) => Rc::new(Wrappers::Result::Failure { error: error(&e) }), } @@ -140,11 +143,11 @@ pub mod RSAEncryption { private_key: &::dafny_runtime::Sequence, cipher_text: &::dafny_runtime::Sequence, ) -> Rc, Rc>> { - let private_key: Vec = private_key.iter().collect(); - let cipher_text: Vec = cipher_text.iter().collect(); - match decrypt_extern(mode, &private_key, &cipher_text) { + let private_key = &private_key.to_array(); + let cipher_text = &cipher_text.to_array(); + match decrypt_extern(mode, private_key, cipher_text) { Ok(x) => Rc::new(Wrappers::Result::Success { - value: x.iter().cloned().collect(), + value: dafny_runtime::Sequence::from_array_owned(x), }), Err(e) => { let msg = format!("RSA Decrypt : {}", e); @@ -182,11 +185,11 @@ pub mod RSAEncryption { public_key: &::dafny_runtime::Sequence, message: &::dafny_runtime::Sequence, ) -> Rc, Rc>> { - let public_key: Vec = public_key.iter().collect(); - let message: Vec = message.iter().collect(); - match encrypt_extern(mode, &public_key, &message) { + let public_key = &public_key.to_array(); + let message = &message.to_array(); + match encrypt_extern(mode, public_key, message) { Ok(x) => Rc::new(Wrappers::Result::Success { - value: x.iter().cloned().collect(), + value: dafny_runtime::Sequence::from_array_owned(x), }), Err(e) => { let msg = format!("RSA Encrypt : {}", e); @@ -235,7 +238,7 @@ pub mod RSAEncryption { let mode = RSAPaddingMode::OAEP_SHA256 {}; let plain_text: ::dafny_runtime::Sequence = - [1u8, 2, 3, 4, 5].iter().cloned().collect(); + dafny_runtime::Sequence::from_array_owned(vec![1u8, 2, 3, 4, 5]); let cipher: ::dafny_runtime::Sequence = match &*EncryptExtern(&mode, &public_key, &plain_text) { diff --git a/releases/rust/db_esdk/src/sets.rs b/releases/rust/db_esdk/src/sets.rs index 6c9fb380c..6ac6a71cc 100644 --- a/releases/rust/db_esdk/src/sets.rs +++ b/releases/rust/db_esdk/src/sets.rs @@ -25,7 +25,7 @@ pub mod SortedSets { ) -> ::dafny_runtime::Sequence<::dafny_runtime::Sequence> { let mut vec = elems.iter().cloned().collect::>(); vec.sort_by(|a, b| Self::order(a, b, less)); - dafny_runtime::dafny_runtime_conversions::vec_to_dafny_sequence(&vec, |x| x.clone()) + dafny_runtime::Sequence::from_array_owned(vec) } pub fn SetToOrderedSequence2( diff --git a/releases/rust/db_esdk/src/software_externs.rs b/releases/rust/db_esdk/src/software_externs.rs index f0a77646a..3a7dcc1b9 100644 --- a/releases/rust/db_esdk/src/software_externs.rs +++ b/releases/rust/db_esdk/src/software_externs.rs @@ -58,6 +58,9 @@ pub mod software { } impl InternalLegacyOverride { + pub fn policy(&self) -> Rc { + self.r#__i_policy.clone() + } pub fn Build( config: &Rc, ) -> Rc< diff --git a/releases/rust/db_esdk/src/uuid.rs b/releases/rust/db_esdk/src/uuid.rs index 2a75c8bab..56f330dbc 100644 --- a/releases/rust/db_esdk/src/uuid.rs +++ b/releases/rust/db_esdk/src/uuid.rs @@ -26,7 +26,7 @@ impl crate::UUID::_default { Ok(u) => { let b = u.as_bytes(); dafny_runtime::Rc::new(_Wrappers_Compile::Result::Success { value : - b.iter().cloned().collect() + dafny_runtime::Sequence::from_array_owned(b.to_vec()) }) } Err(e) => { @@ -47,7 +47,7 @@ impl crate::UUID::_default { ::dafny_runtime::Sequence<::dafny_runtime::DafnyCharUTF16>, >, > { - let vec: Vec = bytes.iter().collect(); + let vec = &bytes.to_array(); if vec.len() != 16 { return dafny_runtime::Rc::new(_Wrappers_Compile::Result::Failure{ error : dafny_runtime::dafny_runtime_conversions::unicode_chars_false::string_to_dafny_string("Not 16 bytes of input to FromByteArray.") diff --git a/releases/rust/db_esdk/src/validation.rs b/releases/rust/db_esdk/src/validation.rs index 38fa578f0..fe6fd7f7d 100644 --- a/releases/rust/db_esdk/src/validation.rs +++ b/releases/rust/db_esdk/src/validation.rs @@ -5046,6 +5046,7 @@ pub(crate) fn validate_com_Pamazonaws_Pdynamodb_HBatchStatementError( ) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> { validate_com_Pamazonaws_Pdynamodb_HBatchStatementError_DCode(&input.r#code)?; validate_com_Pamazonaws_Pdynamodb_HBatchStatementError_DMessage(&input.r#message)?; + validate_com_Pamazonaws_Pdynamodb_HBatchStatementError_DItem(&input.r#item)?; Ok(()) } pub(crate) fn validate_com_Pamazonaws_Pdynamodb_HBatchStatementError_DCode( @@ -5058,6 +5059,19 @@ pub(crate) fn validate_com_Pamazonaws_Pdynamodb_HBatchStatementError_DCode( Ok(()) } +pub(crate) fn validate_com_Pamazonaws_Pdynamodb_HBatchStatementError_DItem( + input: &::std::option::Option< + ::std::collections::HashMap<::std::string::String, aws_sdk_dynamodb::types::AttributeValue>, + >, +) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> { + if input.is_none() { + return ::std::result::Result::Ok(()); + } + let input = input.as_ref().unwrap(); + + validate_com_Pamazonaws_Pdynamodb_HAttributeMap(input)?; + Ok(()) +} pub(crate) fn validate_com_Pamazonaws_Pdynamodb_HBatchStatementError_DMessage( input: &::std::option::Option<::std::string::String>, ) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> { @@ -5078,6 +5092,9 @@ pub(crate) fn validate_com_Pamazonaws_Pdynamodb_HBatchStatementRequest( validate_com_Pamazonaws_Pdynamodb_HBatchStatementRequest_DConsistentRead( &input.r#consistent_read, )?; + validate_com_Pamazonaws_Pdynamodb_HBatchStatementRequest_DReturnValuesOnConditionCheckFailure( + &input.r#return_values_on_condition_check_failure, + )?; Ok(()) } pub(crate) fn validate_com_Pamazonaws_Pdynamodb_HBatchStatementRequest_DConsistentRead( @@ -5107,6 +5124,16 @@ pub(crate) fn validate_com_Pamazonaws_Pdynamodb_HBatchStatementRequest_DParamete validate_com_Pamazonaws_Pdynamodb_HPreparedStatementParameters(input)?; Ok(()) } +pub(crate) fn validate_com_Pamazonaws_Pdynamodb_HBatchStatementRequest_DReturnValuesOnConditionCheckFailure( + input: &::std::option::Option, +) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> { + if input.is_none() { + return ::std::result::Result::Ok(()); + } + let input = input.as_ref().unwrap(); + + Ok(()) +} pub(crate) fn validate_com_Pamazonaws_Pdynamodb_HBatchStatementRequest_DStatement( input: &::std::option::Option<::std::string::String>, ) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> { @@ -5840,6 +5867,9 @@ pub(crate) fn validate_com_Pamazonaws_Pdynamodb_HDeleteItemInput( validate_com_Pamazonaws_Pdynamodb_HDeleteItemInput_DExpressionAttributeValues( &input.r#expression_attribute_values, )?; + validate_com_Pamazonaws_Pdynamodb_HDeleteItemInput_DReturnValuesOnConditionCheckFailure( + &input.r#return_values_on_condition_check_failure, + )?; Ok(()) } pub(crate) fn validate_com_Pamazonaws_Pdynamodb_HDeleteItemInput_for_DynamoDB__20120810_DeleteItem( @@ -5867,6 +5897,9 @@ pub(crate) fn validate_com_Pamazonaws_Pdynamodb_HDeleteItemInput_for_DynamoDB__2 validate_com_Pamazonaws_Pdynamodb_HDeleteItemInput_DExpressionAttributeValues( &input.r#expression_attribute_values, )?; + validate_com_Pamazonaws_Pdynamodb_HDeleteItemInput_DReturnValuesOnConditionCheckFailure( + &input.r#return_values_on_condition_check_failure, + )?; Ok(()) } pub(crate) fn validate_com_Pamazonaws_Pdynamodb_HDeleteItemInput_DConditionalOperator( @@ -5982,6 +6015,16 @@ pub(crate) fn validate_com_Pamazonaws_Pdynamodb_HDeleteItemInput_DReturnValues( Ok(()) } +pub(crate) fn validate_com_Pamazonaws_Pdynamodb_HDeleteItemInput_DReturnValuesOnConditionCheckFailure( + input: &::std::option::Option, +) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> { + if input.is_none() { + return ::std::result::Result::Ok(()); + } + let input = input.as_ref().unwrap(); + + Ok(()) +} pub(crate) fn validate_com_Pamazonaws_Pdynamodb_HDeleteItemInput_DTableName( input: &::std::option::Option<::std::string::String>, ) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> { @@ -6098,6 +6141,9 @@ pub(crate) fn validate_com_Pamazonaws_Pdynamodb_HExecuteStatementInput( &input.r#return_consumed_capacity, )?; validate_com_Pamazonaws_Pdynamodb_HExecuteStatementInput_DLimit(&input.r#limit)?; + validate_com_Pamazonaws_Pdynamodb_HExecuteStatementInput_DReturnValuesOnConditionCheckFailure( + &input.r#return_values_on_condition_check_failure, + )?; Ok(()) } pub(crate) fn validate_com_Pamazonaws_Pdynamodb_HExecuteStatementInput_for_DynamoDB__20120810_ExecuteStatement( @@ -6113,6 +6159,9 @@ pub(crate) fn validate_com_Pamazonaws_Pdynamodb_HExecuteStatementInput_for_Dynam &input.r#return_consumed_capacity, )?; validate_com_Pamazonaws_Pdynamodb_HExecuteStatementInput_DLimit(&input.r#limit)?; + validate_com_Pamazonaws_Pdynamodb_HExecuteStatementInput_DReturnValuesOnConditionCheckFailure( + &input.r#return_values_on_condition_check_failure, + )?; Ok(()) } pub(crate) fn validate_com_Pamazonaws_Pdynamodb_HExecuteStatementInput_DConsistentRead( @@ -6191,6 +6240,16 @@ pub(crate) fn validate_com_Pamazonaws_Pdynamodb_HExecuteStatementInput_DReturnCo Ok(()) } +pub(crate) fn validate_com_Pamazonaws_Pdynamodb_HExecuteStatementInput_DReturnValuesOnConditionCheckFailure( + input: &::std::option::Option, +) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> { + if input.is_none() { + return ::std::result::Result::Ok(()); + } + let input = input.as_ref().unwrap(); + + Ok(()) +} pub(crate) fn validate_com_Pamazonaws_Pdynamodb_HExecuteStatementInput_DStatement( input: &::std::option::Option<::std::string::String>, ) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> { @@ -7290,6 +7349,9 @@ pub(crate) fn validate_com_Pamazonaws_Pdynamodb_HParameterizedStatement( input.r#statement.clone(), ))?; validate_com_Pamazonaws_Pdynamodb_HParameterizedStatement_DParameters(&input.r#parameters)?; + validate_com_Pamazonaws_Pdynamodb_HParameterizedStatement_DReturnValuesOnConditionCheckFailure( + &input.r#return_values_on_condition_check_failure, + )?; Ok(()) } pub(crate) fn validate_com_Pamazonaws_Pdynamodb_HParameterizedStatement_DParameters( @@ -7309,6 +7371,16 @@ pub(crate) fn validate_com_Pamazonaws_Pdynamodb_HParameterizedStatement_DParamet validate_com_Pamazonaws_Pdynamodb_HPreparedStatementParameters(input)?; Ok(()) } +pub(crate) fn validate_com_Pamazonaws_Pdynamodb_HParameterizedStatement_DReturnValuesOnConditionCheckFailure( + input: &::std::option::Option, +) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> { + if input.is_none() { + return ::std::result::Result::Ok(()); + } + let input = input.as_ref().unwrap(); + + Ok(()) +} pub(crate) fn validate_com_Pamazonaws_Pdynamodb_HParameterizedStatement_DStatement( input: &::std::option::Option<::std::string::String>, ) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> { @@ -7532,6 +7604,9 @@ pub(crate) fn validate_com_Pamazonaws_Pdynamodb_HPutItemInput( validate_com_Pamazonaws_Pdynamodb_HPutItemInput_DExpressionAttributeValues( &input.r#expression_attribute_values, )?; + validate_com_Pamazonaws_Pdynamodb_HPutItemInput_DReturnValuesOnConditionCheckFailure( + &input.r#return_values_on_condition_check_failure, + )?; Ok(()) } pub(crate) fn validate_com_Pamazonaws_Pdynamodb_HPutItemInput_for_DynamoDB__20120810_PutItem( @@ -7559,6 +7634,9 @@ pub(crate) fn validate_com_Pamazonaws_Pdynamodb_HPutItemInput_for_DynamoDB__2012 validate_com_Pamazonaws_Pdynamodb_HPutItemInput_DExpressionAttributeValues( &input.r#expression_attribute_values, )?; + validate_com_Pamazonaws_Pdynamodb_HPutItemInput_DReturnValuesOnConditionCheckFailure( + &input.r#return_values_on_condition_check_failure, + )?; Ok(()) } pub(crate) fn validate_com_Pamazonaws_Pdynamodb_HPutItemInput_DConditionalOperator( @@ -7674,6 +7752,16 @@ pub(crate) fn validate_com_Pamazonaws_Pdynamodb_HPutItemInput_DReturnValues( Ok(()) } +pub(crate) fn validate_com_Pamazonaws_Pdynamodb_HPutItemInput_DReturnValuesOnConditionCheckFailure( + input: &::std::option::Option, +) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> { + if input.is_none() { + return ::std::result::Result::Ok(()); + } + let input = input.as_ref().unwrap(); + + Ok(()) +} pub(crate) fn validate_com_Pamazonaws_Pdynamodb_HPutItemInput_DTableName( input: &::std::option::Option<::std::string::String>, ) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> { @@ -9099,6 +9187,9 @@ pub(crate) fn validate_com_Pamazonaws_Pdynamodb_HUpdateItemInput( validate_com_Pamazonaws_Pdynamodb_HUpdateItemInput_DExpressionAttributeValues( &input.r#expression_attribute_values, )?; + validate_com_Pamazonaws_Pdynamodb_HUpdateItemInput_DReturnValuesOnConditionCheckFailure( + &input.r#return_values_on_condition_check_failure, + )?; Ok(()) } pub(crate) fn validate_com_Pamazonaws_Pdynamodb_HUpdateItemInput_for_DynamoDB__20120810_UpdateItem( @@ -9132,6 +9223,9 @@ pub(crate) fn validate_com_Pamazonaws_Pdynamodb_HUpdateItemInput_for_DynamoDB__2 validate_com_Pamazonaws_Pdynamodb_HUpdateItemInput_DExpressionAttributeValues( &input.r#expression_attribute_values, )?; + validate_com_Pamazonaws_Pdynamodb_HUpdateItemInput_DReturnValuesOnConditionCheckFailure( + &input.r#return_values_on_condition_check_failure, + )?; Ok(()) } pub(crate) fn validate_com_Pamazonaws_Pdynamodb_HUpdateItemInput_DAttributeUpdates( @@ -9263,6 +9357,16 @@ pub(crate) fn validate_com_Pamazonaws_Pdynamodb_HUpdateItemInput_DReturnValues( Ok(()) } +pub(crate) fn validate_com_Pamazonaws_Pdynamodb_HUpdateItemInput_DReturnValuesOnConditionCheckFailure( + input: &::std::option::Option, +) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> { + if input.is_none() { + return ::std::result::Result::Ok(()); + } + let input = input.as_ref().unwrap(); + + Ok(()) +} pub(crate) fn validate_com_Pamazonaws_Pdynamodb_HUpdateItemInput_DTableName( input: &::std::option::Option<::std::string::String>, ) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {